void Update()
    {
        // show while in lobby and while not creating a character
        if (manager.state == NetworkState.Lobby && !uiCharacterCreation.IsVisible())
        {
            panel.SetActive(true);

            // characters available message received already?
            if (manager.charactersAvailableMsg != null)
            {
                // instantiate/destroy enough slots
                CharactersAvailableMsg.CharacterPreview[] characters = manager.charactersAvailableMsg.characters;
                UIUtils.BalancePrefabs(slotPrefab.gameObject, characters.Length, content);

                // refresh all
                List <Player> prefabs = manager.GetPlayerClasses();
                for (int i = 0; i < characters.Length; ++i)
                {
                    Player prefab = prefabs.Find(p => p.name == characters[i].className);
                    UICharacterSelectionSlot slot = content.GetChild(i).GetComponent <UICharacterSelectionSlot>();

                    // name and icon
                    slot.nameText.text = characters[i].name;
                    slot.image.sprite  = prefab.GetComponent <Player>().classIcon;

                    // select button: calls AddPlayer which calls OnServerAddPlayer
                    // -> button sends a request to the server
                    // -> if we press button again while request hasn't finished
                    //    then we will get the error:
                    //    'ClientScene::AddPlayer: playerControllerId of 0 already in use.'
                    //    which will happen sometimes at low-fps or high-latency
                    // -> internally ClientScene.AddPlayer adds to localPlayers
                    //    immediately, so let's check that first
                    slot.selectButton.interactable = ClientScene.localPlayer == null;
                    int icopy = i; // needed for lambdas, otherwise i is Count
                    slot.selectButton.onClick.SetListener(() => {
                        CharacterSelectMsg message = new CharacterSelectMsg {
                            index = icopy
                        };
                        ClientScene.AddPlayer(manager.client.connection, message);

                        // make sure we can't select twice and call AddPlayer twice
                        panel.SetActive(false);
                    });

                    // delete button: sends delete message
                    slot.deleteButton.onClick.SetListener(() => {
                        CharacterDeleteMsg message = new CharacterDeleteMsg {
                            index = icopy
                        };
                        manager.client.Send(CharacterDeleteMsg.MsgId, message);
                    });
                }

                createButton.interactable = characters.Length < manager.characterLimit;
                createButton.onClick.SetListener(() => {
                    panel.SetActive(false);
                    uiCharacterCreation.Show();
                });

                quitButton.onClick.SetListener(() => { NetworkManagerMMO.Quit(); });
            }
        }
        else
        {
            panel.SetActive(false);
        }
    }
Esempio n. 2
0
 // Create a local client and connect to the local server
 public void SetupLocalClient()
 {
     myClient = ClientScene.ConnectLocalServer();
     myClient.RegisterHandler(MsgType.Connect, OnConnected);
     isAtStartup = false;
 }
Esempio n. 3
0
 internal void Register()
 {
     ClientScene.UnregisterPrefab(this.prefab);
     set_AssetId(this.netID, default);
     ClientScene.RegisterPrefab(this.prefab, this.hash);
 }
Esempio n. 4
0
 private void AddBot()
 {
     ClientScene.AddPlayer(1);
 }
        void OnGUI()
        {
            if (!showGUI)
            {
                return;
            }

            GUILayout.BeginArea(new Rect(10 + offsetX, 40 + offsetY, 215, 9999));
            if (!NetworkClient.isConnected && !NetworkServer.active)
            {
                if (!NetworkClient.active)
                {
                    /*
                     * // LAN Host
                     * if (Application.platform != RuntimePlatform.WebGLPlayer)
                     * {
                     *  if (GUILayout.Button("LAN Host"))
                     *  {
                     *      manager.StartHost();
                     *  }
                     * }
                     */

                    // LAN Client + IP
                    GUILayout.BeginHorizontal();
                    if (GUILayout.Button("LAN Client"))
                    {
                        manager.StartClient();
                    }
                    manager.networkAddress = GUILayout.TextField(manager.networkAddress);
                    GUILayout.EndHorizontal();

                    // LAN Server Only
                    if (Application.platform == RuntimePlatform.WebGLPlayer)
                    {
                        // cant be a server in webgl build
                        GUILayout.Box("(  WebGL cannot be server  )");
                    }
                    else
                    {
                        if (GUILayout.Button("LAN Server Only"))
                        {
                            manager.StartServer();
                        }
                    }
                }
                else
                {
                    // Connecting
                    GUILayout.Label("Connecting to " + manager.networkAddress + "..");
                    if (GUILayout.Button("Cancel Connection Attempt"))
                    {
                        manager.StopClient();
                    }
                }
            }
            else
            {
                // server / client status message
                if (NetworkServer.active)
                {
                    GUILayout.Label("Server: active. Transport: " + Transport.activeTransport);
                }
                if (NetworkClient.isConnected)
                {
                    GUILayout.Label("Client: address=" + manager.networkAddress);
                }
            }

            // client ready
            if (NetworkClient.isConnected && !ClientScene.ready)
            {
                if (GUILayout.Button("Client Ready"))
                {
                    ClientScene.Ready(NetworkClient.connection);

                    if (ClientScene.localPlayer == null)
                    {
                        ClientScene.AddPlayer();
                    }
                }
            }

            // stop
            if (NetworkServer.active || NetworkClient.isConnected)
            {
                if (GUILayout.Button("Stop"))
                {
                    manager.StopHost();
                }
            }

            GUILayout.EndArea();
        }
Esempio n. 6
0
 public void OnConnected(NetworkMessage m)
 {
     Debug.Log("Connect!");
     ClientScene.AddPlayer(myClient.connection, 1);
 }
