Example #1
0
    void HandleMovement()
    {
        PlayerMovePackage.Direction dir = PlayerMovePackage.Direction.Stop;

        if (Input.GetKey(Options.Controls.Forward))
        {
            dir = dir.Add(PlayerMovePackage.Direction.Up);
        }
        if (Input.GetKey(Options.Controls.Backward))
        {
            dir = dir.Add(PlayerMovePackage.Direction.Back);
        }
        if (Input.GetKey(Options.Controls.StrafeLeft))
        {
            dir = dir.Add(PlayerMovePackage.Direction.Left);
        }
        if (Input.GetKey(Options.Controls.StrafeRight))
        {
            dir = dir.Add(PlayerMovePackage.Direction.Right);
        }

        if (currentDirection != dir)
        {
            PlayerMovePackage pmp = new PlayerMovePackage(transform.root.position, transform.root.rotation.eulerAngles, dir);
            NetworkManager.Instance.Client.SendData(pmp);

            //print("Changed: " + dir);
        }

        currentDirection = dir;
    }
Example #2
0
    void FixedUpdate()
    {
        fireTimer++;
        //print(fireTimer);
        if (firing && fireTimer <= 10)
        {
            SetLasersEnabled(true);
        }
        else if (fireTimer > 10)
        {
            SetLasersEnabled(false);
        }

        if (!IsControlled || IsDead)
        {
            return;
        }

        //if (firing && fireTimer <= 10)
        //Fire();

        HandleMovement();
        HandleFiring();
        HandleFlagPickup();

        if (resend)
        {
            //PlayerMovePackage pmp = new PlayerMovePackage(transform.root.rotation.eulerAngles);
            PlayerMovePackage pmp = null;
            if (sendCounter == 1)
            {
                pmp         = new PlayerMovePackage(transform.root.position, transform.root.rotation.eulerAngles, currentDirection);
                sendCounter = 0;
            }
            else
            {
                pmp = new PlayerMovePackage(transform.root.rotation.eulerAngles);
            }

            NetworkManager.Instance.Client.SendData(pmp);
            resend = false;
        }
    }
Example #3
0
    public void SendData(DataPackage dp)
    {
        if (queue.Count != 0)
        {
            PlayerMovePackage newPmp = dp as PlayerMovePackage;
            if (newPmp != null)
            {
                for (int i = queue.Count - 1; i >= 0; i--)
                {
                    PlayerMovePackage pmp = queue[i] as PlayerMovePackage;
                    if (pmp == null || pmp.RotationOnly != newPmp.RotationOnly)
                    {
                        continue;
                    }

                    queue.RemoveAt(i);
                }
            }
        }

        queue.Add(dp);
    }
