Pyrogenesis HEAD
Pyrogenesis, a RTS Engine
|
Public Member Functions | |
int | GetComponentTypeId () const override |
void | Init (const CParamNode ¶mNode) override |
void | Deinit () override |
template<typename S > | |
void | SerializeCommon (S &serialize) |
void | Serialize (ISerializer &serialize) override |
void | Deserialize (const CParamNode ¶mNode, IDeserializer &deserialize) override |
void | HandleMessage (const CMessage &msg, bool global) override |
void | SetBounds (entity_pos_t x0, entity_pos_t z0, entity_pos_t x1, entity_pos_t z1) override |
Set the bounds of the world. More... | |
void | ResetSubdivisions (entity_pos_t x1, entity_pos_t z1) |
tag_t | AddUnitShape (entity_id_t ent, entity_pos_t x, entity_pos_t z, entity_pos_t clearance, flags_t flags, entity_id_t group) override |
Register a unit shape. More... | |
tag_t | AddStaticShape (entity_id_t ent, entity_pos_t x, entity_pos_t z, entity_angle_t a, entity_pos_t w, entity_pos_t h, flags_t flags, entity_id_t group, entity_id_t group2) override |
Register a static shape. More... | |
ObstructionSquare | GetUnitShapeObstruction (entity_pos_t x, entity_pos_t z, entity_pos_t clearance) const override |
ObstructionSquare | GetStaticShapeObstruction (entity_pos_t x, entity_pos_t z, entity_angle_t a, entity_pos_t w, entity_pos_t h) const override |
void | MoveShape (tag_t tag, entity_pos_t x, entity_pos_t z, entity_angle_t a) override |
Adjust the position and angle of an existing shape. More... | |
void | SetUnitMovingFlag (tag_t tag, bool moving) override |
Set whether a unit shape is moving or stationary. More... | |
void | SetUnitControlGroup (tag_t tag, entity_id_t group) override |
Set the control group of a unit shape. More... | |
void | SetStaticControlGroup (tag_t tag, entity_id_t group, entity_id_t group2) override |
Sets the control group of a static shape. More... | |
void | RemoveShape (tag_t tag) override |
Remove an existing shape. More... | |
ObstructionSquare | GetObstruction (tag_t tag) const override |
Get the obstruction square representing the given shape. More... | |
fixed | DistanceToPoint (entity_id_t ent, entity_pos_t px, entity_pos_t pz) const override |
DistanceTo function family, all end up in calculating a vector length, DistanceBetweenShapes or MaxDistanceBetweenShapes. More... | |
fixed | MaxDistanceToPoint (entity_id_t ent, entity_pos_t px, entity_pos_t pz) const override |
Calculate the largest straight line distance between the entity and the point. More... | |
fixed | DistanceToTarget (entity_id_t ent, entity_id_t target) const override |
Calculate the shortest distance between the entity and the target. More... | |
fixed | MaxDistanceToTarget (entity_id_t ent, entity_id_t target) const override |
Calculate the largest straight line distance between the entity and the target. More... | |
fixed | DistanceBetweenShapes (const ObstructionSquare &source, const ObstructionSquare &target) const override |
Calculate the shortest straight line distance between the source and the target. More... | |
fixed | MaxDistanceBetweenShapes (const ObstructionSquare &source, const ObstructionSquare &target) const override |
Calculate the largest straight line distance between the source and the target. More... | |
bool | IsInPointRange (entity_id_t ent, entity_pos_t px, entity_pos_t pz, entity_pos_t minRange, entity_pos_t maxRange, bool opposite) const override |
IsInRange function family depending on the DistanceTo family. More... | |
bool | IsInTargetRange (entity_id_t ent, entity_id_t target, entity_pos_t minRange, entity_pos_t maxRange, bool opposite) const override |
Check if the given entity is in range of the target given those parameters. More... | |
bool | IsInTargetParabolicRange (entity_id_t ent, entity_id_t target, entity_pos_t minRange, entity_pos_t maxRange, entity_pos_t yOrigin, bool opposite) const override |
Check if the given entity is in parabolic range of the target given those parameters. More... | |
bool | IsPointInPointRange (entity_pos_t x, entity_pos_t z, entity_pos_t px, entity_pos_t pz, entity_pos_t minRange, entity_pos_t maxRange) const override |
Check if the given point is in range of the other point given those parameters. More... | |
bool | AreShapesInRange (const ObstructionSquare &source, const ObstructionSquare &target, entity_pos_t minRange, entity_pos_t maxRange, bool opposite) const override |
Check if the given shape is in range of the target shape given those parameters. More... | |
bool | TestLine (const IObstructionTestFilter &filter, entity_pos_t x0, entity_pos_t z0, entity_pos_t x1, entity_pos_t z1, entity_pos_t r, bool relaxClearanceForUnits=false) const override |
Collision test a flat-ended thick line against the current set of shapes. More... | |
bool | TestStaticShape (const IObstructionTestFilter &filter, entity_pos_t x, entity_pos_t z, entity_pos_t a, entity_pos_t w, entity_pos_t h, std::vector< entity_id_t > *out) const override |
Collision test a static square shape against the current set of shapes. More... | |
bool | TestUnitShape (const IObstructionTestFilter &filter, entity_pos_t x, entity_pos_t z, entity_pos_t r, std::vector< entity_id_t > *out) const override |
Collision test a unit shape against the current set of registered shapes, and optionally writes a list of the colliding shapes' entities to an output list. More... | |
void | Rasterize (Grid< NavcellData > &grid, const std::vector< PathfinderPassability > &passClasses, bool fullUpdate) override |
Convert the current set of shapes onto a navcell grid, for all passability classes contained in passClasses . More... | |
void | GetObstructionsInRange (const IObstructionTestFilter &filter, entity_pos_t x0, entity_pos_t z0, entity_pos_t x1, entity_pos_t z1, std::vector< ObstructionSquare > &squares) const override |
Find all the obstructions that are inside (or partially inside) the given range. More... | |
void | GetUnitObstructionsInRange (const IObstructionTestFilter &filter, entity_pos_t x0, entity_pos_t z0, entity_pos_t x1, entity_pos_t z1, std::vector< ObstructionSquare > &squares) const override |
void | GetStaticObstructionsInRange (const IObstructionTestFilter &filter, entity_pos_t x0, entity_pos_t z0, entity_pos_t x1, entity_pos_t z1, std::vector< ObstructionSquare > &squares) const override |
void | GetUnitsOnObstruction (const ObstructionSquare &square, std::vector< entity_id_t > &out, const IObstructionTestFilter &filter, bool strict=false) const override |
Returns the entity IDs of all unit shapes that intersect the given obstruction square, filtering out using the given filter. More... | |
void | GetStaticObstructionsOnObstruction (const ObstructionSquare &square, std::vector< entity_id_t > &out, const IObstructionTestFilter &filter) const override |
void | SetPassabilityCircular (bool enabled) override |
Set the passability to be restricted to a circular map. More... | |
bool | GetPassabilityCircular () const override |
void | SetDebugOverlay (bool enabled) override |
Toggle the rendering of debug info. More... | |
void | RenderSubmit (SceneCollector &collector) |
void | UpdateInformations (GridUpdateInformation &informations) override |
Gets dirtiness information and resets it afterwards. More... | |
virtual void | SetBounds (entity_pos_t x0, entity_pos_t z0, entity_pos_t x1, entity_pos_t z1)=0 |
Set the bounds of the world. More... | |
virtual tag_t | AddStaticShape (entity_id_t ent, entity_pos_t x, entity_pos_t z, entity_angle_t a, entity_pos_t w, entity_pos_t h, flags_t flags, entity_id_t group, entity_id_t group2=INVALID_ENTITY)=0 |
Register a static shape. More... | |
virtual tag_t | AddUnitShape (entity_id_t ent, entity_pos_t x, entity_pos_t z, entity_pos_t clearance, flags_t flags, entity_id_t group)=0 |
Register a unit shape. More... | |
virtual void | MoveShape (tag_t tag, entity_pos_t x, entity_pos_t z, entity_angle_t a)=0 |
Adjust the position and angle of an existing shape. More... | |
virtual void | SetUnitMovingFlag (tag_t tag, bool moving)=0 |
Set whether a unit shape is moving or stationary. More... | |
virtual void | SetUnitControlGroup (tag_t tag, entity_id_t group)=0 |
Set the control group of a unit shape. More... | |
virtual void | SetStaticControlGroup (tag_t tag, entity_id_t group, entity_id_t group2)=0 |
Sets the control group of a static shape. More... | |
virtual void | RemoveShape (tag_t tag)=0 |
Remove an existing shape. More... | |
virtual fixed | DistanceToPoint (entity_id_t ent, entity_pos_t px, entity_pos_t pz) const =0 |
Returns the distance from the obstruction to the point (px, pz), or -1 if the entity is out of the world. More... | |
virtual fixed | MaxDistanceToPoint (entity_id_t ent, entity_pos_t px, entity_pos_t pz) const =0 |
Calculate the largest straight line distance between the entity and the point. More... | |
virtual fixed | DistanceToTarget (entity_id_t ent, entity_id_t target) const =0 |
Calculate the shortest distance between the entity and the target. More... | |
virtual fixed | MaxDistanceToTarget (entity_id_t ent, entity_id_t target) const =0 |
Calculate the largest straight line distance between the entity and the target. More... | |
virtual fixed | DistanceBetweenShapes (const ObstructionSquare &source, const ObstructionSquare &target) const =0 |
Calculate the shortest straight line distance between the source and the target. More... | |
virtual fixed | MaxDistanceBetweenShapes (const ObstructionSquare &source, const ObstructionSquare &target) const =0 |
Calculate the largest straight line distance between the source and the target. More... | |
virtual bool | IsInPointRange (entity_id_t ent, entity_pos_t px, entity_pos_t pz, entity_pos_t minRange, entity_pos_t maxRange, bool opposite) const =0 |
Check if the given entity is in range of the other point given those parameters. More... | |
virtual bool | IsInTargetRange (entity_id_t ent, entity_id_t target, entity_pos_t minRange, entity_pos_t maxRange, bool opposite) const =0 |
Check if the given entity is in range of the target given those parameters. More... | |
virtual bool | IsInTargetParabolicRange (entity_id_t ent, entity_id_t target, entity_pos_t minRange, entity_pos_t maxRange, entity_pos_t yOrigin, bool opposite) const =0 |
Check if the given entity is in parabolic range of the target given those parameters. More... | |
virtual bool | IsPointInPointRange (entity_pos_t x, entity_pos_t z, entity_pos_t px, entity_pos_t pz, entity_pos_t minRange, entity_pos_t maxRange) const =0 |
Check if the given point is in range of the other point given those parameters. More... | |
virtual bool | AreShapesInRange (const ObstructionSquare &source, const ObstructionSquare &target, entity_pos_t minRange, entity_pos_t maxRange, bool opposite) const =0 |
Check if the given shape is in range of the target shape given those parameters. More... | |
virtual bool | TestLine (const IObstructionTestFilter &filter, entity_pos_t x0, entity_pos_t z0, entity_pos_t x1, entity_pos_t z1, entity_pos_t r, bool relaxClearanceForUnits) const =0 |
Collision test a flat-ended thick line against the current set of shapes. More... | |
virtual bool | TestStaticShape (const IObstructionTestFilter &filter, entity_pos_t x, entity_pos_t z, entity_pos_t a, entity_pos_t w, entity_pos_t h, std::vector< entity_id_t > *out) const =0 |
Collision test a static square shape against the current set of shapes. More... | |
virtual bool | TestUnitShape (const IObstructionTestFilter &filter, entity_pos_t x, entity_pos_t z, entity_pos_t clearance, std::vector< entity_id_t > *out) const =0 |
Collision test a unit shape against the current set of registered shapes, and optionally writes a list of the colliding shapes' entities to an output list. More... | |
virtual void | Rasterize (Grid< NavcellData > &grid, const std::vector< PathfinderPassability > &passClasses, bool fullUpdate)=0 |
Convert the current set of shapes onto a navcell grid, for all passability classes contained in passClasses . More... | |
virtual void | UpdateInformations (GridUpdateInformation &informations)=0 |
Gets dirtiness information and resets it afterwards. More... | |
virtual void | GetObstructionsInRange (const IObstructionTestFilter &filter, entity_pos_t x0, entity_pos_t z0, entity_pos_t x1, entity_pos_t z1, std::vector< ObstructionSquare > &squares) const =0 |
Find all the obstructions that are inside (or partially inside) the given range. More... | |
virtual void | GetStaticObstructionsInRange (const IObstructionTestFilter &filter, entity_pos_t x0, entity_pos_t z0, entity_pos_t x1, entity_pos_t z1, std::vector< ObstructionSquare > &squares) const =0 |
virtual void | GetUnitObstructionsInRange (const IObstructionTestFilter &filter, entity_pos_t x0, entity_pos_t z0, entity_pos_t x1, entity_pos_t z1, std::vector< ObstructionSquare > &squares) const =0 |
virtual void | GetStaticObstructionsOnObstruction (const ObstructionSquare &square, std::vector< entity_id_t > &out, const IObstructionTestFilter &filter) const =0 |
virtual void | GetUnitsOnObstruction (const ObstructionSquare &square, std::vector< entity_id_t > &out, const IObstructionTestFilter &filter, bool strict=false) const =0 |
Returns the entity IDs of all unit shapes that intersect the given obstruction square, filtering out using the given filter. More... | |
virtual ObstructionSquare | GetObstruction (tag_t tag) const =0 |
Get the obstruction square representing the given shape. More... | |
virtual ObstructionSquare | GetUnitShapeObstruction (entity_pos_t x, entity_pos_t z, entity_pos_t clearance) const =0 |
virtual ObstructionSquare | GetStaticShapeObstruction (entity_pos_t x, entity_pos_t z, entity_angle_t a, entity_pos_t w, entity_pos_t h) const =0 |
virtual void | SetPassabilityCircular (bool enabled)=0 |
Set the passability to be restricted to a circular map. More... | |
virtual bool | GetPassabilityCircular () const =0 |
virtual void | SetDebugOverlay (bool enabled)=0 |
Toggle the rendering of debug info. More... | |
Public Member Functions inherited from IComponent | |
virtual | ~IComponent () |
virtual void | Init (const CParamNode ¶mNode)=0 |
virtual void | Deinit ()=0 |
virtual void | HandleMessage (const CMessage &msg, bool global) |
CEntityHandle | GetEntityHandle () const |
void | SetEntityHandle (CEntityHandle ent) |
entity_id_t | GetEntityId () const |
CEntityHandle | GetSystemEntity () const |
const CSimContext & | GetSimContext () const |
void | SetSimContext (const CSimContext &context) |
virtual void | Serialize (ISerializer &serialize)=0 |
virtual void | Deserialize (const CParamNode ¶mNode, IDeserializer &deserialize)=0 |
virtual bool | NewJSObject (const ScriptInterface &scriptInterface, JS::MutableHandleObject out) const |
Returns false by default, indicating that a scripted wrapper of this IComponent is not supported. More... | |
virtual JS::Value | GetJSInstance () const |
virtual int | GetComponentTypeId () const =0 |
Static Public Member Functions | |
static void | ClassInit (CComponentManager &componentManager) |
static IComponent * | Allocate (const ScriptInterface &, JS::HandleValue) |
static void | Deallocate (IComponent *cmp) |
static std::string | GetSchema () |
Static Public Member Functions inherited from IComponent | |
static std::string | GetSchema () |
static void | RegisterComponentType (CComponentManager &mgr, EInterfaceId iid, EComponentTypeId cid, AllocFunc alloc, DeallocFunc dealloc, const char *name, const std::string &schema) |
static void | RegisterComponentTypeScriptWrapper (CComponentManager &mgr, EInterfaceId iid, EComponentTypeId cid, AllocFunc alloc, DeallocFunc dealloc, const char *name, const std::string &schema) |
static u8 | GetSerializationVersion () |
Public Attributes | |
bool | m_DebugOverlayEnabled |
bool | m_DebugOverlayDirty |
std::vector< SOverlayLine > | m_DebugOverlayLines |
SpatialSubdivision | m_UnitSubdivision |
SpatialSubdivision | m_StaticSubdivision |
std::map< u32, UnitShape > | m_UnitShapes |
std::map< u32, StaticShape > | m_StaticShapes |
u32 | m_UnitShapeNext |
u32 | m_StaticShapeNext |
entity_pos_t | m_MaxClearance |
bool | m_PassabilityCircular |
entity_pos_t | m_WorldX0 |
entity_pos_t | m_WorldZ0 |
entity_pos_t | m_WorldX1 |
entity_pos_t | m_WorldZ1 |
Private Member Functions | |
void | MakeDirtyAll () |
Mark all previous Rasterize()d grids as dirty, and the debug display. More... | |
void | MakeDirtyDebug () |
Mark the debug display as dirty. More... | |
void | MarkDirtinessGrid (const entity_pos_t &x, const entity_pos_t &z, const entity_pos_t &r) |
void | MarkDirtinessGrid (const entity_pos_t &x, const entity_pos_t &z, const CFixedVector2D &hbox) |
void | MakeDirtyStatic (flags_t flags, u32 index, const StaticShape &shape) |
Mark all previous Rasterize()d grids as dirty, if they depend on this shape. More... | |
void | MakeDirtyUnit (flags_t flags, u32 index, const UnitShape &shape) |
Mark all previous Rasterize()d grids as dirty, if they depend on this shape. More... | |
bool | IsInWorld (entity_pos_t x, entity_pos_t z, entity_pos_t r) const |
Return whether the given point is within the world bounds by at least r. More... | |
bool | IsInWorld (const CFixedVector2D &p) const |
Return whether the given point is within the world bounds. More... | |
void | RasterizeHelper (Grid< NavcellData > &grid, ICmpObstructionManager::flags_t requireMask, bool fullUpdate, pass_class_t appliedMask, entity_pos_t clearance=fixed::Zero()) const |
Private Attributes | |
GridUpdateInformation | m_UpdateInformations |
std::vector< u32 > | m_DirtyStaticShapes |
std::vector< u32 > | m_DirtyUnitShapes |
Additional Inherited Members | |
Public Types inherited from ICmpObstructionManager | |
enum | EFlags { FLAG_BLOCK_MOVEMENT = (1 << 0) , FLAG_BLOCK_FOUNDATION = (1 << 1) , FLAG_BLOCK_CONSTRUCTION = (1 << 2) , FLAG_BLOCK_PATHFINDING = (1 << 3) , FLAG_MOVING = (1 << 4) , FLAG_DELETE_UPON_CONSTRUCTION = (1 << 5) } |
Boolean flags affecting the obstruction behaviour of a shape. More... | |
typedef u8 | flags_t |
Bitmask of EFlag values. More... | |
Public Types inherited from IComponent | |
using | AllocFunc = IComponent *(*)(const ScriptInterface &scriptInterface, JS::HandleValue ctor) |
using | DeallocFunc = void(*)(IComponent *) |
|
inlineoverridevirtual |
Register a static shape.
ent | entity ID associated with this shape (or INVALID_ENTITY if none) |
x,z | coordinates of center, in world space |
a | angle of rotation (clockwise from +Z direction) |
w | width (size along X axis) |
h | height (size along Z axis) |
flags | a set of EFlags values |
group | primary control group of the shape. Must be a valid control group ID. |
group2 | Optional; secondary control group of the shape. Defaults to INVALID_ENTITY. |
Implements ICmpObstructionManager.
|
inlineoverridevirtual |
Register a unit shape.
ent | entity ID associated with this shape (or INVALID_ENTITY if none) |
x,z | coordinates of center, in world space |
clearance | pathfinding clearance of the unit (works as a radius) |
flags | a set of EFlags values |
group | control group (typically the owner entity, or a formation controller entity
|
Implements ICmpObstructionManager.
|
inlinestatic |
|
overridevirtual |
Check if the given shape is in range of the target shape given those parameters.
maxRange | - Can be a nonnegative decimal, ALWAYS_IN_RANGE or NEVER_IN_RANGE. |
Implements ICmpObstructionManager.
|
inlinestatic |
|
inlinestatic |
|
inlineoverridevirtual |
Implements IComponent.
|
inlineoverridevirtual |
Implements IComponent.
|
overridevirtual |
Calculate the shortest straight line distance between the source and the target.
Implements ICmpObstructionManager.
|
overridevirtual |
DistanceTo function family, all end up in calculating a vector length, DistanceBetweenShapes or MaxDistanceBetweenShapes.
The MaxFoo family calculates the opposite edge opposite edge distance. When the distance is undefined we return -1.
Implements ICmpObstructionManager.
|
overridevirtual |
Calculate the shortest distance between the entity and the target.
Implements ICmpObstructionManager.
|
inlineoverridevirtual |
Implements IComponent.
|
inlineoverridevirtual |
Get the obstruction square representing the given shape.
tag | tag of shape (must be valid) |
Implements ICmpObstructionManager.
|
overridevirtual |
Find all the obstructions that are inside (or partially inside) the given range.
filter | filter to restrict the shapes that are counted |
x0 | X coordinate of left edge of range |
z0 | Z coordinate of bottom edge of range |
x1 | X coordinate of right edge of range |
z1 | Z coordinate of top edge of range |
squares | output list of obstructions |
Implements ICmpObstructionManager.
|
inlineoverridevirtual |
Implements ICmpObstructionManager.
|
inlinestatic |
|
overridevirtual |
Implements ICmpObstructionManager.
|
overridevirtual |
Implements ICmpObstructionManager.
|
inlineoverridevirtual |
Implements ICmpObstructionManager.
|
overridevirtual |
Implements ICmpObstructionManager.
|
inlineoverridevirtual |
Implements ICmpObstructionManager.
|
overridevirtual |
Returns the entity IDs of all unit shapes that intersect the given obstruction square, filtering out using the given filter.
square | the Obstruction squre we want to compare with. |
out | output list of obstructions |
filter | filter for the obstructing units |
strict | whether to be strict in the check or more permissive (ie rasterize more or less). Default false. |
Implements ICmpObstructionManager.
|
inlineoverridevirtual |
Reimplemented from IComponent.
|
inlineoverridevirtual |
Implements IComponent.
|
overridevirtual |
IsInRange function family depending on the DistanceTo family.
In range if the edge to edge distance is inferior to maxRange and if the opposite edge to opposite edge distance is greater than minRange when the opposite bool is true or when the opposite bool is false the edge to edge distance is more than minRange.
Using the opposite egde for minRange means that a unit is in range of a building if it is farther than clearance-buildingsize, which is generally going to be negative (and thus this returns true). NB: from a game POV, this means units can easily fire on buildings, which is good, but it also means that buildings can easily fire on units. Buildings are usually meant to fire from the edge, not the opposite edge, so this looks odd. For this reason one can choose to set the opposite bool false and use the edge to egde distance.
We don't use squares because the are likely to overflow. TODO Avoid the overflows and use squares instead. We use a 0.0001 margin to avoid rounding errors.
Implements ICmpObstructionManager.
|
overridevirtual |
Check if the given entity is in parabolic range of the target given those parameters.
maxRange | - Can be a nonnegative decimal, ALWAYS_IN_RANGE or NEVER_IN_RANGE. |
Implements ICmpObstructionManager.
|
overridevirtual |
Check if the given entity is in range of the target given those parameters.
maxRange | - Can be a nonnegative decimal, ALWAYS_IN_RANGE or NEVER_IN_RANGE. |
Implements ICmpObstructionManager.
|
inlineprivate |
Return whether the given point is within the world bounds.
|
inlineprivate |
Return whether the given point is within the world bounds by at least r.
|
overridevirtual |
Check if the given point is in range of the other point given those parameters.
maxRange | - Can be a nonnegative decimal, ALWAYS_IN_RANGE or NEVER_IN_RANGE. |
Implements ICmpObstructionManager.
|
inlineprivate |
Mark all previous Rasterize()d grids as dirty, and the debug display.
Call this when the world bounds have changed.
|
inlineprivate |
Mark the debug display as dirty.
Call this when nothing has changed except a unit's 'moving' flag.
|
inlineprivate |
Mark all previous Rasterize()d grids as dirty, if they depend on this shape.
Call this when a static shape has changed.
|
inlineprivate |
Mark all previous Rasterize()d grids as dirty, if they depend on this shape.
Call this when a unit shape has changed.
|
inlineprivate |
|
inlineprivate |
|
overridevirtual |
Calculate the largest straight line distance between the source and the target.
Implements ICmpObstructionManager.
|
overridevirtual |
Calculate the largest straight line distance between the entity and the point.
Implements ICmpObstructionManager.
|
overridevirtual |
Calculate the largest straight line distance between the entity and the target.
Implements ICmpObstructionManager.
|
inlineoverridevirtual |
Adjust the position and angle of an existing shape.
tag | tag of shape (must be valid) |
x | X coordinate of center, in world space |
z | Z coordinate of center, in world space |
a | angle of rotation (clockwise from +Z direction); ignored for unit shapes |
Implements ICmpObstructionManager.
|
overridevirtual |
Convert the current set of shapes onto a navcell grid, for all passability classes contained in passClasses
.
If fullUpdate
is false, the function will only go through dirty shapes. Shapes are expanded by the passClasses
clearances, by ORing their masks onto the grid
.
Implements ICmpObstructionManager.
|
private |
|
inlineoverridevirtual |
Remove an existing shape.
The tag will be made invalid and must not be used after this.
tag | tag of shape (must be valid) |
Implements ICmpObstructionManager.
void CCmpObstructionManager::RenderSubmit | ( | SceneCollector & | collector | ) |
|
inline |
|
inlineoverridevirtual |
Implements IComponent.
|
inline |
|
inlineoverridevirtual |
Set the bounds of the world.
Any point outside the bounds is considered obstructed.
x0,z0,x1,z1 | Coordinates of the corners of the world |
Implements ICmpObstructionManager.
|
inlineoverridevirtual |
Toggle the rendering of debug info.
Implements ICmpObstructionManager.
|
inlineoverridevirtual |
Set the passability to be restricted to a circular map.
Implements ICmpObstructionManager.
|
inlineoverridevirtual |
Sets the control group of a static shape.
tag | Tag of the shape to set the control group for. Must be a valid and static shape tag. |
group | Control group entity ID. |
Implements ICmpObstructionManager.
|
inlineoverridevirtual |
Set the control group of a unit shape.
tag | tag of shape (must be valid and a unit shape) |
group | control group entity ID |
Implements ICmpObstructionManager.
|
inlineoverridevirtual |
Set whether a unit shape is moving or stationary.
tag | tag of shape (must be valid and a unit shape) |
moving | whether the unit is currently moving through the world or is stationary |
Implements ICmpObstructionManager.
|
overridevirtual |
Collision test a flat-ended thick line against the current set of shapes.
The line caps extend by r
beyond the end points. Only intersections going from outside to inside a shape are counted.
filter | filter to restrict the shapes that are counted |
x0 | X coordinate of line's first point |
z0 | Z coordinate of line's first point |
x1 | X coordinate of line's second point |
z1 | Z coordinate of line's second point |
r | radius (half width) of line |
relaxClearanceForUnits | whether unit-unit collisions should be more permissive. |
Implements ICmpObstructionManager.
|
overridevirtual |
Collision test a static square shape against the current set of shapes.
filter | filter to restrict the shapes that are being tested against |
x | X coordinate of center |
z | Z coordinate of center |
a | angle of rotation (clockwise from +Z direction) |
w | width (size along X axis) |
h | height (size along Z axis) |
out | if non-NULL, all colliding shapes' entities will be added to this list |
Implements ICmpObstructionManager.
|
overridevirtual |
Collision test a unit shape against the current set of registered shapes, and optionally writes a list of the colliding shapes' entities to an output list.
filter | filter to restrict the shapes that are being tested against |
x | X coordinate of shape's center |
z | Z coordinate of shape's center |
clearance | clearance of the shape's unit |
out | if non-NULL, all colliding shapes' entities will be added to this list |
Implements ICmpObstructionManager.
|
inlineoverridevirtual |
Gets dirtiness information and resets it afterwards.
Then it's the role of CCmpPathfinder to pass the information to other components if needed. (AIs, etc.) The return value is false if an update is unnecessary.
Implements ICmpObstructionManager.
bool CCmpObstructionManager::m_DebugOverlayDirty |
bool CCmpObstructionManager::m_DebugOverlayEnabled |
std::vector<SOverlayLine> CCmpObstructionManager::m_DebugOverlayLines |
|
private |
|
private |
entity_pos_t CCmpObstructionManager::m_MaxClearance |
bool CCmpObstructionManager::m_PassabilityCircular |
u32 CCmpObstructionManager::m_StaticShapeNext |
std::map<u32, StaticShape> CCmpObstructionManager::m_StaticShapes |
SpatialSubdivision CCmpObstructionManager::m_StaticSubdivision |
u32 CCmpObstructionManager::m_UnitShapeNext |
std::map<u32, UnitShape> CCmpObstructionManager::m_UnitShapes |
SpatialSubdivision CCmpObstructionManager::m_UnitSubdivision |
|
private |
entity_pos_t CCmpObstructionManager::m_WorldX0 |
entity_pos_t CCmpObstructionManager::m_WorldX1 |
entity_pos_t CCmpObstructionManager::m_WorldZ0 |
entity_pos_t CCmpObstructionManager::m_WorldZ1 |