예제 #1
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!T23_EditorUtility.GuideJoinMaster(master, body, body.groupID, 2))
            {
                return;
            }

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Action");

            if (master)
            {
                GUILayout.Box("[#" + body.groupID.ToString() + "] " + body.title, T23_EditorUtility.HeadlineStyle());
                T23_EditorUtility.ShowSwapButton(master, body.title);
                body.priority = master.actionTitles.IndexOf(body.title);
            }
            else
            {
                body.groupID  = EditorGUILayout.IntField("Group ID", body.groupID);
                body.priority = EditorGUILayout.IntField("Priority", body.priority);
            }

            SerializedProperty recieverProp = serializedObject.FindProperty("recievers");

            if (recieverReorderableList == null)
            {
                recieverReorderableList                     = new ReorderableList(serializedObject, recieverProp);
                recieverReorderableList.draggable           = true;
                recieverReorderableList.displayAdd          = true;
                recieverReorderableList.drawHeaderCallback  = rect => EditorGUI.LabelField(rect, "Recievers");
                recieverReorderableList.drawElementCallback = (rect, index, isActive, isFocused) =>
                {
                    rect.height           = EditorGUIUtility.singleLineHeight;
                    body.recievers[index] = (GameObject)EditorGUI.ObjectField(rect, body.recievers[index], typeof(GameObject), true);
                };
            }
            recieverReorderableList.DoLayoutList();

            EditorGUI.BeginChangeCheck();
            T23_EditorUtility.PropertyBoxField(serializedObject, "operation", "propertyBox", "usePropertyBox", () => operation = (ToggleOperation)EditorGUILayout.EnumPopup("Operation", GetOperation()));
            if (body.usePropertyBox && body.toggle)
            {
                serializedObject.FindProperty("toggle").boolValue = false;
            }
            if (EditorGUI.EndChangeCheck())
            {
                SelectOperation();
            }

            if (!master || master.randomize)
            {
                prop = serializedObject.FindProperty("randomAvg");
                EditorGUILayout.PropertyField(prop);
            }

            serializedObject.ApplyModifiedProperties();
        }
예제 #2
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!T23_EditorUtility.GuideJoinMaster(master, body, body.groupID, 1))
            {
                return;
            }

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Trigger");

            if (master)
            {
                GUILayout.Box("[#" + body.groupID.ToString() + "] " + body.title, T23_EditorUtility.HeadlineStyle());
            }
            else
            {
                body.groupID = EditorGUILayout.IntField("Group ID", body.groupID);
            }

            var station = body.GetComponent <VRCStation>();

            if (!station)
            {
                EditorGUILayout.HelpBox("VRC Station が必要です。", MessageType.Warning);
            }

            prop = serializedObject.FindProperty("localOnly");
            EditorGUILayout.PropertyField(prop);

            serializedObject.ApplyModifiedProperties();
        }
예제 #3
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!UdonSharpEditorUtility.IsProxyBehaviour(body))
            {
                UdonSharpGUI.DrawConvertToUdonBehaviourButton(body);
                return;
            }

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Option");
            GUILayout.Box("CommonBuffer", T23_EditorUtility.HeadlineStyle());

            UdonSharpProgramAsset programAsset = UdonSharpEditorUtility.GetUdonSharpProgramAsset((UdonSharpBehaviour)target);

            UdonSharpGUI.DrawCompileErrorTextArea(programAsset);

            if (GUILayout.Button("Set Broadcasts"))
            {
                body.broadcasts = T23_EditorUtility.TakeCommonBuffersRelate(body);
            }
            if (GUILayout.Button("Join Empty Broadcasts"))
            {
                T23_EditorUtility.JoinAllBufferingBroadcasts(body);
            }
            prop = serializedObject.FindProperty("autoJoin");
            EditorGUILayout.PropertyField(prop);

            prop = serializedObject.FindProperty("broadcasts");
            EditorGUILayout.PropertyField(prop);

            serializedObject.ApplyModifiedProperties();
        }
예제 #4
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!T23_EditorUtility.GuideJoinMaster(master, body, body.groupID, 1))
            {
                return;
            }

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Trigger");

            if (master)
            {
                GUILayout.Box("[#" + body.groupID.ToString() + "] " + body.title, T23_EditorUtility.HeadlineStyle());
            }
            else
            {
                body.groupID = EditorGUILayout.IntField("Group ID", body.groupID);
            }

            prop          = serializedObject.FindProperty("channel");
            prop.intValue = System.Convert.ToInt32(EditorGUILayout.EnumPopup("Channel", (VRC_MidiNoteIn.Channel)body.channel));
            prop          = serializedObject.FindProperty("note");
            prop.intValue = System.Convert.ToInt32(EditorGUILayout.EnumPopup("Note", (VRC_MidiNoteIn.Note)body.note));

            serializedObject.ApplyModifiedProperties();
        }
예제 #5
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!T23_EditorUtility.GuideJoinMaster(master, body, body.groupID, 1))
            {
                return;
            }

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Trigger");

            if (master)
            {
                GUILayout.Box("[#" + body.groupID.ToString() + "] " + body.title, T23_EditorUtility.HeadlineStyle());
            }
            else
            {
                body.groupID = EditorGUILayout.IntField("Group ID", body.groupID);
            }

            prop           = serializedObject.FindProperty("inputValue");
            prop.boolValue = (InputValue)EditorGUILayout.EnumPopup("Value", (InputValue)System.Convert.ToInt32(body.inputValue)) == InputValue.Down;
            prop.intValue  = (int)(HandType)EditorGUILayout.EnumPopup("Hand", (HandType)System.Convert.ToInt32(body.hand));

            serializedObject.ApplyModifiedProperties();
        }
예제 #6
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!T23_EditorUtility.GuideJoinMaster(master, body, body.groupID, 2))
            {
                return;
            }

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Action");

            if (master)
            {
                GUILayout.Box("[#" + body.groupID.ToString() + "] " + body.title, T23_EditorUtility.HeadlineStyle());
                T23_EditorUtility.ShowSwapButton(master, body.title);
                body.priority = master.actionTitles.IndexOf(body.title);
            }
            else
            {
                body.groupID  = EditorGUILayout.IntField("Group ID", body.groupID);
                body.priority = EditorGUILayout.IntField("Priority", body.priority);
            }

            T23_EditorUtility.PropertyBoxField(serializedObject, "gravityStrength", "propertyBox", "usePropertyBox");
            if (!master || master.randomize)
            {
                prop = serializedObject.FindProperty("randomAvg");
                EditorGUILayout.PropertyField(prop);
            }

            serializedObject.ApplyModifiedProperties();
        }
예제 #7
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!T23_EditorUtility.GuideJoinMaster(master, body, body.groupID, 1))
            {
                return;
            }

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Trigger");

            if (master)
            {
                GUILayout.Box("[#" + body.groupID.ToString() + "] " + body.title, T23_EditorUtility.HeadlineStyle());
            }
            else
            {
                body.groupID = EditorGUILayout.IntField("Group ID", body.groupID);
            }

            prop = serializedObject.FindProperty("key");
            EditorGUILayout.PropertyField(prop);
            prop = serializedObject.FindProperty("keyFree");
            EditorGUILayout.PropertyField(prop);

            serializedObject.ApplyModifiedProperties();
        }
