/// <summary> /// インスタンスを生成します。 /// </summary> /// <param name="blockLoader"> /// Block をロードするための IBlockLoader。 /// </param> /// <param name="blockMeshFactory"> /// 取得した Block から BlockMesh を生成するための BlockMeshFactory。 /// </param> public BlockMeshManager(IBlockLoader blockLoader, BlockMeshFactory blockMeshFactory) { if (blockLoader == null) throw new ArgumentNullException("blockLoader"); if (blockMeshFactory == null) throw new ArgumentNullException("blockMeshFactory"); this.blockLoader = blockLoader; this.blockMeshFactory = blockMeshFactory; }
/// <summary> /// インスタンスを生成します。 /// </summary> /// <param name="blockLoader"> /// Block をロードするための IBlockLoader。 /// </param> /// <param name="blockMeshFactory"> /// 取得した Block から BlockMesh を生成するための BlockMeshFactory。 /// </param> public BlockMeshManager(IBlockLoader blockLoader, BlockMeshFactory blockMeshFactory) { if (blockLoader == null) { throw new ArgumentNullException("blockLoader"); } if (blockMeshFactory == null) { throw new ArgumentNullException("blockMeshFactory"); } this.blockLoader = blockLoader; this.blockMeshFactory = blockMeshFactory; }
/// <summary> /// BlockMesh をロードします。 /// </summary> void LoadBlockMesh() { var blockLoader = new StringBlockLoader(blockData); var meshFactory = new BlockMeshFactory(GraphicsDevice); meshManager = new BlockMeshManager(blockLoader, meshFactory); // 通常の IBlockEffect をロードします。 blockEffect = new BasicBlockEffect(GraphicsDevice); blockEffect.EnableDefaultLighting(); // インスタンシング用の IBlockEffect をロードします。 var instancingEffect = Content.Load<Effect>("Effects/Instancing"); instancingBlockEffect = new InstancingBlockEffect(instancingEffect); instancingBlockEffect.EnableDefaultLighting(); // 実際のアプリケーションではファイルの Block から BlockMesh をロードします。 // BlockMesh をロードします。 mesh = meshManager.Load("Dummy", lodCount); }