AGX Dynamics 2.42.2.1
Loading...
Searching...
No Matches
RenderManager.h
Go to the documentation of this file.
1/*
2Copyright 2007-2025. Algoryx Simulation AB.
3
4All AGX source code, intellectual property, documentation, sample code,
5tutorials, scene files and technical white papers, are copyrighted, proprietary
6and confidential material of Algoryx Simulation AB. You may not download, read,
7store, distribute, publish, copy or otherwise disseminate, use or expose this
8material unless having a written signed agreement with Algoryx Simulation AB, or having been
9advised so by Algoryx Simulation AB for a time limited evaluation, or having purchased a
10valid commercial license from Algoryx Simulation AB.
11
12Algoryx Simulation AB disclaims all responsibilities for loss or damage caused
13from using this software, unless otherwise stated in written agreements with
14Algoryx Simulation AB.
15*/
16#pragma once
17
19#include <agx/Referenced.h>
20#include <agx/HashVector.h>
21#include <agx/AffineMatrix4x4.h>
22#include <agxCollide/Space.h>
23
27#include <agxRender/Graph.h>
28
29namespace agxSDK
30{
31 class Simulation;
32 class StatisticsEntries;
33}
34
35namespace agxRender
36{
37
38 class RenderProxyFactory;
39 class RenderProxy;
40 class SpaceListener;
41 class SphereProxy;
42 class BoxProxy;
43 class LineProxy;
44 class HeightFieldProxy;
45 class CylinderProxy;
46 class HollowCylinderProxy;
47 class ConeProxy;
48 class TruncatedConeProxy;
49 class HollowConeProxy;
50 class CapsuleProxy;
51 class TextProxy;
52 class PlaneProxy;
53 class GraphRenderer;
54 class Graph;
55
57 enum Flags {
64 RENDER_BODIES = 1 << 6,
67 RENDER_TEXT = 1 << 9,
69 RENDER_SENSORS = 1 << 11,
70 RENDER_MESH = 1 << 12,
92 };
93
95
106 {
107 public:
108
114
119 void update();
120
126
131
136 void setEnable( bool flag );
137
141 bool getEnable( ) const;
142
146 bool isEnabled() const;
147
152 void setAlpha( float alpha );
153
157 float getAlpha( ) const;
158
163 void disableFlags( unsigned int flags );
164
169 void enableFlags( unsigned int flags );
170
174 bool isEnabledFlags( unsigned int flags ) const;
175
179 void setFlags( unsigned int flags );
180
186
192 SphereProxy* acquireSphere( float radius );
193
199 BoxProxy* acquireBox( const agx::Vec3& halfExtents );
200
206 LineProxy* acquireLine( const agx::Vec3& p1, const agx::Vec3& p2 );
207
215 TextProxy* acquireText( const agx::String& text, const agx::Vec3& pos, float size=1 );
216
222 PlaneProxy* acquirePlane( const agx::Vec3& normal, agx::Real distance );
223
230 CylinderProxy* acquireCylinder( float radius, float height );
231
239 CylinderProxy* acquireCylinder( const agx::Vec3& begin, const agx::Vec3& end, float radius );
240
247 HollowCylinderProxy* acquireHollowCylinder( float radius, float height, float thickness );
248
249
257 ConeProxy* acquireCone( const agx::Vec3& p1, const agx::Vec3& p2, float radius );
258
267 TruncatedConeProxy* acquireTruncatedCone( const agx::Vec3& p1, const agx::Vec3& p2, float topRadius, float bottomRadius );
268
278 HollowConeProxy* acquireHollowCone( const agx::Vec3& p1, const agx::Vec3& p2, float topRadius, float bottomRadius, float thickness );
279
286 CapsuleProxy* acquireCapsule( float radius, float height );
287
295 CapsuleProxy* acquireCapsule( const agx::Vec3& begin, const agx::Vec3& end, float radius );
296
304
312
318 agxRender::WireRenderProxy* acquireWire( float radius, const agx::Vec3& color );
319
325 void clear( bool clearText = true, bool clearGlobalProxies = true );
326
331 void addRenderable( Renderable* renderable );
332
336 bool hasRenderable( Renderable* renderable ) const;
337
342 bool removeRenderable( Renderable* renderable );
343
344 void acquireGeometry( const agxCollide::Geometry* geometry, const agx::Vec3& color );
345
352
358
365 void setScaleFactor( float scaleFactor = 1.0f );
366
370 float getScaleFactor() const;
371
372 public:
373 typedef std::pair< const agx::ParticleSystem*, agxRender::RenderProxyRef > ConstParticleSystemPtrRenderProxyPtrPair;
375
376 agxSDK::Simulation* getSimulation() { return m_simulation; }
377
378 protected:
379
380
384 void flush();
385
386 friend class SpaceListener;
387 friend class agxCollide::Space;
388 friend class agxSDK::Simulation;
390
391
396
401
402 void add( const agx::ParticleSystem* particleSystem );
403 void remove( const agx::ParticleSystem* particleSystem );
404
411 void add( const agxCollide::Geometry* geometry, const agx::Vec3& color = agx::Vec3( -1, 0, 0 ), bool addToProxies = true );
412
420 RenderProxy* add( agxCollide::Shape* shape, const agxCollide::Geometry* geometry, const agx::Vec3& color = agx::Vec3( -1, 0, 0 ), bool addToProxies = true );
421
426 void remove( const agxCollide::Shape* shape );
427
432 void remove( const agxCollide::Geometry* geometry );
433
436
439
442
445
448
451
454
456 void renderObserverFrame(const agx::ObserverFrame* observerFrame);
457
459 void updateBodyProxies( agxData::EntityStorage* islandStorage = nullptr );
460
462 void updateShapeProxies(agxData::EntityStorage* islandStorage = nullptr );
463
466
469
472
473
476
479
482
484 void updateProxy( RenderProxy* proxy, agxData::EntityStorage* islandStorage = nullptr );
485
487 virtual ~RenderManager();
488
489 // Attributes
494 float m_alpha;
497
500
502
503 // Abstract base class for a ProxyCache
504 struct CacheBase {
505 CacheBase( RenderManager* mgr ) : m_mgr( mgr ) {
506 m_mgr->m_cacheVector.push_back( this );
507 }
508
509 virtual void clear() = 0;
510 virtual void flush() = 0;
511 virtual void setAlpha( float alpha ) = 0;
513
514 virtual ~CacheBase() {}
515 };
516
517
521 template <typename T>
523 {
524 public:
525
529
531 PrimitiveCache( RenderManager* mgr ) : CacheBase( mgr ), m_index( 0 ) {}
532
537
541 void flush() {
542 for ( size_t i = m_index; i < m_pool.size(); i++ )
543 m_pool[i]->callOnChange( RenderProxy::REMOVE );
544
545 m_pool.resize( std::min( m_index, m_pool.size() ) );
546 m_index = 0;
547 }
548
553 void setAlpha( float alpha ) {
554 for ( size_t i = 0; i < m_pool.size(); i++ )
555 m_pool[i]->setAlpha( alpha );
556 }
557
561 void clear() {
562 for ( typename ProxyVector::iterator it = m_pool.begin(); it != m_pool.end(); ++it )
563 ( *it )->callOnChange( RenderProxy::REMOVE );
564 m_pool.clear( agx::Container::SHRINK_BUFFER );
565 m_index = 0;
566 }
567
569 virtual ~PrimitiveCache() {
570 clear();
571 }
572
573 iterator begin() { return m_pool.begin(); }
574 const_iterator begin() const { return m_pool.begin(); }
575
576 iterator end() { return m_pool.end(); }
577 const_iterator end() const { return m_pool.end(); }
578
579 protected:
580
582 size_t m_index;
583 };
584
588 template <typename T, typename P1>
590 {
591 public:
592
595
599 T* acquire( const P1& param );
600
601 private:
602
603 T* acquire() { return nullptr; }
604 };
605
608
622
624
631
638
639 };
640
641
642
643
646 {
647 public:
648
651
653 protected:
654
656 virtual ~SpaceListener();
657
660
669
672 };
673
674
675
676
677 // Implementation
678
679 inline bool RenderManager::getEnable( ) const
680 {
681 return m_enable;
682 }
683
684
685 inline float RenderManager::getAlpha( ) const
686 {
687 return m_alpha;
688 }
689
690
691 inline bool RenderManager::isEnabled() const
692 {
693 return getEnable();
694 }
695
696
699 {
700 return createSphere( radius );
701 }
703 inline BoxProxy* RenderProxyFactory::create( const agx::Vec3& halfExtents )
704 {
705 return createBox( halfExtents );
706 }
709 {
710 return createLine( agx::Vec3( agx::Real( 0 ) ), agx::Vec3( agx::Real( 1 ) ) );
711 }
714 {
715 return createCylinder( 1, 1 );
716 }
719 {
720 return createHollowCylinder( 1, 1, 0.1f );
721 }
722
725 {
726 return createCone( 1, 1 );
727 }
730 {
731 return createTruncatedCone( 1, 1, 1 );
732 }
735 {
736 return createHollowCone( 1, 1, 1, 0.1f );
737 }
738
741 {
742 return createCapsule( 1, 1 );
743 }
746 {
747 return createText( "", agx::Vec3( 0, 0, 0 ) );
748 }
751 {
752 return createPlane( agx::Vec3( 0, 0, 1 ), 0 );
753 }
754
757 {
758 return createContacts( contacts );
759 }
760
762 {
763 return createRigidBodies( enabledBodies );
764 }
765
767 {
768 return m_defaultRenderMode;
769 }
770
771 template< typename T>
773 {
774 if ( m_index < m_pool.size() ) {
775 T* proxy = m_pool[m_index++];
776
777 // Reset color, alpha and enabled state
778 proxy->reset();
779 return proxy;
780 } else {
781 const void* p = nullptr;
782 const T* px = static_cast<const T*>( p );
783 T* proxy = m_mgr->getProxyFactory()->create( px);
784 if (proxy) {
785 proxy->setEnable( true );
786 m_pool.push_back( proxy );
787 m_index = m_pool.size();
788 }
789 return proxy;
790 }
791 }
792
793 template< typename T, typename P1>
795 {
796 if ( this->m_index < this->m_pool.size() ) {
797 T* proxy = this->m_pool[this->m_index++];
798 // Reset color, alpha and enabled state
799 proxy->reset();
800 return proxy;
801 } else {
802 T* proxy = this->m_mgr->getProxyFactory()->create( param );
803 if (proxy) {
804 proxy->setEnable( true );
805 this->m_pool.push_back( proxy );
806 this->m_index = this->m_pool.size();
807 }
808 return proxy;
809 }
810 }
811}
812
#define AGX_DECLARE_POINTER_TYPES(type)
Definition: Referenced.h:254
#define AGXPHYSICS_EXPORT
The geometry representation used by the collision detection engine.
Definition: Geometry.h:92
Base class for a shape.
Definition: Shape.h:58
Class for listening for add/remove geometry events for an associated Space.
Definition: SpaceListener.h:30
This class contains all Geometries and performs Broad Phase and Narrow Phase collision detection to c...
Definition: Space.h:86
Data storage for a collection of entity instances of a specified EntityModel.
Definition: EntityStorage.h:73
Subclass that implements a BoxProxy.
Subclass that implements a CapsuleProxy.
Subclass that implements a ConeProxy.
Class holding contacts that makes it possible to batch render these objects.
Subclass that implements a CylinderProxy.
Class that implements a simple graph for plotting scalar values.
Definition: Graph.h:33
Subclass that implements a HollowConeProxy.
Subclass that implements a CylinderProxy.
Subclass that implements a LineProxy.
Subclass that implements a PlaneProxy.
Class for storing RenderProxies that are currently in use.
PrimitiveCache1(RenderManager *mgr)
Constructor.
Class for storing RenderProxies that are currently in use.
virtual ~PrimitiveCache()
Destructor: calls clear()
ProxyVector::const_iterator const_iterator
void clear()
Reduce number of proxies to 0.
agx::Vector< agx::ref_ptr< T > > ProxyVector
void flush()
Reduce size of pooled RenderProxy down to the number of used ones.
PrimitiveCache(RenderManager *mgr)
Constructor.
void setAlpha(float alpha)
Set alpha value for all proxies.
Class for managing the rendering of geometries, shapes, rigid bodies, constraints etc.
void renderAABBTrees(RenderProxy *proxy)
Render AABB tree for the specified proxy.
PrimitiveCache1< ContactsProxy, agxCollide::GeometryContactPtrVector > m_contactsCache
virtual ~RenderManager()
Destructor.
TextProxy * acquireText(const agx::String &text, const agx::Vec3 &pos, float size=1)
Create and return a new text sphere from the Proxy factory.
CylinderProxy * acquireCylinder(float radius, float height)
Create and return a new proxy Cylinder from the Proxy factory.
void addRenderable(Renderable *renderable)
Add custom render object.
RenderProxyFactory * getProxyFactory()
void setSpace(agxCollide::Space *space)
Associate a new space with this RenderManager, used by agxSDK::Simulation.
RenderProxy * add(agxCollide::Shape *shape, const agxCollide::Geometry *geometry, const agx::Vec3 &color=agx::Vec3(-1, 0, 0), bool addToProxies=true)
Add a shape to the set of active shape proxies.
void setAlpha(float alpha)
Loop over all proxies and set alpha value to the specified value, also sets the new default alpha val...
RenderableRefVector m_renderables
float getScaleFactor() const
agx::ref_ptr< SpaceListener > m_listener
CapsuleProxy * acquireCapsule(const agx::Vec3 &begin, const agx::Vec3 &end, float radius)
Create and return a new proxy Capsule from the Proxy factory.
PrimitiveCache< ConeProxy > m_coneCache
void enableFlags(unsigned int flags)
Enable all rendering flags specified in flags.
void updateAABBProxies()
Update all AABB (for geometries) proxies (boxes)
PrimitiveCache< PlaneProxy > m_planeCache
void add(const agxCollide::Geometry *geometry, const agx::Vec3 &color=agx::Vec3(-1, 0, 0), bool addToProxies=true)
Add a geometry (and its shapes) to the set of active shape proxies.
agxRender::GraphRef m_graph
void updateGraphs()
Update the graphs.
void updateParticleGeometryContactProxies()
BoxProxy * acquireBox(const agx::Vec3 &halfExtents)
Create and return a new proxy boxy from the Proxy factory.
PrimitiveCache1< RigidBodyBatchRenderProxy, const agx::RigidBodyPtrSetVector * > m_rbCache
LineProxy * acquireLine(const agx::Vec3 &p1, const agx::Vec3 &p2)
Create and return a new proxy Line from the Proxy factory.
bool isEnabledFlags(unsigned int flags) const
RenderProxy * findShapeProxy(const agxCollide::Shape *shape)
Try to locate a RenderProxy which is associated (already added) for the specified shape.
PrimitiveCache< CapsuleProxy > m_capsuleCache
PrimitiveCache< TruncatedConeProxy > m_truncatedConeCache
RenderProxyRef m_particleGeometryContactRenderProxy
void remove(const agxCollide::Shape *shape)
Remove a Shape from the set of shapes that should be rendered.
void setProxyFactory(RenderProxyFactory *factory)
Associate a new factory for creating RenderProxy's on request from the RenderManager.
ParticleSystemProxyContainer m_particleSystems
void updateObserverFrames()
Update all observer frames.
SphereProxy * acquireSphere(float radius)
Create and return a new proxy sphere from the Proxy factory.
CylinderProxy * acquireCylinder(const agx::Vec3 &begin, const agx::Vec3 &end, float radius)
Create and return a new proxy Cylinder from the Proxy factory.
RenderProxyHashVector m_proxies
void updateBodyProxies(agxData::EntityStorage *islandStorage=nullptr)
Go through all bodies and acquire proxies for them.
void updateConstraintProxies()
Update all constraints (call render)
void disableFlags(unsigned int flags)
Disable all rendering flags specified in flags.
void updateAllProxies(agxRender::RenderProxy::EventType eventType)
Fires event given eventType for all proxies.
RenderManager(agxSDK::Simulation *sim)
Constructor.
bool hasRenderable(Renderable *renderable) const
TruncatedConeProxy * acquireTruncatedCone(const agx::Vec3 &p1, const agx::Vec3 &p2, float topRadius, float bottomRadius)
Create and return a new proxy TruncatedCone from the Proxy factory.
PrimitiveCache< HollowConeProxy > m_hollowConeCache
agxRender::ContactsProxy * acquireContacts(const agxCollide::GeometryContactPtrVector &contacts, float scale)
Create and return a new proxy Contact from the Proxy factory.
agxData::BufferRef m_particleGeometryContactRadiusBuffer
PlaneProxy * acquirePlane(const agx::Vec3 &normal, agx::Real distance)
agxData::ValueRef m_particleContactBound
agx::HashVector< agx::UInt32, agx::ref_ptr< RenderProxy > > RenderProxyHashVector
CapsuleProxy * acquireCapsule(float radius, float height)
Create and return a new proxy Capsule from the Proxy factory.
void clearShapeProxies()
Remove all shape proxies.
void clear(bool clearText=true, bool clearGlobalProxies=true)
Clear all acquired RenderProxy.
void updateParticleSystemProxies()
Update particleSystems.
void remove(const agx::ParticleSystem *particleSystem)
void setScaleFactor(float scaleFactor=1.0f)
Set the scale of the debug rendering of contacts and center of mass, it will not affect already creat...
RenderProxyRefContainer m_globalProxies
E.g., wires that hold their proxy (i.e., not doing acquire to fetch their render proxy).
PrimitiveCache< TextProxy > m_textCache
void update()
Updates a new state for the rendering, acquires renderable objects for shapes, text etc.
HollowCylinderProxy * acquireHollowCylinder(float radius, float height, float thickness)
Create and return a new proxy HollowCylinder from the Proxy factory.
agx::Vector< RenderableRef > RenderableRefVector
void add(const agx::ParticleSystem *particleSystem)
PrimitiveCache< CylinderProxy > m_cylinderCache
PrimitiveCache< HollowCylinderProxy > m_hollowCylinderCache
agx::Vector< CacheBase * > CacheVector
void updateRenderables()
Call render for all Renderables.
bool removeRenderable(Renderable *renderable)
Remove custom render object renderable.
void setEnable(bool flag)
Enable/disable the whole rendering system.
void setDefaultRenderMode(RenderProxy::RenderMode mode)
Set the new default render mode for all RenderProxies activated after this call.
ConeProxy * acquireCone(const agx::Vec3 &p1, const agx::Vec3 &p2, float radius)
Create and return a new proxy Cone from the Proxy factory.
void updateContactProxies()
acquire proxies for contacts
void renderBoundingVolume(const agxCollide::Geometry *geometry)
Render bounding volume for the geom.
RenderProxyRef m_particleContactRenderProxy
agxSDK::Simulation * m_simulation
void acquireGeometry(const agxCollide::Geometry *geometry, const agx::Vec3 &color)
agxRender::WireRenderProxy * acquireWire(float radius, const agx::Vec3 &color)
Create and return a new proxy wire from the proxy factory.
void updateText()
Update only text proxies.
void updateProxy(RenderProxy *proxy, agxData::EntityStorage *islandStorage=nullptr)
Update size, color and transform.
agx::ref_ptr< RenderProxyFactory > m_factory
agxData::BufferRef m_particleContactRadiusBuffer
agx::Vector< ConstParticleSystemPtrRenderProxyPtrPair > ParticleSystemProxyContainer
void setFlags(unsigned int flags)
Set the render flags.
HollowConeProxy * acquireHollowCone(const agx::Vec3 &p1, const agx::Vec3 &p2, float topRadius, float bottomRadius, float thickness)
Create and return a new HollowConeProxy from the Proxy factory.
agxRender::RigidBodyBatchRenderProxy * acquireRigidBodies(const agx::RigidBodyPtrSetVector *enabledBodies, float scale)
Create and return a new proxy rigid body batch from the Proxy factory.
agx::Vector< agx::ref_ptr< agxRender::RenderProxy > > RenderProxyRefContainer
std::pair< const agx::ParticleSystem *, agxRender::RenderProxyRef > ConstParticleSystemPtrRenderProxyPtrPair
RenderProxy::RenderMode m_defaultRenderMode
PrimitiveCache< LineProxy > m_lineCache
PrimitiveCache1< BoxProxy, agx::Vec3 > m_boxCache
void renderObserverFrame(const agx::ObserverFrame *observerFrame)
Render an ObserverFrame.
PrimitiveCache1< SphereProxy, float > m_sphereCache
agxSDK::Simulation * getSimulation()
void addAllGeometries()
Go through space and add all geometries to the set of shapes that should be rendered.
agxData::ValueRef m_particleGeometryContactBound
void updateShapeProxies(agxData::EntityStorage *islandStorage=nullptr)
Update (transform and color) for all shapes.
void flush()
Based on the number of used RenderProxy (for each type), reduce the cache down to that size.
void remove(const agxCollide::Geometry *geometry)
Remove a Geometry (and its shapes) from the set of shapes that should be rendered.
Abstract class which is responsible for returning a pointer to a specified RenderProxy type.
SphereProxy * create(float radius)
Create a SphereProxy without arguments.
virtual CapsuleProxy * createCapsule(float radius, float height)=0
Interface for creating and returning a CapsuleProxy.
virtual LineProxy * createLine(const agx::Vec3 &p1, const agx::Vec3 &p2)=0
Interface for creating and returning a LineProxy.
virtual agxRender::RigidBodyBatchRenderProxy * createRigidBodies(const agx::RigidBodyPtrSetVector *)=0
Interface for creating and returning batch rendering of rigid bodies (cm).
virtual ConeProxy * createCone(float radius, float height)=0
Interface for creating and returning a ConeProxy.
virtual TextProxy * createText(const agx::String &text, const agx::Vec3 &pos, float size=1)=0
Interface for creating and returning TextProxy.
virtual BoxProxy * createBox(const agx::Vec3 &halfExtents)=0
Interface for creating and returning a BoxProxy.
virtual HollowConeProxy * createHollowCone(float topRadius, float bottomRadius, float height, float thickness)=0
Interface for creating and returning a HollowConeProxy.
virtual PlaneProxy * createPlane(const agx::Vec3 &normal, agx::Real distance)=0
Interface for creating and returning PlaneProxy.
virtual TruncatedConeProxy * createTruncatedCone(float topRadius, float bottomRadius, float height)=0
Interface for creating and returning a TruncatedConeProxy.
virtual agxRender::ContactsProxy * createContacts(const agxCollide::GeometryContactPtrVector &)=0
Interface for creating and returning ContactsProxy.
virtual HollowCylinderProxy * createHollowCylinder(float outerRadius, float height, float thickness)=0
Interface for creating and returning a HollowCylinderProxy.
virtual CylinderProxy * createCylinder(float radius, float height)=0
Interface for creating and returning a CylinderProxy.
RenderProxy::RenderMode getDefaultRenderMode() const
virtual SphereProxy * createSphere(float radius)=0
Interface for creating and returning a SphereProxy.
Abstract base class which encapsulated information for rendering a specific shape.
EventType
Enum for specifying a type of event which might change a RenderProxy.
Inherit from this class and implement the render() method to make it it self during debug rendering.
Definition: Renderable.h:38
Class holding rigid bodies that makes it possible to batch render these objects.
A listener that will be responsible for calling RenderManager every time a Shape is added/removed fro...
agxCollide::Space * getSpace()
void addShapeNotification(agxCollide::Space *space, agxCollide::Geometry *geometry, agxCollide::Shape *shape)
Called when a Shape is added to a Geometry which is associated to Space.
void removeShapeNotification(agxCollide::Space *space, agxCollide::Geometry *geometry, agxCollide::Shape *shape)
Called when a Shape is removed from a Geometry which is associated to Space.
virtual ~SpaceListener()
Destructor.
void removeGeometryNotification(agxCollide::Space *space, agxCollide::Geometry *geometry)
Called when a Geometry is removed to the associated Space.
void addNotification(agxCollide::Space *space)
Called when this listener is added to a Space.
SpaceListener(RenderManager *mgr)
Constructor.
agx::observer_ptr< agxCollide::Space > m_space
agx::observer_ptr< RenderManager > m_mgr
void addGeometryNotification(agxCollide::Space *space, agxCollide::Geometry *geometry)
Called when a Geometry is added to the associated Space.
Subclass that implements a SphereProxy.
Subclass that implements a TextProxy.
Subclass that implements a TruncatedConeProxy.
Simulation is a class that bridges the collision space agxCollide::Space and the dynamic simulation s...
Definition: Simulation.h:131
@ SHRINK_BUFFER
Buffer is deallocated and replaced by an newly allocated empty buffer.
Definition: Container.h:44
This class is a combined container which has the find complexity of a HashTable, deterministic iterat...
Definition: HashVector.h:41
With this class you can attach an ObserverFrame object relative to a RigidBody.
Definition: ObserverFrame.h:42
A basic particle system that contains all the storages and buffers required for basic operation and a...
Base class providing referencing counted objects.
Definition: Referenced.h:120
Smart pointer for observed objects, that automatically set pointers to them to null when they deleted...
Definition: observer_ptr.h:61
Smart pointer for handling referenced counted objects.
Definition: ref_ptr.h:30
Namespace containing classes for handling debug rendering of collision geometries,...
Definition: Constraint.h:36
Flags
Flags for specifying what is enabled in the debug rendering system.
Definition: RenderManager.h:57
@ RENDER_STATISTICS
Render statistics text/graphs onto screen.
Definition: RenderManager.h:72
@ RENDER_BATCH_WIRES
Wire content batch rendered.
Definition: RenderManager.h:77
@ RENDER_BODIES
Render rigid body mass centers.
Definition: RenderManager.h:64
@ RENDER_BOUNDING_VOLUMES
Render bounding volumes for geometries.
Definition: RenderManager.h:59
@ RENDER_GEOMETRY_CONTACTS
Render geometry contacts.
Definition: RenderManager.h:60
@ RENDER_RENDERABLES
Execute render for all registered Renderables.
Definition: RenderManager.h:73
@ RENDER_PARTICLE_EMITTERS
Render particle emitters.
Definition: RenderManager.h:66
@ RENDER_CONTACTS
Render all types of contacts.
Definition: RenderManager.h:79
@ RENDER_PARTICLE_GEOMETRY_CONTACTS
Render particle-geometry contacts.
Definition: RenderManager.h:62
@ RENDER_GEOMETRIES
Render collision geometries.
Definition: RenderManager.h:58
@ RENDER_NICE_CONTACTS
Render contacts with high fidelity.
Definition: RenderManager.h:71
@ RENDER_TEXT
Render text.
Definition: RenderManager.h:67
@ RENDER_MESH
Render trimesh/height field.
Definition: RenderManager.h:70
@ RENDER_CONSTRAINTS
Render rigid body constraint attachments.
Definition: RenderManager.h:63
@ RENDER_PARTICLE_CONTACTS
Render particle contacts.
Definition: RenderManager.h:61
@ RENDER_DEFAULT
The default rendering mode.
Definition: RenderManager.h:81
@ RENDER_AABB_TREES
Render AABB trees.
Definition: RenderManager.h:68
@ RENDER_BODY_PARTITION
Color for a RigidBody is selected based on which partition it belongs to.
Definition: RenderManager.h:74
@ RENDER_BATCH_BODIES
Batch render bodies.
Definition: RenderManager.h:76
@ RENDER_BATCH_CONTACTS
Render contacts as one batch call for all contacts.
Definition: RenderManager.h:75
@ RENDER_SENSORS
Render geometries which are sensors.
Definition: RenderManager.h:69
@ RENDER_PARTICLE_SYSTEMS
Render particle systems.
Definition: RenderManager.h:65
@ RENDER_OBSERVER_FRAMES
Render Observer frames.
Definition: RenderManager.h:78
The agxSDK namespace contain classes to bridge the collision detection system and the dynamical simul...
Definition: Constraint.h:31
uint32_t UInt32
Definition: Integer.h:32
double Real
Definition: Real.h:41
virtual void setAlpha(float alpha)=0