ice_engine::physicsΒΆ
-
namespace ice_engine::physics
Enums
-
enum UserDataType
Values:
-
enumerator TYPE_UNKNOWN
-
enumerator TYPE_BOOL
-
enumerator TYPE_INT8
-
enumerator TYPE_UINT8
-
enumerator TYPE_INT16
-
enumerator TYPE_UINT16
-
enumerator TYPE_INT32
-
enumerator TYPE_UINT32
-
enumerator TYPE_INT64
-
enumerator TYPE_UINT64
-
enumerator TYPE_FLOAT32
-
enumerator TYPE_FLOAT64
-
enumerator TYPE_OBJECT_REF
-
enumerator TYPE_OBJECT_VAL
-
enumerator TYPE_UNKNOWN
-
class CollisionShapeHandle : public ice_engine::handles::Handle<CollisionShapeHandle>
- #include <CollisionShapeHandle.hpp>
-
class GhostObjectHandle : public ice_engine::handles::PointerHandle<GhostObjectHandle>
- #include <GhostObjectHandle.hpp>
Public Static Attributes
-
static const GhostObjectHandle INVALID
-
static const GhostObjectHandle INVALID
-
class IHeightfield
- #include <IHeightfield.hpp>
Subclassed by ice_engine::Heightfield
-
class IImage
- #include <IImage.hpp>
Subclassed by ice_engine::IImage
Public Types
-
enum Format
Values:
-
enumerator FORMAT_UNKNOWN
-
enumerator FORMAT_RGB
-
enumerator FORMAT_RGBA
-
enumerator FORMAT_UNKNOWN
-
enum Format
-
class IMotionChangeListener
- #include <IMotionChangeListener.hpp>
Subclassed by ice_engine::IceEngineMotionChangeListener
-
class IPhysicsDebugRenderer
- #include <IPhysicsDebugRenderer.hpp>
Subclassed by ice_engine::IDebugRenderer
-
class IPhysicsEngine
- #include <IPhysicsEngine.hpp>
Public Functions
-
virtual ~IPhysicsEngine() = default
-
virtual void tick(const PhysicsSceneHandle &physicsSceneHandle, const float32 delta) = 0
-
virtual void renderDebug(const PhysicsSceneHandle &physicsSceneHandle) = 0
-
virtual PhysicsSceneHandle createPhysicsScene() = 0
-
virtual void destroy(const PhysicsSceneHandle &physicsSceneHandle) = 0
-
virtual void setGravity(const PhysicsSceneHandle &physicsSceneHandle, const glm::vec3 &gravity) = 0
-
virtual void setPhysicsDebugRenderer(IPhysicsDebugRenderer *physicsDebugRenderer) = 0
-
virtual void setDebugRendering(const PhysicsSceneHandle &physicsSceneHandle, const bool enabled) = 0
-
virtual CollisionShapeHandle createStaticPlaneShape(const glm::vec3 &planeNormal, const float32 planeConstant) = 0
-
virtual CollisionShapeHandle createStaticBoxShape(const glm::vec3 &dimensions) = 0
-
virtual CollisionShapeHandle createStaticSphereShape(const float32 radius) = 0
-
virtual CollisionShapeHandle createStaticTerrainShape(const IHeightfield &heightfield) = 0
-
virtual void destroy(const CollisionShapeHandle &collisionShapeHandle) = 0
-
virtual void destroyAllStaticShapes() = 0
-
virtual RigidBodyObjectHandle createRigidBodyObject(const PhysicsSceneHandle &physicsSceneHandle, const CollisionShapeHandle &collisionShapeHandle, std::unique_ptr<IMotionChangeListener> motionStateListener = nullptr, const boost::any &userData = boost::any()) = 0
-
virtual RigidBodyObjectHandle createRigidBodyObject(const PhysicsSceneHandle &physicsSceneHandle, const CollisionShapeHandle &collisionShapeHandle, const float32 mass, const float32 friction, const float32 restitution, std::unique_ptr<IMotionChangeListener> motionStateListener = nullptr, const boost::any &userData = boost::any()) = 0
-
virtual RigidBodyObjectHandle createRigidBodyObject(const PhysicsSceneHandle &physicsSceneHandle, const CollisionShapeHandle &collisionShapeHandle, const glm::vec3 &position, const glm::quat &orientation, const float32 mass = 1.0f, const float32 friction = 1.0f, const float32 restitution = 1.0f, std::unique_ptr<IMotionChangeListener> motionStateListener = nullptr, const boost::any &userData = boost::any()) = 0
-
virtual GhostObjectHandle createGhostObject(const PhysicsSceneHandle &physicsSceneHandle, const CollisionShapeHandle &collisionShapeHandle, const boost::any &userData = boost::any()) = 0
-
virtual GhostObjectHandle createGhostObject(const PhysicsSceneHandle &physicsSceneHandle, const CollisionShapeHandle &collisionShapeHandle, const glm::vec3 &position, const glm::quat &orientation, const boost::any &userData = boost::any()) = 0
-
virtual void destroy(const PhysicsSceneHandle &physicsSceneHandle, const RigidBodyObjectHandle &rigidBodyObjectHandle) = 0
-
virtual void destroy(const PhysicsSceneHandle &physicsSceneHandle, const GhostObjectHandle &ghostObjectHandle) = 0
-
virtual void destroyAllRigidBodies() = 0
-
virtual void setUserData(const PhysicsSceneHandle &physicsSceneHandle, const RigidBodyObjectHandle &rigidBodyObjectHandle, const boost::any &userData) = 0
-
virtual void setUserData(const PhysicsSceneHandle &physicsSceneHandle, const GhostObjectHandle &ghostObjectHandle, const boost::any &userData) = 0
-
virtual boost::any &getUserData(const PhysicsSceneHandle &physicsSceneHandle, const RigidBodyObjectHandle &rigidBodyObjectHandle) const = 0
-
virtual boost::any &getUserData(const PhysicsSceneHandle &physicsSceneHandle, const GhostObjectHandle &ghostObjectHandle) const = 0
-
virtual Raycast raycast(const PhysicsSceneHandle &physicsSceneHandle, const ray::Ray &ray) = 0
-
virtual std::vector<boost::variant<RigidBodyObjectHandle, GhostObjectHandle>> query(const PhysicsSceneHandle &physicsSceneHandle, const glm::vec3 &origin, const std::vector<glm::vec3> &points) = 0
-
virtual std::vector<boost::variant<RigidBodyObjectHandle, GhostObjectHandle>> query(const PhysicsSceneHandle &physicsSceneHandle, const glm::vec3 &origin, const float32 radius) = 0
-
virtual void setMotionChangeListener(const PhysicsSceneHandle &physicsSceneHandle, const RigidBodyObjectHandle &rigidBodyObjectHandle, std::unique_ptr<IMotionChangeListener> motionStateListener) = 0
-
virtual void rotation(const PhysicsSceneHandle &physicsSceneHandle, const RigidBodyObjectHandle &rigidBodyObjectHandle, const glm::quat &orientation) = 0
-
virtual glm::quat rotation(const PhysicsSceneHandle &physicsSceneHandle, const RigidBodyObjectHandle &rigidBodyObjectHandle) const = 0
-
virtual void rotation(const PhysicsSceneHandle &physicsSceneHandle, const GhostObjectHandle &ghostObjectHandle, const glm::quat &orientation) = 0
-
virtual glm::quat rotation(const PhysicsSceneHandle &physicsSceneHandle, const GhostObjectHandle &ghostObjectHandle) const = 0
-
virtual void position(const PhysicsSceneHandle &physicsSceneHandle, const RigidBodyObjectHandle &rigidBodyObjectHandle, const float32 x, const float32 y, const float32 z) = 0
-
virtual void position(const PhysicsSceneHandle &physicsSceneHandle, const RigidBodyObjectHandle &rigidBodyObjectHandle, const glm::vec3 &position) = 0
-
virtual glm::vec3 position(const PhysicsSceneHandle &physicsSceneHandle, const RigidBodyObjectHandle &rigidBodyObjectHandle) const = 0
-
virtual void position(const PhysicsSceneHandle &physicsSceneHandle, const GhostObjectHandle &ghostObjectHandle, const float32 x, const float32 y, const float32 z) = 0
-
virtual void position(const PhysicsSceneHandle &physicsSceneHandle, const GhostObjectHandle &ghostObjectHandle, const glm::vec3 &position) = 0
-
virtual glm::vec3 position(const PhysicsSceneHandle &physicsSceneHandle, const GhostObjectHandle &ghostObjectHandle) const = 0
-
virtual void mass(const PhysicsSceneHandle &physicsSceneHandle, const RigidBodyObjectHandle &rigidBodyObjectHandle, const float32 mass) = 0
-
virtual float32 mass(const PhysicsSceneHandle &physicsSceneHandle, const RigidBodyObjectHandle &rigidBodyObjectHandle) const = 0
Note: This value must be calculated, so it may not be exactly what you set originally.
-
virtual void friction(const PhysicsSceneHandle &physicsSceneHandle, const RigidBodyObjectHandle &rigidBodyObjectHandle, const float32 friction) = 0
-
virtual float32 friction(const PhysicsSceneHandle &physicsSceneHandle, const RigidBodyObjectHandle &rigidBodyObjectHandle) const = 0
-
virtual void restitution(const PhysicsSceneHandle &physicsSceneHandle, const RigidBodyObjectHandle &rigidBodyObjectHandle, const float32 restitution) = 0
-
virtual float32 restitution(const PhysicsSceneHandle &physicsSceneHandle, const RigidBodyObjectHandle &rigidBodyObjectHandle) const = 0
-
virtual ~IPhysicsEngine() = default
-
class IPhysicsEngineFactory
- #include <IPhysicsEngineFactory.hpp>
Public Functions
-
inline virtual ~IPhysicsEngineFactory()
-
virtual std::unique_ptr<IPhysicsEngine> create(utilities::Properties *properties, fs::IFileSystem *fileSystem, logger::ILogger *logger) = 0
-
inline virtual ~IPhysicsEngineFactory()
-
class PhysicsSceneHandle : public ice_engine::handles::Handle<PhysicsSceneHandle>
- #include <PhysicsSceneHandle.hpp>
-
class Raycast
- #include <Raycast.hpp>
Public Functions
-
Raycast() = default
-
inline Raycast(const ray::Ray &ray)
-
inline const ray::Ray &ray() const
-
inline void setRay(const ray::Ray &ray)
-
inline const glm::vec3 &hitPointWorld() const
-
inline void setHitPointWorld(const glm::vec3 &hitPointWorld)
-
inline const glm::vec3 &hitNormalWorld() const
-
inline void setHitNormalWorld(const glm::vec3 &hitNormalWorld)
-
inline const RigidBodyObjectHandle &rigidBodyObjectHandle() const
-
inline void setRigidBodyObjectHandle(const RigidBodyObjectHandle &rigidBodyObjectHandle)
-
inline const GhostObjectHandle &ghostObjectHandle() const
-
inline void setGhostObjectHandle(const GhostObjectHandle &ghostObjectHandle)
-
Raycast() = default
-
class RigidBodyObjectHandle : public ice_engine::handles::PointerHandle<RigidBodyObjectHandle>
- #include <RigidBodyObjectHandle.hpp>
Public Static Attributes
-
static const RigidBodyObjectHandle INVALID
-
static const RigidBodyObjectHandle INVALID
-
class UserData
- #include <UserData.hpp>
TODO: Make sure we destroy any copied objects if we set a new value for this parameter.
Public Functions
-
inline UserData()
-
inline UserData(const UserData &other)
copy this parameter.
Note that if the other UserData has an object copied by value, the copy constructor will make another copy of that object by allocating new memory and copying the contents of that object.
When this newly created parameter is destroyed, it will call the destructor on that copied object.
-
inline UserData(UserData &&other)
-
inline ~UserData()
If the parameter holds a copy of an object, the destructor for that object will be called.
-
template<typename T>
inline void valueRef(T &value) Set the parameter by reference.
-
template<typename T>
inline void value(T value) Set the parameter by value. This will make a copy of the passed in value using that values copy constructor.
Note that when the parameter object is destroyed, it will call the destructor on the copied object.
It is highly recommended that you use relatively simple values.
-
template<typename T>
inline T &valueRef()
-
template<typename T>
inline T value()
-
inline void *pointer() const
-
inline UserDataType type() const
-
template<>
inline void valueRef(bool &value)
-
template<>
inline void value(bool value)
-
template<>
inline void valueRef(uint8 &value)
-
template<>
inline void value(uint8 value)
-
template<>
inline void valueRef(int8 &value)
-
template<>
inline void value(int8 value)
-
template<>
inline void valueRef(uint16 &value)
-
template<>
inline void value(uint16 value)
-
template<>
inline void valueRef(int16 &value)
-
template<>
inline void value(int16 value)
-
template<>
inline void valueRef(uint32 &value)
-
template<>
inline void value(uint32 value)
-
template<>
inline void valueRef(int32 &value)
-
template<>
inline void value(int32 value)
-
template<>
inline void valueRef(uint64 &value)
-
template<>
inline void value(uint64 value)
-
template<>
inline void valueRef(int64 &value)
-
template<>
inline void value(int64 value)
-
template<>
inline void value(float32 value)
-
template<>
inline void valueRef(float32 &value)
-
template<>
inline void value(float64 value)
-
template<>
inline void valueRef(float64 &value)
-
template<>
inline bool value()
-
template<>
inline bool &valueRef()
-
template<>
inline uint8 value()
-
template<>
inline uint8 &valueRef()
-
template<>
inline int8 value()
-
template<>
inline int8 &valueRef()
-
template<>
inline uint16 value()
-
template<>
inline uint16 &valueRef()
-
template<>
inline int16 value()
-
template<>
inline uint32 value()
-
template<>
inline uint32 &valueRef()
-
template<>
inline int32 value()
-
template<>
inline int32 &valueRef()
-
template<>
inline uint64 value()
-
template<>
inline int64 &valueRef()
-
template<>
inline int64 value()
-
template<>
inline float32 value()
-
template<>
inline float32 &valueRef()
-
template<>
inline float64 value()
-
template<>
inline float64 &valueRef()
-
inline UserData()
-
union Value
- #include <UserData.hpp>
-
enum UserDataType