예제 #8
0
 static T23_AutoUpdateCommonBuffers()
 {
     EditorApplication.hierarchyWindowItemOnGUI += delegate(int instanceID, Rect selectionRect)
     {
         if (Event.current.commandName == "Duplicate" || Event.current.commandName == "SoftDelete" || Event.current.commandName == "UndoRedoPerformed")
         {
             T23_EditorUtility.UpdateAllCommonBuffersRelate();
         }
     };
 }
예제 #9
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!T23_EditorUtility.GuideJoinMaster(master, body, body.groupID, 2))
            {
                return;
            }

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Action");

            if (master)
            {
                GUILayout.Box("[#" + body.groupID.ToString() + "] " + body.title, T23_EditorUtility.HeadlineStyle());
                T23_EditorUtility.ShowSwapButton(master, body.title);
                body.priority = master.actionTitles.IndexOf(body.title);
            }
            else
            {
                body.groupID  = EditorGUILayout.IntField("Group ID", body.groupID);
                body.priority = EditorGUILayout.IntField("Priority", body.priority);
            }

            SerializedProperty recieverProp = serializedObject.FindProperty("recievers");

            if (recieverReorderableList == null)
            {
                recieverReorderableList                     = new ReorderableList(serializedObject, recieverProp);
                recieverReorderableList.draggable           = true;
                recieverReorderableList.displayAdd          = true;
                recieverReorderableList.drawHeaderCallback  = rect => EditorGUI.LabelField(rect, "Recievers");
                recieverReorderableList.drawElementCallback = (rect, index, isActive, isFocused) =>
                {
                    rect.height           = EditorGUIUtility.singleLineHeight;
                    body.recievers[index] = (Rigidbody)EditorGUI.ObjectField(rect, body.recievers[index], typeof(Rigidbody), true);
                };
            }
            recieverReorderableList.DoLayoutList();

            T23_EditorUtility.PropertyBoxField(serializedObject, "force", "propertyBox", "usePropertyBox");
            prop = serializedObject.FindProperty("useWorldSpace");
            EditorGUILayout.PropertyField(prop);
            prop = serializedObject.FindProperty("takeOwnership");
            EditorGUILayout.PropertyField(prop);
            if (!master || master.randomize)
            {
                prop = serializedObject.FindProperty("randomAvg");
                EditorGUILayout.PropertyField(prop);
            }

            serializedObject.ApplyModifiedProperties();
        }
예제 #10
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!T23_EditorUtility.GuideJoinMaster(master, body, body.groupID, 2))
            {
                return;
            }

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Action");

            if (master)
            {
                GUILayout.Box("[#" + body.groupID.ToString() + "] " + body.title, T23_EditorUtility.HeadlineStyle());
                T23_EditorUtility.ShowSwapButton(master, body.title);
                body.priority = master.actionTitles.IndexOf(body.title);
            }
            else
            {
                body.groupID  = EditorGUILayout.IntField("Group ID", body.groupID);
                body.priority = EditorGUILayout.IntField("Priority", body.priority);
            }

            EditorGUILayout.HelpBox("SpawnObject は推奨されません。 VRC_ObjectPool の利用を検討してください。SpawnObjectPool で使用できます。", MessageType.Warning);

            prop = serializedObject.FindProperty("prefab");
            EditorGUILayout.PropertyField(prop);

            SerializedProperty recieverProp = serializedObject.FindProperty("locations");

            if (recieverReorderableList == null)
            {
                recieverReorderableList                     = new ReorderableList(serializedObject, recieverProp);
                recieverReorderableList.draggable           = true;
                recieverReorderableList.displayAdd          = true;
                recieverReorderableList.drawHeaderCallback  = rect => EditorGUI.LabelField(rect, "Locations");
                recieverReorderableList.drawElementCallback = (rect, index, isActive, isFocused) =>
                {
                    rect.height           = EditorGUIUtility.singleLineHeight;
                    body.locations[index] = (Transform)EditorGUI.ObjectField(rect, body.locations[index], typeof(Transform), true);
                };
            }
            recieverReorderableList.DoLayoutList();

            if (!master || master.randomize)
            {
                prop = serializedObject.FindProperty("randomAvg");
                EditorGUILayout.PropertyField(prop);
            }

            serializedObject.ApplyModifiedProperties();
        }
예제 #11
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!T23_EditorUtility.GuideJoinMaster(master, body, body.groupID, 2))
            {
                return;
            }

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Action");

            if (master)
            {
                GUILayout.Box("[#" + body.groupID.ToString() + "] " + body.title, T23_EditorUtility.HeadlineStyle());
                T23_EditorUtility.ShowSwapButton(master, body.title);
                body.priority = master.actionTitles.IndexOf(body.title);
            }
            else
            {
                body.groupID  = EditorGUILayout.IntField("Group ID", body.groupID);
                body.priority = EditorGUILayout.IntField("Priority", body.priority);
            }

            SerializedProperty recieverProp = serializedObject.FindProperty("recievers");

            if (recieverReorderableList == null)
            {
                recieverReorderableList                     = new ReorderableList(serializedObject, recieverProp);
                recieverReorderableList.draggable           = true;
                recieverReorderableList.displayAdd          = true;
                recieverReorderableList.drawHeaderCallback  = rect => EditorGUI.LabelField(rect, "Recievers");
                recieverReorderableList.drawElementCallback = (rect, index, isActive, isFocused) =>
                {
                    rect.height           = EditorGUIUtility.singleLineHeight;
                    body.recievers[index] = (AudioSource)EditorGUI.ObjectField(rect, body.recievers[index], typeof(AudioSource), true);
                };
            }
            recieverReorderableList.DoLayoutList();

            prop           = serializedObject.FindProperty("operation");
            prop.boolValue = (PauseOperation)EditorGUILayout.EnumPopup("Operation", (PauseOperation)System.Convert.ToInt32(body.operation)) == PauseOperation.Pause;
            if (!master || master.randomize)
            {
                prop = serializedObject.FindProperty("randomAvg");
                EditorGUILayout.PropertyField(prop);
            }

            serializedObject.ApplyModifiedProperties();
        }
예제 #12
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!T23_EditorUtility.GuideJoinMaster(master, body, body.groupID, 2))
            {
                return;
            }

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Action");

            if (master)
            {
                GUILayout.Box("[#" + body.groupID.ToString() + "] " + body.title, T23_EditorUtility.HeadlineStyle());
                T23_EditorUtility.ShowSwapButton(master, body.title);
                body.priority = master.actionTitles.IndexOf(body.title);
            }
            else
            {
                body.groupID  = EditorGUILayout.IntField("Group ID", body.groupID);
                body.priority = EditorGUILayout.IntField("Priority", body.priority);
            }

            prop           = serializedObject.FindProperty("triggeredPlayer");
            prop.boolValue = (TargetPlayer)EditorGUILayout.EnumPopup("Target Player", (TargetPlayer)System.Convert.ToInt32(body.triggeredPlayer)) == TargetPlayer.TriggeredPlayer;
            if (body.triggeredPlayer)
            {
                EditorGUILayout.HelpBox("TriggeredPlayer は、BroadcastLocalでのみ有効です", MessageType.Info);
            }
            prop = serializedObject.FindProperty("distanceFar");
            EditorGUILayout.PropertyField(prop);
            prop = serializedObject.FindProperty("distanceNear");
            EditorGUILayout.PropertyField(prop);
            prop = serializedObject.FindProperty("gain");
            EditorGUILayout.PropertyField(prop);
            prop = serializedObject.FindProperty("lowpass");
            EditorGUILayout.PropertyField(prop);
            prop = serializedObject.FindProperty("volumetricRadius");
            EditorGUILayout.PropertyField(prop);
            if (!master || master.randomize)
            {
                prop = serializedObject.FindProperty("randomAvg");
                EditorGUILayout.PropertyField(prop);
            }

            serializedObject.ApplyModifiedProperties();
        }
