Пример #1
0
        public AnimationAsset(AnimationAssetConstructionParams csParam)
            : base(csParam)
        {
            InitConstruction();



            if (csParam.AnimAsset == null)
            {
                csParam.AnimAsset = new AnimAsset();
                if (csParam.HostNodesContainer.HostNode is AnimStateControl)
                {
                    csParam.AnimAsset.AnimAssetLocationName = csParam.HostNodesContainer.HostNode.NodeName;
                    csParam.AnimAsset.AnimAssetLocation     = AnimAssetLocation.State;
                    csParam.AnimAsset.AnimAssetName         = csParam.NodeName.PureName();
                }
                else
                {
                    System.Diagnostics.Debugger.Break();
                }
            }
            var cpInfos = new List <CodeGenerateSystem.Base.CustomPropertyInfo>();

            cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(bool), "IsLoop", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute() }));
            mTemplateClassInstance = CodeGenerateSystem.Base.PropertyClassGenerator.CreateClassInstanceFromCustomPropertys(cpInfos, this);
            var clsType  = mTemplateClassInstance.GetType();
            var xNamePro = clsType.GetProperty("IsLoop");

            xNamePro.SetValue(mTemplateClassInstance, csParam.IsLoop);
            RNameNodeName     = csParam.NodeName;
            NodeName          = csParam.NodeName.PureName();
            Notifies          = csParam.Notifies;
            IsOnlyReturnValue = true;
            AddLinkPinInfo("AnimAssetLinkHandle", mCtrlValueLinkHandle, null);
        }
Пример #2
0
        void BindingTemplateClassInstanceProperties()
        {
            var cpInfos = new List <CodeGenerateSystem.Base.CustomPropertyInfo>();

            cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(bool), "PerformanceFirst", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute() }));
            cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(float), "FadeTime", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute() }));

            mTemplateClassInstance = CodeGenerateSystem.Base.PropertyClassGenerator.CreateClassInstanceFromCustomPropertys(cpInfos, this, null, false);

            var clsType             = mTemplateClassInstance.GetType();
            var performanceFirstPro = clsType.GetProperty("PerformanceFirst");

            performanceFirstPro.SetValue(mTemplateClassInstance, PerformanceFirst);
            SetBinding(TransitionCrossfadeShow.PerformanceFirstProperty, new Binding("PerformanceFirst")
            {
                Source = mTemplateClassInstance, Mode = BindingMode.TwoWay
            });
            var fadeTimePro = clsType.GetProperty("FadeTime");

            fadeTimePro.SetValue(mTemplateClassInstance, FadeTime);
            SetBinding(TransitionCrossfadeShow.FadeTimeProperty, new Binding("FadeTime")
            {
                Source = mTemplateClassInstance, Mode = BindingMode.TwoWay
            });
        }
Пример #3
0
        public void CreateTemplateClass(List <CodeGenerateSystem.Base.CustomPropertyInfo> cpInfos)
        {
            var csParam = CSParam as ReturnConstructParam;

            mTemplateClassInstance = CodeGenerateSystem.Base.PropertyClassGenerator.CreateClassInstanceFromCustomPropertys(cpInfos, this, $"Return_{csParam.MethodInfo.ParentClassType.FullName}.{csParam.MethodInfo.MethodName}", false);
            InitTemplateClass_WPF(cpInfos);
        }
        void BindingTemplateClassInstanceProperties()
        {
            var cpInfos = new List <CodeGenerateSystem.Base.CustomPropertyInfo>();

            //cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(Int32), "ActiveValue", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute() }));

            mTemplateClassInstance = CodeGenerateSystem.Base.PropertyClassGenerator.CreateClassInstanceFromCustomPropertys(cpInfos, this, null, false);

            //CreateBinding(mTemplateClassInstance, "ActiveValue", LASelectPoseByEnumControl.ActiveValueProperty, ActiveValue);
        }