Esempio n. 7
0
        private void Update()
        {
            if (ControlledByPlayer == NetworkInstanceId.Invalid)
            {
                return;
            }

            //don't start it too early:
            if (!PlayerManager.LocalPlayer)
            {
                return;
            }

            //Only update if it is inhand of localplayer
            if (PlayerManager.LocalPlayer != ClientScene.FindLocalObject(ControlledByPlayer))
            {
                return;
            }

            if (FireCountDown > 0)
            {
                FireCountDown -= Time.deltaTime;
                //prevents the next projectile taking miliseconds longer than it should
                if (FireCountDown < 0)
                {
                    FireCountDown = 0;
                }
            }

            //Check if magazine in opposite hand or if unloading
            if (Input.GetKeyDown(KeyCode.R))
            {
                //PlaceHolder for click UI
                GameObject currentHandItem = UIManager.Hands.CurrentSlot.Item;
                GameObject otherHandItem   = UIManager.Hands.OtherSlot.Item;
                string     hand;

                if (currentHandItem != null)
                {
                    if (CurrentMagazine == null)
                    {
                        //RELOAD
                        if (currentHandItem.GetComponent <MagazineBehaviour>() && otherHandItem.GetComponent <Weapon>())
                        {
                            string ammoType = currentHandItem.GetComponent <MagazineBehaviour>().ammoType;

                            if (AmmoType == ammoType)
                            {
                                hand = UIManager.Hands.CurrentSlot.eventName;
                                Reload(currentHandItem, hand, true);
                            }

                            if (AmmoType != ammoType)
                            {
                                UIManager.Chat.AddChatEvent(new ChatEvent("You try to load the wrong ammo into your weapon", ChatChannel.Examine));
                            }
                        }

                        if (otherHandItem.GetComponent <MagazineBehaviour>() && currentHandItem.GetComponent <Weapon>())
                        {
                            string ammoType = otherHandItem.GetComponent <MagazineBehaviour>().ammoType;

                            if (AmmoType == ammoType)
                            {
                                hand = UIManager.Hands.OtherSlot.eventName;
                                Reload(otherHandItem, hand, false);
                            }
                            if (AmmoType != ammoType)
                            {
                                UIManager.Chat.AddChatEvent(new ChatEvent("You try to load the wrong ammo into your weapon", ChatChannel.Examine));
                            }
                        }
                    }
                    else
                    {
                        //UNLOAD

                        if (currentHandItem.GetComponent <Weapon>() && otherHandItem == null)
                        {
                            ManualUnload(CurrentMagazine);
                        }

                        else if (currentHandItem.GetComponent <Weapon>() && otherHandItem.GetComponent <MagazineBehaviour>())
                        {
                            UIManager.Chat.AddChatEvent(new ChatEvent("You weapon is already loaded, you cant fit more Magazines in it, silly!", ChatChannel.Examine));
                        }
                        else if (otherHandItem.GetComponent <Weapon>() && currentHandItem.GetComponent <MagazineBehaviour>())
                        {
                            UIManager.Chat.AddChatEvent(new ChatEvent("You weapon is already loaded, you cant fit more Magazines in it, silly!", ChatChannel.Examine));
                        }
                    }
                }
            }

            if (Input.GetMouseButtonUp(0))
            {
                InAutomaticAction = false;

                //remove recoil after shooting is released
                CurrentRecoilVariance = 0;
            }

            if (InAutomaticAction && FireCountDown <= 0)
            {
                AttemptToFireWeapon();
            }
        }
Esempio n. 8
0
    void OnGUI()
    {
        if (!showGUI)
        {
            return;
        }

        int xpos    = 10 + offsetX;
        int ypos    = 10 + offsetY;
        int spacing = 24;

        if (NetworkClient.active && !ClientScene.ready)
        {
            if (GUI.Button(new Rect(xpos, ypos, 200, 20), "Client Ready"))
            {
                ClientScene.Ready(manager.client.connection);

                if (ClientScene.localPlayers.Count == 0)
                {
                    ClientScene.AddPlayer(0);
                }
            }
            ypos += spacing;
        }

        if (NetworkServer.active || NetworkClient.active)
        {
            if (!clientSetup)
            {
                myClient = manager.client; SetupClient(); clientSetup = true;
            }

            if (GUI.Button(new Rect(xpos, ypos, 200, 20), "Disconnect"))
            {
                manager.StopHost();
                gm.leaveGame();
            }
            ypos += spacing;
        }

        if (!NetworkServer.active && !NetworkClient.active)
        {
            clientSetup = false;
            if (manager.matchInfo == null)
            {
                if (manager.matches == null)
                {
                    if (GUI.Button(new Rect(xpos, ypos, 200, 20), "Create Match"))
                    {
                        manager.matchMaker.CreateMatch(manager.matchName, manager.matchSize, true, "", "", "", 0, 0, manager.OnMatchCreate);
                        gm.begin(1);
                    }
                    ypos += spacing;

                    GUI.Label(new Rect(xpos, ypos, 100, 20), "Room Name:");
                    manager.matchName = GUI.TextField(new Rect(xpos + 100, ypos, 100, 20), manager.matchName);
                    ypos += spacing;

                    ypos += 10;

                    if (GUI.Button(new Rect(xpos, ypos, 200, 20), "Find Match"))
                    {
                        manager.matchMaker.ListMatches(0, 20, "", true, 0, 0, manager.OnMatchList);
                    }
                    ypos += spacing;
                }
                else
                {
                    foreach (var match in manager.matches)
                    {
                        if (GUI.Button(new Rect(xpos, ypos, 200, 20), "Join Match:" + match.name))
                        {
                            manager.matchName = match.name;
                            manager.matchSize = (uint)match.currentSize;
                            manager.matchMaker.JoinMatch(match.networkId, "", "", "", 0, 0, manager.OnMatchJoined);
                            gm.begin(2);
                        }
                        ypos += spacing;
                    }

                    if (GUI.Button(new Rect(xpos, ypos, 200, 20), "Back"))
                    {
                        manager.matches = null;
                    }
                    ypos += spacing;
                }
            }

            if (GUI.Button(new Rect(xpos, ypos, 200, 20), "Change MM server"))
            {
                showServer = !showServer;
            }
            if (showServer)
            {
                ypos += spacing;
                if (GUI.Button(new Rect(xpos, ypos, 100, 20), "Local"))
                {
                    manager.SetMatchHost("localhost", 1337, false);
                    showServer = false;
                }
                ypos += spacing;
                if (GUI.Button(new Rect(xpos, ypos, 100, 20), "Internet"))
                {
                    manager.SetMatchHost("mm.unet.unity3d.com", 443, true);
                    showServer = false;
                }
                ypos += spacing;
                if (GUI.Button(new Rect(xpos, ypos, 100, 20), "Staging"))
                {
                    manager.SetMatchHost("staging-mm.unet.unity3d.com", 443, true);
                    showServer = false;
                }
            }

            ypos += spacing;

            try { GUI.Label(new Rect(xpos, ypos, 300, 20), "MM Uri: " + manager.matchMaker.baseUri); }
            catch { }
            ypos += spacing;
        }
    }
Esempio n. 9
0
    public override void OnStartClient()
    {
        GameObject parentObject = ClientScene.FindLocalObject(parentNetId);

        atc = parentObject.GetComponent <AreaTreeController>();
    }
