/** ******************************************************************************** * @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; } } } }
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(); } } } }