/*
|
* Java port of Bullet (c) 2008 Martin Dvorak <jezek2@advel.cz>
|
*
|
* Bullet Continuous Collision Detection and Physics Library
|
* Copyright (c) 2003-2008 Erwin Coumans http://www.bulletphysics.com/
|
*
|
* This software is provided 'as-is', without any express or implied warranty.
|
* In no event will the authors be held liable for any damages arising from
|
* the use of this software.
|
*
|
* Permission is granted to anyone to use this software for any purpose,
|
* including commercial applications, and to alter it and redistribute it
|
* freely, subject to the following restrictions:
|
*
|
* 1. The origin of this software must not be misrepresented; you must not
|
* claim that you wrote the original software. If you use this software
|
* in a product, an acknowledgment in the product documentation would be
|
* appreciated but is not required.
|
* 2. Altered source versions must be plainly marked as such, and must not be
|
* misrepresented as being the original software.
|
* 3. This notice may not be removed or altered from any source distribution.
|
*/
|
|
package com.bulletphysics.collision.broadphase;
|
|
/**
|
* Dispatcher uses these types.<p>
|
*
|
* IMPORTANT NOTE: The types are ordered polyhedral, implicit convex and concave
|
* to facilitate type checking.
|
*
|
* @author jezek2
|
*/
|
public enum BroadphaseNativeType {
|
|
// polyhedral convex shapes:
|
BOX_SHAPE_PROXYTYPE,
|
TRIANGLE_SHAPE_PROXYTYPE,
|
TETRAHEDRAL_SHAPE_PROXYTYPE,
|
CONVEX_TRIANGLEMESH_SHAPE_PROXYTYPE,
|
CONVEX_HULL_SHAPE_PROXYTYPE,
|
|
// implicit convex shapes:
|
IMPLICIT_CONVEX_SHAPES_START_HERE,
|
SPHERE_SHAPE_PROXYTYPE,
|
MULTI_SPHERE_SHAPE_PROXYTYPE,
|
CAPSULE_SHAPE_PROXYTYPE,
|
CONE_SHAPE_PROXYTYPE,
|
CONVEX_SHAPE_PROXYTYPE,
|
CYLINDER_SHAPE_PROXYTYPE,
|
UNIFORM_SCALING_SHAPE_PROXYTYPE,
|
MINKOWSKI_SUM_SHAPE_PROXYTYPE,
|
MINKOWSKI_DIFFERENCE_SHAPE_PROXYTYPE,
|
|
// concave shapes:
|
CONCAVE_SHAPES_START_HERE,
|
|
// keep all the convex shapetype below here, for the check IsConvexShape in broadphase proxy!
|
TRIANGLE_MESH_SHAPE_PROXYTYPE,
|
SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE,
|
|
// used for demo integration FAST/Swift collision library and Bullet:
|
FAST_CONCAVE_MESH_PROXYTYPE,
|
|
// terrain:
|
TERRAIN_SHAPE_PROXYTYPE,
|
|
// used for GIMPACT Trimesh integration:
|
GIMPACT_SHAPE_PROXYTYPE,
|
|
// multimaterial mesh:
|
MULTIMATERIAL_TRIANGLE_MESH_PROXYTYPE,
|
|
EMPTY_SHAPE_PROXYTYPE,
|
STATIC_PLANE_PROXYTYPE,
|
CONCAVE_SHAPES_END_HERE,
|
COMPOUND_SHAPE_PROXYTYPE,
|
|
SOFTBODY_SHAPE_PROXYTYPE,
|
|
INVALID_SHAPE_PROXYTYPE,
|
|
MAX_BROADPHASE_COLLISION_TYPES;
|
|
private static BroadphaseNativeType[] values = values();
|
|
public static BroadphaseNativeType forValue(int value) {
|
return values[value];
|
}
|
|
public boolean isPolyhedral() {
|
return (ordinal() < IMPLICIT_CONVEX_SHAPES_START_HERE.ordinal());
|
}
|
|
public boolean isConvex() {
|
return (ordinal() < CONCAVE_SHAPES_START_HERE.ordinal());
|
}
|
|
public boolean isConcave() {
|
return ((ordinal() > CONCAVE_SHAPES_START_HERE.ordinal()) &&
|
(ordinal() < CONCAVE_SHAPES_END_HERE.ordinal()));
|
}
|
|
public boolean isCompound() {
|
return (ordinal() == COMPOUND_SHAPE_PROXYTYPE.ordinal());
|
}
|
|
public boolean isInfinite() {
|
return (ordinal() == STATIC_PLANE_PROXYTYPE.ordinal());
|
}
|
|
}
|