FIFE  6e1afdbeda11afe9ac53e6023a4be96ef88f1dc6
FIFE::Camera Class Reference

Camera describes properties of a view port shown in the main screen Main screen can have multiple cameras active simultanously Different cameras can have different properties, like location to shoot, zoom or tilt. More...

#include <camera.h>

+ Inheritance diagram for FIFE::Camera:
+ Collaboration diagram for FIFE::Camera:

Public Types

typedef uint32_t Transform
 

Public Member Functions

 Camera (const std::string &id, Layer *layer, const Rect &viewport, RenderBackend *renderbackend)
 Constructor Camera needs to be added to the view. More...
 
virtual ~Camera ()
 Destructor. More...
 
const std::string & getId () const
 Gets the identifier for this camera. More...
 
void setId (const std::string &id)
 Sets the identifier for this camera. More...
 
void setTilt (double tilt)
 Sets tilt for the camera. More...
 
double getTilt () const
 Gets camera tilt. More...
 
void setRotation (double rotation)
 Sets rotation for the camera. More...
 
double getRotation () const
 Gets camera rotation. More...
 
void setZoom (double zoom)
 Sets zoom for the camera. More...
 
double getZoom () const
 Gets camera zoom. More...
 
double getOriginalZToY () const
 Gets original zToY transformation value. More...
 
void setZToY (double zToY)
 Sets zToY value for the camera and enables their use. More...
 
double getZToY () const
 Gets zToY value. More...
 
void setZToYEnabled (bool enabled)
 Sets z to y manipulation enabled / disabled. More...
 
bool isZToYEnabled () const
 Gets if z to y manipulation is enabled / disabled. More...
 
void setCellImageDimensions (uint32_t width, uint32_t height)
 Sets screen cell image dimensions. More...
 
Point getCellImageDimensions ()
 Gets screen cell image dimensions. More...
 
Point getCellImageDimensions (Layer *layer)
 Gets screen cell image dimensions for given layer. More...
 
double getReferenceScaleX () const
 Gets x reference scale for cell image dimensions. More...
 
double getReferenceScaleY () const
 Gets y reference scale for cell image dimensions. More...
 
Point3D getZOffset (Layer *layer)
 Gets a point that contain the visual z(z=1) difference, based on the given layer. More...
 
void setLocation (const Location &location)
 Sets the location for camera. More...
 
Location getLocation () const
 Gets the location camera is rendering. More...
 
Point3D getOrigin () const
 Gets screen point for the camera location. More...
 
LocationgetLocationRef ()
 Gets a reference to the camera location. More...
 
void attach (Instance *instance)
 Attaches the camera to an instance. More...
 
void detach ()
 Detaches the camera from an instance. More...
 
InstancegetAttached () const
 Returns instance where camera is attached. More...
 
void setViewPort (const Rect &viewport)
 Sets the viewport for camera viewport is rectangle inside the view where camera renders. More...
 
const RectgetViewPort () const
 Gets the viewport for camera in pixel coordinates. More...
 
const RectgetMapViewPort ()
 Gets the viewport for camera in map coordinates. More...
 
Rect getLayerViewPort (Layer *layer)
 Gets the viewport for camera in layer coordinates. More...
 
ExactModelCoordinate toMapCoordinates (ScreenPoint screen_coords, bool z_calculated=true)
 Transforms given point from screen coordinates to map coordinates. More...
 
ScreenPoint toScreenCoordinates (const ExactModelCoordinate &map_coords)
 Transforms given point from map coordinates to screen coordinates. More...
 
DoublePoint3D toVirtualScreenCoordinates (const ExactModelCoordinate &map_coords)
 Transforms given point from map coordinates to virtual screen coordinates. More...
 
ScreenPoint virtualScreenToScreen (const DoublePoint3D &p)
 Transforms given point from virtual screen coordinates to screen coordinates. More...
 
DoublePoint3D screenToVirtualScreen (const ScreenPoint &p)
 Transforms given point from screen coordinates to virtual screen coordinates. More...
 
void setEnabled (bool enabled)
 Sets camera enabled / disabled. More...
 
bool isEnabled ()
 Gets if camera is enabled / disabled. More...
 
RenderListgetRenderListRef (Layer *layer)
 Returns reference to RenderList. More...
 
void getMatchingInstances (ScreenPoint screen_coords, Layer &layer, std::list< Instance * > &instances, uint8_t alpha=0)
 Returns instances that match given screen coordinate. More...
 
void getMatchingInstances (Rect screen_rect, Layer &layer, std::list< Instance * > &instances, uint8_t alpha=0)
 Returns instances that match given screen coordinate. More...
 
void getMatchingInstances (Location &loc, std::list< Instance * > &instances, bool use_exactcoordinates=false)
 Returns instances that match given location. More...
 
void update ()
 General update routine. More...
 
void refresh ()
 Refreshes camera view in case e.g. More...
 
void resetUpdates ()
 Resets temporary values from last update round, like warped flag. More...
 
bool isUpdated ()
 Returns true if camera view has been updated, otherwise false. More...
 
void addRenderer (RendererBase *renderer)
 Adds new renderer on the view. More...
 
RendererBasegetRenderer (const std::string &name)
 Gets renderer with given name. More...
 
void resetRenderers ()
 resets active layer information on all renderers. More...
 
void calculateZValue (DoublePoint3D &screen_coords)
 calculates z-value for given screenpoint More...
 
