public virtual void OnReceiveData(GlobalGameData msg)
        {
            switch (msg.type)
            {
            case "spawn":
            {
                var spawnMessage = JsonUtility.FromJson <SpawnMessage> (msg.data);
                GameObjectConversionSettings settings = GameObjectConversionSettings.FromWorld(world, store);
                Entity e = GameObjectConversionUtility.ConvertGameObjectHierarchy(
                    managerComponent.spawnableObjects[spawnMessage.index], settings);
                EntityManager manager = world.EntityManager;
                Entity        entity  = manager.Instantiate(e);
                var           pos     = new Vector3(spawnMessage.posX, spawnMessage.posY, spawnMessage.posZ);
                var           rot     = new Quaternion(spawnMessage.rotX, spawnMessage.rotY, spawnMessage.rotZ,
                                                       spawnMessage.rotW);
                manager.AddComponentData(entity,
                                         new IdentityData {
                        hasLocalAuthority = spawnMessage.hasAuthority, matchId = 0, objectId = msg.objectId
                    });
                manager.AddComponentData(entity, new Translation {
                        Value = pos
                    });
                manager.AddComponentData(entity, new Rotation {
                        Value = rot
                    });
                if (playerEntityId == -1 && spawnMessage.hasAuthority)
                {
                    playerEntityId = msg.objectId;
                    OnSpawnLocalPlayer(entity, msg.objectId, pos, rot);
                }
                else if (spawnMessage.index == 0)
                {
                    OnSpawnOtherPlayer(entity, msg.objectId, pos, rot);
                }

                spawnedEntities.Add(msg.objectId, entity);
                break;
            }

            case "destroy":
            {
                var destroyMessage = JsonUtility.FromJson <DestroyMessage> (msg.data);
                var objExist       = spawnedEntities.ContainsKey(msg.objectId);
                if (objExist)
                {
                    Entity e = spawnedEntities[msg.objectId];
                    managerComponent.DestroyObject(world, e);
                    OnDestroy(msg.objectId);
                    spawnedEntities.Remove(msg.objectId);
                }

                break;
            }

            case "synctransform":
            {
                var syncTransformMessage = JsonUtility.FromJson <SyncTransformMessage> (msg.data);
                var objExist             = spawnedEntities.ContainsKey(msg.objectId);
                if (objExist)
                {
                    Entity e = spawnedEntities[msg.objectId];
                    managerComponent.SyncTransform(world, e, syncTransformMessage);
                }

                break;
            }
            }
        }