/*
* 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());
}
}