OpenGothic
Open source reimplementation of Gothic I and II
Loading...
Searching...
No Matches
vob.h
Go to the documentation of this file.
1#pragma once
2
3#include <Tempest/Matrix4x4>
4#include <Tempest/Vec>
5
6#include <zenkit/world/VobTree.hh>
7
8class World;
9class Serialize;
10
11class Vob {
12 public:
13 enum Flags:uint8_t {
14 None = 0,
15 Startup = 0x1 << 0,
16 Static = 0x1 << 1,
17 };
18 friend Flags operator | (Flags a, Flags b) { return Flags(uint8_t(a) | uint8_t(b)); }
19 friend Flags operator & (Flags a, Flags b) { return Flags(uint8_t(a) & uint8_t(b)); }
20 friend Flags operator ~ (Flags a) { return Flags(~uint8_t(a)); }
21
22 Vob(World& owner);
23 Vob(Vob* parent, World& owner, const zenkit::VirtualObject& vob, Flags flags);
24 virtual ~Vob();
25 static std::unique_ptr<Vob> load(Vob* parent, World& world, const zenkit::VirtualObject& vob, Flags flags);
26
27 void saveVobTree(Serialize& fin) const;
28 virtual void save(Serialize& fout) const;
29
30 void loadVobTree(Serialize& fin);
31 virtual void load(Serialize& fin);
32
33 Tempest::Vec3 position() const;
34 auto transform() const -> const Tempest::Matrix4x4& { return pos; }
35 void setGlobalTransform(const Tempest::Matrix4x4& p);
36
37 auto localTransform() const -> const Tempest::Matrix4x4& { return local; }
38 void setLocalTransform(const Tempest::Matrix4x4& p);
39 virtual bool setMobState(std::string_view scheme, int32_t st);
40
41 virtual bool isDynamic() const;
42 virtual float extendedSearchRadius() const;
43
44 protected:
46 zenkit::VirtualObjectType vobType = zenkit::VirtualObjectType::UNKNOWN;
47 uint32_t vobObjectID = uint32_t(-1);
48
49 virtual void moveEvent();
50
51 private:
52 std::vector<std::unique_ptr<Vob>> child;
53
54 Tempest::Matrix4x4 pos, local;
55 Vob* parent = nullptr;
56
57 void recalculateTransform();
58 };
59
Definition vob.h:11
virtual void save(Serialize &fout) const
Definition vob.cpp:258
virtual bool setMobState(std::string_view scheme, int32_t st)
Definition vob.cpp:78
uint32_t vobObjectID
Definition vob.h:47
void loadVobTree(Serialize &fin)
Definition vob.cpp:245
virtual bool isDynamic() const
Definition vob.cpp:88
virtual void moveEvent()
Definition vob.cpp:85
friend Flags operator|(Flags a, Flags b)
Definition vob.h:18
friend Flags operator~(Flags a)
Definition vob.h:20
zenkit::VirtualObjectType vobType
Definition vob.h:46
Flags
Definition vob.h:13
@ Static
Definition vob.h:16
@ None
Definition vob.h:14
@ Startup
Definition vob.h:15
virtual ~Vob()
Definition vob.cpp:54
World & world
Definition vob.h:45
void setGlobalTransform(const Tempest::Matrix4x4 &p)
Definition vob.cpp:61
void setLocalTransform(const Tempest::Matrix4x4 &p)
Definition vob.cpp:73
static std::unique_ptr< Vob > load(Vob *parent, World &world, const zenkit::VirtualObject &vob, Flags flags)
Definition vob.cpp:127
auto localTransform() const -> const Tempest::Matrix4x4 &
Definition vob.h:37
friend Flags operator&(Flags a, Flags b)
Definition vob.h:19
void saveVobTree(Serialize &fin) const
Definition vob.cpp:236
auto transform() const -> const Tempest::Matrix4x4 &
Definition vob.h:34
Tempest::Vec3 position() const
Definition vob.cpp:57
virtual float extendedSearchRadius() const
Definition vob.cpp:92
Definition world.h:31