Cuberite
A lightweight, fast and extensible game server for Minecraft
BlockTracer.h
Go to the documentation of this file.
1 
2 // BlockTracer.h
3 
4 // Declares the classes common for all blocktracers
5 
6 
7 
8 
9 
10 #pragma once
11 
12 
13 
14 
15 
16 #include "Defines.h"
17 
18 
19 
20 
21 
22 // fwd: World.h
23 class cWorld;
24 
25 
26 
27 
28 
29 class cBlockTracer abstract
30 {
31 public:
34  class cCallbacks abstract
35  {
36  public:
37  // Force a virtual destructor in descendants:
38  virtual ~cCallbacks() {}
39 
43  virtual bool OnNextBlock(int a_BlockX, int a_BlockY, int a_BlockZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta, eBlockFace a_EntryFace) = 0;
44 
48  virtual bool OnNextBlockNoData(int a_BlockX, int a_BlockY, int a_BlockZ, char a_EntryFace)
49  {
50  UNUSED(a_BlockX);
51  UNUSED(a_BlockY);
52  UNUSED(a_BlockZ);
53  UNUSED(a_EntryFace);
54  return false;
55  }
56 
63  virtual bool OnOutOfWorld(double a_BlockX, double a_BlockY, double a_BlockZ)
64  {
65  UNUSED(a_BlockX);
66  UNUSED(a_BlockY);
67  UNUSED(a_BlockZ);
68  return false;
69  }
70 
77  virtual bool OnIntoWorld(double a_BlockX, double a_BlockY, double a_BlockZ)
78  {
79  UNUSED(a_BlockX);
80  UNUSED(a_BlockY);
81  UNUSED(a_BlockZ);
82  return false;
83  }
84 
88  virtual void OnNoMoreHits(void) {}
89 
93  virtual void OnNoChunk(void) {}
94  } ;
95 
96 
98  cBlockTracer(cWorld & a_World, cCallbacks & a_Callbacks) :
99  m_World(&a_World),
100  m_Callbacks(&a_Callbacks)
101  {
102  }
103 
104 
106  cWorld & SetWorld(cWorld & a_World)
107  {
108  cWorld & Old = *m_World;
109  m_World = &a_World;
110  return Old;
111  }
112 
113 
115  cCallbacks & SetCallbacks(cCallbacks & a_NewCallbacks)
116  {
117  cCallbacks & Old = *m_Callbacks;
118  m_Callbacks = &a_NewCallbacks;
119  return Old;
120  }
121 
122 protected:
124  cWorld * m_World;
125 
127  cCallbacks * m_Callbacks;
128 } ;
129 
130 
131 
132 
unsigned char BLOCKTYPE
The datatype used by blockdata.
Definition: ChunkDef.h:42
unsigned char NIBBLETYPE
The datatype used by nibbledata (meta, light, skylight)
Definition: ChunkDef.h:45
Definition: World.h:65
#define UNUSED
Definition: Globals.h:152
eBlockFace
Block face constants, used in PlayerDigging and PlayerBlockPlacement packets and bbox collision calc...
Definition: Defines.h:29