Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
Divide::AI::AITeam Class Referencefinal

#include <AITeam.h>

+ Inheritance diagram for Divide::AI::AITeam:

Public Types

using CrowdPtr = std::unique_ptr< Navigation::DivideDtCrowd >
 
using AITeamCrowd = hashMap< AIEntity::PresetAgentRadius, CrowdPtr >
 
using MemberVariable = hashMap< AIEntity *, F32 >
 
using TeamMap = hashMap< I64, AIEntity * >
 
using OrderPtr = std::shared_ptr< Order >
 
using OrderList = vector< OrderPtr >
 

Public Member Functions

 AITeam (U32 id, AIManager &parentManager)
 
 ~AITeam () override
 
Navigation::DivideDtCrowdgetCrowd (const AIEntity::PresetAgentRadius radius) const
 
bool addTeamMember (AIEntity *entity)
 
bool removeTeamMember (AIEntity *entity)
 
bool addEnemyTeam (U32 enemyTeamID)
 
bool removeEnemyTeam (U32 enemyTeamID)
 
U32 getEnemyTeamID (const U32 index) const
 
const TeamMapgetTeamMembers () const
 
MemberVariablegetMemberVariable ()
 
void clearOrders ()
 
void addOrder (const OrderPtr &order)
 
void removeOrder (const Order &order)
 
const OrderListrequestOrders () const
 
 PROPERTY_RW (U32, teamID, U32_MAX)
 
- Public Member Functions inherited from Divide::GUIDWrapper
 GUIDWrapper () noexcept
 
 GUIDWrapper (const GUIDWrapper &old) noexcept
 
 GUIDWrapper (GUIDWrapper &&old) noexcept
 
virtual ~GUIDWrapper ()=default
 
FORCE_INLINE I64 getGUID () const noexcept
 
GUIDWrapperoperator= (const GUIDWrapper &old)=delete
 
GUIDWrapperoperator= (GUIDWrapper &&other)=delete
 

Protected Member Functions

void resetCrowd ()
 Update the crowding system.
 
bool processInput (TaskPool &parentPool, U64 deltaTimeUS)
 
bool processData (TaskPool &parentPool, U64 deltaTimeUS)
 
bool update (TaskPool &parentPool, U64 deltaTimeUS)
 
void addCrowd (AIEntity::PresetAgentRadius radius, Navigation::NavigationMesh *navMesh)
 
void removeCrowd (AIEntity::PresetAgentRadius radius)
 
vector< AIEntity * > getEntityList () const
 
OrderList::iterator findOrder (const Order &order)
 
OrderList::iterator findOrder (U32 orderID)
 
vector< U32 >::iterator findEnemyTeamEntry (U32 enemyTeamID)
 

Protected Attributes

SharedMutex _orderMutex
 
- Protected Attributes inherited from Divide::GUIDWrapper
const I64 _guid
 

Private Attributes

TeamMap _team
 
AIManager_parentManager
 
MemberVariable _memberVariable
 Container with data per team member. For example a map of distances.
 
AITeamCrowd _aiTeamCrowd
 
SharedMutex _updateMutex
 
SharedMutex _crowdMutex
 
vector< U32_enemyTeams
 
OrderList _orders
 

Friends

class AIManager
 

Additional Inherited Members

- Static Public Member Functions inherited from Divide::GUIDWrapper
static I64 generateGUID () noexcept
 

Detailed Description

Definition at line 65 of file AITeam.h.

Member Typedef Documentation

◆ AITeamCrowd

◆ CrowdPtr

Definition at line 67 of file AITeam.h.

◆ MemberVariable

Definition at line 69 of file AITeam.h.

◆ OrderList

Definition at line 72 of file AITeam.h.

◆ OrderPtr

using Divide::AI::AITeam::OrderPtr = std::shared_ptr<Order>

Definition at line 71 of file AITeam.h.

◆ TeamMap

Definition at line 70 of file AITeam.h.

Constructor & Destructor Documentation

◆ AITeam()

Divide::AI::AITeam::AITeam ( U32  id,
AIManager parentManager 
)

Definition at line 15 of file AITeam.cpp.

◆ ~AITeam()

Divide::AI::AITeam::~AITeam ( )
override

Definition at line 23 of file AITeam.cpp.

Member Function Documentation

◆ addCrowd()

void Divide::AI::AITeam::addCrowd ( AIEntity::PresetAgentRadius  radius,
Navigation::NavigationMesh navMesh 
)
protected

Definition at line 38 of file AITeam.cpp.

◆ addEnemyTeam()

bool Divide::AI::AITeam::addEnemyTeam ( U32  enemyTeamID)

Definition at line 192 of file AITeam.cpp.

◆ addOrder()

void Divide::AI::AITeam::addOrder ( const OrderPtr order)
inline

Definition at line 110 of file AITeam.h.

◆ addTeamMember()

bool Divide::AI::AITeam::addTeamMember ( AIEntity entity)

If entity already belongs to this team, no need to do anything

Definition at line 164 of file AITeam.cpp.

◆ clearOrders()

void Divide::AI::AITeam::clearOrders ( )
inline

Definition at line 105 of file AITeam.h.

◆ findEnemyTeamEntry()

vector< U32 >::iterator Divide::AI::AITeam::findEnemyTeamEntry ( U32  enemyTeamID)
inlineprotected

Definition at line 155 of file AITeam.h.

◆ findOrder() [1/2]

OrderList::iterator Divide::AI::AITeam::findOrder ( const Order order)
inlineprotected

Definition at line 142 of file AITeam.h.

◆ findOrder() [2/2]

OrderList::iterator Divide::AI::AITeam::findOrder ( U32  orderID)
inlineprotected

Definition at line 146 of file AITeam.h.

◆ getCrowd()

Navigation::DivideDtCrowd * Divide::AI::AITeam::getCrowd ( const AIEntity::PresetAgentRadius  radius) const
inline

Definition at line 78 of file AITeam.h.

◆ getEnemyTeamID()

U32 Divide::AI::AITeam::getEnemyTeamID ( const U32  index) const
inline

Definition at line 92 of file AITeam.h.

◆ getEntityList()

vector< AIEntity * > Divide::AI::AITeam::getEntityList ( ) const
protected

Definition at line 52 of file AITeam.cpp.

◆ getMemberVariable()

MemberVariable & Divide::AI::AITeam::getMemberVariable ( )
inline

Definition at line 103 of file AITeam.h.

◆ getTeamMembers()

const TeamMap & Divide::AI::AITeam::getTeamMembers ( ) const
inline

Definition at line 102 of file AITeam.h.

◆ processData()

bool Divide::AI::AITeam::processData ( TaskPool parentPool,
U64  deltaTimeUS 
)
protected

Definition at line 130 of file AITeam.cpp.

◆ processInput()

bool Divide::AI::AITeam::processInput ( TaskPool parentPool,
U64  deltaTimeUS 
)
protected

Definition at line 103 of file AITeam.cpp.

◆ PROPERTY_RW()

Divide::AI::AITeam::PROPERTY_RW ( U32  ,
teamID  ,
U32_MAX   
)

◆ removeCrowd()

void Divide::AI::AITeam::removeCrowd ( AIEntity::PresetAgentRadius  radius)
protected

Definition at line 44 of file AITeam.cpp.

◆ removeEnemyTeam()

bool Divide::AI::AITeam::removeEnemyTeam ( U32  enemyTeamID)

Definition at line 201 of file AITeam.cpp.

◆ removeOrder()

void Divide::AI::AITeam::removeOrder ( const Order order)
inline

Definition at line 117 of file AITeam.h.

◆ removeTeamMember()

bool Divide::AI::AITeam::removeTeamMember ( AIEntity entity)

Definition at line 180 of file AITeam.cpp.

◆ requestOrders()

const OrderList & Divide::AI::AITeam::requestOrders ( ) const
inline

Definition at line 125 of file AITeam.h.

◆ resetCrowd()

void Divide::AI::AITeam::resetCrowd ( )
protected

Update the crowding system.

Definition at line 157 of file AITeam.cpp.

◆ update()

bool Divide::AI::AITeam::update ( TaskPool parentPool,
U64  deltaTimeUS 
)
protected

Definition at line 65 of file AITeam.cpp.

Friends And Related Function Documentation

◆ AIManager

friend class AIManager
friend

Definition at line 130 of file AITeam.h.

Member Data Documentation

◆ _aiTeamCrowd

AITeamCrowd Divide::AI::AITeam::_aiTeamCrowd
private

Definition at line 169 of file AITeam.h.

◆ _crowdMutex

SharedMutex Divide::AI::AITeam::_crowdMutex
mutableprivate

Definition at line 171 of file AITeam.h.

◆ _enemyTeams

vector<U32> Divide::AI::AITeam::_enemyTeams
private

Definition at line 172 of file AITeam.h.

◆ _memberVariable

MemberVariable Divide::AI::AITeam::_memberVariable
private

Container with data per team member. For example a map of distances.

Definition at line 168 of file AITeam.h.

◆ _orderMutex

SharedMutex Divide::AI::AITeam::_orderMutex
mutableprotected

Definition at line 162 of file AITeam.h.

◆ _orders

OrderList Divide::AI::AITeam::_orders
private

Definition at line 173 of file AITeam.h.

◆ _parentManager

AIManager& Divide::AI::AITeam::_parentManager
private

Definition at line 166 of file AITeam.h.

◆ _team

TeamMap Divide::AI::AITeam::_team
private

Definition at line 165 of file AITeam.h.

◆ _updateMutex

SharedMutex Divide::AI::AITeam::_updateMutex
mutableprivate

Definition at line 170 of file AITeam.h.


The documentation for this class was generated from the following files: