public void CreateBall(int BallType, float ThrowForce, Vector3 ThrowDirection, Vector3 ThrownFrom, NetworkPlayer BelongsTo)
    {
        Debug.Log(BelongsTo);

        GameObject Ball = (GameObject)Instantiate(BallBag[--BallType], ThrownFrom, Quaternion.Euler(ThrowDirection));

        if (Network.isServer)
        {
            GameObject target = ServerDetails.GetPlayer(BelongsTo);
            if (target.GetComponent <PlayerControl>().baseEnergy > 0)
            {
                target.GetComponent <PlayerControl>().DecreaseEnergy(Ball.GetComponent <DodgeBall>().BaseEnergyCost);
                GameObject.FindGameObjectWithTag("NetworkController").GetComponent <NetworkController>().mNetworkview.RPC("SetEnergy", target.GetComponent <PlayerControl>().mNetworkPlayer, target.GetComponent <PlayerControl>().baseEnergy);
            }
            else
            {
                GameObject.FindGameObjectWithTag("NetworkController").GetComponent <NetworkController>().mNetworkview.RPC("SetEnergy", target.GetComponent <PlayerControl>().mNetworkPlayer, 0);
            }
        }

        Ball.GetComponent <DodgeBall>().Launch(ThrowDirection, ThrowForce, BelongsTo);
        Ball.transform.SetParent(transform.FindChild("BallsInMotion"));

        BallsInMotion.Add(Ball);
    }
    public void PlayerRespawn(NetworkPlayer Player, Vector3 Position, Quaternion Rotation, NetworkMessageInfo info)
    {
        if (Network.isServer)
        {
            if (ServerDetails.HasPlayer(info.sender))
            {
                Debug.Log("Server Has player");
                GameObject P = ServerDetails.GetPlayer(info.sender);
                P.GetComponent <PlayerMovement>().SetPosition(Position);
                P.GetComponent <PlayerMovement>().SetRotation(Rotation);
                P.GetComponent <PlayerMovement>().Movement(0.1f, 0.1f, Position, Vector3.zero);
                P.GetComponent <PlayerControl>().pState = PlayerState.Alive;
                mNetworkview.RPC("PlayerRespawn", RPCMode.Others, info.sender, Position, Rotation);
            }
        }

        if (Network.isClient)
        {
            if (ServerDetails.HasPlayer(Player))
            {
                LastPosition = Position;
                LastRotation = Rotation;
                GameObject P = ServerDetails.GetPlayer(Player);
                P.GetComponent <PlayerMovement>().SetPosition(Position);
                P.GetComponent <PlayerMovement>().SetRotation(Rotation);
                P.GetComponent <PlayerControl>().pState = PlayerState.Alive;
            }
        }
    }
 public void UpdateServerCharge(NetworkMessageInfo info)
 {
     if (ServerDetails.HasPlayer(info.sender))
     {
         GameObject P = ServerDetails.GetPlayer(info.sender);
         P.GetComponent <PlayerWeapon>().ChargeThrow();
         mNetworkview.RPC("UpdateClientCharge", RPCMode.Others, info.sender);
     }
 }
 public void UpdateServerWeapon(int ballType, NetworkMessageInfo info)
 {
     if (ServerDetails.HasPlayer(info.sender))
     {
         GameObject P = ServerDetails.GetPlayer(info.sender);
         P.GetComponent <PlayerWeapon>().SetWeapon(ballType);
         if (info.sender != null)
         {
             mNetworkview.RPC("UpdateClientWeapon", RPCMode.Others, info.sender, ballType);
         }
     }
 }
 public void UpdateServerMovement(float Horizontal, float Vertical, Vector3 LastPosition, Vector3 LastVelocity, NetworkMessageInfo info)
 {
     if (ServerDetails.HasPlayer(info.sender))
     {
         GameObject P = ServerDetails.GetPlayer(info.sender);
         P.GetComponent <PlayerMovement>().Movement(Horizontal, Vertical, LastPosition, LastVelocity);
         if (info.sender != null)
         {
             mNetworkview.RPC("UpdateClientMovement", RPCMode.Others, info.sender, Horizontal, Vertical, LastPosition, LastVelocity);
         }
     }
 }
 public void UpdateServerRotation(Quaternion RotationX, NetworkMessageInfo info)
 {
     if (ServerDetails.HasPlayer(info.sender))
     {
         GameObject P = ServerDetails.GetPlayer(info.sender);
         P.GetComponent <PlayerMovement>().SetRotation(RotationX);
         if (info.sender != null)
         {
             mNetworkview.RPC("UpdateClientRotation", RPCMode.Others, info.sender, RotationX);
         }
     }
 }
 public void UpdateServerJump(NetworkMessageInfo info)
 {
     if (ServerDetails.HasPlayer(info.sender))
     {
         GameObject P = ServerDetails.GetPlayer(info.sender);
         P.GetComponent <Animator>().SetBool("Jump", true);
         if (info.sender != null)
         {
             mNetworkview.RPC("UpdateClientJump", RPCMode.Others, info.sender);
         }
     }
 }
 public void UpdateClientCharge(NetworkPlayer Player, NetworkMessageInfo info)
 {
     if (Network.peerType == NetworkPeerType.Client)
     {
         //if (Player != LocalPlayer.GetComponent<PlayerControl>().mNetworkPlayer)
         if (ServerDetails.HasPlayer(Player))
         {
             GameObject P = ServerDetails.GetPlayer(Player);
             P.GetComponent <PlayerWeapon>().ChargeThrow();
         }
     }
 }
 public void UpdateServerRelease(Vector3 LookDir, float ChargeForce, NetworkMessageInfo info)
 {
     if (ServerDetails.HasPlayer(info.sender))
     {
         GameObject P = ServerDetails.GetPlayer(info.sender);
         //P.GetComponent<PlayerWeapon>().ChargingForce = ChargeForce;
         //P.GetComponent<PlayerWeapon>().ReleaseThrow(LookDir);
         if (info.sender != null)
         {
             mNetworkview.RPC("UpdateClientRelease", RPCMode.All, info.sender, LookDir, ChargeForce);
         }
     }
 }
 public void UpdateClientWeapon(NetworkPlayer Player, int ballType, NetworkMessageInfo info)
 {
     if (Network.peerType == NetworkPeerType.Client)
     {
         if (Player != LocalPlayer.GetComponent <PlayerControl>().mNetworkPlayer)
         {
             if (ServerDetails.HasPlayer(Player))
             {
                 GameObject P = ServerDetails.GetPlayer(Player);
                 P.GetComponent <PlayerWeapon>().SetWeapon(ballType);
             }
         }
     }
 }
 public void UpdateClientMovement(NetworkPlayer Player, float Horizontal, float Vertical, Vector3 LastPosition, Vector3 LastVelocity, NetworkMessageInfo info)
 {
     if (Network.peerType == NetworkPeerType.Client)
     {
         if (Player != LocalPlayer.GetComponent <PlayerControl>().mNetworkPlayer)
         {
             if (ServerDetails.HasPlayer(Player))
             {
                 GameObject P = ServerDetails.GetPlayer(Player);
                 P.GetComponent <PlayerMovement>().Movement(Horizontal, Vertical, LastPosition, LastVelocity);
             }
         }
     }
 }
 public void UpdateClientRotation(NetworkPlayer Player, Quaternion RotationX, NetworkMessageInfo info)
 {
     if (Network.peerType == NetworkPeerType.Client)
     {
         if (Player != LocalPlayer.GetComponent <PlayerControl>().mNetworkPlayer)
         {
             if (ServerDetails.HasPlayer(Player))
             {
                 GameObject P = ServerDetails.GetPlayer(Player);
                 P.GetComponent <PlayerMovement>().SetRotation(RotationX);
             }
         }
     }
 }
 public void UpdateClientJump(NetworkPlayer Player, NetworkMessageInfo info)
 {
     if (Network.peerType == NetworkPeerType.Client)
     {
         if (Player != LocalPlayer.GetComponent <PlayerControl>().mNetworkPlayer)
         {
             if (ServerDetails.HasPlayer(Player))
             {
                 GameObject P = ServerDetails.GetPlayer(Player);
                 P.GetComponent <Animator>().SetBool("Jump", true);
             }
         }
     }
 }
    public void PlayerDead(NetworkPlayer Player, NetworkMessageInfo info)
    {
        if (Network.isServer)
        {
            if (ServerDetails.HasPlayer(Player))
            {
                GameObject P = ServerDetails.GetPlayer(Player);
                P.GetComponent <PlayerControl>().pState = PlayerState.Dead;
                mLevelController.GetComponent <SpawnControl>().AddDeath(Player);
                mNetworkview.RPC("PlayerDead", RPCMode.Others, Player);
            }
        }

        if (Network.isClient)
        {
            if (ServerDetails.HasPlayer(Player))
            {
                GameObject P = ServerDetails.GetPlayer(Player);
                P.GetComponent <PlayerControl>().pState = PlayerState.Dead;
            }
        }
    }
 public void UpdateClientRelease(NetworkPlayer Player, Vector3 LookDir, float ChargeForce, NetworkMessageInfo info)
 {
     if (Network.peerType == NetworkPeerType.Client)
     {
         //if (Player != LocalPlayer.GetComponent<PlayerControl>().mNetworkPlayer)
         if (ServerDetails.HasPlayer(Player))
         {
             GameObject P = ServerDetails.GetPlayer(Player);
             P.GetComponent <PlayerWeapon>().ChargingForce = ChargeForce;
             P.GetComponent <PlayerWeapon>().ReleaseThrow(LookDir);
         }
     }
     if (Network.peerType == NetworkPeerType.Server)
     {
         if (ServerDetails.HasPlayer(Player))
         {
             GameObject P = ServerDetails.GetPlayer(Player);
             P.GetComponent <PlayerWeapon>().ChargingForce = ChargeForce;
             P.GetComponent <PlayerWeapon>().ReleaseThrow(LookDir);
         }
     }
 }
    public void PlayerAlive(NetworkPlayer Player, NetworkMessageInfo info)
    {
        if (Network.isServer)
        {
            if (ServerDetails.HasPlayer(info.sender))
            {
                GameObject P = ServerDetails.GetPlayer(info.sender);
                P.GetComponent <PlayerControl>().pState = PlayerState.Alive;
                if (info.sender != null)
                {
                    mNetworkview.RPC("PlayerAlive", RPCMode.Others, info.sender);
                }
            }
        }

        if (Network.isClient)
        {
            if (ServerDetails.HasPlayer(Player))
            {
                GameObject P = ServerDetails.GetPlayer(Player);
                P.GetComponent <PlayerControl>().pState = PlayerState.Alive;
            }
        }
    }