示例#1
0
        public RoomEditorEntity(
            IKernel kernel,
            IMeshCollider meshCollider,
            I3DRenderUtilities threeRenderUtilities,
            IAssetManagerProvider assetManagerProvider,
            Room room)
        {
            this.m_Kernel = kernel;
            this.m_MeshCollider = meshCollider;
            this.m_3DRenderUtilities = threeRenderUtilities;
            this.m_Room = room;
            this.m_ShipTextureAsset = assetManagerProvider.GetAssetManager().Get<TextureAsset>("ship");

            this.m_RoomEditorMode = RoomEditorMode.Hovering;
        }
示例#2
0
文件: Ship.cs 项目: gusmanb/Mir
        public void DeleteRoom(Room room)
        {
            this.Cells.RemoveAll(a => a.Room == room);

            for (var ix = room.X / 10; ix < (room.X + room.Width) / 10; ix++)
            {
                for (var iy = room.Y / 10; iy < (room.Y + room.Height) / 10; iy++)
                {
                    for (var iz = room.Z / 10; iz < (room.Z + room.Depth) / 10; iz++)
                    {
                        this.Cells.Add(new ShipCell { X = (int)ix, Y = (int)iy, Z = (int)iz, });
                    }
                }
            }

            this.Rooms.Remove(room);

            this.m_BuffersNeedRecalculation = true;
        }
示例#3
0
        public RoomEditorWorld(
            IFactory factory, 
            I2DRenderUtilities twoDRenderUtilities, 
            IAssetManagerProvider assetManagerProvider, 
            IPhysicsEngine physicsEngine, 
            IRoomTool[] roomTools,
            ShipEditorWorld previousWorld,
            Room room)
        {
            this.PreviousWorld = previousWorld;
            this.Entities = new List<IEntity>();

            this.m_2DRenderUtilities = twoDRenderUtilities;
            this.m_AssetManager = assetManagerProvider.GetAssetManager();
            this.m_RoomTools = roomTools;
            this.m_DefaultFont = this.m_AssetManager.Get<FontAsset>("font.Default");
            this.m_LightingEffect = this.m_AssetManager.Get<EffectAsset>("effect.Light");

            this.m_LightingEffect.Effect.Parameters["Ambient"].SetValue(new Vector3(0.2f, 0.2f, 0.2f));
            this.m_LightingEffect.Effect.Parameters["AmbientRemaining"].SetValue(new Vector3(0.8f, 0.8f, 0.8f));

            var ship = factory.CreateShipEntity();
            var player = factory.CreatePlayerEntity();
            player.ParentArea = ship;
            player.X = 5;
            player.Z = 5;

            this.m_Room = room;
            foreach (var obj in this.m_Room.Objects)
            {
                obj.Reinitalize();
            }

            this.m_RoomEditorEntity = factory.CreateRoomEditorEntity(this.m_Room);

            this.Entities.Add(ship);
            this.Entities.Add(player);

            this.Entities.Add(this.m_RoomEditorEntity);

            this.m_PhysicsEngine = physicsEngine;

            this.m_JitterWorld = new JitterWorld(
                new CollisionSystemSAP
                {
                    EnableSpeculativeContacts = true
                })
            {
                Gravity = new JVector(0, -50, 0)
            };

            this.m_JitterWorld.ContactSettings.MaterialCoefficientMixing =
                ContactSettings.MaterialCoefficientMixingType.TakeMinimum;

            var shape = new BoxShape(new JVector(2, 2, 2));
            var body = new RigidBody(shape);
            this.m_JitterWorld.AddBody(body);
            body.Position = new JVector(20, 10, 20);
            body.IsActive = true;
            this.m_RigidBody = body;

            this.SetupRoomPhysics();
        }
示例#4
0
文件: ShipEntity.cs 项目: gusmanb/Mir
 public ShipEntity(I3DRenderUtilities threedRenderUtilities, IMeshCollider meshCollider, IFactory factory)
 {
     this.m_3DRenderUtilities = threedRenderUtilities;
     this.m_MeshCollider = meshCollider;
     this.m_Room = factory.CreateRoom();
 }