コード例 #1
0
        public Render3DPlaneComponent(INode node, I3DRenderUtilities renderUtilities, IAssetManagerProvider assetManagerProvider)
        {
            _node = node;
            _renderUtilities = renderUtilities;

            Enabled = true;
            Effect = assetManagerProvider.GetAssetManager().Get<EffectAsset>("effect.Color");
        }
コード例 #2
0
        public Render3DPlaneComponent(INode node, I3DRenderUtilities renderUtilities, IAssetManager assetManager)
        {
            _node                 = node;
            _renderUtilities      = renderUtilities;
            _defaultSurfaceEffect = assetManager.Get <UberEffectAsset>("effect.BuiltinSurface");

            Enabled = true;
        }
コード例 #3
0
        public Render3DPlaneComponent(INode node, I3DRenderUtilities renderUtilities, IAssetManagerProvider assetManagerProvider)
        {
            _node            = node;
            _renderUtilities = renderUtilities;

            Enabled = true;
            Effect  = assetManagerProvider.GetAssetManager().Get <EffectAsset>("effect.Color");
        }
コード例 #4
0
        public Render3DCubeComponent(INode node, I3DRenderUtilities renderUtilities, IAssetManagerProvider assetManagerProvider)
        {
            _node = node;
            _renderUtilities = renderUtilities;

            Enabled = true;
            Effect = assetManagerProvider.GetAssetManager().Get<UberEffectAsset>("effect.BuiltinSurface").Effects?["Color"];
            Transform = new DefaultTransform();
        }
コード例 #5
0
        public Render3DCubeComponent(INode node, I3DRenderUtilities renderUtilities, IAssetManagerProvider assetManagerProvider)
        {
            _node            = node;
            _renderUtilities = renderUtilities;

            Enabled   = true;
            Effect    = assetManagerProvider.GetAssetManager().Get <UberEffectAsset>("effect.BuiltinSurface").Effects?["Color"];
            Transform = new DefaultTransform();
        }
コード例 #6
0
        public Render3DCubeComponent(INode node, I3DRenderUtilities renderUtilities, IAssetManager assetManager)
        {
            _node                 = node;
            _finalTransform       = new DefaultFinalTransform(this, node);
            _renderUtilities      = renderUtilities;
            _defaultSurfaceEffect = assetManager.Get <UberEffectAsset>("effect.BuiltinSurface");

            Enabled   = true;
            Transform = new DefaultTransform();
        }
コード例 #7
0
ファイル: RoomEditorEntity.cs プロジェクト: gusmanb/Mir
        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;
        }
コード例 #8
0
        public Render3DModelComponent(
            INode node,
            I3DRenderUtilities renderUtilities,
            IAssetManagerProvider assetManagerProvider,
            ITextureFromHintPath textureFromHintPath,
            IRenderBatcher renderBatcher)
        {
            _node                = node;
            _renderUtilities     = renderUtilities;
            _textureFromHintPath = textureFromHintPath;
            _renderBatcher       = renderBatcher;
            _assetManager        = assetManagerProvider.GetAssetManager();
            _animationTracker    = new Stopwatch();

            Enabled   = true;
            Transform = new DefaultTransform();
        }
コード例 #9
0
        public Render3DModelComponent(
            INode node,
            I3DRenderUtilities renderUtilities,
            IAssetManagerProvider assetManagerProvider,
            ITextureFromHintPath textureFromHintPath,
            IRenderBatcher renderBatcher)
        {
            _node = node;
            _renderUtilities = renderUtilities;
            _textureFromHintPath = textureFromHintPath;
            _renderBatcher = renderBatcher;
            _assetManager = assetManagerProvider.GetAssetManager();
            _animationTracker = new Stopwatch();

            Enabled = true;
            Transform = new DefaultTransform();
        }
コード例 #10
0
        public EditorWorld(
            IKernel kernel,
            I2DRenderUtilities twodRenderUtilities,
            I3DRenderUtilities renderUtilities,
            IAssetManagerProvider assetManagerProvider)
        {
            this.Entities           = new List <IEntity>();
            this._2DrenderUtilities = twodRenderUtilities;
            this._renderUtilities   = renderUtilities;
            this._assetManager      = assetManagerProvider.GetAssetManager();
            this._defaultFont       = this._assetManager.Get <FontAsset>("font.Default");
            this._count             = 0;

            var entity = kernel.Get <CubeEntity>();

            entity.LocalMatrix = Matrix.CreateTranslation(3.05f, 0, 2.1f);
            this.Entities.Add(entity);
        }
