bool ReadStateUpdatePacketHeader(byte[] packetData, out Network.PacketHeader packetHeader) { Profiler.BeginSample("ReadStateUpdatePacketHeader"); readStream.Start(packetData); bool result = true; try { packetSerializer.ReadStateUpdatePacketHeader(readStream, out packetHeader); } catch (Network.SerializeException) { Debug.Log("error: failed to read state update packet header"); packetHeader.sequence = 0; packetHeader.ack = 0; packetHeader.ack_bits = 0; packetHeader.frameNumber = 0; packetHeader.resetSequence = 0; packetHeader.avatarSampleTimeOffset = 0.0f; result = false; } readStream.Finish(); Profiler.EndSample(); return(result); }
protected bool ReadServerInfoPacket( byte[] packetData, bool[] clientConnected, ulong[] clientUserId, string[] clientUserName ) { Profiler.BeginSample( "ReadServerInfoPacket" ); readStream.Start( packetData ); bool result = true; try { packetSerializer.ReadServerInfoPacket( readStream, clientConnected, clientUserId, clientUserName ); } catch ( Network.SerializeException ) { Debug.Log( "error: failed to read server info packet" ); result = false; } readStream.Finish(); Profiler.EndSample(); return result; }
protected bool ReadGameEventPacket( byte[] packetData, ref PacketSerializer.GameEvent eventType, ref ushort senderId, ref ushort targetId, ref ushort[] perClientData ) { Profiler.BeginSample("ReadGameEventPacket"); readStream.Start(packetData); bool result = true; try { packetSerializer.ReadGameEventPacket(readStream, ref eventType, ref senderId, ref targetId, ref perClientData); } catch (Network.SerializeException) { Debug.Log("error: failed to read server info packet"); result = false; } readStream.Finish(); Profiler.EndSample(); return result; }
static void test_serialization() { Debug.Log("test_serialization"); const int MaxPacketSize = 1024; var serializer = new TestSerializer(); var buffer = new uint[MaxPacketSize / 4]; var writeStream = new Network.WriteStream(); writeStream.Start(buffer); TestStruct input; input.bool_value = true; input.int_value = -5; input.uint_value = 215; input.bits_value = 12345; serializer.WriteTestStruct(writeStream, ref input); writeStream.Finish(); byte[] packet = writeStream.GetData(); var readStream = new Network.ReadStream(); readStream.Start(packet); TestStruct output; serializer.ReadTestStruct(readStream, out output); readStream.Finish(); Assert.AreEqual(input.bool_value, output.bool_value); Assert.AreEqual(input.int_value, output.int_value); Assert.AreEqual(input.uint_value, output.uint_value); Assert.AreEqual(input.bits_value, output.bits_value); }
protected bool ReadStateUpdatePacket(byte[] packetData, ref byte isAvatar, ref int objNum, ref bool shotLight, ref int potionNum, ref bool hasParent, ref State cubeState) { readStream.Start(packetData); bool result = true; try { packetSerializer.ReadHeader(readStream, ref isAvatar, ref objNum, ref shotLight, ref potionNum, ref hasParent, ref cubeState); } catch (Network.SerializeException) { Debug.Log("error: failed to read state update packet"); result = false; } readStream.Finish(); return(result); }
// Update is called once per frame void FixedUpdate() { Packet packet; while ((packet = Net.ReadPacket()) != null) { packet.ReadBytes(readBuffer); readStream.Start(readBuffer); serializer.ReadHeader(readStream, ref isAvatar, ref objNum, ref shotLight, ref potionNum, ref hasParent, ref cubeState); updated = null; if (isAvatar != 00000001) { switch (objNum) { case 0: updated = GameObject.Find("Grappling Gun(Clone)"); if (updated == null) { updated = GameObject.Find("Grappling Gun"); } break; case 1: updated = GameObject.Find("Drone"); if (updated == null) { updated = GameObject.Find("Drone(Clone)"); } break; case 2: updated = GameObject.Find("Map"); if (updated == null) { updated = GameObject.Find("Map(Clone)"); } break; case 3: var potions = GameObject.FindGameObjectsWithTag("Potion"); var poops = GameObject.FindGameObjectsWithTag("PoopPot"); foreach (GameObject potion in potions) { if (potion.GetComponent <PourLiquid>().potionNum == potionNum) { //Debug.Log("Found health"); updated = potion; } } foreach (GameObject poop in poops) { if (poop.GetComponent <pourpooppotion>().potionNum == potionNum) { //Debug.Log("Found poop"); updated = poop; } } if (updated == null) { //I am using shotLight for poop vs health potions along with fired and light. //true => poop Debug.Log(potionNum); Debug.Log("Potion should spawn in!"); if (shotLight == true) { var potion = (GameObject)Instantiate(Resources.Load("PoopPotion")); Debug.Log("Poop potion spawned in"); potion.GetComponent <pourpooppotion>().potionNum = potionNum; Debug.Log(potion.GetComponent <pourpooppotion>().potionNum + " is the newly spawned num"); potion.transform.position = new Vector3(cubeState.position_x, cubeState.position_y / Constants.UnitsPerMeter, cubeState.position_z / Constants.UnitsPerMeter); updated = potion; var blues = GameObject.FindGameObjectsWithTag("Blue"); float current = 1000; GameObject saved = new GameObject(); foreach (GameObject flower in blues) { if (Vector3.Distance(new Vector3(cubeState.position_x / Constants.UnitsPerMeter, cubeState.position_y / Constants.UnitsPerMeter, cubeState.position_z / Constants.UnitsPerMeter), flower.transform.position) < current) { current = Vector3.Distance(new Vector3(cubeState.position_x / Constants.UnitsPerMeter, cubeState.position_y / Constants.UnitsPerMeter, cubeState.position_z / Constants.UnitsPerMeter), flower.transform.position); saved = flower; } } GameObject.Destroy(saved); } else { var potion = (GameObject)Instantiate(Resources.Load("HealthPotion")); potion.GetComponent <PourLiquid>().potionNum = potionNum; potion.transform.position = new Vector3(cubeState.position_x / Constants.UnitsPerMeter, cubeState.position_y / Constants.UnitsPerMeter, cubeState.position_z / Constants.UnitsPerMeter); updated = potion; var reds = GameObject.FindGameObjectsWithTag("Red"); float current = 1000; GameObject saved = new GameObject(); foreach (GameObject flower in reds) { if (Vector3.Distance(new Vector3(cubeState.position_x / Constants.UnitsPerMeter, cubeState.position_y / Constants.UnitsPerMeter, cubeState.position_z / Constants.UnitsPerMeter), flower.transform.position / Constants.UnitsPerMeter) < current) { current = Vector3.Distance(new Vector3(cubeState.position_x / Constants.UnitsPerMeter, cubeState.position_y / Constants.UnitsPerMeter, cubeState.position_z / Constants.UnitsPerMeter), flower.transform.position); Debug.Log("New Distance:" + current); saved = flower; } } GameObject.Destroy(saved); } } else { } break; default: break; } if (objNum == 0) { var shot = updated.GetComponent <GrapplingHook>(); if (shotLight && updated.transform.parent == null) { shot.fired = true; } else { } } else if (objNum == 1) { var light = updated.GetComponent <DroneFly>(); if (shotLight) { light.isRemote = true; } else { light.isRemote = false; } } var obj = updated.GetComponent <NetworkObject>(); if (hasParent) { counter = counter + 1; if (objNum == 3) { } } //if item already has parent, disengage from hand if (hasParent && (updated.transform.parent != null && counter > 60)) { updated.transform.parent = null; var hand = GameObject.Find("Player/OVRCameraRig/TrackingSpace/RightHandAnchor"); var grabber = hand.GetComponent <Grabber>(); grabber.grabbedObject = null; grabber.grabbed = false; counter = 0; Debug.Log("Detaching!"); } obj.ProcessPacket(readBuffer); } else { var playerController = gameObject.GetComponent <PlayerController>(); var p2pManager = playerController.p2pManager; p2pManager.GetRemotePackets(packet); } } }