Esempio n. 10
0
    void OnGUI()
    {
        if (!showGUI)
        {
            return;
        }

        int xpos    = 10 + offsetX;
        int ypos    = 40 + offsetY;
        int spacing = 24;

        if (!NetworkClient.active && !NetworkServer.active && manager.matchMaker == null)
        {
            if (GUI.Button(new Rect(xpos, ypos, 200, 20), "Start Host (H)"))
            {
                manager.StartHost();
            }
            ypos += spacing;

            if (GUI.Button(new Rect(xpos, ypos, 100, 20), "Connect (C)"))
            {
                manager.StartClient();
            }
            manager.networkAddress = GUI.TextField(new Rect(xpos + 100, ypos, 100, 20), manager.networkAddress);
            ypos += spacing;

            if (GUI.Button(new Rect(xpos, ypos, 200, 20), "Start Server Only (S)"))
            {
                manager.StartServer();
            }
            ypos += spacing;

            if (GUI.Button(new Rect(xpos, ypos, 200, 20), "To Main Menu (Esc)"))
            {
                ToMainMenu();
            }
            ypos += spacing;
        }
        else
        {
            if (NetworkServer.active)
            {
                GUI.Label(new Rect(xpos, ypos, 300, 20), "Server: port=" + manager.networkPort);
                ypos += spacing;
            }
            if (NetworkClient.active)
            {
                GUI.Label(new Rect(xpos, ypos, 300, 20), "Client: address=" + manager.networkAddress + " port=" + manager.networkPort);
                ypos += spacing;
            }
        }

        if (NetworkClient.active && !ClientScene.ready)
        {
            if (GUI.Button(new Rect(xpos, ypos, 200, 20), "Client Ready"))
            {
                ClientScene.Ready(manager.client.connection);

                if (ClientScene.localPlayers.Count == 0)
                {
                    ClientScene.AddPlayer(0);
                }
            }
            ypos += spacing;
        }

        if (NetworkServer.active || NetworkClient.active)
        {
            if (GUI.Button(new Rect(xpos, ypos, 200, 20), "Stop (X)"))
            {
                manager.StopHost();
            }
            ypos += spacing;
        }
    }
Esempio n. 11
0
 public override void OnClientSceneChanged(NetworkConnection conn)
 {
     ClientScene.AddPlayer(conn, 0);
 }
Esempio n. 12
0
 public override void OnStartClient()
 {
     Physics2D.IgnoreCollision(GetComponent <BoxCollider2D>(), ClientScene.FindLocalObject(spawnedBy).GetComponent <BoxCollider2D>(), true);
 }
Esempio n. 13
0
 // Start is called before the first frame update
 void Start()
 {
     LobbyUICanvas = GameObject.FindObjectOfType <Canvas>();
     ClientScene.RegisterPrefab(PlayerLobbyCursorPrefab);
 }
Esempio n. 14
0
    /// <summary>
    /// 開始時の処理
    /// </summary>
    void Start()
    {
        // もしクライアントとして実行中じゃなかったら何もしない
        if (!Global.Instance.IsClient)
        {
            return;
        }

        // 物理演算があるので常時処理しておきたい
        Application.runInBackground = true;

        // ネットワーク越しに座標など同期する必要があるプレハブを登録する
        foreach (var kvp in Global.Instance.NetPrefabs)
        {
            ClientScene.RegisterSpawnHandler(
                kvp.Key,
                (position, assetId) => {
                return(GameObject.Instantiate <GameObject>(kvp.Value));
            },
                (spawned) => GameObject.Destroy(spawned)
                );
        }

        // サーバーアドレスの取得
        string address;

        if (string.IsNullOrEmpty(Application.absoluteURL))
        {
            address = "localhost";
        }
        else
        {
            address = new Uri(Application.absoluteURL).GetComponents(UriComponents.Host, UriFormat.Unescaped);
        }

        // サーバーへ接続する
        _Client = new NetworkClient();
        _Client.Connect(address, this.Port);
        _Client.RegisterHandler(
            MsgType.Connect,
            (netMsg) => {
            ClientScene.Ready(netMsg.conn);
            ClientScene.AddPlayer(0);
        }
            );

        // ギミック無効化要求ハンドラ登録
        _Client.RegisterHandler(
            MyMsgType.DisableGimmick,
            (netMsg) => {
            var gimmicks = Server.Instance.GetComponentsInChildren <Gimmick>(true);
            for (int i = 0; i < gimmicks.Length; i++)
            {
                var gimmick = gimmicks[i];
                var c       = gimmick.GetComponent <Collider2D>();
                if (c != null)
                {
                    c.enabled = false;                             // 一旦衝突判定を無効化しておかないとクライアント側で正しい初期位置に戻ってくれない
                }
                gimmick.gameObject.SetActive(false);
                //gimmick.Initialize();
            }
        }
            );

        // ギミック有効化要求ハンドラ登録
        _Client.RegisterHandler(
            MyMsgType.EnableGimmick,
            (netMsg) => {
            var gimmicks = Server.Instance.GetComponentsInChildren <Gimmick>(true);
            for (int i = 0; i < gimmicks.Length; i++)
            {
                gimmicks[i].gameObject.SetActive(true);
            }
        }
            );

        // ギミック衝突判定有効化要求ハンドラ登録
        _Client.RegisterHandler(
            MyMsgType.EnableGimmickCollision,
            (netMsg) => {
            var gimmicks = Server.Instance.GetComponentsInChildren <Gimmick>(true);
            for (int i = 0; i < gimmicks.Length; i++)
            {
                var gimmick = gimmicks[i];
                var c       = gimmick.GetComponent <Collider2D>();
                if (c != null)
                {
                    c.enabled = true;
                }
            }
        }
            );
    }
Esempio n. 15
0
 public void SetUpServer()
 {
     NetworkServer.Listen(-1);
     NetworkServer.SpawnObjects();
     ClientScene.ConnectLocalServer();
 }
