generated from max/template-unity-project
	namespaces
This commit is contained in:
		@@ -1,69 +1,71 @@
 | 
			
		||||
using UnityEditor;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
using VertexColor.ScenePartition.Editor;
 | 
			
		||||
 | 
			
		||||
[InitializeOnLoad]
 | 
			
		||||
public class ScenePartitionSceneViewEditor : Editor
 | 
			
		||||
namespace VertexColor.ScenePartition.Editor
 | 
			
		||||
{
 | 
			
		||||
    private const int cellSize = 10;
 | 
			
		||||
 | 
			
		||||
    static ScenePartitionSceneViewEditor()
 | 
			
		||||
    [InitializeOnLoad]
 | 
			
		||||
    public class ScenePartitionSceneViewEditor : UnityEditor.Editor
 | 
			
		||||
    {
 | 
			
		||||
        SceneView.duringSceneGui += HandleDuringSceneGui;
 | 
			
		||||
    }
 | 
			
		||||
        private const int cellSize = 10;
 | 
			
		||||
 | 
			
		||||
    private static void HandleDuringSceneGui(SceneView sceneView)
 | 
			
		||||
    {
 | 
			
		||||
        if (Event.current.modifiers != EventModifiers.Control) return;
 | 
			
		||||
        static ScenePartitionSceneViewEditor()
 | 
			
		||||
        {
 | 
			
		||||
            SceneView.duringSceneGui += HandleDuringSceneGui;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Vector3 gridPosition = CalculateGridPosition(Event.current.mousePosition);
 | 
			
		||||
        int gridId = SceneGrid.CalculateGridPosition(gridPosition, 10);
 | 
			
		||||
        private static void HandleDuringSceneGui(SceneView sceneView)
 | 
			
		||||
        {
 | 
			
		||||
            if (Event.current.modifiers != EventModifiers.Control) return;
 | 
			
		||||
 | 
			
		||||
        int x = Mathf.FloorToInt(gridPosition.x / cellSize);
 | 
			
		||||
        int z = Mathf.FloorToInt(gridPosition.z / cellSize);
 | 
			
		||||
            Vector3 gridPosition = CalculateGridPosition(Event.current.mousePosition);
 | 
			
		||||
            int gridId = SceneGrid.CalculateGridPosition(gridPosition, 10);
 | 
			
		||||
 | 
			
		||||
        Vector3 cellOrign = new Vector3(x * cellSize, 0, z * cellSize);
 | 
			
		||||
        Vector3[] lines = new Vector3[] {
 | 
			
		||||
            int x = Mathf.FloorToInt(gridPosition.x / cellSize);
 | 
			
		||||
            int z = Mathf.FloorToInt(gridPosition.z / cellSize);
 | 
			
		||||
 | 
			
		||||
            Vector3 cellOrign = new Vector3(x * cellSize, 0, z * cellSize);
 | 
			
		||||
            Vector3[] lines = new Vector3[] {
 | 
			
		||||
            new Vector3(0, 0, 0) + cellOrign, new Vector3(0, 0, cellSize) + cellOrign,                  // Left Bottom -> Left Top
 | 
			
		||||
            new Vector3(cellSize, 0, 0) + cellOrign, new Vector3(cellSize, 0, cellSize) + cellOrign,    // Right Bottom -> Right Top
 | 
			
		||||
            new Vector3(0, 0, 0) + cellOrign, new Vector3(cellSize, 0, 0) + cellOrign,                  // Left Bottom -> Right Bottom
 | 
			
		||||
            new Vector3(0, 0, cellSize) + cellOrign, new Vector3(cellSize, 0, cellSize) + cellOrign,    // Left Top -> Right Top
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        Handles.DrawDottedLines(lines, 10.0f);
 | 
			
		||||
        Handles.Label(cellOrign + new Vector3(cellSize * 0.5f, 0, cellSize * 0.5f), new GUIContent($"{gridId}"));
 | 
			
		||||
            Handles.DrawDottedLines(lines, 10.0f);
 | 
			
		||||
            Handles.Label(cellOrign + new Vector3(cellSize * 0.5f, 0, cellSize * 0.5f), new GUIContent($"{gridId}"));
 | 
			
		||||
 | 
			
		||||
        if (Event.current.button == 1 && Event.current.type == EventType.MouseDown)
 | 
			
		||||
        {
 | 
			
		||||
            GenericMenu menu = new GenericMenu();
 | 
			
		||||
            if (Event.current.button == 1 && Event.current.type == EventType.MouseDown)
 | 
			
		||||
            {
 | 
			
		||||
                GenericMenu menu = new GenericMenu();
 | 
			
		||||
 | 
			
		||||
            menu.AddItem(new GUIContent($"Load {gridId}"), false, Load, gridId);
 | 
			
		||||
            menu.ShowAsContext();
 | 
			
		||||
                menu.AddItem(new GUIContent($"Load {gridId}"), false, Load, gridId);
 | 
			
		||||
                menu.ShowAsContext();
 | 
			
		||||
 | 
			
		||||
            Event.current.Use();
 | 
			
		||||
                Event.current.Use();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            SceneView.RepaintAll();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        SceneView.RepaintAll();
 | 
			
		||||
    }
 | 
			
		||||
        private static Vector3 CalculateGridPosition(Vector2 mousePosition)
 | 
			
		||||
        {
 | 
			
		||||
            if (Event.current == null) return Vector3.zero;
 | 
			
		||||
 | 
			
		||||
    private static Vector3 CalculateGridPosition(Vector2 mousePosition)
 | 
			
		||||
    {
 | 
			
		||||
        if (Event.current == null) return Vector3.zero;
 | 
			
		||||
            Ray ray = HandleUtility.GUIPointToWorldRay(mousePosition);
 | 
			
		||||
            Plane plane = new Plane(Vector3.up, Vector3.zero); // Horizontal plane at y = 0
 | 
			
		||||
 | 
			
		||||
        Ray ray = HandleUtility.GUIPointToWorldRay(mousePosition);
 | 
			
		||||
        Plane plane = new Plane(Vector3.up, Vector3.zero); // Horizontal plane at y = 0
 | 
			
		||||
            if (!plane.Raycast(ray, out float distance)) return Vector3.zero;
 | 
			
		||||
 | 
			
		||||
        if (!plane.Raycast(ray, out float distance)) return Vector3.zero;
 | 
			
		||||
            Vector3 intersectionPoint = ray.GetPoint(distance);
 | 
			
		||||
            return intersectionPoint;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Vector3 intersectionPoint = ray.GetPoint(distance);
 | 
			
		||||
        return intersectionPoint;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static void Load(object gridId)
 | 
			
		||||
    {
 | 
			
		||||
        if (gridId == null) return;
 | 
			
		||||
        if (gridId is not int gridPos) return;
 | 
			
		||||
        private static void Load(object gridId)
 | 
			
		||||
        {
 | 
			
		||||
            if (gridId == null) return;
 | 
			
		||||
            if (gridId is not int gridPos) return;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user