예제 #1
0
        public void OnNetworkReady()
        {
            // Go through all buffered triggers first
            if (settings_.replayBufferedTriggers)
            {
                CyanEmuMain.SpawnPlayer(false);

                this.Log("Executing Buffered Triggers");

                // This is hacky <_<
                networkReady_ = true;
                bufferManager_.ReplayTriggers();
                networkReady_ = false;
            }

            FireTriggerTypeInternal(VRC_Trigger.TriggerType.OnNetworkReady);

            networkReady_ = true;
            this.Log("Executing Deferred Triggers");

            foreach (VRC_Trigger.TriggerEvent evt in deferredTriggers_)
            {
                ExecuteTrigger(evt);
            }
            deferredTriggers_.Clear();
        }
예제 #2
0
        private void DrawPlayerButtons()
        {
            EditorGUILayout.BeginVertical(boxStyle_);
            showPlayerButtons_ = EditorGUILayout.Foldout(showPlayerButtons_, playerButtonsFoldoutGuiContent, true);
            if (showPlayerButtons_)
            {
                AddIndent();

                // custom name
                settings_.customLocalPlayerName = EditorGUILayout.TextField(localPlayerCustomNameGuiContent, settings_.customLocalPlayerName);

                settings_.isInstanceOwner = EditorGUILayout.Toggle(isInstanceOwnerGuiContent, settings_.isInstanceOwner);

                // TODO have setting for spawning players in the room before you

                EditorGUI.BeginDisabledGroup(!CyanEmuMain.HasInstance() || !Application.isPlaying);

                /*
                 * EditorGUI.BeginDisabledGroup(CyanEmuPlayerController.instance != null);
                 *
                 * if (GUILayout.Button("Spawn Local Player"))
                 * {
                 *  CyanEmuMain.SpawnPlayer(true);
                 * }
                 *
                 * EditorGUI.EndDisabledGroup();
                 */

                remotePlayerCustomName = EditorGUILayout.TextField(remotePlayerCustomNameGuiContent, remotePlayerCustomName);

                if (GUILayout.Button("Spawn Remote Player"))
                {
                    CyanEmuMain.SpawnPlayer(false, remotePlayerCustomName);
                }

                List <VRCPlayerApi> playersToRemove = new List <VRCPlayerApi>();
                if (Application.isPlaying)
                {
                    foreach (var player in VRCPlayerApi.AllPlayers)
                    {
                        GUILayout.BeginHorizontal();

                        GUILayout.Label(player.displayName);
                        GUILayout.Space(5);

                        EditorGUI.BeginDisabledGroup(VRCPlayerApi.AllPlayers.Count == 1 || player.isLocal);

                        if (GUILayout.Button("Remove Player"))
                        {
                            playersToRemove.Add(player);
                        }

                        EditorGUI.EndDisabledGroup();

                        GUILayout.EndHorizontal();
                    }

                    for (int i = playersToRemove.Count - 1; i >= 0; --i)
                    {
                        CyanEmuMain.RemovePlayer(playersToRemove[i]);
                    }
                    playersToRemove.Clear();
                }

                EditorGUI.EndDisabledGroup();

                RemoveIndent();
            }
            EditorGUILayout.EndVertical();
        }