VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
gndAggPathMetric.h File Reference

Go to the source code of this file.

Detailed Description

/******************************************************************************* ** 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; //!


Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)