Example #1
0
        public void Initialize(string utopiaPath)
        {
            if (_engine == null)
            {
                _utopiaFolder              = utopiaPath;
                ClientSettings.PathRoot    = _utopiaFolder;
                ClientSettings.EffectPack  = Path.Combine(_utopiaFolder, @"EffectsPacks\Default\");
                ClientSettings.TexturePack = Path.Combine(_utopiaFolder, @"TexturesPacks\Default\");

                _engine = new D3DEngine();
                DXStates.CreateStates(_engine);
            }

            var modelsStorage    = new ModelSQLiteStorage(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Realms", "Common", "models.db"));
            var voxelMeshFactory = new VoxelMeshFactory(_engine);

            _modelManager = new VoxelModelManager();
            _modelManager.VoxelModelStorage = modelsStorage;
            _modelManager.VoxelMeshFactory  = voxelMeshFactory;
            _modelManager.Initialize();

            _visualWorldParameters = new VisualWorldParameters();
            _textureManager        = new CubeTexturesManager(_engine);
            _textureManager.Initialization(_engine.ImmediateContext, FilterFlags.Point);
            _cubeTextureView = _textureManager.CubeArrayTexture;

            _visualWorldParameters.CubeTextureManager = _textureManager;

            _iconFactory = new IconFactory(_engine, _modelManager, _visualWorldParameters);

            //ArrayTexture.CreateTexture2DFromFiles(_engine.Device, _engine.ImmediateContext,
            //                                        Path.Combine(ClientSettings.TexturePack, @"Terran\"), @"ct*.png",
            //                                        FilterFlags.Point, "ArrayTexture_DefaultEntityRenderer",
            //                                        out _cubeTextureView);
        }
        public VisualWorldParameters(WorldParameters worldParameters, IDynamicEntity player, Vector2I visibleChunkInWorld, CubeTexturesManager cubeTextureManager)
        {
            CubeTextureManager  = cubeTextureManager;
            VisibleChunkInWorld = visibleChunkInWorld;
            WorldParameters     = worldParameters;

            //Find the chunk location
            int X = (MathHelper.Floor(player.Position.X / 16) * 16) - ((VisibleChunkInWorld.X / 2) * 16);
            int Z = (MathHelper.Floor(player.Position.Z / 16) * 16) - ((VisibleChunkInWorld.Y / 2) * 16);

            WorldChunkStartUpPosition = new Vector3I(X, 0, Z);
        }