vrecko
virtual reality framework
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
SP_CommonDefs.h File Reference

Go to the source code of this file.

Classes

class  vrecko::CollisionPointInfo
 
class  vrecko::CollisionInfo
 
class  vrecko::CollisionParams__ver1
 Parameters for the SP_SceneInterface::getCollisions() method. More...
 

Namespaces

namespace  vrecko
 Second level of space paritioning queries - detailed searching inside object.
 

Macros

#define COLL_VRECKO_EXPORT   __declspec(dllimport)
 
#define PARTITIONING_INTERFACE_DEFAULT   -1
 
#define COLPOINT_FLAGS_INVALID   0x00000001
 
#define COLPOINT_FLAGS_INTERSECTION_LINE   0x00000002
 
#define COLPOINT_FLAGS_NEG_DIST_PRESENT   0x00000004
 
#define COLPOINT_FLAGS_NORMALIZED   0x00000008
 
#define COLPOINT_FLAGS_REPRESENTANTS__MASK   0x00000FF0
 
#define COLPOINT_FLAGS_REPRESENTANTS__SHIFT   4
 
#define COLPOINT_FLAGS_REPRESENTANTS__GET(x)   ((x && COLPOINT_FLAGS_REPRESENTANTS__MASK) >> COLPOINT_FLAGS_REPRESENTANTS__SHIFT)
 
#define COLLISION_FLAGS_RAYCASTING   0x00000001
 Do not test collisions between objects, but between a ray and objects. More...
 
#define COLLISION_FLAGS_NOCONTACTS   0x00000002
 Contact points are not required. Use to speed up the tests. More...
 
#define COLLISION_FLAGS_SINGLECONTACT   0x00000004
 
#define COLLISION_FLAGS_ONLYSCENETESTS   0x00000008
 
#define COLLISION_FLAGS_ALLOW_INTERSECTIONS   0x00000010
 
#define COLLISION_FLAGS_ONLY_INTERSECTIONS   0x00000020
 No collisions will be calculated, but only intersections. More...
 
#define COLLISION_FLAGS_RUN_IN_BACKGROUND   0x00000040
 
#define COLLISION_FLAGS_USE_MTMATRIXTRANSFORM   0x00000080
 
#define COLLISION_FLAGS_ALLOW_NEGATIVE_DISTANCES   0x00000100
 
#define COLLISION_FLAGS_NO_CALCULATIONS   0x00000200
 
#define COLLISION_FLAGS_PREFER_NO_CALCULATIONS   0x00000400
 
#define COLLISION_FLAGS_NO_OLD_COLLISION_DELETION   0x00000800
 Do not delete the old collision pairs in COLLISIONS_INFO_VECTOR. More...
 
#define COLLISION_FLAGS_NO_OLD_COLLISION_DELETION   0x00000800
 Do not delete the old collision pairs in COLLISIONS_INFO_VECTOR. More...
 
#define COLLISION_FLAGSMASK_COMPARISON_FLAGS   (COLLISION_FLAGS_RAYCASTING | COLLISION_FLAGS_ONLYSCENETESTS | COLLISION_FLAGS_ALLOW_INTERSECTIONS | COLLISION_FLAGS_ONLY_INTERSECTIONS | COLLISION_FLAGS_ALLOW_NEGATIVE_DISTANCES)
 

Typedefs

typedef std::vector
< CollisionPointInfo > 
vrecko::COLLISION_POINTS_VECTOR
 
typedef DynamicArray
< CollisionInfo > 
vrecko::COLLISIONS_INFO_VECTOR
 
typedef CollisionParams__ver1 vrecko::CollisionParams
 

Macro Definition Documentation

#define COLL_VRECKO_EXPORT   __declspec(dllimport)
#define COLLISION_FLAGS_ALLOW_INTERSECTIONS   0x00000010

The processing function is allowed to return some of the points in different form: Instead of calculating a single contact point for a triangle-triangle (or another) collision, it may return the intersection line. These lines then form intersection polyline.

#define COLLISION_FLAGS_ALLOW_NEGATIVE_DISTANCES   0x00000100

