Exemple #1
0
        /// <summary>
        /// Reads a value from the packet
        /// </summary>
        /// <returns>value</returns>
        public float ReadFloat()
        {
            float res = ByteManipulator.ReadSingle(Data, CurrentSeek);

            CurrentSeek += sizeof(float);
            return(res);
        }
Exemple #2
0
    public void TestListFloatReadRedLight()
    {
        List <byte> arr = new List <byte>(sizeof(float));

        for (int i = 0; i < sizeof(float); i++)
        {
            arr.Add(0);
        }
        ByteManipulator.Write(arr, 0, 10f);
        Assert.That(ByteManipulator.ReadSingle(arr, 0), Is.Not.EqualTo(9f).Within(0.0001));
    }
    //public GameObject EnemyCreation(GameObject obj, GameObject parent) //TODO: is this needed ? no one calls it
    //{
    //    GameObject o = Instantiate(obj, parent.transform);
    //    //if (OnEnemyAddEvent != null)
    //    //    OnEnemyAddEvent.Invoke(o.GetComponent<GameNetworkObject>());
    //    return o;
    //}

    //InstantiateEnemy will be called when command EnemySpawn is received from host
    private void InstantiateEnemy(byte[] data, uint length, CSteamID senderId)
    {
        if (!poolRoot && PoolRoot)
        {
            poolRoot      = GameObject.Instantiate(PoolRoot).transform;
            poolRoot.name = "Enemies Root";
        }

        int Id = ByteManipulator.ReadInt32(data, 0);
        //Debug.Log("received: " + Id);
        float   positionX = ByteManipulator.ReadSingle(data, 4);
        float   positionY = ByteManipulator.ReadSingle(data, 8);
        float   positionZ = ByteManipulator.ReadSingle(data, 12);
        Vector3 position  = new Vector3(positionX, positionY, positionZ);

        SOPool pool = EnemyPools[UnityEngine.Random.Range(0, EnemyPools.Length)];

        bool       parented;
        int        nullObjsRemovedFromPool;
        GameObject enemy = pool.DirectGet(poolRoot, out nullObjsRemovedFromPool, out parented);

        enemy.GetComponent <Enemy>().Pool = pool;
        GameNetworkObject NObj = enemy.GetComponent <GameNetworkObject>();

        NObj.SetNetworkId(Id);
        //cb.transform.position = position;
        NavMeshHit hit;

        if (NavMesh.SamplePosition(position, out hit, 1f, Mask))
        {
            enemy.GetComponent <NavMeshAgent>().Warp(hit.position);
        }
        else
        {
            Debug.LogWarning("NavMesh point for enemy spawn not found , souce pos = " + position);
        }

        enemy.SetActive(true);
        OnEnemyAddEvent.Raise(NObj);
        //if (!activeEnemyList.Contains(enemy.GetComponent<Enemy>()))
        //    enemiesToAdd.Add(enemy.GetComponent<Enemy>());
    }
Exemple #4
0
    void ManageTransform(byte[] data, uint dataLength, CSteamID sender)
    {
        if (!avatars.ContainsKey(sender) || Client.MyID == sender)
        {
            return;
        }

        SimpleAvatar avatar = avatars[sender];

        int overLength = (int)dataLength - 28;

        if (overLength > 0)
        {
            //Manage attached data
        }

        int   offset = overLength;
        float posX   = ByteManipulator.ReadSingle(data, offset);

        offset += sizeof(float);
        float posY = ByteManipulator.ReadSingle(data, offset);

        offset += sizeof(float);
        float posZ = ByteManipulator.ReadSingle(data, offset);

        offset += sizeof(float);
        float rotX = ByteManipulator.ReadSingle(data, offset);

        offset += sizeof(float);
        float rotY = ByteManipulator.ReadSingle(data, offset);

        offset += sizeof(float);
        float rotZ = ByteManipulator.ReadSingle(data, offset);

        offset += sizeof(float);
        float rotW = ByteManipulator.ReadSingle(data, offset);

        Vector3    pos = new Vector3(posX, posY, posZ);
        Quaternion rot = new Quaternion(rotX, rotY, rotZ, rotW);

        avatars[sender].SetTransform(pos, rot);
    }
Exemple #5
0
    private void NetObjTransformReceive(byte[] data, uint dataLength, CSteamID sender)
    {
        int id = ByteManipulator.ReadInt32(data, 0);

        if (!netEntities.Elements.ContainsKey(id))
        {
            return;
        }

        NetObjTransformSync sync = netEntities[id].GetComponent <NetObjTransformSync>();

        if (!sync)
        {
            return;
        }

        Vector3    position = new Vector3(ByteManipulator.ReadSingle(data, 4), ByteManipulator.ReadSingle(data, 8), ByteManipulator.ReadSingle(data, 12));
        Quaternion rotation = new Quaternion(ByteManipulator.ReadSingle(data, 16), ByteManipulator.ReadSingle(data, 20), ByteManipulator.ReadSingle(data, 24), ByteManipulator.ReadSingle(data, 28));

        sync.ReceiveTransform(position, rotation);
    }
Exemple #6
0
 public void TestFloatReadRedLight()
 {
     byte[] arr = new byte[sizeof(float)];
     ByteManipulator.Write(arr, 0, 10f);
     Assert.That(ByteManipulator.ReadSingle(arr, 0), Is.Not.EqualTo(9f).Within(0.0001));
 }
Exemple #7
0
 public void TestFloatRead()
 {
     byte[] arr = new byte[sizeof(float)];
     ByteManipulator.Write(arr, 0, 502144.251f);
     Assert.That(ByteManipulator.ReadSingle(arr, 0), Is.EqualTo(502144.251f).Within(0.0001));
 }