public void TargetRpc_SpawnItem(NetworkConnection target, SpawnItemMessage data)
        {
            if (ClientScene.prefabs.ContainsKey(data.assetID) == false)
            {
                logger.Warning($"Server told to spawn asset with ID {data.assetID}, but no local asset with this ID was found!");
                return;
            }

            var prefab = ClientScene.prefabs[data.assetID];
            var obj    = UnityEngine.Object.Instantiate <GameObject>(prefab, data.position, data.rotation);

            // Create 3D model in the world.
            obj.GetOrAddComponent <UNetTrigger>();
            obj.GetOrAddComponent <TriggerInputHandler>();

            // TODO: Sync up the item definition to the client, so the client can show data about the object.

            var rangeHandler = new GameObject("_RangeHandler");

            rangeHandler.transform.SetParent(obj.transform);
            rangeHandler.transform.localPosition = Vector3.zero;
            rangeHandler.transform.localRotation = Quaternion.identity;
            var handler = rangeHandler.AddComponent <TriggerRangeHandler>();

            handler.useRange = 10f; // TODO: Set this in a global location somewhere...

            ClientScene.SetLocalObject(data.networkInstanceID, obj);

            logger.LogVerbose($"Created object with instance ID: {data.networkInstanceID} and assetID: {data.assetID}");
        }
Пример #2
0
 public void TargetRpc_SpawnItem(NetworkConnection target, SpawnItemMessage data)
 {
     spawnReplicator.TargetRpc_SpawnItem(target, data);
 }
Пример #3
0
 public void Server_SpawnItemOnClient(SpawnItemMessage data)
 {
     TargetRpc_SpawnItem(connectionToClient, data);
 }