The processing function is allowed to return some of the points in different form: If some parts of objects are found to be intersecting, the function may return negative distance, which means the largest intersecting distance found. Additional details may depend on the exact function.

#define COLLISION_FLAGS_NO_CALCULATIONS   0x00000200

Perform no collision calculations - only get the collisions that are already calculated (if any). This is possible only in a case when some other component is requesting collision calculations and is doing that on the background, so the thread with the results is ready at all times. WARNING: When using this flag, the running threads are searched only APPROXIMATELY... the selected thread might have slightly different parameters from those that were requested. (i.e. different distance cut-off, (dis)allowing intersections, etc.)

#define COLLISION_FLAGS_NO_OLD_COLLISION_DELETION   0x00000800

Do not delete the old collision pairs in COLLISIONS_INFO_VECTOR.

Prepared set of flags that are used in comparison (are two set of parameters the same? - Can we reuse the results?)

#define COLLISION_FLAGS_NO_OLD_COLLISION_DELETION   0x00000800

Do not delete the old collision pairs in COLLISIONS_INFO_VECTOR.

Prepared set of flags that are used in comparison (are two set of parameters the same? - Can we reuse the results?)

#define COLLISION_FLAGS_NOCONTACTS   0x00000002

Contact points are not required. Use to speed up the tests.

#define COLLISION_FLAGS_ONLY_INTERSECTIONS   0x00000020

No collisions will be calculated, but only intersections.

#define COLLISION_FLAGS_ONLYSCENETESTS   0x00000008

The precise object-object collision test (through SP_ObjectInterface) will not be executed. Only possible candidates selected by SP_SceneInterface are returned. NOTE: This also means that collision points won't be calculated.

#define COLLISION_FLAGS_PREFER_NO_CALCULATIONS   0x00000400

Similar to COLLISION_FLAGS_NO_CALCULATIONS, but if no thread performing the calculations is found, then the new calculations are made.

#define COLLISION_FLAGS_RAYCASTING   0x00000001

Do not test collisions between objects, but between a ray and objects.

#define COLLISION_FLAGS_RUN_IN_BACKGROUND   0x00000040

It is expected that the same collision test will be requested in a very near future many times (for example with the haptic collision detection). Therefore, if possible, start background thread(s) that search(es) the scene for potential collision and use the "local update" threads that try to maintain partially correct results.

#define COLLISION_FLAGS_SINGLECONTACT   0x00000004

Only one contact point is required (for each object-object collision) Use to speed up the tests.

#define COLLISION_FLAGS_USE_MTMATRIXTRANSFORM   0x00000080

FOR THE FIRST OBJECT ("LEFT" parameter) use position stored in MTMatrixTransform ability. Therefore it will be able to change the transformation many times per frame, without any possible collisions with the rendering thread.

#define COLPOINT_FLAGS_INTERSECTION_LINE   0x00000002

The points don't form a close collision pair, but are a part of the intersection polyline (form a sub-line) This can be only present if the processing function was called with COLLISION_FLAGS_ALLOW_INTERSECTIONS specified.

#define COLPOINT_FLAGS_INVALID   0x00000001

This flag marks the current point as INVALID (You should respect this flag everywhere!!!) For performance reasons, it is not deleted, but only marked using this flag.

#define COLPOINT_FLAGS_NEG_DIST_PRESENT   0x00000004

The [vecTriMaxNegativeDistance] variable contains a valid value.

#define COLPOINT_FLAGS_NORMALIZED   0x00000008

The point was transformed from collision space (i.e. voxel space or another) into a normalized space (max. collision = length 0, min. col. = length 1).

#define COLPOINT_FLAGS_REPRESENTANTS__GET (   x)    ((x && COLPOINT_FLAGS_REPRESENTANTS__MASK) >> COLPOINT_FLAGS_REPRESENTANTS__SHIFT)
#define COLPOINT_FLAGS_REPRESENTANTS__MASK   0x00000FF0
#define COLPOINT_FLAGS_REPRESENTANTS__SHIFT   4
#define PARTITIONING_INTERFACE_DEFAULT   -1

Default object/scene partitioning interface.