diff options
Diffstat (limited to 'src/OpaqueWorld.h')
-rw-r--r-- | src/OpaqueWorld.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/OpaqueWorld.h b/src/OpaqueWorld.h new file mode 100644 index 000000000..d0d4e7fd0 --- /dev/null +++ b/src/OpaqueWorld.h @@ -0,0 +1,25 @@ + +#pragma once + +// fwd: +class cBroadcastInterface; +class cChunkInterface; +class cForEachChunkProvider; +class cWorld; +class cWorldInterface; + +/** Utilities to allow casting a cWorld to one of its interfaces without including World.h. */ +namespace World +{ + // Defined in World.cpp + cBroadcastInterface * GetBroadcastInterface(cWorld * a_World); + cForEachChunkProvider * GetFECProvider (cWorld * a_World); + cWorldInterface * GetWorldInterface (cWorld * a_World); + + inline cBroadcastInterface & GetBroadcastInterface(cWorld & a_World) { return *GetBroadcastInterface(&a_World); } + inline cForEachChunkProvider & GetFECProvider (cWorld & a_World) { return *GetFECProvider(&a_World); } + inline cWorldInterface & GetWorldInterface (cWorld & a_World) { return *GetWorldInterface(&a_World); } + + // cChunkInterface is more like a pimpl for cChunkMap than an interface so it needs to be returned by value + cChunkInterface GetChunkInterface(cWorld & a_World); +} |