![]() |
VR-Forces Developer's Guide
|
Go to the source code of this file.
/******************************************************************************* ** Copyright (c) 2010 MAK Technologies, Inc. ** All rights reserved. *******************************************************************************/
//! //! //!
//!DtGroundAggregatePathMetric; used in generating a path for aggregate //! movement
#pragma once
#include "vrfobjcore/pathMetric.h"
class DtGroundVehicleParameters; class DtPhysicalWorld;
//! This path metric is intended for aggregates of ground entities. //! When init() is called, the current width (defined by the bounding volume //! geometry) of the entire aggregate is recorded, and a lead entity is found //! by taking the first subordinate of the aggregate (as many time as necessary //! if this is an aggregate of aggregates) until a leaf node is found. (i.e. an //! entity with no subordinates) This entity must have a DtGroundVehicleParameters //! parameter entry, and these parameters are used to determine how the aggregate //! will move across the terrain. //! //! Transition cost is found by evaluating a number of parallel paths based on //! the width of the aggregate along each proposed path. The average of these //! costs is returned. //! #include "vrfmodel/vrfmodelDefines.h" class DT_DLL_vrfmodel DtGroundAggregatePathMetric : public DtPathMetric { public: DtGroundAggregatePathMetric(const DtSimObject* entity);
virtual ~DtGroundAggregatePathMetric();
//! Locates the lead entity of this aggregate and sets //! the myLeadEntityParameters field. virtual bool init();
//! Calculates the cost of moving directly from startPoint to endPoint for //! each of the parallel routes used by each subordinate. virtual double transitionCost(const DtPoint& startPoint, const DtPoint& endPoint) const;
//! Calculates the cost of a single parallel route //! Note: this function makes a blocking terrain call to insure the required //! data is paged in. It also sets overrideBlockingAssert on its call to //! DtPhysicalWorld::terrainHeightAndSurface to prevent an assertion. This is //! safe because this function is not called from the main simulation thread. virtual double individualTransitionCost(const DtPoint& startPoint, const DtPoint& endPoint) const;
//! Returns a cost based on the turning radius of the vehicle. virtual double turningCost(double cosAngle) const;
//! Sets the distance between terrain sample points used when //! calculating the cost of moving between two points. //! This distance will be the average used. //! Default is 5m. virtual void setTerrainSampleDistance(double distance);
//! Returns the current terrain sample distance. virtual double terrainSampleDistance() const;
//! //! Average width between samples along the lateral axis of the aggregate. //! Default is 10m. virtual void setTerrainSampleWidth(double width); virtual double terrainSampleWidth() const; //!