예제 #13
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!T23_EditorUtility.GuideJoinMaster(master, body, body.groupID, 2))
            {
                return;
            }

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Action");

            if (master)
            {
                GUILayout.Box("[#" + body.groupID.ToString() + "] " + body.title, T23_EditorUtility.HeadlineStyle());
                T23_EditorUtility.ShowSwapButton(master, body.title);
                body.priority = master.actionTitles.IndexOf(body.title);
            }
            else
            {
                body.groupID  = EditorGUILayout.IntField("Group ID", body.groupID);
                body.priority = EditorGUILayout.IntField("Priority", body.priority);
            }

            prop = serializedObject.FindProperty("byValue");
            EditorGUILayout.PropertyField(prop);
            if (body.byValue)
            {
                T23_EditorUtility.PropertyBoxField(serializedObject, "teleportPosition", "positionPropertyBox", "positionUsePropertyBox");
                T23_EditorUtility.PropertyBoxField(serializedObject, "teleportRotation", "rotationPropertyBox", "rotationUsePropertyBox");
            }
            else
            {
                prop = serializedObject.FindProperty("teleportLocation");
                EditorGUILayout.PropertyField(prop);
            }
            prop = serializedObject.FindProperty("teleportOrientation");
            EditorGUILayout.PropertyField(prop);
            prop = serializedObject.FindProperty("lerpOnRemote");
            EditorGUILayout.PropertyField(prop);
            if (!master || master.randomize)
            {
                prop = serializedObject.FindProperty("randomAvg");
                EditorGUILayout.PropertyField(prop);
            }

            serializedObject.ApplyModifiedProperties();
        }
예제 #14
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!UdonSharpEditorUtility.IsProxyBehaviour(body))
            {
                UdonSharpGUI.DrawConvertToUdonBehaviourButton(body);
                return;
            }

            T23_EditorUtility.ShowTitle("Option");
            GUILayout.Box("ConnectFromUdon", T23_EditorUtility.HeadlineStyle());

            serializedObject.Update();

            prop = serializedObject.FindProperty("target");
            EditorGUILayout.PropertyField(prop);

            /*
             * List<string> customNameList = new List<string>();
             * if (body.target)
             * {
             *  customNameList = GetCustomNameList(body.target);
             *  if (customNameList.Count == 0)
             *  {
             *      EditorGUILayout.HelpBox("CustomTrigger が含まれていない、\nまたは、CustomTrigger Name が未記入です。", MessageType.Warning);
             *  }
             * }
             * if (customNameList.Count > 0)
             * {
             *  var index = EditorGUILayout.Popup("Custom Trigger Name", customNameList.IndexOf(body.customTriggerName), customNameList.ToArray());
             *  serializedObject.FindProperty("customTriggerName").stringValue = index >= 0 ? customNameList[index] : "";
             * }
             * else
             */
            {
                prop = serializedObject.FindProperty("customTriggerName");
                EditorGUILayout.PropertyField(prop);
            }

            serializedObject.ApplyModifiedProperties();
        }
예제 #15
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!T23_EditorUtility.GuideJoinMaster(master, body, body.groupID, 2))
            {
                return;
            }

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Action");

            if (master)
            {
                GUILayout.Box("[#" + body.groupID.ToString() + "] " + body.title, T23_EditorUtility.HeadlineStyle());
                T23_EditorUtility.ShowSwapButton(master, body.title);
                body.priority = master.actionTitles.IndexOf(body.title);
            }
            else
            {
                body.groupID  = EditorGUILayout.IntField("Group ID", body.groupID);
                body.priority = EditorGUILayout.IntField("Priority", body.priority);
            }

            prop = serializedObject.FindProperty("audioBank");
            EditorGUILayout.PropertyField(prop);
            serializedObject.FindProperty("command").intValue = (int)(Command)EditorGUILayout.EnumPopup("Command", (Command)body.command);
            if (body.command == 0)
            {
                prop = serializedObject.FindProperty("index");
                EditorGUILayout.PropertyField(prop);
            }

            if (!master || master.randomize)
            {
                prop = serializedObject.FindProperty("randomAvg");
                EditorGUILayout.PropertyField(prop);
            }

            serializedObject.ApplyModifiedProperties();
        }
예제 #16
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!T23_EditorUtility.GuideJoinMaster(master, body, body.groupID, 2))
            {
                return;
            }

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Action");

            if (master)
            {
                GUILayout.Box("[#" + body.groupID.ToString() + "] " + body.title, T23_EditorUtility.HeadlineStyle());
                T23_EditorUtility.ShowSwapButton(master, body.title);
                body.priority = master.actionTitles.IndexOf(body.title);
            }
            else
            {
                body.groupID  = EditorGUILayout.IntField("Group ID", body.groupID);
                body.priority = EditorGUILayout.IntField("Priority", body.priority);
            }

            prop = serializedObject.FindProperty("udonBehaviour");
            EditorGUILayout.PropertyField(prop);
            prop = serializedObject.FindProperty("method");
            EditorGUILayout.PropertyField(prop);
            prop          = serializedObject.FindProperty("ownershipControl");
            prop.intValue = System.Convert.ToInt32(EditorGUILayout.EnumPopup("Ownership Control", (OwnershipControl)body.ownershipControl));
            if (!master || master.randomize)
            {
                prop = serializedObject.FindProperty("randomAvg");
                EditorGUILayout.PropertyField(prop);
            }

            serializedObject.ApplyModifiedProperties();
        }
예제 #17
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!T23_EditorUtility.GuideJoinMaster(master, body, body.groupID, 1))
            {
                return;
            }

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Trigger");

            if (master)
            {
                GUILayout.Box("[#" + body.groupID.ToString() + "] " + body.title, T23_EditorUtility.HeadlineStyle());
            }
            else
            {
                body.groupID = EditorGUILayout.IntField("Group ID", body.groupID);
            }

            EditorGUI.BeginChangeCheck();
            UdonSharpProgramAsset programAsset = UdonSharpEditorUtility.GetUdonSharpProgramAsset((UdonSharpBehaviour)target);

            UdonSharpGUI.DrawInteractSettings(target);
            if (EditorGUI.EndChangeCheck())
            {
                if (master)
                {
                    UdonBehaviour behaviour = UdonSharpEditorUtility.GetBackingUdonBehaviour((UdonSharpBehaviour)target);
                    master.interactText = behaviour.interactText;
                    master.proximity    = behaviour.proximity;
                    master.OrderComponents();
                }
            }

            serializedObject.ApplyModifiedProperties();
        }
