VR-Forces 5.0.3 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 Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)