OpenGothic
Open source reimplementation of Gothic I and II
Loading...
Searching...
No Matches
collisionzone.h
Go to the documentation of this file.
1#pragma once
2
3#include <Tempest/Vec>
4
5#include <functional>
6#include <vector>
7
8class World;
9class ParticleFx;
10class Serialize;
11class Npc;
12
13class CollisionZone final {
14 public:
16 CollisionZone(World& owner, const Tempest::Vec3& pos, const ParticleFx& pfx);
17 CollisionZone(World& owner, const Tempest::Vec3& pos, const Tempest::Vec3& size);
21
22 void save(Serialize& fout) const;
23 void load(Serialize &fin);
24
25 void setCallback(std::function<void(Npc& npc)> f);
26
27 Tempest::Vec3 position() const { return pos; }
28 void setPosition(const Tempest::Vec3& p);
29
30 const std::vector<Npc*>& intersections() const { return intersect; }
31
32 bool checkPos(const Tempest::Vec3& pos) const;
33 void onIntersect(Npc& npc);
34 void tick(uint64_t dt);
35
36 private:
37 World* owner = nullptr;
38 std::function<void(Npc&)> cb;
39
40 enum Type:uint8_t {
41 T_BBox,
42 T_Capsule,
43 };
44 uint64_t time0 = 0;
45 Type type = T_BBox;
46 Tempest::Vec3 pos, size;
47 const ParticleFx* pfx = nullptr;
48
49 std::vector<Npc*> intersect;
50 };
51
void tick(uint64_t dt)
Tempest::Vec3 position() const
const std::vector< Npc * > & intersections() const
void setCallback(std::function< void(Npc &npc)> f)
void setPosition(const Tempest::Vec3 &p)
void load(Serialize &fin)
bool checkPos(const Tempest::Vec3 &pos) const
void save(Serialize &fout) const
CollisionZone & operator=(CollisionZone &&other)
void onIntersect(Npc &npc)
Definition npc.h:25
Definition world.h:31