예제 #18
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!T23_EditorUtility.GuideJoinMaster(master, body, body.groupID, 1))
            {
                return;
            }

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Trigger");

            if (master)
            {
                GUILayout.Box("[#" + body.groupID.ToString() + "] " + body.title, T23_EditorUtility.HeadlineStyle());
            }
            else
            {
                body.groupID = EditorGUILayout.IntField("Group ID", body.groupID);
            }

            var pickup = body.GetComponent <VRC_Pickup>();

            if (pickup)
            {
                if (pickup.AutoHold != VRC_Pickup.AutoHoldMode.Yes)
                {
                    EditorGUILayout.HelpBox("VRC_Pickup の AutoHold を Yes にする必要があります。", MessageType.Warning);
                }
            }
            else
            {
                EditorGUILayout.HelpBox("VRC_Pickup が必要です。", MessageType.Warning);
            }

            serializedObject.ApplyModifiedProperties();
        }
예제 #19
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!T23_EditorUtility.GuideJoinMaster(master, body, body.groupID, 2))
            {
                return;
            }

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Action");

            if (master)
            {
                GUILayout.Box("[#" + body.groupID.ToString() + "] " + body.title, T23_EditorUtility.HeadlineStyle());
                T23_EditorUtility.ShowSwapButton(master, body.title);
                body.priority = master.actionTitles.IndexOf(body.title);
            }
            else
            {
                body.groupID  = EditorGUILayout.IntField("Group ID", body.groupID);
                body.priority = EditorGUILayout.IntField("Priority", body.priority);
            }

            prop = serializedObject.FindProperty("objectPool");
            EditorGUILayout.PropertyField(prop);
            EditorGUILayout.HelpBox("無条件でObject PoolのOwnershipを取得します。", MessageType.Info);

            if (!master || master.randomize)
            {
                prop = serializedObject.FindProperty("randomAvg");
                EditorGUILayout.PropertyField(prop);
            }

            serializedObject.ApplyModifiedProperties();
        }
예제 #20
0
    public override void OnInspectorGUI()
    {
        //base.OnInspectorGUI();

        master.CheckComponents();

        serializedObject.Update();

        T23_EditorUtility.ShowTitle("Master");

        GUILayout.Box("Group #" + master.groupID.ToString(), T23_EditorUtility.HeadlineStyle(true));

        GUILayout.Space(10);

        SerializedProperty broadcastProp = serializedObject.FindProperty("broadcastTitles");

        if (broadcastReorderableList == null)
        {
            broadcastReorderableList                     = new ReorderableList(serializedObject, broadcastProp);
            broadcastReorderableList.draggable           = true;
            broadcastReorderableList.drawHeaderCallback  = rect => EditorGUI.LabelField(rect, "Broadcast");
            broadcastReorderableList.drawElementCallback = (rect, index, isActive, isFocused) =>
            {
                rect.height = EditorGUIUtility.singleLineHeight;
                EditorGUI.LabelField(rect, master.broadcastTitles[index]);
            };
            broadcastReorderableList.onAddDropdownCallback = (Rect buttonRect, ReorderableList list) =>
            {
                var menu      = new GenericMenu();
                var assetList = T23_EditorUtility.GetProgramAssets("Broadcast");
                foreach (var pair in assetList)
                {
                    menu.AddItem(new GUIContent(pair.Key), false, () =>
                    {
                        master.SetBroadcast(pair.Value);
                    });
                }
                menu.DropDown(buttonRect);
            };
            broadcastReorderableList.onChangedCallback = ChangeBroadcast;
        }
        broadcastReorderableList.DoLayoutList();

        /*
         * EditorGUILayout.BeginHorizontal();
         * setBroadcast = (UdonSharpProgramAsset)EditorGUILayout.ObjectField("New Broadcast", setBroadcast, typeof(UdonSharpProgramAsset), false);
         * if (GUILayout.Button("Set"))
         * {
         *  EditorApplication.delayCall += () => SetBroadcast();
         * }
         * EditorGUILayout.EndHorizontal();
         */

        GUILayout.Space(10);

        SerializedProperty triggerProp = serializedObject.FindProperty("triggerTitles");

        if (triggerReorderableList == null)
        {
            triggerReorderableList                     = new ReorderableList(serializedObject, triggerProp);
            triggerReorderableList.draggable           = true;
            triggerReorderableList.drawHeaderCallback  = rect => EditorGUI.LabelField(rect, "Trigger");
            triggerReorderableList.drawElementCallback = (rect, index, isActive, isFocused) =>
            {
                rect.height = EditorGUIUtility.singleLineHeight;
                EditorGUI.LabelField(rect, master.triggerTitles[index]);
            };
            triggerReorderableList.onAddDropdownCallback = (Rect buttonRect, ReorderableList list) =>
            {
                var menu      = new GenericMenu();
                var assetList = T23_EditorUtility.GetProgramAssets("Trigger");
                foreach (var pair in assetList)
                {
                    menu.AddItem(new GUIContent(pair.Key), false, () =>
                    {
                        master.AddTrigger(pair.Value);
                    });
                }
                menu.DropDown(buttonRect);
            };
            triggerReorderableList.onChangedCallback = ChangeTrigger;
        }
        triggerReorderableList.DoLayoutList();

        /*
         * EditorGUILayout.BeginHorizontal();
         * addTrigger = (UdonSharpProgramAsset)EditorGUILayout.ObjectField("New Trigger", addTrigger, typeof(UdonSharpProgramAsset), false);
         * if (GUILayout.Button("Add"))
         * {
         *  AddTrigger();
         * }
         * EditorGUILayout.EndHorizontal();
         */

        GUILayout.Space(10);

        SerializedProperty actionProp = serializedObject.FindProperty("actionTitles");

        if (actionReorderableList == null)
        {
            actionReorderableList                     = new ReorderableList(serializedObject, actionProp);
            actionReorderableList.draggable           = true;
            actionReorderableList.drawHeaderCallback  = rect => EditorGUI.LabelField(rect, "Action");
            actionReorderableList.drawElementCallback = (rect, index, isActive, isFocused) =>
            {
                rect.height = EditorGUIUtility.singleLineHeight;
                EditorGUI.LabelField(rect, master.actionTitles[index]);
            };
            actionReorderableList.onAddDropdownCallback = (Rect buttonRect, ReorderableList list) =>
            {
                var menu      = new GenericMenu();
                var assetList = T23_EditorUtility.GetProgramAssets("Action");
                foreach (var pair in assetList)
                {
                    menu.AddItem(new GUIContent(pair.Key), false, () =>
                    {
                        master.AddAction(pair.Value);
                    });
                }
                menu.DropDown(buttonRect);
            };
            actionReorderableList.onChangedCallback = ChangeAction;
        }
        actionReorderableList.DoLayoutList();

        /*
         * EditorGUILayout.BeginHorizontal();
         * addAction = (UdonSharpProgramAsset)EditorGUILayout.ObjectField("New Action", addAction, typeof(UdonSharpProgramAsset), false);
         * if (GUILayout.Button("Add"))
         * {
         *  AddAction();
         * }
         * EditorGUILayout.EndHorizontal();
         */

        GUILayout.Space(10);

        EditorGUI.BeginChangeCheck();
        EditorGUI.BeginDisabledGroup(master.hasObjectSync);
        serializedObject.FindProperty("reliable").boolValue = EditorGUILayout.Toggle("SyncMethod Manual", master.reliable);
        EditorGUI.EndDisabledGroup();
        if (EditorGUI.EndChangeCheck())
        {
            serializedObject.ApplyModifiedProperties();
            master.OrderComponents();
            serializedObject.Update();
        }
        if (master.hasObjectSync)
        {
            EditorGUILayout.HelpBox("VRC_ObjectSync が存在するため、Synchronize Method は Continuous に設定されています。", MessageType.Info);
        }

        if (master.shouldMoveComponents)
        {
            Object prefab = PrefabUtility.GetCorrespondingObjectFromSource(master.gameObject);
            string msg    = "";
            if (prefab == null)
            {
                if (master.MoveComponents())
                {
                    master.shouldMoveComponents = false;
                }
                else
                {
                    msg = "コンポーネントが正しく整列できません。";
                }
            }
            else
            {
                msg = "コンポーネントがPrefab内にある場合、整列できません。";
            }
            if (msg != "")
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.HelpBox(msg, MessageType.Warning);
                if (GUILayout.Button("Clear"))
                {
                    master.shouldMoveComponents = false;
                }
                EditorGUILayout.EndHorizontal();
            }
        }

        serializedObject.ApplyModifiedProperties();
    }
