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;
1021 STEP_LISTENERS = 0x1,
1022 CONTACT_LISTENERS = 0x2,
1023 GUI_LISTENERS = 0x4,
1024 LISTENERS = STEP_LISTENERS | CONTACT_LISTENERS | GUI_LISTENERS,
1028 ASSEMBLIES = 0x1000,
1029 PARTICLE_SYSTEMS = 0x2000,
1030 CONTACT_DATA = 0x4000,
1031 CLEANUP_ALL = LISTENERS | SYSTEM | SPACE | MATERIALS | ASSEMBLIES | PARTICLE_SYSTEMS | CONTACT_DATA
1039 STEP_LISTENERS = EventManager::STEP_LISTENERS,
1040 CONTACT_LISTENERS = EventManager::CONTACT_LISTENERS,
1041 GUI_LISTENERS = EventManager::GUI_LISTENERS,
1042 LISTENERS = EventManager::LISTENERS,
1046 ASSEMBLIES = 0x1000,
1047 PARTICLE_SYSTEMS = 0x2000,
1048 CONTACT_DATA = 0x4000,
1049 PLOTSYSTEM = 0x8000,
1050 CLEANUP_ALL = LISTENERS | SYSTEM | SPACE | MATERIALS | ASSEMBLIES | PARTICLE_SYSTEMS | CONTACT_DATA | PLOTSYSTEM
1060 READ_TIMESTEP = 0x1,
1061 READ_TIMESTAMP = 0x2,
1064 READ_ALL = READ_TIMESTEP + READ_TIMESTAMP + READ_GRAVITY + READ_SOLVER,
1065 READ_DEFAULT = READ_TIMESTEP + READ_GRAVITY + READ_SOLVER
1285 size_t write( std::ostream& stream,
bool binary )
const;
1346 bool replaceUsingCache =
false );
1356 bool useCompression =
false,
1357 bool waitForSynchronization =
true );
1390 #if AGX_USE_WEB_DEBUGGER()
1395 agxSDK::RemoteDebugRenderProxyFactory* getWebDebugger();
1401 const agxSDK::RemoteDebugRenderProxyFactory* getWebDebugger()
const;
1567 const agx::SolveModelRefVector& getSolveModels()
const;
1569 #if AGX_USE_WEBSOCKETS()
1570 void setRemoteSolver(agx::RemoteSolver* remoteSolver);
1638 bool allowCreateParticles()
const;
1672 const agx::String& journalName =
"Profiling.agxJournal");
1692 friend class GuiEventAdapterImplementation;
1714 void initConfiguration();
1717 void updateStatisticsEnable();
1719 void setEnableComputeAllConstraintForces(
bool flag);
1720 bool getEnableComputeAllConstraintForces()
const;
1723 void resetGraphStatistics();
1729 void setupStatisticsLogging();
1731 void updateConstraintForceData();
1733 void createUpdateTask();
1735 void generateContactMaterials();
1737 void prepareContacts();
1738 void triggerParticleContactSensors();
1739 void triggerPreStepEvents();
1740 void triggerPostStepEvents();
1741 void triggerLastStepEvents();
1742 void terrainPostUpdate();
1744 void resetDirtyMaterials();
1745 void updateRemoteDebugger();
1746 void recordStatistics();
1747 void recordPlaybackStatistics();
1748 void recordParticleCount();
1749 void recordWarmStartingData();
1750 void printStatistics();
1754 void pruneContacts();
1755 void contactPointReduction();
1756 void updateSleepState();
1757 void triggerPreCollideStepEvent();
1758 void triggerSeparationContactEventListeners();
1759 void triggerContactEventListeners();
1760 void assignContactMaterials();
1763 void applyPreIntegrationSettings();
1766 friend class agx::Solver;
1767 void registerParticleSystemPointers();
1768 void unregisterParticleSystemPointers();
1772 class StatisticsWriter;
1776 #if AGX_USE_WEBSOCKETS()
1777 friend class agx::RemoteSolver;
1781 void setHasJournal(
bool flag);
1782 void preStoreSynchronization();
1785 StatisticsWriter* m_statWriter;
1798 bool m_stepToStarted;
1800 EventManagerRef m_eventManager;
1803 agxControl::ActionManagerRef m_actionManager;
1823 bool m_preIntegrate;
1825 bool m_allowCreateParticles;
1833 agx::SolveModelTable m_solveModelTable;
1834 agx::SolveModelRefVector m_solveModels;
1837 bool m_clearRenderTemporaries;
1839 agxData::FrameRef m_journalLastWrittenFrame;
1844 void* m_remoteSolver;
1849 bool m_enableComputeAllConstraintForces;
1850 bool m_inDestructor;
1880 bool m_disableGeometryAutoAdd;
1888 agxSDK::TerrainManagerRef m_terrainManager;
1890 #if AGX_USE_WEB_DEBUGGER()
1903 return m_space.
get();
1908 return m_space.
get();
1913 return m_system.
get();
1918 return m_system.
get();
1923 if (m_system)
return m_system->getTimeGovernor()->getTimeStep();
1939 return m_allowCreateParticles;
1944 return m_solveModels;
1947 template<
typename T >
1953 template<
typename T >
1956 return dynamic_cast< const T*
>( this->
getConstraint( uuid ) );
1959 template<
typename T >
1965 template<
typename T >
1968 return dynamic_cast< const T*
>( this->
getConstraint( name ) );
1973# 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.
agx::UInt getFrame() const
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!
void triggerPostIntegrateEvents()
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()
void setFrame(agx::UInt frame)
Set the current simulation frame to a specific value (mostly for internal use or during a reset of a ...
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.