mirror of
https://github.com/DCFApixels/Unity-DebugX.git
synced 2025-11-14 02:45:55 +08:00
fix text background/ rework text world space scaling
This commit is contained in:
parent
5da2eb16ee
commit
30f93a7d4c
@ -14,24 +14,20 @@ namespace DCFApixels
|
|||||||
public readonly partial struct DrawHandler
|
public readonly partial struct DrawHandler
|
||||||
{
|
{
|
||||||
#region Text
|
#region Text
|
||||||
[IN(LINE)] public DrawHandler TextWorldScale(Vector3 position, object text) => Gizmo(new TextGizmo(position, text, DebugXTextSettings.Default, true));
|
[IN(LINE)] public DrawHandler Text(Vector3 position, object text) => Gizmo(new TextGizmo(position, text, DebugXTextSettings.Default));
|
||||||
[IN(LINE)] public DrawHandler TextWorldScale(Vector3 position, object text, DebugXTextSettings settings) => Gizmo(new TextGizmo(position, text, settings, true));
|
[IN(LINE)] public DrawHandler Text(Vector3 position, object text, DebugXTextSettings settings) => Gizmo(new TextGizmo(position, text, settings));
|
||||||
[IN(LINE)] public DrawHandler Text(Vector3 position, object text) => Gizmo(new TextGizmo(position, text, DebugXTextSettings.Default, false));
|
|
||||||
[IN(LINE)] public DrawHandler Text(Vector3 position, object text, DebugXTextSettings settings) => Gizmo(new TextGizmo(position, text, settings, false));
|
|
||||||
|
|
||||||
private readonly struct TextGizmo : IGizmo<TextGizmo>
|
private readonly struct TextGizmo : IGizmo<TextGizmo>
|
||||||
{
|
{
|
||||||
public readonly Vector3 Position;
|
public readonly Vector3 Position;
|
||||||
public readonly string Text;
|
public readonly string Text;
|
||||||
public readonly DebugXTextSettings Settings;
|
public readonly DebugXTextSettings Settings;
|
||||||
public readonly bool IsWorldSpaceScale;
|
|
||||||
[IN(LINE)]
|
[IN(LINE)]
|
||||||
public TextGizmo(Vector3 position, object text, DebugXTextSettings settings, bool isWorldSpaceScale)
|
public TextGizmo(Vector3 position, object text, DebugXTextSettings settings)
|
||||||
{
|
{
|
||||||
Position = position;
|
Position = position;
|
||||||
Text = text.ToString();
|
Text = text.ToString();
|
||||||
Settings = settings;
|
Settings = settings;
|
||||||
IsWorldSpaceScale = isWorldSpaceScale;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public IGizmoRenderer<TextGizmo> RegisterNewRenderer() { return new Renderer(); }
|
public IGizmoRenderer<TextGizmo> RegisterNewRenderer() { return new Renderer(); }
|
||||||
@ -48,14 +44,15 @@ namespace DCFApixels
|
|||||||
public void Render(Camera camera, GizmosList<TextGizmo> list, CommandBuffer cb) { }
|
public void Render(Camera camera, GizmosList<TextGizmo> list, CommandBuffer cb) { }
|
||||||
public void PostRender(Camera camera, GizmosList<TextGizmo> list)
|
public void PostRender(Camera camera, GizmosList<TextGizmo> list)
|
||||||
{
|
{
|
||||||
|
if (camera == null) { return; }
|
||||||
if (Event.current.type != EventType.Repaint) { return; }
|
if (Event.current.type != EventType.Repaint) { return; }
|
||||||
Color dfColor = GUI.color;
|
Color dfColor = GUI.color;
|
||||||
|
|
||||||
if (camera == null) { return; }
|
|
||||||
InitStatic();
|
InitStatic();
|
||||||
var zoom = GetCameraZoom(camera);
|
|
||||||
bool isSceneView = false;
|
bool isSceneView = false;
|
||||||
|
var backgroundMaterial = DebugXAssets.Materials.TextBackground;
|
||||||
|
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
|
//TODO костыльный вариант, нужно поискать более надежный способ определить рендер SceneView
|
||||||
isSceneView = camera.name == "SceneCamera";
|
isSceneView = camera.name == "SceneCamera";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -68,7 +65,6 @@ namespace DCFApixels
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
GL.PushMatrix();
|
GL.PushMatrix();
|
||||||
//GL.LoadPixelMatrix(0, Screen.width, Screen.height - (isSceneView ? 50 : 0), 0);
|
|
||||||
GL.LoadPixelMatrix(0, Screen.width, Screen.height, 0);
|
GL.LoadPixelMatrix(0, Screen.width, Screen.height, 0);
|
||||||
}
|
}
|
||||||
foreach (ref readonly var item in list)
|
foreach (ref readonly var item in list)
|
||||||
@ -76,26 +72,25 @@ namespace DCFApixels
|
|||||||
_labelDummy.text = item.Value.Text;
|
_labelDummy.text = item.Value.Text;
|
||||||
GUIStyle style = _labelStyle;
|
GUIStyle style = _labelStyle;
|
||||||
|
|
||||||
style.fontSize = item.Value.IsWorldSpaceScale
|
var zoom = GetCameraZoom(camera, item.Value.Position);
|
||||||
? Mathf.FloorToInt(item.Value.Settings.FontSize / zoom)
|
|
||||||
: item.Value.Settings.FontSize;
|
style.fontSize = Mathf.FloorToInt(Mathf.Lerp(item.Value.Settings.FontSize, item.Value.Settings.FontSize / zoom, item.Value.Settings.WorldSpaceScaleFactor));
|
||||||
|
|
||||||
style.alignment = item.Value.Settings.TextAnchor;
|
style.alignment = item.Value.Settings.TextAnchor;
|
||||||
if (!(WorldToGUIPointWithDepth(camera, item.Value.Position).z < 0f))
|
if (!(WorldToGUIPointWithDepth(camera, item.Value.Position).z < 0f))
|
||||||
{
|
{
|
||||||
Rect rect = WorldPointToSizedRect(camera, item.Value.Position, _labelDummy, _labelStyle);
|
Rect rect = WorldPointToSizedRect(camera, item.Value.Position, _labelDummy, _labelStyle);
|
||||||
|
|
||||||
Color c = item.Value.Settings.BackgroundColor * GlobalColor;
|
Color backgroundColor = item.Value.Settings.BackgroundColor * GlobalColor;
|
||||||
var mat = DebugXAssets.Materials.Unlit;
|
backgroundMaterial.SetColor(ColorPropertyID, backgroundColor);
|
||||||
mat.SetColor(ColorPropertyID, c);
|
Graphics.DrawTexture(rect, _whiteTexture, backgroundMaterial);
|
||||||
Graphics.DrawTexture(rect, _whiteTexture, mat);
|
|
||||||
|
|
||||||
GUI.color = item.Color * GlobalColor;
|
GUI.color = item.Color * GlobalColor;
|
||||||
style.Draw(rect, _labelDummy, false, false, false, false);
|
style.Draw(rect, _labelDummy, false, false, false, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
GUI.color = dfColor;
|
GUI.color = dfColor;
|
||||||
DebugXAssets.Materials.Unlit.SetColor(ColorPropertyID, Color.white);
|
backgroundMaterial.SetColor(ColorPropertyID, Color.white);
|
||||||
|
|
||||||
if (isSceneView)
|
if (isSceneView)
|
||||||
{
|
{
|
||||||
@ -109,6 +104,46 @@ namespace DCFApixels
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region Init
|
||||||
|
private void InitStatic()
|
||||||
|
{
|
||||||
|
if (_labelStyle == null || _labelDummy == null || _whiteTexture == null)
|
||||||
|
{
|
||||||
|
GUIStyleState GenerateGUIStyleState()
|
||||||
|
{
|
||||||
|
var result = new GUIStyleState();
|
||||||
|
result.textColor = Color.white;
|
||||||
|
result.background = null;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
GUISkin skin = (GUISkin)typeof(GUI).GetField("s_Skin", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static).GetValue(null); //GUI.s_Skin
|
||||||
|
//GUISkin skin = GUI.skin;
|
||||||
|
_labelStyle = new GUIStyle(skin.label)
|
||||||
|
{
|
||||||
|
richText = false,
|
||||||
|
padding = new RectOffset(1, 1, 0, 0),
|
||||||
|
margin = new RectOffset(0, 0, 0, 0),
|
||||||
|
normal = GenerateGUIStyleState(),
|
||||||
|
active = GenerateGUIStyleState(),
|
||||||
|
hover = GenerateGUIStyleState(),
|
||||||
|
focused = GenerateGUIStyleState(),
|
||||||
|
};
|
||||||
|
|
||||||
|
_labelDummy = new GUIContent();
|
||||||
|
|
||||||
|
_whiteTexture = new Texture2D(2, 2);
|
||||||
|
Color32[] color = new Color32[]
|
||||||
|
{
|
||||||
|
Color.white,
|
||||||
|
Color.white,
|
||||||
|
Color.white,
|
||||||
|
Color.white,
|
||||||
|
};
|
||||||
|
_whiteTexture.SetPixels32(color);
|
||||||
|
_whiteTexture.Apply();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Utils
|
#region Utils
|
||||||
public static Vector3 WorldToGUIPointWithDepth(Camera camera, Vector3 world)
|
public static Vector3 WorldToGUIPointWithDepth(Camera camera, Vector3 world)
|
||||||
@ -162,56 +197,25 @@ namespace DCFApixels
|
|||||||
}
|
}
|
||||||
return style.padding.Add(rect);
|
return style.padding.Add(rect);
|
||||||
}
|
}
|
||||||
#endregion
|
private static float GetCameraZoom(Camera camera, Vector3 position)
|
||||||
|
{
|
||||||
|
position = Handles.matrix.MultiplyPoint(position);
|
||||||
|
Transform transform = camera.transform;
|
||||||
|
Vector3 position2 = transform.position;
|
||||||
|
float z = Vector3.Dot(position - position2, transform.TransformDirection(new Vector3(0f, 0f, 1f)));
|
||||||
|
Vector3 vector = camera.WorldToScreenPoint(position2 + transform.TransformDirection(new Vector3(0f, 0f, z)));
|
||||||
|
Vector3 vector2 = camera.WorldToScreenPoint(position2 + transform.TransformDirection(new Vector3(1f, 0f, z)));
|
||||||
|
float magnitude = (vector - vector2).magnitude;
|
||||||
|
return 80f / Mathf.Max(magnitude, 0.0001f) * EditorGUIUtility.pixelsPerPoint;
|
||||||
|
|
||||||
|
|
||||||
private void InitStatic()
|
//const float DEFAULT_ZOOM = 1f;
|
||||||
{
|
//
|
||||||
if (_labelStyle == null || _labelDummy == null || _whiteTexture == null)
|
//if (camera != null)
|
||||||
{
|
//{
|
||||||
GUIStyleState GenerateGUIStyleState()
|
// return camera.orthographicSize;
|
||||||
{
|
//}
|
||||||
var result = new GUIStyleState();
|
//return DEFAULT_ZOOM;
|
||||||
result.textColor = Color.white;
|
|
||||||
result.background = null;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
GUISkin skin = (GUISkin)typeof(GUI).GetField("s_Skin", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static).GetValue(null); //GUI.s_Skin
|
|
||||||
//GUISkin skin = GUI.skin;
|
|
||||||
_labelStyle = new GUIStyle(skin.label)
|
|
||||||
{
|
|
||||||
richText = false,
|
|
||||||
padding = new RectOffset(1, 1, 1, 1),
|
|
||||||
margin = new RectOffset(0, 0, 0, 0),
|
|
||||||
normal = GenerateGUIStyleState(),
|
|
||||||
active = GenerateGUIStyleState(),
|
|
||||||
hover = GenerateGUIStyleState(),
|
|
||||||
focused = GenerateGUIStyleState(),
|
|
||||||
};
|
|
||||||
|
|
||||||
_labelDummy = new GUIContent();
|
|
||||||
|
|
||||||
_whiteTexture = new Texture2D(2, 2);
|
|
||||||
Color32[] color = new Color32[]
|
|
||||||
{
|
|
||||||
new Color32(255,255,255,255),
|
|
||||||
new Color32(255,255,255,255),
|
|
||||||
new Color32(255,255,255,255),
|
|
||||||
new Color32(255,255,255,255),
|
|
||||||
};
|
|
||||||
_whiteTexture.SetPixels32(color);
|
|
||||||
_whiteTexture.Apply();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private static float GetCameraZoom(Camera camera)
|
|
||||||
{
|
|
||||||
const float DEFAULT_ZOOM = 1f;
|
|
||||||
|
|
||||||
if (camera != null)
|
|
||||||
{
|
|
||||||
return camera.orthographicSize;
|
|
||||||
}
|
|
||||||
return DEFAULT_ZOOM;
|
|
||||||
|
|
||||||
//var currentDrawingSceneView = SceneView.currentDrawingSceneView;
|
//var currentDrawingSceneView = SceneView.currentDrawingSceneView;
|
||||||
//
|
//
|
||||||
@ -229,6 +233,7 @@ namespace DCFApixels
|
|||||||
//
|
//
|
||||||
//return DEFAULT_ZOOM;
|
//return DEFAULT_ZOOM;
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
135
Runtime/Materials/TextBackground.mat
Normal file
135
Runtime/Materials/TextBackground.mat
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!21 &2100000
|
||||||
|
Material:
|
||||||
|
serializedVersion: 8
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: TextBackground
|
||||||
|
m_Shader: {fileID: 10755, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_Parent: {fileID: 0}
|
||||||
|
m_ModifiedSerializedProperties: 0
|
||||||
|
m_ValidKeywords: []
|
||||||
|
m_InvalidKeywords: []
|
||||||
|
m_LightmapFlags: 4
|
||||||
|
m_EnableInstancingVariants: 0
|
||||||
|
m_DoubleSidedGI: 0
|
||||||
|
m_CustomRenderQueue: -1
|
||||||
|
stringTagMap: {}
|
||||||
|
disabledShaderPasses:
|
||||||
|
- MOTIONVECTORS
|
||||||
|
m_LockedProperties:
|
||||||
|
m_SavedProperties:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TexEnvs:
|
||||||
|
- _BaseMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _BumpMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailAlbedoMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailMask:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailNormalMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _EmissionMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MainTex:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MetallicGlossMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _OcclusionMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _ParallaxMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _SpecGlossMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- unity_Lightmaps:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- unity_LightmapsInd:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- unity_ShadowMasks:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
m_Ints: []
|
||||||
|
m_Floats:
|
||||||
|
- _AddPrecomputedVelocity: 0
|
||||||
|
- _AlphaClip: 0
|
||||||
|
- _AlphaToMask: 0
|
||||||
|
- _Blend: 0
|
||||||
|
- _BlendModePreserveSpecular: 1
|
||||||
|
- _BumpScale: 1
|
||||||
|
- _ClearCoatMask: 0
|
||||||
|
- _ClearCoatSmoothness: 0
|
||||||
|
- _Cull: 2
|
||||||
|
- _Cutoff: 0.5
|
||||||
|
- _DetailAlbedoMapScale: 1
|
||||||
|
- _DetailNormalMapScale: 1
|
||||||
|
- _DstBlend: 0
|
||||||
|
- _DstBlendAlpha: 0
|
||||||
|
- _EnvironmentReflections: 1
|
||||||
|
- _GlossMapScale: 0
|
||||||
|
- _Glossiness: 0
|
||||||
|
- _GlossyReflections: 0
|
||||||
|
- _Metallic: 0
|
||||||
|
- _OcclusionStrength: 1
|
||||||
|
- _Parallax: 0.005
|
||||||
|
- _QueueOffset: 0
|
||||||
|
- _ReceiveShadows: 1
|
||||||
|
- _Smoothness: 0.5
|
||||||
|
- _SmoothnessTextureChannel: 0
|
||||||
|
- _SpecularHighlights: 1
|
||||||
|
- _SrcBlend: 1
|
||||||
|
- _SrcBlendAlpha: 1
|
||||||
|
- _Surface: 0
|
||||||
|
- _WorkflowMode: 1
|
||||||
|
- _ZWrite: 1
|
||||||
|
m_Colors:
|
||||||
|
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
|
||||||
|
m_BuildTextureStacks: []
|
||||||
|
m_AllowLocking: 1
|
||||||
|
--- !u!114 &1974214919826471110
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 11
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
version: 9
|
||||||
8
Runtime/Materials/TextBackground.mat.meta
Normal file
8
Runtime/Materials/TextBackground.mat.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 75409b93d220f694aa75eee6f4bfd840
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -86,6 +86,92 @@ MeshRenderer:
|
|||||||
m_SortingLayer: 0
|
m_SortingLayer: 0
|
||||||
m_SortingOrder: 0
|
m_SortingOrder: 0
|
||||||
m_AdditionalVertexStreams: {fileID: 0}
|
m_AdditionalVertexStreams: {fileID: 0}
|
||||||
|
--- !u!1 &549390746132496352
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 7483746332942052062}
|
||||||
|
- component: {fileID: 6763744428275037148}
|
||||||
|
- component: {fileID: 387838602774759695}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: TextBackground
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &7483746332942052062
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 549390746132496352}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 12.5, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 2844384060761577604}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!33 &6763744428275037148
|
||||||
|
MeshFilter:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 549390746132496352}
|
||||||
|
m_Mesh: {fileID: 4300000, guid: 873de0939b7f76947a258a8897199a8e, type: 2}
|
||||||
|
--- !u!23 &387838602774759695
|
||||||
|
MeshRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 549390746132496352}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_CastShadows: 1
|
||||||
|
m_ReceiveShadows: 1
|
||||||
|
m_DynamicOccludee: 1
|
||||||
|
m_StaticShadowCaster: 0
|
||||||
|
m_MotionVectors: 1
|
||||||
|
m_LightProbeUsage: 1
|
||||||
|
m_ReflectionProbeUsage: 1
|
||||||
|
m_RayTracingMode: 2
|
||||||
|
m_RayTraceProcedural: 0
|
||||||
|
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||||
|
m_RayTracingAccelStructBuildFlags: 1
|
||||||
|
m_SmallMeshCulling: 1
|
||||||
|
m_RenderingLayerMask: 1
|
||||||
|
m_RendererPriority: 0
|
||||||
|
m_Materials:
|
||||||
|
- {fileID: 2100000, guid: 75409b93d220f694aa75eee6f4bfd840, type: 2}
|
||||||
|
m_StaticBatchInfo:
|
||||||
|
firstSubMesh: 0
|
||||||
|
subMeshCount: 0
|
||||||
|
m_StaticBatchRoot: {fileID: 0}
|
||||||
|
m_ProbeAnchor: {fileID: 0}
|
||||||
|
m_LightProbeVolumeOverride: {fileID: 0}
|
||||||
|
m_ScaleInLightmap: 1
|
||||||
|
m_ReceiveGI: 1
|
||||||
|
m_PreserveUVs: 0
|
||||||
|
m_IgnoreNormalsForChartDetection: 0
|
||||||
|
m_ImportantGI: 0
|
||||||
|
m_StitchLightmapSeams: 1
|
||||||
|
m_SelectedEditorRenderState: 3
|
||||||
|
m_MinimumChartSize: 4
|
||||||
|
m_AutoUVMaxDistance: 0.5
|
||||||
|
m_AutoUVMaxAngle: 89
|
||||||
|
m_LightmapParameters: {fileID: 0}
|
||||||
|
m_SortingLayerID: 0
|
||||||
|
m_SortingLayer: 0
|
||||||
|
m_SortingOrder: 0
|
||||||
|
m_AdditionalVertexStreams: {fileID: 0}
|
||||||
--- !u!1 &1299980064020930364
|
--- !u!1 &1299980064020930364
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -292,6 +378,7 @@ Transform:
|
|||||||
- {fileID: 2770005348449356163}
|
- {fileID: 2770005348449356163}
|
||||||
- {fileID: 5119875421667202613}
|
- {fileID: 5119875421667202613}
|
||||||
- {fileID: 1046323005297189095}
|
- {fileID: 1046323005297189095}
|
||||||
|
- {fileID: 7483746332942052062}
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &6563773915565914195
|
--- !u!1 &6563773915565914195
|
||||||
|
|||||||
59
Runtime/Shaders/TextBackground.shader
Normal file
59
Runtime/Shaders/TextBackground.shader
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
Shader "DCFApixels/DebugX/TextBackground"
|
||||||
|
{
|
||||||
|
Properties
|
||||||
|
{
|
||||||
|
_Color ("Color", Color) = (1,1,1,1)
|
||||||
|
}
|
||||||
|
SubShader
|
||||||
|
{
|
||||||
|
Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" }
|
||||||
|
Blend SrcAlpha OneMinusSrcAlpha
|
||||||
|
ZWrite Off Fog { Mode Off }
|
||||||
|
Lighting Off
|
||||||
|
ZTest Off
|
||||||
|
|
||||||
|
Pass
|
||||||
|
{
|
||||||
|
CGPROGRAM
|
||||||
|
|
||||||
|
#pragma vertex vert
|
||||||
|
#pragma fragment frag
|
||||||
|
#pragma multi_compile_instancing
|
||||||
|
#include "UnityCG.cginc"
|
||||||
|
|
||||||
|
struct appdata_t
|
||||||
|
{
|
||||||
|
float4 vertex : POSITION;
|
||||||
|
float4 color : COLOR;
|
||||||
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||||
|
};
|
||||||
|
|
||||||
|
struct v2f
|
||||||
|
{
|
||||||
|
float4 vertex : SV_POSITION;
|
||||||
|
float4 color : COLOR;
|
||||||
|
};
|
||||||
|
|
||||||
|
UNITY_INSTANCING_BUFFER_START(Props)
|
||||||
|
UNITY_DEFINE_INSTANCED_PROP(float4, _Color)
|
||||||
|
UNITY_INSTANCING_BUFFER_END(Props)
|
||||||
|
|
||||||
|
float4 _DebugX_GlobalColor;
|
||||||
|
|
||||||
|
v2f vert (appdata_t v)
|
||||||
|
{
|
||||||
|
v2f o;
|
||||||
|
UNITY_SETUP_INSTANCE_ID(v);
|
||||||
|
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||||
|
o.color = v.color * UNITY_ACCESS_INSTANCED_PROP(Props, _Color) * _DebugX_GlobalColor;
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
|
||||||
|
float4 frag (v2f i) : SV_Target
|
||||||
|
{
|
||||||
|
return i.color * float4(1, 1, 1, 2);
|
||||||
|
}
|
||||||
|
ENDCG
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
9
Runtime/Shaders/TextBackground.shader.meta
Normal file
9
Runtime/Shaders/TextBackground.shader.meta
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1af3913ae49e790418a8d901f8982caf
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -47,6 +47,8 @@ namespace DCFApixels.DebugXCore
|
|||||||
public readonly Material Billboard;
|
public readonly Material Billboard;
|
||||||
public readonly Material Dot;
|
public readonly Material Dot;
|
||||||
public readonly Material Wire;
|
public readonly Material Wire;
|
||||||
|
|
||||||
|
internal readonly Material TextBackground;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2,40 +2,44 @@
|
|||||||
|
|
||||||
namespace DCFApixels
|
namespace DCFApixels
|
||||||
{
|
{
|
||||||
public struct DebugXTextSettings
|
public readonly struct DebugXTextSettings
|
||||||
{
|
{
|
||||||
public const TextAnchor DEFAULT_TEXT_ANCHOR = TextAnchor.MiddleLeft;
|
public const TextAnchor DEFAULT_TEXT_ANCHOR = TextAnchor.MiddleLeft;
|
||||||
public const int DEFAULT_FONT_SIZE = 16;
|
public const int DEFAULT_FONT_SIZE = 16;
|
||||||
public static readonly DebugXTextSettings Default = new DebugXTextSettings(DEFAULT_FONT_SIZE, DEFAULT_TEXT_ANCHOR, default);
|
public static readonly DebugXTextSettings Default = new DebugXTextSettings(DEFAULT_FONT_SIZE, DEFAULT_TEXT_ANCHOR, default, 0);
|
||||||
|
public static readonly DebugXTextSettings WorldSpaceScale = Default.SetWorldSpaceScaleFactor(1f);
|
||||||
|
|
||||||
public int FontSize;
|
public readonly int FontSize;
|
||||||
public TextAnchor TextAnchor;
|
public readonly TextAnchor TextAnchor;
|
||||||
public Color BackgroundColor;
|
public readonly Color BackgroundColor;
|
||||||
|
public readonly float WorldSpaceScaleFactor;
|
||||||
public bool IsHasBackground
|
public bool IsHasBackground
|
||||||
{
|
{
|
||||||
get { return BackgroundColor.a > 0; }
|
get { return BackgroundColor.a > 0; }
|
||||||
}
|
}
|
||||||
public DebugXTextSettings(int fontSize, TextAnchor textAnchor, Color backgroundColor)
|
public DebugXTextSettings(int fontSize, TextAnchor textAnchor, Color backgroundColor, float worldSpaceScaleFactor)
|
||||||
{
|
{
|
||||||
FontSize = fontSize;
|
FontSize = fontSize;
|
||||||
TextAnchor = textAnchor;
|
TextAnchor = textAnchor;
|
||||||
BackgroundColor = backgroundColor;
|
BackgroundColor = backgroundColor;
|
||||||
|
WorldSpaceScaleFactor = worldSpaceScaleFactor;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DebugXTextSettings SetSize(int fontSize)
|
public DebugXTextSettings SetSize(int fontSize)
|
||||||
{
|
{
|
||||||
FontSize = fontSize;
|
return new DebugXTextSettings(fontSize, TextAnchor, BackgroundColor, WorldSpaceScaleFactor);
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
public DebugXTextSettings SetAnchor(TextAnchor textAnchor)
|
public DebugXTextSettings SetAnchor(TextAnchor textAnchor)
|
||||||
{
|
{
|
||||||
TextAnchor = textAnchor;
|
return new DebugXTextSettings(FontSize, textAnchor, BackgroundColor, WorldSpaceScaleFactor);
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
public DebugXTextSettings SetBackground(Color backgroundColor)
|
public DebugXTextSettings SetBackground(Color backgroundColor)
|
||||||
{
|
{
|
||||||
BackgroundColor = backgroundColor;
|
return new DebugXTextSettings(FontSize, TextAnchor, backgroundColor, WorldSpaceScaleFactor);
|
||||||
return this;
|
}
|
||||||
|
public DebugXTextSettings SetWorldSpaceScaleFactor(float factor)
|
||||||
|
{
|
||||||
|
return new DebugXTextSettings(FontSize, TextAnchor, BackgroundColor, factor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4137,7 +4137,7 @@ GameObject:
|
|||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: Hello World
|
m_Name: Hello World
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
m_Icon: {fileID: 7866945982896999795, guid: 0000000000000000d000000000000000, type: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
m_IsActive: 1
|
m_IsActive: 1
|
||||||
|
|||||||
@ -8,7 +8,6 @@ namespace DCFApixels.DebugXCore.Samples
|
|||||||
public Gradient Gradient;
|
public Gradient Gradient;
|
||||||
public float GradientMultiplier = 5;
|
public float GradientMultiplier = 5;
|
||||||
public Transform[] Points;
|
public Transform[] Points;
|
||||||
private static readonly Color _background = new Color(0, 0, 0, 0.5f);
|
|
||||||
|
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
private void OnDrawGizmos()
|
private void OnDrawGizmos()
|
||||||
@ -29,7 +28,10 @@ namespace DCFApixels.DebugXCore.Samples
|
|||||||
i++; DebugX.Draw(GetColor(Points[i])).Cross(Points[i].position, Points[i].localScale.x);
|
i++; DebugX.Draw(GetColor(Points[i])).Cross(Points[i].position, Points[i].localScale.x);
|
||||||
i++; DebugX.Draw(GetColor(Points[i])).BillboardCircle(Points[i].position, Points[i].localScale.x * RADIUS_M);
|
i++; DebugX.Draw(GetColor(Points[i])).BillboardCircle(Points[i].position, Points[i].localScale.x * RADIUS_M);
|
||||||
i++; DebugX.Draw(GetColor(Points[i])).WireMesh<SphereMesh>(Points[i].position, Points[i].rotation, Points[i].localScale * RADIUS_M);
|
i++; DebugX.Draw(GetColor(Points[i])).WireMesh<SphereMesh>(Points[i].position, Points[i].rotation, Points[i].localScale * RADIUS_M);
|
||||||
i++; DebugX.Draw(GetColor(Points[i])).Text(Points[i].position, Points[i].name, DebugXTextSettings.Default.SetBackground(Color.black));
|
Color backgroundColor = Color.white - GetColor(Points[i]);
|
||||||
|
//backgroundColor.a = 1;
|
||||||
|
backgroundColor.a = 0.5f;
|
||||||
|
i++; DebugX.Draw(GetColor(Points[i])).Text(Points[i].position, Points[i].name, DebugXTextSettings.Default.SetBackground(backgroundColor));
|
||||||
|
|
||||||
i++; DebugX.Draw(GetColor(Points[i])).Dot(Points[i].position);
|
i++; DebugX.Draw(GetColor(Points[i])).Dot(Points[i].position);
|
||||||
i++; DebugX.Draw(GetColor(Points[i])).WireDot(Points[i].position);
|
i++; DebugX.Draw(GetColor(Points[i])).WireDot(Points[i].position);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user