Esempio n. 16
0
File: Ship.cs Progetto: tgrosh/hX
    // Update is called once per frame
    protected void Update()
    {
        movementRange = baseMovementRange + (boosterRange * boosterCount);


        if (ownerId != NetworkInstanceId.Invalid && ownerId.Value != 0)
        {
            if (hasMoved)
            {
                spotlight.color = owner.color + Color.white * .5f;
            }
            else
            {
                spotlight.color = Color.red;
            }

            if ((Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(KeyCode.RightAlt)) && Player.localPlayer.playerActive && owner == Player.localPlayer)
            {
                spotlight.gameObject.SetActive(true);
            }
            else
            {
                spotlight.gameObject.SetActive(false);
            }
        }

        if (colliderTransform != null)
        {
            colliderTransform.localScale = new Vector3(movementRange, movementRange, 2);
        }

        if (travelDestination != NetworkInstanceId.Invalid)
        {
            targetPoint = ClientScene.FindLocalObject(travelDestination).transform.position;

            if (transform.position != targetPoint)
            {
                Quaternion look = Quaternion.LookRotation(-(targetPoint - transform.position), Vector3.forward);
                look.x             = look.y = 0;
                transform.rotation = look;

                if (Vector3.Distance(transform.position, targetPoint) > .01f)
                {
                    transform.position = Vector3.Lerp(transform.position, targetPoint, moveSpeed * Time.deltaTime);
                }
                else
                {
                    travelDestination  = NetworkInstanceId.Invalid;
                    transform.position = targetPoint;
                    GameManager.singleton.ResetCamera();
                }

                if (Vector3.Distance(transform.position, targetPoint) <= .01f)
                {
                    hasMoved = true;

                    if (OnShipMoveEnd != null)
                    {
                        OnShipMoveEnd(this);
                    }
                }
            }
        }
    }
