static List <ConstGenSettings.StatesCTRLR> RetriveValues() { // find controller GUIDs and create StatesCTRLR list string[] controllers = AssetDatabase.FindAssets("t:animatorcontroller"); List <ConstGenSettings.StatesCTRLR> statesControllers = new List <ConstGenSettings.StatesCTRLR>(); foreach (string CTRLR in controllers) { // get controller and it's path string path = AssetDatabase.GUIDToAssetPath(CTRLR); UnityEditor.Animations.AnimatorController animCTRLR = AssetDatabase.LoadAssetAtPath <UnityEditor.Animations.AnimatorController>(path); ConstGenSettings.StatesCTRLR stateCTRLR = new ConstGenSettings.StatesCTRLR(); stateCTRLR.name = animCTRLR.name; if (animCTRLR.layers.Length == 0) { continue; } // loop throug layers for (int i = 0; i < animCTRLR.layers.Length; i++) { var layer_ = animCTRLR.layers[i]; // get layer ConstGenSettings.AnimLayer animLayer = new ConstGenSettings.AnimLayer(); animLayer.name = layer_.name; // store layer name if (layer_.stateMachine.states.Length == 0) { continue; } // loop through layer states for (int i2 = 0; i2 < layer_.stateMachine.states.Length; i2++) { var state_ = layer_.stateMachine.states[i2]; // get state ConstGenSettings.AnimState animState = new ConstGenSettings.AnimState(); animState.name = state_.state.name; // store state name animState.tag = state_.state.tag; // store tag name // add state to layers animLayer.animStates.Add(animState); } // add layers to controller stateCTRLR.animLayers.Add(animLayer); } // add controllers to list of controllers statesControllers.Add(stateCTRLR); } return(statesControllers); }
private static void GenerateCode() { generator.GenerateCodeFile(FilePath, generator.GetOutputPath(), content => { WrappedInt indentCount = 0; // NOTE: indentCount is automatically increamented or decreamented by // ContentWriter methods // An indent is added when a new CurlyBrackets IDisposable instance is created // and removed everytime that IDisposable instance is disposed of // (when the control has excited from the using statement) content.WriteIndentedLine(indentCount, generator.GetHeaderText(instance.GetScriptName())); content.WriteImports("UnityEngine"); using (new CurlyBrackets(content, ConstantGenerator.OutputFileNamespace, indentCount)) { using (new CurlyBrackets(content, "public static class " + FileName, indentCount)) { // loop through all animators for (int i = 0; i < instance.newStateCTRLRS.Count; i++) { // cache current animator ConstGenSettings.StatesCTRLR animState = instance.newStateCTRLRS[i]; // write animator name header using (new CurlyBrackets(content, "public static class " + generator.MakeIdentifier(animState.name), indentCount)) { // loop through layers for (int i2 = 0; i2 < animState.animLayers.Count; i2++) { // cache current layer ConstGenSettings.AnimLayer animLayer = animState.animLayers[i2]; // write layer group header name using (new CurlyBrackets(content, "public static class " + generator.MakeIdentifier(animLayer.name) + "_L", indentCount)) { // loop through states for (int i3 = 0; i3 < animLayer.animStates.Count; i3++) { // cache current state ConstGenSettings.AnimState state_ = animLayer.animStates[i3]; // write state name group at header using (new CurlyBrackets(content, "public static class " + generator.MakeIdentifier(state_.name) + "_S", indentCount)) { // write state name content.WriteIndentedFormatLine(indentCount, "public const string name = @\"{0}\";", state_.name); // write state tag if present if (state_.tag != string.Empty && state_.tag != null) { content.WriteIndentedFormatLine(indentCount, "public const string tag = @\"{0}\";", state_.tag); } } } } } } } } } }); }