예제 #21
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!T23_EditorUtility.GuideJoinMaster(master, body, body.groupID, 2))
            {
                return;
            }

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Action");

            if (master)
            {
                GUILayout.Box("[#" + body.groupID.ToString() + "] " + body.title, T23_EditorUtility.HeadlineStyle());
                T23_EditorUtility.ShowSwapButton(master, body.title);
                body.priority = master.actionTitles.IndexOf(body.title);
            }
            else
            {
                body.groupID  = EditorGUILayout.IntField("Group ID", body.groupID);
                body.priority = EditorGUILayout.IntField("Priority", body.priority);
            }

            SerializedProperty recieverProp = serializedObject.FindProperty("recievers");

            if (recieverReorderableList == null)
            {
                recieverReorderableList                     = new ReorderableList(serializedObject, recieverProp);
                recieverReorderableList.draggable           = true;
                recieverReorderableList.displayAdd          = true;
                recieverReorderableList.drawHeaderCallback  = rect => EditorGUI.LabelField(rect, "Recievers");
                recieverReorderableList.drawElementCallback = (rect, index, isActive, isFocused) =>
                {
                    rect.height           = EditorGUIUtility.singleLineHeight;
                    body.recievers[index] = (GameObject)EditorGUI.ObjectField(rect, body.recievers[index], typeof(GameObject), true);
                };
            }
            recieverReorderableList.DoLayoutList();

            /*
             * List<string> customNameList = new List<string>();
             * if (body.recievers != null)
             * {
             *  foreach (var go in body.recievers)
             *  {
             *      if (go)
             *      {
             *          customNameList.AddRange(GetCustomNameList(go));
             *      }
             *  }
             * }
             * if (customNameList.Count > 0)
             * {
             *  var index = EditorGUILayout.Popup("Name", customNameList.IndexOf(body.Name), customNameList.ToArray());
             *  serializedObject.FindProperty("Name").stringValue = index >= 0 ? customNameList[index] : "";
             * }
             * else
             */
            {
                prop = serializedObject.FindProperty("Name");
                EditorGUILayout.PropertyField(prop);
            }
            if (!master || master.randomize)
            {
                prop = serializedObject.FindProperty("randomAvg");
                EditorGUILayout.PropertyField(prop);
            }

            serializedObject.ApplyModifiedProperties();
        }