Example #4
0
    public void OnDataReceived(DataPackage dp)
    {
        if (dp is TokenChangePackage)
        {
            if (sendCounter == 1)
            {
                resend      = true;
                sendCounter = 0;
            }
            else
            {
                sendCounter++;
            }
        }
        else if (dp is PlayerMovePackage && dp.SenderRemoteIPEndpoint.Address.Equals(PlayerIP))
        {
            PlayerMovePackage pmp = (PlayerMovePackage)dp;

            if (!pmp.RotationOnly)
            {
                //set position
                transform.root.position = pmp.Position;

                //set rotation
                float newRotX = pmp.Rotation.x - transform.root.rotation.eulerAngles.x;
                float newRotY = pmp.Rotation.y - transform.root.rotation.eulerAngles.y;
                float newRotZ = pmp.Rotation.z - transform.root.rotation.eulerAngles.z;
                transform.root.Rotate(newRotX, newRotY, newRotZ);

                //set direction
                if (pmp.Dir.Has(PlayerMovePackage.Direction.Stop))
                {
                    anim.SetFloat("Speed", 0);
                }
                if (pmp.Dir.Has(PlayerMovePackage.Direction.Up))
                {
                    anim.SetFloat("Speed", 1);
                }
                if (pmp.Dir.Has(PlayerMovePackage.Direction.Back))
                {
                    anim.SetFloat("Speed", -1);
                }

                if (pmp.Dir == PlayerMovePackage.Direction.Stop)
                {
                    setGangnamVisible(true);
                }
                else
                {
                    setGangnamVisible(false);
                }

                anim.speed = animSpeed;

                //float h = Input.GetAxis("Horizontal");				// setup h variable as our horizontal input axis
                //float v = Input.GetAxis("Vertical");				// setup v variables as our vertical input axis
                //print(h + " | " + v);
                //anim.SetFloat("Speed", v);							// set our animator's float parameter 'Speed' equal to the vertical input axis
                //anim.SetFloat("Direction", h);                        // set our animator's float parameter 'Direction' equal to the horizontal input axis
                //anim.speed = animSpeed;								// set the speed of our animator to the public variable 'animSpeed'
                //anim.SetLookAtWeight(lookWeight);					// set the Look At Weight - amount to use look at IK vs using the head's animation	}
            }
            else if (!IsControlled)
            {
                //set rotation
                float newRotX = pmp.Rotation.x - transform.root.rotation.eulerAngles.x;
                float newRotY = pmp.Rotation.y - transform.root.rotation.eulerAngles.y;
                float newRotZ = pmp.Rotation.z - transform.root.rotation.eulerAngles.z;
                transform.root.Rotate(newRotX, newRotY, newRotZ);
            }
        }
        else if (dp is FlagPackage && dp.SenderRemoteIPEndpoint.Address.Equals(PlayerIP))
        {
            FlagPackage fp = (FlagPackage)dp;
            if (fp.Event == FlagPackage.FlagEvent.Capture)
            {
                Score += 3;
            }
            else if (fp.Event == FlagPackage.FlagEvent.Drop)
            {
                Score--;
            }
        }
        else if (dp is FireWeaponPackage && dp.SenderRemoteIPEndpoint.Address.Equals(PlayerIP))
        {
            FireWeaponPackage fwp = (FireWeaponPackage)dp;

            //Set laser target
            Camera c       = GetComponentInChildren <Camera>();
            float  newRotX = fwp.Target - c.transform.rotation.eulerAngles.x;
            c.transform.Rotate(newRotX, 0, 0);

            startFiringPackageSent = false;
            stopFiringPackageSent  = false;
            firing    = fwp.Enabled;
            fireTimer = 0;
        }
        else if (dp is PlayerHealthPackage)
        {
            PlayerHealthPackage php = (PlayerHealthPackage)dp;
            if (!php.PlayerIP.Equals(PlayerIP))
            {
                return;
            }

            Health -= php.Value;

            if (IsDead)
            {
                Health = 0;
                Die();
            }
        }
        else if (dp is PlayerSpawnPackage && dp.SenderRemoteIPEndpoint.Address.Equals(PlayerIP))
        {
            setRobotVisible(true);
            setGangnamVisible(true);

            Health = 100;

            if (IsControlled)
            {
                GameManager.Instance.spawnRobot(PlayerIP);
            }
        }
    }
Example #5
0
    void HandleMovement()
    {
        PlayerMovePackage.Direction dir = PlayerMovePackage.Direction.Stop;

        if (Input.GetKey(Options.Controls.Forward))
            dir = dir.Add(PlayerMovePackage.Direction.Up);
        if (Input.GetKey(Options.Controls.Backward))
            dir = dir.Add(PlayerMovePackage.Direction.Back);
        if (Input.GetKey(Options.Controls.StrafeLeft))
            dir = dir.Add(PlayerMovePackage.Direction.Left);
        if (Input.GetKey(Options.Controls.StrafeRight))
            dir = dir.Add(PlayerMovePackage.Direction.Right);

        if (currentDirection != dir)
        {
            PlayerMovePackage pmp = new PlayerMovePackage(transform.root.position, transform.root.rotation.eulerAngles, dir);
            NetworkManager.Instance.Client.SendData(pmp);

            //print("Changed: " + dir);
        }

        currentDirection = dir;
    }
Example #6
0
    void FixedUpdate()
    {
        fireTimer++;
        //print(fireTimer);
        if (firing && fireTimer <= 10)
            SetLasersEnabled(true);
        else if (fireTimer > 10)
            SetLasersEnabled(false);

        if (!IsControlled || IsDead)
            return;

        //if (firing && fireTimer <= 10)
            //Fire();

        HandleMovement();
        HandleFiring();
        HandleFlagPickup();

        if (resend)
        {
            //PlayerMovePackage pmp = new PlayerMovePackage(transform.root.rotation.eulerAngles);
            PlayerMovePackage pmp = null;
            if (sendCounter == 1)
            {
                pmp = new PlayerMovePackage(transform.root.position, transform.root.rotation.eulerAngles, currentDirection);
                sendCounter = 0;
            }
            else
                pmp = new PlayerMovePackage(transform.root.rotation.eulerAngles);

            NetworkManager.Instance.Client.SendData(pmp);
            resend = false;
        }
    }