Example #1
0
    private void SpawnSyncedObject(PacketBuffer buffer)
    {
        // Read prefab ID
        int prefabID = buffer.ReadInteger();

        // Spawn the requested prefab
        GameObject prefab = registry.GetPrefab(prefabID);
        GameObject go     = Instantiate(prefab);

        // Set the ID from the received server data
        SyncedEntity entity   = go.GetComponent <SyncedEntity>();
        int          entityID = buffer.ReadInteger();

        entity.ID = entityID;

        // Set the transform properties.
        Transform goTransform = go.transform;

        goTransform.position   = buffer.ReadVector3();
        goTransform.rotation   = Quaternion.Euler(buffer.ReadVector3());
        goTransform.localScale = buffer.ReadVector3();

        syncedEntities.Add(entity);

        buffer.Dispose();
    }
Example #2
0
    public void SpawnObject(GameObject prefab, Vector3 position, Vector3 rotation, Vector3 scale)
    {
        // Spawn object, set script IDs and add them to the synced list.
        GameObject go = Instantiate(prefab, position, Quaternion.Euler(rotation));

        SyncedEntity entity = go.GetComponent <SyncedEntity>();

        entity.ID = syncedEntityID;
        syncedEntityID++;

        syncedEntities.Add(entity);

        // Send the spawndata to all clients.
        PacketBuffer buffer   = new PacketBuffer();
        int          prefabID = registryPrefab.GetPrefabID(prefab);

        buffer.WriteInteger((int)ServerPackets.SSpawnObject);
        buffer.WriteInteger(prefabID);
        buffer.WriteInteger(entity.ID);

        buffer.WriteVector3(position);
        buffer.WriteVector3(rotation);
        buffer.WriteVector3(scale);

        serverTCP.SendData(buffer.ToArray());

        buffer.Dispose();
    }
Example #3
0
    private void DestroySyncedObejct(PacketBuffer buffer)
    {
        int entityID = buffer.ReadInteger();

        SyncedEntity entityToDestroy = GetSyncedEntity(entityID);

        syncedEntities.Remove(entityToDestroy);

        Destroy(entityToDestroy.gameObject);

        buffer.Dispose();
    }
Example #4
0
    private void DeserializeFrame(PacketBuffer buffer)
    {
        int numEntities = buffer.ReadInteger();

        for (int i = 0; i < numEntities; i++)
        {
            // Read entity ID, and get it form the list.
            int          entityID = buffer.ReadInteger();
            SyncedEntity entity   = GetSyncedEntity(entityID);

            // Deserialize all behaviours
            foreach (var syncedBehaviour in entity.syncedBehaviours)
            {
                int    dataSize = buffer.ReadInteger();
                byte[] data     = buffer.ReadBytes(dataSize);
                syncedBehaviour.Deserialize(data);
            }
        }

        buffer.Dispose();
    }
Example #5
0
    public void DestroyObject(int entityID)
    {
        SyncedEntity entityToDestroy = GetEntity(entityID);

        if (entityToDestroy == null)
        {
            Debug.LogWarningFormat("Entity with ID {0} does not exist and cannot  be destroyed.", entityID);
            return;
        }

        syncedEntities.Remove(entityToDestroy);
        Destroy(entityToDestroy.gameObject);

        PacketBuffer buffer = new PacketBuffer();

        buffer.WriteInteger((int)ServerPackets.SDestroyObject);
        buffer.WriteInteger(entityID);

        serverTCP.SendData(buffer.ToArray());

        buffer.Dispose();
    }