diff options
| author | raysan5 <raysan5@gmail.com> | 2016-03-05 15:40:08 +0100 |
|---|---|---|
| committer | raysan5 <raysan5@gmail.com> | 2016-03-05 15:40:08 +0100 |
| commit | 5ea18b9426823e92f1fc16e686702f2caadf83c9 (patch) | |
| tree | c668cd3dd6b4d80c6f521ab3b080ebf27216e81d /src/core.c | |
| parent | d8bd8634ab7d5179cb1481206176af1f8e592e75 (diff) | |
| download | raylib-5ea18b9426823e92f1fc16e686702f2caadf83c9.tar.gz raylib-5ea18b9426823e92f1fc16e686702f2caadf83c9.zip | |
Support 2d camera system -IN PROGRESS-
Diffstat (limited to 'src/core.c')
| -rw-r--r-- | src/core.c | 21 |
1 files changed, 19 insertions, 2 deletions
@@ -560,8 +560,25 @@ void BeginDrawing(void) // NOTE: Not required with OpenGL 3.3+ } -// Setup drawing canvas with extended parameters -void BeginDrawingEx(int blendMode, Shader shader, Matrix transform) +// Setup drawing canvas with 2d camera +void BeginDrawingEx(Camera2D camera) +{ + BeginDrawing(); + + // TODO: Consider origin offset on position, rotation, scaling + + Matrix matRotation = MatrixRotate((Vector3){ 0.0f, 0.0f, 1.0f }, camera.rotation*DEG2RAD); + Matrix matScale = MatrixScale(camera.zoom, camera.zoom, 1.0f); + Matrix matTranslation = MatrixTranslate(camera.position.x, camera.position.y, 0.0f); + Matrix matOrigin = MatrixTranslate(-camera.origin.x, -camera.origin.y, 0.0f); + + Matrix matTransform = MatrixMultiply(MatrixMultiply(matScale, matRotation), matTranslation); + + rlMultMatrixf(MatrixToFloat(matTransform)); +} + +// Setup drawing canvas with pro parameters +void BeginDrawingPro(int blendMode, Shader shader, Matrix transform) { BeginDrawing(); |