void onRendererPipelinePositionChanged (RendererBase *renderer)
 Renderer's pipeline position has been changed. More...
 
void onRendererEnabledChanged (RendererBase *renderer)
 Renderer is enabled / disabled. More...
 
void setLightingColor (float red, float green, float blue)
 Sets lighting color. More...
 
void resetLightingColor ()
 Resets lighting color. More...
 
std::vector< float > getLightingColor ()
 Returns a vector that contain the light color. More...
 
void setOverlayColor (uint8_t red, uint8_t green, uint8_t blue, uint8_t alpha)
 Sets a color as overlay. More...
 
std::vector< uint8_t > getOverlayColor ()
 Returns a vector that contain the overlay color. More...
 
void resetOverlayColor ()
 Resets the color overlay. More...
 
void setOverlayImage (int32_t id, bool fill=false)
 Sets a image as overlay, if fill is true the image gets the viewport size. More...
 
int32_t getOverlayImage ()
 Returns the pool id of the overlay image. More...
 
void resetOverlayImage ()
 Resets the image overlay. More...
 
void setOverlayAnimation (AnimationPtr anim, bool fill=false)
 Sets a animation as overlay, if fill is true the animation gets the viewport size. More...
 
AnimationPtr getOverlayAnimation ()
 Returns an AnimationPtr to the overlay animation. More...
 
void resetOverlayAnimation ()
 Resets the animation overlay. More...
 
void render ()
 Renders camera. More...
 
- Public Member Functions inherited from FIFE::IRendererListener
virtual ~IRendererListener ()
 
- Public Member Functions inherited from FIFE::IRendererContainer
virtual ~IRendererContainer ()
 

Private Member Functions

void addLayer (Layer *layer)
 
void removeLayer (Layer *layer)
 
void updateMap (Map *map)
 
void updateMatrices ()
 Updates the camera transformation matrix T with requested values. More...
 
void updateReferenceScale ()
 Updates camera reference scale Reference scale is in a sense an internal zooming factor, which adjusts cell dimensions in logical space to ones shown on screen. More...
 
void updateRenderLists ()
 Updates camera RenderLists. More...
 
DoublePoint getLogicalCellDimensions (Layer *layer)
 Gets logical cell image dimensions for given layer. More...
 
Point getRealCellDimensions (Layer *layer)
 Gets real cell image dimensions for given layer. More...
 
void renderOverlay ()
 Renders the overlay(color, image, animation) for the camera. More...
 
void renderStaticLayer (Layer *layer, bool update)
 Renders the layer part that is on screen as one image. More...
 

Private Attributes

std::string m_id
 
DoubleMatrix m_matrix
 
DoubleMatrix m_inverse_matrix
 
DoubleMatrix m_vs_matrix
 
DoubleMatrix m_vs_inverse_matrix
 
DoubleMatrix m_vscreen_2_screen
 
DoubleMatrix m_screen_2_vscreen
 
double m_tilt
 
double m_rotation
 
double m_zoom
 
double m_zToY
 
bool m_enabledZToY
 
Location m_location
 
ScreenPoint m_cur_origo
 
Rect m_viewport
 
Rect m_mapViewPort
 
bool m_mapViewPortUpdated
 
uint32_t m_screen_cell_width
 
uint32_t m_screen_cell_height
 
double m_referenceScaleX
 
double m_referenceScaleY
 
bool m_enabled
 
Instancem_attachedto
 
std::map< Layer *, Pointm_image_dimensions
 
Transform m_transform
 
std::map< std::string, RendererBase * > m_renderers
 
std::list< RendererBase * > m_pipeline
 
bool m_updated
 
RenderBackendm_renderbackend
 
t_layer_to_instances m_layerToInstances
 
std::map< Layer *, LayerCache * > m_cache
 
MapObserverm_map_observer
 
Mapm_map
 
bool m_lighting
 
std::vector< float > m_light_colors
 
bool m_col_overlay
 
bool m_img_overlay
 
bool m_ani_overlay
 
SDL_Color m_overlay_color
 
int32_t m_img_id
 
AnimationPtr m_ani_ptr
 
bool m_img_fill
 
bool m_ani_fill
 
uint32_t m_start_time
 

Friends

class MapObserver
 

Detailed Description

Camera describes properties of a view port shown in the main screen Main screen can have multiple cameras active simultanously Different cameras can have different properties, like location to shoot, zoom or tilt.

Definition at line 59 of file camera.h.

Member Typedef Documentation

typedef uint32_t FIFE::Camera::Transform

Definition at line 69 of file camera.h.

Member Enumeration Documentation

Enumerator
NoneTransform 
TiltTransform 
RotationTransform 
ZoomTransform 
PositionTransform 
ZTransform 

Definition at line 61 of file camera.h.

Constructor & Destructor Documentation

FIFE::Camera::Camera ( const std::string &  id,
Layer layer,
const Rect viewport,
RenderBackend renderbackend 
)

Constructor Camera needs to be added to the view.

If not done so, it is not rendered.

Parameters
ididentifier for the camera
layerlayer where camera is bound. Camera is bound to a layer for two reasons:
  • camera's scaling is done based on cell image dimensions. Cell image is layer based (
See also
setCellImageDimensions)
  • camera could be bound to a pather, which operates on layer
Parameters
viewportused viewport for the camera. Viewport is measured in pixels in relation to game main screen
renderbackendto use with rendering

Definition at line 80 of file camera.cpp.

References m_map, m_map_observer, m_viewport, MapObserver, FIFE::Location::setLayer(), and setLocation().

