|
@@ -1251,20 +1251,20 @@ void BeginMode2D(Camera2D camera)
|
|
|
rlLoadIdentity(); // Reset current matrix (MODELVIEW)
|
|
|
rlMultMatrixf(MatrixToFloat(screenScaling)); // Apply screen scaling if required
|
|
|
|
|
|
- //The camera in world-space is set by
|
|
|
- //1. Move it to target
|
|
|
- //2. Rotate by -rotation and scale by (1/zoom)
|
|
|
+ // The camera in world-space is set by
|
|
|
+ // 1. Move it to target
|
|
|
+ // 2. Rotate by -rotation and scale by (1/zoom)
|
|
|
// When setting higher scale, it's more intuitive for the world to become bigger (= camera become smaller),
|
|
|
// not for the camera getting bigger, hence the invert. Same deal with rotation.
|
|
|
- //3. Move it by (-offset);
|
|
|
+ // 3. Move it by (-offset);
|
|
|
// Offset defines target transform relative to screen, but since we're effectively "moving" screen (camera)
|
|
|
// we need to do it into opposite direction (inverse transform)
|
|
|
- //
|
|
|
- //Having camera transform in world-space, inverse of it gives the modelview transform.
|
|
|
- //Since (A*B*C)' = C'*B'*A', the modelview is
|
|
|
- //1. Move to offset
|
|
|
- //2. Rotate and Scale
|
|
|
- //3. Move by -target
|
|
|
+
|
|
|
+ // Having camera transform in world-space, inverse of it gives the modelview transform.
|
|
|
+ // Since (A*B*C)' = C'*B'*A', the modelview is
|
|
|
+ // 1. Move to offset
|
|
|
+ // 2. Rotate and Scale
|
|
|
+ // 3. Move by -target
|
|
|
Matrix matOrigin = MatrixTranslate(-camera.target.x, -camera.target.y, 0.0f);
|
|
|
Matrix matRotation = MatrixRotate((Vector3){ 0.0f, 0.0f, 1.0f }, camera.rotation*DEG2RAD);
|
|
|
Matrix matScale = MatrixScale(camera.zoom, camera.zoom, 1.0f);
|