Example #1
0
        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);
        }
Example #2
0
        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);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            });
        }