public static void CopyLayer(StateLayer layer, StateLayer layerToCopy, bool copyStates, bool copySublayers) { #if UNITY_EDITOR if (layerToCopy == null) { return; } var layerSerialized = new UnityEditor.SerializedObject(layer); var parentReference = layerSerialized.FindProperty("parentReference").GetValue <UnityEngine.Object>(); var machineReference = layerSerialized.FindProperty("machineReference").GetValue <UnityEngine.Object>(); var stateReferences = layerSerialized.FindProperty("stateReferences").GetValues <UnityEngine.Object>(); var activeStateReferences = layerSerialized.FindProperty("activeStateReferences").GetValues <UnityEngine.Object>(); UnityEditorInternal.ComponentUtility.CopyComponent(layerToCopy); UnityEditorInternal.ComponentUtility.PasteComponentValues(layer); layerSerialized = new UnityEditor.SerializedObject(layer); layerSerialized.FindProperty("parentReference").SetValue(parentReference); layerSerialized.FindProperty("machineReference").SetValue(machineReference); layerSerialized.FindProperty("stateReferences").SetValues(stateReferences); layerSerialized.FindProperty("activeStateReferences").SetValues(activeStateReferences); for (int i = 0; i < stateReferences.Length; i++) { var stateReference = stateReferences[i]; var state = stateReference as State; var sublayer = stateReference as StateLayer; if (copyStates && state != null) { var stateToCopy = layerToCopy.GetState(state.GetType()) as State; if (stateToCopy != null) { CopyState(state, stateToCopy); } } if (copySublayers && sublayer != null) { var sublayerToCopy = layerToCopy.GetState(sublayer.GetType()) as StateLayer; if (sublayerToCopy != null) { CopyLayer(sublayer, sublayerToCopy, copyStates, copySublayers); } } } #endif }
public static List <State> GetState() { return(StateLayer.GetState()); }
public static void CopyLayer(StateLayer layer, StateLayer layerToCopy, bool copyStates, bool copySublayers) { #if UNITY_EDITOR if (layerToCopy == null) return; var layerSerialized = new UnityEditor.SerializedObject(layer); var parentReference = layerSerialized.FindProperty("parentReference").GetValue<UnityEngine.Object>(); var machineReference = layerSerialized.FindProperty("machineReference").GetValue<UnityEngine.Object>(); var stateReferences = layerSerialized.FindProperty("stateReferences").GetValues<UnityEngine.Object>(); var activeStateReferences = layerSerialized.FindProperty("activeStateReferences").GetValues<UnityEngine.Object>(); UnityEditorInternal.ComponentUtility.CopyComponent(layerToCopy); UnityEditorInternal.ComponentUtility.PasteComponentValues(layer); layerSerialized = new UnityEditor.SerializedObject(layer); layerSerialized.FindProperty("parentReference").SetValue(parentReference); layerSerialized.FindProperty("machineReference").SetValue(machineReference); layerSerialized.FindProperty("stateReferences").SetValues(stateReferences); layerSerialized.FindProperty("activeStateReferences").SetValues(activeStateReferences); for (int i = 0; i < stateReferences.Length; i++) { var stateReference = stateReferences[i]; var state = stateReference as State; var sublayer = stateReference as StateLayer; if (copyStates && state != null) { var stateToCopy = layerToCopy.GetState(state.GetType()) as State; if (stateToCopy != null) CopyState(state, stateToCopy); } if (copySublayers && sublayer != null) { var sublayerToCopy = layerToCopy.GetState(sublayer.GetType()) as StateLayer; if (sublayerToCopy != null) CopyLayer(sublayer, sublayerToCopy, copyStates, copySublayers); } } #endif }