FIFE::Camera::~Camera ( )
virtual

Destructor.

Definition at line 123 of file camera.cpp.

References m_map_observer, m_renderers, and updateMap().

Member Function Documentation

void FIFE::Camera::addLayer ( Layer layer)
private

Definition at line 755 of file camera.cpp.

References m_cache, m_layerToInstances, and refresh().

Referenced by FIFE::MapObserver::onLayerCreate(), updateMap(), and updateRenderLists().

+ Here is the caller graph for this function:

void FIFE::Camera::addRenderer ( RendererBase renderer)

Adds new renderer on the view.

Ownership is transferred to the camera.

Definition at line 720 of file camera.cpp.

References FIFE::RendererBase::getName(), FIFE::RendererBase::isEnabled(), m_pipeline, m_renderers, FIFE::pipelineSort(), and FIFE::RendererBase::setRendererListener().

Referenced by FIFE::Map::addCamera(), and isUpdated().

+ Here is the caller graph for this function:

void FIFE::Camera::attach ( Instance instance)

Attaches the camera to an instance.

Parameters
instanceInstance to which the camera shall be attached
Note
The camera can only be attached to an instance at the same layer!

Definition at line 674 of file camera.cpp.

References FIFE::_log, FL_WARN, FIFE::Layer::getId(), FIFE::Location::getLayer(), FIFE::Instance::getLocation(), m_attachedto, and m_location.

Referenced by getReferenceScaleY().

+ Here is the caller graph for this function:

void FIFE::Camera::calculateZValue ( DoublePoint3D screen_coords)

calculates z-value for given screenpoint

Definition at line 415 of file camera.cpp.

References FIFE::Location::getMapCoordinates(), m_location, m_tilt, FIFE::Math< T >::pi(), FIFE::Math< T >::Tan(), toScreenCoordinates(), FIFE::PointType3D< T >::y, and FIFE::PointType3D< T >::z.

Referenced by isUpdated(), and toMapCoordinates().

+ Here is the caller graph for this function:

void FIFE::Camera::detach ( )

Detaches the camera from an instance.

Definition at line 683 of file camera.cpp.

References m_attachedto.

Referenced by getReferenceScaleY().

+ Here is the caller graph for this function:

Point FIFE::Camera::getCellImageDimensions ( )

Gets screen cell image dimensions.

See also
setCellImageDimensions
Returns
Point containing x=width and y=height

Definition at line 271 of file camera.cpp.

References FIFE::Location::getLayer(), and m_location.

Referenced by setId().

+ Here is the caller graph for this function:

Point FIFE::Camera::getCellImageDimensions ( Layer layer)

Gets screen cell image dimensions for given layer.

Returns
Point Point containing x=width and y=height

Definition at line 275 of file camera.cpp.

References FIFE::Location::getLayer(), getLogicalCellDimensions(), m_image_dimensions, m_location, m_referenceScaleX, m_referenceScaleY, m_screen_cell_height, m_screen_cell_width, FIFE::PointType2D< T >::x, and FIFE::PointType2D< T >::y.

const std::string& FIFE::Camera::getId ( ) const
inline

Gets the identifier for this camera.

Definition at line 91 of file camera.h.

References m_id.

Rect FIFE::Camera::getLayerViewPort ( Layer layer)

Gets the viewport for camera in layer coordinates.

Parameters
layerA pointer to the layer whose geometry is used for the conversion
Returns
camera viewport

Definition at line 341 of file camera.cpp.

References ABS, FIFE::Location::getLayerCoordinates(), getMapViewPort(), FIFE::RectType< T >::h, FIFE::Location::setMapCoordinates(), FIFE::RectType< T >::w, FIFE::RectType< T >::x, FIFE::PointType3D< T >::x, FIFE::RectType< T >::y, and FIFE::PointType3D< T >::y.

Referenced by getAttached(), and FIFE::CellRenderer::render().

+ Here is the caller graph for this function:

std::vector< float > FIFE::Camera::getLightingColor ( )

Returns a vector that contain the light color.

Definition at line 777 of file camera.cpp.

References m_light_colors.

Referenced by isUpdated().

+ Here is the caller graph for this function:

Location FIFE::Camera::getLocation ( ) const

Gets the location camera is rendering.

Returns
camera location

Definition at line 291 of file camera.cpp.

References m_location.

Referenced by getReferenceScaleY().

+ Here is the caller graph for this function:

Location & FIFE::Camera::getLocationRef ( )

Gets a reference to the camera location.

Note
if you change returned location without calling Camera::setLocation(...), remember to call Camera::refresh() (otherwise camera transforms are not updated)
Returns
reference to the camera location

Definition at line 295 of file camera.cpp.

References m_location.

Referenced by getReferenceScaleY().

+ Here is the caller graph for this function:

DoublePoint FIFE::Camera::getLogicalCellDimensions ( Layer layer)
private

Gets logical cell image dimensions for given layer.

Definition at line 446 of file camera.cpp.

References FIFE::Matrix< T >::applyRotate(), FIFE::Layer::getCellGrid(), FIFE::CellGrid::getVertices(), FIFE::Matrix< T >::loadRotate(), m_rotation, m_tilt, and FIFE::CellGrid::toMapCoordinates().

Referenced by getCellImageDimensions(), and updateReferenceScale().

+ Here is the caller graph for this function:

const Rect & FIFE::Camera::getMapViewPort ( )

Gets the viewport for camera in map coordinates.

