AGX Dynamics 2.42.1.1
Loading...
Searching...
No Matches
GranularMergedBodyDrawable.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
17#ifndef AGXOSG_GRANULARMERGEDBODYDRAWABLE_H
18#define AGXOSG_GRANULARMERGEDBODYDRAWABLE_H
19
20#include <agx/PushDisableWarnings.h> // Disabling warnings. Include agx/PopDisableWarnings.h below!
21#include <osg/Drawable>
22#include <osgViewer/Viewer>
23#include <osg/Version>
24#include <agx/PopDisableWarnings.h> // End of disabled warnings.
25
26#include <agxOSG/export.h>
27#include <agxOSG/Node.h>
28#include <agxOSG/GeometryNode.h>
29#include <agx/Task.h>
30#include <agx/observer_ptr.h>
31#include <agxSDK/Simulation.h>
32
33namespace agxOSG
34{
36 class AGXOSG_EXPORT GranularMergedBodyDrawable : public osg::Drawable
37 {
38
39 public:
40 GranularMergedBodyDrawable(agxSDK::Simulation *simulation, osg::Group * root = nullptr);
41
42 virtual osg::Object* cloneType() const { return new GranularMergedBodyDrawable(m_simulation, m_root); }
43 virtual osg::Object* clone(const osg::CopyOp&) const { return new GranularMergedBodyDrawable(*this); }
44 virtual bool isSameKindAs(const osg::Object* obj) const { return dynamic_cast<const GranularMergedBodyDrawable *>(obj) != nullptr; }
45 virtual const char* libraryName() const { return "agxOSG"; }
46 virtual const char* className() const { return "GranularMergedBodyDrawable"; }
47
48
50# if OSG_VERSION_GREATER_OR_EQUAL(3,4,0)
51 virtual osg::BoundingSphere computeBound() const;
52 virtual osg::BoundingBox computeBoundingBox() const;
53#else
54 virtual osg::BoundingBox computeBound() const;
55#endif
56
58 virtual void drawImplementation(osg::RenderInfo& renderInfo) const;
59
60 void setEnable(bool enable);
61
62 bool getEnable() const;
63
64 agxSDK::Simulation * getSimulation();
65
67
69
71
72 protected:
74
76 // Variables
78 protected:
79
82
84 osg::Group * m_root;
86
88
90 };
91
93
95
97
98}
99
100#endif /* AGXOSG_PARTICLE_SYSTEMDRAWABLE_H */
#define AGX_DECLARE_POINTER_TYPES(type)
Definition: Referenced.h:254
#define AGXOSG_EXPORT
agx::HashTable< agx::RigidBody *, osg::Group * > m_createdBodies
virtual const char * libraryName() const
virtual osg::BoundingBox computeBound() const
Compute the bounding box around Drawables's geometry.
void removeRigidBodyCallback(agxSDK::Simulation *, agx::RigidBody *body)
agxSDK::Simulation::RigidBodyEvent::CallbackType m_addRigidBodyCallback
GranularMergedBodyDrawable(agxSDK::Simulation *simulation, osg::Group *root=nullptr)
virtual bool isSameKindAs(const osg::Object *obj) const
virtual osg::Object * clone(const osg::CopyOp &) const
virtual osg::Object * cloneType() const
virtual void drawImplementation(osg::RenderInfo &renderInfo) const
The actual draw method for the particle system.
agxSDK::Simulation::RigidBodyEvent::CallbackType m_removeRigidBodyCallback
void addRigidBodyCallback(agxSDK::Simulation *, agx::RigidBody *body)
Simulation is a class that bridges the collision space agxCollide::Space and the dynamic simulation s...
Definition: Simulation.h:131
T CallbackType
Definition: Event.h:37
Inheritance with partial specialization due to bug with ref_ptr containers.
The rigid body class, combining a geometric model and a frame of reference.
Definition: RigidBody.h:49
#define AGX_FORCE_INLINE
Definition: macros.h:58
The agxOSG namespace provides functionality for visualizing AGX simulations with OpenSceneGraph.