public uint SpawnProceduralShapeEntity(WorldData World, SpawnProceduralShapeEntityClientDTO data) { World.entityIdCounter++; uint newID = World.entityIdCounter; UMProceduralShapeEntity newProceduralEntity = new UMProceduralShapeEntity(newID, data); newProceduralEntity.spawnData = data; newProceduralEntity.isProceduralShape = true; World.Entities.Add(newID, newProceduralEntity); using (DarkRiftWriter proceduralEntityWriter = DarkRiftWriter.Create()) { proceduralEntityWriter.Write(newProceduralEntity.getServerSpawnDTO(newID)); using (Message spawnEntityMsg = Message.Create(Tags.SpawnProceduralShapeEntityTag, proceduralEntityWriter)) { foreach (IClient c in World.GetClients()) { c.SendMessage(spawnEntityMsg, SendMode.Reliable); } } } return(newID); }
public UMProceduralShapeEntity(uint id, SpawnProceduralShapeEntityClientDTO spawnData) { this.id = id; this.spawnData = spawnData; this.isProceduralShape = true; this.X = spawnData.position.x; this.Y = spawnData.position.y; this.Z = spawnData.position.z; this.rotX = spawnData.rotation.x; this.rotY = spawnData.rotation.y; this.rotZ = spawnData.rotation.z; this.scaleX = spawnData.scale.x; this.scaleY = spawnData.scale.y; this.scaleZ = spawnData.scale.z; this.velocityX = 0; this.velocityY = 0; this.velocityZ = 0; this.hasPhysics = false; }
private void Client_MessageReceived(object sender, MessageReceivedEventArgs e) { using (Message message = e.GetMessage() as Message) { WorldData World = WorldManager.clients[e.Client].World; if (message.Tag == Tags.SpawnEntityTag) { using (DarkRiftReader reader = message.GetReader()) { while (reader.Position < reader.Length) { SpawnEntityClientDTO data = reader.ReadSerializable <SpawnEntityClientDTO>(); this.SpawnEntity(World, data); } } } else if (message.Tag == Tags.SpawnProceduralShapeEntityTag) { using (DarkRiftReader reader = message.GetReader()) { while (reader.Position < reader.Length) { SpawnProceduralShapeEntityClientDTO data = reader.ReadSerializable <SpawnProceduralShapeEntityClientDTO>(); Console.WriteLine("Got spawn procedural message"); this.SpawnProceduralShapeEntity(World, data); } } } else if (message.Tag == Tags.DespawnEntityTag) { using (DarkRiftReader reader = message.GetReader()) { while (reader.Position < reader.Length) { uint id = reader.ReadUInt32(); this.DespawnEntity(World, id); } } } else if (message.Tag == Tags.SetEntityParentTag) { using (DarkRiftReader reader = message.GetReader()) { while (reader.Position < reader.Length) { SetParentDTO data = reader.ReadSerializable <SetParentDTO>(); SetParent(World, data); } } } else if (message.Tag == Tags.SetStateEntityTag) { using (DarkRiftReader reader = message.GetReader()) { while (reader.Position < reader.Length) { uint id = reader.ReadUInt32(); ushort newState = reader.ReadUInt16(); SetState(World, id, newState); } } } else if (message.Tag == Tags.TransformEntityTag) { using (DarkRiftReader reader = message.GetReader()) { while (reader.Position < reader.Length) { uint id = reader.ReadUInt32(); float x = reader.ReadSingle(); float y = reader.ReadSingle(); float z = reader.ReadSingle(); float rx = reader.ReadSingle(); float ry = reader.ReadSingle(); float rz = reader.ReadSingle(); float sx = reader.ReadSingle(); float sy = reader.ReadSingle(); float sz = reader.ReadSingle(); SetTransform(World, id, x, y, z, rx, ry, rz, sx, sy, sz); } } } else if (message.Tag == Tags.PhysicsUpdateEntityTag) { if (e.Client == WorldManager.clients[e.Client].World.PhysicsHost) { PhysicsUpdate(sender, e, WorldManager.clients[e.Client].World); } } else if (message.Tag == Tags.SetPhysicsEntityTag) { using (DarkRiftReader reader = message.GetReader()) { while (reader.Position < reader.Length) { //Console.WriteLine("recieved physmessage"); SetPhysicsDTO data = reader.ReadSerializable <SetPhysicsDTO>(); setPhysics(World, data); } } } else if (message.Tag == Tags.AddComponentTag) { using (DarkRiftReader reader = message.GetReader()) { while (reader.Position < reader.Length) { //Console.WriteLine("recieved physmessage"); AddComponentClientDTO data = reader.ReadSerializable <AddComponentClientDTO>(); addComponent(World, data); } } } else if (message.Tag == Tags.RemoveComponentTag) { using (DarkRiftReader reader = message.GetReader()) { while (reader.Position < reader.Length) { //Console.WriteLine("recieved physmessage"); RemoveComponentDTO data = reader.ReadSerializable <RemoveComponentDTO>(); removeComponent(World, data); } } } else if (message.Tag == Tags.SetComponentPropertyTag) { using (DarkRiftReader reader = message.GetReader()) { //while (reader.Position < reader.Length) //{ ComponentPropertyDTO data = reader.ReadSerializable <ComponentPropertyDTO>(); setComponentProperty(World, data); //} } } } }