paysages3d/src/rendering/camera.h

66 lines
3.5 KiB
C++

#ifndef _PAYSAGES_CAMERA_H_
#define _PAYSAGES_CAMERA_H_
#include "rendering_global.h"
#include "tools/euclid.h"
#include "tools/boundingbox.h"
namespace paysages {
namespace system {class PackStream;}
}
typedef struct CameraDefinition CameraDefinition;
typedef struct
{
double yfov;
double xratio;
double znear;
double zfar;
} CameraPerspective;
RENDERINGSHARED_EXPORT void cameraSave(PackStream* stream, CameraDefinition* camera);
RENDERINGSHARED_EXPORT void cameraLoad(PackStream* stream, CameraDefinition* camera);
RENDERINGSHARED_EXPORT CameraDefinition* cameraCreateDefinition();
RENDERINGSHARED_EXPORT void cameraDeleteDefinition(CameraDefinition* definition);
RENDERINGSHARED_EXPORT void cameraCopyDefinition(CameraDefinition* source, CameraDefinition* destination);
RENDERINGSHARED_EXPORT void cameraValidateDefinition(CameraDefinition* definition, int check_above);
RENDERINGSHARED_EXPORT Vector3 cameraGetLocation(CameraDefinition* camera);
RENDERINGSHARED_EXPORT Vector3 cameraGetTarget(CameraDefinition* camera);
RENDERINGSHARED_EXPORT Vector3 cameraGetUpVector(CameraDefinition* camera);
RENDERINGSHARED_EXPORT double cameraGetRoll(CameraDefinition* camera);
RENDERINGSHARED_EXPORT Vector3 cameraGetDirection(CameraDefinition* camera);
RENDERINGSHARED_EXPORT Vector3 cameraGetDirectionNormalized(CameraDefinition* camera);
RENDERINGSHARED_EXPORT VectorSpherical cameraGetDirectionSpherical(CameraDefinition* camera);
RENDERINGSHARED_EXPORT CameraPerspective cameraGetPerspective(CameraDefinition* camera);
RENDERINGSHARED_EXPORT double cameraGetRealDepth(CameraDefinition* camera, Vector3 projected);
RENDERINGSHARED_EXPORT void cameraSetLocation(CameraDefinition* camera, Vector3 location);
RENDERINGSHARED_EXPORT void cameraSetLocationCoords(CameraDefinition* camera, double x, double y, double z);
RENDERINGSHARED_EXPORT void cameraSetTarget(CameraDefinition* camera, Vector3 target);
RENDERINGSHARED_EXPORT void cameraSetTargetCoords(CameraDefinition* camera, double x, double y, double z);
RENDERINGSHARED_EXPORT void cameraSetRoll(CameraDefinition* camera, double angle);
RENDERINGSHARED_EXPORT void cameraSetZoomToTarget(CameraDefinition* camera, double zoom);
RENDERINGSHARED_EXPORT void cameraStrafeForward(CameraDefinition* camera, double value);
RENDERINGSHARED_EXPORT void cameraStrafeRight(CameraDefinition* camera, double value);
RENDERINGSHARED_EXPORT void cameraStrafeUp(CameraDefinition* camera, double value);
RENDERINGSHARED_EXPORT void cameraRotateYaw(CameraDefinition* camera, double value);
RENDERINGSHARED_EXPORT void cameraRotatePitch(CameraDefinition* camera, double value);
RENDERINGSHARED_EXPORT void cameraRotateRoll(CameraDefinition* camera, double value);
RENDERINGSHARED_EXPORT void cameraSetRenderSize(CameraDefinition* camera, int width, int height);
RENDERINGSHARED_EXPORT Vector3 cameraProject(CameraDefinition* camera, Vector3 point);
RENDERINGSHARED_EXPORT Vector3 cameraUnproject(CameraDefinition* camera, Vector3 point);
/*void cameraPushOverlay(CameraDefinition* camera, Color col, f_RenderFragmentCallback callback);*/
RENDERINGSHARED_EXPORT int cameraIsBoxInView(CameraDefinition* camera, Vector3 center, double xsize, double ysize, double zsize);
RENDERINGSHARED_EXPORT int cameraIsUnprojectedBoxInView(CameraDefinition* camera, BoundingBox* box);
RENDERINGSHARED_EXPORT int cameraIsProjectedBoxInView(CameraDefinition* camera, BoundingBox* box);
RENDERINGSHARED_EXPORT int cameraTransitionToAnother(CameraDefinition* current, CameraDefinition* wanted, double factor);
#endif