AGX Dynamics 2.42.3.0
Loading...
Searching...
No Matches
ConstraintForcesEntity.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
9having been advised so by Algoryx Simulation AB for a time limited evaluation,
10or having purchased a valid 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
18// AUTOMATICALLY GENERATED ENTITY, DO NOT EDIT! //
20
21#ifndef GENERATED_AGX_PHYSICS_CONSTRAINTFORCES_H_PLUGIN
22#define GENERATED_AGX_PHYSICS_CONSTRAINTFORCES_H_PLUGIN
23
24#define AGX_ENTITY_WRAPPER 1
25
26
27#ifdef _MSC_VER
28# pragma warning(push)
29// warning C4505: 'agxData::VectorAttributeT<T>::print' : unreferenced local function has been removed
30# pragma warning( disable : 4505 )
31// warning C4251: 'X' : class 'Y' needs to have dll-interface to be used by clients of class 'Z'
32# pragma warning( disable : 4251 )
33// warning C4355: 'this' : used in base member initializer list
34# pragma warning( disable : 4355 )
35// marked as __forceinline not inlined
36# pragma warning( disable: 4714 )
37#endif
38
39#include <agxData/EntityModel.h>
41#include <agxData/EntityRef.h>
42#include <agxData/EntityPtr.h>
44#include <agx/Integer.h>
45#include <agx/Real.h>
46#include <agx/macros.h>
47#include <agx/Name.h>
48#include <agx/Vec3.h>
49#include <agx/Real.h>
50
51
52namespace agx
53{
54 namespace Physics
55 {
56
57 class ConstraintForcesModel;
58 class ConstraintForcesData;
59 class ConstraintForcesPtr;
60 class ConstraintForcesInstance;
61 class ConstraintForcesSemantics;
62
63
65
70 {
71 public:
73
74 ConstraintForcesModel(const agx::String& name = "ConstraintForces");
75
78
81
84
86 virtual void shutdownCleanup() override;
87
88
89
90 /* Attributes */
107
108 protected:
110 virtual agxData::EntityData* createData(agxData::EntityStorage* storage) override;
111 virtual void configure(agx::TiXmlElement* eEntity) override;
112 virtual void initAttributeAccessors() override;
113 virtual void construct(agxData::EntityPtr instance) override;
115 };
116
117
119 #ifndef AGX_PHYSICS_CONSTRAINTFORCES_DATA_SET_OVERRIDE
120 #define AGX_PHYSICS_CONSTRAINTFORCES_DATA_SET
121 class AGXPHYSICS_EXPORT ConstraintForcesData : public agxData::EntityData
122 {
123 public:
124 ConstraintForcesInstance operator[] (size_t index);
125
126 public:
132 agxData::Array< agx::Vec3 > body1Torque;
133 agxData::Array< agx::Vec3 > body2Torque;
134 agxData::Array< agx::Real > motor1Force;
135 agxData::Array< agx::Real > motor2Force;
138 agxData::Array< agx::Real > range1Force;
139 agxData::Array< agx::Real > range2Force;
142 agxData::Array< agx::Real > currentSpeed1;
143 agxData::Array< agx::Real > currentSpeed2;
144
145 public:
146 typedef agx::Name nameType;
147 typedef agx::Name typeType;
148 typedef agx::Vec3 body1ForceType;
149 typedef agx::Vec3 body2ForceType;
150 typedef agx::Vec3 body1TorqueType;
151 typedef agx::Vec3 body2TorqueType;
152 typedef agx::Real motor1ForceType;
153 typedef agx::Real motor2ForceType;
154 typedef agx::Real lock1ForceType;
155 typedef agx::Real lock2ForceType;
156 typedef agx::Real range1ForceType;
157 typedef agx::Real range2ForceType;
158 typedef agx::Real angle1Type;
159 typedef agx::Real angle2Type;
160 typedef agx::Real currentSpeed1Type;
161 typedef agx::Real currentSpeed2Type;
162
163 public:
164 ConstraintForcesData(agxData::EntityStorage* storage);
165 ConstraintForcesData();
166
167 protected:
168 virtual ~ConstraintForcesData() {}
169 virtual void setNumElements(agx::Index numElements) override;
170
171 private:
172 ConstraintForcesData& operator= (const ConstraintForcesData&) { return *this; }
173
174 };
175 #endif
177
178
180 class AGXPHYSICS_EXPORT ConstraintForcesSemantics : protected agxData::EntityPtr
181 {
182 public:
183
184 // Automatic getters
185 agx::Name const& getName() const;
186 agx::Name const& getType() const;
187 agx::Vec3 const& getBody1Force() const;
188 agx::Vec3 const& getBody2Force() const;
189 agx::Vec3 const& getBody1Torque() const;
190 agx::Vec3 const& getBody2Torque() const;
191 agx::Real const& getMotor1Force() const;
192 agx::Real const& getMotor2Force() const;
193 agx::Real const& getLock1Force() const;
194 agx::Real const& getLock2Force() const;
195 agx::Real const& getRange1Force() const;
196 agx::Real const& getRange2Force() const;
197 agx::Real const& getAngle1() const;
198 agx::Real const& getAngle2() const;
199 agx::Real const& getCurrentSpeed1() const;
200 agx::Real const& getCurrentSpeed2() const;
201
202 // Semantics defined by explicit kernels
203
204 // Automatic setters
205 void setName(agx::Name const& value);
206 void setType(agx::Name const& value);
207 void setBody1Force(agx::Vec3 const& value);
208 void setBody2Force(agx::Vec3 const& value);
209 void setBody1Torque(agx::Vec3 const& value);
210 void setBody2Torque(agx::Vec3 const& value);
211 void setMotor1Force(agx::Real const& value);
212 void setMotor2Force(agx::Real const& value);
213 void setLock1Force(agx::Real const& value);
214 void setLock2Force(agx::Real const& value);
215 void setRange1Force(agx::Real const& value);
216 void setRange2Force(agx::Real const& value);
217 void setAngle1(agx::Real const& value);
218 void setAngle2(agx::Real const& value);
219 void setCurrentSpeed1(agx::Real const& value);
220 void setCurrentSpeed2(agx::Real const& value);
221
222
223 protected:
224 friend class ConstraintForcesPtr;
225 friend class ConstraintForcesInstance;
226 ConstraintForcesSemantics();
227 };
229
230
231
234 class CALLABLE ConstraintForcesPtr : public agxData::EntityPtr
235 {
236 public:
238 typedef ConstraintForcesData DataType;
239 typedef ConstraintForcesInstance InstanceType;
240
241 public:
248 AGXPHYSICS_EXPORT ConstraintForcesInstance instance();
249 AGXPHYSICS_EXPORT const ConstraintForcesInstance instance() const;
250
251 AGXPHYSICS_EXPORT ConstraintForcesSemantics* operator->();
252 AGXPHYSICS_EXPORT const ConstraintForcesSemantics* operator->() const;
253
254 ConstraintForcesData* getData();
255 const ConstraintForcesData* getData() const;
256
257
262
267
272
277
282
287
292
297
302
307
312
317
322
327
332
337
338 };
339
340
342 class AGXPHYSICS_EXPORT ConstraintForcesInstance : public agxData::EntityInstance
343 {
344 public:
345 ConstraintForcesInstance();
346 ConstraintForcesInstance(ConstraintForcesData* data, agx::Index index);
347 ConstraintForcesInstance(agxData::EntityStorage *storage, agx::Index index);
348 ConstraintForcesInstance(const agxData::EntityInstance& other);
349 ConstraintForcesInstance(const agxData::EntityPtr& ptr);
350
351 ConstraintForcesData* getData();
352 const ConstraintForcesData* getData() const;
353
354 public:
356 agx::Name& name();
358 agx::Name const& name() const;
359
361 agx::Name& type();
363 agx::Name const& type() const;
364
366 agx::Vec3& body1Force();
368 agx::Vec3 const& body1Force() const;
369
371 agx::Vec3& body2Force();
373 agx::Vec3 const& body2Force() const;
374
376 agx::Vec3& body1Torque();
378 agx::Vec3 const& body1Torque() const;
379
381 agx::Vec3& body2Torque();
383 agx::Vec3 const& body2Torque() const;
384
386 agx::Real& motor1Force();
388 agx::Real const& motor1Force() const;
389
391 agx::Real& motor2Force();
393 agx::Real const& motor2Force() const;
394
396 agx::Real& lock1Force();
398 agx::Real const& lock1Force() const;
399
401 agx::Real& lock2Force();
403 agx::Real const& lock2Force() const;
404
406 agx::Real& range1Force();
408 agx::Real const& range1Force() const;
409
411 agx::Real& range2Force();
413 agx::Real const& range2Force() const;
414
416 agx::Real& angle1();
418 agx::Real const& angle1() const;
419
421 agx::Real& angle2();
423 agx::Real const& angle2() const;
424
426 agx::Real& currentSpeed1();
428 agx::Real const& currentSpeed1() const;
429
431 agx::Real& currentSpeed2();
433 agx::Real const& currentSpeed2() const;
434
435 };
437
438
439
442
443
444
446 /* Implementation */
447 //-----------------------------------------------------------------------------------------------------
448 //-----------------------------------------------------------------------------------------------------
449 inline ConstraintForcesInstance agx::Physics::ConstraintForcesData::operator[] (size_t index) { return ConstraintForcesInstance(this, (agx::Index)index); }
450 //-----------------------------------------------------------------------------------------------------
453 AGX_FORCE_INLINE ConstraintForcesPtr::ConstraintForcesPtr(const agxData::EntityPtr& ptr) : agxData::EntityPtr(ptr)
454 {
456 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
457 EntityPtr::getModel()->fullPath().c_str(), ConstraintForcesModel::instance()->fullPath().c_str());
458 }
459
460 AGX_FORCE_INLINE ConstraintForcesPtr::ConstraintForcesPtr(const agxData::EntityInstance& instance) : agxData::EntityPtr(instance)
461 {
463 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
464 EntityPtr::getModel()->fullPath().c_str(), ConstraintForcesModel::instance()->fullPath().c_str());
465 }
466
467 AGX_FORCE_INLINE ConstraintForcesPtr& ConstraintForcesPtr::operator= (const agxData::EntityPtr& ptr)
468 {
470 agxAssertN(!ptr || ptr.isInstanceOf(ConstraintForcesModel::instance()),
471 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
472 EntityPtr::getModel()->fullPath().c_str(), ConstraintForcesModel::instance()->fullPath().c_str());
473 return *this;
474 }
475
476 AGX_FORCE_INLINE ConstraintForcesPtr& ConstraintForcesPtr::operator= (const agxData::EntityInstance& instance)
477 {
479 agxAssertN(!instance || instance.isInstanceOf(ConstraintForcesModel::instance()),
480 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
481 EntityPtr::getModel()->fullPath().c_str(), ConstraintForcesModel::instance()->fullPath().c_str());
482 return *this;
483 }
484
485 inline ConstraintForcesInstance ConstraintForcesPtr::instance() { return agxData::EntityPtr::instance(); }
486 inline const ConstraintForcesInstance ConstraintForcesPtr::instance() const { return agxData::EntityPtr::instance(); }
487 AGX_FORCE_INLINE ConstraintForcesSemantics* ConstraintForcesPtr::operator->() { return (ConstraintForcesSemantics* )this; }
488 AGX_FORCE_INLINE const ConstraintForcesSemantics* ConstraintForcesPtr::operator->() const { return (const ConstraintForcesSemantics* )this; }
489 AGX_FORCE_INLINE ConstraintForcesData* ConstraintForcesPtr::getData() { return static_cast<ConstraintForcesData* >(agxData::EntityPtr::getData()); }
490 AGX_FORCE_INLINE const ConstraintForcesData* ConstraintForcesPtr::getData() const { return static_cast<const ConstraintForcesData* >(agxData::EntityPtr::getData()); }
491
492 AGX_FORCE_INLINE agx::Name& ConstraintForcesPtr::name() { verifyIndex(); return getData()->name[calculateIndex()]; }
493 AGX_FORCE_INLINE agx::Name const& ConstraintForcesPtr::name() const { verifyIndex(); return getData()->name[calculateIndex()]; }
494
495 AGX_FORCE_INLINE agx::Name& ConstraintForcesPtr::type() { verifyIndex(); return getData()->type[calculateIndex()]; }
496 AGX_FORCE_INLINE agx::Name const& ConstraintForcesPtr::type() const { verifyIndex(); return getData()->type[calculateIndex()]; }
497
498 AGX_FORCE_INLINE agx::Vec3& ConstraintForcesPtr::body1Force() { verifyIndex(); return getData()->body1Force[calculateIndex()]; }
499 AGX_FORCE_INLINE agx::Vec3 const& ConstraintForcesPtr::body1Force() const { verifyIndex(); return getData()->body1Force[calculateIndex()]; }
500
501 AGX_FORCE_INLINE agx::Vec3& ConstraintForcesPtr::body2Force() { verifyIndex(); return getData()->body2Force[calculateIndex()]; }
502 AGX_FORCE_INLINE agx::Vec3 const& ConstraintForcesPtr::body2Force() const { verifyIndex(); return getData()->body2Force[calculateIndex()]; }
503
504 AGX_FORCE_INLINE agx::Vec3& ConstraintForcesPtr::body1Torque() { verifyIndex(); return getData()->body1Torque[calculateIndex()]; }
505 AGX_FORCE_INLINE agx::Vec3 const& ConstraintForcesPtr::body1Torque() const { verifyIndex(); return getData()->body1Torque[calculateIndex()]; }
506
507 AGX_FORCE_INLINE agx::Vec3& ConstraintForcesPtr::body2Torque() { verifyIndex(); return getData()->body2Torque[calculateIndex()]; }
508 AGX_FORCE_INLINE agx::Vec3 const& ConstraintForcesPtr::body2Torque() const { verifyIndex(); return getData()->body2Torque[calculateIndex()]; }
509
510 AGX_FORCE_INLINE agx::Real& ConstraintForcesPtr::motor1Force() { verifyIndex(); return getData()->motor1Force[calculateIndex()]; }
511 AGX_FORCE_INLINE agx::Real const& ConstraintForcesPtr::motor1Force() const { verifyIndex(); return getData()->motor1Force[calculateIndex()]; }
512
513 AGX_FORCE_INLINE agx::Real& ConstraintForcesPtr::motor2Force() { verifyIndex(); return getData()->motor2Force[calculateIndex()]; }
514 AGX_FORCE_INLINE agx::Real const& ConstraintForcesPtr::motor2Force() const { verifyIndex(); return getData()->motor2Force[calculateIndex()]; }
515
516 AGX_FORCE_INLINE agx::Real& ConstraintForcesPtr::lock1Force() { verifyIndex(); return getData()->lock1Force[calculateIndex()]; }
517 AGX_FORCE_INLINE agx::Real const& ConstraintForcesPtr::lock1Force() const { verifyIndex(); return getData()->lock1Force[calculateIndex()]; }
518
519 AGX_FORCE_INLINE agx::Real& ConstraintForcesPtr::lock2Force() { verifyIndex(); return getData()->lock2Force[calculateIndex()]; }
520 AGX_FORCE_INLINE agx::Real const& ConstraintForcesPtr::lock2Force() const { verifyIndex(); return getData()->lock2Force[calculateIndex()]; }
521
522 AGX_FORCE_INLINE agx::Real& ConstraintForcesPtr::range1Force() { verifyIndex(); return getData()->range1Force[calculateIndex()]; }
523 AGX_FORCE_INLINE agx::Real const& ConstraintForcesPtr::range1Force() const { verifyIndex(); return getData()->range1Force[calculateIndex()]; }
524
525 AGX_FORCE_INLINE agx::Real& ConstraintForcesPtr::range2Force() { verifyIndex(); return getData()->range2Force[calculateIndex()]; }
526 AGX_FORCE_INLINE agx::Real const& ConstraintForcesPtr::range2Force() const { verifyIndex(); return getData()->range2Force[calculateIndex()]; }
527
528 AGX_FORCE_INLINE agx::Real& ConstraintForcesPtr::angle1() { verifyIndex(); return getData()->angle1[calculateIndex()]; }
529 AGX_FORCE_INLINE agx::Real const& ConstraintForcesPtr::angle1() const { verifyIndex(); return getData()->angle1[calculateIndex()]; }
530
531 AGX_FORCE_INLINE agx::Real& ConstraintForcesPtr::angle2() { verifyIndex(); return getData()->angle2[calculateIndex()]; }
532 AGX_FORCE_INLINE agx::Real const& ConstraintForcesPtr::angle2() const { verifyIndex(); return getData()->angle2[calculateIndex()]; }
533
534 AGX_FORCE_INLINE agx::Real& ConstraintForcesPtr::currentSpeed1() { verifyIndex(); return getData()->currentSpeed1[calculateIndex()]; }
535 AGX_FORCE_INLINE agx::Real const& ConstraintForcesPtr::currentSpeed1() const { verifyIndex(); return getData()->currentSpeed1[calculateIndex()]; }
536
537 AGX_FORCE_INLINE agx::Real& ConstraintForcesPtr::currentSpeed2() { verifyIndex(); return getData()->currentSpeed2[calculateIndex()]; }
538 AGX_FORCE_INLINE agx::Real const& ConstraintForcesPtr::currentSpeed2() const { verifyIndex(); return getData()->currentSpeed2[calculateIndex()]; }
539
540 //-----------------------------------------------------------------------------------------------------
541 AGX_FORCE_INLINE ConstraintForcesInstance::ConstraintForcesInstance() {}
542 AGX_FORCE_INLINE ConstraintForcesInstance::ConstraintForcesInstance(ConstraintForcesData* data, agx::Index index) : agxData::EntityInstance(data, index) {}
543 AGX_FORCE_INLINE ConstraintForcesInstance::ConstraintForcesInstance(agxData::EntityStorage* storage, agx::Index index) : agxData::EntityInstance(storage, index) {}
544 AGX_FORCE_INLINE ConstraintForcesInstance::ConstraintForcesInstance(const agxData::EntityInstance& other) : agxData::EntityInstance(other)
545 {
547 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
548 EntityInstance::getModel()->fullPath().c_str(), ConstraintForcesModel::instance()->fullPath().c_str());
549 }
550
551 AGX_FORCE_INLINE ConstraintForcesInstance::ConstraintForcesInstance(const agxData::EntityPtr& ptr) : agxData::EntityInstance(ptr)
552 {
554 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
555 EntityInstance::getModel()->fullPath().c_str(), ConstraintForcesModel::instance()->fullPath().c_str());
556 }
557
558
559 AGX_FORCE_INLINE ConstraintForcesData* ConstraintForcesInstance::getData() { return static_cast<ConstraintForcesData* >(agxData::EntityInstance::getData()); }
560 AGX_FORCE_INLINE const ConstraintForcesData* ConstraintForcesInstance::getData() const { return static_cast<const ConstraintForcesData* >(agxData::EntityInstance::getData()); }
561
562 AGX_FORCE_INLINE agx::Name& ConstraintForcesInstance::name() { verifyIndex(); return getData()->name[getIndex()]; }
563 AGX_FORCE_INLINE agx::Name const& ConstraintForcesInstance::name() const { verifyIndex(); return getData()->name[getIndex()]; }
564
565 AGX_FORCE_INLINE agx::Name& ConstraintForcesInstance::type() { verifyIndex(); return getData()->type[getIndex()]; }
566 AGX_FORCE_INLINE agx::Name const& ConstraintForcesInstance::type() const { verifyIndex(); return getData()->type[getIndex()]; }
567
568 AGX_FORCE_INLINE agx::Vec3& ConstraintForcesInstance::body1Force() { verifyIndex(); return getData()->body1Force[getIndex()]; }
569 AGX_FORCE_INLINE agx::Vec3 const& ConstraintForcesInstance::body1Force() const { verifyIndex(); return getData()->body1Force[getIndex()]; }
570
571 AGX_FORCE_INLINE agx::Vec3& ConstraintForcesInstance::body2Force() { verifyIndex(); return getData()->body2Force[getIndex()]; }
572 AGX_FORCE_INLINE agx::Vec3 const& ConstraintForcesInstance::body2Force() const { verifyIndex(); return getData()->body2Force[getIndex()]; }
573
574 AGX_FORCE_INLINE agx::Vec3& ConstraintForcesInstance::body1Torque() { verifyIndex(); return getData()->body1Torque[getIndex()]; }
575 AGX_FORCE_INLINE agx::Vec3 const& ConstraintForcesInstance::body1Torque() const { verifyIndex(); return getData()->body1Torque[getIndex()]; }
576
577 AGX_FORCE_INLINE agx::Vec3& ConstraintForcesInstance::body2Torque() { verifyIndex(); return getData()->body2Torque[getIndex()]; }
578 AGX_FORCE_INLINE agx::Vec3 const& ConstraintForcesInstance::body2Torque() const { verifyIndex(); return getData()->body2Torque[getIndex()]; }
579
580 AGX_FORCE_INLINE agx::Real& ConstraintForcesInstance::motor1Force() { verifyIndex(); return getData()->motor1Force[getIndex()]; }
581 AGX_FORCE_INLINE agx::Real const& ConstraintForcesInstance::motor1Force() const { verifyIndex(); return getData()->motor1Force[getIndex()]; }
582
583 AGX_FORCE_INLINE agx::Real& ConstraintForcesInstance::motor2Force() { verifyIndex(); return getData()->motor2Force[getIndex()]; }
584 AGX_FORCE_INLINE agx::Real const& ConstraintForcesInstance::motor2Force() const { verifyIndex(); return getData()->motor2Force[getIndex()]; }
585
586 AGX_FORCE_INLINE agx::Real& ConstraintForcesInstance::lock1Force() { verifyIndex(); return getData()->lock1Force[getIndex()]; }
587 AGX_FORCE_INLINE agx::Real const& ConstraintForcesInstance::lock1Force() const { verifyIndex(); return getData()->lock1Force[getIndex()]; }
588
589 AGX_FORCE_INLINE agx::Real& ConstraintForcesInstance::lock2Force() { verifyIndex(); return getData()->lock2Force[getIndex()]; }
590 AGX_FORCE_INLINE agx::Real const& ConstraintForcesInstance::lock2Force() const { verifyIndex(); return getData()->lock2Force[getIndex()]; }
591
592 AGX_FORCE_INLINE agx::Real& ConstraintForcesInstance::range1Force() { verifyIndex(); return getData()->range1Force[getIndex()]; }
593 AGX_FORCE_INLINE agx::Real const& ConstraintForcesInstance::range1Force() const { verifyIndex(); return getData()->range1Force[getIndex()]; }
594
595 AGX_FORCE_INLINE agx::Real& ConstraintForcesInstance::range2Force() { verifyIndex(); return getData()->range2Force[getIndex()]; }
596 AGX_FORCE_INLINE agx::Real const& ConstraintForcesInstance::range2Force() const { verifyIndex(); return getData()->range2Force[getIndex()]; }
597
598 AGX_FORCE_INLINE agx::Real& ConstraintForcesInstance::angle1() { verifyIndex(); return getData()->angle1[getIndex()]; }
599 AGX_FORCE_INLINE agx::Real const& ConstraintForcesInstance::angle1() const { verifyIndex(); return getData()->angle1[getIndex()]; }
600
601 AGX_FORCE_INLINE agx::Real& ConstraintForcesInstance::angle2() { verifyIndex(); return getData()->angle2[getIndex()]; }
602 AGX_FORCE_INLINE agx::Real const& ConstraintForcesInstance::angle2() const { verifyIndex(); return getData()->angle2[getIndex()]; }
603
604 AGX_FORCE_INLINE agx::Real& ConstraintForcesInstance::currentSpeed1() { verifyIndex(); return getData()->currentSpeed1[getIndex()]; }
605 AGX_FORCE_INLINE agx::Real const& ConstraintForcesInstance::currentSpeed1() const { verifyIndex(); return getData()->currentSpeed1[getIndex()]; }
606
607 AGX_FORCE_INLINE agx::Real& ConstraintForcesInstance::currentSpeed2() { verifyIndex(); return getData()->currentSpeed2[getIndex()]; }
608 AGX_FORCE_INLINE agx::Real const& ConstraintForcesInstance::currentSpeed2() const { verifyIndex(); return getData()->currentSpeed2[getIndex()]; }
609
610 //-----------------------------------------------------------------------------------------------------
611 AGX_FORCE_INLINE ConstraintForcesSemantics::ConstraintForcesSemantics() {}
612 //-----------------------------------------------------------------------------------------------------
614 }
615}
616
617AGX_TYPE_BINDING(agx::Physics::ConstraintForcesPtr, "Physics.ConstraintForcesPtr")
618AGX_TYPE_BINDING(agx::Physics::ConstraintForcesInstance, "Physics.ConstraintForcesInstance")
619
620#ifdef _MSC_VER
621# pragma warning(pop)
622#endif
623
624#undef AGX_ENTITY_WRAPPER
625#undef AGX_ENTITY_NAMESPACE
626#endif
627
#define AGX_DECLARE_POINTER_TYPES(type)
Definition: Referenced.h:254
#define AGX_TYPE_BINDING(_Type, _Name)
Definition: Type.h:179
#define AGXPHYSICS_EXPORT
Type-specific Array used for fast access into the data held by a Buffer.
Definition: Array.h:107
Entity instance provides access to a single instance in an EntityStorage.
bool isInstanceOf(agxData::EntityModel *model) const
agxData::EntityData * getData()
An abstract description of a data entity stored using SOA (structure of arrays) pattern in a EntitySt...
Definition: EntityModel.h:64
Accessor to a entity instance stored in a EntityStorage, to allow SOA (structure of arrays) data to b...
Definition: EntityPtr.h:52
EntityPtr & operator=(const EntityPtr &other)=default
bool isInstanceOf(agxData::EntityModel *model) const
agxData::EntityData * getData()
agxData::EntityInstance instance()
Definition: EntityPtr.h:269
Data storage for a collection of entity instances of a specified EntityModel.
Definition: EntityStorage.h:73
agx::String fullPath() const
Representation of a name string.
Definition: Name.h:33
Abstract description of the data attributes for the Physics.ConstraintForces entity.
static agxData::ScalarAttributeT< agx::Real > * motor2ForceAttribute
static agxData::ScalarAttributeT< agx::Name > * typeAttribute
static agxData::ScalarAttributeT< agx::Real > * angle2Attribute
static agxData::ScalarAttributeT< agx::Real > * lock2ForceAttribute
static agxData::ScalarAttributeT< agx::Real > * currentSpeed2Attribute
static ConstraintForcesPtr createInstance()
Create and return a pointer to a new instance in the default storage for this entity model.
ConstraintForcesModel(const agx::String &name="ConstraintForces")
static agxData::EntityStorage * defaultStorage()
static agxData::ScalarAttributeT< agx::Vec3 > * body2ForceAttribute
static agxData::ScalarAttributeT< agx::Vec3 > * body1TorqueAttribute
void construct(agx::Physics::ConstraintForcesPtr constraintForces)
static agxData::ScalarAttributeT< agx::Vec3 > * body1ForceAttribute
virtual void initAttributeAccessors() override
static agxData::ScalarAttributeT< agx::Real > * range2ForceAttribute
static ConstraintForcesModel * instance()
static agxData::ScalarAttributeT< agx::Real > * lock1ForceAttribute
static agxData::ScalarAttributeT< agx::Vec3 > * body2TorqueAttribute
static agxData::ScalarAttributeT< agx::Real > * range1ForceAttribute
virtual void construct(agxData::EntityPtr instance) override
static agxData::ScalarAttributeT< agx::Name > * nameAttribute
static agxData::ScalarAttributeT< agx::Real > * motor1ForceAttribute
virtual agxData::EntityData * createData(agxData::EntityStorage *storage) override
static agxData::ScalarAttributeT< agx::Real > * currentSpeed1Attribute
virtual void configure(agx::TiXmlElement *eEntity) override
static agxData::ScalarAttributeT< agx::Real > * angle1Attribute
virtual void shutdownCleanup() override
This is part of internal cleanup and should not be called by users.
Pointer to a entity instance of type Physics.ConstraintForces.
AGXPHYSICS_EXPORT agx::Name const & name() const
AGXPHYSICS_EXPORT ConstraintForcesPtr()
AGXPHYSICS_EXPORT agx::Real const & angle2() const
AGXPHYSICS_EXPORT const ConstraintForcesInstance instance() const
AGXPHYSICS_EXPORT agx::Vec3 const & body1Force() const
AGXPHYSICS_EXPORT agx::Vec3 const & body1Torque() const
AGXPHYSICS_EXPORT agx::Real const & range2Force() const
AGXPHYSICS_EXPORT agx::Real & motor2Force()
AGXPHYSICS_EXPORT agx::Vec3 & body2Force()
AGXPHYSICS_EXPORT agx::Real & angle2()
AGXPHYSICS_EXPORT ConstraintForcesPtr(const agxData::EntityPtr &ptr)
AGXPHYSICS_EXPORT agx::Vec3 const & body2Torque() const
AGXPHYSICS_EXPORT agx::Real const & lock1Force() const
AGXPHYSICS_EXPORT agx::Real & motor1Force()
AGXPHYSICS_EXPORT agx::Real & lock1Force()
AGXPHYSICS_EXPORT agx::Real & range2Force()
const ConstraintForcesData * getData() const
AGXPHYSICS_EXPORT agx::Vec3 & body1Torque()
AGXPHYSICS_EXPORT agx::Real const & angle1() const
AGXPHYSICS_EXPORT agx::Real const & currentSpeed2() const
AGXPHYSICS_EXPORT agx::Real & currentSpeed1()
AGXPHYSICS_EXPORT agx::Name & name()
AGXPHYSICS_EXPORT agx::Real & lock2Force()
AGXPHYSICS_EXPORT const ConstraintForcesSemantics * operator->() const
AGXPHYSICS_EXPORT ConstraintForcesPtr(agxData::EntityStorage *storage, agx::Index id)
ConstraintForcesData * getData()
AGXPHYSICS_EXPORT ConstraintForcesPtr(const agxData::EntityInstance &instance)
AGXPHYSICS_EXPORT ConstraintForcesSemantics * operator->()
AGXPHYSICS_EXPORT ConstraintForcesInstance instance()
AGXPHYSICS_EXPORT agx::Name & type()
AGXPHYSICS_EXPORT agx::Vec3 const & body2Force() const
AGXPHYSICS_EXPORT agx::Real & range1Force()
AGXPHYSICS_EXPORT agx::Name const & type() const
AGXPHYSICS_EXPORT agx::Real const & currentSpeed1() const
AGXPHYSICS_EXPORT agx::Real const & motor2Force() const
AGXPHYSICS_EXPORT agx::Real & currentSpeed2()
AGXPHYSICS_EXPORT agx::Real const & lock2Force() const
AGXPHYSICS_EXPORT agx::Vec3 & body2Torque()
AGXPHYSICS_EXPORT agx::Real const & range1Force() const
AGXPHYSICS_EXPORT agx::Vec3 & body1Force()
AGXPHYSICS_EXPORT agx::Real & angle1()
AGXPHYSICS_EXPORT agx::Real const & motor1Force() const
Vector containing 'raw' data.
Definition: agx/Vector.h:246
#define agxAssertN(expr, format,...)
Definition: debug.h:145
#define DOXYGEN_END_INTERNAL_BLOCK()
Definition: macros.h:89
#define CALLABLE
Definition: macros.h:72
#define DOXYGEN_START_INTERNAL_BLOCK()
Definition: macros.h:88
#define AGX_FORCE_INLINE
Definition: macros.h:58
Contains classes for low level data storage for AGX.
Definition: Container.h:23
AGXCORE_EXPORT Type * getType(const agx::String &name)
The agx namespace contains the dynamics/math part of the AGX Dynamics API.
double Real
Definition: Real.h:41
UInt32 Index
Definition: Integer.h:44