Просмотр исходного кода

augmentation to drawArrow to allow one to explicitly define a radius.

Azaezel 7 лет назад
Родитель
Сommit
96093bd3ec
2 измененных файлов с 5 добавлено и 5 удалено
  1. 4 4
      Engine/source/gfx/gfxDrawUtil.cpp
  2. 1 1
      Engine/source/gfx/gfxDrawUtil.h

+ 4 - 4
Engine/source/gfx/gfxDrawUtil.cpp

@@ -1382,7 +1382,7 @@ void GFXDrawUtil::drawCylinder( const GFXStateBlockDesc &desc, const Point3F &ba
    mDevice->popWorldMatrix();
 }
 
-void GFXDrawUtil::drawArrow( const GFXStateBlockDesc &desc, const Point3F &start, const Point3F &end, const ColorI &color )
+void GFXDrawUtil::drawArrow( const GFXStateBlockDesc &desc, const Point3F &start, const Point3F &end, const ColorI &color, F32 baseRad )
 {   
    GFXTransformSaver saver;
 
@@ -1398,8 +1398,8 @@ void GFXDrawUtil::drawArrow( const GFXStateBlockDesc &desc, const Point3F &start
 
    // Calculate the radius of the cone given that we want the cone to have
    // an angle of 25 degrees (just because it looks good).
-   F32 coneLen = ( end - coneBase ).len();
-   F32 coneDiameter = mTan( mDegToRad(25.0f) ) * coneLen;
+   F32 coneLen = (baseRad != 0.0f) ? baseRad * 4.0 :( end - coneBase ).len();
+   F32 coneDiameter = (baseRad != 0.0f) ? baseRad*4.0f : mTan( mDegToRad(25.0f) ) * coneLen;
 
    // Draw the cone on at the arrow's tip.
    drawCone( desc, coneBase, end, coneDiameter / 2.0f, color );
@@ -1412,7 +1412,7 @@ void GFXDrawUtil::drawArrow( const GFXStateBlockDesc &desc, const Point3F &start
    Point3F coneDiff = end - coneBase;
 
    // Draw the cylinder.
-   F32 stickRadius = len * 0.025f;   
+   F32 stickRadius = (baseRad != 0.0f) ? baseRad : len * 0.025f;
    drawCylinder( desc, start, end - coneDiff, stickRadius, color );
 }
 

+ 1 - 1
Engine/source/gfx/gfxDrawUtil.h

@@ -115,7 +115,7 @@ public:
    void drawCapsule( const GFXStateBlockDesc &desc, const Point3F &center, F32 radius, F32 height, const ColorI &color, const MatrixF *xfm = NULL );
    void drawCone( const GFXStateBlockDesc &desc, const Point3F &basePnt, const Point3F &tipPnt, F32 baseRadius, const ColorI &color );      
    void drawCylinder( const GFXStateBlockDesc &desc, const Point3F &basePnt, const Point3F &tipPnt, F32 baseRadius, const ColorI &color );      
-   void drawArrow( const GFXStateBlockDesc &desc, const Point3F &start, const Point3F &end, const ColorI &color );
+   void drawArrow( const GFXStateBlockDesc &desc, const Point3F &start, const Point3F &end, const ColorI &color, F32 baseRad = 0.0f);
    void drawFrustum( const Frustum& f, const ColorI &color );   
 
    /// Draw a solid or wireframe (depending on fill mode of @a desc) polyhedron with the given color.