private ConstantID[] GetAllIDScriptsInHierarchy() { ConstantID[] idScripts = null; if (UnityVersionHandler.IsPrefabEditing(gameObject)) { GameObject rootObject = (transform.root != null) ? transform.root.gameObject : gameObject; idScripts = rootObject.GetComponentsInChildren <ConstantID>(); } else { idScripts = FindObjectsOfType(typeof(ConstantID)) as ConstantID[]; } return(idScripts); }
protected void Update() { if (gameObject.activeInHierarchy && !Application.isPlaying) { if (!UnityVersionHandler.IsPrefabFile(gameObject) || UnityVersionHandler.IsPrefabEditing(gameObject)) { if (constantID == 0) { SetNewID(); } if (isNewInstance) { isNewInstance = false; CheckForDuplicateIDs(); } } } }
private void SetNewID(bool ignoreOthers = false) { // Share ID if another ID script already exists on object ConstantID[] idScripts = GetComponents <ConstantID>(); foreach (ConstantID idScript in idScripts) { if (idScript != this && idScript.constantID != 0) { if (ignoreOthers && idScript.constantID == constantID) { continue; } constantID = idScript.constantID; UnityVersionHandler.CustomSetDirty(this, true); return; } } if (UnityVersionHandler.IsPrefabFile(gameObject) && UnityVersionHandler.IsPrefabEditing(gameObject) && !retainInPrefab) { // Avoid setting ID to a prefab that shouldn't have one return; } constantID = GetInstanceID(); if (constantID < 0) { constantID *= -1; } UnityVersionHandler.CustomSetDirty(this, true); ACDebug.Log("Set new ID for " + this.GetType().ToString() + " to " + gameObject.name + ": " + constantID, gameObject); }
public void ShowGUI() { EditorGUILayout.BeginVertical("Button"); saveController = EditorGUILayout.ToggleLeft("Save change in Controller?", saveController); setDefaultParameterValues = EditorGUILayout.ToggleLeft("Set default parameters?", setDefaultParameterValues); if (setDefaultParameterValues) { if (!UnityVersionHandler.IsPrefabEditing(gameObject) && !UnityVersionHandler.ObjectIsInActiveScene(gameObject)) { EditorGUILayout.HelpBox("To view/edit parameters, the GameObject must be active in the scene.", MessageType.Warning); } else if (Animator.parameters != null) { GUILayout.Box(string.Empty, GUILayout.ExpandWidth(true), GUILayout.Height(1)); int numParameters = Animator.parameters.Length; if (numParameters < defaultAnimParameters.Count) { defaultAnimParameters.RemoveRange(numParameters, defaultAnimParameters.Count - numParameters); } else if (numParameters > defaultAnimParameters.Count) { if (numParameters > defaultAnimParameters.Capacity) { defaultAnimParameters.Capacity = numParameters; } for (int i = defaultAnimParameters.Count; i < numParameters; i++) { defaultAnimParameters.Add(new DefaultAnimParameter()); } } for (int i = 0; i < Animator.parameters.Length; i++) { AnimatorControllerParameter parameter = Animator.parameters[i]; switch (parameter.type) { case AnimatorControllerParameterType.Bool: bool boolValue = (defaultAnimParameters[i].intValue == 1); boolValue = EditorGUILayout.Toggle(parameter.name, boolValue); defaultAnimParameters[i] = new DefaultAnimParameter((boolValue) ? 1 : 0); break; case AnimatorControllerParameterType.Float: float floatValue = EditorGUILayout.FloatField(parameter.name, defaultAnimParameters[i].floatValue); defaultAnimParameters[i] = new DefaultAnimParameter(floatValue); break; case AnimatorControllerParameterType.Int: int intValue = EditorGUILayout.IntField(parameter.name, defaultAnimParameters[i].intValue); defaultAnimParameters[i] = new DefaultAnimParameter(intValue); break; } } } } EditorGUILayout.EndVertical(); }