예제 #22
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!UdonSharpEditorUtility.IsProxyBehaviour(body))
            {
                UdonSharpGUI.DrawConvertToUdonBehaviourButton(body);
                return;
            }

            T23_EditorUtility.ShowTitle("Option");
            GUILayout.Box("PropertyBox", T23_EditorUtility.HeadlineStyle());

            UdonSharpProgramAsset programAsset = UdonSharpEditorUtility.GetUdonSharpProgramAsset((UdonSharpBehaviour)target);

            UdonSharpGUI.DrawCompileErrorTextArea(programAsset);

            serializedObject.Update();

            serializedObject.FindProperty("valueType").intValue = (int)(ValueType)EditorGUILayout.EnumPopup("Value Type", (ValueType)body.valueType);
            if (body.valueType == 0)
            {
                serializedObject.FindProperty("value_b").boolValue = EditorGUILayout.Toggle("Value", body.value_b);
            }
            else if (body.valueType == 1)
            {
                serializedObject.FindProperty("value_i").intValue = EditorGUILayout.IntField("Value", body.value_i);
            }
            else if (body.valueType == 2)
            {
                serializedObject.FindProperty("value_f").floatValue = EditorGUILayout.FloatField("Value", body.value_f);
            }
            else if (body.valueType == 3)
            {
                serializedObject.FindProperty("value_v3").vector3Value = EditorGUILayout.Vector3Field("Value", body.value_v3);
            }
            else if (body.valueType == 4)
            {
                serializedObject.FindProperty("value_s").stringValue = EditorGUILayout.TextField("Value", body.value_s);
            }

            UdonSharpGUI.DrawUILine(Color.gray);

            serializedObject.FindProperty("trackType").intValue = (int)(TrackType)EditorGUILayout.EnumPopup("Track Type", (TrackType)body.trackType);
            if (body.trackType != 0)
            {
                List <string> spotList = new List <string>();
                if (body.trackType == 1)
                {
                    serializedObject.FindProperty("targetPlayer").intValue = (int)(TargetPlayer)EditorGUILayout.EnumPopup("Target Player", (TargetPlayer)body.targetPlayer);

                    if (body.targetPlayer == 1 || body.targetPlayer == 2)
                    {
                        prop = serializedObject.FindProperty("targetObject");
                        EditorGUILayout.PropertyField(prop);
                    }

                    if (body.targetPlayer == 2)
                    {
                        List <string>             triggerList = new List <string>();
                        List <UdonSharpBehaviour> usharpList  = new List <UdonSharpBehaviour>();
                        if (body.targetObject)
                        {
                            var udons = body.targetObject.GetComponents <UdonBehaviour>();
                            foreach (var udon in udons)
                            {
                                UdonSharpBehaviour usharp = UdonSharpEditorUtility.FindProxyBehaviour(udon);
                                if (usharp)
                                {
                                    var groupIDField       = usharp.GetProgramVariable("groupID") as int?;
                                    var titleField         = usharp.GetProgramVariable("title") as string;
                                    var playerTriggerField = usharp.GetProgramVariable("playerTrigger") as bool?;
                                    if (groupIDField != null && titleField != null && playerTriggerField == true)
                                    {
                                        if (titleField != "")
                                        {
                                            usharpList.Add(usharp);
                                            triggerList.Add($"[#{groupIDField}] {titleField}");
                                        }
                                    }
                                }
                            }
                        }
                        var triggerIndex = EditorGUILayout.Popup("Target Trigger", usharpList.IndexOf(body.targetTrigger), triggerList.ToArray());
                        serializedObject.FindProperty("targetTrigger").objectReferenceValue = triggerIndex >= 0 ? usharpList[triggerIndex] : null;
                    }

                    if (body.targetPlayer == 3)
                    {
                        prop = serializedObject.FindProperty("index");
                        EditorGUILayout.PropertyField(prop);
                    }

                    if (body.valueType == 0)
                    {
                        spotList.AddRange(PlayerSpot_b);
                    }
                    else if (body.valueType == 2 || body.valueType == 3)
                    {
                        spotList.AddRange(PlayerSpot_v3);
                    }
                    else if (body.valueType == 4)
                    {
                        spotList.AddRange(PlayerSpot_s);
                    }
                }

                if (body.trackType == 2)
                {
                    prop = serializedObject.FindProperty("targetObject");
                    EditorGUILayout.PropertyField(prop);
                    if (body.valueType == 0)
                    {
                        spotList.AddRange(ObjectSpot_b);
                    }
                    else if (body.valueType == 2 || body.valueType == 3)
                    {
                        spotList.AddRange(ObjectSpot_v3);
                    }
                }

                if (body.trackType == 3)
                {
                    if (body.valueType == 1 || body.valueType == 2)
                    {
                        spotList.AddRange(WorldSpot_if);
                    }
                }

                if (body.trackType == 4)
                {
                    prop = serializedObject.FindProperty("targetObject");
                    EditorGUILayout.PropertyField(prop);
                    if (body.targetObject)
                    {
                        body.targetComponent = null;
                        serializedObject.FindProperty("spot").stringValue = "";
                        if (body.valueType == 0)
                        {
                            body.targetComponent = body.targetObject.GetComponent <Toggle>();
                            if (body.targetComponent != null)
                            {
                                serializedObject.FindProperty("spot").stringValue = "Toggle";
                            }
                        }
                        if (body.valueType == 1)
                        {
                            body.targetComponent = body.targetObject.GetComponent <Text>();
                            if (body.targetComponent != null)
                            {
                                serializedObject.FindProperty("spot").stringValue = "Text";
                            }
                            else
                            {
                                body.targetComponent = body.targetObject.GetComponent <InputField>();
                                if (body.targetComponent != null)
                                {
                                    serializedObject.FindProperty("spot").stringValue = "InputField";
                                }
                            }
                        }
                        if (body.valueType == 2)
                        {
                            body.targetComponent = body.targetObject.GetComponent <Slider>();
                            if (body.targetComponent != null)
                            {
                                serializedObject.FindProperty("spot").stringValue = "Slider";
                            }
                            else
                            {
                                body.targetComponent = body.targetObject.GetComponent <Scrollbar>();
                                if (body.targetComponent != null)
                                {
                                    serializedObject.FindProperty("spot").stringValue = "Scrollbar";
                                }
                                else
                                {
                                    body.targetComponent = body.targetObject.GetComponent <Text>();
                                    if (body.targetComponent != null)
                                    {
                                        serializedObject.FindProperty("spot").stringValue = "Text";
                                    }
                                    else
                                    {
                                        body.targetComponent = body.targetObject.GetComponent <InputField>();
                                        if (body.targetComponent != null)
                                        {
                                            serializedObject.FindProperty("spot").stringValue = "InputField";
                                        }
                                    }
                                }
                            }
                        }
                        if (body.valueType == 4)
                        {
                            body.targetComponent = body.targetObject.GetComponent <Text>();
                            if (body.targetComponent != null)
                            {
                                serializedObject.FindProperty("spot").stringValue = "Text";
                            }
                            else
                            {
                                body.targetComponent = body.targetObject.GetComponent <InputField>();
                                if (body.targetComponent != null)
                                {
                                    serializedObject.FindProperty("spot").stringValue = "InputField";
                                }
                            }
                        }
                        if (body.targetComponent == null)
                        {
                            EditorGUILayout.HelpBox($"{(ValueType)body.valueType} で取得可能な UI コンポーネントがありません。", MessageType.Error);
                        }
                        else
                        {
                            EditorGUI.BeginDisabledGroup(true);
                            prop = serializedObject.FindProperty("targetComponent");
                            EditorGUILayout.PropertyField(prop);
                            EditorGUI.EndDisabledGroup();
                        }
                    }
                }

                if (body.trackType == 5)
                {
                    prop = serializedObject.FindProperty("targetComponent");
                    prop.objectReferenceValue = EditorGUILayout.ObjectField("Animator", prop.objectReferenceValue, typeof(Animator), true);
                    if (prop.objectReferenceValue != null)
                    {
                        Animator animator = prop.objectReferenceValue as Animator;
                        if (animator)
                        {
                            animator.Update(0);
                            for (int i = 0; i < animator.parameters.Length; i++)
                            {
                                var paramType = animator.GetParameter(i).type;
                                if (body.valueType == 0 && paramType == AnimatorControllerParameterType.Bool)
                                {
                                    spotList.Add(animator.GetParameter(i).name);
                                }
                                if (body.valueType == 1 && paramType == AnimatorControllerParameterType.Int)
                                {
                                    spotList.Add(animator.GetParameter(i).name);
                                }
                                if (body.valueType == 2 && paramType == AnimatorControllerParameterType.Float)
                                {
                                    spotList.Add(animator.GetParameter(i).name);
                                }
                            }
                        }
                    }
                }

                if (body.trackType == 6)
                {
                    if (body.valueType == 2)
                    {
                        spotList.AddRange(ControllerSpot_f);
                    }
                }

                if (spotList.Count > 0)
                {
                    var spotIndex = EditorGUILayout.Popup("Spot", spotList.IndexOf(body.spot), spotList.ToArray());
                    serializedObject.FindProperty("spot").stringValue = spotIndex >= 0 ? spotList[spotIndex] : "";
                }

                if (body.valueType == 2)
                {
                    List <string> changeable = new List <string>();
                    changeable.AddRange(PlayerSpot_v3);
                    changeable.AddRange(ObjectSpot_v3);
                    if (changeable.Contains(body.spot))
                    {
                        List <string> detailList  = new List <string>(SpotDetail_v3_f);
                        var           detailIndex = EditorGUILayout.Popup("Spot Detail", detailList.IndexOf(body.spotDetail), SpotDetail_v3_f);
                        serializedObject.FindProperty("spotDetail").stringValue = detailIndex >= 0 ? SpotDetail_v3_f[detailIndex] : "";
                    }
                }

                if (body.valueType == 4)
                {
                    List <string> detailList  = new List <string>(SpotDetail_s);
                    var           detailIndex = EditorGUILayout.Popup("Spot Detail", detailList.IndexOf(body.spotDetail), SpotDetail_s);
                    serializedObject.FindProperty("spotDetail").stringValue = detailIndex >= 0 ? SpotDetail_s[detailIndex] : "";
                    if (serializedObject.FindProperty("spotDetail").stringValue == "OneLetter")
                    {
                        prop = serializedObject.FindProperty("index");
                        EditorGUILayout.PropertyField(prop);
                    }
                }

                if (body.spot.Contains("Position"))
                {
                    prop = serializedObject.FindProperty("positionTracking");
                    EditorGUILayout.PropertyField(prop);
                }
                else
                {
                    serializedObject.FindProperty("positionTracking").boolValue = false;
                }

                bool constAlways = body.trackType == 6 && body.valueType == 2;
                EditorGUI.BeginDisabledGroup(constAlways);
                prop = serializedObject.FindProperty("updateEveryFrame");
                EditorGUILayout.PropertyField(prop);
                EditorGUI.EndDisabledGroup();
                if (constAlways)
                {
                    serializedObject.FindProperty("updateEveryFrame").boolValue = true;
                }
            }

            serializedObject.ApplyModifiedProperties();
        }
