Files
WhaleAdventure_VR/Assets/Stylized Water 3/Editor/Inspectors/OceanFollowBehaviourInspector.cs
2026-06-09 20:53:26 +09:00

92 lines
3.7 KiB
C#

// Stylized Water 3 by Staggart Creations (http://staggart.xyz)
// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms)
// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited!
// • Uploading this file to a public repository will subject it to an automated DMCA takedown request.
using System;
using UnityEditor;
using UnityEngine;
namespace StylizedWater3
{
[CustomEditor(typeof(OceanFollowBehaviour))]
public class OceanFollowBehaviourInspector : Editor
{
private SerializedProperty material;
private SerializedProperty enableInEditMode;
private SerializedProperty followTarget;
private bool isvalidSetup;
private void OnEnable()
{
material = serializedObject.FindProperty("material");
enableInEditMode = serializedObject.FindProperty("enableInEditMode");
followTarget = serializedObject.FindProperty("followTarget");
isvalidSetup = ((OceanFollowBehaviour)target).InvalidSetup();
}
private bool materialChanged;
public override void OnInspectorGUI()
{
UI.DrawHeader();
serializedObject.Update();
UI.DrawNotification(isvalidSetup, "This component has an invalid set up, one or more references went missing." +
"\n\nThis component must not be added manually." +
"\n\nInstead go to GameObject->3D Object->Water->Ocean to create an ocean",
MessageType.Error);
EditorGUI.BeginChangeCheck();
using (new EditorGUILayout.HorizontalScope())
{
GUILayout.Space(EditorGUIUtility.labelWidth);
OceanFollowBehaviour.ShowWireFrame = GUILayout.Toggle(OceanFollowBehaviour.ShowWireFrame, new GUIContent(" Show Wireframe", EditorGUIUtility.IconContent((OceanFollowBehaviour.ShowWireFrame ? "animationvisibilitytoggleon" : "animationvisibilitytoggleoff")).image), "Button");
}
EditorGUILayout.Separator();
using (new EditorGUILayout.HorizontalScope())
{
materialChanged = false;
EditorGUI.BeginChangeCheck();
EditorGUILayout.PropertyField(material);
if (EditorGUI.EndChangeCheck()) materialChanged = true;
EditorGUI.BeginDisabledGroup(material.objectReferenceValue == null);
if (GUILayout.Button("Edit", EditorStyles.miniButton, GUILayout.Width(50f)))
{
Selection.activeObject = material.objectReferenceValue;
//StylizedWaterEditor.PopUpMaterialEditor.Create(material.objectReferenceValue);
}
EditorGUI.EndDisabledGroup();
}
EditorGUILayout.Separator();
EditorGUILayout.PropertyField(enableInEditMode);
EditorGUILayout.PropertyField(followTarget);
if (followTarget.objectReferenceValue == null)
{
EditorGUILayout.HelpBox("None assigned. The actively rendering camera will be automatically followed", MessageType.Info);
}
if (EditorGUI.EndChangeCheck())
{
serializedObject.ApplyModifiedProperties();
if (materialChanged)
{
OceanFollowBehaviour component = (OceanFollowBehaviour)target;
component.ApplyMaterial();
}
}
UI.DrawFooter();
}
}
}