コード例 #11
0
        public EditorWorld(
            IKernel kernel,
            I2DRenderUtilities twodRenderUtilities,
            I3DRenderUtilities renderUtilities,
            IAssetManagerProvider assetManagerProvider)
        {
            this.Entities           = new List <IEntity>();
            this._2DrenderUtilities = twodRenderUtilities;
            this._renderUtilities   = renderUtilities;
            this._assetManager      = assetManagerProvider.GetAssetManager();
            this._defaultFont       = this._assetManager.Get <FontAsset>("font.Default");
            this._count             = 0;

            var entity = kernel.Get <CubeEntity>();

            entity.X = 3.05f;
            entity.Y = 0;
            entity.Z = 2.1f;
            this.Entities.Add(entity);
        }
コード例 #12
0
ファイル: LightEntity.cs プロジェクト: gusmanb/Mir
        public LightEntity(
            LightRoomObject lightRoomObject, 
            I3DRenderUtilities threedRenderUtilities, 
            IAssetManagerProvider assetManagerProvider)
        {
            this.m_LightRoomObject = lightRoomObject;
            this.m_LightRoomObject.Deleted += this.OnDeleted;
            this.m_3DRenderUtilities = threedRenderUtilities;
            this.m_TextureAsset = assetManagerProvider.GetAssetManager().Get<TextureAsset>("ship");

            var baseX = lightRoomObject.X + 0.5f;
            var baseY = lightRoomObject.Y + 0.5f;
            var baseZ = lightRoomObject.Z + 0.5f;

            // Set up rope physics.
            this.m_RopeComponents = new RigidBody[12];
            this.m_PendingConstraints = new List<Constraint>();
            for (var i = 0; i < 12; i++)
            {
                var shape = new BoxShape(0.5f, 0.5f, 0.5f);
                var rigidBody = new RigidBody(shape);
                rigidBody.Position = new JVector(baseX, baseY - (i * 0.6f), baseZ);
                this.m_RopeComponents[i] = rigidBody;

                if (i == 0)
                {
                    rigidBody.IsStatic = true;
                }
                else
                {
                    var constraint = new PointOnPoint(
                        rigidBody,
                        this.m_RopeComponents[i - 1],
                        new JVector(baseX, baseY - (i * 0.6f) + 0.3f, baseZ)) {
                                                                                 BiasFactor = 0.8f, Softness = 0.4f
                                                                              };
                    this.m_PendingConstraints.Add(constraint);
                }
            }
        }
コード例 #13
0
ファイル: ShipEditorEntity.cs プロジェクト: gusmanb/Mir
        public ShipEditorEntity(
            IAssetManagerProvider assetManagerProvider,
            I2DRenderUtilities twoRenderUtilities,
            I3DRenderUtilities threeRenderUtilities,
            IGridRenderer gridRenderer, 
            ICollision collision,
            Ship ship)
        {
            this.m_DefaultFont = assetManagerProvider.GetAssetManager().Get<FontAsset>("font.Default");
            this.m_2DRenderUtilities = twoRenderUtilities;
            this.m_3DRenderUtilities = threeRenderUtilities;
            this.m_GridRenderer = gridRenderer;
            this.m_Collision = collision;
            this.m_Ship = ship;

            this.m_PreviewRotation = 0;

            this.HorizontalRange = 30;
            this.VerticalRange = 30;
            this.VerticalSelection = 3;

            this.UpdateShipVisibilityCull();
        }
コード例 #14
0
        public PerceptionWorld(
            IKernel kernel,
            I2DRenderUtilities twoDRenderUtilities,
            I3DRenderUtilities threeDRenderUtilities,
            IAssetManagerProvider assetManagerProvider,
            IEntityFactory entityFactory,
            ICubeRenderer cubeRenderer,
            ILevelManager levelManager,
            INetworkAPI networkAPI,
            int level)
        {
            this.Entities = new List <IEntity>();

            this.m_NetworkAPI        = networkAPI;
            this.m_2DRenderUtilities = twoDRenderUtilities;
            this.m_3DRenderUtilities = threeDRenderUtilities;
            this.m_AssetManager      = assetManagerProvider.GetAssetManager();
            this.m_DefaultFont       = this.m_AssetManager.Get <FontAsset>("font.Default");
            this.m_EntityFactory     = entityFactory;
            this.m_CubeRenderer      = cubeRenderer;
            this.m_CubeTexture       = assetManagerProvider.GetAssetManager().Get <TextureAsset>("texture.Terrain");
            this.m_LevelManager      = levelManager;

            this.m_GameBoard     = new int[10, 10];
            this.m_GameBoardMeta = new string[10, 10];
            this.m_GameBoardTX   = new int[10, 10];
            this.m_GameBoardTY   = new int[10, 10];

            this.m_LevelSuffix  = this.m_NetworkAPI.WasJoin ? 'b' : 'a';
            this.m_CurrentLevel = level;

            this.LoadLevel(level);

            this.m_NetworkAPI.ListenForMessage(
                "next level",
                a =>
            {
                this.HandleNextLevel();
            });

            this.m_NetworkAPI.ListenForMessage(
                "reset level",
                a =>
            {
                this.HandleResetLevel();
            });

            this.m_NetworkAPI.ListenForMessage(
                "door unlock",
                a =>
            {
                var values = a.Split('|').Select(x => int.Parse(x)).ToArray();

                var doorID = values[0];
                var keyID  = values[1];

                this.Entities.RemoveAll(x => x is KeyEntity && ((KeyEntity)x).ID == keyID);

                foreach (var door in this.Entities.OfType <DoorEntity>().Where(x => x.ID == doorID))
                {
                    door.Open = true;
                }
            });
        }
