ug4
|
traverses a node-tree and projects a given point to the contained geometry. More...
#include <traverser_project_point.h>
Public Member Functions | |
CollisionElementID | get_closest_element_id () |
int | get_closest_element_type () |
returns the type of the element to which the closest distance was found. | |
vector3 | get_closest_point () |
number | get_distance () |
virtual bool | project (const vector3 &point, SPNode nodeGraph, vector3 *pPointNormal=NULL) |
Traverser_ProjectPoint () | |
virtual | ~Traverser_ProjectPoint () |
Protected Types | |
enum | SearchState { SEARCHING = 0 , FORCE_FIND , GOT_ONE } |
Protected Member Functions | |
virtual void | handle_boxed_group (BoxedGroupNode *boxedGroup) |
virtual void | handle_collision_edges (CollisionEdgesNode *colTrisNode) |
virtual void | handle_collision_triangles (CollisionTrianglesNode *colTrisNode) |
virtual void | handle_group (GroupNode *group) |
![]() | |
CollisionTreeRootNode * | get_current_root_node () |
virtual void | handle_collision_tree_root (CollisionTreeRootNode *colTreeRootNode) |
Traverser_CollisionTree () | |
virtual | ~Traverser_CollisionTree () |
![]() | |
void | apply (SPNode &node) |
template<typename HandlerType > | |
void | register_handler_function (unsigned int oc, HandlerType func) |
void | traverse_object (Object *obj) |
Traverser () | |
virtual | ~Traverser () |
Protected Attributes | |
vector3 | m_closestPoint |
number | m_distance |
vector3 | m_point |
Private Attributes | |
vector3 | m_boxMax |
vector3 | m_boxMin |
bool | m_checkNormals |
CollisionElementID | m_closestElemID |
int | m_closestElemIndices [3] |
int | m_closestElemType |
CollisionTreeRootNode * | m_closestRootNode |
vector3 | m_pointNormal |
SearchState | m_searchState |
traverses a node-tree and projects a given point to the contained geometry.
|
protected |
ug::node_tree::Traverser_ProjectPoint::Traverser_ProjectPoint | ( | ) |
References m_closestElemID, and m_closestElemType.
|
virtual |
CollisionElementID ug::node_tree::Traverser_ProjectPoint::get_closest_element_id | ( | ) |
after the distance of a point to the geometry has been determined, this funtion returns the id of the element closest to the point.
References m_closestElemID.
int ug::node_tree::Traverser_ProjectPoint::get_closest_element_type | ( | ) |
returns the type of the element to which the closest distance was found.
0: invalid, 2: edge, 3: triangle
|
inline |
References m_closestPoint.
Referenced by ug::AdjustEdgeLength(), and ug::AdjustEdgeLength().
|
inline |
References m_distance.
|
protectedvirtual |
Reimplemented from ug::node_tree::Traverser.
References ug::BoxBoundProbe(), ug::BoxBoxIntersection(), FORCE_FIND, GOT_ONE, handle_group(), m_boxMax, m_boxMin, m_point, m_searchState, ug::node_tree::BoxedGroupNode::max_corner(), ug::node_tree::BoxedGroupNode::min_corner(), and SEARCHING.
|
protectedvirtual |
Reimplemented from ug::node_tree::Traverser_CollisionTree.
References ug::DistancePointToLine(), ug::node_tree::Traverser_CollisionTree::get_current_root_node(), ug::node_tree::CollisionEdgesNode::get_edge_id(), ug::node_tree::CollisionEdgesNode::get_edges(), ug::node_tree::CollisionTreeRootNode::get_points(), GOT_ONE, m_boxMax, m_boxMin, m_closestElemID, m_closestElemIndices, m_closestElemType, m_closestPoint, m_closestRootNode, m_distance, m_point, m_searchState, ug::node_tree::CollisionEdgesNode::num_edges(), and ug::VecScaleAdd().
|
protectedvirtual |
Reimplemented from ug::node_tree::Traverser_CollisionTree.
References ug::CalculateTriangleNormalNoNormalize(), ug::DistancePointToTriangle(), ug::node_tree::Traverser_CollisionTree::get_current_root_node(), ug::node_tree::CollisionTreeRootNode::get_points(), ug::node_tree::CollisionTrianglesNode::get_triangle_id(), ug::node_tree::CollisionTrianglesNode::get_triangles(), GOT_ONE, m_boxMax, m_boxMin, m_checkNormals, m_closestElemID, m_closestElemIndices, m_closestElemType, m_closestPoint, m_closestRootNode, m_distance, m_point, m_pointNormal, m_searchState, ug::node_tree::CollisionTrianglesNode::num_triangles(), and ug::VecDot().
|
protectedvirtual |
Reimplemented from ug::node_tree::Traverser.
References FORCE_FIND, SmartPtr< T, FreePolicy >::get(), ug::node_tree::GroupNode::get_child(), GOT_ONE, ug::node_tree::Traverser::handle_group(), m_searchState, ug::node_tree::GroupNode::num_children(), SEARCHING, and ug::node_tree::Traverser::traverse_object().
Referenced by handle_boxed_group().
|
virtual |
References ug::node_tree::Traverser::apply(), GOT_ONE, m_checkNormals, m_closestElemID, m_closestElemType, m_distance, m_point, m_pointNormal, m_searchState, and SEARCHING.
Referenced by ug::AdjustEdgeLength(), and ug::AdjustEdgeLength().
|
private |
Referenced by handle_boxed_group(), handle_collision_edges(), and handle_collision_triangles().
|
private |
Referenced by handle_boxed_group(), handle_collision_edges(), and handle_collision_triangles().
|
private |
Referenced by handle_collision_triangles(), and project().
|
private |
|
private |
Referenced by handle_collision_edges(), and handle_collision_triangles().
|
private |
Referenced by handle_collision_edges(), handle_collision_triangles(), project(), and Traverser_ProjectPoint().
|
protected |
Referenced by get_closest_point(), handle_collision_edges(), and handle_collision_triangles().
|
private |
Referenced by handle_collision_edges(), and handle_collision_triangles().
|
protected |
Referenced by get_distance(), handle_collision_edges(), handle_collision_triangles(), and project().
|
protected |
Referenced by handle_boxed_group(), handle_collision_edges(), handle_collision_triangles(), and project().
|
private |
Referenced by handle_collision_triangles(), and project().
|
private |
Referenced by handle_boxed_group(), handle_collision_edges(), handle_collision_triangles(), handle_group(), and project().