Atoms Crowd
7.0.0
|
#include <BehaviourModule.h>
Public Member Functions | |
BehaviourModule () | |
Constructor. | |
virtual | ~BehaviourModule () |
Destructor. | |
virtual void | agentsCreated (const std::vector< Agent * > &agents, AgentGroup *agentGroup=nullptr) |
Agents Created. More... | |
virtual void | agentsKilled (const std::vector< Agent * > &agents, AgentGroup *agentGroup=nullptr) |
Post frame. More... | |
virtual void | initSimulation (AgentGroup *agentGroup=nullptr) |
Init simulation. More... | |
virtual void | preFrame (AgentGroup *agentGroup=nullptr) |
Pre frame. More... | |
virtual void | initFrame (const std::vector< Agent * > &agents, AgentGroup *agentGroup=nullptr) |
Init frame. More... | |
virtual void | endFrame (const std::vector< Agent * > &agents, AgentGroup *agentGroup=nullptr) |
End frame. More... | |
virtual void | prePhysics (const std::vector< Agent * > &agents, AgentGroup *agentGroup=nullptr) |
Pre Physics. More... | |
virtual void | postPhysics (const std::vector< Agent * > &agents, AgentGroup *agentGroup=nullptr) |
Post Physics. More... | |
virtual void | endSimulation (const std::vector< Agent * > &agents, AgentGroup *agentGroup=nullptr) |
End simulation. More... | |
virtual void | resetSimulation (const std::vector< Agent * > &agents, AgentGroup *agentGroup=nullptr) |
Reset simulation. More... | |
virtual void | preDraw (DrawContext *context, const std::vector< Agent * > &agents, AgentGroup *agentGroup=nullptr) |
Pre draw. More... | |
virtual void | draw (DrawContext *context, const std::vector< Agent * > &agents, AgentGroup *agentGroup=nullptr) |
Draw. More... | |
virtual AtomsCore::MapMetadata & | attributes () |
Returns the module attributes map. | |
virtual AtomsCore::MapMetadata & | attributeProperties () |
Returns the module attribute properties map. | |
virtual const std::string & | typeName () const |
Gets the module type name. | |
virtual void | setTypeName (const std::string &typeName) |
Sets the module type name. | |
virtual void | addAttribute (const std::string &attributeName, AtomsPtr< AtomsCore::Metadata > &metadata, bool perAgent=false) |
Add an attribute to the module, if the perAgent flag is set to true an extra attribute is added with the same name plus the "_override" suffix. This new attribute stores the agent overrides. | |
virtual void | addAttribute (const std::string &attributeName, AtomsCore::Metadata *metadata, bool perAgent=false) |
virtual void | addAttributeProperty (const std::string &attributeName, const std::string &propertyName, AtomsPtr< AtomsCore::Metadata > &metadata) |
Add an attribute property to the module. | |
virtual void | addAttributeProperty (const std::string &attributeName, const std::string &propertyName, AtomsCore::Metadata *metadata) |
virtual bool | removeAttribute (const std::string &attributeName) |
Removes an attribute from the module, this also removes the _override entry if present. | |
virtual void | setEnabled (bool value) |
Set the enabled state for this module. | |
virtual bool | isEnabled () const |
Gets the enabled state for this module. | |
void | setSingleThread (bool value) |
Use single thread. | |
bool | singleThread () const |
Return true if this module use a single thread. | |
virtual const std::string & | name () const |
Gets the module name. | |
virtual void | setName (const std::string &name) |
Sets the module name. | |
virtual void | refreshAttributes () |
Refresh the attribute map metadata. | |
virtual bool | hasDynamicAttributes () const |
Check if this module can generate attribute dynamically. | |
template<typename T > | |
T | getAttributePerAgent (const T &defaultValue, AtomsCore::MapMetadata *overrideMap, const std::string &id) |
Utils to get per agent attributes. | |
template<typename T > | |
T | getAttributePerAgent (const T &defaultValue, AtomsCore::MapMetadata *overrideMap, const std::string &id, const AtomsCore::MapMetadata &agentMetadata, const std::string &metadataName) |
Utils to get per agent attributes. | |
size_t | profileTime (unsigned short index) const |
Get profile time. | |
void | setProfileTime (unsigned short index, size_t us) |
Static Public Member Functions | |
static bool | ignoreCurrentModule (Atoms::Agent *agent, const std::string ¤tModuleName, const std::vector< std::string > &moduleNames, const std::string &metadataName) |
static void | enableCurrentActiveModuleMetadata (Atoms::Agent *agent, const std::string ¤tModuleName, const std::string &metadataName, const bool enable) |
static void | initializeAngularVelocity (Atoms::Agent *agent) |
static void | setAngularVelocities (Atoms::Agent *agent, const AtomsCore::Vector3 &newDir, const AtomsCore::Vector3 &preMaxTurnAngleDir, const double fps) |
static void | setAngularVelocities (Atoms::Agent *agent, const double angularVelocity, const double frameAngularVelocity) |
Behaviour module.
The behaviour module adds logic to the agents contained by an agent group. It defines methods being called by the agent group during the simulation. Inside these methods it's possible to change data on the agents, i.e. adding node to the agent graph, modify metadata, modify the layout etc. This is the base class off all the modules used inside atoms to implement agent logic.
|
virtual |
Agents Created.
Called after the layout generators and the pool finished to allocate the memory for the new agents. At this point it is possibe to modify the behaviour network, the pose and metadatas of the agents.
Reimplemented in AtomsModules::ScriptModule, AtomsModules::VelocityToState, AtomsModules::VariationsModule, AtomsModules::UsdCacheReaderModule, AtomsModules::TorusLayoutModule, AtomsModules::TiltModule, AtomsModules::TargetCurveModule, AtomsModules::SyncModule, AtomsModules::StateMachineModule, AtomsModules::StadiumGeneratorModule, AtomsModules::SphereLayoutModule, AtomsModules::RagdollModule, AtomsModules::PointsLayoutModule, AtomsModules::OffsetModule, AtomsModules::NetworkEditorModule, AtomsModules::NavigationModule, AtomsModules::Navigation3dModule, AtomsModules::MirrorModule, AtomsModules::MeshScatterLayout, AtomsModules::MeshAvoidanceModule, AtomsModules::LodModule, AtomsModules::LocomotionModule, AtomsModules::JointConstraintModule, AtomsModules::JointAimModule, AtomsModules::GridGeneratorModule, AtomsModules::FollowCurveModule, AtomsModules::FollowAgentModule, AtomsModules::DirectionCollector, AtomsModules::CurvePairGeneratorModule, AtomsModules::CurveGeneratorModule, AtomsModules::CopyMetadataModule, AtomsModules::ClipReaderModule, AtomsModules::CacheReaderModule, AtomsModules::BlendShapeManagerModule, AtomsModules::BehaviourTreeModule, ArrowEmitterModule, AtomsModules::AgentScaleModule, AtomsModules::AgentRadiusOffsetModule, AtomsModules::AddMetadataModule, AtomsModules::ContextSteeringModule, AtomsModules::JointTransformModule, and AtomsModules::InstanceModule.
|
virtual |
Post frame.
Called after the post build pose of the other agents. This is the last point where the killed agents are accessible, the memory of those agents is cleaned straight afterward
Reimplemented in AtomsModules::ScriptModule, AtomsModules::NavigationModule, and AtomsModules::BehaviourTreeModule.
|
virtual |
Draw.
Draw function
Reimplemented in AtomsModules::VortexFieldModule, AtomsModules::StateMachineModule, AtomsModules::RagdollModule, AtomsModules::ProximityMetadataModule, AtomsModules::PointFinderModule, AtomsModules::NavigationModule, AtomsModules::Navigation3dModule, AtomsModules::MeshAvoidanceModule, AtomsModules::MagnetFieldModule, AtomsModules::LocomotionModule, AtomsModules::FollowMeshModule, AtomsModules::FollowCurveModule, AtomsModules::FollowAgentModule, AtomsModules::DirectionFieldModule, AtomsModules::ClipReaderModule, AtomsModules::AgentSeparationModule, AtomsModules::AgentAvoidanceModule, AtomsModules::ContextSteeringModule, and AtomsModules::CurveFieldModule.
|
virtual |
End frame.
Called at the end of each frame after the agent poses are computed
Reimplemented in AtomsModules::ScriptModule, AtomsModules::ContextSteeringModule, AtomsModules::StateMachineModule, AtomsModules::RagdollModule, AtomsModules::ProximityMetadataModule, AtomsModules::ProjectDirectionOnUpPlane, AtomsModules::ParentConstraintModule, AtomsModules::ParentChildJointConstraintModule, AtomsModules::NavigationModule, AtomsModules::Navigation3dModule, AtomsModules::LocomotionModule, AtomsModules::JointTransformModule, AtomsModules::JointAimModule, AtomsModules::IkAimModule, AtomsModules::FollowMeshModule, AtomsModules::FollowCurveModule, AtomsModules::FollowAgentModule, AtomsModules::CurveFieldModule, AtomsModules::CopyMetadataModule, AtomsModules::ClipReaderModule, AtomsModules::BehaviourTreeModule, ArrowEmitterModule, AtomsModules::AgentSeparationModule, AtomsModules::AgentAvoidanceModule, AtomsModules::LodModule, and AtomsModules::DirectionCollector.
|
virtual |
End simulation.
Called at the end of the simulation
|
virtual |
Init frame.
Called at the beginning of each frame before the agent poses are computed
Reimplemented in AtomsModules::ScriptModule, AtomsModules::ContextSteeringModule, AtomsModules::WaveModule, AtomsModules::VortexFieldModule, AtomsModules::VelocityToState, AtomsModules::UsdCacheReaderModule, AtomsModules::UpVectorHandlerModule, AtomsModules::TimerMetadataModule, AtomsModules::TiltModule, AtomsModules::TargetCurveModule, AtomsModules::SyncModule, AtomsModules::StatePickerModule, AtomsModules::StateMachineModule, AtomsModules::RagdollModule, AtomsModules::ProximityMetadataModule, AtomsModules::PointFinderModule, AtomsModules::PerchModule, AtomsModules::ParentConstraintModule, AtomsModules::NetworkEditorModule, AtomsModules::NavigationModule, AtomsModules::Navigation3dModule, AtomsModules::MeshAvoidanceModule, AtomsModules::MagnetFieldModule, AtomsModules::KillModule, AtomsModules::JointConstraintModule, AtomsModules::JointAimModule, AtomsModules::FollowTargetModule, AtomsModules::FollowMeshModule, AtomsModules::FollowCurveModule, AtomsModules::FollowAgentModule, AtomsModules::FlockingModule, AtomsModules::DirectionCollector, AtomsModules::CopyMetadataModule, AtomsModules::ClipReaderModule, AtomsModules::CacheReaderModule, AtomsModules::BlendShapeManagerModule, AtomsModules::BlendShapeAnimModule, AtomsModules::BehaviourTreeModule, ArrowEmitterModule, AtomsModules::AreaTriggerModule, AtomsModules::AgentSeparationModule, AtomsModules::AgentScaleModule, AtomsModules::AgentAvoidanceModule, AtomsModules::AddMetadataModule, AtomsModules::AddForceModule, AtomsModules::LocalPositionOffsetModule, AtomsModules::JointTransformModule, AtomsModules::InstanceModule, AtomsModules::DirectionFieldModule, and AtomsModules::CurveFieldModule.
|
virtual |
Init simulation.
Called one time at the beginning of the simulation before the agents are created
Reimplemented in AtomsModules::WaveModule, AtomsModules::UsdCacheReaderModule, AtomsModules::TorusLayoutModule, AtomsModules::SyncModule, AtomsModules::StadiumGeneratorModule, AtomsModules::SphereLayoutModule, AtomsModules::ScriptModule, AtomsModules::PointsLayoutModule, AtomsModules::ParentConstraintModule, AtomsModules::MeshScatterLayout, AtomsModules::MeshAvoidanceModule, AtomsModules::LodModule, AtomsModules::LocomotionModule, AtomsModules::JointAimModule, AtomsModules::GridGeneratorModule, AtomsModules::FollowTargetModule, AtomsModules::CurvePairGeneratorModule, AtomsModules::CurveGeneratorModule, AtomsModules::CacheReaderModule, AtomsModules::BlendShapeAnimModule, AtomsModules::BehaviourTreeModule, AtomsModules::AreaTriggerModule, AtomsModules::AgentFilterModule, AtomsModules::AgentAvoidanceModule, AtomsModules::TargetCurveModule, AtomsModules::StatePickerModule, AtomsModules::PerchModule, AtomsModules::NavigationModule, AtomsModules::Navigation3dModule, AtomsModules::MagnetFieldModule, AtomsModules::InstanceModule, AtomsModules::FollowMeshModule, AtomsModules::FollowCurveModule, AtomsModules::DirectionFieldModule, and AtomsModules::CurveFieldModule.
|
virtual |
Post Physics.
Called after step physx
Reimplemented in AtomsModules::RagdollModule, AtomsModules::CopyMetadataModule, and AtomsModules::BehaviourTreeModule.
|
virtual |
Pre draw.
Called before the draw function Get here all the data that you need form the DCC application
Reimplemented in AtomsModules::ProximityMetadataModule, AtomsModules::MeshAvoidanceModule, AtomsModules::FollowAgentModule, AtomsModules::AgentSeparationModule, and AtomsModules::AgentAvoidanceModule.
|
virtual |
Pre frame.
Called at the beginning of each frame
Reimplemented in AtomsModules::ContextSteeringModule, AtomsModules::TorusLayoutModule, AtomsModules::StateMachineModule, AtomsModules::SphereLayoutModule, AtomsModules::PointsLayoutModule, AtomsModules::MeshScatterLayout, AtomsModules::LocomotionModule, AtomsModules::GridGeneratorModule, AtomsModules::CurvePairGeneratorModule, AtomsModules::CurveGeneratorModule, and AtomsModules::CacheReaderModule.
|
virtual |
Pre Physics.
Called before step physx
Reimplemented in AtomsModules::CopyMetadataModule, and AtomsModules::BehaviourTreeModule.
|
virtual |
Reset simulation.
Called after each reset