Returns
camera viewport

Definition at line 308 of file camera.cpp.

References ABS, FIFE::RectType< T >::h, m_mapViewPort, m_mapViewPortUpdated, m_viewport, toMapCoordinates(), FIFE::RectType< T >::w, FIFE::RectType< T >::x, FIFE::PointType3D< T >::x, FIFE::RectType< T >::y, and FIFE::PointType3D< T >::y.

Referenced by getAttached(), and getLayerViewPort().

+ Here is the caller graph for this function:

void FIFE::Camera::getMatchingInstances ( ScreenPoint  screen_coords,
Layer layer,
std::list< Instance * > &  instances,
uint8_t  alpha = 0 
)

Returns instances that match given screen coordinate.

Parameters
screen_coordsscreen coordinates to be used for hit search
layerlayer to use for search
instanceslist of instances that is filled based on hit test results
alphathe alpha to use to filter the matching instances. Pixels that have an alpha value higher than what is specified here are considered a hit.

Definition at line 532 of file camera.cpp.

References FIFE::RectType< T >::contains(), FIFE::RenderItem::dimensions, FIFE::Math< T >::Equal(), FIFE::Image::forceLoadInternal(), FIFE::RenderItem::getAnimationOverlay(), FIFE::Image::getHeight(), FIFE::Image::getPixelRGBA(), FIFE::Image::getWidth(), FIFE::RectType< T >::h, FIFE::RenderItem::image, FIFE::Image::isSharedImage(), m_layerToInstances, m_zoom, FIFE::RectType< T >::w, FIFE::RectType< T >::x, FIFE::PointType3D< T >::x, FIFE::RectType< T >::y, and FIFE::PointType3D< T >::y.

Referenced by getAttached().

+ Here is the caller graph for this function:

void FIFE::Camera::getMatchingInstances ( Rect  screen_rect,
Layer layer,
std::list< Instance * > &  instances,
uint8_t  alpha = 0 
)

Returns instances that match given screen coordinate.

Parameters
screen_rectrect that contains screen coordinates to be used for search
layerlayer to use for search
instanceslist of instances that is filled based on hit test results
alphathe alpha to use to filter the matching instances. Pixels that have an alpha value higher than what is specified here are considered a hit.

Definition at line 587 of file camera.cpp.

References FIFE::RectType< T >::contains(), FIFE::RenderItem::dimensions, FIFE::Math< T >::Equal(), FIFE::Image::forceLoadInternal(), FIFE::RenderItem::getAnimationOverlay(), FIFE::Image::getHeight(), FIFE::Image::getPixelRGBA(), FIFE::Image::getWidth(), FIFE::RectType< T >::h, FIFE::RenderItem::image, FIFE::RectType< T >::intersects(), FIFE::Image::isSharedImage(), m_layerToInstances, m_zoom, FIFE::RectType< T >::w, FIFE::RectType< T >::x, and FIFE::RectType< T >::y.

void FIFE::Camera::getMatchingInstances ( Location loc,
std::list< Instance * > &  instances,
bool  use_exactcoordinates = false 
)

Returns instances that match given location.

Instances are sorted based on camera view, so that "topmost" instance is first in returned list

Parameters
loclocation where to fetch instances from
instanceslist of instances that is filled based on hit test results
use_exactcoordinatesif true, comparison is done using exact coordinates. if not, cell coordinates are used

Definition at line 650 of file camera.cpp.

References FIFE::Location::getExactLayerCoordinatesRef(), FIFE::Location::getLayer(), FIFE::Location::getLayerCoordinates(), FIFE::Instance::getLocationRef(), and m_layerToInstances.

Point3D FIFE::Camera::getOrigin ( ) const

Gets screen point for the camera location.

Returns
camera screen point

Definition at line 365 of file camera.cpp.

References m_cur_origo.

Referenced by getReferenceScaleY().

+ Here is the caller graph for this function:

double FIFE::Camera::getOriginalZToY ( ) const
AnimationPtr FIFE::Camera::getOverlayAnimation ( )

Returns an AnimationPtr to the overlay animation.

Definition at line 844 of file camera.cpp.

References m_ani_ptr.

Referenced by isUpdated().

+ Here is the caller graph for this function:

std::vector< uint8_t > FIFE::Camera::getOverlayColor ( )

Returns a vector that contain the overlay color.

Definition at line 799 of file camera.cpp.

References m_col_overlay, and m_overlay_color.

Referenced by isUpdated().

+ Here is the caller graph for this function:

int32_t FIFE::Camera::getOverlayImage ( )

Returns the pool id of the overlay image.

Definition at line 824 of file camera.cpp.

References m_img_id, and m_img_overlay.

Referenced by isUpdated().

+ Here is the caller graph for this function:

Point FIFE::Camera::getRealCellDimensions ( Layer layer)
private

Gets real cell image dimensions for given layer.

Definition at line 480 of file camera.cpp.

References ABS, FIFE::Layer::getCellGrid(), toScreenCoordinates(), FIFE::PointType3D< T >::x, and FIFE::PointType3D< T >::y.

double FIFE::Camera::getReferenceScaleX ( ) const
inline

Gets x reference scale for cell image dimensions.

Definition at line 177 of file camera.h.

References m_referenceScaleX.

double FIFE::Camera::getReferenceScaleY ( ) const
inline

Gets y reference scale for cell image dimensions.

Definition at line 181 of file camera.h.

