592 lines
35 KiB
C#
592 lines
35 KiB
C#
using UnityEngine;
|
|
using UnityEditor;
|
|
|
|
using AmazingAssets.AdvancedDissolve;
|
|
|
|
namespace AmazingAssets.AdvancedDissolveEditor
|
|
{
|
|
[CustomEditor(typeof(AmazingAssets.AdvancedDissolve.AdvancedDissolveGeometricCutoutController))]
|
|
[CanEditMultipleObjects]
|
|
public class AdvancedDissolveGeometricCutoutControllerEditor : Editor
|
|
{
|
|
SerializedProperty updateMode;
|
|
SerializedProperty drawGizmos;
|
|
|
|
SerializedProperty type;
|
|
SerializedProperty count;
|
|
|
|
SerializedProperty xyzAxis;
|
|
SerializedProperty xyzStyle;
|
|
SerializedProperty xyzSpace;
|
|
SerializedProperty xyzRollout;
|
|
SerializedProperty xyzPivotPointTransform;
|
|
SerializedProperty xyzPivotPointPosition;
|
|
|
|
SerializedProperty target1StartPointTransform, target1EndPointTransform;
|
|
SerializedProperty target1StartPointPosition, target1EndPointPosition;
|
|
SerializedProperty target1Radius, target1Normal, target1Rotation, target1Size;
|
|
|
|
SerializedProperty target2StartPointTransform, target2EndPointTransform;
|
|
SerializedProperty target2StartPointPosition, target2EndPointPosition;
|
|
SerializedProperty target2Radius, target2Normal, target2Rotation, target2Size;
|
|
|
|
SerializedProperty target3StartPointTransform, target3EndPointTransform;
|
|
SerializedProperty target3StartPointPosition, target3EndPointPosition;
|
|
SerializedProperty target3Radius, target3Normal, target3Rotation, target3Size;
|
|
|
|
SerializedProperty target4StartPointTransform, target4EndPointTransform;
|
|
SerializedProperty target4StartPointPosition, target4EndPointPosition;
|
|
SerializedProperty target4Radius, target4Normal, target4Rotation, target4Size;
|
|
|
|
SerializedProperty invert;
|
|
SerializedProperty noise;
|
|
|
|
SerializedProperty globalControlID;
|
|
SerializedProperty materials;
|
|
|
|
|
|
|
|
|
|
#region Component Menu
|
|
[MenuItem("Component/Amazing Assets/Advanced Dissolve/Geometric Cutout Controller", false, 511)]
|
|
static public void AddComponent()
|
|
{
|
|
if (Selection.gameObjects != null && Selection.gameObjects.Length > 1)
|
|
{
|
|
for (int i = 0; i < Selection.gameObjects.Length; i++)
|
|
{
|
|
if (Selection.gameObjects[i] != null)
|
|
Selection.gameObjects[i].AddComponent<AdvancedDissolve.AdvancedDissolveGeometricCutoutController>();
|
|
}
|
|
}
|
|
else if (Selection.activeGameObject != null)
|
|
{
|
|
Selection.activeGameObject.AddComponent<AdvancedDissolve.AdvancedDissolveGeometricCutoutController>();
|
|
}
|
|
}
|
|
|
|
[MenuItem("Component/Amazing Assets/Advanced Dissolve/Geometric Cutout Controller", true)]
|
|
static public bool ValidateAddComponent()
|
|
{
|
|
return (Selection.gameObjects == null || Selection.gameObjects.Length == 0) ? false : true;
|
|
}
|
|
#endregion
|
|
|
|
void OnEnable()
|
|
{
|
|
updateMode = serializedObject.FindProperty("updateMode");
|
|
drawGizmos = serializedObject.FindProperty("drawGizmos");
|
|
|
|
type = serializedObject.FindProperty("type");
|
|
count = serializedObject.FindProperty("count");
|
|
|
|
xyzAxis = serializedObject.FindProperty("xyzAxis");
|
|
xyzStyle = serializedObject.FindProperty("xyzStyle");
|
|
xyzSpace = serializedObject.FindProperty("xyzSpace");
|
|
xyzRollout = serializedObject.FindProperty("xyzRollout");
|
|
xyzPivotPointTransform = serializedObject.FindProperty("xyzPivotPointTransform");
|
|
xyzPivotPointPosition = serializedObject.FindProperty("xyzPivotPointPosition");
|
|
|
|
target1StartPointTransform = serializedObject.FindProperty("target1StartPointTransform"); target1EndPointTransform = serializedObject.FindProperty("target1EndPointTransform");
|
|
target1StartPointPosition = serializedObject.FindProperty("target1StartPointPosition"); target1EndPointPosition = serializedObject.FindProperty("target1EndPointPosition");
|
|
target1Radius = serializedObject.FindProperty("target1Radius");
|
|
target1Normal = serializedObject.FindProperty("target1Normal");
|
|
target1Rotation = serializedObject.FindProperty("target1Rotation");
|
|
target1Size = serializedObject.FindProperty("target1Size");
|
|
|
|
target2StartPointTransform = serializedObject.FindProperty("target2StartPointTransform"); target2EndPointTransform = serializedObject.FindProperty("target2EndPointTransform");
|
|
target2StartPointPosition = serializedObject.FindProperty("target2StartPointPosition"); target2EndPointPosition = serializedObject.FindProperty("target2EndPointPosition");
|
|
target2Radius = serializedObject.FindProperty("target2Radius");
|
|
target2Normal = serializedObject.FindProperty("target2Normal");
|
|
target2Rotation = serializedObject.FindProperty("target2Rotation");
|
|
target2Size = serializedObject.FindProperty("target2Size");
|
|
|
|
target3StartPointTransform = serializedObject.FindProperty("target3StartPointTransform"); target3EndPointTransform = serializedObject.FindProperty("target3EndPointTransform");
|
|
target3StartPointPosition = serializedObject.FindProperty("target3StartPointPosition"); target3EndPointPosition = serializedObject.FindProperty("target3EndPointPosition");
|
|
target3Radius = serializedObject.FindProperty("target3Radius");
|
|
target3Normal = serializedObject.FindProperty("target3Normal");
|
|
target3Rotation = serializedObject.FindProperty("target3Rotation");
|
|
target3Size = serializedObject.FindProperty("target3Size");
|
|
|
|
target4StartPointTransform = serializedObject.FindProperty("target4StartPointTransform"); target4EndPointTransform = serializedObject.FindProperty("target4EndPointTransform");
|
|
target4StartPointPosition = serializedObject.FindProperty("target4StartPointPosition"); target4EndPointPosition = serializedObject.FindProperty("target4EndPointPosition");
|
|
target4Radius = serializedObject.FindProperty("target4Radius");
|
|
target4Normal = serializedObject.FindProperty("target4Normal");
|
|
target4Rotation = serializedObject.FindProperty("target4Rotation");
|
|
target4Size = serializedObject.FindProperty("target4Size");
|
|
|
|
|
|
invert = serializedObject.FindProperty("invert");
|
|
noise = serializedObject.FindProperty("noise");
|
|
|
|
globalControlID = serializedObject.FindProperty("globalControlID");
|
|
materials = serializedObject.FindProperty("materials");
|
|
}
|
|
|
|
public override void OnInspectorGUI()
|
|
{
|
|
serializedObject.Update();
|
|
|
|
|
|
EditorGUILayout.PropertyField(updateMode);
|
|
EditorGUILayout.PropertyField(drawGizmos);
|
|
|
|
EditorGUILayout.PropertyField(type);
|
|
AdvancedDissolve.AdvancedDissolveKeywords.CutoutGeometricType mt = (AdvancedDissolve.AdvancedDissolveKeywords.CutoutGeometricType)type.intValue;
|
|
|
|
if (mt != AdvancedDissolveKeywords.CutoutGeometricType.None && mt != AdvancedDissolveKeywords.CutoutGeometricType.XYZAxis)
|
|
{
|
|
EditorGUILayout.PropertyField(count);
|
|
}
|
|
|
|
GUILayout.Space(5);
|
|
AmazingAssets.AdvancedDissolveEditor.AdvancedDissolveMaterialProperties.DrawGroupHeader("Cutout");
|
|
|
|
|
|
if (mt != AdvancedDissolve.AdvancedDissolveKeywords.CutoutGeometricType.None)
|
|
{
|
|
GUILayout.Space(5);
|
|
|
|
switch ((AdvancedDissolve.AdvancedDissolveKeywords.CutoutGeometricType)type.intValue)
|
|
{
|
|
case AdvancedDissolveKeywords.CutoutGeometricType.XYZAxis:
|
|
{
|
|
DrawXYZAxisData();
|
|
}
|
|
break;
|
|
|
|
case AdvancedDissolveKeywords.CutoutGeometricType.Plane:
|
|
{
|
|
switch ((AdvancedDissolve.AdvancedDissolveKeywords.CutoutGeometricCount)count.intValue)
|
|
{
|
|
case AdvancedDissolveKeywords.CutoutGeometricCount.One:
|
|
DrawPlaneData(1, target1StartPointTransform, target1StartPointPosition, target1Normal);
|
|
break;
|
|
case AdvancedDissolveKeywords.CutoutGeometricCount.Two:
|
|
DrawPlaneData(1, target1StartPointTransform, target1StartPointPosition, target1Normal);
|
|
DrawPlaneData(2, target2StartPointTransform, target2StartPointPosition, target2Normal);
|
|
break;
|
|
case AdvancedDissolveKeywords.CutoutGeometricCount.Three:
|
|
DrawPlaneData(1, target1StartPointTransform, target1StartPointPosition, target1Normal);
|
|
DrawPlaneData(2, target2StartPointTransform, target2StartPointPosition, target2Normal);
|
|
DrawPlaneData(3, target3StartPointTransform, target3StartPointPosition, target3Normal);
|
|
break;
|
|
case AdvancedDissolveKeywords.CutoutGeometricCount.Four:
|
|
DrawPlaneData(1, target1StartPointTransform, target1StartPointPosition, target1Normal);
|
|
DrawPlaneData(2, target2StartPointTransform, target2StartPointPosition, target2Normal);
|
|
DrawPlaneData(3, target3StartPointTransform, target3StartPointPosition, target3Normal);
|
|
DrawPlaneData(4, target4StartPointTransform, target4StartPointPosition, target4Normal);
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case AdvancedDissolveKeywords.CutoutGeometricType.Sphere:
|
|
{
|
|
switch ((AdvancedDissolve.AdvancedDissolveKeywords.CutoutGeometricCount)count.intValue)
|
|
{
|
|
case AdvancedDissolveKeywords.CutoutGeometricCount.One:
|
|
DrawSphereData(1, target1StartPointTransform, target1StartPointPosition, target1Radius);
|
|
break;
|
|
case AdvancedDissolveKeywords.CutoutGeometricCount.Two:
|
|
DrawSphereData(1, target1StartPointTransform, target1StartPointPosition, target1Radius);
|
|
DrawSphereData(2, target2StartPointTransform, target2StartPointPosition, target2Radius);
|
|
break;
|
|
case AdvancedDissolveKeywords.CutoutGeometricCount.Three:
|
|
DrawSphereData(1, target1StartPointTransform, target1StartPointPosition, target1Radius);
|
|
DrawSphereData(2, target2StartPointTransform, target2StartPointPosition, target2Radius);
|
|
DrawSphereData(3, target3StartPointTransform, target3StartPointPosition, target3Radius);
|
|
break;
|
|
case AdvancedDissolveKeywords.CutoutGeometricCount.Four:
|
|
DrawSphereData(1, target1StartPointTransform, target1StartPointPosition, target1Radius);
|
|
DrawSphereData(2, target2StartPointTransform, target2StartPointPosition, target2Radius);
|
|
DrawSphereData(3, target3StartPointTransform, target3StartPointPosition, target3Radius);
|
|
DrawSphereData(4, target4StartPointTransform, target4StartPointPosition, target4Radius);
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case AdvancedDissolveKeywords.CutoutGeometricType.Cube:
|
|
{
|
|
switch ((AdvancedDissolve.AdvancedDissolveKeywords.CutoutGeometricCount)count.intValue)
|
|
{
|
|
case AdvancedDissolveKeywords.CutoutGeometricCount.One:
|
|
DrawCubeData(1, target1StartPointTransform, target1StartPointPosition, target1Rotation, target1Size);
|
|
break;
|
|
case AdvancedDissolveKeywords.CutoutGeometricCount.Two:
|
|
DrawCubeData(1, target1StartPointTransform, target1StartPointPosition, target1Rotation, target1Size);
|
|
DrawCubeData(2, target2StartPointTransform, target2StartPointPosition, target2Rotation, target2Size);
|
|
break;
|
|
case AdvancedDissolveKeywords.CutoutGeometricCount.Three:
|
|
DrawCubeData(1, target1StartPointTransform, target1StartPointPosition, target1Rotation, target1Size);
|
|
DrawCubeData(2, target2StartPointTransform, target2StartPointPosition, target2Rotation, target2Size);
|
|
DrawCubeData(3, target3StartPointTransform, target3StartPointPosition, target3Rotation, target3Size);
|
|
break;
|
|
case AdvancedDissolveKeywords.CutoutGeometricCount.Four:
|
|
DrawCubeData(1, target1StartPointTransform, target1StartPointPosition, target1Rotation, target1Size);
|
|
DrawCubeData(2, target2StartPointTransform, target2StartPointPosition, target2Rotation, target2Size);
|
|
DrawCubeData(3, target3StartPointTransform, target3StartPointPosition, target3Rotation, target3Size);
|
|
DrawCubeData(4, target4StartPointTransform, target4StartPointPosition, target4Rotation, target4Size);
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case AdvancedDissolveKeywords.CutoutGeometricType.Capsule:
|
|
{
|
|
switch ((AdvancedDissolve.AdvancedDissolveKeywords.CutoutGeometricCount)count.intValue)
|
|
{
|
|
case AdvancedDissolveKeywords.CutoutGeometricCount.One:
|
|
DrawCapsuleData(1, target1StartPointTransform, target1EndPointTransform, target1StartPointPosition, target1EndPointPosition, target1Radius);
|
|
break;
|
|
case AdvancedDissolveKeywords.CutoutGeometricCount.Two:
|
|
DrawCapsuleData(1, target1StartPointTransform, target1EndPointTransform, target1StartPointPosition, target1EndPointPosition, target1Radius);
|
|
DrawCapsuleData(2, target2StartPointTransform, target2EndPointTransform, target2StartPointPosition, target2EndPointPosition, target2Radius);
|
|
break;
|
|
case AdvancedDissolveKeywords.CutoutGeometricCount.Three:
|
|
DrawCapsuleData(1, target1StartPointTransform, target1EndPointTransform, target1StartPointPosition, target1EndPointPosition, target1Radius);
|
|
DrawCapsuleData(2, target2StartPointTransform, target2EndPointTransform, target2StartPointPosition, target2EndPointPosition, target2Radius);
|
|
DrawCapsuleData(3, target3StartPointTransform, target3EndPointTransform, target3StartPointPosition, target3EndPointPosition, target3Radius);
|
|
break;
|
|
case AdvancedDissolveKeywords.CutoutGeometricCount.Four:
|
|
DrawCapsuleData(1, target1StartPointTransform, target1EndPointTransform, target1StartPointPosition, target1EndPointPosition, target1Radius);
|
|
DrawCapsuleData(2, target2StartPointTransform, target2EndPointTransform, target2StartPointPosition, target2EndPointPosition, target2Radius);
|
|
DrawCapsuleData(3, target3StartPointTransform, target3EndPointTransform, target3StartPointPosition, target3EndPointPosition, target3Radius);
|
|
DrawCapsuleData(4, target4StartPointTransform, target4EndPointTransform, target4StartPointPosition, target4EndPointPosition, target4Radius);
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case AdvancedDissolveKeywords.CutoutGeometricType.ConeSmooth:
|
|
{
|
|
switch ((AdvancedDissolve.AdvancedDissolveKeywords.CutoutGeometricCount)count.intValue)
|
|
{
|
|
case AdvancedDissolveKeywords.CutoutGeometricCount.One:
|
|
DrawConeSmoothData(1, target1StartPointTransform, target1EndPointTransform, target1StartPointPosition, target1EndPointPosition, target1Radius);
|
|
break;
|
|
case AdvancedDissolveKeywords.CutoutGeometricCount.Two:
|
|
DrawConeSmoothData(1, target1StartPointTransform, target1EndPointTransform, target1StartPointPosition, target1EndPointPosition, target1Radius);
|
|
DrawConeSmoothData(2, target2StartPointTransform, target2EndPointTransform, target2StartPointPosition, target2EndPointPosition, target2Radius);
|
|
break;
|
|
case AdvancedDissolveKeywords.CutoutGeometricCount.Three:
|
|
DrawConeSmoothData(1, target1StartPointTransform, target1EndPointTransform, target1StartPointPosition, target1EndPointPosition, target1Radius);
|
|
DrawConeSmoothData(2, target2StartPointTransform, target2EndPointTransform, target2StartPointPosition, target2EndPointPosition, target2Radius);
|
|
DrawConeSmoothData(3, target3StartPointTransform, target3EndPointTransform, target3StartPointPosition, target3EndPointPosition, target3Radius);
|
|
break;
|
|
case AdvancedDissolveKeywords.CutoutGeometricCount.Four:
|
|
DrawConeSmoothData(1, target1StartPointTransform, target1EndPointTransform, target1StartPointPosition, target1EndPointPosition, target1Radius);
|
|
DrawConeSmoothData(2, target2StartPointTransform, target2EndPointTransform, target2StartPointPosition, target2EndPointPosition, target2Radius);
|
|
DrawConeSmoothData(3, target3StartPointTransform, target3EndPointTransform, target3StartPointPosition, target3EndPointPosition, target3Radius);
|
|
DrawConeSmoothData(4, target4StartPointTransform, target4EndPointTransform, target4StartPointPosition, target4EndPointPosition, target4Radius);
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
|
|
EditorGUILayout.PropertyField(invert);
|
|
EditorGUILayout.PropertyField(noise);
|
|
}
|
|
|
|
|
|
GUILayout.Space(5);
|
|
AmazingAssets.AdvancedDissolveEditor.AdvancedDissolveMaterialProperties.DrawGroupHeader("Additional Settings");
|
|
EditorGUILayout.PropertyField(globalControlID);
|
|
|
|
if (globalControlID.intValue == (int)AdvancedDissolve.AdvancedDissolveKeywords.GlobalControlID.None)
|
|
{
|
|
EditorGUILayout.PropertyField(materials, new GUIContent("Materials (" + materials.arraySize + ")"));
|
|
}
|
|
|
|
|
|
serializedObject.ApplyModifiedProperties();
|
|
}
|
|
|
|
void DrawXYZAxisData()
|
|
{
|
|
using (new EditorGUIHelper.EditorGUILayoutBeginVertical("Box"))
|
|
{
|
|
EditorGUILayout.PropertyField(xyzAxis, new GUIContent("Axis"));
|
|
EditorGUILayout.PropertyField(xyzStyle, new GUIContent("Style"));
|
|
|
|
if (xyzStyle.intValue == (int)AdvancedDissolve.AdvancedDissolveProperties.Cutout.Geometric.XYZStyle.Rollout)
|
|
{
|
|
EditorGUILayout.PropertyField(xyzRollout, new GUIContent("Rollout"));
|
|
if (xyzRollout.floatValue < 0)
|
|
xyzRollout.floatValue = 0;
|
|
}
|
|
|
|
EditorGUILayout.PropertyField(xyzSpace, new GUIContent("Space"));
|
|
|
|
if (xyzSpace.intValue == (int)AdvancedDissolve.AdvancedDissolveProperties.Cutout.Geometric.XYZSpace.World)
|
|
{
|
|
using (new EditorGUIHelper.EditorGUILayoutBeginHorizontal())
|
|
{
|
|
using (new EditorGUIHelper.GUIBackgroundColor(xyzPivotPointTransform.objectReferenceValue == null ? Color.yellow : Color.white))
|
|
{
|
|
EditorGUILayout.PropertyField(xyzPivotPointTransform, new GUIContent("Pivot Point"));
|
|
}
|
|
|
|
if (xyzPivotPointTransform.objectReferenceValue == null)
|
|
{
|
|
if (GUILayout.Button("Create", GUILayout.MaxWidth(70)))
|
|
{
|
|
xyzPivotPointTransform.objectReferenceValue = Utilities.CreateGeometricCutoutTargetObject(((AdvancedDissolveGeometricCutoutController)serializedObject.targetObject).transform, "Pivot Point", xyzPivotPointPosition.vector3Value, Quaternion.identity, Vector3.one, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (xyzPivotPointTransform.objectReferenceValue == null)
|
|
{
|
|
EditorGUILayout.LabelField(" Position");
|
|
Rect rect = GUILayoutUtility.GetLastRect();
|
|
rect.xMin += UnityEditor.EditorGUIUtility.labelWidth;
|
|
EditorGUI.PropertyField(rect, xyzPivotPointPosition, GUIContent.none);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
EditorGUILayout.LabelField("Pivot Point");
|
|
Rect rect = GUILayoutUtility.GetLastRect();
|
|
rect.xMin += UnityEditor.EditorGUIUtility.labelWidth;
|
|
|
|
EditorGUI.PropertyField(rect, xyzPivotPointPosition, GUIContent.none);
|
|
}
|
|
}
|
|
}
|
|
|
|
void DrawPlaneData(int index, SerializedProperty startPositionTransform, SerializedProperty startPosition, SerializedProperty normal)
|
|
{
|
|
using (new EditorGUIHelper.EditorGUILayoutBeginVertical("Box"))
|
|
{
|
|
using (new EditorGUIHelper.EditorGUILayoutBeginHorizontal())
|
|
{
|
|
using (new EditorGUIHelper.GUIBackgroundColor(startPositionTransform.objectReferenceValue == null ? Color.yellow : Color.white))
|
|
{
|
|
EditorGUILayout.LabelField("Plane #" + index, EditorStyles.boldLabel);
|
|
EditorGUI.PropertyField(GUILayoutUtility.GetLastRect(), startPositionTransform, new GUIContent(" "));
|
|
}
|
|
|
|
if (startPositionTransform.objectReferenceValue == null)
|
|
{
|
|
if (GUILayout.Button("Create", GUILayout.MaxWidth(70)))
|
|
{
|
|
startPositionTransform.objectReferenceValue = Utilities.CreateGeometricCutoutTargetObject(((AdvancedDissolveGeometricCutoutController)serializedObject.targetObject).transform, "Target (" + index + ")", startPosition.vector3Value, Quaternion.FromToRotation(Vector3.up, normal.vector3Value), Vector3.one, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (startPositionTransform.objectReferenceValue == null)
|
|
{
|
|
EditorGUILayout.LabelField(" Position");
|
|
Rect rect = GUILayoutUtility.GetLastRect();
|
|
rect.xMin += UnityEditor.EditorGUIUtility.labelWidth;
|
|
EditorGUI.PropertyField(rect, startPosition, GUIContent.none);
|
|
|
|
EditorGUILayout.LabelField(" Normal");
|
|
rect = GUILayoutUtility.GetLastRect();
|
|
rect.xMin += UnityEditor.EditorGUIUtility.labelWidth;
|
|
|
|
using (new EditorGUIHelper.GUIBackgroundColor(normal.vector3Value.magnitude == 0 ? Color.red : Color.white))
|
|
{
|
|
EditorGUI.PropertyField(rect, normal, GUIContent.none);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void DrawSphereData(int index, SerializedProperty startPositionTransform, SerializedProperty startPosition, SerializedProperty radius)
|
|
{
|
|
using (new EditorGUIHelper.EditorGUILayoutBeginVertical("Box"))
|
|
{
|
|
using (new EditorGUIHelper.EditorGUILayoutBeginHorizontal())
|
|
{
|
|
using (new EditorGUIHelper.GUIBackgroundColor(startPositionTransform.objectReferenceValue == null ? Color.yellow : Color.white))
|
|
{
|
|
EditorGUILayout.LabelField("Sphere #" + index, EditorStyles.boldLabel);
|
|
EditorGUI.PropertyField(GUILayoutUtility.GetLastRect(), startPositionTransform, new GUIContent(" "));
|
|
}
|
|
|
|
if (startPositionTransform.objectReferenceValue == null)
|
|
{
|
|
if (GUILayout.Button("Create", GUILayout.MaxWidth(70)))
|
|
{
|
|
startPositionTransform.objectReferenceValue = Utilities.CreateGeometricCutoutTargetObject(((AdvancedDissolveGeometricCutoutController)serializedObject.targetObject).transform, "Target (" + index + ")", startPosition.vector3Value, Quaternion.identity, Vector3.one, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (startPositionTransform.objectReferenceValue == null)
|
|
{
|
|
EditorGUILayout.LabelField(" Position");
|
|
Rect rect = GUILayoutUtility.GetLastRect();
|
|
rect.xMin += UnityEditor.EditorGUIUtility.labelWidth;
|
|
EditorGUI.PropertyField(rect, startPosition, GUIContent.none);
|
|
}
|
|
|
|
EditorGUILayout.PropertyField(radius, new GUIContent(" Radius"));
|
|
}
|
|
}
|
|
|
|
void DrawCubeData(int index, SerializedProperty startPositionTransform, SerializedProperty startPosition, SerializedProperty rotation, SerializedProperty size)
|
|
{
|
|
using (new EditorGUIHelper.EditorGUILayoutBeginVertical("Box"))
|
|
{
|
|
using (new EditorGUIHelper.EditorGUILayoutBeginHorizontal())
|
|
{
|
|
using (new EditorGUIHelper.GUIBackgroundColor(startPositionTransform.objectReferenceValue == null ? Color.yellow : Color.white))
|
|
{
|
|
EditorGUILayout.LabelField("Cube #" + index, EditorStyles.boldLabel);
|
|
EditorGUI.PropertyField(GUILayoutUtility.GetLastRect(), startPositionTransform, new GUIContent(" "));
|
|
}
|
|
|
|
if (startPositionTransform.objectReferenceValue == null)
|
|
{
|
|
if (GUILayout.Button("Create", GUILayout.MaxWidth(70)))
|
|
{
|
|
startPositionTransform.objectReferenceValue = Utilities.CreateGeometricCutoutTargetObject(((AdvancedDissolveGeometricCutoutController)serializedObject.targetObject).transform, "Target (" + index + ")", startPosition.vector3Value, Quaternion.Euler(rotation.vector3Value), size.vector3Value, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (startPositionTransform.objectReferenceValue == null)
|
|
{
|
|
EditorGUILayout.LabelField(" Position");
|
|
Rect rect = GUILayoutUtility.GetLastRect();
|
|
rect.xMin += UnityEditor.EditorGUIUtility.labelWidth;
|
|
EditorGUI.PropertyField(rect, startPosition, GUIContent.none);
|
|
|
|
EditorGUILayout.LabelField(" Rotation");
|
|
rect = GUILayoutUtility.GetLastRect();
|
|
rect.xMin += UnityEditor.EditorGUIUtility.labelWidth;
|
|
EditorGUI.PropertyField(rect, rotation, GUIContent.none);
|
|
|
|
EditorGUILayout.LabelField(" Size");
|
|
rect = GUILayoutUtility.GetLastRect();
|
|
rect.xMin += UnityEditor.EditorGUIUtility.labelWidth;
|
|
EditorGUI.PropertyField(rect, size, GUIContent.none);
|
|
}
|
|
}
|
|
}
|
|
|
|
void DrawCapsuleData(int index, SerializedProperty startPositionTransform, SerializedProperty endPositionTransform, SerializedProperty startPosition, SerializedProperty endPosition, SerializedProperty radius)
|
|
{
|
|
using (new EditorGUIHelper.EditorGUILayoutBeginVertical("Box"))
|
|
{
|
|
EditorGUILayout.LabelField("Capsule #" + index, EditorStyles.boldLabel);
|
|
|
|
using (new EditorGUIHelper.EditorGUILayoutBeginHorizontal())
|
|
{
|
|
using (new EditorGUIHelper.GUIBackgroundColor(startPositionTransform.objectReferenceValue == null ? Color.yellow : Color.white))
|
|
{
|
|
EditorGUILayout.PropertyField(startPositionTransform, new GUIContent(" Start Point"));
|
|
}
|
|
|
|
if (startPositionTransform.objectReferenceValue == null)
|
|
{
|
|
if (GUILayout.Button("Create", GUILayout.MaxWidth(70)))
|
|
{
|
|
startPositionTransform.objectReferenceValue = Utilities.CreateGeometricCutoutTargetObject(((AdvancedDissolveGeometricCutoutController)serializedObject.targetObject).transform, "Target (" + index + ") Start", startPosition.vector3Value, Quaternion.identity, Vector3.one, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (startPositionTransform.objectReferenceValue == null)
|
|
{
|
|
EditorGUILayout.LabelField(" Position");
|
|
Rect rect = GUILayoutUtility.GetLastRect();
|
|
rect.xMin += UnityEditor.EditorGUIUtility.labelWidth;
|
|
EditorGUI.PropertyField(rect, startPosition, GUIContent.none);
|
|
}
|
|
|
|
|
|
using (new EditorGUIHelper.EditorGUILayoutBeginHorizontal())
|
|
{
|
|
using (new EditorGUIHelper.GUIBackgroundColor(endPositionTransform.objectReferenceValue == null ? Color.yellow : Color.white))
|
|
{
|
|
EditorGUILayout.PropertyField(endPositionTransform, new GUIContent(" End Point"));
|
|
}
|
|
|
|
if (endPositionTransform.objectReferenceValue == null)
|
|
{
|
|
if (GUILayout.Button("Create", GUILayout.MaxWidth(70)))
|
|
{
|
|
endPositionTransform.objectReferenceValue = Utilities.CreateGeometricCutoutTargetObject(((AdvancedDissolveGeometricCutoutController)serializedObject.targetObject).transform, "Target (" + index + ") End", endPosition.vector3Value, Quaternion.identity, Vector3.one, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (endPositionTransform.objectReferenceValue == null)
|
|
{
|
|
EditorGUILayout.LabelField(" Position");
|
|
Rect rect = GUILayoutUtility.GetLastRect();
|
|
rect.xMin += UnityEditor.EditorGUIUtility.labelWidth;
|
|
EditorGUI.PropertyField(rect, endPosition, GUIContent.none);
|
|
}
|
|
|
|
EditorGUILayout.PropertyField(radius, new GUIContent(" Radius"));
|
|
}
|
|
}
|
|
|
|
void DrawConeSmoothData(int index, SerializedProperty startPositionTransform, SerializedProperty endPositionTransform, SerializedProperty startPosition, SerializedProperty endPosition, SerializedProperty radius)
|
|
{
|
|
using (new EditorGUIHelper.EditorGUILayoutBeginVertical("Box"))
|
|
{
|
|
EditorGUILayout.LabelField("Cone #" + index, EditorStyles.boldLabel);
|
|
|
|
using (new EditorGUIHelper.EditorGUILayoutBeginHorizontal())
|
|
{
|
|
using (new EditorGUIHelper.GUIBackgroundColor(startPositionTransform.objectReferenceValue == null ? Color.yellow : Color.white))
|
|
{
|
|
EditorGUILayout.PropertyField(startPositionTransform, new GUIContent(" Start Point"));
|
|
}
|
|
|
|
if (startPositionTransform.objectReferenceValue == null)
|
|
{
|
|
if (GUILayout.Button("Create", GUILayout.MaxWidth(70)))
|
|
{
|
|
startPositionTransform.objectReferenceValue = Utilities.CreateGeometricCutoutTargetObject(((AdvancedDissolveGeometricCutoutController)serializedObject.targetObject).transform, "Target (" + index + ") Start", startPosition.vector3Value, Quaternion.identity, Vector3.one, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (startPositionTransform.objectReferenceValue == null)
|
|
{
|
|
EditorGUILayout.LabelField(" Position");
|
|
Rect rect = GUILayoutUtility.GetLastRect();
|
|
rect.xMin += UnityEditor.EditorGUIUtility.labelWidth;
|
|
EditorGUI.PropertyField(rect, startPosition, GUIContent.none);
|
|
}
|
|
|
|
|
|
using (new EditorGUIHelper.EditorGUILayoutBeginHorizontal())
|
|
{
|
|
using (new EditorGUIHelper.GUIBackgroundColor(endPositionTransform.objectReferenceValue == null ? Color.yellow : Color.white))
|
|
{
|
|
EditorGUILayout.PropertyField(endPositionTransform, new GUIContent(" End Point"));
|
|
}
|
|
|
|
if (endPositionTransform.objectReferenceValue == null)
|
|
{
|
|
if (GUILayout.Button("Create", GUILayout.MaxWidth(70)))
|
|
{
|
|
endPositionTransform.objectReferenceValue = Utilities.CreateGeometricCutoutTargetObject(((AdvancedDissolveGeometricCutoutController)serializedObject.targetObject).transform, "Target (" + index + ") End", endPosition.vector3Value, Quaternion.identity, Vector3.one, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (endPositionTransform.objectReferenceValue == null)
|
|
{
|
|
EditorGUILayout.LabelField(" Position");
|
|
Rect rect = GUILayoutUtility.GetLastRect();
|
|
rect.xMin += UnityEditor.EditorGUIUtility.labelWidth;
|
|
EditorGUI.PropertyField(rect, endPosition, GUIContent.none);
|
|
}
|
|
|
|
EditorGUILayout.PropertyField(radius, new GUIContent(" Radius"));
|
|
}
|
|
}
|
|
}
|
|
} |