18 #ifndef GZ_PHYSICS_ENTITY_HH_
19 #define GZ_PHYSICS_ENTITY_HH_
25 #include <gz/physics/Export.hh>
26 #include <gz/physics/detail/Identity.hh>
33 namespace detail {
template <
typename,
typename>
struct DeterminePlugin; }
34 template <
typename>
struct RequestFeatures;
41 template <
typename EntityT>
69 public:
template <
typename Pimpl>
71 const Identity &_identity);
77 public:
template <
typename OtherEntityT>
84 public:
template <
typename OtherEntityT>
108 public:
operator bool()
const;
125 public:
template <
typename OtherEntityT>
136 public:
template <
typename OtherEntityT>
147 public:
template <
typename OtherEntityT>
158 public:
template <
typename OtherEntityT>
169 public:
template <
typename OtherEntityT>
180 public:
template <
typename OtherEntityT>
197 private:
mutable std::optional<std::remove_const_t<EntityT>> entity;
215 template <
typename PolicyT,
typename FeaturesT>
221 typename detail::DeterminePlugin<Policy, Features>::type;
254 const Identity &_identity = Identity());
266 const Identity &_identity);
275 protected:
template <
typename FeatureT>
276 typename FeatureT::template Implementation<PolicyT> *
Interface();
282 protected:
template <
typename FeatureT>
283 const typename FeatureT::template Implementation<PolicyT> *
Interface()
304 #include <gz/physics/detail/Entity.hh>