FIFE
be64c707dea6b3250bd4355bf5c825d25920087d
|
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>
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, Map *map, 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... | |
Map * | getMap () |
Gets the map where camera is bound. 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... | |
void | setLocation (const Location &location) |
Sets the location for camera. More... | |
Location | getLocation () |
Gets the location camera is rendering. More... | |
void | setPosition (const ExactModelCoordinate &position) |
Sets map point for the camera. More... | |
ExactModelCoordinate | getPosition () const |
Gets map point of the camera. More... | |
Point3D | getOrigin () const |
Gets screen point of the camera. More... | |
void | attach (Instance *instance) |
Attaches the camera to an instance. More... | |
void | detach () |
Detaches the camera from an instance. More... | |
Instance * | getAttached () 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 Rect & | getViewPort () const |
Gets the viewport for camera in pixel coordinates. More... | |
const Rect & | getMapViewPort () |
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... | |
RenderList & | getRenderListRef (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... | |
RendererBase * | getRenderer (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 | init () |
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... | |
DoublePoint | getLogicalCellDimensions () |
Gets logical cell image dimensions and ignores the layer and cellgrid. 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... | |
Friends | |
class | MapObserver |
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.
typedef uint32_t FIFE::Camera::Transform |
FIFE::Camera::Camera | ( | const std::string & | id, |
Map * | map, | ||
const Rect & | viewport, | ||
RenderBackend * | renderbackend | ||
) |
Constructor Camera needs to be added to the view.
If not done so, it is not rendered.
id | identifier for the camera |
map | map where camera is bound |
viewport | used viewport for the camera. Viewport is measured in pixels in relation to game main screen |
renderbackend | to use with rendering |
Definition at line 80 of file camera.cpp.
References init(), m_map_observer, and MapObserver.
|
virtual |
Destructor.
Definition at line 118 of file camera.cpp.
References FIFE::Map::getLayers(), m_map, m_map_observer, m_renderers, FIFE::Map::removeChangeListener(), and removeLayer().
|
private |
Definition at line 747 of file camera.cpp.
References m_cache, m_layerToInstances, and refresh().
Referenced by init(), FIFE::MapObserver::onLayerCreate(), and updateRenderLists().
void FIFE::Camera::addRenderer | ( | RendererBase * | renderer | ) |
Adds new renderer on the view.
Ownership is transferred to the camera.
Definition at line 712 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().
void FIFE::Camera::attach | ( | Instance * | instance | ) |
Attaches the camera to an instance.
instance | Instance to which the camera shall be attached |
Definition at line 669 of file camera.cpp.
References m_attachedTo.
Referenced by getReferenceScaleY().
void FIFE::Camera::calculateZValue | ( | DoublePoint3D & | screen_coords | ) |
calculates z-value for given screenpoint
Definition at line 410 of file camera.cpp.
References m_position, 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().
void FIFE::Camera::detach | ( | ) |
Detaches the camera from an instance.
Definition at line 675 of file camera.cpp.
References m_attachedTo.
Referenced by getReferenceScaleY().
|
inline |
Returns instance where camera is attached.
NULL if not attached
Definition at line 221 of file camera.h.
References getLayerViewPort(), getMapViewPort(), getMatchingInstances(), getRenderListRef(), getViewPort(), isEnabled(), m_attachedTo, refresh(), resetUpdates(), screenToVirtualScreen(), setEnabled(), setViewPort(), toMapCoordinates(), toScreenCoordinates(), toVirtualScreenCoordinates(), update(), and virtualScreenToScreen().
Point FIFE::Camera::getCellImageDimensions | ( | ) |
Gets screen cell image dimensions.
Definition at line 259 of file camera.cpp.
References m_screenCellHeight, and m_screenCellWidth.
Referenced by getMap().
Gets screen cell image dimensions for given layer.
Definition at line 263 of file camera.cpp.
References getLogicalCellDimensions(), m_referenceScaleX, m_referenceScaleY, FIFE::PointType2D< T >::x, and FIFE::PointType2D< T >::y.
|
inline |
Gets the viewport for camera in layer coordinates.
layer | A pointer to the layer whose geometry is used for the conversion |
Definition at line 326 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().
std::vector< float > FIFE::Camera::getLightingColor | ( | ) |
Returns a vector that contain the light color.
Definition at line 772 of file camera.cpp.
References m_light_colors.
Referenced by isUpdated().
Location FIFE::Camera::getLocation | ( | ) |
Gets the location camera is rendering.
If no location was set, the camera creates a location. The top layer of the map together with current camera position are used for that.
Definition at line 271 of file camera.cpp.
References FIFE::Location::getLayer(), FIFE::Map::getLayerCount(), FIFE::Map::getLayers(), m_location, m_map, m_position, FIFE::Location::setLayer(), and FIFE::Location::setMapCoordinates().
Referenced by getReferenceScaleY().
|
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().
|
private |
Gets logical cell image dimensions and ignores the layer and cellgrid.
Definition at line 475 of file camera.cpp.
References FIFE::Matrix< T >::applyRotate(), FIFE::Matrix< T >::loadRotate(), m_rotation, and m_tilt.
Referenced by getCellImageDimensions(), and updateReferenceScale().
|
inline |
Gets the map where camera is bound.
Definition at line 95 of file camera.h.
References getCellImageDimensions(), getOriginalZToY(), getRotation(), getTilt(), getZoom(), getZToY(), isZToYEnabled(), m_map, setCellImageDimensions(), setRotation(), setTilt(), setZoom(), setZToY(), and setZToYEnabled().
const Rect & FIFE::Camera::getMapViewPort | ( | ) |
Gets the viewport for camera in map coordinates.
Definition at line 293 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().
void FIFE::Camera::getMatchingInstances | ( | ScreenPoint | screen_coords, |
Layer & | layer, | ||
std::list< Instance *> & | instances, | ||
uint8_t | alpha = 0 |
||
) |
Returns instances that match given screen coordinate.
screen_coords | screen coordinates to be used for hit search |
layer | layer to use for search |
instances | list of instances that is filled based on hit test results |
alpha | the 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 524 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().
void FIFE::Camera::getMatchingInstances | ( | Rect | screen_rect, |
Layer & | layer, | ||
std::list< Instance *> & | instances, | ||
uint8_t | alpha = 0 |
||
) |
Returns instances that match given screen coordinate.
screen_rect | rect that contains screen coordinates to be used for search |
layer | layer to use for search |
instances | list of instances that is filled based on hit test results |
alpha | the 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 579 of file camera.cpp.
References FIFE::RectType< T >::bottom(), 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 >::right(), 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
loc | location where to fetch instances from |
instances | list of instances that is filled based on hit test results |
use_exactcoordinates | if true, comparison is done using exact coordinates. if not, cell coordinates are used |
Definition at line 645 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 of the camera.
Definition at line 364 of file camera.cpp.
References m_curOrigin.
Referenced by getReferenceScaleY().
double FIFE::Camera::getOriginalZToY | ( | ) | const |
Gets original zToY transformation value.
Definition at line 192 of file camera.cpp.
References FIFE::Matrix< T >::applyRotate(), FIFE::Matrix< T >::applyTranslate(), FIFE::Layer::getCellGrid(), FIFE::Location::getLayer(), FIFE::Location::getMapCoordinates(), FIFE::Matrix< T >::loadScale(), FIFE::Matrix< T >::m9, m_location, m_referenceScaleX, m_referenceScaleY, m_rotation, m_tilt, FIFE::PointType3D< T >::x, FIFE::PointType3D< T >::y, and FIFE::PointType3D< T >::z.
Referenced by getMap().
AnimationPtr FIFE::Camera::getOverlayAnimation | ( | ) |
Returns an AnimationPtr to the overlay animation.
Definition at line 839 of file camera.cpp.
References m_ani_ptr.
Referenced by isUpdated().
std::vector< uint8_t > FIFE::Camera::getOverlayColor | ( | ) |
Returns a vector that contain the overlay color.
Definition at line 794 of file camera.cpp.
References m_col_overlay, and m_overlay_color.
Referenced by isUpdated().
int32_t FIFE::Camera::getOverlayImage | ( | ) |
Returns the pool id of the overlay image.
Definition at line 819 of file camera.cpp.
References m_img_id, and m_img_overlay.
Referenced by isUpdated().
ExactModelCoordinate FIFE::Camera::getPosition | ( | ) | const |
Gets map point of the camera.
Definition at line 360 of file camera.cpp.
References m_position.
Referenced by getReferenceScaleY().
|
inline |
Gets x reference scale for cell image dimensions.
Definition at line 177 of file camera.h.
References m_referenceScaleX.
|
inline |
Gets y reference scale for cell image dimensions.
Definition at line 181 of file camera.h.
References attach(), detach(), getLocation(), getOrigin(), getPosition(), m_referenceScaleY, setLocation(), and setPosition().
|
virtual |
Gets renderer with given name.
Implements FIFE::IRendererContainer.
Definition at line 736 of file camera.cpp.
References m_renderers.
Referenced by isUpdated().
RenderList & FIFE::Camera::getRenderListRef | ( | Layer * | layer | ) |
Returns reference to RenderList.
Definition at line 520 of file camera.cpp.
References m_layerToInstances.
Referenced by getAttached().
double FIFE::Camera::getRotation | ( | ) | const |
Gets camera rotation.
Definition at line 173 of file camera.cpp.
References m_rotation.
Referenced by getMap().
double FIFE::Camera::getTilt | ( | ) | const |
Gets camera tilt.
Definition at line 160 of file camera.cpp.
References m_tilt.
Referenced by getMap().
const Rect & FIFE::Camera::getViewPort | ( | ) | const |
Gets the viewport for camera in pixel coordinates.
Definition at line 289 of file camera.cpp.
References m_viewport.
Referenced by getAttached(), FIFE::GridRenderer::render(), FIFE::CoordinateRenderer::render(), FIFE::BlockingInfoRenderer::render(), FIFE::LightRendererImageInfo::render(), FIFE::LightRendererAnimationInfo::render(), FIFE::GenericRendererImageInfo::render(), FIFE::GenericRendererAnimationInfo::render(), FIFE::LightRendererResizeInfo::render(), FIFE::GenericRendererTextInfo::render(), FIFE::GenericRendererResizeInfo::render(), and render().
double FIFE::Camera::getZoom | ( | ) | const |
Gets camera zoom.
Definition at line 188 of file camera.cpp.
References m_zoom.
Referenced by FIFE::RendererNode::getCalculatedPoint(), getMap(), FIFE::LayerCache::LayerCache(), FIFE::CoordinateRenderer::render(), FIFE::CellRenderer::render(), FIFE::LightRendererImageInfo::render(), FIFE::LightRendererAnimationInfo::render(), FIFE::LightRendererSimpleLightInfo::render(), FIFE::GenericRendererImageInfo::render(), FIFE::GenericRendererAnimationInfo::render(), FIFE::LightRendererResizeInfo::render(), FIFE::GenericRendererTextInfo::render(), and FIFE::GenericRendererResizeInfo::render().
double FIFE::Camera::getZToY | ( | ) | const |
Gets zToY value.
Definition at line 216 of file camera.cpp.
References m_zToY.
Referenced by getMap().
|
private |
Definition at line 137 of file camera.cpp.
References FIFE::Map::addChangeListener(), addLayer(), FIFE::Map::getLayers(), m_curOrigin, m_map, m_map_observer, m_position, m_transform, PositionTransform, toScreenCoordinates(), and updateMatrices().
Referenced by Camera().
bool FIFE::Camera::isEnabled | ( | ) |
Gets if camera is enabled / disabled.
Definition at line 346 of file camera.cpp.
References m_enabled.
Referenced by getAttached().
|
inline |
Returns true if camera view has been updated, otherwise false.
Definition at line 334 of file camera.h.
References addRenderer(), calculateZValue(), getLightingColor(), getOverlayAnimation(), getOverlayColor(), getOverlayImage(), getRenderer(), m_updated, onRendererEnabledChanged(), onRendererPipelinePositionChanged(), render(), resetLightingColor(), resetOverlayAnimation(), resetOverlayColor(), resetOverlayImage(), resetRenderers(), setLightingColor(), setOverlayAnimation(), setOverlayColor(), and setOverlayImage().
bool FIFE::Camera::isZToYEnabled | ( | ) | const |
Gets if z to y manipulation is enabled / disabled.
Definition at line 224 of file camera.cpp.
References m_enabledZToY.
Referenced by getMap().
|
virtual |
Renderer is enabled / disabled.
Implements FIFE::IRendererListener.
Definition at line 725 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().
|
virtual |
Renderer's pipeline position has been changed.
Implements FIFE::IRendererListener.
Definition at line 721 of file camera.cpp.
References m_pipeline, and FIFE::pipelineSort().
Referenced by isUpdated().
void FIFE::Camera::refresh | ( | ) |
Refreshes camera view in case e.g.
location is updated directly (not via setLocation)
Definition at line 693 of file camera.cpp.
References m_curOrigin, m_position, m_transform, RotationTransform, toScreenCoordinates(), and updateMatrices().
Referenced by addLayer(), getAttached(), removeLayer(), and setViewPort().
|
private |
Definition at line 754 of file camera.cpp.
References FIFE::Location::getLayer(), m_cache, m_layerToInstances, m_location, refresh(), and FIFE::Location::reset().
Referenced by FIFE::MapObserver::onLayerDelete(), and ~Camera().
void FIFE::Camera::render | ( | ) |
Renders camera.
Definition at line 981 of file camera.cpp.
References FIFE::Map::getLayers(), FIFE::RenderBackend::getLightingModel(), getViewPort(), m_cache, m_layerToInstances, m_light_colors, m_lighting, m_map, m_pipeline, m_renderbackend, m_updated, m_viewport, FIFE::MAX_BATCH_SIZE, FIFE::RenderBackend::popClipArea(), FIFE::RenderBackend::pushClipArea(), renderOverlay(), renderStaticLayer(), FIFE::RenderBackend::renderVertexArrays(), FIFE::RenderBackend::resetLighting(), FIFE::RenderBackend::resetStencilBuffer(), FIFE::RenderBackend::setLighting(), and updateRenderLists().
Referenced by isUpdated().
|
private |
Renders the overlay(color, image, animation) for the camera.
Definition at line 848 of file camera.cpp.
References FIFE::RenderBackend::fillRectangle(), FIFE::SharedPtr< T >::get(), FIFE::ImageManager::get(), FIFE::Animation::getDuration(), FIFE::Animation::getFrameByTimestamp(), FIFE::Image::getHeight(), FIFE::TimeManager::getTime(), FIFE::Image::getWidth(), FIFE::RectType< T >::h, FIFE::DynamicSingleton< ImageManager >::instance(), FIFE::DynamicSingleton< TimeManager >::instance(), m_ani_fill, m_ani_overlay, m_ani_ptr, m_col_overlay, m_img_fill, m_img_id, m_img_overlay, m_overlay_color, m_renderbackend, m_start_time, m_viewport, FIFE::Image::render(), FIFE::scaleTime(), FIFE::RectType< T >::w, FIFE::PointType2D< T >::x, FIFE::RectType< T >::x, FIFE::PointType2D< T >::y, and FIFE::RectType< T >::y.
Referenced by render().
|
private |
Renders the layer part that is on screen as one image.
Definition at line 903 of file camera.cpp.
References FIFE::RenderBackend::attachRenderTarget(), FIFE::RenderBackend::detachRenderTarget(), FIFE::SharedPtr< T >::get(), FIFE::LayerCache::getCacheImage(), FIFE::RenderBackend::getHeight(), FIFE::Layer::getId(), FIFE::RenderBackend::getName(), FIFE::RectType< T >::h, FIFE::DynamicSingleton< ImageManager >::instance(), FIFE::ImageManager::loadBlank(), m_cache, m_id, m_layerToInstances, m_pipeline, m_renderbackend, m_viewport, FIFE::MAX_BATCH_SIZE, FIFE::RenderBackend::popClipArea(), FIFE::RenderBackend::pushClipArea(), FIFE::RenderBackend::renderVertexArrays(), FIFE::LayerCache::setCacheImage(), and FIFE::RectType< T >::w.
Referenced by render().
void FIFE::Camera::resetLightingColor | ( | ) |
Resets lighting color.
Definition at line 781 of file camera.cpp.
References m_lighting, m_renderbackend, and FIFE::RenderBackend::resetLighting().
Referenced by isUpdated().
void FIFE::Camera::resetOverlayAnimation | ( | ) |
Resets the animation overlay.
Definition at line 843 of file camera.cpp.
References m_ani_overlay, m_ani_ptr, and FIFE::SharedPtr< T >::reset().
Referenced by isUpdated().
void FIFE::Camera::resetOverlayColor | ( | ) |
Resets the color overlay.
Definition at line 809 of file camera.cpp.
References m_col_overlay.
Referenced by isUpdated().
void FIFE::Camera::resetOverlayImage | ( | ) |
Resets the image overlay.
Definition at line 827 of file camera.cpp.
References m_img_id, and m_img_overlay.
Referenced by isUpdated().
void FIFE::Camera::resetRenderers | ( | ) |
resets active layer information on all renderers.
Definition at line 740 of file camera.cpp.
References m_renderers.
Referenced by isUpdated().
void FIFE::Camera::resetUpdates | ( | ) |
Resets temporary values from last update round, like warped flag.
Definition at line 699 of file camera.cpp.
References m_transform, m_updated, and NoneTransform.
Referenced by getAttached(), and updateRenderLists().
DoublePoint3D FIFE::Camera::screenToVirtualScreen | ( | const ScreenPoint & | p | ) |
Transforms given point from screen coordinates to virtual screen coordinates.
Definition at line 437 of file camera.cpp.
References FIFE::intPt2doublePt(), and m_screen_2_vscreen.
Referenced by getAttached().
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
Definition at line 228 of file camera.cpp.
References m_screenCellHeight, m_screenCellWidth, m_transform, PositionTransform, updateMatrices(), and updateReferenceScale().
Referenced by getMap(), and FIFE::MapLoader::load().
void FIFE::Camera::setEnabled | ( | bool | enabled | ) |
Sets camera enabled / disabled.
Definition at line 342 of file camera.cpp.
References m_enabled.
Referenced by getAttached().
|
inline |
void FIFE::Camera::setLightingColor | ( | float | red, |
float | green, | ||
float | blue | ||
) |
Sets lighting color.
Definition at line 764 of file camera.cpp.
References m_light_colors, and m_lighting.
Referenced by isUpdated().
void FIFE::Camera::setLocation | ( | const Location & | location | ) |
Sets the location for camera.
location | location (center point) to render |
Definition at line 236 of file camera.cpp.
References FIFE::Layer::getCellGrid(), FIFE::Location::getLayer(), FIFE::Location::getMapCoordinates(), m_curOrigin, m_location, m_position, m_transform, PositionTransform, toScreenCoordinates(), and updateMatrices().
Referenced by getReferenceScaleY().
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 832 of file camera.cpp.
References m_ani_fill, m_ani_overlay, m_ani_ptr, and m_start_time.
Referenced by isUpdated().
void FIFE::Camera::setOverlayColor | ( | uint8_t | red, |
uint8_t | green, | ||
uint8_t | blue, | ||
uint8_t | alpha | ||
) |
Sets a color as overlay.
Definition at line 786 of file camera.cpp.
References m_col_overlay, and m_overlay_color.
Referenced by isUpdated().
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 813 of file camera.cpp.
References m_img_fill, m_img_id, and m_img_overlay.
Referenced by isUpdated().
void FIFE::Camera::setPosition | ( | const ExactModelCoordinate & | position | ) |
Sets map point for the camera.
position | The camera position on the map |
Definition at line 350 of file camera.cpp.
References FIFE::Math< T >::Equal(), m_curOrigin, m_position, m_transform, PositionTransform, toScreenCoordinates(), updateMatrices(), FIFE::PointType3D< T >::x, and FIFE::PointType3D< T >::y.
Referenced by getReferenceScaleY().
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
rotation | rotation for the camera |
Definition at line 164 of file camera.cpp.
References FIFE::Math< T >::Equal(), m_rotation, m_transform, RotationTransform, updateMatrices(), and updateReferenceScale().
Referenced by getMap(), and FIFE::MapLoader::load().
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
tilt | tilt for the camera |
Definition at line 151 of file camera.cpp.
References FIFE::Math< T >::Equal(), m_tilt, m_transform, TiltTransform, updateMatrices(), and updateReferenceScale().
Referenced by getMap(), and FIFE::MapLoader::load().
void FIFE::Camera::setViewPort | ( | const Rect & | viewport | ) |
Sets the viewport for camera viewport is rectangle inside the view where camera renders.
viewport | area for camera render |
Definition at line 284 of file camera.cpp.
References m_viewport, and refresh().
Referenced by getAttached().
void FIFE::Camera::setZoom | ( | double | zoom | ) |
Sets zoom for the camera.
zoom | zoom for the camera |
Definition at line 177 of file camera.cpp.
References FIFE::Math< T >::Equal(), m_transform, m_zoom, updateMatrices(), and ZoomTransform.
Referenced by getMap(), and FIFE::MapLoader::load().
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.
zToY | influenced the z to y transformation of the camera. |
Definition at line 207 of file camera.cpp.
References FIFE::Math< T >::Equal(), m_enabledZToY, m_transform, m_zToY, updateMatrices(), and ZTransform.
Referenced by getMap(), and FIFE::MapLoader::load().
void FIFE::Camera::setZToYEnabled | ( | bool | enabled | ) |
Sets z to y manipulation enabled / disabled.
enabled | If true then the zToY value is used instead of the original matrix value. |
Definition at line 220 of file camera.cpp.
References m_enabledZToY.
Referenced by getMap().
ExactModelCoordinate FIFE::Camera::toMapCoordinates | ( | ScreenPoint | screen_coords, |
bool | z_calculated = true |
||
) |
Transforms given point from screen coordinates to map coordinates.
screen_coords | screen coordinates to transform |
z_calculated | if true, z-value (depth cut point) is pre-calculated. If false, camera calculates it |
Definition at line 415 of file camera.cpp.
References calculateZValue(), FIFE::intPt2doublePt(), and m_inverse_matrix.
Referenced by getAttached(), getMapViewPort(), and FIFE::CoordinateRenderer::render().
ScreenPoint FIFE::Camera::toScreenCoordinates | ( | const ExactModelCoordinate & | map_coords | ) |
Transforms given point from map coordinates to screen coordinates.
Definition at line 423 of file camera.cpp.
References FIFE::doublePt2intPt(), and m_matrix.
Referenced by calculateZValue(), getAttached(), FIFE::RendererNode::getCalculatedPoint(), init(), refresh(), FIFE::GridRenderer::render(), FIFE::CoordinateRenderer::render(), FIFE::CellSelectionRenderer::render(), FIFE::BlockingInfoRenderer::render(), FIFE::CellRenderer::render(), FIFE::InstanceRenderer::renderAlreadySorted(), FIFE::InstanceRenderer::renderUnsorted(), setLocation(), setPosition(), and update().
DoublePoint3D FIFE::Camera::toVirtualScreenCoordinates | ( | const ExactModelCoordinate & | map_coords | ) |
Transforms given point from map coordinates to virtual screen coordinates.
Definition at line 428 of file camera.cpp.
References m_vs_matrix.
Referenced by getAttached(), FIFE::InstanceRenderer::renderAlreadySorted(), and FIFE::InstanceRenderer::renderUnsorted().
void FIFE::Camera::update | ( | ) |
General update routine.
In this function, the camera's position gets updated when its attached to another instance.
Definition at line 679 of file camera.cpp.
References FIFE::Math< T >::Equal(), FIFE::Instance::getLocationRef(), FIFE::Location::getMapCoordinates(), m_attachedTo, m_curOrigin, m_position, m_transform, PositionTransform, toScreenCoordinates(), updateMatrices(), FIFE::PointType3D< T >::x, and FIFE::PointType3D< T >::y.
Referenced by getAttached().
|
private |
Updates the camera transformation matrix T with requested values.
The requests are done using these functions :
Definition at line 368 of file camera.cpp.
References FIFE::Matrix< T >::applyRotate(), FIFE::Matrix< T >::applyScale(), FIFE::Matrix< T >::applyTranslate(), FIFE::RectType< T >::h, FIFE::Matrix< T >::inverse(), FIFE::Matrix< T >::loadScale(), FIFE::Matrix< T >::m9, m_enabledZToY, m_inverse_matrix, m_mapViewPortUpdated, m_matrix, m_position, m_referenceScaleX, m_referenceScaleY, m_rotation, m_screen_2_vscreen, m_tilt, m_viewport, m_vs_inverse_matrix, m_vs_matrix, m_vscreen_2_screen, m_zoom, m_zToY, FIFE::Matrix< T >::mult4by4(), FIFE::RectType< T >::w, FIFE::RectType< T >::x, FIFE::PointType3D< T >::x, FIFE::RectType< T >::y, FIFE::PointType3D< T >::y, and FIFE::PointType3D< T >::z.
Referenced by init(), refresh(), setCellImageDimensions(), setLocation(), setPosition(), setRotation(), setTilt(), setZoom(), setZToY(), and update().
|
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)
Definition at line 507 of file camera.cpp.
References FIFE::_log, FL_DBG, getLogicalCellDimensions(), m_referenceScaleX, m_referenceScaleY, m_rotation, m_screenCellHeight, m_screenCellWidth, m_tilt, FIFE::PointType2D< T >::x, and FIFE::PointType2D< T >::y.
Referenced by setCellImageDimensions(), setRotation(), and setTilt().
|
private |
Updates camera RenderLists.
Definition at line 957 of file camera.cpp.
References FIFE::_log, addLayer(), FL_ERR, FIFE::Map::getLayers(), m_cache, m_layerToInstances, m_map, m_transform, NoneTransform, resetUpdates(), and FIFE::LayerCache::update().
Referenced by render().
ScreenPoint FIFE::Camera::virtualScreenToScreen | ( | const DoublePoint3D & | p | ) |
Transforms given point from virtual screen coordinates to screen coordinates.
Definition at line 433 of file camera.cpp.
References FIFE::doublePt2intPt(), and m_vscreen_2_screen.
Referenced by getAttached().
|
friend |
|
private |
Definition at line 511 of file camera.h.
Referenced by renderOverlay(), and setOverlayAnimation().
|
private |
Definition at line 506 of file camera.h.
Referenced by renderOverlay(), resetOverlayAnimation(), and setOverlayAnimation().
|
private |
Definition at line 509 of file camera.h.
Referenced by getOverlayAnimation(), renderOverlay(), resetOverlayAnimation(), and setOverlayAnimation().
|
private |
|
private |
Definition at line 495 of file camera.h.
Referenced by addLayer(), removeLayer(), render(), renderStaticLayer(), and updateRenderLists().
|
private |
Definition at line 504 of file camera.h.
Referenced by getOverlayColor(), renderOverlay(), resetOverlayColor(), and setOverlayColor().
|
private |
Definition at line 472 of file camera.h.
Referenced by getOrigin(), init(), refresh(), setLocation(), setPosition(), and update().
|
private |
Definition at line 480 of file camera.h.
Referenced by isEnabled(), and setEnabled().
|
private |
Definition at line 470 of file camera.h.
Referenced by isZToYEnabled(), setZToY(), setZToYEnabled(), and updateMatrices().
|
private |
Definition at line 416 of file camera.h.
Referenced by getId(), renderStaticLayer(), and setId().
|
private |
Definition at line 510 of file camera.h.
Referenced by renderOverlay(), and setOverlayImage().
|
private |
Definition at line 508 of file camera.h.
Referenced by getOverlayImage(), renderOverlay(), resetOverlayImage(), and setOverlayImage().
|
private |
Definition at line 505 of file camera.h.
Referenced by getOverlayImage(), renderOverlay(), resetOverlayImage(), and setOverlayImage().
|
private |
Definition at line 459 of file camera.h.
Referenced by toMapCoordinates(), and updateMatrices().
|
private |
Definition at line 493 of file camera.h.
Referenced by addLayer(), getMatchingInstances(), getRenderListRef(), removeLayer(), render(), renderStaticLayer(), and updateRenderLists().
|
private |
Definition at line 501 of file camera.h.
Referenced by getLightingColor(), render(), and setLightingColor().
|
private |
Definition at line 499 of file camera.h.
Referenced by render(), resetLightingColor(), and setLightingColor().
|
private |
Definition at line 471 of file camera.h.
Referenced by getLocation(), getOriginalZToY(), removeLayer(), and setLocation().
|
private |
Definition at line 417 of file camera.h.
Referenced by getLocation(), getMap(), init(), render(), updateRenderLists(), and ~Camera().
|
private |
|
private |
Definition at line 474 of file camera.h.
Referenced by getMapViewPort().
|
private |
Definition at line 475 of file camera.h.
Referenced by getMapViewPort(), and updateMatrices().
|
private |
Definition at line 458 of file camera.h.
Referenced by toScreenCoordinates(), and updateMatrices().
|
private |
Definition at line 507 of file camera.h.
Referenced by getOverlayColor(), renderOverlay(), and setOverlayColor().
|
private |
Definition at line 488 of file camera.h.
Referenced by addRenderer(), onRendererEnabledChanged(), onRendererPipelinePositionChanged(), render(), and renderStaticLayer().
|
private |
Definition at line 421 of file camera.h.
Referenced by calculateZValue(), getLocation(), getPosition(), init(), refresh(), setLocation(), setPosition(), update(), and updateMatrices().
|
private |
Definition at line 478 of file camera.h.
Referenced by getCellImageDimensions(), getOriginalZToY(), getReferenceScaleX(), updateMatrices(), and updateReferenceScale().
|
private |
Definition at line 479 of file camera.h.
Referenced by getCellImageDimensions(), getOriginalZToY(), getReferenceScaleY(), updateMatrices(), and updateReferenceScale().
|
private |
Definition at line 419 of file camera.h.
Referenced by render(), renderOverlay(), renderStaticLayer(), and resetLightingColor().
|
private |
Definition at line 487 of file camera.h.
Referenced by addRenderer(), getRenderer(), onRendererEnabledChanged(), resetRenderers(), and ~Camera().
|
private |
Definition at line 467 of file camera.h.
Referenced by getLogicalCellDimensions(), getOriginalZToY(), getRotation(), setRotation(), updateMatrices(), and updateReferenceScale().
|
private |
Definition at line 464 of file camera.h.
Referenced by screenToVirtualScreen(), and updateMatrices().
|
private |
Definition at line 477 of file camera.h.
Referenced by getCellImageDimensions(), setCellImageDimensions(), and updateReferenceScale().
|
private |
Definition at line 476 of file camera.h.
Referenced by getCellImageDimensions(), setCellImageDimensions(), and updateReferenceScale().
|
private |
Definition at line 512 of file camera.h.
Referenced by renderOverlay(), and setOverlayAnimation().
|
private |
Definition at line 466 of file camera.h.
Referenced by calculateZValue(), getLogicalCellDimensions(), getOriginalZToY(), getTilt(), setTilt(), updateMatrices(), and updateReferenceScale().
|
private |
Definition at line 484 of file camera.h.
Referenced by init(), refresh(), resetUpdates(), setCellImageDimensions(), setLocation(), setPosition(), setRotation(), setTilt(), setZoom(), setZToY(), update(), and updateRenderLists().
|
private |
Definition at line 490 of file camera.h.
Referenced by isUpdated(), render(), and resetUpdates().
|
private |
Definition at line 418 of file camera.h.
Referenced by getMapViewPort(), getViewPort(), render(), renderOverlay(), renderStaticLayer(), setViewPort(), and updateMatrices().
|
private |
Definition at line 462 of file camera.h.
Referenced by updateMatrices().
|
private |
Definition at line 461 of file camera.h.
Referenced by toVirtualScreenCoordinates(), and updateMatrices().
|
private |
Definition at line 463 of file camera.h.
Referenced by updateMatrices(), and virtualScreenToScreen().
|
private |
Definition at line 468 of file camera.h.
Referenced by getMatchingInstances(), getZoom(), setZoom(), and updateMatrices().
|
private |
Definition at line 469 of file camera.h.
Referenced by getZToY(), setZToY(), and updateMatrices().