summaryrefslogtreecommitdiffstats
path: root/src/Mobs/MobPointer.h
diff options
context:
space:
mode:
authorLogicParrot <LogicParrot@users.noreply.github.com>2017-08-29 23:13:25 +0200
committerLogicParrot <LogicParrot@users.noreply.github.com>2017-08-29 23:13:25 +0200
commit00febf68ad8bc36546c02b0c0b926189fb3955a1 (patch)
treec10896365ce99cd0e22f9398908b094ea5114e9e /src/Mobs/MobPointer.h
parentAgressives wander and don't crash (diff)
downloadcuberite-00febf68ad8bc36546c02b0c0b926189fb3955a1.tar
cuberite-00febf68ad8bc36546c02b0c0b926189fb3955a1.tar.gz
cuberite-00febf68ad8bc36546c02b0c0b926189fb3955a1.tar.bz2
cuberite-00febf68ad8bc36546c02b0c0b926189fb3955a1.tar.lz
cuberite-00febf68ad8bc36546c02b0c0b926189fb3955a1.tar.xz
cuberite-00febf68ad8bc36546c02b0c0b926189fb3955a1.tar.zst
cuberite-00febf68ad8bc36546c02b0c0b926189fb3955a1.zip
Diffstat (limited to 'src/Mobs/MobPointer.h')
-rw-r--r--src/Mobs/MobPointer.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/Mobs/MobPointer.h b/src/Mobs/MobPointer.h
new file mode 100644
index 000000000..109b0511e
--- /dev/null
+++ b/src/Mobs/MobPointer.h
@@ -0,0 +1,34 @@
+#pragma once
+
+/** This class allows mobs to hold pointers to other mobs/players in a safe manner.
+When calling GetPointer(), it first checks if the Monster/Player being pointed to is still valid.
+If not, it returns a nullptr. The returned raw pointer must be used locally and then discarded.
+it MUST NOT be preserved across ticks.
+*/
+
+class cPawn;
+class cMobPointer
+{
+public:
+ cMobPointer(cPawn * a_Pointer); // Constructor
+ cMobPointer(const cMobPointer & a_MobPointer); // Copy constructor
+ cMobPointer(cMobPointer && a_MobPointer); // Move constructor
+ cMobPointer& operator=(const cMobPointer& a_MobPointer); // Copy assignment operator
+ cMobPointer& operator=(cMobPointer&& a_MobPointer); // Move assignment operator
+
+ void operator=(cPawn * a_Pointer); // set Pointer
+
+ /** Returns the raw pointer. The returned raw pointer must
+ be used locally and then discarded. it MUST NOT be preserved across ticks.
+ Returns null if raw pointer is null. Returns null if mob is destroyed or moved worlds.
+ Must be called at least once per tick, even if the raw pointer is not going to be used that tick. */
+ cPawn * GetPointer();
+
+
+private:
+ cPawn * m_Pointer;
+} ;
+
+
+
+