Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
IdleMovementGenerator.cpp
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
#include "
Creature.h
"
7
#include "
CreatureAI.h
"
8
#include "
IdleMovementGenerator.h
"
9
#include <G3D/g3dmath.h>
10
11
IdleMovementGenerator
si_idleMovement
;
12
13
// StopMoving is needed to make unit stop if its last movement generator expires
14
// But it should not be sent otherwise there are many redundent packets
15
void
IdleMovementGenerator::Initialize
(
Unit
* owner)
16
{
17
Reset
(owner);
18
}
19
20
void
IdleMovementGenerator::Reset
(
Unit
* owner)
21
{
22
if
(!owner->
IsStopped
())
23
owner->
StopMoving
();
24
}
25
26
void
RotateMovementGenerator::Initialize
(
Unit
* owner)
27
{
28
if
(!owner->
IsStopped
())
29
owner->
StopMoving
();
30
31
if
(owner->
GetVictim
())
32
owner->
SetInFront
(owner->
GetVictim
());
33
34
owner->
AddUnitState
(
UNIT_STATE_ROTATING
);
35
owner->
AttackStop
();
36
}
37
38
bool
RotateMovementGenerator::Update
(
Unit
* owner,
uint32
diff)
39
{
40
float
angle = owner->
GetOrientation
();
41
angle += (float(diff) *
static_cast<
float
>
(
M_PI
* 2) /
m_maxDuration
) * (
m_direction
==
ROTATE_DIRECTION_LEFT
? 1.0f : -1.0f);
42
angle = G3D::wrap(angle, 0.0f,
float
(G3D::twoPi()));
43
44
owner->
SetOrientation
(angle);
// UpdateSplinePosition does not set orientation with UNIT_STATE_ROTATING
45
owner->
SetFacingTo
(angle);
// Send spline movement to clients
46
47
if
(
m_duration
> diff)
48
m_duration
-= diff;
49
else
50
return
false
;
51
52
return
true
;
53
}
54
55
void
RotateMovementGenerator::Finalize
(
Unit
* unit)
56
{
57
unit->
ClearUnitState
(
UNIT_STATE_ROTATING
);
58
if
(unit->
GetTypeId
() ==
TypeID::TYPEID_UNIT
)
59
unit->
ToCreature
()->
AI
()->
MovementInform
(
ROTATE_MOTION_TYPE
, 0);
60
}
61
62
void
DistractMovementGenerator::Initialize
(
Unit
* owner)
63
{
64
owner->
AddUnitState
(
UNIT_STATE_DISTRACTED
);
65
}
66
67
void
DistractMovementGenerator::Finalize
(
Unit
* owner)
68
{
69
owner->
ClearUnitState
(
UNIT_STATE_DISTRACTED
);
70
}
71
72
bool
DistractMovementGenerator::Update
(
Unit
*
/*owner*/
,
uint32
time_diff)
73
{
74
if
(time_diff >
m_timer
)
75
return
false
;
76
77
m_timer
-= time_diff;
78
return
true
;
79
}
80
81
void
AssistanceDistractMovementGenerator::Finalize
(
Unit
* unit)
82
{
83
unit->
ClearUnitState
(
UNIT_STATE_DISTRACTED
);
84
unit->
ToCreature
()->
SetReactState
(
REACT_AGGRESSIVE
);
85
}
M_PI
#define M_PI
Definition
Common.h:192
Creature.h
CreatureAI.h
uint32
std::uint32_t uint32
Definition
Define.h:77
si_idleMovement
IdleMovementGenerator si_idleMovement
Definition
IdleMovementGenerator.cpp:11
IdleMovementGenerator.h
ROTATE_DIRECTION_LEFT
@ ROTATE_DIRECTION_LEFT
Definition
MotionMaster.h:62
ROTATE_MOTION_TYPE
@ ROTATE_MOTION_TYPE
Definition
MotionMaster.h:40
TypeID::TYPEID_UNIT
@ TYPEID_UNIT
Definition
Object.h:54
UNIT_STATE_DISTRACTED
@ UNIT_STATE_DISTRACTED
Definition
Unit.h:524
UNIT_STATE_ROTATING
@ UNIT_STATE_ROTATING
Definition
Unit.h:532
REACT_AGGRESSIVE
@ REACT_AGGRESSIVE
Definition
Unit.h:1158
AssistanceDistractMovementGenerator::Finalize
void Finalize(Unit *) OVERRIDE
Definition
IdleMovementGenerator.cpp:81
CreatureAI::MovementInform
virtual void MovementInform(uint32, uint32)
Definition
CreatureAI.h:118
Creature::SetReactState
void SetReactState(ReactStates st)
Definition
Creature.h:460
Creature::AI
CreatureAI * AI() const
Definition
Creature.h:483
DistractMovementGenerator::Initialize
void Initialize(Unit *) OVERRIDE
Definition
IdleMovementGenerator.cpp:62
DistractMovementGenerator::Finalize
void Finalize(Unit *) OVERRIDE
Definition
IdleMovementGenerator.cpp:67
DistractMovementGenerator::m_timer
uint32 m_timer
Definition
IdleMovementGenerator.h:51
DistractMovementGenerator::Update
bool Update(Unit *, uint32) OVERRIDE
Definition
IdleMovementGenerator.cpp:72
IdleMovementGenerator
Definition
IdleMovementGenerator.h:12
IdleMovementGenerator::Initialize
void Initialize(Unit *) OVERRIDE
Definition
IdleMovementGenerator.cpp:15
IdleMovementGenerator::Reset
void Reset(Unit *) OVERRIDE
Definition
IdleMovementGenerator.cpp:20
Object::GetTypeId
TypeID GetTypeId() const
Definition
Object.h:131
Object::ToCreature
Creature * ToCreature()
Definition
Object.h:207
RotateMovementGenerator::m_duration
uint32 m_duration
Definition
IdleMovementGenerator.h:35
RotateMovementGenerator::m_maxDuration
uint32 m_maxDuration
Definition
IdleMovementGenerator.h:35
RotateMovementGenerator::m_direction
RotateDirection m_direction
Definition
IdleMovementGenerator.h:36
RotateMovementGenerator::Update
bool Update(Unit *, uint32) OVERRIDE
Definition
IdleMovementGenerator.cpp:38
RotateMovementGenerator::Finalize
void Finalize(Unit *) OVERRIDE
Definition
IdleMovementGenerator.cpp:55
RotateMovementGenerator::Initialize
void Initialize(Unit *) OVERRIDE
Definition
IdleMovementGenerator.cpp:26
Unit
Definition
Unit.h:1367
Unit::ClearUnitState
void ClearUnitState(uint32 f)
Definition
Unit.h:1489
Unit::IsStopped
bool IsStopped() const
Definition
Unit.h:2614
Unit::SetFacingTo
void SetFacingTo(float ori)
Definition
Unit.cpp:9114
Unit::StopMoving
void StopMoving()
-------—End of Pet responses methods-------—
Definition
Unit.cpp:5877
Unit::AddUnitState
void AddUnitState(uint32 f)
Definition
Unit.h:1481
Unit::GetVictim
Unit * GetVictim() const
Definition
Unit.h:1468
Unit::SetInFront
void SetInFront(WorldObject const *target)
Definition
Unit.cpp:9108
Unit::AttackStop
bool AttackStop()
Definition
UnitCombatState.cpp:183
Position::GetOrientation
float GetOrientation() const
Definition
Object.h:331
Position::SetOrientation
void SetOrientation(float orientation)
Definition
Object.h:323
src
server
game
Movement
MovementGenerators
IdleMovementGenerator.cpp
Generated on
for Project SkyFire Core by
1.17.0