FIFE
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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

enum  TransformType {
  NoneTransform = 0x00, TiltTransform = 0x01, RotationTransform = 0x02, ZoomTransform = 0x04,
  PositionTransform = 0x08, ZTransform = 0x10
}
 
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 getReferenceScale () const
 Gets 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)
 
DoublePoint3D screenToVirtualScreen (const ScreenPoint &p)
 
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 (ScreenPoint &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_reference_scale
 
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_layer_to_instances
 
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 58 of file camera.h.

Member Typedef Documentation

typedef uint32_t FIFE::Camera::Transform

Definition at line 68 of file camera.h.

Member Enumeration Documentation

Enumerator
NoneTransform 
TiltTransform 
RotationTransform 
ZoomTransform 
PositionTransform 
ZTransform 

Definition at line 60 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 77 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 119 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 712 of file camera.cpp.

References m_cache, and m_layer_to_instances.

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 677 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().

+ 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 632 of file camera.cpp.

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

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

calculates z-value for given screenpoint

Definition at line 411 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 toMapCoordinates().

+ Here is the caller graph for this function:

void FIFE::Camera::detach ( )

Detaches the camera from an instance.

Definition at line 641 of file camera.cpp.

References m_attachedto.

Instance* FIFE::Camera::getAttached ( ) const
inline

Returns instance where camera is attached.

NULL if not attached

Definition at line 217 of file camera.h.

References m_attachedto.

Point FIFE::Camera::getCellImageDimensions ( )

Gets screen cell image dimensions.

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

Definition at line 267 of file camera.cpp.

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

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 271 of file camera.cpp.

References FIFE::Location::getLayer(), getLogicalCellDimensions(), m_image_dimensions, m_location, m_reference_scale, 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 90 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 336 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 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 732 of file camera.cpp.

References m_light_colors.

Location FIFE::Camera::getLocation ( ) const

Gets the location camera is rendering.

Returns
camera location

Definition at line 287 of file camera.cpp.

References m_location.

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 291 of file camera.cpp.

References m_location.

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

Gets logical cell image dimensions for given layer.

Definition at line 441 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 303 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 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 523 of file camera.cpp.

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

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 561 of file camera.cpp.

References FIFE::RectType< T >::contains(), FIFE::RenderItem::dimensions, FIFE::Math< T >::Equal(), FIFE::Image::forceLoadInternal(), FIFE::Image::getHeight(), FIFE::Image::getPixelRGBA(), FIFE::Image::getWidth(), FIFE::RectType< T >::h, FIFE::RenderItem::image, FIFE::RectType< T >::intersects(), FIFE::Image::isSharedImage(), m_layer_to_instances, 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 608 of file camera.cpp.

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

Point3D FIFE::Camera::getOrigin ( ) const

Gets screen point for the camera location.

Returns
camera screen point

Definition at line 360 of file camera.cpp.

References m_cur_origo.

AnimationPtr FIFE::Camera::getOverlayAnimation ( )

Returns an AnimationPtr to the overlay animation.

Definition at line 799 of file camera.cpp.

References m_ani_ptr.

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

Returns a vector that contain the overlay color.

Definition at line 754 of file camera.cpp.

References m_col_overlay, and m_overlay_color.

int32_t FIFE::Camera::getOverlayImage ( )

Returns the pool id of the overlay image.

Definition at line 779 of file camera.cpp.

References m_img_id, and m_img_overlay.

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

Gets real cell image dimensions for given layer.

Definition at line 475 of file camera.cpp.

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

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

Gets reference scale for cell image dimensions.

Definition at line 176 of file camera.h.

References m_reference_scale.

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

Gets renderer with given name.

Implements FIFE::IRendererContainer.

Definition at line 701 of file camera.cpp.

References m_renderers.

Referenced by FIFE::InstanceRenderer::renderAlreadySorted().

+ Here is the caller graph for this function:

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

Returns reference to RenderList.

Definition at line 519 of file camera.cpp.

References m_layer_to_instances.

Referenced by FIFE::LayerCache::removeInstance().

+ Here is the caller graph for this function:

double FIFE::Camera::getRotation ( ) const

Gets camera rotation.

Returns
rotation of the camera

Definition at line 153 of file camera.cpp.

References m_rotation.

Referenced by FIFE::LayerCache::sortRenderList(), and FIFE::LayerCache::updateVisual().

+ Here is the caller graph for this function:

double FIFE::Camera::getTilt ( ) const

Gets camera tilt.

Returns
tilt of camera

Definition at line 141 of file camera.cpp.

References m_tilt.

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 496 of file camera.cpp.

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

double FIFE::Camera::getZToY ( ) const

Gets zToY value.

Returns
zToY value of the camera.

Definition at line 196 of file camera.cpp.

References m_zToY.

bool FIFE::Camera::isEnabled ( )

Gets if camera is enabled / disabled.

Definition at line 356 of file camera.cpp.

References m_enabled.

bool FIFE::Camera::isUpdated ( )
inline

Returns true if camera view has been updated, otherwise false.

Definition at line 323 of file camera.h.

References m_updated.

Referenced by FIFE::CellRenderer::render().

+ 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 204 of file camera.cpp.

References m_enabledZToY.

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

Renderer is enabled / disabled.

Implements FIFE::IRendererListener.

Definition at line 690 of file camera.cpp.

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

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

Renderer's pipeline position has been changed.

Implements FIFE::IRendererListener.

Definition at line 686 of file camera.cpp.

References m_pipeline, and FIFE::pipelineSort().

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 659 of file camera.cpp.

References m_transform, PositionTransform, and updateMatrices().

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

Definition at line 718 of file camera.cpp.

References m_cache, and m_layer_to_instances.

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 741 of file camera.cpp.

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

void FIFE::Camera::resetOverlayAnimation ( )

Resets the animation overlay.

Definition at line 803 of file camera.cpp.

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

void FIFE::Camera::resetOverlayColor ( )

Resets the color overlay.

Definition at line 769 of file camera.cpp.

References m_col_overlay.

void FIFE::Camera::resetOverlayImage ( )

Resets the image overlay.

Definition at line 787 of file camera.cpp.

References m_img_id, and m_img_overlay.

void FIFE::Camera::resetRenderers ( )

resets active layer information on all renderers.

Definition at line 705 of file camera.cpp.

References m_renderers.

void FIFE::Camera::resetUpdates ( )

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

Definition at line 664 of file camera.cpp.

References m_transform, m_updated, and NoneTransform.

Referenced by updateRenderLists().

+ Here is the caller graph for this function:

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

Definition at line 437 of file camera.cpp.

References FIFE::intPt2doublePt(), and m_screen_2_vscreen.

Referenced by FIFE::LayerCache::update().

+ 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 208 of file camera.cpp.

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

Referenced by FIFE::MapLoader::load().

+ Here is the caller graph for this function:

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

Sets camera enabled / disabled.

Definition at line 352 of file camera.cpp.

References m_enabled.

void FIFE::Camera::setId ( const std::string &  id)
inline

Sets the identifier for this camera.

Definition at line 94 of file camera.h.

References m_id.

void FIFE::Camera::setLightingColor ( float  red,
float  green,
float  blue 
)

Sets lighting color.

Definition at line 724 of file camera.cpp.

References m_light_colors, and m_lighting.

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

Sets the location for camera.

Parameters
locationlocation (center point) to render

Definition at line 216 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().

+ 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 792 of file camera.cpp.

References m_ani_fill, m_ani_overlay, m_ani_ptr, and m_start_time.

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

Sets a color as overlay.

Definition at line 746 of file camera.cpp.

References m_col_overlay, and m_overlay_color.

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 773 of file camera.cpp.

References m_img_fill, m_img_id, and m_img_overlay.

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 145 of file camera.cpp.

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

Referenced by FIFE::MapLoader::load().

+ 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 132 of file camera.cpp.

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

Referenced by FIFE::MapLoader::load().

+ 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 295 of file camera.cpp.

References m_viewport.

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

Sets zoom for the camera.

Parameters
zoomzoom for the camera

Definition at line 157 of file camera.cpp.

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

Referenced by FIFE::MapLoader::load().

+ 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 187 of file camera.cpp.

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

Referenced by FIFE::MapLoader::load().

+ 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 200 of file camera.cpp.

References m_enabledZToY.

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 416 of file camera.cpp.

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

Referenced by 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 screen coordinates

Definition at line 428 of file camera.cpp.

References m_vs_matrix.

Referenced by FIFE::InstanceRenderer::renderAlreadySorted(), and FIFE::LayerCache::updatePosition().

+ 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 645 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.

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

Definition at line 246 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 510 of file camera.cpp.

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

Referenced by setCellImageDimensions(), and setTilt().

+ Here is the caller graph for this function:

void FIFE::Camera::updateRenderLists ( )
private

Updates camera RenderLists.

Definition at line 900 of file camera.cpp.

References FIFE::_log, addLayer(), FL_ERR, FIFE::Map::getLayers(), FIFE::Location::getMap(), m_cache, m_layer_to_instances, 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)

