18 #ifndef GZ_PHYSICS_FREEGROUP_HH_
19 #define GZ_PHYSICS_FREEGROUP_HH_
29 DETAIL_GZ_PHYSICS_DEFINE_ENTITY(FreeGroup)
44 class GZ_PHYSICS_VISIBLE FindFreeGroupFeature :
public virtual Feature
46 public:
template <
typename PolicyT,
typename FeaturesT>
47 class Model :
public virtual Feature::Model<PolicyT, FeaturesT>
49 using FreeGroupPtrType = FreeGroupPtr<PolicyT, FeaturesT>;
50 using ConstFreeGroupPtrType = ConstFreeGroupPtr<PolicyT, FeaturesT>;
55 public: FreeGroupPtrType FindFreeGroup();
58 public: ConstFreeGroupPtrType FindFreeGroup()
const;
61 public:
template <
typename PolicyT,
typename FeaturesT>
62 class Link :
public virtual Feature::Link<PolicyT, FeaturesT>
64 using FreeGroupPtrType = FreeGroupPtr<PolicyT, FeaturesT>;
65 using ConstFreeGroupPtrType = ConstFreeGroupPtr<PolicyT, FeaturesT>;
71 public: FreeGroupPtrType FindFreeGroup();
74 public: ConstFreeGroupPtrType FindFreeGroup()
const;
77 public:
template <
typename PolicyT,
typename FeaturesT>
78 class FreeGroup :
public virtual Entity<PolicyT, FeaturesT>
84 public: LinkPtr<PolicyT, FeaturesT> RootLink();
87 public: ConstLinkPtr<PolicyT, FeaturesT> RootLink()
const;
94 public: LinkPtr<PolicyT, FeaturesT> GZ_DEPRECATED(4.0) CanonicalLink();
98 public: ConstLinkPtr<PolicyT, FeaturesT> GZ_DEPRECATED(4.0)
99 CanonicalLink() const;
102 public: template <typename PolicyT>
103 class Implementation : public virtual Feature::Implementation<PolicyT>
105 public:
virtual Identity FindFreeGroupForModel(
106 const Identity &_modelID)
const = 0;
108 public:
virtual Identity FindFreeGroupForLink(
109 const Identity &_linkID)
const = 0;
111 public:
virtual Identity GetFreeGroupRootLink(
112 const Identity &_groupID)
const = 0;
119 FindFreeGroupFeature, FrameSemantics>
121 public:
template <
typename PolicyT,
typename FeaturesT>
142 public:
template <
typename PolicyT,
typename FeaturesT>
152 public:
template <
typename PolicyT>
159 const Identity &_groupID,
175 public:
template <
typename PolicyT,
typename FeaturesT>
193 public:
template <
typename PolicyT>
203 const Identity &_groupID,
207 const Identity &_groupID,
214 #include <gz/physics/detail/FreeGroup.hh>