void HandleDestroyPacket(NetInboundPacket packet) { ushort id = packet.ReadUInt16(); NetCreatableInfo creatableInfo; if (netObjects.Creatables.TryGetValue(id, out creatableInfo)) { //DashCMD.WriteLine("[ObjectNC] Destroying creatable with id {0}...", id); NetEntityListSnapshot entList = snapshotComponent.WorldSnapshot.NetEntityListSnapshot; entList.RemoveNetEntitiy(id); netObjects.Remove(id); creatableInfo.Creatable.OnNetworkDestroy(); if (OnCreatableDestroyed != null) { OnCreatableDestroyed(this, creatableInfo); } } else { DashCMD.WriteError("[ObjectNC] Received destroy for unknown creatable, id: {0}", id); } }
void HandleInstantiationPacket(NetInboundPacket packet) { string eventName = packet.ReadString(); ushort id = packet.ReadUInt16(); bool isOwner = packet.ReadBool(); NetInstantiationCallback callback; if (instCallbacks.TryGetValue(eventName, out callback)) { if (netObjects.Creatables.ContainsKey(id)) { DashCMD.WriteError("[ObjectNC] Creatable with id {0} is already instantiated!", id); return; } //DashCMD.WriteLine("[ObjectNC] Instantiating creatable with id {0}...", id); INetCreatable creatable = callback(id, isOwner, packet); NetCreatableInfo info = new NetCreatableInfo(packet.Sender, creatable, id, isOwner); netObjects.Add(id, info); INetEntity entity = creatable as INetEntity; if (entity != null && snapshotComponent.WorldSnapshot != null) { NetEntityListSnapshot entList = snapshotComponent.WorldSnapshot.NetEntityListSnapshot; entList.AddNetEntity(info, entity); } creatable.OnNetworkInstantiated(info); if (OnCreatableInstantiated != null) { OnCreatableInstantiated(this, info); } } else { DashCMD.WriteError("[ObjectNC] Received instantiation for unknown type: {0}", eventName); } }