All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Public Member Functions | List of all members
Eegeo::Resources::Terrain::Collision::TerrainRayPicker Class Reference

#include <TerrainRayPicker.h>

Inheritance diagram for Eegeo::Resources::Terrain::Collision::TerrainRayPicker:
Eegeo::NonCopyable

Public Member Functions

 TerrainRayPicker (const Eegeo::Resources::Terrain::Heights::TerrainHeightProvider &terrainHeightProvider, const Eegeo::Collision::ICollisionBvhProvider &collisionMeshResourceProvider)
 
virtual bool TryGetRayIntersection (const Eegeo::dv3 &rayOrigin, const Eegeo::dv3 &rayDirection, Eegeo::dv3 &out_ecefIntersectionPoint, double &out_param)
 

Additional Inherited Members

- Protected Member Functions inherited from Eegeo::NonCopyable
 NonCopyable (const NonCopyable &)=delete
 
NonCopyableoperator= (const NonCopyable &)=delete
 

Detailed Description

Implements IRayPicker to provide ray intersection query against streamed terrain collision resources. Collision resources are provided by ICollisionBvhProvider (an appropriate instance can be obtained via EegeoWorld::GetCollisionMeshResourceProvider)

Member Function Documentation

bool Eegeo::Resources::Terrain::Collision::TerrainRayPicker::TryGetRayIntersection ( const Eegeo::dv3 rayOrigin,
const Eegeo::dv3 rayDirection,
Eegeo::dv3 out_ecefIntersectionPoint,
double &  out_param 
)
virtual

Performs a ray intersection query against streamed terrain collision mesh resources. If an intersection is found, returns true, with intersection information passed in out parameters. If no intersection with terrain collision mesh is found, a fallback test is performed. If the ray intersects the Earth-sphere (a sphere with radius of Earth at sea-level), terrain height is queried at this point. If successful, the point on terrain above the Earth-sphere intersection is assiged as output parameter, and returns true. If fallback test also fails to find an intersection, returns false.

Parameters
rayOriginstart point of ray, in Ecef coordinates
rayDirectionnormalised direction of ray, in Ecef coordinates
out_ecefIntersectionPoint[out] point of intersection in Ecef coordinates if successful, else zero vector
out_param[out] distance in metres from rayOrigin to out_ecefIntersectionPoint if successful, else zero
Returns
true if intersection found, else false

The documentation for this class was generated from the following files: