//----------------------------------------------------------------------------- // V12 Engine // // Copyright (c) 2001 GarageGames.Com // Portions Copyright (c) 2001 by Sierra Online, Inc. //----------------------------------------------------------------------------- #include "Math/mMath.h" #include "game/motionBlurLine.h" #include "PlatformWin32/platformGL.h" #include "dgl/dgl.h" #define MAX_SEG_LENGTH 10.0 //************************************************************************** // Motion Blur line //************************************************************************** MotionBlurLine::MotionBlurLine() { mLifetime = 1.0; mWidth = 0.5; mColor.set( 1.0, 1.0, 1.0, 1.0 ); segments.reserve( 100 ); } //-------------------------------------------------------------------------- // Add segment //-------------------------------------------------------------------------- void MotionBlurLine::addSegment( const Point3F &start, const Point3F &end ) { MotionBlurLineSeg segment; segment.start = start; segment.end = end; segment.startElapsedTime = 0.0; segment.endElapsedTime = 0.0; segment.color = mColor; if( segments.size() != 0 ) { MotionBlurLineSeg *lastSeg = &segments[ segments.size() - 1 ]; Point3F dir1 = lastSeg->end - lastSeg->start; F32 dir1len = dir1.len(); dir1.normalize(); Point3F dir2 = end - start; if( dir2.isZero() ) return; F32 dir2len = dir2.len(); dir2.normalize(); // check if colinear if( dir1.equal( dir2 ) ) { if( dir1len + dir2len < MAX_SEG_LENGTH ) { lastSeg->end = end; lastSeg->endElapsedTime = 0.0; return; } } lastSeg->endElapsedTime = 0.0; // synch segments } segments.push_back( segment ); } //-------------------------------------------------------------------------- // Render //-------------------------------------------------------------------------- void MotionBlurLine::render( const Point3F &camPos ) { U32 i; for( i=0; i