References attach(), detach(), getLocation(), getLocationRef(), getOrigin(), getZOffset(), m_referenceScaleY, and setLocation().

RendererBase * FIFE::Camera::getRenderer ( const std::string &  name)
virtual

Gets renderer with given name.

Implements FIFE::IRendererContainer.

Definition at line 744 of file camera.cpp.

References m_renderers.

Referenced by isUpdated(), FIFE::InstanceRenderer::renderAlreadySorted(), and FIFE::InstanceRenderer::renderUnsorted().

+ Here is the caller graph for this function:

RenderList & FIFE::Camera::getRenderListRef ( Layer layer)

Returns reference to RenderList.

Definition at line 528 of file camera.cpp.

References m_layerToInstances.

Referenced by getAttached().

+ Here is the caller graph for this function:

double FIFE::Camera::getRotation ( ) const

Gets camera rotation.

Returns
rotation of the camera

Definition at line 157 of file camera.cpp.

References m_rotation.

Referenced by setId().

+ Here is the caller graph for this function:

double FIFE::Camera::getTilt ( ) const

Gets camera tilt.

Returns
tilt of camera

Definition at line 145 of file camera.cpp.

References m_tilt.

Referenced by setId().

+ Here is the caller graph for this function:

Point3D FIFE::Camera::getZOffset ( Layer layer)

Gets a point that contain the visual z(z=1) difference, based on the given layer.

Returns
Point3D Point3D containing x, y, z

Definition at line 501 of file camera.cpp.

References FIFE::Layer::getCellGrid(), toScreenCoordinates(), FIFE::PointType3D< T >::x, FIFE::PointType3D< T >::y, and FIFE::PointType3D< T >::z.

Referenced by getReferenceScaleY().

+ Here is the caller graph for this function:

double FIFE::Camera::getZToY ( ) const

Gets zToY value.

Returns
zToY value of the camera.

Definition at line 200 of file camera.cpp.

References m_zToY.

Referenced by setId().

+ Here is the caller graph for this function:

bool FIFE::Camera::isEnabled ( )

Gets if camera is enabled / disabled.

Definition at line 361 of file camera.cpp.

References m_enabled.

Referenced by getAttached().

+ Here is the caller graph for this function:

bool FIFE::Camera::isZToYEnabled ( ) const

Gets if z to y manipulation is enabled / disabled.

Returns
true if z to y manipulation is enabled, otherwise false.

Definition at line 208 of file camera.cpp.

References m_enabledZToY.

Referenced by setId().

+ Here is the caller graph for this function:

void FIFE::Camera::onRendererEnabledChanged ( RendererBase renderer)
virtual

Renderer is enabled / disabled.

Implements FIFE::IRendererListener.

Definition at line 733 of file camera.cpp.

References FIFE::_log, FL_LOG, FIFE::RendererBase::getName(), FIFE::RendererBase::isEnabled(), m_pipeline, m_renderers, and FIFE::pipelineSort().

Referenced by isUpdated().

+ Here is the caller graph for this function:

void FIFE::Camera::onRendererPipelinePositionChanged ( RendererBase renderer)
virtual

Renderer's pipeline position has been changed.

Implements FIFE::IRendererListener.

Definition at line 729 of file camera.cpp.

References m_pipeline, and FIFE::pipelineSort().

Referenced by isUpdated().

+ Here is the caller graph for this function:

void FIFE::Camera::refresh ( )

Refreshes camera view in case e.g.

location is updated directly (not via setLocation)

Note
calling this function marks camera as "warped", therefore it causes all instance positions to be recalculated. If you constantly call this, you end up with pixel wobbling effect when camera is moved.

Definition at line 701 of file camera.cpp.

References FIFE::Location::getMapCoordinates(), m_cur_origo, m_location, m_transform, RotationTransform, toScreenCoordinates(), and updateMatrices().

Referenced by addLayer(), getAttached(), removeLayer(), and setViewPort().

+ Here is the caller graph for this function:

void FIFE::Camera::removeLayer ( Layer layer)
private

Definition at line 762 of file camera.cpp.

References m_cache, m_layerToInstances, and refresh().

Referenced by FIFE::MapObserver::onLayerDelete(), and updateMap().

+ Here is the caller graph for this function:

void FIFE::Camera::resetLightingColor ( )

Resets lighting color.

Definition at line 786 of file camera.cpp.

References m_lighting, m_renderbackend, and FIFE::RenderBackend::resetLighting().

Referenced by isUpdated().

+ Here is the caller graph for this function:

void FIFE::Camera::resetOverlayAnimation ( )

Resets the animation overlay.

Definition at line 848 of file camera.cpp.

References m_ani_overlay, m_ani_ptr, and FIFE::SharedPtr< T >::reset().

Referenced by isUpdated().

+ Here is the caller graph for this function:

void FIFE::Camera::resetOverlayColor ( )

Resets the color overlay.

Definition at line 814 of file camera.cpp.

References m_col_overlay.

Referenced by isUpdated().

+ Here is the caller graph for this function:

void FIFE::Camera::resetOverlayImage ( )

Resets the image overlay.

Definition at line 832 of file camera.cpp.

References m_img_id, and m_img_overlay.

Referenced by isUpdated().

+ Here is the caller graph for this function:

void FIFE::Camera::resetRenderers ( )

resets active layer information on all renderers.

Definition at line 748 of file camera.cpp.

References m_renderers.

Referenced by isUpdated().

+ Here is the caller graph for this function:

void FIFE::Camera::resetUpdates ( )