コード例 #15
0
 public Render3DPlaneComponent(INode node, I3DRenderUtilities renderUtilities)
 {
     _node            = node;
     _renderUtilities = renderUtilities;
 }
コード例 #16
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();
 }
コード例 #17
0
ファイル: TychaiaGameWorld.cs プロジェクト: TreeSeed/Tychaia
        public TychaiaGameWorld(
            IAssetManagerProvider assetManagerProvider, 
            I3DRenderUtilities threedRenderUtilities, 
            IFilteredFeatures filteredFeatures, 
            IChunkOctreeFactory chunkOctreeFactory, 
            IIsometricCameraFactory isometricCameraFactory, 
            IChunkSizePolicy chunkSizePolicy, 
            IChunkManagerEntityFactory chunkManagerEntityFactory, 
            IProfiler profiler, 
            IConsole console, 
            ILevelAPI levelAPI /* temporary */, 
            IGameUIFactory gameUIFactory, 
            I2DRenderUtilities twodRenderUtilities,
            IClientNetworkAPI networkAPI,
            IEntityFactory entityFactory,
            IChunkConverter chunkConverter,
            IChunkCompressor chunkCompressor,
            IChunkGenerator chunkGenerator,
            ITerrainSurfaceCalculator terrainSurfaceCalculator,
            int uniqueClientIdentifier,
            Action cleanup,
            IViewportMode viewportMode)
        {
            this.m_3DRenderUtilities = threedRenderUtilities;
            this.m_FilteredFeatures = filteredFeatures;
            this.m_ChunkSizePolicy = chunkSizePolicy;
            this.m_Profiler = profiler;
            this.m_Console = console;
            this.m_2DRenderUtilities = twodRenderUtilities;
            this.m_NetworkAPI = networkAPI;
            this.m_EntityFactory = entityFactory;
            this.m_ChunkConverter = chunkConverter;
            this.m_ChunkCompressor = chunkCompressor;
            this.m_ChunkGenerator = chunkGenerator;
            this.m_TerrainSurfaceCalculator = terrainSurfaceCalculator;
            this.m_UniqueClientIdentifier = uniqueClientIdentifier;
            this.m_AssetManagerProvider = assetManagerProvider;
            this.m_Cleanup = cleanup;
            this.Level = levelAPI.NewLevel("test");
            this.m_ViewportMode = viewportMode;

            this.m_DefaultFontAsset = this.m_AssetManagerProvider.GetAssetManager().Get<FontAsset>("font.Default");

            this.ChunkOctree = chunkOctreeFactory.CreateChunkOctree<ClientChunk>();
            var chunk = new ClientChunk(0, 0, 0);
            this.IsometricCamera = isometricCameraFactory.CreateIsometricCamera(this.ChunkOctree, chunk);
            this.m_ChunkManagerEntity = chunkManagerEntityFactory.CreateChunkManagerEntity(this);

            this.m_InventoryUIEntity = gameUIFactory.CreateInventoryUIEntity();
            this.Entities = new List<IEntity> { this.m_ChunkManagerEntity, this.m_InventoryUIEntity };

            // TODO: Move this somewhere better.
            this.m_NetworkAPI.ListenForMessage(
                "player update",
                (client, data) =>
                {
                    var playerState = InMemorySerializer.Deserialize<PlayerServerEntity.PlayerServerState>(data);

                    // Lookup the player entity for this unique client ID if we have one.
                    var player =
                        this.Entities.OfType<PlayerEntity>()
                            .FirstOrDefault(x => x.RuntimeData.UniqueClientIdentifier == playerState.UniqueClientID);

                    if (player == null)
                    {
                        // Need to create a new player entity.
                        player =
                            this.m_EntityFactory.CreatePlayerEntity(
                                new Player { UniqueClientIdentifier = playerState.UniqueClientID });
                        this.Entities.Add(player);
                    }

                    player.X = playerState.X;
                    player.Y = playerState.Y;
                    player.Z = playerState.Z;
                });

            // TODO: Move this somewhere better.
            this.m_NetworkAPI.ListenForMessage(
                "player leave",
                (client, data) =>
                {
                    var playerState = InMemorySerializer.Deserialize<PlayerServerEntity.PlayerServerState>(data);

                    // Lookup the player entity for this unique client ID if we have one.
                    var player =
                        this.Entities.OfType<PlayerEntity>()
                            .FirstOrDefault(x => x.RuntimeData.UniqueClientIdentifier == playerState.UniqueClientID);

                    // If we have a player entity, remove it from the world.
                    if (player != null)
                    {
                        this.Entities.Remove(player);
                    }
                });

            // TODO: Move this somewhere better.
            this.m_NetworkAPI.ListenForMessage(
                "chunk available",
                (client, data) =>
                {
                    var dataChunk = this.m_ChunkCompressor.Decompress(data);

                    var clientChunk = this.ChunkOctree.Get(dataChunk.X, dataChunk.Y, dataChunk.Z);
                    if (clientChunk == null)
                    {
                        clientChunk = new ClientChunk(dataChunk.X, dataChunk.Y, dataChunk.Z);
                        this.ChunkOctree.Set(clientChunk);
                    }
                    else if (clientChunk.Generated)
                    {
                        // TODO: We already have this chunk.  The server shouldn't announce it to
                        // us because we've already had it sent before, but at the moment the server
                        // doesn't track this.  We just ignore it for now (so we don't recompute
                        // graphics data).
                        Console.WriteLine("Chunk is marked as generated, will not reload from server");
                        return;
                    }

                    this.m_ChunkConverter.FromChunk(dataChunk, clientChunk);

                    this.m_ChunkGenerator.Generate(clientChunk);
                });
        }
