AGX Dynamics 2.40.0.0
Loading...
Searching...
No Matches
agxTerrain::ClamShellBucket Class Reference

ClamShellBucket is a CompositeShovel class that models a clamshell bucket that consists of two opposing shovels. More...

#include <ClamShellBucket.h>

+ Inheritance diagram for agxTerrain::ClamShellBucket:

Public Types

enum class  SHOVEL : agx::UInt16 { FIRST = 0 , SECOND = 1 }
 Enum specifing the available shovels in a ClamShellBucket. More...
 
- Public Types inherited from agx::Component
typedef Event2< Component *, Object * > ObjectEvent
 Event when adding removing child objects.
 
typedef Callback1< Object * > TraverseCallback
 
- Public Types inherited from agx::Object
typedef agx::observer_ptr< const EventEventConstObserver
 
typedef agx::ref_ptr< const EventEventConstRef
 
typedef agx::observer_ptr< EventEventObserver
 
typedef agx::Vector< EventObserverEventObserverVector
 
typedef agx::VectorPOD< Event * > EventPtrVector
 
typedef agx::ref_ptr< EventEventRef
 
typedef agx::Vector< EventRefEventRefVector
 

Public Member Functions

 ClamShellBucket (agxTerrain::Shovel *shovel1, agxTerrain::Shovel *shovel2)
 Constructor.
 
agx::Real computeCurrentDistance () const
 
agxCollide::GeometryContactPtrVector getAggregateContacts (agxSDK::Simulation *simulation)
 
agx::Real getClosedThreshold () const
 
ShovelgetShovel (SHOVEL i) const
 
agx::Real getSoilMassInBucket () const
 
bool isClosed () const
 
virtual bool isValid () const override
 
void setClosedThreshold (agx::Real closedThreshold)
 The threshold value for the distance between the bucket shovel's cutting edges that determines when the shovel is in a closed state.
 
- Public Member Functions inherited from agxTerrain::CompositeShovel
 CompositeShovel ()
 Default constructor.
 
virtual void addNotification () override
 Add notification when a shovel is added to a simulation.
 
bool getEnable () const
 Access the state enable flag.
 
virtual bool isValid () const override
 
virtual void removeNotification () override
 Remove notification when this shovel is removed from a simulation.
 
void setEnable (bool enable)
 Change state enable of this shovel.
 
- Public Member Functions inherited from agxSDK::TerrainToolInstance
void addEventListener (agxSDK::StepEventListener *listener)
 Add a StepEventListener which follows the shovel - ie added and removed from a simulation at the same time as the shovel is added/removed from the simulation.
 
agxSDK::SimulationgetSimulation () const
 
virtual bool isValid () const =0
 
bool removeEventListener (agxSDK::StepEventListener *listener)
 Remove an added StepEventListener from the shovel.
 
- Public Member Functions inherited from agx::Component
 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::DevicegetDevice ()
 
template<typename T >
T * getDevice ()
 
const agx::DevicegetDevice () const
 
template<typename T >
const T * getDevice () const
 
size_t getNumObjects (const agx::Name &name) const
 
agx::ObjectgetObject (const agx::Name &name, agx::Model *model, size_t index=0)
 
const agx::ObjectgetObject (const agx::Name &name, agx::Model *model, size_t index=0) const
 
agx::ObjectgetObject (const agx::Name &name, size_t index=0)
 
template<typename T >
T * getObject (const agx::Name &name, size_t index=0)
 