Esempio n. 17
0
        private static void Postfix()
        {
            // for some reason using entity_item_security_key directly doesn't work well in MP,
            // so take the relatively simple cloak powerup and give it the appearance and type of a security key
            GameObject prefab      = PrefabManager.item_prefabs[(int)ItemPrefab.entity_item_cloak];
            var        prefabkeyA2 = PrefabManager.item_prefabs[(int)ItemPrefab.entity_item_security_key].GetChildByName("keyA2");

            for (int i = 0; i < CTF.TeamCount; i++)
            {
                GameObject flag = UnityEngine.Object.Instantiate(prefab, Vector3.zero, Quaternion.identity);
                UnityEngine.Object.Destroy(flag.GetChildByName("cloak_ball (1)"));
                var      color      = CTF.FlagColor(i);
                var      lightColor = MPTeams.TeamColor(MPTeams.AllTeams[i], 5);
                Material newMat     = null;
                var      keyA2      = UnityEngine.Object.Instantiate(prefabkeyA2, flag.transform);
                foreach (var rend in keyA2.GetComponentsInChildren <MeshRenderer>())
                {
                    if (newMat == null)
                    {
                        newMat = new Material(rend.sharedMaterial.shader);
                        newMat.CopyPropertiesFromMaterial(rend.sharedMaterial);
                        newMat.SetColor("_Color", color);
                        newMat.SetColor("_EmissionColor", color);
                    }
                    rend.sharedMaterial = newMat;
                }
                var light = flag.GetChildByName("_light").GetComponent <Light>();
                light.color = lightColor;
                //light.intensity = 4.455539f;
                light.intensity       = 2f;
                light.range           = 4f;
                light.bounceIntensity = 0f;
                keyA2.GetChildByName("inner_ring001").GetComponent <HighlighterConstant>().color = color;
                var partRend   = keyA2.GetChildByName("outer_ring_004").GetChildByName("_particle1").GetComponent <ParticleSystemRenderer>();
                var newPartMat = new Material(partRend.sharedMaterial.shader);
                newPartMat.CopyPropertiesFromMaterial(partRend.sharedMaterial);
                newPartMat.SetColor("_CoreColor", color);
                newPartMat.SetColor("_TintColor", color);
                partRend.sharedMaterial = newPartMat;

                if (flag == null)
                {
                    Debug.LogWarningFormat("CTF: Failed to instantiate prefab: {0} in RegisterSpawnHandlers", prefab.name);
                    return;
                }
                var assetId = CTF.FlagAssetId(i);
                var netId   = flag.GetComponent <NetworkIdentity>();
                netId.GetType().GetField("m_AssetId", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(netId, assetId);
                UnityEngine.Object.DontDestroyOnLoad(flag);
                flag.SetActive(false);
                var item = flag.GetComponent <Item>();
                //item.m_current_segment = -1;
                //item.m_stationary = false;
                item.m_index = i;
                //item.m_light_flicker = 0;
                item.m_type          = ItemType.KEY_SECURITY;
                item.m_rotate_speed  = 180f;
                item.m_light_flicker = 0.2f;
                //flag.tag = "Item";
                //flag.GetComponent<NetworkIdentity>().a
                CTF.FlagObjs.Add(flag);
                //Debug.Log("Flag " + i + " color " + color + " assetid " + flag.GetComponent<NetworkIdentity>().assetId);
                m_registered_prefabs.Add(assetId, flag);
                ClientScene.RegisterSpawnHandler(assetId, NetworkSpawnItemHandler, NetworkUnspawnItemHandler);
            }
            Debug.Log("CTF: Created " + CTF.FlagObjs.Count + " flag prefabs");
        }
Esempio n. 18
0
    private void Update()
    {
        if (ControlledByPlayer == NetworkInstanceId.Invalid)
        {
            return;
        }

        //don't start it too early:
        if (!isServer && !PlayerManager.LocalPlayer)
        {
            return;
        }

        //only perform the rest of the update if the weapon is in the hand of the local player or
        //we are the server
        if (!isServer && PlayerManager.LocalPlayer != ClientScene.FindLocalObject(ControlledByPlayer))
        {
            return;
        }

        //update the time until the next shot can happen
        if (FireCountDown > 0)
        {
            FireCountDown -= Time.deltaTime;
            //prevents the next projectile taking miliseconds longer than it should
            if (FireCountDown < 0)
            {
                FireCountDown = 0;
            }
        }

        //this will only be executed on the server since only the server
        //maintains the queued actions
        if (queuedShots.Count > 0 && FireCountDown <= 0)
        {
            //fire the next shot in the queue
            DequeueAndProcessServerShot();
        }

        if (queuedUnload && queuedShots.Count == 0)
        {
            // done processing shot queue,
            // perform the queued unload action, causing all clients and server to update their version of this Weapon
            //due to the syncvar hook
            MagNetID     = NetworkInstanceId.Invalid;
            queuedUnload = false;
        }
        if (queuedLoadMagNetID != NetworkInstanceId.Invalid && queuedShots.Count == 0)
        {
            //done processing shot queue, perform the reload, causing all clients and server to update their version of this Weapon
            //due to the syncvar hook
            MagNetID           = queuedLoadMagNetID;
            queuedLoadMagNetID = NetworkInstanceId.Invalid;
        }

        //rest of the Update is only needed for the weapon if it is held by the local player
        if (PlayerManager.LocalPlayer != ClientScene.FindLocalObject(ControlledByPlayer))
        {
            return;
        }

        //check if burst should stop if the weapon is held by the local player
        if (Input.GetMouseButtonUp(0))
        {
            StopAutomaticBurst();
        }
    }
        public static T FindClientComponent <T>(NetworkInstanceId id) where T : Component
        {
            var otherObject = ClientScene.FindLocalObject(id);

            return(otherObject.GetComponent <T>());
        }
Esempio n. 20
0
    /// <summary>
    /// Attempt to fire a single shot of the weapon (this is called once per bullet for a burst of automatic fire). This
    /// should be invoked by the client when they want to perform a shot.
    /// </summary>
    /// <param name="isSuicide">if the shot should be a suicide shot, striking the weapon holder</param>
    /// <returns>true iff something happened</returns>
    private bool AttemptToFireWeapon(bool isSuicide)
    {
        PlayerScript shooter = ClientScene.FindLocalObject(ControlledByPlayer).GetComponent <PlayerScript>();

        if (shooter.canNotInteract())
        {
            return(false);
        }
        //suicide is not allowed in some cases.
        isSuicide = isSuicide && AllowSuicide;
        //ignore if we are hovering over UI
        if (EventSystem.current.IsPointerOverGameObject())
        {
            return(false);
        }

        //if we have no mag/clip loaded play empty sound
        if (CurrentMagazine == null)
        {
            StopAutomaticBurst();
            PlayEmptySFX();
            return(true);
        }
        //if we are out of ammo for this weapon eject magazine and play out of ammo sfx
        else if (Projectile != null && CurrentMagazine.ammoRemains <= 0 && FireCountDown <= 0)
        {
            StopAutomaticBurst();
            RequestUnload(CurrentMagazine);
            OutOfAmmoSFX();
            return(true);
        }
        else
        {
            //if we have a projectile to shoot, we have ammo and we are not waiting to be allowed to shoot again, Fire!
            if (Projectile != null && CurrentMagazine.ammoRemains > 0 && FireCountDown <= 0)
            {
                //fire a single round if its a semi or automatic weapon
                if (WeaponType == WeaponType.SemiAutomatic || WeaponType == WeaponType.FullyAutomatic)
                {
                    //shot direction
                    Vector2 dir = (Camera.main.ScreenToWorldPoint(Input.mousePosition) -
                                   PlayerManager.LocalPlayer.transform.position).normalized;
                    if (!isServer)
                    {
                        //we're a client, request the server to make us shoot
                        RequestShootMessage.Send(gameObject, dir, Projectile.name, UIManager.DamageZone, isSuicide,
                                                 PlayerManager.LocalPlayer);
                        //Prediction (client bullets don't do any damage)
                        dir = ApplyRecoil(dir);
                        DisplayShot(PlayerManager.LocalPlayer, dir, UIManager.DamageZone, isSuicide);
                    }
                    else
                    {
                        // we are the server, go ahead and shoot
                        ServerShoot(PlayerManager.LocalPlayer, dir, UIManager.DamageZone, isSuicide);
                    }

                    if (WeaponType == WeaponType.FullyAutomatic)
                    {
                        PlayerManager.LocalPlayerScript.mouseInputController.OnMouseDownDir(dir);
                    }
                }

                if (WeaponType == WeaponType.FullyAutomatic && !InAutomaticAction)
                {
                    StartBurst(isSuicide);
                }
                else
                {
                    ContinueBurst(isSuicide);
                }

                return(true);
            }
        }

        return(true);
    }
Esempio n. 21
0
    void UpdatePassengerOnSeats()
    {
        hasDriver = false;
        for (int i = 0; i < Seats.Length; i++)
        {
            if (Seats[i].PassengerID != -1)
            {
                //搜索具有乘客ID的玩家将其捕捉到车辆中。
                NetworkInstanceId passengerid = new NetworkInstanceId((uint)Seats[i].PassengerID);
                GameObject        obj         = ClientScene.FindLocalObject(passengerid);
                if (obj)
                {
                    CharacterDriver driver = obj.GetComponent <CharacterDriver>();

                    if (driver)
                    {
                        driver.NeedParachute = NeedParachute;

                        FPSController fps = driver.GetComponent <FPSController>();
                        if (fps)
                        {
                            fps.FixedRotation();
                        }

                        if (Seats[i].ForceView != PlayerViewType.None)
                        {
                            PlayerView view = driver.GetComponent <PlayerView>();
                            if (view)
                            {
                                view.View          = Seats[i].ForceView;
                                view.OrbitDistance = Seats[i].ViewDistance;
                            }
                        }
                        if (Seats[i].FixRotation)
                        {
                            driver.transform.rotation = Seats[i].transform.rotation;
                        }
                        driver.character.Motor.grounded     = false;
                        driver.transform.position           = Seats[i].transform.position;
                        driver.transform.parent             = Seats[i].transform;
                        driver.CurrentVehicle               = this;
                        driver.character.controller.enabled = false;
                        driver.DrivingSeat = Seats[i];
                        hasDriver          = true;
                        if (driver.character.IsAlive == false)
                        {
                            Seats[i].PassengerID = -1;
                        }
                    }
                }
            }
            else
            {
                Seats[i].CleanSeat();
            }
        }

        if (isServer)
        {
            GenSeatsData();
        }
    }
Esempio n. 22
0
    void CmdDisablePickup(NetworkInstanceId pickupID)
    {
        GameObject pickup = ClientScene.FindLocalObject(pickupID);

        pickup.GetComponent <PickupBehaviour>().Disable();
    }
Esempio n. 23
0
        /// <summary>
        /// Deserialize a message from the network.
        /// </summary>
        /// <remarks>
        /// Only receives what it needs and decompresses floats if you chose to.
        /// </remarks>
        /// <param name="writer">The Networkreader to read from.</param>
        override public void Deserialize(NetworkReader reader)
        {
            // The first received byte tells us what we need to be syncing.
            byte syncInfoByte        = reader.ReadByte();
            bool syncPosition        = shouldSyncPosition(syncInfoByte);
            bool syncRotation        = shouldSyncRotation(syncInfoByte);
            bool syncScale           = shouldSyncScale(syncInfoByte);
            bool syncVelocity        = shouldSyncVelocity(syncInfoByte);
            bool syncAngularVelocity = shouldSyncAngularVelocity(syncInfoByte);

            NetworkInstanceId netID = reader.ReadNetworkId();
            int syncIndex           = (int)reader.ReadPackedUInt32();

            state.ownerTimestamp = (int)reader.ReadPackedUInt32();

            // Find the GameObject
            GameObject ob = null;

            if (NetworkServer.active)
            {
                ob = NetworkServer.FindLocalObject(netID);
            }
            else
            {
                ob = ClientScene.FindLocalObject(netID);
            }

            if (!ob)
            {
                Debug.LogWarning("Could not find target for network state message.");
                return;
            }

            // It doesn't matter which SmoothSync is returned since they all have the same list.
            smoothSync = ob.GetComponent <SmoothSync>();

            // If we want the server to relay non-owned object information out to other clients, set these variables so we know what we need to send.
            if (NetworkServer.active && !smoothSync.hasAuthority)
            {
                state.serverShouldRelayPosition        = syncPosition;
                state.serverShouldRelayRotation        = syncRotation;
                state.serverShouldRelayScale           = syncScale;
                state.serverShouldRelayVelocity        = syncVelocity;
                state.serverShouldRelayAngularVelocity = syncAngularVelocity;
            }

            // Find the correct object to sync according to the syncIndex.
            for (int i = 0; i < smoothSync.childObjectSmoothSyncs.Length; i++)
            {
                if (smoothSync.childObjectSmoothSyncs[i].syncIndex == syncIndex)
                {
                    smoothSync = smoothSync.childObjectSmoothSyncs[i];
                }
            }

            if (!smoothSync)
            {
                Debug.LogWarning("Could not find target for network state message.");
                return;
            }

            // Read position.
            if (syncPosition)
            {
                if (smoothSync.isPositionCompressed)
                {
                    if (smoothSync.isSyncingXPosition)
                    {
                        state.position.x = HalfHelper.Decompress(reader.ReadUInt16());
                    }
                    if (smoothSync.isSyncingYPosition)
                    {
                        state.position.y = HalfHelper.Decompress(reader.ReadUInt16());
                    }
                    if (smoothSync.isSyncingZPosition)
                    {
                        state.position.z = HalfHelper.Decompress(reader.ReadUInt16());
                    }
                }
                else
                {
                    if (smoothSync.isSyncingXPosition)
                    {
                        state.position.x = reader.ReadSingle();
                    }
                    if (smoothSync.isSyncingYPosition)
                    {
                        state.position.y = reader.ReadSingle();
                    }
                    if (smoothSync.isSyncingZPosition)
                    {
                        state.position.z = reader.ReadSingle();
                    }
                }
            }
            else
            {
                if (smoothSync.stateCount > 0)
                {
                    state.position = smoothSync.stateBuffer[0].position;
                }
                else
                {
                    state.position = smoothSync.getPosition();
                }
            }
            // Read rotation.
            if (syncRotation)
            {
                Vector3 rot = new Vector3();
                if (smoothSync.isRotationCompressed)
                {
                    if (smoothSync.isSyncingXRotation)
                    {
                        rot.x = HalfHelper.Decompress(reader.ReadUInt16());
                    }
                    if (smoothSync.isSyncingYRotation)
                    {
                        rot.y = HalfHelper.Decompress(reader.ReadUInt16());
                    }
                    if (smoothSync.isSyncingZRotation)
                    {
                        rot.z = HalfHelper.Decompress(reader.ReadUInt16());
                    }
                    state.rotation = Quaternion.Euler(rot);
                }
                else
                {
                    if (smoothSync.isSyncingXRotation)
                    {
                        rot.x = reader.ReadSingle();
                    }
                    if (smoothSync.isSyncingYRotation)
                    {
                        rot.y = reader.ReadSingle();
                    }
                    if (smoothSync.isSyncingZRotation)
                    {
                        rot.z = reader.ReadSingle();
                    }
                    state.rotation = Quaternion.Euler(rot);
                }
            }
            else
            {
                if (smoothSync.stateCount > 0)
                {
                    state.rotation = smoothSync.stateBuffer[0].rotation;
                }
                else
                {
                    state.rotation = smoothSync.getRotation();
                }
            }
            // Read scale.
            if (syncScale)
            {
                if (smoothSync.isScaleCompressed)
                {
                    if (smoothSync.isSyncingXScale)
                    {
                        state.scale.x = HalfHelper.Decompress(reader.ReadUInt16());
                    }
                    if (smoothSync.isSyncingYScale)
                    {
                        state.scale.y = HalfHelper.Decompress(reader.ReadUInt16());
                    }
                    if (smoothSync.isSyncingZScale)
                    {
                        state.scale.z = HalfHelper.Decompress(reader.ReadUInt16());
                    }
                }
                else
                {
                    if (smoothSync.isSyncingXScale)
                    {
                        state.scale.x = reader.ReadSingle();
                    }
                    if (smoothSync.isSyncingYScale)
                    {
                        state.scale.y = reader.ReadSingle();
                    }
                    if (smoothSync.isSyncingZScale)
                    {
                        state.scale.z = reader.ReadSingle();
                    }
                }
            }
            else
            {
                if (smoothSync.stateCount > 0)
                {
                    state.scale = smoothSync.stateBuffer[0].scale;
                }
                else
                {
                    state.scale = smoothSync.getScale();
                }
            }
            // Read velocity.
            if (syncVelocity)
            {
                if (smoothSync.isVelocityCompressed)
                {
                    if (smoothSync.isSyncingXVelocity)
                    {
                        state.velocity.x = HalfHelper.Decompress(reader.ReadUInt16());
                    }
                    if (smoothSync.isSyncingYVelocity)
                    {
                        state.velocity.y = HalfHelper.Decompress(reader.ReadUInt16());
                    }
                    if (smoothSync.isSyncingZVelocity)
                    {
                        state.velocity.z = HalfHelper.Decompress(reader.ReadUInt16());
                    }
                }
                else
                {
                    if (smoothSync.isSyncingXVelocity)
                    {
                        state.velocity.x = reader.ReadSingle();
                    }
                    if (smoothSync.isSyncingYVelocity)
                    {
                        state.velocity.y = reader.ReadSingle();
                    }
                    if (smoothSync.isSyncingZVelocity)
                    {
                        state.velocity.z = reader.ReadSingle();
                    }
                }
            }
            else
            {
                state.velocity = Vector3.zero;
            }
            // Read anguluar velocity.
            if (syncAngularVelocity)
            {
                if (smoothSync.isAngularVelocityCompressed)
                {
                    if (smoothSync.isSyncingXAngularVelocity)
                    {
                        state.angularVelocity.x = HalfHelper.Decompress(reader.ReadUInt16());
                    }
                    if (smoothSync.isSyncingYAngularVelocity)
                    {
                        state.angularVelocity.y = HalfHelper.Decompress(reader.ReadUInt16());
                    }
                    if (smoothSync.isSyncingZAngularVelocity)
                    {
                        state.angularVelocity.z = HalfHelper.Decompress(reader.ReadUInt16());
                    }
                }
                else
                {
                    if (smoothSync.isSyncingXAngularVelocity)
                    {
                        state.angularVelocity.x = reader.ReadSingle();
                    }
                    if (smoothSync.isSyncingYAngularVelocity)
                    {
                        state.angularVelocity.y = reader.ReadSingle();
                    }
                    if (smoothSync.isSyncingZAngularVelocity)
                    {
                        state.angularVelocity.z = reader.ReadSingle();
                    }
                }
            }
            else
            {
                state.angularVelocity = Vector3.zero;
            }
        }
Esempio n. 24
0
    void Update()
    {
        // show if connected, not in world, not in charcreation
        if (manager.IsClientConnected() && !Utils.ClientLocalPlayer() && !uiCharacterCreation.IsVisible())
        {
            panel.SetActive(true);

            // characters available message received already?
            if (manager.charactersAvailableMsg != null)
            {
                // instantiate/destroy enough slots
                CharactersAvailableMsg.CharacterPreview[] characters = manager.charactersAvailableMsg.characters;
                UIUtils.BalancePrefabs(slotPrefab.gameObject, characters.Length, content);

                // refresh all
                List <Player> prefabs = manager.GetPlayerClasses();
                for (int i = 0; i < characters.Length; ++i)
                {
                    Player prefab = prefabs.Find(p => p.name == characters[i].className);
                    UICharacterSelectionSlot slot = content.GetChild(i).GetComponent <UICharacterSelectionSlot>();

                    // name and icon
                    slot.nameText.text = characters[i].name;
                    slot.image.sprite  = prefab.GetComponent <Player>().classIcon;

                    // select button: calls AddPLayer which calls OnServerAddPlayer
                    int icopy = i; // needed for lambdas, otherwise i is Count
                    slot.selectButton.onClick.SetListener(() => {
                        CharacterSelectMsg message = new CharacterSelectMsg {
                            index = icopy
                        };
                        ClientScene.AddPlayer(manager.client.connection, 0, message);

                        // make sure we can't select twice and call AddPlayer twice
                        panel.SetActive(false);
                    });

                    // delete button: sends delete message
                    slot.deleteButton.onClick.SetListener(() => {
                        CharacterDeleteMsg message = new CharacterDeleteMsg {
                            index = icopy
                        };
                        manager.client.Send(CharacterDeleteMsg.MsgId, message);
                    });
                }

                createButton.interactable = characters.Length < manager.characterLimit;
                createButton.onClick.SetListener(() => {
                    panel.SetActive(false);
                    uiCharacterCreation.Show();
                });

                quitButton.onClick.SetListener(() => { NetworkManagerMMO.Quit(); });
            }

            // addon system hooks
            Utils.InvokeMany(typeof(UICharacterSelection), this, "Update_");
        }
        else
        {
            panel.SetActive(false);
        }
    }
Esempio n. 25
0
    void Update()
    {
        if (!exploPause)
        {
            exploTimer -= Time.deltaTime;
        }

        // Check if the timer is over
        if (exploTimer <= 0)
        {
            exploTimer = 10.0f;

            GameObject exploParent = new GameObject();
            exploParent.AddComponent <NetworkIdentity> ().localPlayerAuthority = true;
            ClientScene.RegisterPrefab(exploParent);
            exploParent.name = "Explosions";
            Destroy(exploParent, exploDispa);

            // Center of the explosion
            if (playerMove)
            {
                var position = settings.RoundPosition(myTransform.position + new Vector3(0, 0.6f, 0));
                playerMove.CmdSpawnExplo(position.x, position.z, exploParent);
            }

            // Propagation of the explosion
            ExploPropag(ref up, Directions.Up, exploParent);
            ExploPropag(ref right, Directions.Right, exploParent);
            ExploPropag(ref down, Directions.Down, exploParent);
            ExploPropag(ref left, Directions.Left, exploParent);

            if (playerMove)
            {
                playerMove.RpcIncrem();
            }

            // Play the explosion sound
            AudioSource.PlayClipAtPoint(exploSound, myTransform.position);

            // Destruction of the bomb
            Destroy(gameObject);
        }

        // Check if the bomb is pushed
        if (pushing)
        {
            // Make the animation of the push
            myTransform.position = Vector3.MoveTowards(myTransform.position, nextPos, Time.deltaTime * 10.0f);

            // If bomb pushing animation finished
            if (myTransform.position == nextPos)
            {
                pushing = false;
                CmdPush(Vector3.zero);
                Push(Vector3.zero);
            }
        }

        if (midAxe != Vector3.zero)
        {
            myTransform.RotateAround(midAxe, Vector3.left, 100.0f * Time.deltaTime);
        }
    }
Esempio n. 26
0
        void OnGUI()
        {
            if (!showGUI)
            {
                return;
            }

            NetworkManager manager = (NetworkManager)this.manager;

            int       xpos    = 10 + offsetX;
            int       ypos    = 40 + offsetY;
            const int spacing = 24;

            bool noConnection = (manager.client == null || manager.client.connection == null ||
                                 manager.client.connection.connectionId == -1);

            if (!manager.IsClientConnected() && !NetworkServer.active && manager.matchMaker == null)
            {
                if (noConnection)
                {
                    if (UnityEngine.Application.platform != RuntimePlatform.WebGLPlayer)
                    {
                        if (GUI.Button(new Rect(xpos, ypos, 200, 20), "LAN Host(H)"))
                        {
                            manager.StartHost();
                        }
                        ypos += spacing;
                    }

                    if (GUI.Button(new Rect(xpos, ypos, 105, 20), "LAN Client(C)"))
                    {
                        manager.StartClient();
                    }

                    manager.networkAddress = GUI.TextField(new Rect(xpos + 100, ypos, 95, 20), manager.networkAddress);
                    ypos += spacing;

                    if (UnityEngine.Application.platform == RuntimePlatform.WebGLPlayer)
                    {
                        // cant be a server in webgl build
                        GUI.Box(new Rect(xpos, ypos, 200, 25), "(  WebGL cannot be server  )");
                        ypos += spacing;
                    }
                    else
                    {
                        if (GUI.Button(new Rect(xpos, ypos, 200, 20), "LAN Server Only(S)"))
                        {
                            manager.StartServer();
                        }
                        ypos += spacing;
                    }
                }
                else
                {
                    GUI.Label(new Rect(xpos, ypos, 200, 20), "Connecting to " + manager.networkAddress + ":" + manager.networkPort + "..");
                    ypos += spacing;


                    if (GUI.Button(new Rect(xpos, ypos, 200, 20), "Cancel Connection Attempt"))
                    {
                        manager.StopClient();
                    }
                }
            }
            else
            {
                if (NetworkServer.active)
                {
                    string serverMsg = "Server: port=" + manager.networkPort;
                    if (manager.useWebSockets)
                    {
                        serverMsg += " (Using WebSockets)";
                    }
                    GUI.Label(new Rect(xpos, ypos, 300, 20), serverMsg);
                    ypos += spacing;
                }
                if (manager.IsClientConnected())
                {
                    GUI.Label(new Rect(xpos, ypos, 300, 20), "Client: address=" + manager.networkAddress + " port=" + manager.networkPort);
                    ypos += spacing;
                }
            }

            if (manager.IsClientConnected() && !ClientScene.ready)
            {
                if (GUI.Button(new Rect(xpos, ypos, 200, 20), "Client Ready"))
                {
                    ClientScene.Ready(manager.client.connection);

                    if (ClientScene.localPlayers.Count == 0)
                    {
                        ClientScene.AddPlayer(0);
                    }
                }
                ypos += spacing;
            }

            if (NetworkServer.active || manager.IsClientConnected())
            {
                if (GUI.Button(new Rect(xpos, ypos, 200, 20), "Stop (X)"))
                {
                    NetworkServer.SetAllClientsNotReady();
                    if (NetworkServer.active)
                    {
                        manager.StopHost();
                    }
                    else
                    {
                        manager.StopClient();
                    }
                }
                ypos += spacing;
            }

            if (!NetworkServer.active && !manager.IsClientConnected() && noConnection)
            {
                ypos += 10;

                if (UnityEngine.Application.platform == RuntimePlatform.WebGLPlayer)
                {
                    GUI.Box(new Rect(xpos - 5, ypos, 220, 25), "(WebGL cannot use Match Maker)");
                    return;
                }

                if (manager.matchMaker == null)
                {
                    if (GUI.Button(new Rect(xpos, ypos, 200, 20), "Enable Match Maker (M)"))
                    {
                        manager.StartMatchMaker();
                    }
                    ypos += spacing;
                }
                else
                {
                    if (manager.matchInfo == null)
                    {
                        if (manager.matches == null)
                        {
                            if (GUI.Button(new Rect(xpos, ypos, 200, 20), "Create Internet Match"))
                            {
                                manager.StartHostAll(manager.matchName, manager.matchSize);
                                //manager.matchMaker.CreateMatch(manager.matchName, manager.matchSize, true, "", "", "", 0, 0, manager.OnMatchCreate);
                            }
                            ypos += spacing;

                            GUI.Label(new Rect(xpos, ypos, 100, 20), "Room Name:");
                            manager.matchName = GUI.TextField(new Rect(xpos + 100, ypos, 100, 20), manager.matchName);
                            ypos += spacing;

                            ypos += 10;

                            if (GUI.Button(new Rect(xpos, ypos, 200, 20), "Find Internet Match"))
                            {
                                manager.matchMaker.ListMatches(0, 20, "", false, 0, 0, manager.OnMatchList);
                            }
                            ypos += spacing;
                        }
                        else
                        {
                            for (int i = 0; i < manager.matches.Count; i++)
                            {
                                var match = manager.matches[i];
                                if (GUI.Button(new Rect(xpos, ypos, 200, 20), "Join Match:" + match.name))
                                {
                                    manager.StartClientAll(match);
                                    //manager.matchName = match.name;
                                    //manager.matchMaker.JoinMatch(match.networkId, "", "", "", 0, 0, manager.OnMatchJoined);
                                }
                                ypos += spacing;
                            }

                            if (GUI.Button(new Rect(xpos, ypos, 200, 20), "Back to Match Menu"))
                            {
                                manager.matches = null;
                            }
                            ypos += spacing;
                        }
                    }

                    if (GUI.Button(new Rect(xpos, ypos, 200, 20), "Change MM server"))
                    {
                        showServer = !showServer;
                    }
                    if (showServer)
                    {
                        ypos += spacing;
                        if (GUI.Button(new Rect(xpos, ypos, 100, 20), "Local"))
                        {
                            manager.SetMatchHost("localhost", 1337, false);
                            showServer = false;
                        }
                        ypos += spacing;
                        if (GUI.Button(new Rect(xpos, ypos, 100, 20), "Internet"))
                        {
                            manager.SetMatchHost("mm.unet.unity3d.com", 443, true);
                            showServer = false;
                        }
                        ypos += spacing;
                        if (GUI.Button(new Rect(xpos, ypos, 100, 20), "Staging"))
                        {
                            manager.SetMatchHost("staging-mm.unet.unity3d.com", 443, true);
                            showServer = false;
                        }
                    }

                    ypos += spacing;

                    GUI.Label(new Rect(xpos, ypos, 300, 20), "MM Uri: " + manager.matchMaker.baseUri);
                    ypos += spacing;

                    if (GUI.Button(new Rect(xpos, ypos, 200, 20), "Disable Match Maker"))
                    {
                        manager.StopMatchMaker();
                    }
                    ypos += spacing;
                }
            }
        }
Esempio n. 27
0
#pragma warning disable 618
        [ClientRpc] public void RpcSetBuilding(NetworkInstanceId buildingId)
        {
            Building = ClientScene.FindLocalObject(buildingId).GetComponent <Building>();
#pragma warning restore 618
        }
Esempio n. 28
0
    void RpcSetSpellslingerAsInactive(NetworkInstanceId spellSlingerWhoDamagedMe)
    {
        GameObject spellSlinger = ClientScene.FindLocalObject(spellSlingerWhoDamagedMe);

        gameObject.SetActive(false);
    }
Esempio n. 29
0
    public void RpcUpdateMaze(NetworkInstanceId nid)
    {
        GameObject newMaze = ClientScene.FindLocalObject(nid);

        LogicSystem.current.currentMaze = newMaze;
    }
 private void startAsLocalClient()
 {
     networkClient = ClientScene.ConnectLocalServer();
     networkClient.RegisterHandler(MsgType.Connect, OnConnected_Client);
 }