Пример #5
0
        void BindingTemplateClassInstanceProperties()
        {
            var cpInfos = new List <CodeGenerateSystem.Base.CustomPropertyInfo>();

            cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(long), "Time", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute() }));

            mTemplateClassInstance = CodeGenerateSystem.Base.PropertyClassGenerator.CreateClassInstanceFromCustomPropertys(cpInfos, this, null, false);


            CreateBinding(mTemplateClassInstance, "Time", BehaviorTree_WaitActionControl.TimeProperty, Time);
        }
        void BindingTemplateClassInstanceProperties()
        {
            var cpInfos = new List <CodeGenerateSystem.Base.CustomPropertyInfo>();

            //cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(CompositeNodeType), "CompositeNodeType", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute() }));

            mTemplateClassInstance = CodeGenerateSystem.Base.PropertyClassGenerator.CreateClassInstanceFromCustomPropertys(cpInfos, this, null, false);


            //CreateBinding(mTemplateClassInstance, "CompositeNodeType", BehaviorTree_PlayAnimationActionControl.CompositeNodeTypeProperty, CompositeNodeType);
        }
        void BindingTemplateClassInstanceProperties()
        {
            var cpInfos = new List <CodeGenerateSystem.Base.CustomPropertyInfo>();

            cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(string), "Time", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute(), new EngineNS.Editor.Editor_ClassPropertySelectAttributeAttribute(BTCenterDataWarpper.CenterDataType, new Type[] { typeof(long), typeof(Int32), typeof(float), typeof(double) }) }));

            mTemplateClassInstance = CodeGenerateSystem.Base.PropertyClassGenerator.CreateClassInstanceFromCustomPropertys(cpInfos, this, null, false);


            CreateBinding(mTemplateClassInstance, "Time", BehaviorTree_WaitDataTimeActionControl.TimeProperty, Time);
        }
Пример #8
0
        void BindingTemplateClassInstanceProperties()
        {
            var cpInfos = new List <CodeGenerateSystem.Base.CustomPropertyInfo>();

            cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(string), "SyncPlayPercentGrop", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute() }));

            mTemplateClassInstance = CodeGenerateSystem.Base.PropertyClassGenerator.CreateClassInstanceFromCustomPropertys(cpInfos, this);


            CreateBinding(mTemplateClassInstance, "SyncPlayPercentGrop", LABlendSpaceControl.SyncPlayPercentGropProperty, SyncPlayPercentGrop);
        }
Пример #9
0
        void BindingTemplateClassInstanceProperties()
        {
            var cpInfos = new List <CodeGenerateSystem.Base.CustomPropertyInfo>();

            cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(float), "Alpha", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute() }));

            mTemplateClassInstance = CodeGenerateSystem.Base.PropertyClassGenerator.CreateClassInstanceFromCustomPropertys(cpInfos, this, null, false);


            CreateBinding(mTemplateClassInstance, "Alpha", LALegIKControl.AlphaProperty, Alpha);
        }
        void BindingTemplateClassInstanceProperties()
        {
            var cpInfos = new List <CodeGenerateSystem.Base.CustomPropertyInfo>();

            cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(string), "TargetPosition", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute(), new EngineNS.Editor.Editor_ClassPropertySelectAttributeAttribute(BTCenterDataWarpper.CenterDataType, new Type[] { typeof(EngineNS.Vector3) }) }));
            cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(string), "ArriveDistance", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute(), new EngineNS.Editor.Editor_ClassPropertySelectAttributeAttribute(BTCenterDataWarpper.CenterDataType, new Type[] { typeof(long), typeof(Int32), typeof(float), typeof(double) }) }));
            mTemplateClassInstance = CodeGenerateSystem.Base.PropertyClassGenerator.CreateClassInstanceFromCustomPropertys(cpInfos, this, "PG_" + BTCenterDataWarpper.CenterDataType.Name + this.Id.ToString(), false);


            CreateBinding(mTemplateClassInstance, "TargetPosition", BehaviorTree_MoveToActionControl.TargetPositionProperty, TargetPosition);
            CreateBinding(mTemplateClassInstance, "ArriveDistance", BehaviorTree_MoveToActionControl.ArriveDistanceProperty, ArriveDistance);
        }
Пример #11
0
        void BindingTemplateClassInstanceProperties()
        {
            var cpInfos = new List <CodeGenerateSystem.Base.CustomPropertyInfo>();

            cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(bool), "BoolValue", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute() }));
            cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(float), "TrueBlendTime", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute() }));
            cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(float), "FalseBlendTime", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute() }));
            mTemplateClassInstance = CodeGenerateSystem.Base.PropertyClassGenerator.CreateClassInstanceFromCustomPropertys(cpInfos, this, null, false);


            CreateBinding(mTemplateClassInstance, "BoolValue", LASelectPoseByBoolControl.BoolValueProperty, BoolValue);
            CreateBinding(mTemplateClassInstance, "TrueBlendTime", LASelectPoseByBoolControl.TrueBlendValueProperty, TrueBlendValue);
            CreateBinding(mTemplateClassInstance, "FalseBlendTime", LASelectPoseByBoolControl.FalseBlendValueProperty, FalseBlendValue);
        }
Пример #12
0
        void BindingTemplateClassInstanceProperties()
        {
            var cpInfos = new List <CodeGenerateSystem.Base.CustomPropertyInfo>();

            //cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(bool), "Repeat", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute() }));
            //cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(bool), "DefaultState", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute() }));
            //cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(float), "Duration", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute() }));
            //cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(float), "WidthScale", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute() }));
            //cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(EngineNS.RName), "AnimationFilePath", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute(), new EngineNS.Editor.Editor_RNameTypeAttribute(EngineNS.Editor.Editor_RNameTypeAttribute.AnimationClip) }));

            mTemplateClassInstance = CodeGenerateSystem.Base.PropertyClassGenerator.CreateClassInstanceFromCustomPropertys(cpInfos, this);

            //CreateBinding(mTemplateClassInstance, "DefaultState", LAClipNodeControl.DefaultStateProperty, DefaultState);
            //CreateBinding(mTemplateClassInstance, "Duration", LAClipNodeControl.DurationProperty, Duration);
            //CreateBinding(mTemplateClassInstance, "WidthScale", LAClipNodeControl.WidthScaleProperty, WidthScale);
            //CreateBinding(mTemplateClassInstance, "AnimationFilePath", LAClipNodeControl.AnimationFilePathProperty, AnimationFilePath);
        }
Пример #13
0
        void BindingTemplateClassInstanceProperties()
        {
            var cpInfos = new List <CodeGenerateSystem.Base.CustomPropertyInfo>();

            cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(float), "Alpha", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute() }));
            cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(uint), "Iteration", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute() }));
            cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(float), "LimitAngle", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute() }));
            cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(string), "RootBone", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute(), new EngineNS.Editor.Editor_LAGraphBonePoseSelectAttribute() }));
            cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(string), "EndEffecterBone", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute(), new EngineNS.Editor.Editor_LAGraphBonePoseSelectAttribute() }));
            cpInfos.Add(CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(typeof(string), "TargetBone", new Attribute[] { new EngineNS.Rtti.MetaDataAttribute(), new EngineNS.Editor.Editor_LAGraphBonePoseSelectAttribute() }));
            mTemplateClassInstance = CodeGenerateSystem.Base.PropertyClassGenerator.CreateClassInstanceFromCustomPropertys(cpInfos, this, null, false);


            CreateBinding(mTemplateClassInstance, "Alpha", LACCDIKControl.AlphaProperty, Alpha);
            CreateBinding(mTemplateClassInstance, "Iteration", LACCDIKControl.IterationProperty, Iteration);
            CreateBinding(mTemplateClassInstance, "LimitAngle", LACCDIKControl.LimitAngleProperty, LimitAngle);
            CreateBinding(mTemplateClassInstance, "RootBone", LACCDIKControl.RootBoneNameProperty, RootBoneName);
            CreateBinding(mTemplateClassInstance, "EndEffecterBone", LACCDIKControl.EndEffecterBoneNameProperty, EndEffecterBoneName);
            CreateBinding(mTemplateClassInstance, "TargetBone", LACCDIKControl.TargetBoneNameProperty, TargetBoneName);
        }
Пример #14
0
        protected void CreateTemplateClassInstance()
        {
            if (mCustomPropertyInfos.Count == 0)
            {
                return;
            }

            var classType = CodeGenerateSystem.Base.PropertyClassGenerator.CreateTypeFromCustomPropertys(mCustomPropertyInfos);

            mTemplateClassInstance = System.Activator.CreateInstance(classType) as CodeGenerateSystem.Base.GeneratorClassBase;
            var field = mTemplateClassInstance.GetType().GetField("HostNode");

            if (field != null)
            {
                field.SetValue(mTemplateClassInstance, this);
            }
            foreach (var property in mTemplateClassInstance.GetType().GetProperties())
            {
                property.SetValue(mTemplateClassInstance, CodeGenerateSystem.Program.GetDefaultValueFromType(property.PropertyType));
            }
        }
