Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
MoveSpline.h
Go to the documentation of this file.
1
/*
2
* This file is part of Project SkyFire https://www.projectskyfire.org.
3
* See LICENSE.md file for Copyright information
4
*/
5
6
#ifndef SKYFIRESERVER_MOVEPLINE_H
7
#define SKYFIRESERVER_MOVEPLINE_H
8
9
#include "
MoveSplineInitArgs.h
"
10
#include "
Spline.h
"
11
12
namespace
Movement
13
{
14
struct
Location
:
public
Vector3
15
{
16
Location
() :
orientation
(0) { }
17
Location
(
float
x,
float
y,
float
z,
float
o) : Vector3(x, y, z),
orientation
(o) { }
18
Location
(
const
Vector3& v) : Vector3(v),
orientation
(0) { }
19
Location
(
const
Vector3& v,
float
o) : Vector3(v),
orientation
(o) { }
20
21
float
orientation
;
22
};
23
24
// MoveSpline represents smooth catmullrom or linear curve and point that moves belong it
25
// curve can be cyclic - in this case movement will be cyclic
26
// point can have vertical acceleration motion componemt(used in fall, parabolic movement)
27
class
MoveSpline
28
{
29
public
:
30
typedef
Spline<int32>
MySpline
;
31
enum
UpdateResult
32
{
33
Result_None
= 0x01,
34
Result_Arrived
= 0x02,
35
Result_NextCycle
= 0x04,
36
Result_NextSegment
= 0x08
37
};
38
friend
class
PacketBuilder
;
39
40
protected
:
41
MySpline
spline
;
42
43
FacingInfo
facing
;
44
45
uint32
m_Id
;
46
47
MoveSplineFlag
splineflags
;
48
49
int32
time_passed
;
50
// currently duration mods are unused, but its _currently_
51
//float duration_mod;
52
//float duration_mod_next;
53
float
vertical_acceleration
;
54
float
initialOrientation
;
55
int32
effect_start_time
;
56
int32
point_Idx
;
57
int32
point_Idx_offset
;
58
59
void
init_spline
(
const
MoveSplineInitArgs
& args);
60
61
protected
:
62
MySpline::ControlArray
const
&
getPath
()
const
{
return
spline
.getPoints(); }
63
void
computeParabolicElevation
(
float
& el)
const
;
64
void
computeFallElevation
(
float
& el)
const
;
65
66
UpdateResult
_updateState
(
int32
& ms_time_diff);
67
int32
next_timestamp
()
const
{
return
spline
.length(
point_Idx
+ 1); }
68
int32
segment_time_elapsed
()
const
{
return
next_timestamp
() -
time_passed
; }
69
int32
timeElapsed
()
const
{
return
Duration
() -
time_passed
; }
70
int32
timePassed
()
const
{
return
time_passed
; }
71
72
public
:
73
int32
Duration
()
const
{
return
spline
.length(); }
74
MySpline
const
&
_Spline
()
const
{
return
spline
; }
75
int32
_currentSplineIdx
()
const
{
return
point_Idx
; }
76
void
_Finalize
();
77
void
_Interrupt
() {
splineflags
.done =
true
; }
78
79
public
:
80
void
Initialize
(
const
MoveSplineInitArgs
&);
81
bool
Initialized
()
const
{
return
!
spline
.empty(); }
82
83
MoveSpline
();
84
85
template
<
class
UpdateHandler>
86
void
updateState
(
int32
difftime, UpdateHandler& handler)
87
{
88
ASSERT
(
Initialized
());
89
do
90
handler(
_updateState
(difftime));
91
while
(difftime > 0);
92
}
93
94
void
updateState
(
int32
difftime)
95
{
96
ASSERT
(
Initialized
());
97
do
_updateState
(difftime);
98
while
(difftime > 0);
99
}
100
101
Location
ComputePosition
()
const
;
102
103
uint32
GetId
()
const
{
return
m_Id
; }
104
bool
Finalized
()
const
{
return
splineflags
.done; }
105
bool
isCyclic
()
const
{
return
splineflags
.cyclic; }
106
bool
isFalling
()
const
{
return
splineflags
.falling; }
107
Vector3
FinalDestination
()
const
{
return
Initialized
() ?
spline
.getPoint(
spline
.last()) : Vector3(); }
108
Vector3
CurrentDestination
()
const
{
return
Initialized
() ?
spline
.getPoint(
point_Idx
+ 1) : Vector3(); }
109
int32
currentPathIdx
()
const
;
110
111
bool
onTransport
;
112
std::string
ToString
()
const
;
113
};
114
}
115
#endif
// SKYFIRESERVER_MOVEPLINE_H
int32
std::int32_t int32
Definition
Define.h:73
uint32
std::uint32_t uint32
Definition
Define.h:77
ASSERT
#define ASSERT
Definition
Errors.h:29
MoveSplineInitArgs.h
Spline.h
Movement::MoveSplineFlag
Definition
MoveSplineFlag.h:21
Movement::MoveSpline::next_timestamp
int32 next_timestamp() const
Definition
MoveSpline.h:67
Movement::MoveSpline::isCyclic
bool isCyclic() const
Definition
MoveSpline.h:105
Movement::MoveSpline::MoveSpline
MoveSpline()
Definition
MoveSpline.cpp:176
Movement::MoveSpline::ToString
std::string ToString() const
Definition
MoveSpline.cpp:269
Movement::MoveSpline::_updateState
UpdateResult _updateState(int32 &ms_time_diff)
============================================================================================
Definition
MoveSpline.cpp:227
Movement::MoveSpline::Initialize
void Initialize(const MoveSplineInitArgs &)
Definition
MoveSpline.cpp:142
Movement::MoveSpline::ComputePosition
Location ComputePosition() const
Definition
MoveSpline.cpp:13
Movement::MoveSpline::timeElapsed
int32 timeElapsed() const
Definition
MoveSpline.h:69
Movement::MoveSpline::_Finalize
void _Finalize()
Definition
MoveSpline.cpp:290
Movement::MoveSpline::GetId
uint32 GetId() const
Definition
MoveSpline.h:103
Movement::MoveSpline::isFalling
bool isFalling() const
Definition
MoveSpline.h:106
Movement::MoveSpline::time_passed
int32 time_passed
Definition
MoveSpline.h:49
Movement::MoveSpline::computeFallElevation
void computeFallElevation(float &el) const
Definition
MoveSpline.cpp:67
Movement::MoveSpline::Finalized
bool Finalized() const
Definition
MoveSpline.h:104
Movement::MoveSpline::getPath
MySpline::ControlArray const & getPath() const
Definition
MoveSpline.h:62
Movement::MoveSpline::timePassed
int32 timePassed() const
Definition
MoveSpline.h:70
Movement::MoveSpline::updateState
void updateState(int32 difftime)
Definition
MoveSpline.h:94
Movement::MoveSpline::FinalDestination
Vector3 FinalDestination() const
Definition
MoveSpline.h:107
Movement::MoveSpline::PacketBuilder
friend class PacketBuilder
Definition
MoveSpline.h:38
Movement::MoveSpline::_Spline
MySpline const & _Spline() const
Definition
MoveSpline.h:74
Movement::MoveSpline::effect_start_time
int32 effect_start_time
Definition
MoveSpline.h:55
Movement::MoveSpline::UpdateResult
UpdateResult
Definition
MoveSpline.h:32
Movement::MoveSpline::Result_NextSegment
@ Result_NextSegment
Definition
MoveSpline.h:36
Movement::MoveSpline::Result_Arrived
@ Result_Arrived
Definition
MoveSpline.h:34
Movement::MoveSpline::Result_NextCycle
@ Result_NextCycle
Definition
MoveSpline.h:35
Movement::MoveSpline::Result_None
@ Result_None
Definition
MoveSpline.h:33
Movement::MoveSpline::currentPathIdx
int32 currentPathIdx() const
Definition
MoveSpline.cpp:297
Movement::MoveSpline::_Interrupt
void _Interrupt()
Definition
MoveSpline.h:77
Movement::MoveSpline::spline
MySpline spline
Definition
MoveSpline.h:41
Movement::MoveSpline::vertical_acceleration
float vertical_acceleration
Definition
MoveSpline.h:53
Movement::MoveSpline::Duration
int32 Duration() const
Definition
MoveSpline.h:73
Movement::MoveSpline::_currentSplineIdx
int32 _currentSplineIdx() const
Definition
MoveSpline.h:75
Movement::MoveSpline::point_Idx
int32 point_Idx
Definition
MoveSpline.h:56
Movement::MoveSpline::Initialized
bool Initialized() const
Definition
MoveSpline.h:81
Movement::MoveSpline::m_Id
uint32 m_Id
Definition
MoveSpline.h:45
Movement::MoveSpline::segment_time_elapsed
int32 segment_time_elapsed() const
Definition
MoveSpline.h:68
Movement::MoveSpline::CurrentDestination
Vector3 CurrentDestination() const
Definition
MoveSpline.h:108
Movement::MoveSpline::facing
FacingInfo facing
Definition
MoveSpline.h:43
Movement::MoveSpline::init_spline
void init_spline(const MoveSplineInitArgs &args)
Definition
MoveSpline.cpp:105
Movement::MoveSpline::computeParabolicElevation
void computeParabolicElevation(float &el) const
Definition
MoveSpline.cpp:54
Movement::MoveSpline::updateState
void updateState(int32 difftime, UpdateHandler &handler)
Definition
MoveSpline.h:86
Movement::MoveSpline::splineflags
MoveSplineFlag splineflags
Definition
MoveSpline.h:47
Movement::MoveSpline::onTransport
bool onTransport
Definition
MoveSpline.h:111
Movement::MoveSpline::initialOrientation
float initialOrientation
Definition
MoveSpline.h:54
Movement::MoveSpline::point_Idx_offset
int32 point_Idx_offset
Definition
MoveSpline.h:57
Movement::MoveSpline::MySpline
Spline< int32 > MySpline
Definition
MoveSpline.h:30
Movement::SplineBase::ControlArray
std::vector< Vector3 > ControlArray
Definition
Spline.h:19
Movement::Spline
Definition
Spline.h:122
Movement
Definition
Unit.h:365
Movement::Location
Definition
MoveSpline.h:15
Movement::Location::Location
Location(const Vector3 &v)
Definition
MoveSpline.h:18
Movement::Location::Location
Location(const Vector3 &v, float o)
Definition
MoveSpline.h:19
Movement::Location::Location
Location()
Definition
MoveSpline.h:16
Movement::Location::orientation
float orientation
Definition
MoveSpline.h:21
Movement::Location::Location
Location(float x, float y, float z, float o)
Definition
MoveSpline.h:17
Movement::MoveSplineInitArgs
Definition
MoveSplineInitArgs.h:30
Movement::FacingInfo
Definition
MoveSplineInitArgs.h:19
src
server
game
Movement
Spline
MoveSpline.h
Generated on
for Project SkyFire Core by
1.17.0