|
|
@ -160,7 +160,12 @@ Matrix GetCameraProjectionMatrix(Camera* camera, float aspect); |
|
|
|
// MatrixOrtho() |
|
|
|
// MatrixIdentity() |
|
|
|
|
|
|
|
// raylib required functionality: GetMouseDelta(), GetMouseWheelMove(), IsKeyDown(), IsKeyPressed(), GetFrameTime() |
|
|
|
// raylib required functionality: |
|
|
|
// GetMouseDelta() |
|
|
|
// GetMouseWheelMove() |
|
|
|
// IsKeyDown() |
|
|
|
// IsKeyPressed() |
|
|
|
// GetFrameTime() |
|
|
|
|
|
|
|
//---------------------------------------------------------------------------------- |
|
|
|
// Defines and Macros |
|
|
@ -396,12 +401,13 @@ Matrix GetCameraProjectionMatrix(Camera *camera, float aspect) |
|
|
|
{ |
|
|
|
if (camera->projection == CAMERA_PERSPECTIVE) |
|
|
|
{ |
|
|
|
return MatrixPerspective(camera->fovy * DEG2RAD, aspect, CAMERA_CULL_DISTANCE_NEAR, CAMERA_CULL_DISTANCE_FAR); |
|
|
|
return MatrixPerspective(camera->fovy*DEG2RAD, aspect, CAMERA_CULL_DISTANCE_NEAR, CAMERA_CULL_DISTANCE_FAR); |
|
|
|
} |
|
|
|
else if (camera->projection == CAMERA_ORTHOGRAPHIC) |
|
|
|
{ |
|
|
|
double top = camera->fovy / 2.0; |
|
|
|
double right = top * aspect; |
|
|
|
double top = camera->fovy/2.0; |
|
|
|
double right = top*aspect; |
|
|
|
|
|
|
|
return MatrixOrtho(-right, right, -top, top, CAMERA_CULL_DISTANCE_NEAR, CAMERA_CULL_DISTANCE_FAR); |
|
|
|
} |
|
|
|
|
|
|
@ -415,10 +421,10 @@ void UpdateCamera(Camera *camera, int mode) |
|
|
|
{ |
|
|
|
Vector2 mousePositionDelta = GetMouseDelta(); |
|
|
|
|
|
|
|
bool moveInWorldPlane = mode == CAMERA_FIRST_PERSON || mode == CAMERA_THIRD_PERSON; |
|
|
|
bool rotateAroundTarget = mode == CAMERA_THIRD_PERSON || mode == CAMERA_ORBITAL; |
|
|
|
bool lockView = mode == CAMERA_FIRST_PERSON || mode == CAMERA_THIRD_PERSON || mode == CAMERA_ORBITAL; |
|
|
|
bool rotateUp = mode == CAMERA_FREE; |
|
|
|
bool moveInWorldPlane = p">((mode == CAMERA_FIRST_PERSON) || p">(mode == CAMERA_THIRD_PERSON)); |
|
|
|
bool rotateAroundTarget = p">((mode == CAMERA_THIRD_PERSON) || p">(mode == CAMERA_ORBITAL)); |
|
|
|
bool lockView = p">((mode == CAMERA_FIRST_PERSON) || (mode == CAMERA_THIRD_PERSON) || (mode == CAMERA_ORBITAL)); |
|
|
|
bool rotateUp = p">(mode == CAMERA_FREE); |
|
|
|
|
|
|
|
if (mode == CAMERA_ORBITAL) |
|
|
|
{ |
|
|
@ -450,7 +456,7 @@ void UpdateCamera(Camera *camera, int mode) |
|
|
|
//if (IsKeyDown(KEY_LEFT_CONTROL)) CameraMoveUp(camera, -CAMERA_MOVE_SPEED); |
|
|
|
} |
|
|
|
|
|
|
|
if (mode == CAMERA_THIRD_PERSON || mode == CAMERA_ORBITAL) |
|
|
|
if (p">(mode == CAMERA_THIRD_PERSON) || p">(mode == CAMERA_ORBITAL)) |
|
|
|
{ |
|
|
|
// Zoom target distance |
|
|
|
CameraMoveToTarget(camera, -GetMouseWheelMove()); |
|
|
|