示例#1
0
        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);
        }
示例#2
0
        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;
        }
示例#3
0
        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);
                        //}
                    }
                }
            }
        }