mirror of
https://github.com/DCFApixels/Unity-DebugX.git
synced 2025-09-18 01:54:37 +08:00
50 lines
1.7 KiB
C#
50 lines
1.7 KiB
C#
![]() |
using System;
|
|||
|
using UnityEngine;
|
|||
|
using UnityEngine.Rendering;
|
|||
|
|
|||
|
namespace DCFApixels.DebugXCore
|
|||
|
{
|
|||
|
public interface IGizmo<T> where T : IGizmo<T>
|
|||
|
{
|
|||
|
IGizmoRenderer<T> RegisterNewRenderer();
|
|||
|
}
|
|||
|
public interface IGizmoRenderer<T> where T : IGizmo<T>
|
|||
|
{
|
|||
|
int ExecuteOrder { get; }
|
|||
|
//Статик рендер означает что в рамках одного контекста для всех камер используется одинаковый набор команд в CommandBuffer
|
|||
|
//Поэтому Prepare и Render можно вызвать один раз, а не по разу на каждую камеру
|
|||
|
bool IsStaticRender { get; }
|
|||
|
void Prepare(Camera camera, GizmosList<T> list);
|
|||
|
void Render(Camera camera, GizmosList<T> list, CommandBuffer cb);
|
|||
|
}
|
|||
|
public interface IGizmoRenderer_UnityGizmos<T> : IGizmoRenderer<T> where T : IGizmo<T>
|
|||
|
{
|
|||
|
void Render_UnityGizmos(Camera camera, GizmosList<T> list);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public readonly struct RenderContext : IEquatable<RenderContext>
|
|||
|
{
|
|||
|
public readonly Camera Camera;
|
|||
|
public bool IsStatic
|
|||
|
{
|
|||
|
get { return Camera == null || Camera.name == "SceneCamera"; }
|
|||
|
}
|
|||
|
public RenderContext(Camera camera)
|
|||
|
{
|
|||
|
Camera = camera;
|
|||
|
}
|
|||
|
public bool Equals(RenderContext other)
|
|||
|
{
|
|||
|
return Camera == other.Camera;
|
|||
|
}
|
|||
|
public override bool Equals(object obj)
|
|||
|
{
|
|||
|
return obj is RenderContext && Equals((RenderContext)obj);
|
|||
|
}
|
|||
|
public override int GetHashCode()
|
|||
|
{
|
|||
|
return HashCode.Combine(Camera);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|