My Project
BlockModelProvider.h
1 #pragma once
2 #include "BlockModel.h"
3 
4 namespace ParaEngine
5 {
6  class CBlockWorld;
7  class BlockTemplate;
8  class IBlockModelProvider;
9  class Block;
10 
13  {
14  public:
15  IBlockModelProvider(BlockTemplate* pBlockTemplate):m_pBlockTemplate(pBlockTemplate){};
16  virtual ~IBlockModelProvider(){};
17 
22  virtual BlockModel& GetBlockModel(int nIndex = 0);
23 
24  virtual BlockModel& GetBlockModel(CBlockWorld* pBlockManager, uint16_t block_id, uint16_t bx, uint16_t by, uint16_t bz, uint16_t nBlockData = 0, Block** neighborBlocks = NULL);
25  virtual BlockModel& GetBlockModelByData(uint32 nData);
26 
29  virtual int GetModelIndex(CBlockWorld* pBlockManager, uint16_t block_id, uint16_t bx, uint16_t by, uint16_t bz, uint16_t nBlockData = 0, Block** neighborBlocks=NULL){return 0;};
30  protected:
31  BlockTemplate* m_pBlockTemplate;
32  };
33 
36  {
37  public:
38  CGrassModelProvider(BlockTemplate* pBlockTemplate): IBlockModelProvider(pBlockTemplate){};
39  virtual ~CGrassModelProvider(){};
40 
41 
44  virtual int GetModelIndex(CBlockWorld* pBlockManager, uint16_t block_id, uint16_t bx, uint16_t by, uint16_t bz, uint16_t nBlockData = 0, Block** neighborBlocks=NULL);
45  };
46 
49  {
50  public:
51  CLinearModelProvider(BlockTemplate* pBlockTemplate,int nCount = 0) : m_nModelCount(nCount), IBlockModelProvider(pBlockTemplate){};
52  virtual ~CLinearModelProvider(){};
53 
54  virtual BlockModel& GetBlockModelByData(uint32 nData);
55 
58  virtual int GetModelIndex(CBlockWorld* pBlockManager, uint16_t block_id, uint16_t bx, uint16_t by, uint16_t bz, uint16_t nBlockData = 0, Block** neighborBlocks=NULL);
59 
60  int GetModelCount() const;
61  protected:
62  int m_nModelCount;
63  };
64 
65 }
virtual BlockModel & GetBlockModel(int nIndex=0)
get the default block model.
Definition: BlockModelProvider.cpp:18
for grass cross model only.
Definition: BlockModelProvider.h:35
different physics engine has different winding order.
Definition: EventBinding.h:32
Definition: BlockChunk.h:14
Definition: BlockModel.h:172
virtual int GetModelIndex(CBlockWorld *pBlockManager, uint16_t block_id, uint16_t bx, uint16_t by, uint16_t bz, uint16_t nBlockData=0, Block **neighborBlocks=NULL)
get block model index
Definition: BlockModelProvider.h:29
base class for an instance of block world
Definition: BlockWorld.h:35
just return model linearly.
Definition: BlockModelProvider.h:48
block template base class.
Definition: BlockTemplate.h:15
interface class for filtering block models.
Definition: BlockModelProvider.h:12