コード例 #18
0
 public CubeEntity(I3DRenderUtilities renderUtilities)
 {
     _renderUtilities = renderUtilities;
 }
コード例 #19
0
        public PerceptionWorld(
            IKernel kernel,
            I2DRenderUtilities twoDRenderUtilities,
            I3DRenderUtilities threeDRenderUtilities,
            IAssetManagerProvider assetManagerProvider,
            IEntityFactory entityFactory,
            ICubeRenderer cubeRenderer,
            ILevelManager levelManager,
            INetworkAPI networkAPI,
            int level)
        {
            this.Entities = new List<IEntity>();

            this.m_NetworkAPI = networkAPI;
            this.m_2DRenderUtilities = twoDRenderUtilities;
            this.m_3DRenderUtilities = threeDRenderUtilities;
            this.m_AssetManager = assetManagerProvider.GetAssetManager();
            this.m_DefaultFont = this.m_AssetManager.Get<FontAsset>("font.Default");
            this.m_EntityFactory = entityFactory;
            this.m_CubeRenderer = cubeRenderer;
            this.m_CubeTexture = assetManagerProvider.GetAssetManager().Get<TextureAsset>("texture.Terrain");
            this.m_LevelManager = levelManager;

            this.m_GameBoard = new int[10, 10];
            this.m_GameBoardMeta = new string[10, 10];
            this.m_GameBoardTX = new int[10, 10];
            this.m_GameBoardTY = new int[10, 10];

            this.m_LevelSuffix = this.m_NetworkAPI.WasJoin ? 'b' : 'a';
            this.m_CurrentLevel = level;

            this.LoadLevel(level);

            this.m_NetworkAPI.ListenForMessage(
                "next level",
                a =>
                {
                    this.HandleNextLevel();
                });

            this.m_NetworkAPI.ListenForMessage(
                "reset level",
                a =>
                {
                    this.HandleResetLevel();
                });

            this.m_NetworkAPI.ListenForMessage(
                "door unlock",
                a =>
                {
                    var values = a.Split('|').Select(x => int.Parse(x)).ToArray();

                    var doorID = values[0];
                    var keyID = values[1];

                    this.Entities.RemoveAll(x => x is KeyEntity && ((KeyEntity)x).ID == keyID);

                    foreach (var door in this.Entities.OfType<DoorEntity>().Where(x=>x.ID == doorID))
                    {
                        door.Open = true;
                    }
                });
        }
コード例 #20
0
ファイル: CubeEntity.cs プロジェクト: johnsonc/Protogame
 public CubeEntity(I3DRenderUtilities renderUtilities)
 {
     _renderUtilities = renderUtilities;
 }