예제 #23
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!T23_EditorUtility.GuideJoinMaster(master, body, body.groupID, 2))
            {
                return;
            }

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Action");

            if (master)
            {
                GUILayout.Box("[#" + body.groupID.ToString() + "] " + body.title, T23_EditorUtility.HeadlineStyle());
                T23_EditorUtility.ShowSwapButton(master, body.title);
                body.priority = master.actionTitles.IndexOf(body.title);
            }
            else
            {
                body.groupID  = EditorGUILayout.IntField("Group ID", body.groupID);
                body.priority = EditorGUILayout.IntField("Priority", body.priority);
            }

            prop = serializedObject.FindProperty("propertyBox");
            EditorGUILayout.PropertyField(prop);
            if (body.propertyBox)
            {
                serializedObject.FindProperty("calcOperator").intValue = EditorGUILayout.Popup("Operator", body.calcOperator, (body.propertyBox.valueType == 1 || body.propertyBox.valueType == 2 || body.propertyBox.valueType == 3) ? CalcOperator_a : CalcOperator_b);
                if (body.calcOperator != 0)
                {
                    if (body.propertyBox.valueType == 0)
                    {
                        T23_EditorUtility.PropertyBoxField(serializedObject, "value_bool", "valuePropertyBox", "usePropertyBox", () => serializedObject.FindProperty("value_bool").boolValue = EditorGUILayout.Toggle("Value_bool", body.value_bool));
                    }
                    else if (body.propertyBox.valueType == 1)
                    {
                        T23_EditorUtility.PropertyBoxField(serializedObject, "value_int", "valuePropertyBox", "usePropertyBox", () => serializedObject.FindProperty("value_int").intValue = EditorGUILayout.IntField("Value_int", body.value_int));
                    }
                    else if (body.propertyBox.valueType == 2 || (body.propertyBox.valueType == 3 && (body.calcOperator == 4 || body.calcOperator == 5)))
                    {
                        T23_EditorUtility.PropertyBoxField(serializedObject, "value_float", "valuePropertyBox", "usePropertyBox", () => serializedObject.FindProperty("value_float").floatValue = EditorGUILayout.FloatField("Value_float", body.value_float));
                    }
                    else if (body.propertyBox.valueType == 3)
                    {
                        T23_EditorUtility.PropertyBoxField(serializedObject, "value_Vector3", "valuePropertyBox", "usePropertyBox", () => serializedObject.FindProperty("value_Vector3").vector3Value = EditorGUILayout.Vector3Field("Value_Vector3", body.value_Vector3));
                    }
                    else if (body.propertyBox.valueType == 4)
                    {
                        T23_EditorUtility.PropertyBoxField(serializedObject, "value_string", "valuePropertyBox", "usePropertyBox", () => serializedObject.FindProperty("value_string").stringValue = EditorGUILayout.TextField("Value_string", body.value_string));
                    }
                }
            }

            if (!master || master.randomize)
            {
                prop = serializedObject.FindProperty("randomAvg");
                EditorGUILayout.PropertyField(prop);
            }

            serializedObject.ApplyModifiedProperties();
        }
예제 #24
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!T23_EditorUtility.GuideJoinMaster(master, body, body.groupID, 1))
            {
                return;
            }

            UdonSharpProgramAsset programAsset = UdonSharpEditorUtility.GetUdonSharpProgramAsset((UdonSharpBehaviour)target);

            UdonSharpGUI.DrawCompileErrorTextArea(programAsset);

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Trigger");

            if (master)
            {
                GUILayout.Box("[#" + body.groupID.ToString() + "] " + body.title, T23_EditorUtility.HeadlineStyle());
            }
            else
            {
                body.groupID = EditorGUILayout.IntField("Group ID", body.groupID);
            }

            prop = serializedObject.FindProperty("passive");
            EditorGUILayout.PropertyField(prop);
            if (!body.passive)
            {
                prop = serializedObject.FindProperty("allowContinuity");
                EditorGUILayout.PropertyField(prop);
            }

            GUILayout.Space(10);
            EditorGUILayout.LabelField("Base", EditorStyles.boldLabel);
            serializedObject.FindProperty("basePropertyBox").objectReferenceValue = EditorGUILayout.ObjectField("PropertyBox", body.basePropertyBox, typeof(T23_PropertyBox), true);

            if (body.basePropertyBox)
            {
                GUILayout.Space(10);
                EditorGUILayout.LabelField("Comparison", EditorStyles.boldLabel);
                serializedObject.FindProperty("compOperator").intValue      = EditorGUILayout.Popup("Operator", body.compOperator, (body.basePropertyBox.valueType == 1 || body.basePropertyBox.valueType == 2) ? CompOperator_a : CompOperator_b);
                serializedObject.FindProperty("compParameterType").intValue = (int)(CompParameterType)EditorGUILayout.EnumPopup("Parameter Type", (CompParameterType)body.compParameterType);
                if (body.compParameterType == 0)
                {
                    switch (body.basePropertyBox.valueType)
                    {
                    case 0:
                        serializedObject.FindProperty("comp_b").boolValue = EditorGUILayout.Toggle("Value", body.comp_b);
                        break;

                    case 1:
                        serializedObject.FindProperty("comp_i").intValue = EditorGUILayout.IntField("Value", body.comp_i);
                        break;

                    case 2:
                        serializedObject.FindProperty("comp_f").floatValue = EditorGUILayout.FloatField("Value", body.comp_f);
                        break;

                    case 4:
                        serializedObject.FindProperty("comp_s").stringValue = EditorGUILayout.TextField("Value", body.comp_s);
                        break;
                    }
                }
                if (body.compParameterType == 1)
                {
                    serializedObject.FindProperty("compPropertyBox").objectReferenceValue = EditorGUILayout.ObjectField("PropertyBox", body.compPropertyBox, typeof(T23_PropertyBox), true);
                    if (body.compPropertyBox)
                    {
                        if (body.compPropertyBox.valueType != body.basePropertyBox.valueType)
                        {
                            EditorGUILayout.HelpBox("PropertyBox の ValueType が不適合です", MessageType.Error);
                        }
                    }
                }
            }

            serializedObject.ApplyModifiedProperties();
        }
