Files
BITFALL/Assets/Plugins/FImpossible Creations/Plugins - Level Design/PGG/Editor/Utilities/PGGMenuCreate.cs
CortexCore ba342d6627 1
2023-11-30 00:23:23 +08:00

87 lines
2.6 KiB
C#

#if UNITY_EDITOR
using FIMSpace.Generating;
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
namespace FIMSpace.Hidden
{
public static class PGGMenuCreate
{
[MenuItem("GameObject/Generators/Grid Painter", false, 1)]
static void CreateGridPainterObject()
{
GameObject go = new GameObject();
go.name = "Grid Painter";
go.AddComponent<GridPainter>();
PositionNewObject(go);
Selection.activeGameObject = go;
EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene());
}
[MenuItem("GameObject/Generators/Build Planner Executor", false, 2)]
static void CreatePlannerExecutorObject()
{
GameObject go = new GameObject();
go.name = "Build Planner Executor";
go.AddComponent<BuildPlannerExecutor>();
PositionNewObject(go);
Selection.activeGameObject = go;
EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene());
}
[MenuItem("GameObject/Generators/_________________", false, 1000)]
static void CreateSeparator() { }
[MenuItem("GameObject/Generators/Stamp Emitter", false, 1002)]
static void CreateEmitterObject()
{
GameObject go = new GameObject();
go.name = "Multi-Stamp Emitter";
go.AddComponent<ObjectStampEmitter>();
PositionNewObject(go);
Selection.activeGameObject = go;
EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene());
}
[MenuItem("GameObject/Generators/Multi Stamp Emitter", false, 1003)]
static void CreateMultiEmitterObject()
{
GameObject go = new GameObject();
go.name = "Multi-Stamp Emitter";
go.AddComponent<ObjectStampMultiEmitter>();
PositionNewObject(go);
Selection.activeGameObject = go;
EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene());
}
static void PositionNewObject(GameObject go)
{
var sceneCamera = SceneView.lastActiveSceneView.camera;
if (sceneCamera != null)
go.transform.position = sceneCamera.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, 10f));
else
{
go.transform.localPosition = Vector3.zero;
go.transform.localEulerAngles = Vector3.zero;
go.transform.localScale = Vector3.one;
}
}
}
}
#endif