Resets temporary values from last update round, like warped flag.

Definition at line 707 of file camera.cpp.

References m_transform, m_updated, and NoneTransform.

Referenced by getAttached(), and updateRenderLists().

+ Here is the caller graph for this function:

DoublePoint3D FIFE::Camera::screenToVirtualScreen ( const ScreenPoint p)

Transforms given point from screen coordinates to virtual screen coordinates.

Returns
point in virtual screen coordinates

Definition at line 442 of file camera.cpp.

References FIFE::intPt2doublePt(), and m_screen_2_vscreen.

Referenced by getAttached().

+ Here is the caller graph for this function:

void FIFE::Camera::setCellImageDimensions ( uint32_t  width,
uint32_t  height 
)

Sets screen cell image dimensions.

Cell image dimension is basically width and height of a bitmap, that covers one cell in the layer where camera is bind

Returns
Point Point containing x=width and y=height

Definition at line 212 of file camera.cpp.

References m_screen_cell_height, m_screen_cell_width, m_transform, PositionTransform, updateMatrices(), and updateReferenceScale().

Referenced by FIFE::MapLoader::load(), and setId().

+ Here is the caller graph for this function:

void FIFE::Camera::setEnabled ( bool  enabled)

Sets camera enabled / disabled.

Definition at line 357 of file camera.cpp.

References m_enabled.

Referenced by getAttached().

+ Here is the caller graph for this function:

void FIFE::Camera::setId ( const std::string &  id)
inline
void FIFE::Camera::setLightingColor ( float  red,
float  green,
float  blue 
)

Sets lighting color.

Definition at line 769 of file camera.cpp.

References m_light_colors, and m_lighting.

Referenced by isUpdated().

+ Here is the caller graph for this function:

void FIFE::Camera::setLocation ( const Location location)

Sets the location for camera.

Parameters
locationlocation (center point) to render

Definition at line 220 of file camera.cpp.

References FIFE::Layer::getCellGrid(), FIFE::Location::getLayer(), FIFE::Location::getMap(), FIFE::Location::getMapCoordinates(), m_cur_origo, m_location, m_transform, PositionTransform, toScreenCoordinates(), updateMap(), and updateMatrices().

Referenced by Camera(), and getReferenceScaleY().

+ Here is the caller graph for this function:

void FIFE::Camera::setOverlayAnimation ( AnimationPtr  anim,
bool  fill = false 
)

Sets a animation as overlay, if fill is true the animation gets the viewport size.

Definition at line 837 of file camera.cpp.

References m_ani_fill, m_ani_overlay, m_ani_ptr, and m_start_time.

Referenced by isUpdated().

+ Here is the caller graph for this function:

void FIFE::Camera::setOverlayColor ( uint8_t  red,
uint8_t  green,
uint8_t  blue,
uint8_t  alpha 
)

Sets a color as overlay.

Definition at line 791 of file camera.cpp.

References m_col_overlay, and m_overlay_color.

Referenced by isUpdated().

+ Here is the caller graph for this function:

void FIFE::Camera::setOverlayImage ( int32_t  id,
bool  fill = false 
)

Sets a image as overlay, if fill is true the image gets the viewport size.

Definition at line 818 of file camera.cpp.

References m_img_fill, m_img_id, and m_img_overlay.

Referenced by isUpdated().

+ Here is the caller graph for this function:

void FIFE::Camera::setRotation ( double  rotation)

Sets rotation for the camera.

Rotation can be visualized by thinking camera that rotates around an object that it is rendering

Parameters
rotationrotation for the camera

Definition at line 149 of file camera.cpp.

References FIFE::Math< T >::Equal(), m_rotation, m_transform, RotationTransform, and updateMatrices().

Referenced by FIFE::MapLoader::load(), and setId().

+ Here is the caller graph for this function:

void FIFE::Camera::setTilt ( double  tilt)

Sets tilt for the camera.

e.g. overhead camera has tilt 0, while traditional isometric camera has tilt 45

Parameters
tilttilt for the camera

Definition at line 136 of file camera.cpp.

References FIFE::Math< T >::Equal(), m_tilt, m_transform, TiltTransform, updateMatrices(), and updateReferenceScale().

Referenced by FIFE::MapLoader::load(), and setId().

+ Here is the caller graph for this function:

void FIFE::Camera::setViewPort ( const Rect viewport)

Sets the viewport for camera viewport is rectangle inside the view where camera renders.

Parameters
viewportarea for camera render

Definition at line 299 of file camera.cpp.

References m_viewport, and refresh().

Referenced by getAttached().

+ Here is the caller graph for this function:

void FIFE::Camera::setZoom ( double  zoom)

Sets zoom for the camera.

Parameters
zoomzoom for the camera

Definition at line 161 of file camera.cpp.

References FIFE::Math< T >::Equal(), m_transform, m_zoom, updateMatrices(), and ZoomTransform.

Referenced by FIFE::MapLoader::load(), and setId().

+ Here is the caller graph for this function:

void FIFE::Camera::setZToY ( double  zToY)

Sets zToY value for the camera and enables their use.

This means the factor which influenced the z to y transformation, so if you set zToY=32 then 1z corresponds to 32 pixels in y direction.

Parameters
zToYinfluenced the z to y transformation of the camera.

Definition at line 191 of file camera.cpp.

References FIFE::Math< T >::Equal(), m_enabledZToY, m_transform, m_zToY, updateMatrices(), and ZTransform.

