Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*\
- | |
- | Made by Jason Helman © Jason Tech And Games |
- | I do not condone the use of my work without my permission |
- | |
- \*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
- #if UNITY_EDITOR
- using UnityEditor;
- using UnityEngine;
- [CustomEditor(typeof(BulletBehaviourObject), true)]
- public class BulletBehaviourObjectCustomEditor : Editor
- {
- private static readonly string[] variableNames = {"sprite", "size", "color", "particleTrail"};
- private BulletBehaviourObject bulletBehaviourObjectTarget;
- private BulletBehaviourObject previousBulletBehaviourObjectOverride;
- private bool previousUseOverrideState = false;
- private bool useOverrides = false;
- private void OnEnable()
- {
- bulletBehaviourObjectTarget = (BulletBehaviourObject) target;
- previousBulletBehaviourObjectOverride = bulletBehaviourObjectTarget.previousBulletBehaviourObjectOverride;
- previousUseOverrideState = bulletBehaviourObjectTarget.previousUseOverrideState;
- useOverrides = bulletBehaviourObjectTarget.useOverrides;
- }
- public override void OnInspectorGUI()
- {
- serializedObject.Update();
- bulletBehaviourObjectTarget.Store(true);
- EditorGUILayout.PropertyField(serializedObject.FindProperty("useOtherBulletBehaviourObject"));
- if (bulletBehaviourObjectTarget.useOtherBulletBehaviourObject)
- {
- EditorGUILayout.PropertyField(serializedObject.FindProperty("bulletBehaviourObjectOverride"));
- useOverrides = EditorGUILayout.Toggle("Use Overrides", useOverrides);
- if (useOverrides)
- {
- Rect rect = EditorGUILayout.BeginVertical();
- GUI.Box(rect, "");
- for (int i = 0; i < variableNames.Length; i++)
- EditorGUILayout.PropertyField(serializedObject.FindProperty(variableNames[i]));
- EditorGUILayout.EndVertical();
- }
- }
- if (previousUseOverrideState && !bulletBehaviourObjectTarget.useOtherBulletBehaviourObject) // was Overriding -> not Overriding
- {
- bulletBehaviourObjectTarget.Load();
- serializedObject.ApplyModifiedProperties();
- }
- else if (!previousUseOverrideState && bulletBehaviourObjectTarget.useOtherBulletBehaviourObject) // wasn't Overriding -> Overriding
- {
- bulletBehaviourObjectTarget.Store();
- if (bulletBehaviourObjectTarget.bulletBehaviourObjectOverride != null)
- {
- bulletBehaviourObjectTarget.sprite = bulletBehaviourObjectTarget.bulletBehaviourObjectOverride.sprite;
- bulletBehaviourObjectTarget.size = bulletBehaviourObjectTarget.bulletBehaviourObjectOverride.size;
- bulletBehaviourObjectTarget.color = bulletBehaviourObjectTarget.bulletBehaviourObjectOverride.color;
- bulletBehaviourObjectTarget.particleTrail = bulletBehaviourObjectTarget.bulletBehaviourObjectOverride.particleTrail;
- }
- else
- bulletBehaviourObjectTarget.Load();
- serializedObject.ApplyModifiedProperties();
- }
- else if (bulletBehaviourObjectTarget.useOtherBulletBehaviourObject)
- {
- // issue is that if it is itself it needs to access the stored data
- // ^ fixed btw
- if (bulletBehaviourObjectTarget.bulletBehaviourObjectOverride != null && previousBulletBehaviourObjectOverride != bulletBehaviourObjectTarget.bulletBehaviourObjectOverride)
- {
- if (bulletBehaviourObjectTarget.bulletBehaviourObjectOverride == bulletBehaviourObjectTarget)
- bulletBehaviourObjectTarget.Load();
- else
- {
- bulletBehaviourObjectTarget.sprite = bulletBehaviourObjectTarget.bulletBehaviourObjectOverride.sprite;
- bulletBehaviourObjectTarget.size = bulletBehaviourObjectTarget.bulletBehaviourObjectOverride.size;
- bulletBehaviourObjectTarget.color = bulletBehaviourObjectTarget.bulletBehaviourObjectOverride.color;
- bulletBehaviourObjectTarget.particleTrail = bulletBehaviourObjectTarget.bulletBehaviourObjectOverride.particleTrail;
- }
- serializedObject.ApplyModifiedProperties();
- }
- // else if (bulletBehaviourObjectTarget.bulletBehaviourObjectOverride == null)
- // bulletBehaviourObjectTarget.Load();
- }
- using (new EditorGUI.DisabledScope(bulletBehaviourObjectTarget.useOtherBulletBehaviourObject))
- {
- if (bulletBehaviourObjectTarget.useOtherBulletBehaviourObject) // && bulletBehaviourObjectTarget.bulletBehaviourObjectOverride != null)
- {
- // if (bulletBehaviourObjectTarget.bulletBehaviourObjectOverride == null || bulletBehaviourObjectTarget.bulletBehaviourObjectOverride == bulletBehaviourObjectTarget)
- // overrideSerializedObject = bulletBehaviourObjectTarget.GetStoredValuesSerializedObject();
- SerializedObject overrideSerializedObject;
- if (bulletBehaviourObjectTarget.bulletBehaviourObjectOverride == null || bulletBehaviourObjectTarget.bulletBehaviourObjectOverride == bulletBehaviourObjectTarget)
- overrideSerializedObject = new SerializedObject(bulletBehaviourObjectTarget);
- else
- overrideSerializedObject = new SerializedObject(bulletBehaviourObjectTarget.bulletBehaviourObjectOverride);
- for (int i = 0; i < variableNames.Length; i++)
- EditorGUILayout.PropertyField(overrideSerializedObject.FindProperty(variableNames[i]));
- }
- else
- {
- for (int i = 0; i < variableNames.Length; i++)
- EditorGUILayout.PropertyField(serializedObject.FindProperty(variableNames[i]));
- }
- }
- previousBulletBehaviourObjectOverride = bulletBehaviourObjectTarget.bulletBehaviourObjectOverride;
- previousUseOverrideState = bulletBehaviourObjectTarget.useOtherBulletBehaviourObject;
- serializedObject.ApplyModifiedProperties();
- }
- private void OnDisable()
- {
- bulletBehaviourObjectTarget.previousBulletBehaviourObjectOverride = previousBulletBehaviourObjectOverride;
- bulletBehaviourObjectTarget.previousUseOverrideState = previousUseOverrideState;
- bulletBehaviourObjectTarget.useOverrides = useOverrides;
- }
- }
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement