49# pragma warning( disable : 4290 )
58 class ParticleEmitter;
59 class RigidBodyEmitter;
64 class StabilityReport;
72 class AngularLockJoint;
73 class CylindricalJoint;
75 class PrismaticUniversalJoint;
85 class RemoteDebugClient;
100 class SurfaceVelocityConveyorBelt;
111 class SimulationFrameReader;
112 class SimulationFrameWriter;
114 class SimulationFrameWriter;
115 class GuiEventAdapterImplementation;
117 class MergeSplitHandler;
118 class TerrainInstance;
119 class TerrainToolInstance;
121 class ISensorEnvironment;
373 bool add( agxControl::Action* action );
380 bool remove( agxControl::Action* action );
387 bool add( agxControl::Operation* operation );
394 bool remove( agxControl::Operation* operation );
677 template <
typename T >
688 template <
typename T >
689 const T* getConstraint(
const agx::Uuid& uuid)
const;
699 template <
typename T >
700 T* getConstraint(
const agx::Name& name );
710 template <
typename T >
711 const T* getConstraint(
const agx::Name& name )
const;
713#define GETCONSTRAINT_TYPE(CLASS_NAME, TYPENAME) \
714 CLASS_NAME *get ## TYPENAME(const agx::Name& name); \
715 CLASS_NAME *get ##TYPENAME(const agx::Uuid& uuid);
727#undef GETCONSTRAINT_TYPE
880 #if AGX_USE_WEBSOCKETS()
884 agx::RemoteSolver* getRemoteSolver();
889 const agx::RemoteSolver* getRemoteSolver()
const;
1009 STEP_LISTENERS = 0x1,
1010 CONTACT_LISTENERS = 0x2,
1011 GUI_LISTENERS = 0x4,
1012 LISTENERS = STEP_LISTENERS | CONTACT_LISTENERS | GUI_LISTENERS,
1016 ASSEMBLIES = 0x1000,
1017 PARTICLE_SYSTEMS = 0x2000,
1018 CONTACT_DATA = 0x4000,
1019 CLEANUP_ALL = LISTENERS | SYSTEM | SPACE | MATERIALS | ASSEMBLIES | PARTICLE_SYSTEMS | CONTACT_DATA
1027 STEP_LISTENERS = EventManager::STEP_LISTENERS,
1028 CONTACT_LISTENERS = EventManager::CONTACT_LISTENERS,
1029 GUI_LISTENERS = EventManager::GUI_LISTENERS,
1030 LISTENERS = EventManager::LISTENERS,
1034 ASSEMBLIES = 0x1000,
1035 PARTICLE_SYSTEMS = 0x2000,
1036 CONTACT_DATA = 0x4000,
1037 PLOTSYSTEM = 0x8000,
1038 CLEANUP_ALL = LISTENERS | SYSTEM | SPACE | MATERIALS | ASSEMBLIES | PARTICLE_SYSTEMS | CONTACT_DATA | PLOTSYSTEM
1048 READ_TIMESTEP = 0x1,
1049 READ_TIMESTAMP = 0x2,
1052 READ_ALL = READ_TIMESTEP + READ_TIMESTAMP + READ_GRAVITY + READ_SOLVER,
1053 READ_DEFAULT = READ_TIMESTEP + READ_GRAVITY + READ_SOLVER
1273 size_t write( std::ostream& stream,
bool binary )
const;
1334 bool replaceUsingCache =
false );
1344 bool useCompression =
false,
1345 bool waitForSynchronization =
true );
1378 #if AGX_USE_WEB_DEBUGGER()
1383 agxSDK::RemoteDebugRenderProxyFactory* getWebDebugger();
1389 const agxSDK::RemoteDebugRenderProxyFactory* getWebDebugger()
const;
1555 const agx::SolveModelRefVector& getSolveModels()
const;
1557 #if AGX_USE_WEBSOCKETS()
1558 void setRemoteSolver(agx::RemoteSolver* remoteSolver);
1626 bool allowCreateParticles()
const;
1658 const agx::String& journalName =
"Profiling.agxJournal");
1678 friend class GuiEventAdapterImplementation;
1700 void initConfiguration();
1703 void updateStatisticsEnable();
1705 void setEnableComputeAllConstraintForces(
bool flag);
1706 bool getEnableComputeAllConstraintForces()
const;
1709 void resetGraphStatistics();
1715 void setupStatisticsLogging();
1717 void updateConstraintForceData();
1719 void createUpdateTask();
1721 void generateContactMaterials();
1723 void prepareContacts();
1724 void triggerParticleContactSensors();
1725 void triggerPreStepEvents();
1726 void triggerPostStepEvents();
1727 void triggerLastStepEvents();
1728 void terrainPostUpdate();
1730 void resetDirtyMaterials();
1731 void updateRemoteDebugger();
1732 void recordStatistics();
1733 void recordPlaybackStatistics();
1734 void recordParticleCount();
1735 void recordWarmStartingData();
1736 void printStatistics();
1740 void pruneContacts();
1741 void contactPointReduction();
1742 void updateSleepState();
1743 void triggerPreCollideStepEvent();
1744 void triggerSeparationContactEventListeners();
1745 void triggerContactEventListeners();
1746 void assignContactMaterials();
1749 void applyPreIntegrationSettings();
1752 friend class agx::Solver;
1753 void registerParticleSystemPointers();
1754 void unregisterParticleSystemPointers();
1758 class StatisticsWriter;
1762 #if AGX_USE_WEBSOCKETS()
1763 friend class agx::RemoteSolver;
1767 void setHasJournal(
bool flag);
1768 void preStoreSynchronization();
1771 StatisticsWriter* m_statWriter;
1784 bool m_stepToStarted;
1786 EventManagerRef m_eventManager;
1789 agxControl::ActionManagerRef m_actionManager;
1809 bool m_preIntegrate;
1811 bool m_allowCreateParticles;
1819 agx::SolveModelTable m_solveModelTable;
1820 agx::SolveModelRefVector m_solveModels;
1823 bool m_clearRenderTemporaries;
1825 agxData::FrameRef m_journalLastWrittenFrame;
1830 void* m_remoteSolver;
1835 bool m_enableComputeAllConstraintForces;
1836 bool m_inDestructor;
1862 bool m_disableGeometryAutoAdd;
1870 agxSDK::TerrainManagerRef m_terrainManager;
1872 #if AGX_USE_WEB_DEBUGGER()
1885 return m_space.
get();
1890 return m_space.
get();
1895 return m_system.
get();
1900 return m_system.
get();
1905 if (m_system)
return m_system->getTimeGovernor()->getTimeStep();
1921 return m_allowCreateParticles;
1926 return m_solveModels;
1929 template<
typename T >
1935 template<
typename T >
1938 return dynamic_cast< const T*
>( this->
getConstraint( uuid ) );
1941 template<
typename T >
1947 template<
typename T >
1950 return dynamic_cast< const T*
>( this->
getConstraint( name ) );
1955# pragma warning(pop)
#define AGX_DECLARE_POINTER_TYPES(type)
#define GETCONSTRAINT_TYPE(CLASS_NAME, TYPENAME)
#define AGXPHYSICS_EXPORT
The geometry representation used by the collision detection engine.
This class contains all Geometries and performs Broad Phase and Narrow Phase collision detection to c...
Data storage for a collection of entity instances of a specified EntityModel.
Class for receiving serialized agxSDK::Simulation:s from remote host.
Class that encapsulates data to be plotted, including methods for accessing the data,...
System that manages the plotting system.
Class for managing the rendering of geometries, shapes, rigid bodies, constraints etc.
An assembly is a collection of basic simulation objects, such as rigid bodies, constraints,...
Keeps track of the energy flow in the system.
An EventListener can be associated to a Simulation and triggered upon various events.
Class for storing an Event which will be executed later inside Simulation.
Interface to a cooperative sensor simulation assumed to be executed in a separate thread spawned in a...
Simulation unique manager that handles logics around and parameters in contact materials given two ag...
Base class for a merge split algorithm handling a set of merged bodies.
Interface class used by internal objects running in parallel.
class for serializing a simulation into a series for files on disk <filename>_0001....
This class will collect statistics and sizes of a simulation.
Simulation is a class that bridges the collision space agxCollide::Space and the dynamic simulation s...
void readStoragePermutations(agxStream::InputArchive &in, bool clearStorages=false)
agx::Constraint1DOF * getConstraint1DOF(const agx::Name &name)
agx::Journal * getJournal()
MaterialEvent addMaterialEvent
const agx::ObserverFrame * getObserverFrame(const agx::Uuid &uuid) const
Find (linear search) and return a pointer to a ObserverFrame with the given uuid.
bool add(agx::RigidBody *body, bool addGeometries=true)
agx::ObserverFrame * getObserver(const agx::Uuid &uuid)
Find (linear search) and return a pointer to a ObserverFrame with the given uuid.
const agx::RigidBody * getRigidBody(const agx::Uuid &uuid) const
Find (linear search) and return a pointer to a RigidBody with the given uuid.
bool addEventListener(agxSDK::EventListener *listener, int priority=EventManager::DEFAULT_PRIORITY)
Add an event listener The listener will get a call to its addNotification method if adding was succes...
bool remove(agx::MergedBody *mergedBody)
Removes the merged body from this simulation.
void loadSolveModels(const agx::String &path, bool clear=false)
agxSDK::EventListener * getEventListener(const agx::Name &name)
Find and return the first matching named event listener.
bool getEnableStatistics() const
bool add(agx::ParticleContactSensor *sensor)
Add a particle contact sensor to the Simulation.
bool contains(const agx::Component *object) const
Is the object contained in the simulation?
agxSDK::Assembly * getAssembly(const agx::Name &name)
Find (linear search) and return named Assembly.
const agx::Material * getMaterial(const agx::Name &materialName) const
agx::Event2< Simulation *, agxCollide::Geometry * > GeometryEvent
void setEnableSimulationStatisticsListener(bool flag)
Enable/disable the listener that collects all statistics data from the simulation.
const agxSDK::PickHandler * getPickHandler() const
bool remove(agxStream::Serializable *object)
Remove an object as a serializable object.
bool remove(agx::ContactMaterial *material)
Remove an explicit contact material from the set of existing ContactMaterials.
void setStatisticsPath(const agx::String &path)
Specify the path to a file where the statistics information will be written when enabled.
agxSDK::SimulationParameter * getParameter(const agx::Name &name)
agx::Constraint * getConstraint(const agx::Uuid &uuid)
Find and return a pointer to a Constraint with the given uuid.
bool setTimeStep(agx::Real timeStep)
Sets the time step determined by the TimeGovernor in the DynamicsSystem.
agx::Constraint * getConstraint(const agx::Name &name)
Find (linear search) and return named Constraint.
bool add(agx::Material *material)
Add a material to the simulation.
ISensorEnvironment * getSensorEnvironment() const
agx::Emitter * getEmitter(const agx::Uuid &uuid)
Find (linear search) and return an emitter matching the given uuid.
const agx::ObserverFrame * getObserverFrame(const agx::Name &name) const
Find (linear search) the first ObserverFrame object in the system that matches the name.
void setPickHandler(agxSDK::PickHandler *pickHandler)
Assign interface for pick handler.
agx::ConstraintRefSetVector & getConstraints()
bool remove(agx::Interaction *interaction)
Remove an Interaction from the Simulation.
void updateActionManager()
Internal method.
const agxCollide::GeometryRefVector & getGeometries() const
bool contains(const agxSDK::TerrainInstance *terrain) const
Is the terrain contained in the simulation?
agx::UInt getContactReductionThreshold() const
bool removeRestoreListener(agxStream::RestoreListener *listener)
Remove an existing listener in a simulation.
agxRender::RenderManager * getRenderManager()
const agx::RigidBody * getRigidBody(const agx::Name &name) const
Find (linear search) and return named RigidBody.
void setEnableStatisticsRendering(bool enable)
void sendSimulation()
Send the simulation to the remote debugger (if enabled)
bool remove(agxSDK::TerrainToolInstance *toolInstance)
Remove a terrain tool instance from this simulation.
bool remove(agxSDK::EventListener *listener)
Remove a Event listener.
agx::RigidBodyRefVector & getRigidBodies()
const agxSDK::SimulationParameterRefVector & getParameters() const
const MaterialManager * getMaterialManager() const
const agx::ConstraintRefSetVector & getConstraints() const
const AssemblyHash & getAssemblies() const
agx::ParticleSystem * getParticleSystem() const
bool remove(agx::Component *subComponent)
Remove a sub component from Simulation.
void setContactReductionBinResolution(agx::UInt8 binResolution)
Specify the bin resolution used when evaluating contacts for reduction between body-body contacts.
RigidBodyEvent addRigidBodyEvent
agx::Event2< Simulation *, agx::Constraint * > ConstraintEvent
agxSDK::TerrainManager * getTerrainManager() const
bool add(agxControl::Operation *operation)
Register an operation to this simulation.
const agx::RigidBodyRefVector & getRigidBodies() const
void getEventListeners(EventListenerPtrVector &eventListeners) const
Get a vector containing all the registered event listeners.
agx::ParticleEmitterRefVector getParticleEmitters()
agx::ObserverFrame * getObserver(const agx::Name &name)
Find (linear search) and return named ObserverFrame.
void clearContactData()
Clears contact data in the simulation.
void addSolveModel(agx::SolveModel *model)
bool removeEventListener(agxSDK::EventListener *listener)
Remove the specified listener.
const SimulationSerializer * getSerializer() const
const agx::MergedBody * getMergedBody(const agx::Name &name) const
Find (linear search) and return named MergedBody.
bool add(agx::Constraint *constraint)
Add a constraint to the simulation.
void setEnableWebDebugger(bool flag, agx::UInt16 port=9001)
Enable/Disable the Web debugger simulation WebSocket API.
agx::ObserverFrameRefSetVector & getObserverFrames()
const agx::ParticleSystemRefVector & getParticleSystems() const
agx::RigidBodyPtrSetVector & getEnabledRigidBodies()
bool add(agxSDK::TerrainInstance *terrain)
Add terrain (agxTerrain::Terrain) instance to this simulation.
JournalAttachEvent journalAttachedEvent
bool add(agx::ContactMaterial *material)
Add an explicit contact material to the simulation.
agxSDK::TerrainInstance * getTerrain(agx::UInt i) const
void stepForward()
Take one step forward in the simulation.
static Simulation * load(agx::TiXmlElement *eSimulation, agx::Device *device)
agx::Emitter * getEmitter(const agx::Name &name) const
Find (linear search) and return an emitter matching the given name.
bool restore(const agx::String &filename, agx::UInt selection=READ_DEFAULT)
Restore state from a serialized scene file.
bool add(agxSDK::EventListener *listener, int priority=EventManager::DEFAULT_PRIORITY)
Add an event listener The listener will get a call to its addNotification method if adding was succes...
size_t write(std::ostream &stream, bool binary) const
Serialize the simulation to the specified file.
bool add(agxSDK::SimulationParameter *parameter)
Add a parameter to the simulation configuration interface.
agx::SolveModel * getSolveModel(const agx::Name &name)
const agx::SolveModelRefVector & getSolveModels() const
void commit(agxSDK::SimulationProxy *simulationProxy)
Internal method.
ReadSelectionMask
Enum for specifying some additional, part of a simulation that can be restored from a serialization.
agxSDK::PickHandler * getPickHandler()
agxWire::Wire * getWire(const agx::Uuid &uuid)
Find (linear search) and return the first wire matching the uuid.
bool add(agx::ParticleSystem *particleSystem)
Add a particle system to the simulation.
bool remove(agx::RigidBody *body, bool removeGeometries=true)
Remove a body from the Simulation, the body will be disabled!
agx::ObserverFrame * getObserverFrame(const agx::Uuid &uuid)
Find and return a pointer to a ObserverFrame with the given uuid.
void store(agxStream::OutputArchive &archive) const
Save this simulation to the output archive.
bool remove(agxSDK::TerrainInstance *terrain)
Remove terrain (agxTerrain::Terrain) instance from this simulation.
const agx::ObserverFrameRefSetVector & getObserverFrames() const
Simulation()
Default constructor This constructor CAN Throw a std::runtime_exception if configuration file is brok...
agx::Material * getMaterial(const agx::Name &materialName)
size_t read(const agx::String &filename, agxSDK::Assembly *parent=nullptr, agx::UInt selection=READ_DEFAULT)
Read serialized simulation from the specified file and append to this simulation.
agxSDK::Assembly * getAssembly(const agx::Uuid &uuid)
Find (linear search) and return an Assembly matching the given uuid.
void setTimeStamp(agx::TimeStamp t)
Set the timestamp for the simulation (and the DynamicsSystem)
void setEnableRemoteDebugging(bool flag, agx::Int16 port=-1, bool useCompression=false, bool waitForSynchronization=true)
Enable/Disable remote debugging.
bool enableThreadTimeline(const agx::String &sessionName="", const agx::String &journalName="Profiling.agxJournal")
Record profiling information from this simulation and store it in a journal.
void setStatisticsInterval(agx::Real interval)
const agxRender::RenderManager * getRenderManager() const
agx::Event2< Simulation *, agx::Journal * > JournalAttachEvent
agx::EmitterRefVector getEmitters()
agxSDK::EnergyManager * getEnergyManager() const
return the energy manager of the system.
agx::UInt getNumTerrains() const
agx::Real getTimeStep() const
agx::Real getProfilingFrequency() const
void setSensorEnvironment(ISensorEnvironment *environment)
Assign new sensor environment to this simulation, nullptr to remove the current environment.
agx::Real getRemoteDebuggingTimeStep() const
bool getEnableClearRenderTemporaries() const
bool remove(agxSDK::SimulationParameter *parameter)
Remove a parameter from the simulation configuration interface.
const agx::Journal * getJournal() const
RigidBodyEvent removeRigidBodyEvent
MaterialManager * getMaterialManager()
void setPlotSystem(agxPlot::System *plotSystem)
Replace the current PlotSystem with plotSystem.
bool remove(agx::ObserverFrame *observerFrame)
Remove a ObserverFrame to the Simulation.
bool remove(agx::ParticleSystem *particleSystem)
Remove a particle system from the simulation.
bool disableThreadTimeline(const agx::String &format="chrome")
Stops recording timeline data and exports gathered data to disk.
void setActionManagerTimeStamp(const agx::TimeStamp &time)
Truncating an AGX simulation does not reset the timestamp in the action manager.
agxSDK::EventListener * getEventListener(const agx::Uuid &uuid)
Find (linear search) and return the first event listener matching the uuid.
bool add(agxCollide::Geometry *geometry)
bool restore(std::istream &stream, bool isBinary, agx::UInt selection=READ_DEFAULT)
void setGravityField(agx::GravityField *gravityField)
Set the GravityField model used in gravity calculations.
agx::Event2< Simulation *, agx::Material * > MaterialEvent
agx::MergedBody * getMergedBody(const agx::Uuid &uuid)
Find (linear search) and return a pointer to a MergedBody with the given uuid.
const agx::Constraint * getConstraint(const agx::Uuid &uuid) const
Find (linear search) and return a pointer to a Constraint with the given uuid.
void restore(agxStream::InputArchive &in, agxSDK::Assembly *parent=nullptr, agx::UInt selection=READ_DEFAULT, bool replaceUsingCache=false)
Read data from the input archive and add to the simulation.
void resetTaskTimers()
Reset profiling timers.
agxPlot::DataSeries * getTimeDataSeries() const
A data series that contains all time stamps of the simulation.
GeometryEvent addGeometryEvent
bool setUniformGravity(const agx::Vec3 &g)
Set the uniform gravity.
bool getEnableRemoteDebugging() const
size_t read(std::istream &stream, bool isBinary, agxSDK::Assembly *parent=nullptr, agx::UInt selection=READ_DEFAULT)
Read serialized simulation from the specified stream.
void dumpMemoryUsage(const agx::String &filePath="TaskTimers.xml")
Print current agxData buffer allocations to a file.
const agx::GravityField * getGravityField() const
const agxWire::Wire * getWire(const agx::Uuid &uuid) const
Find (linear search) and return the first wire matching the uuid.
agxControl::ActionManager * getActionManager()
Gets the action manager.
bool remove(agxControl::Action *action)
Remove an action from this simulation.
agx::Event2< Simulation *, agx::RigidBody * > RigidBodyEvent
agxCollide::Geometry * getGeometry(const agx::Uuid &uuid)
Find (linear search) and return a geometry matching the given uuid.
virtual ~Simulation()
Destructor.
void setSpace(agxCollide::Space *space)
Replace the current Collision space with space.
void removeSolveModel(agx::SolveModel *model)
agxPlot::System * getPlotSystem() const
agxCollide::Geometry * getGeometry(const agx::Name &name)
Find (linear search) and return named collision Geometry.
CleanupSelectionMask
Specification of what should be cleaned up from a simulation during a call to the cleanup() method.
bool remove(agx::ParticleContactSensor *sensor)
Remove a particle contact sensor from the system.
void writeStatisticsFiles(const agx::String &directoryPath="Statistics", bool taskProfile=true, bool threadTimeline=true, const agx::Vector< agx::String > &timelineFormats=agx::Vector< agx::String >(), bool bufferAllocations=true)
void cleanup(agx::UInt selection=CLEANUP_ALL, bool fast=false)
This method will remove/cleanup selected parts of the simulation.
const agxSDK::Assembly * getAssembly(const agx::Uuid &uuid) const
Find (linear search) and return an Assembly matching the given uuid.
agx::MergedBody * getMergedBody(agx::UInt i) const
ConstraintEvent removeConstraintEvent
agx::Component * getHeader()
agx::Solver * getSolver()
bool add(agx::MergedBody *mergedBody)
Add a merged body to this simulation.
const agx::ObserverFrame * getObserver(const agx::Uuid &uuid) const
Find (linear search) and return a pointer to a ObserverFrame with the given uuid.
void setPreIntegratePositions(bool flag)
Set true to integrate positions at the start of the timestep rather than at the end.
bool contains(const agxSDK::TerrainToolInstance *toolInstance) const
Is the terrain tool instance contained in the simulation?
bool remove(agxCollide::Geometry *geometry)
Remove geometry from collision space.
const agxCollide::Geometry * getGeometry(const agx::Uuid &uuid) const
Find (linear search) and return a geometry matching the given uuid.
bool allowCreateParticles() const
const agx::ObserverFrame * getObserver(const agx::Name &name) const
Find (linear search) and return named ObserverFrame.
agx::Vec3 getUniformGravity() const
If the current gravity field is not a uniform one (for example PointGravityField),...
bool getEnableWebDebugger() const
void handleStabiltyReport(const agx::StabilityReport *stabilityReport)
Internal method.
void setDynamicsSystem(agx::DynamicsSystem *system)
Replace the current DynamicsSystem with system.
static agx::Model * ClassModel()
Internal method.
agx::GravityField * getGravityField()
agx::Real getTimeStamp() const
bool add(agxControl::Action *action)
Register an action to this simulation.
void dumpTaskTimers(const agx::String &filePath="BufferAllocations.xml")
Print current task performance timers to a file.
void setMainWorkThread(agx::Thread *thread)
Specify which is the main working thread for the Simulation.
bool add(agx::ObserverFrame *observerFrame)
Add a ObserverFrame to the Simulation.
bool triggerEvent(const GuiEvent &e)
Execute a GuiEvent.
const agxSDK::EventListener * getEventListener(const agx::Name &name) const
Find and return the first matching named event listener.
bool getEnableStatisticsRendering() const
void updateStatisticsRenderData()
Make an explicit call to RenderManager::update() to update the statistics rendering information.
void garbageCollect()
Use with caution!
bool add(agx::Component *subComponent)
Add a sub component to the Simulation.
agx::Material * getMaterial(const agx::Uuid &uuid)
agxSDK::MergeSplitHandler * getMergeSplitHandler() const
Merge split handler is an object that enables performance boosts by merging rigid bodies together whi...
size_t write(const agx::String &filename) const
Serialize the simulation to the specified file.
agx::DynamicsSystem * getDynamicsSystem()
const agx::MergedBody * getMergedBody(const agx::Uuid &uuid) const
Find (linear search) and return a pointer to a MergedBody with the given uuid.
bool remove(agx::Emitter *emitter, bool removeGeometries=true)
Remove an emitter from the system.
Simulation(agx::Device *device)
Special constructor which will associate the Simulation to a specified device.
const agx::Solver * getSolver() const
agx::RigidBody * getRigidBody(const agx::Name &name)
Find (linear search) and return named RigidBody.
ContactMaterialEvent removeContactMaterialEvent
bool add(agxSDK::TerrainToolInstance *toolInstance)
Add a terrain tool instance to this simulation.
const agx::Constraint * getConstraint(const agx::Name &name) const
Find (linear search) and return named Constraint.
void setEnableStatistics(bool enable)
Enable/disable statistics logging to disk.
bool remove(agx::Constraint *constraint)
Remove a constraint from the simulation.
bool remove(agxSDK::Assembly *assembly, bool removeAllEntries=true)
Remove an assembly from the simulation.
const agxCollide::Geometry * getGeometry(const agx::Name &name) const
Find (linear search) and return named collision Geometry.
bool remove(agxControl::Operation *operation)
Remove an operation from this simulation.
agxCollide::Space * getSpace()
const agx::Emitter * getEmitter(const agx::Uuid &uuid) const
Find (linear search) and return an emitter matching the given uuid.
bool breakStepTo()
Break an initiated stepTo() after the current simulation step.
void setRemoteDebuggingTimeStep(agx::Real timeStep)
Sets the time step for remote debugging.
agx::ObserverFrame * getObserverFrame(const agx::Name &name)
Find (linear search) the first ObserverFrame object in the system that matches the name.
GeometryEvent removeGeometryEvent
SimulationStatisticsListener * getSimulationStatisticsListener()
agx::ParticleSystemRefVector & getParticleSystems()
bool add(agx::Interaction *interaction)
Add an Interaction to the Simulation.
void updateRenderManager()
Make an explicit call to RenderManager::update() to update the debug rendering information.
bool addRestoreListener(agxStream::RestoreListener *listener)
Add a restore listener to the Simulation.
const agxSDK::EventListener * getEventListener(const agx::Uuid &uuid) const
Find (linear search) and return the first event listener matching the uuid.
ConstraintEvent addConstraintEvent
void setContactReductionThreshold(agx::UInt threshold)
Specify the minimum number of contacts between two bodies required to execute contact reduction.
void setProfilingFrequency(agx::Real frequency)
Specify the frequency for performance profiling.
ContactMaterialEvent addContactMaterialEvent
void writeStoragePermutations(agxStream::OutputArchive &archive) const
const agxWire::Wire * getWire(const agx::Name &name) const
Find and return the first matching named wire.
bool getPreIntegratePositions() const
agx::TimeStamp stepTo(agx::TimeStamp t)
Step the simulation forward 1 or more time steps in time until we get to the time t.
agx::RigidBody * getRigidBody(const agx::Uuid &uuid)
Find (linear search) and return a pointer to a RigidBody with the given uuid.
agx::UInt getNumMergedBodies() const
agx::Constraint2DOF * getConstraint2DOF(const agx::Name &name)
agxWire::Wire * getWire(const agx::Name &name)
Find and return the first matching named wire.
MaterialEvent removeMaterialEvent
const agxSDK::Assembly * getAssembly(const agx::Name &name) const
Find (linear search) and return named Assembly.
bool remove(agx::Material *material)
Remove a specified material from the simulation.
AssemblyPtrVector getAssemblyPtrVector() const
bool add(agx::Emitter *emitter, bool addGeometries=true)
Add an emitter to the Simulation.
agxData::EntityStorage * getEmitterStorage()
bool add(agxStream::Serializable *object)
Add an object as a serializable object.
agx::UInt8 getContactReductionBinResolution() const
void setEnableClearRenderTemporaries(bool enable)
agx::Emitter * getEmitter(const agx::Name &name)
Find (linear search) and return an emitter matching the given name.
const agx::RigidBodyPtrSetVector & getEnabledRigidBodies() const
agx::TaskGroup * getUpdateTask()
agxSDK::SimulationProxy * getSimulationProxy() const
Internal method.
SimulationSerializer * getSerializer()
static agxSDK::SimulationProxyRef createDefaultProxy(agxSDK::Simulation *simulation)
Creates new simulation proxy of default type.
bool add(agxSDK::Assembly *assembly, bool addAllEntries=true)
Add an assembly to the simulation including all its parts.
agx::MergedBody * getMergedBody(const agx::Name &name)
Find (linear search) and return named MergedBody.
agx::Event2< Simulation *, agx::ContactMaterial * > ContactMaterialEvent
const SimulationStatisticsListener * getSimulationStatisticsListener() const
void setSerializer(SimulationSerializer *serializer)
Replace the current SimulationSerializer with a new instance.
agxTerrain::Terrain instance in a simulation, receiving step and contact callbacks in a controllable ...
Class for writing serialized data in binary format to a stream.
Class for listening to the restore of Serializable objects.
This class is an abstract base class for all classes that can be stored and retrieved from an Archive...
Interface and placeholder of controllers/helpers for wires.
Constraint that removes 3 DOF (rotational degrees of freedom) between two bodies, or one body and the...
Constraint that removes the three translation DOF between two bodies (or one and the world).
Clock class keeps representation of virtual/simulated time.
agx::Real getTime() const
A component is an object containing other objects, enabling hierarchical structuring.
Specialization for constraints that have only one degree of freedom such as Hinge and Prismatic.
Specialization for constraints that have two degree of freedom such as Cylindrical.
The base class for a constraint.
A cylindrical joint is similar to a prismatic joint but with an extra degree of freedom free (rotatio...
An agx::Device is an abstract representation of a device on which data can be stored and processed.
This joint will preserve the initial distance between a body and a point in world coordinate or betwe...
The complete physical system with bodies, interactions, data layout, time stepper,...
Spawns new bodys inside a given volume.
An event with two arguments.
The class GravityField is responsible for calculating and applying a gravity force on a set of bodies...
This class is a combined container which has the find complexity of a HashTable, deterministic iterat...
The hinge constraint between two rigid bodies or one rigid body and the world.
The base class for interactions.
Inheritance with partial specialization due to bug with ref_ptr containers.
Constraint that removes all 6 DOF between two bodies, or one body and the world.
Main material class which acts as a holder of a Surface Material and a Bulk material.
Structure holding several "normal" rigid bodies.
A model is an abstract representation of the class of an agx::Object.
Representation of a name string.
With this class you can attach an ObserverFrame object relative to a RigidBody.
This class is for detecting and handling particle collisions with geometries in the simulation.
A basic particle system that contains all the storages and buffers required for basic operation and a...
A Prismatic Universal Joint has two translational dof's constrained.
A prismatic joint keeps a fixed relative orientation between the attached bodies but allows them to s...
The rigid body class, combining a geometric model and a frame of reference.
A representation of a generic task.
agx::Thread is a representation of an OS specific implementation of a computational thread.
The Timer class permits timing execution speed with the same refinement as the built in hardware cloc...
A Universal Joint has one fixed relative point, the 3 translational dof's, and one constrained axis (...
A UUID, or Universally unique identifier, is intended to uniquely identify information in a distribut...
A class holding 4 dimensional vectors and providing basic arithmetic.
Vector containing 'raw' data.
This namespace consists of a set of classes for handling geometric intersection tests including boole...
Contain classes for higher level modeling primitives, such as Tree, Terrain etc.
Containins classes for sending/reading data over sockets as well as compression functionality.
Namespace contains functionality related to plotting.
Namespace containing classes for handling debug rendering of collision geometries,...
The agxSDK namespace contain classes to bridge the collision detection system and the dynamical simul...
agx::HashVector< agxSDK::Assembly *, agxSDK::AssemblyRef > AssemblyHash
Implements a Wire model with adaptive resolution.
The agx namespace contains the dynamics/math part of the AGX Dynamics API.