A 2D camera that defines what region is shown on screen in a Scene. More...
#include <Camera.h>
Public Types | |
using | Ptr = std::shared_ptr< Object > |
Shared object pointer. More... | |
Public Member Functions | |
Camera (Camera &&)=delete | |
Move constructor. More... | |
Camera & | operator= (Camera &&)=delete |
Move assignment operator. More... | |
std::string | getClassName () const override |
Get the name of this class. More... | |
void | setCenter (float x, float y) |
Set the centre of the camera. More... | |
void | setCenter (const Vector2f ¢re) |
Set the centre of the camera. More... | |
Vector2f | getCenter () const |
Get the centre of the camera. More... | |
void | setSize (float width, float height) |
Set the size of the camera. More... | |
void | setSize (const Vector2f &size) |
Set the size of the camera. More... | |
Vector2f | getSize () const |
Get the size of the camera. More... | |
void | setRotation (float angle) |
Set the orientation of the camera. More... | |
float | getRotation () const |
Get the current orientation of the camera. More... | |
void | setViewport (const FloatRect &viewport) |
Set the target viewport. More... | |
FloatRect | getViewport () const |
Get the target viewport of the rectangle of the camera. More... | |
void | reset (const FloatRect &rectangle) |
Reset the camera to the given rectangle. More... | |
void | resetToDefault () |
Reset the camera to its default settings. More... | |
void | move (float offsetX, float offsetY) |
Move the camera relative to its current position. More... | |
void | move (const Vector2f &offset) |
Move the camera relative to its current position. More... | |
void | rotate (float angle) |
Rotate the camera relative to its current orientation. More... | |
void | zoom (float factor) |
Resize the camera rectangle relative to its current size. More... | |
Vector2f | windowCoordToWorldCoord (const Vector2i &point) const |
Convert a window coordinate to a world coordinate. More... | |
Vector2i | worldCoordToWindowCoord (const Vector2f &point) const |
Convert a world coordinate to a window coordinate. More... | |
~Camera () override | |
Destructor. More... | |
void | setTag (const std::string &tag) |
Assign the object an alias. More... | |
const std::string & | getTag () const |
Get the alias of the object. More... | |
unsigned int | getObjectId () const |
Get the id of the object. More... | |
virtual std::string | getClassType () const |
Get the name of the direct parent of an object instance. More... | |
int | onPropertyChange (const std::string &property, const Callback< Property > &callback) |
Add an event listener to a specific property change event. More... | |
void | onPropertyChange (const Callback< Property > &callback) |
Add an event listener to a property change event. More... | |
int | onEvent (const std::string &event, const Callback<> &callback) |
Add an event listener to an event. More... | |
bool | unsubscribe (const std::string &event, int id) |
Remove an event listener from an event. More... | |
int | onDestruction (const Callback<> &callback) |
Add a destruction listener. More... | |
bool | removeDestructionListener (int id) |
Remove a destruction listener form the object. More... | |
bool | operator== (const Object &rhs) const |
Check if two objects are the same object or not. More... | |
bool | operator!= (const Object &rhs) const |
Check if two objects are not the same object. More... | |
Protected Member Functions | |
void | emitChange (const Property &property) |
Dispatch a property change event. More... | |
void | emit (const std::string &event) |
Dispatch an action event. More... | |
Friends | |
class | Scene |
Needs access to constructor. More... | |
A 2D camera that defines what region is shown on screen in a Scene.
A camera is composed of a source rectangle, which defines what part of the Scene is shown, and a target viewport, which defines where the contents of the source rectangle will be displayed on the render Window.
The viewport allows to map the scene to a custom part of the render window, and can be used for split-screen or for displaying a minimap, for example. If the source rectangle doesn't have the same size as the viewport, its contents will be stretched to fit in
You do not instantiate a camera directly, it is created when you instantiate a scene and it is accessible within the scene. Each scene instance has its own camera
|
inherited |
|
delete |
Move constructor.
|
override |
Destructor.
|
protectedinherited |
Dispatch an action event.
event | The name of the event to be dispatched |
This function will invoke all event listeners of the specified event. The function should be used for events that represent an action, rather than those that represent a property change (Use emitChange for that)
|
protectedinherited |
Dispatch a property change event.
property | The property that changed |
This function will invoke all the event listeners of the specified property
Vector2f ime::Camera::getCenter | ( | ) | const |
Get the centre of the camera.
|
overridevirtual |
|
virtualinherited |
Get the name of the direct parent of an object instance.
In contrast to getClassName which returns the name of the concrete class, this function returns the name of the concrete class's base class. This function is implemented by all derived classes of Object which also serve as base classes for other Objects. For classes whose direct parent is this class, this function will return the name of this class
Reimplemented in ime::SpriteImage, ime::Shape, ime::Drawable, ime::GridMover, ime::Joint, ime::Collider, and ime::GameObject.
|
inherited |
Get the id of the object.
Each object has a unique id
float ime::Camera::getRotation | ( | ) | const |
Get the current orientation of the camera.
Vector2f ime::Camera::getSize | ( | ) | const |
Get the size of the camera.
|
inherited |
FloatRect ime::Camera::getViewport | ( | ) | const |
Get the target viewport of the rectangle of the camera.
void ime::Camera::move | ( | const Vector2f & | offset | ) |
Move the camera relative to its current position.
offset | The move offset |
void ime::Camera::move | ( | float | offsetX, |
float | offsetY | ||
) |
Move the camera relative to its current position.
offsetX | The value of the horizontal move offset |
offsetY | The value of the vertical move offset |
|
inherited |
Add a destruction listener.
callback | Function to be executed when the object is destroyed |
Note that an object may have more than one destruction listeners, however, you have to keep the returned id if you may want to remove the callback at a later time
|
inherited |
Add an event listener to an event.
event | The name of the event to add an an event listener to |
callback | The function to be executed when the event takes place |
Unlike onPropertyChange, this function registers event listeners to events that occur when something happens to the object, or when the object does something (action events). Usually the name of the event/action is the name of the function:
Add an event listener to a property change event.
callback | The function to be executed when the property changes |
Note that only one callback function may be registered with this function. This means that adding a new event listener overwrites the previous event listener. To remove the callback, pass a nullptr as an argument. The function may be useful if you want to write the logic for property changes in one function.
|
inherited |
Add an event listener to a specific property change event.
property | The name of the property to listen for |
callback | The function to be executed when the property changes |
A property change event is triggered by any function that begins with set, where the the text after set is the name of the property. For example, for the setTag function, the property that the function modifies is Tag.
Note that when adding a property change event listener, the name of the property must be in lowercase:
Unlike onPropertyChange(const Callback&) you can add multiple event listeners to the same property using this function. However you must store the unique id of the event listener if you wish to remove it at a later time
|
inherited |
Check if two objects are not the same object.
rhs | Object to compare against this object |
Two objects are different from each other if they have different object id's
|
inherited |
Check if two objects are the same object or not.
rhs | Object to compare against this object |
Two objects are the same object if they have the same object id. Recall that each object instance has a unique id
|
inherited |
Remove a destruction listener form the object.
The | id of the destruction listener to be removed |
void ime::Camera::reset | ( | const FloatRect & | rectangle | ) |
Reset the camera to the given rectangle.
rectangle | Rectangle defining the zone to display |
void ime::Camera::resetToDefault | ( | ) |
Reset the camera to its default settings.
void ime::Camera::rotate | ( | float | angle | ) |
Rotate the camera relative to its current orientation.
angle | The angle to rotate the camera by in degrees |
void ime::Camera::setCenter | ( | const Vector2f & | centre | ) |
Set the centre of the camera.
centre | The new centre of the camera |
void ime::Camera::setCenter | ( | float | x, |
float | y | ||
) |
Set the centre of the camera.
x | X coordinate of the new centre |
y | Y coordinate of the new centre |
void ime::Camera::setRotation | ( | float | angle | ) |
Set the orientation of the camera.
angle | The orientation to set in degrees |
By default, the rotation is 0 degrees
void ime::Camera::setSize | ( | const Vector2f & | size | ) |
Set the size of the camera.
size | The new size of the camera |
By default, the camera is the same size as the render window
void ime::Camera::setSize | ( | float | width, |
float | height | ||
) |
Set the size of the camera.
width | The new width of the camera |
height | The new height of the camera |
By default, the camera is the same size as the render window
|
inherited |
Assign the object an alias.
name | The alias of the object |
This function is useful if you want to refer to the object by tag instead of its id. Unlike an object id, multiple objects may have the same tag.
By default, the tag is an empty string
void ime::Camera::setViewport | ( | const FloatRect & | viewport | ) |
Set the target viewport.
viewport | The new viewport rectangle |
The viewport is the rectangle into which the contents of the camera are displayed, expressed as a factor (between 0 and 1) of the size of the RenderWindow. For example, a view which takes the left side of the target would be defined with View.setViewport(sf::FloatRect(0, 0, 0.5, 1)).
By default, a camera has a viewport which covers the entire render window
|
inherited |
Remove an event listener from an event.
event | The name of the event to remove event listener from |
id | The unique id of the event listener to be removed |
Convert a window coordinate to a world coordinate.
point | The window coordinate to be converted |
Initially, both coordinate systems (world coordinates and window pixels) match perfectly. But if you move or rotate the camera or resize the render Window then a mismatch occurs, i.e. a point located at (10, 50) on the render Window may map to the point (150, 75) in your 2D world – if the camera is translated by (140, 25)
Convert a world coordinate to a window coordinate.
point | The world point ot be converted |
Initially, both coordinate systems (world coordinates and window pixels) match perfectly. But if you move or rotate the camera or resize the render Window then a mismatch occurs, i.e. a point located at (10, 50) on the render Window may map to the point (150, 75) in your 2D world – if the camera is translated by (140, 25)
void ime::Camera::zoom | ( | float | factor | ) |
Resize the camera rectangle relative to its current size.
factor | The zoom factor to apply |
Resizing the view simulates a zoom, as the zone displayed on screen grows or shrinks. factor is a multiplier: