2025-06-08 00:39:11 +09:00

65 lines
2.9 KiB
C#

using UnityEngine;
using UnityEditor;
using UnityEditor.SceneManagement;
namespace VolumetricFogAndMist2 {
public class VolumetricFog2EditorIntegration : MonoBehaviour {
[MenuItem("GameObject/Effects/Volumetric Fog 2/Manager", false, 100)]
public static void CreateManager(MenuCommand menuCommand) {
VolumetricFogManager manager = Tools.CheckMainManager();
if (StageUtility.GetCurrentStage() != StageUtility.GetMainStage()) {
StageUtility.PlaceGameObjectInCurrentStage(manager.gameObject);
}
Selection.activeObject = manager.gameObject;
}
[MenuItem("GameObject/Effects/Volumetric Fog 2/Fog Volume", false, 120)]
public static void CreateFogVolume(MenuCommand menuCommand) {
GameObject go = VolumetricFogManager.CreateFogVolume("Volumetric Fog Volume");
GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject);
if (StageUtility.GetCurrentStage() != StageUtility.GetMainStage()) {
StageUtility.PlaceGameObjectInCurrentStage(go);
}
Undo.RegisterCreatedObjectUndo(go, "Create Fog Volume");
Selection.activeObject = go;
PlaceGameObjectInFrontOfSceneView(go);
}
[MenuItem("GameObject/Effects/Volumetric Fog 2/Fog Void", false, 121)]
public static void CreateFogVoid(MenuCommand menuCommand) {
GameObject go = VolumetricFogManager.CreateFogVoid("Fog Void");
GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject);
if (StageUtility.GetCurrentStage() != StageUtility.GetMainStage()) {
StageUtility.PlaceGameObjectInCurrentStage(go);
}
go.transform.localScale = new Vector3(30, 10, 30);
Undo.RegisterCreatedObjectUndo(go, "Create Fog Void");
Selection.activeObject = go;
PlaceGameObjectInFrontOfSceneView(go);
}
[MenuItem("GameObject/Effects/Volumetric Fog 2/Fog Sub-Volume", false, 122)]
public static void CreateFogSubVolume(MenuCommand menuCommand) {
GameObject go = VolumetricFogManager.CreateFogSubVolume("Volumetric Fog Sub-Volume");
GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject);
if (StageUtility.GetCurrentStage() != StageUtility.GetMainStage()) {
StageUtility.PlaceGameObjectInCurrentStage(go);
}
Undo.RegisterCreatedObjectUndo(go, "Create Volumetric Fog Sub-Volume");
Selection.activeObject = go;
PlaceGameObjectInFrontOfSceneView(go);
}
static void PlaceGameObjectInFrontOfSceneView(GameObject go) {
var view = SceneView.lastActiveSceneView;
if (view != null) {
view.MoveToView(go.transform);
}
}
}
}