AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
HomeMovementGenerator< Creature > Class Reference

#include "HomeMovementGenerator.h"

Inheritance diagram for HomeMovementGenerator< Creature >:
MovementGeneratorMedium< Creature, HomeMovementGenerator< Creature > > MovementGenerator

Public Member Functions

 HomeMovementGenerator (bool walk)
 
 ~HomeMovementGenerator ()
 
void DoInitialize (Creature *)
 
void DoFinalize (Creature *)
 
void DoReset (Creature *)
 
bool DoUpdate (Creature *, const uint32)
 
MovementGeneratorType GetMovementGeneratorType ()
 
void unitSpeedChanged ()
 
- Public Member Functions inherited from MovementGeneratorMedium< Creature, HomeMovementGenerator< Creature > >
void Initialize (Unit *u) override
 
void Finalize (Unit *u) override
 
void Reset (Unit *u) override
 
bool Update (Unit *u, uint32 time_diff) override
 
- Public Member Functions inherited from MovementGenerator
virtual ~MovementGenerator ()
 
virtual void Initialize (Unit *)=0
 
virtual void Finalize (Unit *)=0
 
virtual void Reset (Unit *)=0
 
virtual bool Update (Unit *, uint32 time_diff)=0
 
virtual MovementGeneratorType GetMovementGeneratorType ()=0
 
virtual uint32 GetSplineId () const
 
virtual void unitSpeedChanged ()
 
virtual void Pause (uint32)
 
virtual void Resume (uint32)
 
virtual bool GetResetPosition (float &, float &, float &)
 

Private Member Functions

void _setTargetLocation (Creature *)
 

Private Attributes

bool arrived: 1
 
bool i_recalculateTravel: 1
 
bool _walk
 

Detailed Description

Constructor & Destructor Documentation

◆ HomeMovementGenerator()

32: arrived(false), i_recalculateTravel(false), _walk(walk) {}
bool i_recalculateTravel
Definition: HomeMovementGenerator.h:45
bool _walk
Definition: HomeMovementGenerator.h:46
bool arrived
Definition: HomeMovementGenerator.h:44

◆ ~HomeMovementGenerator()

Member Function Documentation

◆ _setTargetLocation()

void HomeMovementGenerator< Creature >::_setTargetLocation ( Creature owner)
private
50{
51 // Xinef: dont interrupt in any cast!
52 //if (owner->HasUnitState(UNIT_STATE_ROOT | UNIT_STATE_STUNNED | UNIT_STATE_DISTRACTED))
53 // return;
54 Movement::MoveSplineInit init(owner);
55 float x, y, z, o;
56
57 // Xinef: if there is motion generator on controlled slot, this one is not updated
58 // Xinef: always get reset pos from idle slot
60 if (owner->GetMotionMaster()->empty() || !gen || !gen->GetResetPosition(x, y, z))
61 {
62 owner->GetHomePosition(x, y, z, o);
63 init.SetFacing(o);
64 }
65
66 owner->UpdateAllowedPositionZ(x, y, z);
67 init.MoveTo(x, y, z, DisableMgr::IsPathfindingEnabled(owner->FindMap()), true);
68 init.SetWalk(_walk);
69 init.Launch();
70
71 arrived = false;
72
74}
std::uint32_t uint32
Definition: Define.h:108
@ UNIT_STATE_EVADE
Definition: Unit.h:346
@ UNIT_STATE_POSSESSED
Definition: Unit.h:341
@ UNIT_STATE_ALL_STATE
Definition: Unit.h:373
@ UNIT_STATE_IGNORE_PATHFINDING
Definition: Unit.h:352
@ UNIT_STATE_NO_ENVIRONMENT_UPD
Definition: Unit.h:353
@ MOTION_SLOT_IDLE
Definition: MotionMaster.h:61
bool IsPathfindingEnabled(const Map *map)
Definition: DisableMgr.cpp:411
void GetHomePosition(float &x, float &y, float &z, float &ori) const
Definition: Creature.h:330
void UpdateAllowedPositionZ(float x, float y, float &z, float *groundZ=nullptr) const
Definition: Object.cpp:1554
Map * FindMap() const
Definition: Object.h:518
void ClearUnitState(uint32 f)
Definition: Unit.h:1399
MotionMaster * GetMotionMaster()
Definition: Unit.h:2262
_Ty GetMotionSlot(int slot) const
Definition: MotionMaster.h:153
bool empty() const
Definition: MotionMaster.h:146
Definition: MovementGenerator.h:30
virtual bool GetResetPosition(float &, float &, float &)
Definition: MovementGenerator.h:53
Definition: MoveSplineInit.h:71

