mirror of
https://github.com/DCFApixels/Unity-DebugX.git
synced 2025-09-19 02:24:36 +08:00
Merge branch 'dev_text' into dev
This commit is contained in:
commit
85891817ff
@ -29,7 +29,7 @@ namespace DCFApixels
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
private enum PauseStateX
|
private enum DebugXPauseState
|
||||||
{
|
{
|
||||||
Unpaused = 0,
|
Unpaused = 0,
|
||||||
PreUnpaused = 1, //нужно чтобы отщелкунть паузу с задержкой в один тик
|
PreUnpaused = 1, //нужно чтобы отщелкунть паузу с задержкой в один тик
|
||||||
|
@ -22,14 +22,14 @@ namespace DCFApixels
|
|||||||
using IN = System.Runtime.CompilerServices.MethodImplAttribute;
|
using IN = System.Runtime.CompilerServices.MethodImplAttribute;
|
||||||
public static unsafe partial class DebugX
|
public static unsafe partial class DebugX
|
||||||
{
|
{
|
||||||
private static PauseStateX _pauseState = PauseStateX.Unpaused;
|
private static DebugXPauseState _pauseState = DebugXPauseState.Unpaused;
|
||||||
private static bool _isCameraContext = false;
|
private static bool _isCameraContext = false;
|
||||||
private static ulong _lastEditorTicks = 1000;
|
|
||||||
|
|
||||||
private static double _lastUnityTime;
|
private static double _lastUnityTime;
|
||||||
private static float _deltaTime = 0;
|
private static float _deltaTime = 0;
|
||||||
|
|
||||||
private static ulong _editorTicks = 0;
|
private static ulong _editorTicks = 0;
|
||||||
|
private static ulong _lastEditorToRenderTicks = 1000;
|
||||||
private static ulong _renderTicks = 100;
|
private static ulong _renderTicks = 100;
|
||||||
private static ulong _timeTicks = 0;
|
private static ulong _timeTicks = 0;
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ namespace DCFApixels
|
|||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
private static void EditorApplication_pauseStateChanged(PauseState obj)
|
private static void EditorApplication_pauseStateChanged(PauseState obj)
|
||||||
{
|
{
|
||||||
_pauseState = obj == PauseState.Paused ? PauseStateX.Paused : PauseStateX.PreUnpaused;
|
_pauseState = obj == PauseState.Paused ? DebugXPauseState.Paused : DebugXPauseState.PreUnpaused;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endregion
|
#endregion
|
||||||
@ -228,12 +228,10 @@ namespace DCFApixels
|
|||||||
private static void OnPreRender_BRP(Camera camera)
|
private static void OnPreRender_BRP(Camera camera)
|
||||||
{
|
{
|
||||||
PreRender_General(camera);
|
PreRender_General(camera);
|
||||||
//throw new NotImplementedException();
|
|
||||||
}
|
}
|
||||||
private static void OnPostRender_BRP(Camera camera)
|
private static void OnPostRender_BRP(Camera camera)
|
||||||
{
|
{
|
||||||
PostRender_General(CommandBufferExecutorBRP.GetInstance(), camera);
|
PostRender_General(CommandBufferExecutorBRP.GetInstance(), camera);
|
||||||
//throw new NotImplementedException();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void PreUpdateCallback()
|
private static void PreUpdateCallback()
|
||||||
@ -244,7 +242,7 @@ namespace DCFApixels
|
|||||||
if (_lastUnityTime < Time.unscaledTimeAsDouble)
|
if (_lastUnityTime < Time.unscaledTimeAsDouble)
|
||||||
{
|
{
|
||||||
_timeTicks++;
|
_timeTicks++;
|
||||||
if (_pauseState == PauseStateX.Unpaused)
|
if (_pauseState == DebugXPauseState.Unpaused)
|
||||||
{
|
{
|
||||||
_deltaTime = Time.unscaledDeltaTime * _timeScaleCache;
|
_deltaTime = Time.unscaledDeltaTime * _timeScaleCache;
|
||||||
}
|
}
|
||||||
@ -263,9 +261,9 @@ namespace DCFApixels
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
_lastUnityTime = Time.unscaledTimeAsDouble;
|
_lastUnityTime = Time.unscaledTimeAsDouble;
|
||||||
if (_pauseState == PauseStateX.PreUnpaused)
|
if (_pauseState == DebugXPauseState.PreUnpaused)
|
||||||
{
|
{
|
||||||
_pauseState = PauseStateX.Unpaused;
|
_pauseState = DebugXPauseState.Unpaused;
|
||||||
}
|
}
|
||||||
SetGameSceneContext();
|
SetGameSceneContext();
|
||||||
}
|
}
|
||||||
@ -288,19 +286,21 @@ namespace DCFApixels
|
|||||||
_currentCamera = camera;
|
_currentCamera = camera;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static void PostRender_General(ICommandBufferExecutor cbExecutor, Camera camera)
|
private static void PostRender_General(ICommandBufferExecutor cbExecutor, Camera camera)
|
||||||
{
|
{
|
||||||
if (_lastEditorTicks != _editorTicks)
|
if (_lastEditorToRenderTicks != _editorTicks)
|
||||||
{
|
{
|
||||||
_renderTicks++;
|
_renderTicks++;
|
||||||
_lastEditorTicks = _editorTicks;
|
_lastEditorToRenderTicks = _editorTicks;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DebugXUtility.IsGizmosRender())
|
if (DebugXUtility.IsGizmosRender())
|
||||||
{
|
{
|
||||||
RenderContextController.StaicContextController.Prepare();
|
RenderContextController.StaicContextController.Prepare();
|
||||||
RenderContextController.StaicContextController.Render(cbExecutor);
|
RenderContextController.StaicContextController.Render(cbExecutor);
|
||||||
|
cbExecutor.Submit();
|
||||||
|
RenderContextController.StaicContextController.PostRender();
|
||||||
|
RenderContextController.StaicContextController.RunEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (camera == null) { return; }
|
if (camera == null) { return; }
|
||||||
@ -308,34 +308,10 @@ namespace DCFApixels
|
|||||||
RenderContextController contextController = RenderContextController.GetController(new RenderContext(camera));
|
RenderContextController contextController = RenderContextController.GetController(new RenderContext(camera));
|
||||||
contextController.Prepare();
|
contextController.Prepare();
|
||||||
contextController.Render(cbExecutor);
|
contextController.Render(cbExecutor);
|
||||||
|
cbExecutor.Submit();
|
||||||
|
contextController.PostRender();
|
||||||
|
contextController.RunEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if UNITY_EDITOR
|
|
||||||
|
|
||||||
[DrawGizmo(GizmoType.NonSelected | GizmoType.Selected)]
|
|
||||||
private static void DrawGizmos(Camera obj, GizmoType gizmoType)
|
|
||||||
{
|
|
||||||
if (obj != Camera.main) { return; }
|
|
||||||
|
|
||||||
Camera camera = Camera.current;
|
|
||||||
|
|
||||||
Color guiColor = GUI.color;
|
|
||||||
Color gizmosColor = Gizmos.color;
|
|
||||||
Color handlesColor = Handles.color;
|
|
||||||
GL.MultMatrix(Handles.matrix);
|
|
||||||
|
|
||||||
RenderContextController.StaicContextController.Render_UnityGizmos();
|
|
||||||
|
|
||||||
if (camera == null) { return; }
|
|
||||||
_currentCamera = camera;
|
|
||||||
RenderContextController.GetController(new RenderContext(camera)).Render_UnityGizmos();
|
|
||||||
|
|
||||||
GUI.color = guiColor;
|
|
||||||
Gizmos.color = gizmosColor;
|
|
||||||
Handles.color = handlesColor;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
@ -532,7 +508,6 @@ namespace DCFApixels
|
|||||||
// //}
|
// //}
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
|
||||||
[IN(LINE)]
|
[IN(LINE)]
|
||||||
public void Prepare()
|
public void Prepare()
|
||||||
{
|
{
|
||||||
@ -558,15 +533,12 @@ namespace DCFApixels
|
|||||||
{
|
{
|
||||||
_buffers[i].Render(cbExecutor);
|
_buffers[i].Render(cbExecutor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RunEnd();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[IN(LINE)]
|
[IN(LINE)]
|
||||||
public void Render_UnityGizmos()
|
public void PostRender()
|
||||||
{
|
{
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
using (_cameraMarker.Auto())
|
using (_cameraMarker.Auto())
|
||||||
@ -574,7 +546,7 @@ namespace DCFApixels
|
|||||||
{
|
{
|
||||||
for (int i = 0, iMax = _buffers.Count; i < iMax; i++)
|
for (int i = 0, iMax = _buffers.Count; i < iMax; i++)
|
||||||
{
|
{
|
||||||
_buffers[i].Render_UnityGizmos();
|
_buffers[i].PostRender();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -603,7 +575,7 @@ namespace DCFApixels
|
|||||||
public abstract int UpdateTimer(float deltaTime);
|
public abstract int UpdateTimer(float deltaTime);
|
||||||
public abstract void Prepare();
|
public abstract void Prepare();
|
||||||
public abstract void Render(ICommandBufferExecutor cbExecutor);
|
public abstract void Render(ICommandBufferExecutor cbExecutor);
|
||||||
public abstract void Render_UnityGizmos();
|
public abstract void PostRender();
|
||||||
public abstract int RunEnd();
|
public abstract int RunEnd();
|
||||||
public abstract void Clear();
|
public abstract void Clear();
|
||||||
}
|
}
|
||||||
@ -626,7 +598,7 @@ namespace DCFApixels
|
|||||||
//private readonly CommandBuffer _dynamicCommandBuffer;
|
//private readonly CommandBuffer _dynamicCommandBuffer;
|
||||||
|
|
||||||
private readonly IGizmoRenderer<T> _renderer;
|
private readonly IGizmoRenderer<T> _renderer;
|
||||||
private readonly IGizmoRenderer_UnityGizmos<T> _rendererUnityGizmos;
|
private readonly IGizmoRenderer_PostRender<T> _rendererUnityGizmos;
|
||||||
private readonly bool _isStatic;
|
private readonly bool _isStatic;
|
||||||
|
|
||||||
#if DEV_MODE
|
#if DEV_MODE
|
||||||
@ -653,7 +625,7 @@ namespace DCFApixels
|
|||||||
_renderer = new DummyRenderer();
|
_renderer = new DummyRenderer();
|
||||||
}
|
}
|
||||||
_isStatic = _renderer.IsStaticRender;
|
_isStatic = _renderer.IsStaticRender;
|
||||||
_rendererUnityGizmos = _renderer as IGizmoRenderer_UnityGizmos<T>;
|
_rendererUnityGizmos = _renderer as IGizmoRenderer_PostRender<T>;
|
||||||
|
|
||||||
All.Add(this);
|
All.Add(this);
|
||||||
All.Sort((a, b) => a.ExecuteOrder - b.ExecuteOrder);
|
All.Sort((a, b) => a.ExecuteOrder - b.ExecuteOrder);
|
||||||
@ -697,6 +669,7 @@ namespace DCFApixels
|
|||||||
}
|
}
|
||||||
return removeCount;
|
return removeCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed override int RunEnd()
|
public sealed override int RunEnd()
|
||||||
{
|
{
|
||||||
int removeCount = 0;
|
int removeCount = 0;
|
||||||
@ -771,9 +744,10 @@ namespace DCFApixels
|
|||||||
cbExecutor.Execute(_staticCommandBuffer);
|
cbExecutor.Execute(_staticCommandBuffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public override void Render_UnityGizmos()
|
public override void PostRender()
|
||||||
{
|
{
|
||||||
if (_rendererUnityGizmos == null) { return; }
|
if (_rendererUnityGizmos == null) { return; }
|
||||||
|
//Debug.Log(_gizmos._count);
|
||||||
if (_gizmos.Count <= 0) { return; }
|
if (_gizmos.Count <= 0) { return; }
|
||||||
#if DEV_MODE
|
#if DEV_MODE
|
||||||
using (_renderMarker.Auto())
|
using (_renderMarker.Auto())
|
||||||
@ -782,7 +756,7 @@ namespace DCFApixels
|
|||||||
GizmosList<T> list = GizmosList.From(_gizmos._items, _gizmos._count);
|
GizmosList<T> list = GizmosList.From(_gizmos._items, _gizmos._count);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_rendererUnityGizmos.Render_UnityGizmos(GetCurrentCamera(), list);
|
_rendererUnityGizmos.PostRender(GetCurrentCamera(), list);
|
||||||
}
|
}
|
||||||
catch (Exception e) { throw new Exception($"[{_debugName}] [Render] ", e); }
|
catch (Exception e) { throw new Exception($"[{_debugName}] [Render] ", e); }
|
||||||
}
|
}
|
||||||
|
@ -222,58 +222,6 @@ namespace DCFApixels
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Text
|
|
||||||
[IN(LINE)] public DrawHandler Text(Vector3 position, object text) => Gizmo(new TextGizmo(position, text));
|
|
||||||
private readonly struct TextGizmo : IGizmo<TextGizmo>
|
|
||||||
{
|
|
||||||
public readonly Vector3 Position;
|
|
||||||
public readonly string Text;
|
|
||||||
[IN(LINE)]
|
|
||||||
public TextGizmo(Vector3 position, object text)
|
|
||||||
{
|
|
||||||
Position = position;
|
|
||||||
Text = text.ToString();
|
|
||||||
}
|
|
||||||
public IGizmoRenderer<TextGizmo> RegisterNewRenderer() { return new Renderer(); }
|
|
||||||
|
|
||||||
#region Renderer
|
|
||||||
private class Renderer : IGizmoRenderer_UnityGizmos<TextGizmo>
|
|
||||||
{
|
|
||||||
private static GUIStyle _labelStyle;
|
|
||||||
private static GUIContent _labelDummy;
|
|
||||||
public int ExecuteOrder => default(UnlitMat).GetExecuteOrder();
|
|
||||||
public bool IsStaticRender => false;
|
|
||||||
public void Prepare(Camera camera, GizmosList<TextGizmo> list) { }
|
|
||||||
public void Render(Camera camera, GizmosList<TextGizmo> list, CommandBuffer cb) { }
|
|
||||||
public void Render_UnityGizmos(Camera camera, GizmosList<TextGizmo> list)
|
|
||||||
{
|
|
||||||
#if UNITY_EDITOR
|
|
||||||
Color defaultColor = GUI.color;
|
|
||||||
if (_labelStyle == null || _labelDummy == null)
|
|
||||||
{
|
|
||||||
_labelStyle = GUI.skin.label;
|
|
||||||
_labelStyle.richText = false;
|
|
||||||
_labelDummy = new GUIContent();
|
|
||||||
}
|
|
||||||
Handles.BeginGUI();
|
|
||||||
foreach (ref readonly var item in list)
|
|
||||||
{
|
|
||||||
GUI.color = item.Color * GlobalColor;
|
|
||||||
_labelDummy.text = item.Value.Text;
|
|
||||||
if (!(HandleUtility.WorldToGUIPointWithDepth(item.Value.Position).z < 0f))
|
|
||||||
{
|
|
||||||
GUI.Label(HandleUtility.WorldPointToSizedRect(item.Value.Position, _labelDummy, _labelStyle), _labelDummy, _labelStyle);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Handles.EndGUI();
|
|
||||||
GUI.color = defaultColor;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
// Base Renderers
|
// Base Renderers
|
||||||
|
|
||||||
#region MeshRendererBase
|
#region MeshRendererBase
|
||||||
|
244
Runtime/Gizmos/DebugX.text.cs
Normal file
244
Runtime/Gizmos/DebugX.text.cs
Normal file
@ -0,0 +1,244 @@
|
|||||||
|
using DCFApixels.DebugXCore;
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
using UnityEditor;
|
||||||
|
#endif
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.Rendering;
|
||||||
|
|
||||||
|
namespace DCFApixels
|
||||||
|
{
|
||||||
|
using IN = System.Runtime.CompilerServices.MethodImplAttribute;
|
||||||
|
|
||||||
|
public static partial class DebugX
|
||||||
|
{
|
||||||
|
public readonly partial struct DrawHandler
|
||||||
|
{
|
||||||
|
#region Text
|
||||||
|
[IN(LINE)] public DrawHandler Text(Vector3 position, object text) => Gizmo(new TextGizmo(position, text, DebugXTextSettings.Default));
|
||||||
|
[IN(LINE)] public DrawHandler Text(Vector3 position, object text, DebugXTextSettings settings) => Gizmo(new TextGizmo(position, text, settings));
|
||||||
|
|
||||||
|
private readonly struct TextGizmo : IGizmo<TextGizmo>
|
||||||
|
{
|
||||||
|
public readonly Vector3 Position;
|
||||||
|
public readonly string Text;
|
||||||
|
public readonly DebugXTextSettings Settings;
|
||||||
|
[IN(LINE)]
|
||||||
|
public TextGizmo(Vector3 position, object text, DebugXTextSettings settings)
|
||||||
|
{
|
||||||
|
Position = position;
|
||||||
|
Text = text.ToString();
|
||||||
|
Settings = settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IGizmoRenderer<TextGizmo> RegisterNewRenderer() { return new Renderer(); }
|
||||||
|
|
||||||
|
#region Renderer
|
||||||
|
private class Renderer : IGizmoRenderer_PostRender<TextGizmo>
|
||||||
|
{
|
||||||
|
private static GUIStyle _labelStyle;
|
||||||
|
private static GUIContent _labelDummy;
|
||||||
|
private static Texture2D _whiteTexture;
|
||||||
|
public int ExecuteOrder => default(UnlitMat).GetExecuteOrder();
|
||||||
|
public bool IsStaticRender => false;
|
||||||
|
public void Prepare(Camera camera, GizmosList<TextGizmo> list) { }
|
||||||
|
public void Render(Camera camera, GizmosList<TextGizmo> list, CommandBuffer cb) { }
|
||||||
|
public void PostRender(Camera camera, GizmosList<TextGizmo> list)
|
||||||
|
{
|
||||||
|
if (camera == null) { return; }
|
||||||
|
if (Event.current.type != EventType.Repaint) { return; }
|
||||||
|
Color dfColor = GUI.color;
|
||||||
|
InitStatic();
|
||||||
|
bool isSceneView = false;
|
||||||
|
var backgroundMaterial = DebugXAssets.Materials.TextBackground;
|
||||||
|
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
//TODO костыльный вариант, нужно поискать более надежный способ определить рендер SceneView
|
||||||
|
isSceneView = camera.name == "SceneCamera";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (isSceneView)
|
||||||
|
{
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
Handles.BeginGUI();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GL.PushMatrix();
|
||||||
|
GL.LoadPixelMatrix(0, Screen.width, Screen.height, 0);
|
||||||
|
}
|
||||||
|
foreach (ref readonly var item in list)
|
||||||
|
{
|
||||||
|
_labelDummy.text = item.Value.Text;
|
||||||
|
GUIStyle style = _labelStyle;
|
||||||
|
|
||||||
|
var zoom = GetCameraZoom(camera, item.Value.Position);
|
||||||
|
|
||||||
|
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;
|
||||||
|
if (!(WorldToGUIPointWithDepth(camera, item.Value.Position).z < 0f))
|
||||||
|
{
|
||||||
|
Rect rect = WorldPointToSizedRect(camera, item.Value.Position, _labelDummy, _labelStyle);
|
||||||
|
|
||||||
|
Color backgroundColor = item.Value.Settings.BackgroundColor * GlobalColor;
|
||||||
|
backgroundMaterial.SetColor(ColorPropertyID, backgroundColor);
|
||||||
|
Graphics.DrawTexture(rect, _whiteTexture, backgroundMaterial);
|
||||||
|
|
||||||
|
GUI.color = item.Color * GlobalColor;
|
||||||
|
style.Draw(rect, _labelDummy, false, false, false, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
GUI.color = dfColor;
|
||||||
|
backgroundMaterial.SetColor(ColorPropertyID, Color.white);
|
||||||
|
|
||||||
|
if (isSceneView)
|
||||||
|
{
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
Handles.EndGUI();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GL.PopMatrix();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#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
|
||||||
|
public static Vector3 WorldToGUIPointWithDepth(Camera camera, Vector3 world)
|
||||||
|
{
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
world = Handles.matrix.MultiplyPoint(world);
|
||||||
|
#endif
|
||||||
|
Vector3 vector = camera.WorldToScreenPoint(world);
|
||||||
|
vector.y = camera.pixelHeight - vector.y;
|
||||||
|
Vector2 vector2 = (Vector2)(vector);
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
vector2 = EditorGUIUtility.PixelsToPoints(vector);
|
||||||
|
#endif
|
||||||
|
return new Vector3(vector2.x, vector2.y, vector.z);
|
||||||
|
}
|
||||||
|
public static Rect WorldPointToSizedRect(Camera camera, Vector3 position, GUIContent content, GUIStyle style)
|
||||||
|
{
|
||||||
|
Vector2 vector = (Vector2)WorldToGUIPointWithDepth(camera, position);
|
||||||
|
Vector2 vector2 = style.CalcSize(content);
|
||||||
|
Rect rect = new Rect(vector.x, vector.y, vector2.x, vector2.y);
|
||||||
|
switch (style.alignment)
|
||||||
|
{
|
||||||
|
case TextAnchor.UpperCenter:
|
||||||
|
rect.x -= rect.width * 0.5f;
|
||||||
|
break;
|
||||||
|
case TextAnchor.UpperRight:
|
||||||
|
rect.x -= rect.width;
|
||||||
|
break;
|
||||||
|
case TextAnchor.MiddleLeft:
|
||||||
|
rect.y -= rect.height * 0.5f;
|
||||||
|
break;
|
||||||
|
case TextAnchor.MiddleCenter:
|
||||||
|
rect.x -= rect.width * 0.5f;
|
||||||
|
rect.y -= rect.height * 0.5f;
|
||||||
|
break;
|
||||||
|
case TextAnchor.MiddleRight:
|
||||||
|
rect.x -= rect.width;
|
||||||
|
rect.y -= rect.height * 0.5f;
|
||||||
|
break;
|
||||||
|
case TextAnchor.LowerLeft:
|
||||||
|
rect.y -= rect.height;
|
||||||
|
break;
|
||||||
|
case TextAnchor.LowerCenter:
|
||||||
|
rect.x -= rect.width * 0.5f;
|
||||||
|
rect.y -= rect.height;
|
||||||
|
break;
|
||||||
|
case TextAnchor.LowerRight:
|
||||||
|
rect.x -= rect.width;
|
||||||
|
rect.y -= rect.height;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return style.padding.Add(rect);
|
||||||
|
}
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
//const float DEFAULT_ZOOM = 1f;
|
||||||
|
//
|
||||||
|
//if (camera != null)
|
||||||
|
//{
|
||||||
|
// return camera.orthographicSize;
|
||||||
|
//}
|
||||||
|
//return DEFAULT_ZOOM;
|
||||||
|
|
||||||
|
//var currentDrawingSceneView = SceneView.currentDrawingSceneView;
|
||||||
|
//
|
||||||
|
//if (currentDrawingSceneView == null)
|
||||||
|
//{
|
||||||
|
// return DEFAULT_ZOOM;
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//var localCamera = currentDrawingSceneView.camera;
|
||||||
|
//
|
||||||
|
//if (localCamera != null)
|
||||||
|
//{
|
||||||
|
// return localCamera.orthographicSize;
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//return DEFAULT_ZOOM;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
2
Runtime/Gizmos/DebugX.text.cs.meta
Normal file
2
Runtime/Gizmos/DebugX.text.cs.meta
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c465dc7f5c78c9549a063ecfc5e8326d
|
@ -7,6 +7,7 @@ namespace DCFApixels.DebugXCore.Internal
|
|||||||
internal interface ICommandBufferExecutor
|
internal interface ICommandBufferExecutor
|
||||||
{
|
{
|
||||||
void Execute(CommandBuffer cb);
|
void Execute(CommandBuffer cb);
|
||||||
|
void Submit();
|
||||||
}
|
}
|
||||||
internal class CommandBufferExecutorSRP : ICommandBufferExecutor
|
internal class CommandBufferExecutorSRP : ICommandBufferExecutor
|
||||||
{
|
{
|
||||||
@ -24,6 +25,10 @@ namespace DCFApixels.DebugXCore.Internal
|
|||||||
{
|
{
|
||||||
RenderContext.ExecuteCommandBuffer(cb);
|
RenderContext.ExecuteCommandBuffer(cb);
|
||||||
}
|
}
|
||||||
|
public void Submit()
|
||||||
|
{
|
||||||
|
RenderContext.Submit();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
internal class CommandBufferExecutorBRP : ICommandBufferExecutor
|
internal class CommandBufferExecutorBRP : ICommandBufferExecutor
|
||||||
{
|
{
|
||||||
@ -39,5 +44,6 @@ namespace DCFApixels.DebugXCore.Internal
|
|||||||
{
|
{
|
||||||
Graphics.ExecuteCommandBuffer(cb);
|
Graphics.ExecuteCommandBuffer(cb);
|
||||||
}
|
}
|
||||||
|
public void Submit() { }
|
||||||
}
|
}
|
||||||
}
|
}
|
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: 4800000, guid: 1af3913ae49e790418a8d901f8982caf, type: 3}
|
||||||
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
45
Runtime/Utils/DebugXTextSettings.cs
Normal file
45
Runtime/Utils/DebugXTextSettings.cs
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace DCFApixels
|
||||||
|
{
|
||||||
|
public readonly struct DebugXTextSettings
|
||||||
|
{
|
||||||
|
public const TextAnchor DEFAULT_TEXT_ANCHOR = TextAnchor.MiddleLeft;
|
||||||
|
public const int DEFAULT_FONT_SIZE = 16;
|
||||||
|
public static readonly DebugXTextSettings Default = new DebugXTextSettings(DEFAULT_FONT_SIZE, DEFAULT_TEXT_ANCHOR, default, 0);
|
||||||
|
public static readonly DebugXTextSettings WorldSpaceScale = Default.SetWorldSpaceScaleFactor(1f);
|
||||||
|
|
||||||
|
public readonly int FontSize;
|
||||||
|
public readonly TextAnchor TextAnchor;
|
||||||
|
public readonly Color BackgroundColor;
|
||||||
|
public readonly float WorldSpaceScaleFactor;
|
||||||
|
public bool IsHasBackground
|
||||||
|
{
|
||||||
|
get { return BackgroundColor.a > 0; }
|
||||||
|
}
|
||||||
|
public DebugXTextSettings(int fontSize, TextAnchor textAnchor, Color backgroundColor, float worldSpaceScaleFactor)
|
||||||
|
{
|
||||||
|
FontSize = fontSize;
|
||||||
|
TextAnchor = textAnchor;
|
||||||
|
BackgroundColor = backgroundColor;
|
||||||
|
WorldSpaceScaleFactor = worldSpaceScaleFactor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DebugXTextSettings SetSize(int fontSize)
|
||||||
|
{
|
||||||
|
return new DebugXTextSettings(fontSize, TextAnchor, BackgroundColor, WorldSpaceScaleFactor);
|
||||||
|
}
|
||||||
|
public DebugXTextSettings SetAnchor(TextAnchor textAnchor)
|
||||||
|
{
|
||||||
|
return new DebugXTextSettings(FontSize, textAnchor, BackgroundColor, WorldSpaceScaleFactor);
|
||||||
|
}
|
||||||
|
public DebugXTextSettings SetBackground(Color backgroundColor)
|
||||||
|
{
|
||||||
|
return new DebugXTextSettings(FontSize, TextAnchor, backgroundColor, WorldSpaceScaleFactor);
|
||||||
|
}
|
||||||
|
public DebugXTextSettings SetWorldSpaceScaleFactor(float factor)
|
||||||
|
{
|
||||||
|
return new DebugXTextSettings(FontSize, TextAnchor, BackgroundColor, factor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
2
Runtime/Utils/DebugXTextSettings.cs.meta
Normal file
2
Runtime/Utils/DebugXTextSettings.cs.meta
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5a9b0ba5a6770294b9777fca87f3b7a4
|
@ -41,7 +41,7 @@ namespace DCFApixels.DebugXCore
|
|||||||
field.SetValue(obj, meshFilter.sharedMesh);
|
field.SetValue(obj, meshFilter.sharedMesh);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Debug.LogWarning(field.Name + " not found.");
|
Debug.LogWarning(field.Name + " not found.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,9 +17,9 @@ namespace DCFApixels.DebugXCore
|
|||||||
void Prepare(Camera camera, GizmosList<T> list);
|
void Prepare(Camera camera, GizmosList<T> list);
|
||||||
void Render(Camera camera, GizmosList<T> list, CommandBuffer cb);
|
void Render(Camera camera, GizmosList<T> list, CommandBuffer cb);
|
||||||
}
|
}
|
||||||
public interface IGizmoRenderer_UnityGizmos<T> : IGizmoRenderer<T> where T : IGizmo<T>
|
public interface IGizmoRenderer_PostRender<T> : IGizmoRenderer<T> where T : IGizmo<T>
|
||||||
{
|
{
|
||||||
void Render_UnityGizmos(Camera camera, GizmosList<T> list);
|
void PostRender(Camera camera, GizmosList<T> list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -135,14 +135,14 @@ Material:
|
|||||||
- _GlossinessSource: 0
|
- _GlossinessSource: 0
|
||||||
- _GlossyReflections: 1
|
- _GlossyReflections: 1
|
||||||
- _LightingEnabled: 1
|
- _LightingEnabled: 1
|
||||||
- _Metallic: 0
|
- _Metallic: 0.046
|
||||||
- _Mode: 0
|
- _Mode: 0
|
||||||
- _OcclusionStrength: 1
|
- _OcclusionStrength: 1
|
||||||
- _Parallax: 0.02
|
- _Parallax: 0.02
|
||||||
- _QueueOffset: 0
|
- _QueueOffset: 0
|
||||||
- _ReceiveShadows: 0
|
- _ReceiveShadows: 0
|
||||||
- _Shininess: 0
|
- _Shininess: 0
|
||||||
- _Smoothness: 0
|
- _Smoothness: 0.047
|
||||||
- _SmoothnessSource: 0
|
- _SmoothnessSource: 0
|
||||||
- _SmoothnessTextureChannel: 0
|
- _SmoothnessTextureChannel: 0
|
||||||
- _SoftParticlesEnabled: 0
|
- _SoftParticlesEnabled: 0
|
||||||
|
@ -1229,7 +1229,7 @@ Camera:
|
|||||||
m_ShutterSpeed: 0.005
|
m_ShutterSpeed: 0.005
|
||||||
m_Aperture: 16
|
m_Aperture: 16
|
||||||
m_FocusDistance: 10
|
m_FocusDistance: 10
|
||||||
m_FocalLength: 50
|
m_FocalLength: 20.78461
|
||||||
m_BladeCount: 5
|
m_BladeCount: 5
|
||||||
m_Curvature: {x: 2, y: 11}
|
m_Curvature: {x: 2, y: 11}
|
||||||
m_BarrelClipping: 0.25
|
m_BarrelClipping: 0.25
|
||||||
@ -1244,7 +1244,7 @@ Camera:
|
|||||||
height: 1
|
height: 1
|
||||||
near clip plane: 0.3
|
near clip plane: 0.3
|
||||||
far clip plane: 1000
|
far clip plane: 1000
|
||||||
field of view: 60
|
field of view: 60.000004
|
||||||
orthographic: 0
|
orthographic: 0
|
||||||
orthographic size: 5
|
orthographic size: 5
|
||||||
m_Depth: -1
|
m_Depth: -1
|
||||||
@ -1277,7 +1277,7 @@ Transform:
|
|||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 1800693605}
|
- {fileID: 1800693605}
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_LocalEulerAnglesHint: {x: 60, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!114 &298618463
|
--- !u!114 &298618463
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -20,7 +20,6 @@ namespace DCFApixels.DebugXCore.Samples
|
|||||||
Draw();
|
Draw();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
private void Draw()
|
private void Draw()
|
||||||
{
|
{
|
||||||
int i = -1;
|
int i = -1;
|
||||||
@ -29,7 +28,9 @@ 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);
|
Color backgroundColor = Color.white - GetColor(Points[i]);
|
||||||
|
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);
|
||||||
@ -50,4 +51,4 @@ namespace DCFApixels.DebugXCore.Samples
|
|||||||
return Gradient.Evaluate(Mathf.Clamp01(t));
|
return Gradient.Evaluate(Mathf.Clamp01(t));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user