18#ifndef GZ_PHYSICS_CAPSULESHAPE_HH_ 
   19#define GZ_PHYSICS_CAPSULESHAPE_HH_ 
   32    class GZ_PHYSICS_VISIBLE GetCapsuleShapeProperties
 
   33        : 
public virtual FeatureWithRequirements<CapsuleShapeCast>
 
   35      public: 
template <
typename PolicyT, 
typename FeaturesT>
 
   36      class CapsuleShape : 
public virtual Entity<PolicyT, FeaturesT>
 
   38        public: 
using Scalar = 
typename PolicyT::Scalar;
 
   42        public: Scalar GetRadius() 
const;
 
   47        public: Scalar GetLength() 
const;
 
   50      public: 
template <
typename PolicyT>
 
   51      class Implementation : 
public virtual Feature::Implementation<PolicyT>
 
   53        public: 
using Scalar = 
typename PolicyT::Scalar;
 
   55        public: 
virtual Scalar GetCapsuleShapeRadius(
 
   56            const Identity &_capsuleID) 
const = 0;
 
   58        public: 
virtual Scalar GetCapsuleShapeLength(
 
   59            const Identity &_capsuleID) 
const = 0;
 
   69      public: 
template <
typename PolicyT, 
typename FeaturesT>
 
   72        public: 
using Scalar = 
typename PolicyT::Scalar;
 
 
   85      public: 
template <
typename PolicyT>
 
   88        public: 
using Scalar = 
typename PolicyT::Scalar;
 
   91            const Identity &_capsuleID, 
Scalar _radius) = 0;
 
   94            const Identity &_capsuleID, 
Scalar _length) = 0;
 
 
 
  105      public: 
template <
typename PolicyT, 
typename FeaturesT>
 
  108        public: 
using Scalar = 
typename PolicyT::Scalar;
 
  127            const PoseType &_pose = PoseType::Identity());
 
 
  130      public: 
template <
typename PolicyT>
 
  133        public: 
using Scalar = 
typename PolicyT::Scalar;
 
  139            const Identity &_linkID,
 
 
 
  149#include <gz/physics/detail/CapsuleShape.hh>