'push'
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
// Crest Water System
|
||||
// Copyright © 2024 Wave Harmonic. All rights reserved.
|
||||
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using WaveHarmonic.Crest.Internal;
|
||||
|
||||
namespace WaveHarmonic.Crest.ShallowWater.Editor
|
||||
{
|
||||
static class Visualizers
|
||||
{
|
||||
#if CREST_DEBUG
|
||||
internal static Material s_VisualizeMaterial;
|
||||
#endif
|
||||
|
||||
[DrawGizmo(GizmoType.Selected | GizmoType.NonSelected)]
|
||||
static void DrawGizmos(ShallowWaterSimulation target, GizmoType type)
|
||||
{
|
||||
var rect = target.Rect;
|
||||
if (rect != Rect.zero && type.HasFlag(GizmoType.Selected))
|
||||
{
|
||||
var height = target.Origin.y;
|
||||
Gizmos.color = Color.magenta;
|
||||
|
||||
Gizmos.DrawWireCube
|
||||
(
|
||||
new(rect.center.x, height, rect.center.y),
|
||||
new(rect.size.x, 0, rect.size.y)
|
||||
);
|
||||
|
||||
if (target.InjectShape == ShallowWaterSimulationInjection.Level)
|
||||
{
|
||||
Gizmos.DrawCube
|
||||
(
|
||||
new(rect.center.x - rect.size.x * 0.5f + target.PaddingWidth * 0.5f, height, rect.center.y),
|
||||
new(target.PaddingWidth, 0, rect.size.y)
|
||||
);
|
||||
|
||||
Gizmos.DrawCube
|
||||
(
|
||||
new(rect.center.x + rect.size.x * 0.5f - target.PaddingWidth * 0.5f, height, rect.center.y),
|
||||
new(target.PaddingWidth, 0, rect.size.y)
|
||||
);
|
||||
|
||||
Gizmos.DrawCube
|
||||
(
|
||||
new(rect.center.x, height, rect.center.y + rect.size.y * 0.5f - target.PaddingWidth * 0.5f),
|
||||
new(rect.size.x - target.PaddingWidth * 2f, 0, target.PaddingWidth)
|
||||
);
|
||||
|
||||
Gizmos.DrawCube
|
||||
(
|
||||
new(rect.center.x, height, rect.center.y - rect.size.y * 0.5f + target.PaddingWidth * 0.5f),
|
||||
new(rect.size.x - target.PaddingWidth * 2f, 0, target.PaddingWidth)
|
||||
);
|
||||
|
||||
Gizmos.DrawWireCube
|
||||
(
|
||||
new(rect.center.x, height, rect.center.y),
|
||||
new(rect.size.x - target.PaddingWidth * 2f, 0, rect.size.y - target.PaddingWidth * 2f)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
#if CREST_DEBUG
|
||||
if (target._Debug._ShowSimulationDataInScene != ShallowWaterSimulation.DebugFields.SimulationData.None)
|
||||
{
|
||||
var water = WaterRenderer.Instance;
|
||||
|
||||
if (water == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (s_VisualizeMaterial == null)
|
||||
{
|
||||
s_VisualizeMaterial = new(Shader.Find("Hidden/Crest/Debug/Visualize Texture"));
|
||||
}
|
||||
|
||||
s_VisualizeMaterial.mainTexture = target._Debug._ShowSimulationDataInScene switch
|
||||
{
|
||||
ShallowWaterSimulation.DebugFields.SimulationData.Height => target._Height0,
|
||||
ShallowWaterSimulation.DebugFields.SimulationData.Ground => target._GroundHeight,
|
||||
ShallowWaterSimulation.DebugFields.SimulationData.VelocityX => target._VelocityX,
|
||||
ShallowWaterSimulation.DebugFields.SimulationData.VelocityY => target._VelocityY,
|
||||
ShallowWaterSimulation.DebugFields.SimulationData.Mask => target._Mask,
|
||||
ShallowWaterSimulation.DebugFields.SimulationData.WaterLevel => target._WaterLevel,
|
||||
_ => throw new System.NotImplementedException(),
|
||||
};
|
||||
|
||||
if (s_VisualizeMaterial.mainTexture == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
s_VisualizeMaterial.SetPass(0);
|
||||
|
||||
Graphics.DrawMeshNow
|
||||
(
|
||||
Helpers.QuadMesh,
|
||||
Matrix4x4.TRS(target.Origin.XNZ(water.SeaLevel) + Vector3.up, Quaternion.Euler(90f, 0, 0), Vector3.one * target._Width)
|
||||
);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user