Free Electron
|
Tree-searchable Surface. More...
#include <SurfaceSearchable.h>
Classes | |
class | PartitionSearchable |
match partition strings against patterns More... | |
Public Types | |
enum | Arrays { e_arrayNull = 0x00, e_arrayColor = 0x01, e_arrayUV = 0x02, e_arrayRadius = 0x04 } |
Public Types inherited from fe::ext::SurfaceI | |
enum | SampleMethod { e_flat, e_linear, e_pointNormal, e_spline } |
enum | Containment { e_unknown, e_inside, e_outside } |
enum | Accuracy { e_sphere, e_triangle } |
enum | Triangulation { e_existingPoints, e_balanced } |
enum | Restrictions { e_unrestricted = 0x0, e_excludeCurves = 0x1, e_excludePolygons = 0x2 } |
Public Member Functions | |
virtual Protectable * | clone (Protectable *pInstance=NULL) |
virtual void | setRefinement (U32 a_refinement) |
Set limitation of surface improvement, such as subdivision. More... | |
virtual void | setAccuracy (SurfaceI::Accuracy a_accuracy) |
Set what primitive to search down to. More... | |
virtual void | setSearchable (BWORD a_searchable) |
Set whether this surface may be searched. More... | |
virtual void | setSearch (String a_searchName) |
Set component to use for searching. More... | |
virtual I32 | triangleCount (void) |
Number of barycentric elements. More... | |
virtual SpatialTransform | sample (Vector2 a_uv) const |
virtual void | prepareForSample (void) |
virtual void | prepareForSearch (void) |
virtual void | prepareForUVSearch (void) |
virtual Array< sp< SurfaceI::ImpactI > > | nearestPoints (const Vector2 &a_uv, Real a_maxDistance, U32 a_hitLimit) const |
virtual sp< ImpactI > | nearestPoint (const Vector2 &a_uv) const |
virtual Array< sp< SurfaceI::ImpactI > > | nearestPoints (const SpatialVector &a_origin, Real a_maxDistance, U32 a_hitLimit, sp< PartitionI > a_spPartition) const |
virtual sp< ImpactI > | nearestPoint (const SpatialVector &a_origin, Real a_maxDistance) const |
virtual sp< ImpactI > | nearestPoint (const SpatialVector &a_origin, Real a_maxDistance, BWORD a_anyHit) const |
virtual Array< sp< SurfaceI::ImpactI > > | rayImpacts (const SpatialVector &a_origin, const SpatialVector &a_direction, Real a_maxDistance, U32 a_hitLimit) const |
virtual sp< ImpactI > | rayImpact (const SpatialVector &a_origin, const SpatialVector &a_direction, Real a_maxDistance, BWORD a_anyHit) const |
virtual void | partitionWith (String a_attributeName) |
virtual U32 | partitionCount (void) const |
virtual String | partitionName (U32 a_index) const |
virtual Vector4 | partitionSphere (U32 a_index) const |
virtual I32 | setPartitionFilter (String a_filterString, PartitionI::FilterMethod a_filterMethod) |
virtual sp< PartitionI > | createPartition (void) |
virtual void | draw (sp< DrawI > a_spDrawI, const Color *a_pColor, sp< DrawBufferI > a_spDrawBuffer) const |
virtual void | draw (const SpatialTransform &a_rTransform, sp< DrawI > a_spDrawI, const fe::Color *a_pColor, sp< DrawBufferI > a_spDrawBuffer, sp< PartitionI > a_spPartition) const |
Public Member Functions inherited from fe::ext::SurfaceSphere | |
virtual SpatialVector | center (void) |
virtual SpatialVector | center (void) const |
virtual Real | radius (void) |
virtual Real | radius (void) const |
virtual Color | diffuse (void) const |
Return the diffuse color. More... | |
virtual void | bind (Record &rRecord) |
void | setRadius (Real a_radius) |
void | setCenter (const SpatialVector &a_rCenter) |
Public Member Functions inherited from fe::ext::SurfaceBase | |
virtual void | protect (void) |
virtual void | bind (Instance a_instance) |
associate with model data More... | |
virtual void | setSampleMethod (SampleMethod a_sampleMethod) |
virtual void | setNodeName (String a_nodeName) |
virtual String | nodeName (void) const |
virtual void | setRestrictions (Restrictions a_restrictions) |
virtual Restrictions | restrictions (void) const |
virtual void | setTriangulation (Triangulation a_triangulation) |
Set how 4+ vertex polygons break down. More... | |
virtual SpatialTransform | sample (Vector2 a_uv) |
virtual SpatialTransform | sample (I32 a_triangleIndex, SpatialBary a_barycenter) |
virtual SpatialTransform | sample (I32 a_triangleIndex, SpatialBary a_barycenter) const |
virtual SpatialTransform | sample (I32 a_triangleIndex, SpatialBary a_barycenter, SpatialVector a_tangent) const |
virtual sp< ImpactI > | sampleImpact (I32 a_triangleIndex, SpatialBary a_barycenter) |
virtual sp< ImpactI > | sampleImpact (I32 a_triangleIndex, SpatialBary a_barycenter) const |
virtual sp< ImpactI > | sampleImpact (I32 a_triangleIndex, SpatialBary a_barycenter, SpatialVector a_tangent) const |
virtual SpatialVector | samplePoint (const SpatialTransform &a_transform, Vector2 a_uv) |
virtual SpatialVector | samplePoint (Vector2 a_uv) |
virtual SpatialVector | samplePoint (const SpatialTransform &a_transform, Vector2 a_uv) const |
virtual SpatialVector | samplePoint (Vector2 a_uv) const |
virtual SpatialVector | sampleNormal (const SpatialTransform &a_transform, Vector2 a_uv) |
virtual SpatialVector | sampleNormal (Vector2 a_uv) |
virtual SpatialVector | sampleNormal (const SpatialTransform &a_transform, Vector2 a_uv) const |
virtual SpatialVector | sampleNormal (Vector2 a_uv) const |
virtual Containment | containment (const SpatialVector &a_origin) |
virtual Containment | containment (const SpatialVector &a_origin) const |
virtual sp< ImpactI > | nearestPoint (const SpatialTransform &a_transform, const SpatialVector &a_origin, Real a_maxDistance) |
virtual sp< ImpactI > | nearestPoint (const SpatialVector &a_origin, Real a_maxDistance, BWORD a_anyHit) |
virtual sp< ImpactI > | nearestPoint (const SpatialVector &a_origin, Real a_maxDistance) |
virtual sp< ImpactI > | nearestPoint (const SpatialVector &a_origin) |
virtual sp< ImpactI > | nearestPoint (const Vector2 &a_uv) |
virtual sp< ImpactI > | nearestPoint (const SpatialTransform &a_transform, const SpatialVector &a_origin, Real a_maxDistance) const |
virtual sp< ImpactI > | nearestPoint (const SpatialVector &a_origin) const |
virtual Array< sp< SurfaceI::ImpactI > > | nearestPoints (const Vector2 &a_uv, Real a_maxDistance, U32 a_hitLimit) |
virtual Array< sp< SurfaceI::ImpactI > > | nearestPoints (const SpatialVector &a_origin, Real a_maxDistance, U32 a_hitLimit) |
virtual Array< sp< SurfaceI::ImpactI > > | nearestPoints (const SpatialVector &a_origin, Real a_maxDistance, U32 a_hitLimit) const |
virtual Array< sp< SurfaceI::ImpactI > > | nearestPoints (const SpatialVector &a_origin, Real a_maxDistance, U32 a_hitLimit, sp< PartitionI > a_spPartition) |
virtual sp< ImpactI > | rayImpact (const SpatialTransform &a_transform, const SpatialVector &a_origin, const SpatialVector &a_direction, Real a_maxDistance, BWORD a_anyHit) |
virtual sp< ImpactI > | rayImpact (const SpatialTransform &a_transform, const SpatialVector &a_origin, const SpatialVector &a_direction, Real a_maxDistance, BWORD a_anyHit) const |
virtual sp< ImpactI > | rayImpact (const SpatialVector &a_origin, const SpatialVector &a_direction, Real a_maxDistance, BWORD a_anyHit) |
virtual sp< ImpactI > | rayImpact (const SpatialVector &a_origin, const SpatialVector &a_direction, Real a_maxDistance) |
virtual sp< ImpactI > | rayImpact (const SpatialVector &a_origin, const SpatialVector &a_direction, Real a_maxDistance) const |
virtual Array< sp< SurfaceI::ImpactI > > | rayImpacts (const SpatialVector &a_origin, const SpatialVector &a_direction, Real a_maxDistance, U32 a_hitLimit) |
virtual sp< ImpactI > | coneImpact (const SpatialVector &a_origin, const SpatialVector &a_direction, Real a_maxDistance, Real a_coneAngle, sp< DrawI > a_spDrawI) |
virtual sp< ImpactI > | coneImpact (const SpatialTransform &a_transform, const SpatialVector &a_origin, const SpatialVector &a_direction, Real a_maxDistance, Real a_coneAngle, sp< DrawI > a_spDrawI) |
virtual sp< ImpactI > | capsuleImpact (const SpatialVector &a_origin, const SpatialVector &a_direction, Real a_maxDistance, Real a_radius, BWORD a_anyHit, sp< DrawI > a_spDrawI, sp< ImpactI > a_spLastImpact) |
virtual sp< ImpactI > | capsuleImpact (const SpatialTransform &a_transform, const SpatialVector &a_origin, const SpatialVector &a_direction, Real a_maxDistance, Real a_radius, BWORD a_anyHit, sp< DrawI > a_spDrawI, sp< ImpactI > a_spLastImpact) |
virtual sp< GaugeI > | gauge (void) |
virtual I32 | setPartitionFilter (String a_filterString) |
virtual void | draw (sp< DrawI > a_spDrawI, const fe::Color *a_pColor) |
Draw with current settings. More... | |
virtual void | draw (sp< DrawI > a_spDrawI, const fe::Color *a_pColor) const |
virtual void | draw (const SpatialTransform &a_transform, sp< DrawI > a_spDrawI, const fe::Color *a_pColor) |
virtual void | draw (const SpatialTransform &a_transform, sp< DrawI > a_spDrawI, const fe::Color *a_pColor) const |
virtual void | draw (const SpatialTransform &a_transform, sp< DrawI > a_spDrawI, const fe::Color *a_pColor, sp< DrawBufferI > a_spDrawBuffer, sp< PartitionI > a_spPartition) |
Public Member Functions inherited from fe::Component | |
const String & | name (void) const |
Return the components chosen name. More... | |
const String | verboseName (void) const |
Return the annotated chosen name. More... | |
void | setName (const String &name) |
Rename the component to anything you want. More... | |
hp< Registry > | registry (void) const |
Get the Registry that created this component. More... | |
void | adjoin (sp< Component > spComponent) |
Tie this component's lifetime to another. More... | |
sp< Component > | create (const String &implementation, BWORD quiet=FALSE) const |
Convienience function to registry()->create() More... | |
void | disjoin (void) |
Untie component from Hub, if connected. More... | |
String | factoryName (void) |
void | setLibrary (sp< Library > spLibrary) |
Store a reference to the library used to instantiate this component. More... | |
sp< Library > | library (void) |
Get the library that created the component. More... | |
void | setFactoryIndex (I32 a_factoryIndex) |
Set the library's factory index. More... | |
I32 | factoryIndex (void) |
Get the library's factory index. More... | |
void | setSingleton (BWORD set) |
Specify whether component is a singleton. More... | |
BWORD | isSingleton (void) |
Return whether component is a singleton. More... | |
virtual void | acquire (void) |
Specialized reference increment. More... | |
virtual void | release (void) |
Specialized reference decrement. More... | |
Public Member Functions inherited from fe::Handled< Component > | |
const hp< Component > & | getHandle (void) const |
Get a safe handle to this object. More... | |
Public Member Functions inherited from fe::Protectable | |
virtual I32 | protection (void) const |
virtual void | unprotect (void) |
Public Member Functions inherited from fe::Counted | |
virtual void | acquire (int &rCount) |
Increment the reference count (and get the count) More... | |
virtual void | abandon (void) |
Decrement the reference count. More... | |
int | count (void) const |
Return the count of references. More... | |
void | setName (const String &) |
void | trackReference (void *pReference, String what) |
void | untrackReference (void *pReference) |
void | registerRegion (void *pT, U32 bytes) |
Public Member Functions inherited from fe::Initialized | |
void | initializeAll (void) |
void | setActive (bool a_active) |
Public Member Functions inherited from fe::ext::SurfaceI | |
virtual void | setSampleMethod (SampleMethod a_sampleMethod)=0 |
Protected Member Functions | |
virtual void | drawInternal (BWORD a_transformed, const SpatialTransform *a_pTransform, sp< DrawI > a_spDrawI, const fe::Color *a_pColor, sp< DrawBufferI > a_spDrawBuffer, sp< PartitionI > a_spPartition) const |
I32 | lookupPartition (String a_partitionString) |
virtual void | cache (void) |
void | clear () |
void | filterUV (void) |
void | calcTangents (void) |
void | calcBoundingSphere (void) |
void | setOptionalArrays (Arrays a_arrays) |
void | resizeArrays (U32 a_elementCount, U32 a_verticeCount) |
void | resizeFor (U32 a_primitiveCount, U32 a_vertexCount, U32 &a_rElementAllocated, U32 &a_rVertexAllocated) |
Protected Member Functions inherited from fe::ext::SurfaceSphere | |
virtual void | resolveImpact (sp< ImpactI > a_spImpactI) const |
Protected Member Functions inherited from fe::ext::SurfaceBase | |
sp< ImpactI > | shootRay (const SpatialVector &a_origin, const SpatialVector &a_direction, Real a_maxDistance, BWORD a_anyHit, sp< ImpactI > a_spLastImpact) |
sp< ImpactI > | tubeImpact (const SpatialVector &a_origin, const SpatialVector &a_direction, Real a_maxDistance, Real a_radius0, Real a_radius1, BWORD a_anyHit, sp< DrawI > a_spDrawI, sp< ImpactI > a_spLastImpact) |
virtual void | checkCache (void) |
Protected Member Functions inherited from fe::Handled< Component > | |
void | abandonHandle (void) |
Protected Member Functions inherited from fe::Counted | |
int | releaseInternal (void) |
Decrement the reference count. More... | |
void | suppressReport (void) |
Protected Member Functions inherited from fe::Initialized | |
void | addInitializer (InitializeFunction function) |
Protected Attributes | |
U32 | m_refinement |
SurfaceI::Accuracy | m_accuracy |
BWORD | m_searchable |
String | m_searchName |
U32 | m_elements |
U32 | m_vertices |
Arrays | m_optionalArrays |
Vector3i * | m_pElementArray |
SpatialVector * | m_pVertexArray |
SpatialVector * | m_pNormalArray |
SpatialVector * | m_pTangentArray |
Vector2 * | m_pUVArray |
SpatialVector * | m_pUV3Array |
Color * | m_pColorArray |
Real * | m_pRadiusArray |
I32 * | m_pTriangleIndexArray |
I32 * | m_pPartitionIndexArray |
I32 * | m_pPointIndexArray |
I32 * | m_pPrimitiveIndexArray |
Array< I32 > | m_vertexMap |
Array< I32 > | m_hullPointMap |
Array< Vector4i > | m_hullFacePointArray |
sp< Component > | m_spSearchComponent |
sp< SpatialTreeI > | m_spSpatialTree |
sp< SpatialTreeI > | m_spUVTree |
String | m_partitionAttr |
sp< PartitionI > | m_spPartition |
Array< Vector4 > | m_partitionSphere |
CountedPoolCore * | m_pImpactPool |
Protected Attributes inherited from fe::ext::SurfaceSphere | |
WeakRecord | m_record |
SpatialVector | m_center |
Real | m_radius |
Color | m_emissive |
Color | m_ambient |
Color | m_diffuse |
Color | m_specular |
Real | m_shininess |
CountedPool< Impact > | m_sphereImpactPool |
Protected Attributes inherited from fe::ext::SurfaceBase | |
BWORD | m_cached |
SampleMethod | m_sampleMethod |
String | m_nodeName |
Restrictions | m_restrictions |
Additional Inherited Members | |
Static Public Member Functions inherited from fe::Counted | |
static String | reportTracker (void) |
static U32 | trackerCount (void) |
Protected Types inherited from fe::Initialized | |
typedef void(* | InitializeFunction) (Initialized *) |
Static Protected Member Functions inherited from fe::ext::SurfaceBase | |
static void | drawHit (sp< DrawI > a_spDrawI, SpatialVector a_center, Real a_radius, Color a_color) |
Related Functions inherited from fe::Component | |
FE_DL_EXPORT void FE_CDECL | checkUnload (sp< Library > &pLibrary, Component *pComponent=NULL) |
Delete the component and unload libraries where appropriate. More... | |
Tree-searchable Surface.
|
inlinevirtual |
Set what primitive to search down to.
Using sphere accuracy will only resolve to the lowest bounding sphere.
Reimplemented from fe::ext::SurfaceBase.
|
inlinevirtual |
Set limitation of surface improvement, such as subdivision.
Refinement may be fixed or adaptive and is not necessarily uniformly applied.
Some surfaces may ignore this setting.
Reimplemented from fe::ext::SurfaceBase.
|
inlinevirtual |
Set component to use for searching.
This is presumed to be an implementation of SpatialTreeI. Leave blank for default.
Reimplemented from fe::ext::SurfaceBase.
|
inlinevirtual |
Set whether this surface may be searched.
Turning this off may allow some implementations to make optimization.
An implemention is permitted to remain searchable regardless.
Reimplemented from fe::ext::SurfaceBase.
|
inlinevirtual |
Number of barycentric elements.
Use this for barycentric sampling. For surfaces converted into triangles, this is the number of triangle. For curves, this is really the curve count. If unknown, an implementation may return -1.
Reimplemented from fe::ext::SurfaceBase.