Пример #15
0
        void CreateTemplateClass_Show()
        {
            var allType = mTemplateClassInstance_All.GetType();

            if (mTemplateClassInstance_Show != null)
            {
                foreach (var pro in mTemplateClassInstance_Show.GetType().GetProperties())
                {
                    var allPro = allType.GetProperty(pro.Name);
                    allPro.SetValue(mTemplateClassInstance_All, pro.GetValue(mTemplateClassInstance_Show));
                }
            }

            var cpInfos_Show = new List <CodeGenerateSystem.Base.CustomPropertyInfo>();
            var param        = CSParam as ExpandNodeConstructParam;

            foreach (var pro in param.ExpandType.GetProperties())
            {
                if (!pro.CanWrite)
                {
                    continue;
                }
                var atts = pro.GetCustomAttributes(typeof(EngineNS.Editor.MacrossMemberAttribute), false);
                if (atts == null || atts.Length == 0)
                {
                    continue;
                }

                var mm = atts[0] as EngineNS.Editor.MacrossMemberAttribute;
                // 只读不能设置
                if (mm.HasType(EngineNS.Editor.MacrossMemberAttribute.enMacrossType.ReadOnly))
                {
                    continue;
                }

                if (param.ActiveMembers.Contains(pro.Name))
                {
                    var cpInfo = new CodeGenerateSystem.Base.CustomPropertyInfo();
                    cpInfo.PropertyName = pro.Name;
                    cpInfo.PropertyType = pro.PropertyType;
                    foreach (var att in pro.GetCustomAttributes(false))
                    {
                        cpInfo.PropertyAttributes.Add(att as System.Attribute);
                    }
                    cpInfo.DefaultValue = CodeGenerateSystem.Program.GetDefaultValueFromType(cpInfo.PropertyType);
                    cpInfo.CurrentValue = cpInfo.DefaultValue;

                    cpInfos_Show.Add(cpInfo);
                }
            }
            foreach (var field in param.ExpandType.GetFields())
            {
                var atts = field.GetCustomAttributes(typeof(EngineNS.Editor.MacrossMemberAttribute), false);
                if (atts == null || atts.Length == 0)
                {
                    continue;
                }

                var mm = atts[0] as EngineNS.Editor.MacrossMemberAttribute;
                // 只读不能设置
                if (mm.HasType(EngineNS.Editor.MacrossMemberAttribute.enMacrossType.ReadOnly))
                {
                    continue;
                }

                if (param.ActiveMembers.Contains(field.Name))
                {
                    var cpInfo = new CodeGenerateSystem.Base.CustomPropertyInfo();
                    cpInfo.PropertyName = field.Name;
                    cpInfo.PropertyType = field.FieldType;
                    foreach (var att in field.GetCustomAttributes(false))
                    {
                        cpInfo.PropertyAttributes.Add(att as System.Attribute);
                    }
                    cpInfo.DefaultValue = CodeGenerateSystem.Program.GetDefaultValueFromType(cpInfo.PropertyType);
                    cpInfo.CurrentValue = cpInfo.DefaultValue;

                    cpInfos_Show.Add(cpInfo);
                }
            }

            mTemplateClassInstance_Show = CodeGenerateSystem.Base.PropertyClassGenerator.CreateClassInstanceFromCustomPropertys(cpInfos_Show, this, "ExpandShow" + Guid.NewGuid().ToString(), false);
            bool createNewAllTC = false;

            foreach (var pro in mTemplateClassInstance_Show.GetType().GetProperties())
            {
                var allPro = allType.GetProperty(pro.Name);
                if (allPro == null)
                {
                    createNewAllTC = true;
                }
                else
                {
                    pro.SetValue(mTemplateClassInstance_Show, allPro.GetValue(mTemplateClassInstance_All));
                }
            }
            if (createNewAllTC)
            {
                var showType = mTemplateClassInstance_Show.GetType();
                CreateTemplateClass_All();
                foreach (var pro in mTemplateClassInstance_All.GetType().GetProperties())
                {
                    var showPro = showType.GetProperty(pro.Name);
                    pro.SetValue(mTemplateClassInstance_All, showPro.GetValue(mTemplateClassInstance_Show));
                }
            }
        }
