/// <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); }
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>()); }
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); }
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); }
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)); }
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)); }