This commit adds support for the polyhedrons and polygons sans
Torus and Quad which aren't currently supported within GeometryCache.
* Moves GeometryCache::_shapes from public to private scope
* Nothing aside from the class should be directly altering this, only querying
* Updated instances of direct referencing which looks to have been limited to prior
testing of instancing and shapes.
* Adds an accessor function for ShapeData to GeometryCache
* Consolidates point list generation to helper function
* GeometryCache::computeSimpleHullPointListForShape
* Moves GeometryCache::Shape to entity::Shape mapping to GeometryCache from
RenderableShapeEntityItem
* Adds conversion accessor to GeometryCache, GeometryCache::Shape getShapeForEntityShape
* Sets ShapeEntityItem::ShapeInfoCalculator callback committed earlier.
* This helps circumvent the issue with library inclusion. entity-render knows about
entity; however, entity doesn't know about entity-renderer; however, GeometryCache
data is needed within entity::ShapeEntityItem to compose the ShapeInfo point list data.
* This callback is set up within Application::init of the Interface as it knows about
both halves of the equation, and the callback needs to be setup prior to any entities
collision data getting generated.
* Removes _type reset within ShapeInfo::setPointCollection
* This should avoid any issues due to subversively setting the type or
incorrectly setting the type as a tangential operation.
* Audited instances of ShapeInfo::setPointCollection and all seemed to be
calling the function immediately after having set the type via
ShapeInfo::setParams
* Adds new ShapeType: SHAPE_TYPE_CIRCLE
* This type is reserved for the circle which is now treated as a special
type of Cylinder_Y with regard to collision as opposed to a simple hull.
* Fixes the issue where jumping on a circle, at times, would
result in the avatar sliding off towards an edge as if atop a
squished cone.
* Also updates ShapeInfo::getType() to return ShapeType as opposed to int
* Auditing calls showed that majority of places were comparing against ShapeType
* ShapeType::_type is a ShapeType so returning the type explicitly
is more consistent.
* ShapeInfo file houses ShapeType enum so any file aware of ShapeInfo is aware of
ShapeType enumeration.
* entity::Quad defaults to SHAPE_TYPE_ELLIPSOID
* Like entity::Shape::Torus, entity::Shape::Quad is currently unsupported within
GeometryCache::buildShapes.
* Also it appears that a Quad shape can't be created within world via the creation menu.
* There's no explicit option at present to create one.
* Trying subvert the Cube/Box creation option to generate one results in an enforced
stubby box as opposed to a quad.
* Given the aforementioned points, entity::Shape::Quad will default to
SHAPE_TYPE_ELLIPSOID as opposed to SHAPE_TYPE_BOX.
* Added Todo regarding the shape being unsupported along with a notation to create
a special ShapeType, SHAPE_TYPE_QUAD, for it should it be added in the future.
* Adds some comments and has some minor clean up.
Reviewed-by: Leander Hasty <leander@1stplayable.com>
Changes Committed:
modified: interface/src/Application.cpp
modified: interface/src/Util.cpp
modified: interface/src/Util.h
modified: libraries/entities-renderer/src/RenderableShapeEntityItem.cpp
modified: libraries/entities/src/ShapeEntityItem.cpp
modified: libraries/entities/src/ShapeEntityItem.h
modified: libraries/physics/src/ShapeFactory.cpp
modified: libraries/render-utils/src/GeometryCache.cpp
modified: libraries/render-utils/src/GeometryCache.h
modified: libraries/shared/src/ShapeInfo.cpp
modified: libraries/shared/src/ShapeInfo.h
modified: tests/gpu-test/src/TestInstancedShapes.cpp