Пример #16
0
        public Function(CodeGenerateSystem.Base.ConstructionParams smParam)
            : base(smParam)
        {
            InitializeComponent();

            var splits = CSParam.ConstructParam.Split('|');

            var include = splits[0];

            if (include.Contains(":"))
            {
                include = EngineNS.CEngine.Instance.FileManager._GetRelativePathFromAbsPath(include, EngineNS.CEngine.Instance.FileManager.Bin);
            }
            include = include.Replace("\\", "/");
            if (include.Contains("bin/"))
            {
                var nIdx = include.IndexOf("bin/");
                include = include.Substring(nIdx + 4);
            }

            System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
            xmlDoc.LoadXml(splits[1]);

            mStrFuncName = xmlDoc.DocumentElement.GetAttribute("Name");
            NodeName     = mStrFuncName;
            var tempElements = xmlDoc.GetElementsByTagName("Param");

            if (tempElements.Count > 0)
            {
                var cpInfos = new List <CodeGenerateSystem.Base.CustomPropertyInfo>();

                var paramInElm = tempElements[0];
                int nIdx       = 0;
                foreach (System.Xml.XmlElement node in paramInElm.ChildNodes)
                {
                    var typeStr = node.GetAttribute("Type");
                    var nameStr = node.GetAttribute("Name");
                    var strAttr = node.GetAttribute("Attribute");

                    switch (strAttr)
                    {
                    case "out":
                    case "return":
                        break;

                    default:
                    {
                        var cpInfo = CodeGenerateSystem.Base.CustomPropertyInfo.GetFromParamInfo(Program.GetTypeFromValueType(typeStr), nameStr, new Attribute[] { new EngineNS.Rtti.MetaDataAttribute() });
                        if (cpInfo != null)
                        {
                            cpInfos.Add(cpInfo);
                        }
                    }
                    break;
                    }

                    AddLink(nIdx, typeStr, nameStr, strAttr);
                    nIdx++;
                }

                mTemplateClassInstance = CodeGenerateSystem.Base.PropertyClassGenerator.CreateClassInstanceFromCustomPropertys(cpInfos, this, $"{this.GetType().FullName}.PropertyClass_{mStrFuncName}", false);
                foreach (var property in mTemplateClassInstance.GetType().GetProperties())
                {
                    property.SetValue(mTemplateClassInstance, CodeGenerateSystem.Program.GetDefaultValueFromType(property.PropertyType));
                }
                if (HostNodesContainer != null && HostNodesContainer.HostControl != null)
                {
                    mTemplateClassInstance.EnableUndoRedo(HostNodesContainer.HostControl.UndoRedoKey, mStrFuncName);
                }
            }

            this.UpdateLayout();
        }
Пример #17
0
        void CreateTemplateClass_All()
        {
            var cpInfos_All = new List <CodeGenerateSystem.Base.CustomPropertyInfo>();
            var param       = CSParam as ExpandNodeConstructParam;

            if (param.ExpandType == null)
            {
                return;
            }
            foreach (var pro in param.ExpandType.GetProperties())
            {
                if (!pro.CanWrite)
                {
                    continue;
                }
                var atts = pro.GetCustomAttributes(typeof(EngineNS.Editor.MacrossMemberAttribute), false);
                if (atts == null || atts.Length == 0)
                {
                    continue;
                }

                var mm = atts[0] as EngineNS.Editor.MacrossMemberAttribute;
                // 只读不能设置
                if (mm.HasType(EngineNS.Editor.MacrossMemberAttribute.enMacrossType.ReadOnly))
                {
                    continue;
                }

                var cpInfo = new CodeGenerateSystem.Base.CustomPropertyInfo();
                cpInfo.PropertyName = pro.Name;
                cpInfo.PropertyType = pro.PropertyType;
                foreach (var att in pro.GetCustomAttributes(false))
                {
                    cpInfo.PropertyAttributes.Add(att as System.Attribute);
                }
                cpInfo.DefaultValue = CodeGenerateSystem.Program.GetDefaultValueFromType(cpInfo.PropertyType);
                cpInfo.CurrentValue = cpInfo.DefaultValue;
                cpInfos_All.Add(cpInfo);
            }
            foreach (var field in param.ExpandType.GetFields())
            {
                var atts = field.GetCustomAttributes(typeof(EngineNS.Editor.MacrossMemberAttribute), false);
                if (atts == null || atts.Length == 0)
                {
                    continue;
                }

                var mm = atts[0] as EngineNS.Editor.MacrossMemberAttribute;
                // 只读不能设置
                if (mm.HasType(EngineNS.Editor.MacrossMemberAttribute.enMacrossType.ReadOnly))
                {
                    continue;
                }

                var cpInfo = new CodeGenerateSystem.Base.CustomPropertyInfo();
                cpInfo.PropertyName = field.Name;
                cpInfo.PropertyType = field.FieldType;
                foreach (var att in field.GetCustomAttributes(false))
                {
                    cpInfo.PropertyAttributes.Add(att as System.Attribute);
                }
                cpInfo.DefaultValue = CodeGenerateSystem.Program.GetDefaultValueFromType(cpInfo.PropertyType);
                cpInfo.CurrentValue = cpInfo.DefaultValue;
                cpInfos_All.Add(cpInfo);
            }
            mTemplateClassInstance_All = CodeGenerateSystem.Base.PropertyClassGenerator.CreateClassInstanceFromCustomPropertys(cpInfos_All, this, $"ExpandNode_{param.ExpandType.FullName}.{NodeName}", false);
        }