예제 #25
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!T23_EditorUtility.GuideJoinMaster(master, body, body.groupID, 0))
            {
                return;
            }

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Broadcast");

            if (master)
            {
                GUILayout.Box("[#" + body.groupID.ToString() + "] " + body.title, T23_EditorUtility.HeadlineStyle());
                master.randomize = body.randomize;
            }
            else
            {
                body.groupID = EditorGUILayout.IntField("Group ID", body.groupID);
            }

            if (body.groupID > 9 || body.groupID < 0)
            {
                EditorGUILayout.HelpBox("BroadcastGlobal は Group #0 ~ #9 の間でしか使用できません。", MessageType.Error);
            }

            prop = serializedObject.FindProperty("sendTarget");
            EditorGUILayout.PropertyField(prop);
            serializedObject.FindProperty("useablePlayer").intValue = (int)(UsablePlayer)EditorGUILayout.EnumPopup("Usable Player", (UsablePlayer)body.useablePlayer);
            serializedObject.FindProperty("bufferType").intValue    = (int)(BufferType)EditorGUILayout.EnumPopup("Buffer Type", (BufferType)body.bufferType);
            prop = serializedObject.FindProperty("delayInSeconds");
            EditorGUILayout.PropertyField(prop);
            prop = serializedObject.FindProperty("randomize");
            EditorGUILayout.PropertyField(prop);

            if (body.bufferType == (int)BufferType.Unbuffered)
            {
                if (body.commonBuffer != null)
                {
                    body.commonBuffer = null;
                    T23_EditorUtility.UpdateAllCommonBuffersRelate();
                }
                body.commonBufferSearched = false;
            }
            else
            {
                EditorGUI.BeginChangeCheck();
                prop = serializedObject.FindProperty("commonBuffer");
                EditorGUILayout.PropertyField(prop);
                if (EditorGUI.EndChangeCheck())
                {
                    serializedObject.ApplyModifiedProperties();
                    serializedObject.Update();
                    T23_EditorUtility.UpdateAllCommonBuffersRelate();
                }
                if (body.commonBuffer == null && !body.commonBufferSearched)
                {
                    body.commonBuffer = T23_EditorUtility.GetAutoJoinCommonBuffer(body);
                    if (body.commonBuffer != null)
                    {
                        T23_EditorUtility.UpdateAllCommonBuffersRelate();
                    }
                    body.commonBufferSearched = true;
                }
            }

            serializedObject.ApplyModifiedProperties();
        }
예제 #26
0
 private void OnDestroy()
 {
     body.commonBuffer = null;
     T23_EditorUtility.UpdateAllCommonBuffersRelate();
 }
예제 #27
0
        public override void OnInspectorGUI()
        {
            //base.OnInspectorGUI();

            if (!UdonSharpEditorUtility.IsProxyBehaviour(body))
            {
                UdonSharpGUI.DrawConvertToUdonBehaviourButton(body);
                return;
            }

            serializedObject.Update();

            T23_EditorUtility.ShowTitle("Option");

            GUILayout.Box("AudioBank", T23_EditorUtility.HeadlineStyle());

            prop = serializedObject.FindProperty("source");
            EditorGUILayout.PropertyField(prop);
            serializedObject.FindProperty("playbackOrder").intValue = (int)(Order)EditorGUILayout.EnumPopup("Playback Order", (Order)body.playbackOrder);
            serializedObject.FindProperty("playbackStyle").intValue = (int)(Style)EditorGUILayout.EnumPopup("Playback Style", (Style)body.playbackStyle);
            prop = serializedObject.FindProperty("repeat");
            EditorGUILayout.PropertyField(prop);
            prop = serializedObject.FindProperty("minPitchRange");
            EditorGUILayout.PropertyField(prop);
            prop = serializedObject.FindProperty("maxPitchRange");
            EditorGUILayout.PropertyField(prop);

            EditorGUILayout.BeginHorizontal();
            prop = serializedObject.FindProperty("onPlay");
            EditorGUILayout.PropertyField(prop);

            /*
             * List<string> onPlayCustomNameList = new List<string>();
             * if (body.onPlay)
             * {
             *  onPlayCustomNameList = GetCustomNameList(body.onPlay);
             * }
             * if (onPlayCustomNameList.Count > 0)
             * {
             *  var index = EditorGUILayout.Popup(onPlayCustomNameList.IndexOf(body.onPlayCustomName), onPlayCustomNameList.ToArray());
             *  serializedObject.FindProperty("onPlayCustomName").stringValue = index >= 0 ? onPlayCustomNameList[index] : "";
             * }
             * else
             */
            {
                prop = serializedObject.FindProperty("onPlayCustomName");
                EditorGUILayout.PropertyField(prop, new GUIContent(""));
            }
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            prop = serializedObject.FindProperty("onStop");
            EditorGUILayout.PropertyField(prop);

            /*
             * List<string> onStopCustomNameList = new List<string>();
             * if (body.onStop)
             * {
             *  onStopCustomNameList = GetCustomNameList(body.onStop);
             * }
             * if (onStopCustomNameList.Count > 0)
             * {
             *  var index = EditorGUILayout.Popup(onStopCustomNameList.IndexOf(body.onStopCustomName), onStopCustomNameList.ToArray());
             *  serializedObject.FindProperty("onStopCustomName").stringValue = index >= 0 ? onStopCustomNameList[index] : "";
             * }
             * else
             */
            {
                prop = serializedObject.FindProperty("onStopCustomName");
                EditorGUILayout.PropertyField(prop, new GUIContent(""));
            }
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            prop = serializedObject.FindProperty("onChange");
            EditorGUILayout.PropertyField(prop);

            /*
             * List<string> onChangeCustomNameList = new List<string>();
             * if (body.onChange)
             * {
             *  onChangeCustomNameList = GetCustomNameList(body.onChange);
             * }
             * if (onChangeCustomNameList.Count > 0)
             * {
             *  var index = EditorGUILayout.Popup(onChangeCustomNameList.IndexOf(body.onChangeCustomName), onChangeCustomNameList.ToArray());
             *  serializedObject.FindProperty("onChangeCustomName").stringValue = index >= 0 ? onChangeCustomNameList[index] : "";
             * }
             * else
             */
            {
                prop = serializedObject.FindProperty("onChangeCustomName");
                EditorGUILayout.PropertyField(prop, new GUIContent(""));
            }
            EditorGUILayout.EndHorizontal();

            SerializedProperty recieverProp = serializedObject.FindProperty("clips");

            if (recieverReorderableList == null)
            {
                recieverReorderableList                     = new ReorderableList(serializedObject, recieverProp);
                recieverReorderableList.draggable           = true;
                recieverReorderableList.displayAdd          = true;
                recieverReorderableList.drawHeaderCallback  = rect => EditorGUI.LabelField(rect, "Clips");
                recieverReorderableList.drawElementCallback = (rect, index, isActive, isFocused) =>
                {
                    rect.height       = EditorGUIUtility.singleLineHeight;
                    body.clips[index] = (AudioClip)EditorGUI.ObjectField(rect, body.clips[index], typeof(AudioClip), false);
                };
            }
            recieverReorderableList.DoLayoutList();

            serializedObject.ApplyModifiedProperties();
        }