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;
    }
Exemplo n.º 3
0
    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;
    }
Exemplo n.º 4
0
    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);
    }
Exemplo n.º 5
0
    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);
    }
Exemplo n.º 6
0
    // 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);
            }
        }
    }