|
| virtual void | ScreenToWorld (float screenX, float screenY, int bufferWidth, int bufferHeight, float &worldX, float &worldY) const =0 |
| virtual void | WorldToScreen (float worldX, float worldY, int bufferWidth, int bufferHeight, float &screenX, float &screenY) const =0 |
| virtual void | GetClearColor (uint8_t &r, uint8_t &g, uint8_t &b) const =0 |
| virtual void | SetClearColor (uint8_t r, uint8_t g, uint8_t b)=0 |
| virtual float | GetPixelsPerMeter () const =0 |
| virtual void | SetPixelsPerMeter (float pixelsPerMeter)=0 |
| virtual ProjectionMode | GetProjectionMode () const |
| virtual void | SetProjectionMode (ProjectionMode) |
| virtual Mat4 | GetProjectionMatrix (int bufferWidth, int bufferHeight) const |
| | Build a projection matrix for the requested logical-buffer size.
|
| virtual | ~ICamera ()=default |
Camera interface for coordinate conversion.
Packages implement this interface on their camera components. The editor queries it via DekiObject::FindInterface<ICamera>() without knowing the concrete camera type.
Coordinate model: world (meters, float) → screen pixels (float) via: screen = (world * pixelsPerMeter) + buffer_center The camera's pixelsPerMeter directly drives screen scale. Setting it equal to the project's pixelsPerMeter yields 1:1 visualization; larger values zoom in, smaller zoom out. The optional pixel-snap step lives in the renderer, not in the camera.