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}"); }
public void TargetRpc_SpawnItem(NetworkConnection target, SpawnItemMessage data) { spawnReplicator.TargetRpc_SpawnItem(target, data); }
public void Server_SpawnItemOnClient(SpawnItemMessage data) { TargetRpc_SpawnItem(connectionToClient, data); }