diff options
Diffstat (limited to 'src/Blocks')
-rw-r--r-- | src/Blocks/BlockObserver.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/Blocks/BlockObserver.h b/src/Blocks/BlockObserver.h index 30c19ba2e..78a4c05b2 100644 --- a/src/Blocks/BlockObserver.h +++ b/src/Blocks/BlockObserver.h @@ -16,4 +16,27 @@ public: { } + inline static Vector3i GetObservingFaceOffset(NIBBLETYPE a_Meta) + { + return -GetSignalOutputOffset(a_Meta); + } + + inline static Vector3i GetSignalOutputOffset(NIBBLETYPE a_Meta) + { + switch (a_Meta & 0x7) + { + case 0x00: return { 0, 1, 0 }; + case 0x01: return { 0, -1, 0 }; + case 0x02: return { 0, 0, 1 }; + case 0x03: return { 0, 0, -1 }; + case 0x04: return { 1, 0, 0 }; + case 0x05: return { -1, 0, 0 }; + default: + { + LOGWARNING("%s: Unknown metadata: %d", __FUNCTION__, a_Meta); + ASSERT(!"Unknown metadata while determining orientation of observer!"); + return { 0, 0, 0 }; + } + } + } }; |