using UnityEngine; using System.Collections; #if UNITY_EDITOR using UnityEditor; [CanEditMultipleObjects] [CustomEditor (typeof(pickUpObject))] public class pickUpObjectEditor : Editor { SerializedProperty amount; SerializedProperty useAmountPerUnit; SerializedProperty amountPerUnit; SerializedProperty useDurability; SerializedProperty maxDurabilityAmount; SerializedProperty durabilityAmount; SerializedProperty playerTag; SerializedProperty friendTag; SerializedProperty enemyTag; SerializedProperty pickUpSound; SerializedProperty pickUpSoundAudioElement; SerializedProperty staticPickUp; SerializedProperty moveToPlayerOnTrigger; SerializedProperty pickUpOption; SerializedProperty mainPickupType; SerializedProperty canBeExamined; SerializedProperty examiningObject; SerializedProperty ignoreExamineObjectBeforeStoreEnabled; SerializedProperty showPickupInfoOnTaken; SerializedProperty usePickupIconOnScreen; SerializedProperty pickupIconGeneralName; SerializedProperty pickupIconName; SerializedProperty usePickupIconOnTaken; SerializedProperty pickupIcon; SerializedProperty usableByAnything; SerializedProperty usableByPlayer; SerializedProperty usableByVehicles; SerializedProperty usableByCharacters; SerializedProperty useEventOnTaken; SerializedProperty eventOnTaken; SerializedProperty useEventOnRemainingAmount; SerializedProperty eventOnRemainingAmount; SerializedProperty sendPickupFinder; SerializedProperty sendPickupFinderEvent; SerializedProperty useRemoteEvent; SerializedProperty remoteEventList; SerializedProperty inventoryObjectManager; SerializedProperty deviceStringActionManager; SerializedProperty mainSphereCollider; SerializedProperty mainCollider; SerializedProperty mainRigidbody; SerializedProperty mainPickupManagerName; SerializedProperty showDebugPrint; pickUpObject manager; void OnEnable () { amount = serializedObject.FindProperty ("amount"); useAmountPerUnit = serializedObject.FindProperty ("useAmountPerUnit"); amountPerUnit = serializedObject.FindProperty ("amountPerUnit"); useDurability = serializedObject.FindProperty ("useDurability"); maxDurabilityAmount = serializedObject.FindProperty ("maxDurabilityAmount"); durabilityAmount = serializedObject.FindProperty ("durabilityAmount"); pickUpSound = serializedObject.FindProperty ("pickUpSound"); pickUpSoundAudioElement = serializedObject.FindProperty ("pickUpSoundAudioElement"); staticPickUp = serializedObject.FindProperty ("staticPickUp"); moveToPlayerOnTrigger = serializedObject.FindProperty ("moveToPlayerOnTrigger"); pickUpOption = serializedObject.FindProperty ("pickUpOption"); mainPickupType = serializedObject.FindProperty ("mainPickupType"); canBeExamined = serializedObject.FindProperty ("canBeExamined"); examiningObject = serializedObject.FindProperty ("examiningObject"); ignoreExamineObjectBeforeStoreEnabled = serializedObject.FindProperty ("ignoreExamineObjectBeforeStoreEnabled"); showPickupInfoOnTaken = serializedObject.FindProperty ("showPickupInfoOnTaken"); usePickupIconOnScreen = serializedObject.FindProperty ("usePickupIconOnScreen"); pickupIconGeneralName = serializedObject.FindProperty ("pickupIconGeneralName"); pickupIconName = serializedObject.FindProperty ("pickupIconName"); usePickupIconOnTaken = serializedObject.FindProperty ("usePickupIconOnTaken"); pickupIcon = serializedObject.FindProperty ("pickupIcon"); usableByAnything = serializedObject.FindProperty ("usableByAnything"); usableByPlayer = serializedObject.FindProperty ("usableByPlayer"); usableByVehicles = serializedObject.FindProperty ("usableByVehicles"); usableByCharacters = serializedObject.FindProperty ("usableByCharacters"); useEventOnTaken = serializedObject.FindProperty ("useEventOnTaken"); eventOnTaken = serializedObject.FindProperty ("eventOnTaken"); useEventOnRemainingAmount = serializedObject.FindProperty ("useEventOnRemainingAmount"); eventOnRemainingAmount = serializedObject.FindProperty ("eventOnRemainingAmount"); sendPickupFinder = serializedObject.FindProperty ("sendPickupFinder"); sendPickupFinderEvent = serializedObject.FindProperty ("sendPickupFinderEvent"); useRemoteEvent = serializedObject.FindProperty ("useRemoteEvent"); remoteEventList = serializedObject.FindProperty ("remoteEventList"); inventoryObjectManager = serializedObject.FindProperty ("inventoryObjectManager"); deviceStringActionManager = serializedObject.FindProperty ("deviceStringActionManager"); mainSphereCollider = serializedObject.FindProperty ("mainSphereCollider"); mainCollider = serializedObject.FindProperty ("mainCollider"); mainRigidbody = serializedObject.FindProperty ("mainRigidbody"); mainPickupManagerName = serializedObject.FindProperty ("mainPickupManagerName"); playerTag = serializedObject.FindProperty ("playerTag"); friendTag = serializedObject.FindProperty ("friendTag"); enemyTag = serializedObject.FindProperty ("enemyTag"); showDebugPrint = serializedObject.FindProperty ("showDebugPrint"); manager = (pickUpObject)target; } public override void OnInspectorGUI () { GUILayout.BeginVertical (GUILayout.Height (30)); EditorGUILayout.Space (); GUILayout.BeginVertical ("Main Settings", "window"); EditorGUILayout.PropertyField (amount); EditorGUILayout.PropertyField (useAmountPerUnit); if (useAmountPerUnit.boolValue) { EditorGUILayout.PropertyField (amountPerUnit); } EditorGUILayout.PropertyField (pickUpSound); EditorGUILayout.PropertyField (pickUpSoundAudioElement); EditorGUILayout.PropertyField (staticPickUp); EditorGUILayout.PropertyField (moveToPlayerOnTrigger); EditorGUILayout.PropertyField (pickUpOption); EditorGUILayout.PropertyField (mainPickupType); EditorGUILayout.PropertyField (mainPickupManagerName); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Durability Settings", "window"); EditorGUILayout.PropertyField (useDurability); if (useDurability.boolValue) { EditorGUILayout.PropertyField (maxDurabilityAmount); EditorGUILayout.PropertyField (durabilityAmount); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Examine Settings", "window"); EditorGUILayout.PropertyField (canBeExamined); if (canBeExamined.boolValue) { GUILayout.Label ("Examining Object\t" + examiningObject.boolValue); } EditorGUILayout.PropertyField (ignoreExamineObjectBeforeStoreEnabled); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Icon Settings", "window"); EditorGUILayout.PropertyField (showPickupInfoOnTaken); EditorGUILayout.PropertyField (usePickupIconOnScreen); if (usePickupIconOnScreen.boolValue) { EditorGUILayout.PropertyField (pickupIconGeneralName); EditorGUILayout.PropertyField (pickupIconName); } EditorGUILayout.PropertyField (usePickupIconOnTaken); if (usePickupIconOnTaken.boolValue) { EditorGUILayout.PropertyField (pickupIcon); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Pick Up Used By", "window"); EditorGUILayout.PropertyField (usableByAnything); if (!usableByAnything.boolValue) { EditorGUILayout.PropertyField (usableByPlayer); EditorGUILayout.PropertyField (usableByVehicles); EditorGUILayout.PropertyField (usableByCharacters); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (playerTag); EditorGUILayout.PropertyField (friendTag); EditorGUILayout.PropertyField (enemyTag); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Pick Up Taken Event Settings", "window"); EditorGUILayout.PropertyField (useEventOnTaken); if (useEventOnTaken.boolValue) { EditorGUILayout.PropertyField (eventOnTaken); EditorGUILayout.PropertyField (useEventOnRemainingAmount); if (useEventOnRemainingAmount.boolValue) { EditorGUILayout.PropertyField (eventOnRemainingAmount); } } EditorGUILayout.Space (); EditorGUILayout.PropertyField (sendPickupFinder); if (sendPickupFinder.boolValue) { EditorGUILayout.PropertyField (sendPickupFinderEvent); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (useRemoteEvent); if (useRemoteEvent.boolValue) { showSimpleList (remoteEventList); } EditorGUILayout.Space (); GUILayout.EndVertical (); EditorGUILayout.Space (); if (GUILayout.Button ("Update Pickup Components")) { manager.assignPickupElementsOnEditor (); } EditorGUILayout.Space (); GUILayout.BeginVertical ("Debug", "window"); EditorGUILayout.PropertyField (showDebugPrint); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Object Components", "window"); EditorGUILayout.PropertyField (inventoryObjectManager); EditorGUILayout.PropertyField (deviceStringActionManager); EditorGUILayout.PropertyField (mainSphereCollider); EditorGUILayout.PropertyField (mainCollider); EditorGUILayout.PropertyField (mainRigidbody); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.EndVertical (); if (GUI.changed) { serializedObject.ApplyModifiedProperties (); } } 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