Interface describing basic camera to be used in 3D space.
You can find more information in comments below.
template<class TYPE>
class ICamera
{
public:
virtual ICameraListener<TYPE> *getListener() = 0; // Return assigned change listener
virtual math::TVec3<TYPE> getPosition() = 0; // Return camera position
virtual PROJECTION_MODE getProjectionMode() = 0; // Return camera projection mode
virtual TViewport<TYPE> getViewport() = 0; // Return viewport
virtual TYPE getFOV() = 0; // Return field of view
virtual TYPE getAspect() = 0; // Return aspect ratio
virtual TYPE getNearPlane() = 0; // Return near clip plane
virtual TYPE getFarPlane() = 0; // Return far clip plane
virtual math::TVec3<TYPE> getDirection() = 0; // Camera look/walk direction
virtual math::TVec3<TYPE> getDirectionRight() = 0; // Return direction to the camera right
virtual math::TVec3<TYPE> getDirectionUp() = 0; // Return direction to the camera up
virtual math::TMat4<TYPE> getProjectionMatrix() = 0; // Return projection matrix
virtual math::TMat4<TYPE> getViewMatrix() = 0; // Return camera matrix
virtual math::TMat4<TYPE> getMatrix() = 0; // Return combined view-projection matrix
virtual void setListener(ICameraListener<TYPE> *value) = 0; // Assign new listener
virtual bool setPosition(const math::TVec3<TYPE> &value) = 0; // Set camera position
virtual bool setProjectionMode(const PROJECTION_MODE value) = 0; // Set projection mode
virtual bool setViewport(const TViewport<TYPE> &value) = 0; // Set viewport
virtual bool setFOV(const TYPE value) = 0; // Set field of view
virtual bool setAspect(const TYPE value) = 0; // Set aspect ratio
virtual bool setNearPlane(const TYPE value) = 0; // Set near clip plane
virtual bool setFarPlane(const TYPE value) = 0; // Set far clip plane
virtual void Release() = 0; // Delete camera
virtual bool Planes(const TYPE near_plane, const TYPE far_plane) = 0; // Set clip planes
virtual bool Frustum(const TViewport<TYPE> &viewport) = 0; // Set "frustum" projection mode
virtual bool Perspective(const TYPE fov, const TYPE aspect) = 0; // Set "perspective" projection mode
virtual bool Ortho(const TViewport<TYPE> &viewport) = 0; // Set orthographical projection mode
virtual bool MoveForward(const TYPE delta) = 0; // Move camera forward
virtual bool MoveBackward(const TYPE delta) = 0; // Move camera backward
virtual bool MoveLeft(const TYPE delta) = 0; // Move camera left
virtual bool MoveRight(const TYPE delta) = 0; // Move camera right
virtual bool MoveUp(const TYPE delta) = 0; // Move camera up
virtual bool MoveDown(const TYPE delta) = 0; // Move camera down
};
Namespace: | nitisa::graphics3d |
Include: | Nitisa/Modules/Graphics3D/Interfaces/ICamera.h |