Referenced by FIFE::MapLoader::load(), and setId().

+ Here is the caller graph for this function:

void FIFE::Camera::setZToYEnabled ( bool  enabled)

Sets z to y manipulation enabled / disabled.

Parameters
enabledIf true then the zToY value is used instead of the original matrix value.

Definition at line 204 of file camera.cpp.

References m_enabledZToY.

Referenced by setId().

+ Here is the caller graph for this function:

ExactModelCoordinate FIFE::Camera::toMapCoordinates ( ScreenPoint  screen_coords,
bool  z_calculated = true 
)

Transforms given point from screen coordinates to map coordinates.

Parameters
screen_coordsscreen coordinates to transform
z_calculatedif true, z-value (depth cut point) is pre-calculated. If false, camera calculates it
Returns
point in map coordinates

Definition at line 420 of file camera.cpp.

References calculateZValue(), FIFE::intPt2doublePt(), and m_inverse_matrix.

Referenced by getAttached(), getMapViewPort(), and FIFE::CoordinateRenderer::render().

+ Here is the caller graph for this function:

ScreenPoint FIFE::Camera::toScreenCoordinates ( const ExactModelCoordinate map_coords)
DoublePoint3D FIFE::Camera::toVirtualScreenCoordinates ( const ExactModelCoordinate map_coords)

Transforms given point from map coordinates to virtual screen coordinates.

Returns
point in virtual screen coordinates

Definition at line 433 of file camera.cpp.

References m_vs_matrix.

Referenced by getAttached(), FIFE::InstanceRenderer::renderAlreadySorted(), and FIFE::InstanceRenderer::renderUnsorted().

+ Here is the caller graph for this function:

void FIFE::Camera::update ( )

General update routine.

In this function, the camera's position gets updated when its attached to another instance.

Note
call this only once in engine update cycle, so that tracking between current position and previous position keeps in sync. This information is used e.g. by view to fix the pixel wobbling problem

Definition at line 687 of file camera.cpp.

References FIFE::Math< T >::Equal(), FIFE::Location::getExactLayerCoordinates(), FIFE::Location::getExactLayerCoordinatesRef(), FIFE::Location::getLayer(), FIFE::Instance::getLocationRef(), m_attachedto, m_location, m_transform, PositionTransform, updateMatrices(), FIFE::PointType3D< T >::x, and FIFE::PointType3D< T >::y.

Referenced by getAttached().

+ Here is the caller graph for this function:

void FIFE::Camera::updateMap ( Map map)
private

Definition at line 250 of file camera.cpp.

References FIFE::Map::addChangeListener(), addLayer(), FIFE::Map::getLayers(), m_map, m_map_observer, FIFE::Map::removeChangeListener(), and removeLayer().

Referenced by setLocation(), and ~Camera().

+ Here is the caller graph for this function:

void FIFE::Camera::updateReferenceScale ( )
private

Updates camera reference scale Reference scale is in a sense an internal zooming factor, which adjusts cell dimensions in logical space to ones shown on screen.

Calculation is based on current camera properties (e.g. rotation)

  • given cell image dimensions for camera's layer

Definition at line 515 of file camera.cpp.

References FIFE::_log, FL_DBG, FIFE::Location::getLayer(), getLogicalCellDimensions(), m_location, m_referenceScaleX, m_referenceScaleY, m_rotation, m_screen_cell_height, m_screen_cell_width, m_tilt, FIFE::PointType2D< T >::x, and FIFE::PointType2D< T >::y.

Referenced by setCellImageDimensions(), and setTilt().

+ Here is the caller graph for this function:

void FIFE::Camera::updateRenderLists ( )
private

Updates camera RenderLists.

Definition at line 962 of file camera.cpp.

References FIFE::_log, addLayer(), FL_ERR, FIFE::Map::getLayers(), FIFE::Location::getMap(), m_cache, m_layerToInstances, m_location, m_transform, NoneTransform, resetUpdates(), and FIFE::LayerCache::update().

Referenced by render().

+ Here is the caller graph for this function:

ScreenPoint FIFE::Camera::virtualScreenToScreen ( const DoublePoint3D p)

Transforms given point from virtual screen coordinates to screen coordinates.

Returns
point in screen coordinates

Definition at line 438 of file camera.cpp.

References FIFE::doublePt2intPt(), and m_vscreen_2_screen.

Referenced by getAttached().

+ Here is the caller graph for this function:

Friends And Related Function Documentation

friend class MapObserver
friend

Definition at line 412 of file camera.h.

Referenced by Camera().

Member Data Documentation

bool FIFE::Camera::m_ani_fill
private

Definition at line 512 of file camera.h.

Referenced by renderOverlay(), and setOverlayAnimation().

bool FIFE::Camera::m_ani_overlay
private

Definition at line 507 of file camera.h.

Referenced by renderOverlay(), resetOverlayAnimation(), and setOverlayAnimation().

AnimationPtr FIFE::Camera::m_ani_ptr
private
Instance* FIFE::Camera::m_attachedto
private

Definition at line 478 of file camera.h.

Referenced by attach(), detach(), getAttached(), and update().

std::map<Layer*,LayerCache*> FIFE::Camera::m_cache
private

Definition at line 495 of file camera.h.

Referenced by addLayer(), removeLayer(), render(), renderStaticLayer(), and updateRenderLists().

bool FIFE::Camera::m_col_overlay
private

Definition at line 505 of file camera.h.

Referenced by getOverlayColor(), renderOverlay(), resetOverlayColor(), and setOverlayColor().