References Unit::ClearUnitState(), MotionMaster::empty(), WorldObject::FindMap(), Creature::GetHomePosition(), Unit::GetMotionMaster(), MotionMaster::GetMotionSlot(), MovementGenerator::GetResetPosition(), DisableMgr::IsPathfindingEnabled(), Movement::MoveSplineInit::Launch(), MOTION_SLOT_IDLE, Movement::MoveSplineInit::MoveTo(), Movement::MoveSplineInit::SetFacing(), Movement::MoveSplineInit::SetWalk(), UNIT_STATE_ALL_STATE, UNIT_STATE_EVADE, UNIT_STATE_IGNORE_PATHFINDING, UNIT_STATE_NO_ENVIRONMENT_UPD, UNIT_STATE_POSSESSED, and WorldObject::UpdateAllowedPositionZ().

◆ DoFinalize()

void HomeMovementGenerator< Creature >::DoFinalize ( Creature owner)
31{
33 if (arrived)
34 {
35 // Xinef: npc run by default
36 //owner->SetWalk(true);
37 owner->LoadCreaturesAddon(true);
38 owner->AI()->JustReachedHome();
39 }
40
41 if (!owner->HasSwimmingFlagOutOfCombat())
43}
@ UNIT_FLAG_SWIMMING
Definition: Unit.h:463
virtual void JustReachedHome()
Definition: CreatureAI.h:160
bool LoadCreaturesAddon(bool reload=false)
Definition: Creature.cpp:2625
bool HasSwimmingFlagOutOfCombat() const
Definition: Creature.h:385
CreatureAI * AI() const
Definition: Creature.h:135
void RemoveUnitFlag(UnitFlags flags)
Definition: Unit.h:1482

References Creature::AI(), Unit::ClearUnitState(), Creature::HasSwimmingFlagOutOfCombat(), CreatureAI::JustReachedHome(), Creature::LoadCreaturesAddon(), Unit::RemoveUnitFlag(), UNIT_FLAG_SWIMMING, and UNIT_STATE_EVADE.

◆ DoInitialize()

void HomeMovementGenerator< Creature >::DoInitialize ( Creature owner)
26{
27 _setTargetLocation(owner);
28}
void _setTargetLocation(Creature *)
Definition: HomeMovementGenerator.cpp:49

◆ DoReset()

void HomeMovementGenerator< Creature >::DoReset ( Creature )
46{
47}

◆ DoUpdate()

bool HomeMovementGenerator< Creature >::DoUpdate ( Creature owner,
const  uint32 
)
77{
78 arrived = owner->movespline->Finalized();
79 if (arrived)
80 return false;
81
83 {
84 _setTargetLocation(owner);
85 i_recalculateTravel = false;
86 }
87
88 return true;
89}
Movement::MoveSpline * movespline
Definition: Unit.h:2440
bool Finalized() const
Definition: MoveSpline.h:116

References Movement::MoveSpline::Finalized(), and Unit::movespline.

◆ GetMovementGeneratorType()

MovementGeneratorType HomeMovementGenerator< Creature >::GetMovementGeneratorType ( )
inlinevirtual

Implements MovementGenerator.

39{ return HOME_MOTION_TYPE; }
@ HOME_MOTION_TYPE
Definition: MotionMaster.h:44

References HOME_MOTION_TYPE.

◆ unitSpeedChanged()

void HomeMovementGenerator< Creature >::unitSpeedChanged ( )
inlinevirtual

Reimplemented from MovementGenerator.

40{ i_recalculateTravel = true; }

Member Data Documentation

◆ _walk

bool HomeMovementGenerator< Creature >::_walk
private

◆ arrived

bool HomeMovementGenerator< Creature >::arrived
private

◆ i_recalculateTravel

bool HomeMovementGenerator< Creature >::i_recalculateTravel
private