Definition at line 433 of file camera.cpp.

References FIFE::doublePt2intPt(), and m_vscreen_2_screen.

Referenced by FIFE::LayerCache::updatePosition().

+ Here is the caller graph for this function:

Friends And Related Function Documentation

friend class MapObserver
friend

Definition at line 400 of file camera.h.

Referenced by Camera().

Member Data Documentation

bool FIFE::Camera::m_ani_fill
private

Definition at line 499 of file camera.h.

Referenced by renderOverlay(), and setOverlayAnimation().

bool FIFE::Camera::m_ani_overlay
private

Definition at line 494 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 465 of file camera.h.

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

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

Definition at line 482 of file camera.h.

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

bool FIFE::Camera::m_col_overlay
private

Definition at line 492 of file camera.h.

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

ScreenPoint FIFE::Camera::m_cur_origo
private

Definition at line 457 of file camera.h.

Referenced by getOrigin(), and setLocation().

bool FIFE::Camera::m_enabled
private

Definition at line 464 of file camera.h.

Referenced by isEnabled(), and setEnabled().

bool FIFE::Camera::m_enabledZToY
private

Definition at line 455 of file camera.h.

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

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

Definition at line 404 of file camera.h.

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

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

Definition at line 467 of file camera.h.

Referenced by getCellImageDimensions().

