2026-06-09 룸 프로토타입 디자인 (진행중)
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
// 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 System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using UnityEditor.UIElements;
|
||||
using UnityEngine.UIElements;
|
||||
using PrefabStageUtility = UnityEditor.SceneManagement.PrefabStageUtility;
|
||||
|
||||
namespace StylizedWater3
|
||||
{
|
||||
[CanEditMultipleObjects]
|
||||
[CustomEditor(typeof(AlignToWater))]
|
||||
public class AlignToWaterInspector : Editor
|
||||
{
|
||||
AlignToWater script;
|
||||
|
||||
SerializedProperty heightInterface;
|
||||
|
||||
SerializedProperty followTarget;
|
||||
|
||||
SerializedProperty surfaceSize;
|
||||
|
||||
SerializedProperty heightOffset;
|
||||
SerializedProperty rollAmount;
|
||||
|
||||
SerializedProperty rotation;
|
||||
SerializedProperty smoothing;
|
||||
|
||||
private bool isRiver;
|
||||
private bool wavesEnabled;
|
||||
|
||||
private string proSkinPrefix => EditorGUIUtility.isProSkin ? "d_" : "";
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
script = (AlignToWater)target;
|
||||
|
||||
heightInterface = serializedObject.FindProperty("heightInterface");
|
||||
|
||||
followTarget = serializedObject.FindProperty("followTarget");
|
||||
|
||||
surfaceSize = serializedObject.FindProperty("surfaceSize");
|
||||
|
||||
heightOffset = serializedObject.FindProperty("heightOffset");
|
||||
rollAmount = serializedObject.FindProperty("rollAmount");
|
||||
|
||||
rotation = serializedObject.FindProperty("rotation");
|
||||
smoothing = serializedObject.FindProperty("smoothing");
|
||||
|
||||
ValidateMaterial();
|
||||
}
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
UI.DrawHeader();
|
||||
|
||||
using (new EditorGUILayout.HorizontalScope())
|
||||
{
|
||||
GUILayout.Space(EditorGUIUtility.labelWidth);
|
||||
AlignToWater.EnableInEditor =
|
||||
GUILayout.Toggle(AlignToWater.EnableInEditor, new GUIContent(" Run in edit-mode (global)", EditorGUIUtility.IconContent(
|
||||
(AlignToWater.EnableInEditor ? "animationvisibilitytoggleon" : "animationvisibilitytoggleoff")).image), "Button");
|
||||
}
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
serializedObject.Update();
|
||||
|
||||
if (script.rigidbody)
|
||||
{
|
||||
EditorGUILayout.HelpBox("RigidBody attachment detected! A fair reminder that this is not a physics-compatible component." +
|
||||
"\n\n" +
|
||||
"Physics will be overriden and its position and rotation will be set directly." +
|
||||
"\nVertical forces applied to it will cause visible jittering.", MessageType.Warning);
|
||||
}
|
||||
|
||||
EditorGUI.BeginChangeCheck();
|
||||
|
||||
EditorGUILayout.PropertyField(heightInterface);
|
||||
|
||||
//UI.DrawNotification(isRiver, "Material has river mode enabled, buoyancy only works for flat water bodies", MessageType.Error);
|
||||
//UI.DrawNotification(!wavesEnabled && !isRiver, "Material used on the water object does not have waves enabled.", MessageType.Error);
|
||||
|
||||
/*
|
||||
if (script.waterObject && script.waterObject.material)
|
||||
{
|
||||
UI.DrawNotification((script.waterObject.material.GetFloat("_WorldSpaceUV") == 0f), "Material must use world-projected UV", "Change", ()=> script.waterObject.material.SetFloat("_WorldSpaceUV", 1f), MessageType.Error);
|
||||
}
|
||||
*/
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.PropertyField(surfaceSize);
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.PropertyField(followTarget);
|
||||
EditorGUILayout.PropertyField(heightOffset);
|
||||
EditorGUILayout.PropertyField(rollAmount);
|
||||
|
||||
EditorGUILayout.Separator();
|
||||
|
||||
EditorGUILayout.PropertyField(rotation);
|
||||
EditorGUILayout.PropertyField(smoothing);
|
||||
|
||||
UI.DrawNotification(smoothing.floatValue == 0f && script.rigidbody, "Smoothing is required to mitigate jittering of the RigidBody", MessageType.Warning);
|
||||
|
||||
if (EditorGUI.EndChangeCheck())
|
||||
{
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
|
||||
ValidateMaterial();
|
||||
}
|
||||
|
||||
UI.DrawFooter();
|
||||
}
|
||||
|
||||
private void ValidateMaterial()
|
||||
{
|
||||
/*
|
||||
if (script.waterObject && script.waterObject.material)
|
||||
{
|
||||
if (script.waterObject.material != script.waterObject.meshRenderer.sharedMaterial) script.waterObject.material = script.waterObject.meshRenderer.sharedMaterial;
|
||||
|
||||
wavesEnabled = WaveParameters.WavesEnabled(script.waterObject.material);
|
||||
isRiver = script.waterObject.material.IsKeywordEnabled(ShaderParams.Keywords.River);
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user