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
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
class IHeightfield
#include <IHeightfield.hpp>

Subclassed by ice_engine::Heightfield

Public Functions

virtual ~IHeightfield() = default
virtual const std::vector<byte> &data() const = 0
virtual uint32 width() const = 0
virtual uint32 length() const = 0
virtual uint32 height() const = 0
class IImage
#include <IImage.hpp>

Subclassed by ice_engine::IImage

Public Types

enum Format

Values:

enumerator FORMAT_UNKNOWN
enumerator FORMAT_RGB
enumerator FORMAT_RGBA

Public Functions

inline virtual ~IImage()
virtual const std::vector<byte> &data() const = 0
virtual uint32 width() const = 0
virtual uint32 height() const = 0
virtual int32 format() const = 0
class IMotionChangeListener
#include <IMotionChangeListener.hpp>

Subclassed by ice_engine::IceEngineMotionChangeListener

Public Functions

inline virtual ~IMotionChangeListener()
virtual void update(const glm::vec3 &position, const glm::quat &orientation) = 0
class IPhysicsDebugRenderer
#include <IPhysicsDebugRenderer.hpp>

Subclassed by ice_engine::IDebugRenderer

Public Functions

virtual ~IPhysicsDebugRenderer() = default
virtual void pushLine(const glm::vec3 &from, const glm::vec3 &to, const glm::vec3 &color) = 0
virtual void pushLines(const std::vector<std::tuple<glm::vec3, glm::vec3, glm::vec3>> &lineData) = 0
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
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
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)
class RigidBodyObjectHandle : public ice_engine::handles::PointerHandle<RigidBodyObjectHandle>
#include <RigidBodyObjectHandle.hpp>

Public Static Attributes

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.

inline UserData &operator=(const UserData &other)
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()
union Value
#include <UserData.hpp>

Public Members

bool valueBoolean
uint8 valueUint8
int8 valueInt8
uint16 valueUint16
int16 valueInt16
uint32 valueUint32
int32 valueInt32
uint64 valueUint64
int64 valueInt64
float32 valueFloat32
float64 valueFloat64
void *valuePointer