ScreenPoint FIFE::Camera::m_cur_origo
private

Definition at line 469 of file camera.h.

Referenced by getOrigin(), refresh(), and setLocation().

bool FIFE::Camera::m_enabled
private

Definition at line 477 of file camera.h.

Referenced by isEnabled(), and setEnabled().

bool FIFE::Camera::m_enabledZToY
private

Definition at line 467 of file camera.h.

Referenced by isZToYEnabled(), setZToY(), setZToYEnabled(), and updateMatrices().

std::string FIFE::Camera::m_id
private

Definition at line 416 of file camera.h.

Referenced by getId(), renderStaticLayer(), and setId().

std::map<Layer*, Point> FIFE::Camera::m_image_dimensions
private

Definition at line 480 of file camera.h.

Referenced by getCellImageDimensions().

bool FIFE::Camera::m_img_fill
private

Definition at line 511 of file camera.h.

Referenced by renderOverlay(), and setOverlayImage().

int32_t FIFE::Camera::m_img_id
private

Definition at line 509 of file camera.h.

Referenced by getOverlayImage(), renderOverlay(), resetOverlayImage(), and setOverlayImage().

bool FIFE::Camera::m_img_overlay
private

Definition at line 506 of file camera.h.

Referenced by getOverlayImage(), renderOverlay(), resetOverlayImage(), and setOverlayImage().

DoubleMatrix FIFE::Camera::m_inverse_matrix
private

Definition at line 456 of file camera.h.

Referenced by toMapCoordinates(), and updateMatrices().

t_layer_to_instances FIFE::Camera::m_layerToInstances
private
std::vector<float> FIFE::Camera::m_light_colors
private

Definition at line 502 of file camera.h.

Referenced by getLightingColor(), render(), and setLightingColor().

bool FIFE::Camera::m_lighting
private

Definition at line 500 of file camera.h.

Referenced by render(), resetLightingColor(), and setLightingColor().

Map* FIFE::Camera::m_map
private

Definition at line 497 of file camera.h.

Referenced by Camera(), and updateMap().

MapObserver* FIFE::Camera::m_map_observer
private

Definition at line 496 of file camera.h.

Referenced by Camera(), updateMap(), and ~Camera().

Rect FIFE::Camera::m_mapViewPort
private

Definition at line 471 of file camera.h.

Referenced by getMapViewPort().

bool FIFE::Camera::m_mapViewPortUpdated
private

Definition at line 472 of file camera.h.

Referenced by getMapViewPort(), and updateMatrices().

DoubleMatrix FIFE::Camera::m_matrix
private

Definition at line 455 of file camera.h.

Referenced by toScreenCoordinates(), and updateMatrices().

SDL_Color FIFE::Camera::m_overlay_color
private

Definition at line 508 of file camera.h.

Referenced by getOverlayColor(), renderOverlay(), and setOverlayColor().

std::list<RendererBase*> FIFE::Camera::m_pipeline
private
double FIFE::Camera::m_referenceScaleX
private
double FIFE::Camera::m_referenceScaleY
private
RenderBackend* FIFE::Camera::m_renderbackend
private

Definition at line 490 of file camera.h.

Referenced by render(), renderOverlay(), renderStaticLayer(), and resetLightingColor().

std::map<std::string, RendererBase*> FIFE::Camera::m_renderers
private

Definition at line 485 of file camera.h.

Referenced by addRenderer(), getRenderer(), onRendererEnabledChanged(), resetRenderers(), and ~Camera().

double FIFE::Camera::m_rotation
private
DoubleMatrix FIFE::Camera::m_screen_2_vscreen
private

Definition at line 461 of file camera.h.

Referenced by screenToVirtualScreen(), and updateMatrices().

uint32_t FIFE::Camera::m_screen_cell_height
private

Definition at line 474 of file camera.h.

Referenced by getCellImageDimensions(), setCellImageDimensions(), and updateReferenceScale().

uint32_t FIFE::Camera::m_screen_cell_width
private

Definition at line 473 of file camera.h.

Referenced by getCellImageDimensions(), setCellImageDimensions(), and updateReferenceScale().

uint32_t FIFE::Camera::m_start_time
private

Definition at line 513 of file camera.h.

Referenced by renderOverlay(), and setOverlayAnimation().

double FIFE::Camera::m_tilt
private
Transform FIFE::Camera::m_transform
private
bool FIFE::Camera::m_updated
private

Definition at line 488 of file camera.h.

Referenced by isUpdated(), render(), and resetUpdates().

Rect FIFE::Camera::m_viewport
private
DoubleMatrix FIFE::Camera::m_vs_inverse_matrix
private

Definition at line 459 of file camera.h.

Referenced by updateMatrices().

DoubleMatrix FIFE::Camera::m_vs_matrix
private

Definition at line 458 of file camera.h.

Referenced by toVirtualScreenCoordinates(), and updateMatrices().

DoubleMatrix FIFE::Camera::m_vscreen_2_screen
private

Definition at line 460 of file camera.h.

Referenced by updateMatrices(), and virtualScreenToScreen().

double FIFE::Camera::m_zoom
private

Definition at line 465 of file camera.h.

Referenced by getMatchingInstances(), getZoom(), setZoom(), and updateMatrices().

double FIFE::Camera::m_zToY
private

Definition at line 466 of file camera.h.

Referenced by getZToY(), setZToY(), and updateMatrices().


The documentation for this class was generated from the following files: