The custom gravity field allow a user to derive from this class and implement their own gravity function based on the center of mass of a particle/rigid body.
More...
|
| | CustomGravityField () |
| | Constructor.
|
| |
| | AGXSTREAM_DECLARE_ABSTRACT_SERIALIZABLE (agx::CustomGravityField) |
| |
| virtual agx::Vec3 | calculateGravity (const agx::Vec3 &position) const override |
| | Given position, a gravity acceleration will be calculated and returned.
|
| |
| virtual Task * | createParticleSystemTask () override |
| | Internal use.
|
| |
| virtual Task * | createRigidBodyTask () override |
| | Internal use.
|
| |
| | GravityField () |
| |
| | AGXSTREAM_DECLARE_ABSTRACT_SERIALIZABLE (agx::GravityField) |
| |
| virtual agx::Vec3 | calculateGravity (const agx::Vec3 &position) const =0 |
| | Given position, a gravity acceleration will be calculated and returned.
|
| |
| virtual Task * | createParticleSystemTask ()=0 |
| | Internal use.
|
| |
| virtual Task * | createRigidBodyTask ()=0 |
| | Internal use.
|
| |
| | Component (const agx::Name &name=agx::Name(), agx::Model *model=agx::Component::ClassModel(), agx::Device *device=nullptr) |
| |
| virtual void | addObject (agx::Object *object, bool assignContext=true) |
| | Add an object to the component.
|
| |
| virtual String | autoComplete (const String &partialName, StringVector &matchingNames) const |
| |
| virtual void | buildNavigationTree (agxJson::Value &eNode) const override |
| |
| void | configure (Model *model) |
| |
| virtual void | configure (TiXmlElement *eComponent) override |
| |
| agx::Device * | getDevice () |
| |
| template<typename T > |
| T * | getDevice () |
| |
| const agx::Device * | getDevice () const |
| |
| template<typename T > |
| const T * | getDevice () const |
| |
| size_t | getNumObjects (const agx::Name &name) const |
| |
| agx::Object * | getObject (const agx::Name &name, agx::Model *model, size_t index=0) |
| |
| const agx::Object * | getObject (const agx::Name &name, agx::Model *model, size_t index=0) const |
| |
| agx::Object * | getObject (const agx::Name &name, size_t index=0) |
| |
| template<typename T > |
| T * | getObject (const agx::Name &name, size_t index=0) |
| |
| const agx::Object * | getObject (const agx::Name &name, size_t index=0) const |
| |
| template<typename T > |
| const T * | getObject (const agx::Name &name, size_t index=0) const |
| |
| const agx::ObjectRefVector & | getObjects () const |
| |
| template<typename T > |
| void | getObjects (agx::ObjectPtrVector &result, bool recursive=false) const |
| | Returns All child objects of a specified type in the result container.
|
| |
| void | getObjects (agx::ObjectPtrVector &result, const agx::Model *model, bool recursive=false) const |
| |
| virtual Object * | getResourceImpl (const Path &path, agx::Model *model) override |
| |
| virtual void | printSubtree () const override |
| |
| void | printSubtree (std::ostream &stream, int depth=0) const |
| |
| virtual void | rebind () override |
| |
| void | removeAllObjects () |
| | Remove all components.
|
| |
| virtual void | removeObject (agx::Object *object) |
| | Remove an object from the component.
|
| |
| void | removeObject (const agx::Name &name, size_t index=0) |
| | Remove an object with a specified name (and optional index) from the component.
|
| |
| virtual void | snapshot (TiXmlNode *eParent, const String &directory) const override |
| |
| void | traverse (ComponentVisitor *) |
| |
| void | traverse (const TraverseCallback &callback) |
| |
| | Object (const Name &name=Name(), Model *model=Object::ClassModel()) |
| |
| void | addListener (EventListener *listener) |
| |
| virtual void | buildNavigationTree (agxJson::Value &eNode) const |
| |
| virtual void | configure (TiXmlElement *) |
| |
| agx::String | fullName () const |
| |
| agx::String | fullPath () const |
| |
| agx::String | fullPath (const agx::Object *root) const |
| |
| template<typename T > |
| T * | getAutoScopedResource (const agx::Path &path) |
| |
| template<typename T > |
| const T * | getAutoScopedResource (const agx::Path &path) const |
| |
| agx::Object * | getAutoScopedResource (const agx::Path &path, agx::Model *model=nullptr) |
| |
| const agx::Object * | getAutoScopedResource (const agx::Path &path, agx::Model *model=nullptr) const |
| |
| agx::Object * | getContext () |
| |
| template<typename T > |
| T * | getContext () |
| |
| const agx::Object * | getContext () const |
| |
| template<typename T > |
| const T * | getContext () const |
| |
| agx::UInt32 | getId () const |
| |
| const agx::Name & | getImplementationName () const |
| |
| agx::Model * | getModel () |
| |
| const agx::Model * | getModel () const |
| |
| const agx::Name & | getName () const |
| |
| agx::Object * | getNextSibling () |
| |
| const agx::Object * | getNextSibling () const |
| |
| agx::Path | getPath () const |
| |
| agx::Path | getPath (const agx::Object *root) const |
| |
| template<typename T > |
| T * | getResource (const agx::Path &path) |
| |
| template<typename T > |
| const T * | getResource (const agx::Path &path) const |
| |
| agx::Object * | getResource (const agx::Path &path, agx::Model *model=nullptr) |
| |
| const agx::Object * | getResource (const agx::Path &path, agx::Model *model=nullptr) const |
| |
| virtual agx::Object * | getResourceImpl (const agx::Path &path, agx::Model *model) |
| |
| agx::Object * | getRootContext () |
| |
| const agx::Object * | getRootContext () const |
| |
| bool | hasListener (EventListener *listener) |
| |
| bool | hasParent (const agx::Object *node) const |
| |
| bool | isUnique () const |
| |
| virtual void | printSubtree () const |
| |
| virtual void | rebind () |
| |
| void | removeListener (EventListener *listener) |
| |
| virtual void | save (TiXmlElement *) const |
| |
| virtual void | setContext (agx::Object *context) |
| |
| void | setId (UInt32 id) |
| |
| void | setModel (agx::Model *model) |
| | Set the object model (handled automatically).
|
| |
| void | setName (const agx::Name &name) |
| | Set the name of the object.
|
| |
| virtual void | snapshot (TiXmlNode *, const String &) const |
| |
| | Referenced () |
| | Default constructor.
|
| |
| | Referenced (const Referenced &) |
| |
| template<typename T > |
| T * | as () |
| | Subclass casting.
|
| |
| template<typename T > |
| const T * | as () const |
| |
| template<typename T > |
| T * | asSafe () |
| | Safe subclass casting, return nullptr if template type does not match.
|
| |
| template<typename T > |
| const T * | asSafe () const |
| |
| int | getReferenceCount () const |
| |
| template<typename T > |
| bool | is () const |
| | Subclass test.
|
| |
| Referenced & | operator= (const Referenced &) |
| | Assignment operator. Will increment the number of references to the referenced object.
|
| |
| void | reference (void *ptr=nullptr) const |
| | Explicitly increment the reference count by one, indicating that this object has another pointer which is referencing it.
|
| |
| void | unreference (void *ptr=nullptr) const |
| | Decrement the reference count by one, indicating that a pointer to this object is referencing it.
|
| |
| void | unreference_nodelete () const |
| | Decrement the reference count by one, indicating that a pointer to this object is referencing it.
|
| |
| virtual | ~Serializable () |
| | Destructor for normal C++ use but hidden from SWIG bindings.
|
| |
| virtual const char * | getClassName () const |
| |
| bool | getEnableSerialization () const |
| |
| bool | getEnableUuidGeneration () |
| |
| agx::UInt32 | getIndex () const |
| | This index is given at creation of this object.
|
| |
| virtual StorageAgent * | getStorageAgent () const =0 |
| |
| agx::Uuid | getUuid () const |
| |
| bool | isFinished () const |
| |
| void | setEnableSerialization (bool flag) |
| | Set to false to disable serialization of this object.
|
| |
| void | setFinished () |
| | Tells this class that it is restored correctly and should not be deleted during destruction of an Archive.
|
| |
| void | setUuid (const agx::Uuid &uuid) |
| | Explicitly set a Uuid on a serializable object.
|
| |
|
| typedef Event2< Component *, Object * > | ObjectEvent |
| | Event when adding removing child objects.
|
| |
| typedef Callback1< Object * > | TraverseCallback |
| |
| typedef agx::observer_ptr< const Event > | EventConstObserver |
| |
| typedef agx::ref_ptr< const Event > | EventConstRef |
| |
| typedef agx::observer_ptr< Event > | EventObserver |
| |
| typedef agx::Vector< EventObserver > | EventObserverVector |
| |
| typedef agx::VectorPOD< Event * > | EventPtrVector |
| |
| typedef agx::ref_ptr< Event > | EventRef |
| |
| typedef agx::Vector< EventRef > | EventRefVector |
| |
| static Component * | _load (TiXmlElement *eComponent, Device *device) |
| |
| static agx::Model * | ClassModel () |
| |
| static Component * | load (const Path &path, const Name &implementation, Device *device, const Path &_namespace=Path()) |
| |
| static Component * | load (const String &path, const Path &_namespace=Path()) |
| |
| static Component * | load (const String &path, Device *device, const Path &_namespace=Path()) |
| |
| static Component * | load (TiXmlElement *eComponent, Device *device) |
| |
| static agx::Model * | ClassModel () |
| |
| static agx::String | generateName (const agx::String &bindPath) |
| |
| static const HashSet< Object * > & | getActiveObjects () |
| |
| static bool | getEnableRebind () |
| | Should rebinding be allowed? Right now a global setting.
|
| |
| static Object * | load (const String &path, Device *device, const String &type, const String &attribute, const String &value) |
| |
| template<typename T > |
| static T * | load (const String &path, Device *device, const String &type, const String &attribute, const String &value) |
| |
| static Object * | load (const String &path, Device *device, const String &type="", size_t instance=0) |
| |
| template<typename T > |
| static T * | load (const String &path, Device *device, const String &type="", size_t instance=0) |
| |
| static void | load (const String &path, Device *device, ObjectPtrVector &loadedObjects) |
| |
| static Object * | load (TiXmlElement *eObject, Device *device) |
| |
| template<typename T > |
| static T * | load (TiXmlElement *eObject, Device *device) |
| |
| static TiXmlDocument | openDocument (const String &path) |
| |
| static void | setEnableRebind (bool flag) |
| | Sets if rebinding of objects should be allowed (Right now a global setting).
|
| |
| template<typename T > |
| static bool | ValidateCast (const Referenced *object) |
| |
| static void | setEnableUuidGeneration (bool flag) |
| | Specify if there should be UUID:s generated for each new Serializable object. By default it is enabled.
|
| |
| ObjectEvent | addObjectEvent |
| |
| ObjectEvent | removeObjectEvent |
| |
| static DeleteHandler * | getDeleteHandler () |
| |
| static void | setDeleteHandler (DeleteHandler *handler) |
| | Internal: Set a DeleteHandler to which deletion of all referenced counted objects will be delegated to.
|
| |
| Mutex | m_mutex |
| |
| ObserverContainer | m_observers |
| |
| AtomicValue | m_refCount |
| |
The custom gravity field allow a user to derive from this class and implement their own gravity function based on the center of mass of a particle/rigid body.
Compared to UniformGravityField and PointGravityField this implementation will give some overhead due to the virtual call to calculateGravity for each object. So for a very large set of objects, such as hundreds of thousands of particles this might slow down the simulation somewhat.
Also the calculateGravity method will be called from multiple threads if AGX is using more than one thread so make sure it is thread safe. It should as it is a const method.
Definition at line 34 of file CustomGravityField.h.