OpenGothic
Open source reimplementation of Gothic I and II
Loading...
Searching...
No Matches
movetrigger.h
Go to the documentation of this file.
1#pragma once
2
3#include <zenkit/vobs/Trigger.hh>
4
7#include "abstracttrigger.h"
8
10 public:
11 MoveTrigger(Vob* parent, World &world, const zenkit::VMover& data, Flags flags);
12
13 void save(Serialize& fout) const override;
14 void load(Serialize &fin) override;
15
16 void onTrigger(const TriggerEvent& evt) override;
17 void onUntrigger(const TriggerEvent& evt) override;
18 void onGotoMsg(const TriggerEvent& evt) override;
19
20 void tick(uint64_t dt) override;
21
22 private:
23 enum State : int32_t {
24 Idle = 0,
25 Loop = 1,
26 Open = 2,
27 OpenTimed = 3,
28 Close = 4,
29 SingleKey = 5,
30 };
31
32 struct KeyLen {
33 uint64_t ticks = 0;
34 };
35
36 void moveEvent() override;
37 void preProcessTrigger(State prev = Idle);
38 void postProcessTrigger();
39
40 void setView(MeshObjects::Mesh&& m);
41 void emitSound(std::string_view snd, bool freeSlot=true) const;
42 void advanceAnim();
43 float calcProgress(uint32_t f1, uint32_t f2) const;
44 auto calcTransform(uint32_t f1, uint32_t f2, float a) const -> Tempest::Matrix4x4;
45 void updateFrame();
46 uint32_t nextFrame(uint32_t i) const;
47 uint32_t prevFrame(uint32_t i) const;
48 float scaleRotSpeed(float speed) const;
49
50 void invalidateView();
51
52 Tempest::Matrix4x4 pos0;
54 PhysicMesh physic;
55 std::vector<KeyLen> keyframes;
56 std::vector<zenkit::AnimationSample> moverKeyFrames;
57 zenkit::MoverBehavior behavior;
58 zenkit::MoverSpeedType speedType;
59 zenkit::MoverLerpType lerpType;
60 bool autoRotate;
61 std::string sfxOpenStart;
62 std::string sfxOpenEnd;
63 std::string sfxCloseStart;
64 std::string sfxCloseEnd;
65 std::string sfxMoving;
66 std::string visualName;
67 uint64_t stayOpenTime;
68
69 State state = Idle;
70 uint64_t frameTime = 0;
71 uint32_t frame = 0;
72 uint32_t targetFrame = uint32_t(-1);
73 };
void save(Serialize &fout) const override
void onTrigger(const TriggerEvent &evt) override
void onGotoMsg(const TriggerEvent &evt) override
void onUntrigger(const TriggerEvent &evt) override
void tick(uint64_t dt) override
void load(Serialize &fin) override
Definition vob.h:11
Flags
Definition vob.h:13
World & world
Definition vob.h:45
Definition world.h:31