292 lines
12 KiB
C#
292 lines
12 KiB
C#
using UnityEngine;
|
|
using System.Collections;
|
|
using System.Security.AccessControl;
|
|
|
|
|
|
#if UNITY_EDITOR
|
|
using UnityEditor;
|
|
|
|
[CustomEditor (typeof (putObjectSystem))]
|
|
public class putObjectSystemEditor : Editor
|
|
{
|
|
SerializedProperty objectName;
|
|
|
|
SerializedProperty putObjectSystemEnabled;
|
|
SerializedProperty useCertainObjectToPlace;
|
|
SerializedProperty certainObjectToPlace;
|
|
SerializedProperty objectNameToPlace;
|
|
|
|
SerializedProperty useObjectNameListToPlace;
|
|
|
|
SerializedProperty objectNameListToPlace;
|
|
|
|
SerializedProperty placeToPutObject;
|
|
SerializedProperty placeObjectPositionSpeed;
|
|
SerializedProperty placeObjectRotationSpeed;
|
|
SerializedProperty disableObjectOnceIsPlaced;
|
|
SerializedProperty useRotationLimit;
|
|
SerializedProperty maxUpRotationAngle;
|
|
SerializedProperty maxForwardRotationAngle;
|
|
SerializedProperty usePositionLimit;
|
|
SerializedProperty maxPositionDistance;
|
|
SerializedProperty needsOtherObjectPlacedBefore;
|
|
SerializedProperty numberOfObjectsToPlaceBefore;
|
|
SerializedProperty waitToObjectPlacedToCallEvent;
|
|
SerializedProperty objectPlacedEvent;
|
|
SerializedProperty objectRemovedEvent;
|
|
SerializedProperty useLimitToCheckIfObjectRemoved;
|
|
SerializedProperty minDistanceToRemoveObject;
|
|
SerializedProperty useSoundEffectOnObjectPlaced;
|
|
SerializedProperty soundEffectOnObjectPlaced;
|
|
SerializedProperty onObjectPlacedAudioElement;
|
|
SerializedProperty useSoundEffectOnObjectRemoved;
|
|
SerializedProperty soundEffectOnObjectRemoved;
|
|
SerializedProperty onObjectRemovedAudioElement;
|
|
|
|
SerializedProperty destroyObjectOncePlaced;
|
|
|
|
SerializedProperty mainTrigger;
|
|
SerializedProperty mainAudioSource;
|
|
SerializedProperty objectInsideTrigger;
|
|
SerializedProperty objectPlaced;
|
|
SerializedProperty currentObjectPlaced;
|
|
SerializedProperty currentObjectToPlaceSystem;
|
|
SerializedProperty checkingIfObjectIsRemoved;
|
|
|
|
SerializedProperty minWaitToPutSameObjectAgain;
|
|
SerializedProperty updateTriggerStateAfterWait;
|
|
|
|
SerializedProperty ignoreTriggerEnterExitFunctionsEnabled;
|
|
|
|
SerializedProperty objectAdjustedToPlacePosition;
|
|
|
|
void OnEnable ()
|
|
{
|
|
objectName = serializedObject.FindProperty ("objectName");
|
|
|
|
putObjectSystemEnabled = serializedObject.FindProperty ("putObjectSystemEnabled");
|
|
useCertainObjectToPlace = serializedObject.FindProperty ("useCertainObjectToPlace");
|
|
certainObjectToPlace = serializedObject.FindProperty ("certainObjectToPlace");
|
|
objectNameToPlace = serializedObject.FindProperty ("objectNameToPlace");
|
|
|
|
useObjectNameListToPlace = serializedObject.FindProperty ("useObjectNameListToPlace");
|
|
|
|
objectNameListToPlace = serializedObject.FindProperty ("objectNameListToPlace");
|
|
|
|
placeToPutObject = serializedObject.FindProperty ("placeToPutObject");
|
|
placeObjectPositionSpeed = serializedObject.FindProperty ("placeObjectPositionSpeed");
|
|
placeObjectRotationSpeed = serializedObject.FindProperty ("placeObjectRotationSpeed");
|
|
disableObjectOnceIsPlaced = serializedObject.FindProperty ("disableObjectOnceIsPlaced");
|
|
useRotationLimit = serializedObject.FindProperty ("useRotationLimit");
|
|
maxUpRotationAngle = serializedObject.FindProperty ("maxUpRotationAngle");
|
|
maxForwardRotationAngle = serializedObject.FindProperty ("maxForwardRotationAngle");
|
|
usePositionLimit = serializedObject.FindProperty ("usePositionLimit");
|
|
maxPositionDistance = serializedObject.FindProperty ("maxPositionDistance");
|
|
needsOtherObjectPlacedBefore = serializedObject.FindProperty ("needsOtherObjectPlacedBefore");
|
|
numberOfObjectsToPlaceBefore = serializedObject.FindProperty ("numberOfObjectsToPlaceBefore");
|
|
waitToObjectPlacedToCallEvent = serializedObject.FindProperty ("waitToObjectPlacedToCallEvent");
|
|
objectPlacedEvent = serializedObject.FindProperty ("objectPlacedEvent");
|
|
objectRemovedEvent = serializedObject.FindProperty ("objectRemovedEvent");
|
|
useLimitToCheckIfObjectRemoved = serializedObject.FindProperty ("useLimitToCheckIfObjectRemoved");
|
|
minDistanceToRemoveObject = serializedObject.FindProperty ("minDistanceToRemoveObject");
|
|
useSoundEffectOnObjectPlaced = serializedObject.FindProperty ("useSoundEffectOnObjectPlaced");
|
|
soundEffectOnObjectPlaced = serializedObject.FindProperty ("soundEffectOnObjectPlaced");
|
|
onObjectPlacedAudioElement = serializedObject.FindProperty ("onObjectPlacedAudioElement");
|
|
useSoundEffectOnObjectRemoved = serializedObject.FindProperty ("useSoundEffectOnObjectRemoved");
|
|
soundEffectOnObjectRemoved = serializedObject.FindProperty ("soundEffectOnObjectRemoved");
|
|
onObjectRemovedAudioElement = serializedObject.FindProperty ("onObjectRemovedAudioElement");
|
|
|
|
destroyObjectOncePlaced = serializedObject.FindProperty ("destroyObjectOncePlaced");
|
|
|
|
mainTrigger = serializedObject.FindProperty ("mainTrigger");
|
|
mainAudioSource = serializedObject.FindProperty ("mainAudioSource");
|
|
objectInsideTrigger = serializedObject.FindProperty ("objectInsideTrigger");
|
|
objectPlaced = serializedObject.FindProperty ("objectPlaced");
|
|
currentObjectPlaced = serializedObject.FindProperty ("currentObjectPlaced");
|
|
currentObjectToPlaceSystem = serializedObject.FindProperty ("currentObjectToPlaceSystem");
|
|
checkingIfObjectIsRemoved = serializedObject.FindProperty ("checkingIfObjectIsRemoved");
|
|
|
|
minWaitToPutSameObjectAgain = serializedObject.FindProperty ("minWaitToPutSameObjectAgain");
|
|
updateTriggerStateAfterWait = serializedObject.FindProperty ("updateTriggerStateAfterWait");
|
|
|
|
ignoreTriggerEnterExitFunctionsEnabled = serializedObject.FindProperty ("ignoreTriggerEnterExitFunctionsEnabled");
|
|
|
|
objectAdjustedToPlacePosition = serializedObject.FindProperty ("objectAdjustedToPlacePosition");
|
|
}
|
|
|
|
public override void OnInspectorGUI ()
|
|
{
|
|
GUILayout.BeginVertical (GUILayout.Height (30));
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Main Settings", "window");
|
|
EditorGUILayout.PropertyField (putObjectSystemEnabled);
|
|
EditorGUILayout.PropertyField (useCertainObjectToPlace);
|
|
if (useCertainObjectToPlace.boolValue) {
|
|
EditorGUILayout.PropertyField (certainObjectToPlace);
|
|
}
|
|
|
|
EditorGUILayout.PropertyField (objectName);
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
EditorGUILayout.PropertyField (useObjectNameListToPlace);
|
|
if (useObjectNameListToPlace.boolValue) {
|
|
showSimpleList (objectNameListToPlace);
|
|
} else {
|
|
EditorGUILayout.PropertyField (objectNameToPlace);
|
|
}
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
EditorGUILayout.PropertyField (placeToPutObject);
|
|
EditorGUILayout.PropertyField (placeObjectPositionSpeed);
|
|
EditorGUILayout.PropertyField (placeObjectRotationSpeed);
|
|
EditorGUILayout.PropertyField (disableObjectOnceIsPlaced);
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
EditorGUILayout.PropertyField (minWaitToPutSameObjectAgain);
|
|
EditorGUILayout.PropertyField (updateTriggerStateAfterWait);
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
EditorGUILayout.PropertyField (destroyObjectOncePlaced);
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
EditorGUILayout.PropertyField (ignoreTriggerEnterExitFunctionsEnabled);
|
|
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Limit Settings", "window");
|
|
EditorGUILayout.PropertyField (useRotationLimit);
|
|
if (useRotationLimit.boolValue) {
|
|
EditorGUILayout.PropertyField (maxUpRotationAngle);
|
|
EditorGUILayout.PropertyField (maxForwardRotationAngle);
|
|
}
|
|
EditorGUILayout.PropertyField (usePositionLimit);
|
|
if (usePositionLimit.boolValue) {
|
|
EditorGUILayout.PropertyField (maxPositionDistance);
|
|
}
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Objects To Place Before Settings", "window");
|
|
EditorGUILayout.PropertyField (needsOtherObjectPlacedBefore);
|
|
if (needsOtherObjectPlacedBefore.boolValue) {
|
|
EditorGUILayout.PropertyField (numberOfObjectsToPlaceBefore);
|
|
}
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Event Settings", "window");
|
|
EditorGUILayout.PropertyField (waitToObjectPlacedToCallEvent);
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
EditorGUILayout.PropertyField (objectPlacedEvent);
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
EditorGUILayout.PropertyField (objectRemovedEvent);
|
|
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Remove Object Settings", "window");
|
|
EditorGUILayout.PropertyField (useLimitToCheckIfObjectRemoved);
|
|
if (useLimitToCheckIfObjectRemoved.boolValue) {
|
|
EditorGUILayout.PropertyField (minDistanceToRemoveObject);
|
|
}
|
|
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Sounds Settings", "window");
|
|
EditorGUILayout.PropertyField (useSoundEffectOnObjectPlaced);
|
|
if (useSoundEffectOnObjectPlaced.boolValue) {
|
|
EditorGUILayout.PropertyField (soundEffectOnObjectPlaced);
|
|
EditorGUILayout.PropertyField (onObjectPlacedAudioElement);
|
|
}
|
|
EditorGUILayout.PropertyField (useSoundEffectOnObjectRemoved);
|
|
if (useSoundEffectOnObjectRemoved.boolValue) {
|
|
EditorGUILayout.PropertyField (soundEffectOnObjectRemoved);
|
|
EditorGUILayout.PropertyField (onObjectRemovedAudioElement);
|
|
}
|
|
EditorGUILayout.PropertyField (mainAudioSource);
|
|
EditorGUILayout.PropertyField (mainTrigger);
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Current State", "window");
|
|
EditorGUILayout.PropertyField (objectInsideTrigger);
|
|
EditorGUILayout.PropertyField (objectPlaced);
|
|
EditorGUILayout.PropertyField (currentObjectPlaced);
|
|
EditorGUILayout.PropertyField (currentObjectToPlaceSystem);
|
|
EditorGUILayout.PropertyField (checkingIfObjectIsRemoved);
|
|
EditorGUILayout.PropertyField (objectAdjustedToPlacePosition);
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.EndVertical ();
|
|
if (GUI.changed) {
|
|
serializedObject.ApplyModifiedProperties ();
|
|
EditorUtility.SetDirty (target);
|
|
}
|
|
}
|
|
|
|
void showSimpleList (SerializedProperty list)
|
|
{
|
|
EditorGUILayout.Space ();
|
|
|
|
if (GUILayout.Button ("Show/Hide " + list.displayName)) {
|
|
list.isExpanded = !list.isExpanded;
|
|
}
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
if (list.isExpanded) {
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.Label ("Number Of Elements: \t" + list.arraySize);
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginHorizontal ();
|
|
if (GUILayout.Button ("Add")) {
|
|
list.arraySize++;
|
|
}
|
|
if (GUILayout.Button ("Clear")) {
|
|
list.arraySize = 0;
|
|
}
|
|
GUILayout.EndHorizontal ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
for (int i = 0; i < list.arraySize; i++) {
|
|
GUILayout.BeginHorizontal ();
|
|
if (i < list.arraySize && i >= 0) {
|
|
EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), new GUIContent ("", null, ""), false);
|
|
}
|
|
GUILayout.BeginHorizontal ();
|
|
if (GUILayout.Button ("x")) {
|
|
list.DeleteArrayElementAtIndex (i);
|
|
return;
|
|
}
|
|
GUILayout.EndHorizontal ();
|
|
GUILayout.EndHorizontal ();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endif |