bool FIFE::Camera::m_img_fill
private

Definition at line 498 of file camera.h.

Referenced by renderOverlay(), and setOverlayImage().

int32_t FIFE::Camera::m_img_id
private

Definition at line 496 of file camera.h.

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

bool FIFE::Camera::m_img_overlay
private

Definition at line 493 of file camera.h.

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

DoubleMatrix FIFE::Camera::m_inverse_matrix
private

Definition at line 444 of file camera.h.

Referenced by toMapCoordinates(), and updateMatrices().

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

Definition at line 489 of file camera.h.

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

bool FIFE::Camera::m_lighting
private

Definition at line 487 of file camera.h.

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

Map* FIFE::Camera::m_map
private

Definition at line 484 of file camera.h.

Referenced by Camera(), and updateMap().

MapObserver* FIFE::Camera::m_map_observer
private

Definition at line 483 of file camera.h.

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

Rect FIFE::Camera::m_mapViewPort
private

Definition at line 459 of file camera.h.

Referenced by getMapViewPort().

bool FIFE::Camera::m_mapViewPortUpdated
private

Definition at line 460 of file camera.h.

Referenced by getMapViewPort(), and updateMatrices().

DoubleMatrix FIFE::Camera::m_matrix
private

Definition at line 443 of file camera.h.

Referenced by toScreenCoordinates(), and updateMatrices().

SDL_Color FIFE::Camera::m_overlay_color
private

Definition at line 495 of file camera.h.

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

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

Definition at line 477 of file camera.h.

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

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

Definition at line 472 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 449 of file camera.h.

Referenced by screenToVirtualScreen(), and updateMatrices().

uint32_t FIFE::Camera::m_screen_cell_height
private

Definition at line 462 of file camera.h.

Referenced by getCellImageDimensions(), and setCellImageDimensions().

uint32_t FIFE::Camera::m_screen_cell_width
private

Definition at line 461 of file camera.h.

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

uint32_t FIFE::Camera::m_start_time
private

Definition at line 500 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 475 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 447 of file camera.h.

Referenced by updateMatrices().

DoubleMatrix FIFE::Camera::m_vs_matrix
private

Definition at line 446 of file camera.h.

Referenced by toVirtualScreenCoordinates(), and updateMatrices().

DoubleMatrix FIFE::Camera::m_vscreen_2_screen
private

Definition at line 448 of file camera.h.

Referenced by updateMatrices(), and virtualScreenToScreen().

double FIFE::Camera::m_zoom
private

Definition at line 453 of file camera.h.

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

double FIFE::Camera::m_zToY
private

Definition at line 454 of file camera.h.

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


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