const agx::ObjectgetObject (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::ObjectRefVectorgetObjects () const
 
template<typename T >
void getObjects (agx::ObjectPtrVector &result, bool recursive=false) const
 
void getObjects (agx::ObjectPtrVector &result, const agx::Model *model, bool recursive=false) const
 
virtual ObjectgetResourceImpl (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)
 
- Public Member Functions inherited from agx::Object
 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::ObjectgetAutoScopedResource (const agx::Path &path, agx::Model *model=nullptr)
 
const agx::ObjectgetAutoScopedResource (const agx::Path &path, agx::Model *model=nullptr) const
 
agx::ObjectgetContext ()
 
template<typename T >
T * getContext ()
 
const agx::ObjectgetContext () const
 
template<typename T >
const T * getContext () const
 
agx::UInt32 getId () const
 
const agx::NamegetImplementationName () const
 
agx::ModelgetModel ()
 
const agx::ModelgetModel () const
 
const agx::NamegetName () const
 
agx::ObjectgetNextSibling ()
 
const agx::ObjectgetNextSibling () 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::ObjectgetResource (const agx::Path &path, agx::Model *model=nullptr)
 
const agx::ObjectgetResource (const agx::Path &path, agx::Model *model=nullptr) const
 
virtual agx::ObjectgetResourceImpl (const agx::Path &path, agx::Model *model)
 
agx::ObjectgetRootContext ()
 
const agx::ObjectgetRootContext () 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
 
- Public Member Functions inherited from agx::Referenced
 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.
 
Referencedoperator= (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.
 
- Public Member Functions inherited from agxStream::Serializable
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.
 

Static Public Member Functions

static ClamShellBucketfind (const agxSDK::Simulation *simulation, const agx::Name &name)
 Find first shovel with given name.
 
static ClamShellBucketfind (const agxSDK::Simulation *simulation, const agx::Uuid &uuid)
 Find shovel with given UUID.
 
static ClamShellBucketPtrVector findAll (const agxSDK::Simulation *simulation)
 Finds all shovels in the given simulation.
 
- Static Public Member Functions inherited from agx::Component
static Component_load (TiXmlElement *eComponent, Device *device)
 
static agx::ModelClassModel ()
 
static Componentload (const Path &path, const Name &implementation, Device *device, const Path &_namespace=Path())
 
static Componentload (const String &path, const Path &_namespace=Path())
 
static Componentload (const String &path, Device *device, const Path &_namespace=Path())
 
static Componentload (TiXmlElement *eComponent, Device *device)
 
- Static Public Member Functions inherited from agx::Object
static agx::ModelClassModel ()
 
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 Objectload (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 Objectload (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 Objectload (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).
 
- Static Public Member Functions inherited from agx::Referenced
template<typename T >
static bool ValidateCast (const Referenced *object)
 
- Static Public Member Functions inherited from agxStream::Serializable
static void setEnableUuidGeneration (bool flag)
 Specify if there should be UUID:s generated for each new Serializable object. By default it is enabled.
 

Protected Member Functions

 ClamShellBucket ()
 
virtual ~ClamShellBucket ()
 
void updateAggregateContacts ()
 
void updateClosedState ()
 
void updateShovelSettings ()
 
- Protected Member Functions inherited from agxTerrain::CompositeShovel
virtual ~CompositeShovel ()
 
bool isChildShovelsValid () const
 
- Protected Member Functions inherited from agxSDK::TerrainToolInstance
 TerrainToolInstance ()
 Default constructor.
 
virtual ~TerrainToolInstance ()
 Reference counted object - protected destructor.
 
virtual void addNotification ()
 
virtual void last ()
 
virtual void post ()
 
virtual void pre ()
 
virtual void preCollide ()
 
virtual void removeNotification ()
 
- Protected Member Functions inherited from agx::Component
virtual ~Component ()
 
String expandAutoCompletionMatch (const String &query, const StringVector &matchingNames) const
 
void setDevice (Device *device)
 
- Protected Member Functions inherited from agx::Object
virtual ~Object ()
 
- Protected Member Functions inherited from agx::Referenced
virtual ~Referenced ()
 Destructor.
 
void allocateObserverVector () const
 
void deleteUsingDeleteHandler () const
 
- Protected Member Functions inherited from agxStream::Serializable
 Serializable ()
 Default constructor.
 
 Serializable (const Serializable &other)
 Copy constructor.
 
void generateUuid ()
 

Protected Attributes

agx::Real m_closedThreshold
 
ClamShellDebugRenderSettingsRef m_debugRenderSettings
 
bool m_isClosed
 
- Protected Attributes inherited from agxTerrain::CompositeShovel
Flags m_flags
 
agxTerrain::ShovelRefVector m_terrainTools
 
- Protected Attributes inherited from agx::Referenced
Mutex m_mutex
 
ObserverContainer m_observers
 
AtomicValue m_refCount
 

Additional Inherited Members

- Public Attributes inherited from agx::Component
ObjectEvent addObjectEvent
 
ObjectEvent removeObjectEvent
 
- Protected Types inherited from agxTerrain::CompositeShovel
using Flags = agx::BitState< StateFlags, agx::UInt32 >
 
enum  StateFlags : agx::UInt32 { ENABLED = 1 << 0 }
 
- Static Protected Member Functions inherited from agx::Referenced
static DeleteHandlergetDeleteHandler ()
 
static void setDeleteHandler (DeleteHandler *handler)
 Internal: Set a DeleteHandler to which deletion of all referenced counted objects will be delegated to.
 

Detailed Description

ClamShellBucket is a CompositeShovel class that models a clamshell bucket that consists of two opposing shovels.

This class manages shovel functionality when two shovels have overlapping soil aggregates. Examples of this is making sure we do not double count particles and also to create contacts between the opposing shovel aggregates when the bucket is closed.

The ClamShellBucket is considered closed when the distance between the cutting edges between the two shovels in the clam shell bucket is below a specified threshold which is initially estimated from the cutting edges of the supplied shovels.

Definition at line 54 of file ClamShellBucket.h.

Member Enumeration Documentation

◆ SHOVEL

Enum specifing the available shovels in a ClamShellBucket.

Enumerator
FIRST 
SECOND 

Definition at line 84 of file ClamShellBucket.h.

Constructor & Destructor Documentation

◆ ClamShellBucket() [1/2]

agxTerrain::ClamShellBucket::ClamShellBucket ( agxTerrain::Shovel shovel1,
agxTerrain::Shovel shovel2 
)

Constructor.

Parameters
shovel1- one of the shovels in the ClamShellBucket
shovel2- one of the shovels in the ClamShellBucket
Note
- the closedThreshold is intially estimated from the cutting edges of the supplied shovels.

◆ ClamShellBucket() [2/2]

agxTerrain::ClamShellBucket::ClamShellBucket ( )
protected

◆ ~ClamShellBucket()

virtual agxTerrain::ClamShellBucket::~ClamShellBucket ( )
protectedvirtual

Member Function Documentation

◆ computeCurrentDistance()

agx::Real agxTerrain::ClamShellBucket::computeCurrentDistance ( ) const
Returns
the computed distance between the cutting edges of the shovels in the ClamShellBuckets.

◆ find() [1/2]

static ClamShellBucket * agxTerrain::ClamShellBucket::find ( const agxSDK::Simulation simulation,
const agx::Name name 
)
static

Find first shovel with given name.

Parameters
simulation- simulation the shovel is part of
name- name of the shovel
Returns
shovel if found - otherwise nullptr

◆ find() [2/2]

static ClamShellBucket * agxTerrain::ClamShellBucket::find ( const agxSDK::Simulation simulation,
const agx::Uuid uuid 
)
static

Find shovel with given UUID.

Parameters
simulation- simulation the shovel is part of
uuid- UUID of the shovel
Returns
shovel if found - otherwise nullptr

◆ findAll()

static ClamShellBucketPtrVector agxTerrain::ClamShellBucket::findAll ( const agxSDK::Simulation simulation)
static

Finds all shovels in the given simulation.

Parameters
simulation- simulation with shovels.
Returns
vector of shovels

◆ getAggregateContacts()

agxCollide::GeometryContactPtrVector agxTerrain::ClamShellBucket::getAggregateContacts ( agxSDK::Simulation simulation)

◆ getClosedThreshold()

agx::Real agxTerrain::ClamShellBucket::getClosedThreshold ( ) const
Returns
the threshold value that determines when the shovel is in a closed state.

◆ getShovel()

Shovel * agxTerrain::ClamShellBucket::getShovel ( SHOVEL  i) const
Returns
one of the two shovels in the ClamShellBucket (0 or 1).

◆ getSoilMassInBucket()

agx::Real agxTerrain::ClamShellBucket::getSoilMassInBucket ( ) const
Returns
the soil aggregate mass inside the clamshell bucket.

◆ isClosed()

bool agxTerrain::ClamShellBucket::isClosed ( ) const
Returns
true if the clamshell bucket is in a closed state. (See: getClosedThreshold())

◆ isValid()

virtual bool agxTerrain::ClamShellBucket::isValid ( ) const
overridevirtual
Returns
true if the clamshell bucket is in a valid state.

Reimplemented from agxTerrain::CompositeShovel.

◆ setClosedThreshold()

void agxTerrain::ClamShellBucket::setClosedThreshold ( agx::Real  closedThreshold)

The threshold value for the distance between the bucket shovel's cutting edges that determines when the shovel is in a closed state.

Parameters
closedThreshold- the threshold to be used to determine when the ClamShellBucket to be closed.

◆ updateAggregateContacts()

void agxTerrain::ClamShellBucket::updateAggregateContacts ( )
protected

◆ updateClosedState()

void agxTerrain::ClamShellBucket::updateClosedState ( )
protected

◆ updateShovelSettings()

void agxTerrain::ClamShellBucket::updateShovelSettings ( )
protected

Member Data Documentation

◆ m_closedThreshold

agx::Real agxTerrain::ClamShellBucket::m_closedThreshold
protected

Definition at line 192 of file ClamShellBucket.h.

◆ m_debugRenderSettings

ClamShellDebugRenderSettingsRef agxTerrain::ClamShellBucket::m_debugRenderSettings
protected

Definition at line 194 of file ClamShellBucket.h.

◆ m_isClosed

bool agxTerrain::ClamShellBucket::m_isClosed
protected

Definition at line 193 of file ClamShellBucket.h.


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