Pyrogenesis  trunk
ICmpUnitMotionManager.h
Go to the documentation of this file.
1 /* Copyright (C) 2021 Wildfire Games.
2  * This file is part of 0 A.D.
3  *
4  * 0 A.D. is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * 0 A.D. is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with 0 A.D. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 #ifndef INCLUDED_ICMPUNITMOTIONMANAGER
19 #define INCLUDED_ICMPUNITMOTIONMANAGER
20 
22 
23 class CCmpUnitMotion;
24 
25 /**
26  * UnitMotionManager - handles motion for CCmpUnitMotion.
27  * This allows units to push past each other instead of requiring pathfinder computations,
28  * making movement much smoother overall.
29  */
31 {
32 public:
33  DECLARE_INTERFACE_TYPE(UnitMotionManager)
34 
35 private:
36  /**
37  * This class makes no sense outside of CCmpUnitMotion. This enforces that tight coupling.
38  */
39  friend class CCmpUnitMotion;
40 
41  virtual void Register(CCmpUnitMotion* component, entity_id_t ent, bool formationController) = 0;
42  virtual void Unregister(entity_id_t ent) = 0;
43 
44  /**
45  * True if entities are currently in the "Move" phase.
46  */
47  virtual bool ComputingMotion() const = 0;
48 
49  /**
50  * @return whether pushing is currently enabled or not.
51  */
52  virtual bool IsPushingActivated() const = 0;
53 
54 };
55 
56 #endif // INCLUDED_ICMPUNITMOTIONMANAGER
Definition: IComponent.h:32
virtual void Register(CCmpUnitMotion *component, entity_id_t ent, bool formationController)=0
#define DECLARE_INTERFACE_TYPE(iname)
Definition: Interface.h:23
UnitMotionManager - handles motion for CCmpUnitMotion.
Definition: ICmpUnitMotionManager.h:30
virtual bool ComputingMotion() const =0
True if entities are currently in the "Move" phase.
virtual bool IsPushingActivated() const =0
Definition: CCmpUnitMotion.h:133
u32 entity_id_t
Entity ID type.
Definition: Entity.h:23
virtual void Unregister(entity_id_t ent)=0