コード例 #1
0
ファイル: Exctractor.cs プロジェクト: rngtm/Unity-VFXToolBox
        /** ********************************************************************************
        * @summary オブジェクトのメンバの数値を設定
        ***********************************************************************************/
        public static void SetModuleValue(object particleSystemModule, ModuleCopyPasteBase moduleCopyPasteBase)
        {
            var flag = BindingFlags.Instance
                       | BindingFlags.Public
                       | BindingFlags.NonPublic
                       | BindingFlags.DeclaredOnly;

            MemberValue[] memberValues       = moduleCopyPasteBase.GetMemberValues().ToArray();
            var           particleModuleType = particleSystemModule.GetType();

            for (var index = 0; index < memberValues.Length; index++)
            {
                var value = memberValues.ElementAt(index).Value;
                switch (memberValues[index].MemberType)
                {
                case MemberTypes.Property:
                {
                    var prop = particleModuleType.GetProperty(memberValues[index].MemberName, flag);
                    if (prop != null && prop.CanWrite)
                    {
                        prop.SetValue(particleSystemModule, value);
                    }
                    break;
                }

                case MemberTypes.Field:
                {
                    var field = particleModuleType.GetField(memberValues[index].MemberName, flag);
                    field?.SetValue(particleSystemModule, value);
                    break;
                }
                }
            }
        }
コード例 #2
0
        public static void DrawModule(ModuleCopyPasteBase module)
        {
            using (new EditorGUILayout.VerticalScope(Config.BoxClipboardModuleOption))
            {
                using (new EditorGUILayout.VerticalScope(GUI.skin.box))
                {
                    if (module.HasValue)
                    {
                        module.IsOpen = EditorGUILayout.Foldout(module.IsOpen, $"{module.ModuleType}");

                        if (module.IsOpen)
                        {
                            EditorGUI.indentLevel++;
                            foreach (var member in module.GetMemberValues())
                            {
                                DrawMember(member);
                            }

                            var internalValues = module.GetInternalValues();
                            if (internalValues != null)
                            {
                                foreach (var value in internalValues)
                                {
                                    using (new EditorGUILayout.HorizontalScope())
                                    {
                                        EditorGUILayout.TextArea(value.ToString());
                                    }
                                }
                            }

                            EditorGUI.indentLevel--;
                        }
                        // EditorGUI.EndDisabledGroup();
                    }
                }

            }
        }