FIFE
|
#include <layercache.h>
Classes | |
struct | Entry |
Public Types | |
typedef QuadTree< std::set < int32_t > > | CacheTree |
Public Member Functions | |
LayerCache (Camera *camera) | |
~LayerCache () | |
void | setLayer (Layer *layer) |
void | update (Camera::Transform transform, RenderList &renderlist) |
void | addInstance (Instance *instance) |
void | removeInstance (Instance *instance) |
void | updateInstance (Instance *instance) |
ImagePtr | getCacheImage () |
void | setCacheImage (ImagePtr image) |
Private Types | |
enum | RenderEntryUpdateType { EntryNoneUpdate = 0x00, EntryVisualUpdate = 0x01, EntryPositionUpdate = 0x02, EntryFullUpdate = 0x03 } |
typedef uint8_t | RenderEntryUpdate |
Private Member Functions | |
void | collect (const Rect &viewport, std::vector< int32_t > &indices) |
void | reset () |
void | fullUpdate (Camera::Transform transform) |
void | updateEntries (std::set< int32_t > &removes, RenderList &renderlist) |
bool | updateVisual (Entry *entry) |
void | updatePosition (Entry *entry) |
void | sortRenderList (RenderList &renderlist) |
Private Attributes | |
Camera * | m_camera |
Layer * | m_layer |
CacheLayerChangeListener * | m_layerObserver |
CacheTree * | m_tree |
ImagePtr | m_cacheImage |
std::map< Instance *, int32_t > | m_instance_map |
std::vector< Entry * > | m_entries |
std::vector< RenderItem * > | m_renderItems |
std::set< int32_t > | m_entriesToUpdate |
std::deque< int32_t > | m_freeEntries |
bool | m_needSorting |
double | m_zMin |
double | m_zMax |
double | m_zoom |
bool | m_zoomed |
bool | m_straightZoom |
Definition at line 49 of file layercache.h.
typedef QuadTree<std::set<int32_t> > FIFE::LayerCache::CacheTree |
Definition at line 51 of file layercache.h.
|
private |
Definition at line 74 of file layercache.h.
|
private |
Enumerator | |
---|---|
EntryNoneUpdate | |
EntryVisualUpdate | |
EntryPositionUpdate | |
EntryFullUpdate |
Definition at line 68 of file layercache.h.
FIFE::LayerCache::LayerCache | ( | Camera * | camera | ) |
Definition at line 177 of file layercache.cpp.
References FIFE::Math< T >::Equal(), FIFE::Camera::getZoom(), FIFE::DynamicSingleton< RenderBackend >::instance(), m_camera, m_layer, m_needSorting, m_straightZoom, m_tree, m_zMax, m_zMin, m_zoom, and m_zoomed.
FIFE::LayerCache::~LayerCache | ( | ) |
Definition at line 194 of file layercache.cpp.
References m_entries, m_layer, m_layerObserver, m_renderItems, m_tree, and FIFE::Layer::removeChangeListener().
void FIFE::LayerCache::addInstance | ( | Instance * | instance | ) |
Definition at line 246 of file layercache.cpp.
References EntryFullUpdate, FIFE::LayerCache::Entry::entryIndex, FIFE::LayerCache::Entry::forceUpdate, FIFE::LayerCache::Entry::instanceIndex, m_entries, m_entriesToUpdate, m_freeEntries, m_instance_map, m_renderItems, FIFE::LayerCache::Entry::node, FIFE::LayerCache::Entry::updateInfo, and FIFE::LayerCache::Entry::visible.
Referenced by FIFE::CacheLayerChangeListener::onInstanceCreate(), and reset().
|
private |
Definition at line 359 of file layercache.cpp.
References FIFE::QuadNode< DataType, MinimumSize >::apply_visitor(), FIFE::QuadTree< DataType, MinimumSize >::find_container(), m_tree, FIFE::QuadNode< DataType, MinimumSize >::parent(), and FIFE::CacheTreeCollector::visit().
Referenced by update().
|
private |
Definition at line 440 of file layercache.cpp.
References FIFE::LayerCache::Entry::forceUpdate, FIFE::LayerCache::Entry::instanceIndex, m_entries, FIFE::Camera::RotationTransform, updatePosition(), and updateVisual().
Referenced by update().
ImagePtr FIFE::LayerCache::getCacheImage | ( | ) |
Definition at line 706 of file layercache.cpp.
References m_cacheImage.
Referenced by FIFE::Camera::renderStaticLayer().
void FIFE::LayerCache::removeInstance | ( | Instance * | instance | ) |
Definition at line 282 of file layercache.cpp.
References FIFE::Camera::getRenderListRef(), m_camera, m_entries, m_entriesToUpdate, m_freeEntries, m_instance_map, m_layer, m_renderItems, and FIFE::RenderItem::reset().
Referenced by FIFE::CacheLayerChangeListener::onInstanceDelete().
|
private |
Definition at line 221 of file layercache.cpp.
References addInstance(), FIFE::Layer::getInstances(), m_cacheImage, m_entries, m_entriesToUpdate, m_freeEntries, m_instance_map, m_layer, m_renderItems, m_tree, and FIFE::SharedPtr< T >::reset().
Referenced by setLayer().
void FIFE::LayerCache::setCacheImage | ( | ImagePtr | image | ) |
Definition at line 710 of file layercache.cpp.
References m_cacheImage.
Referenced by FIFE::Camera::renderStaticLayer().
void FIFE::LayerCache::setLayer | ( | Layer * | layer | ) |
Definition at line 208 of file layercache.cpp.
References FIFE::Layer::addChangeListener(), m_layer, m_layerObserver, FIFE::Layer::removeChangeListener(), and reset().
|
private |
Definition at line 655 of file layercache.cpp.
References FIFE::Camera::getRotation(), FIFE::Layer::getSortingStrategy(), FIFE::InstanceVisual::getStackPosition(), m_camera, m_layer, m_needSorting, m_zMax, m_zMin, FIFE::SORTING_CAMERA, FIFE::SORTING_CAMERA_AND_LOCATION, and FIFE::SORTING_LOCATION.
Referenced by update(), and updateEntries().
void FIFE::LayerCache::update | ( | Camera::Transform | transform, |
RenderList & | renderlist | ||
) |
Definition at line 370 of file layercache.cpp.
References FIFE::_log, FIFE::Layer::areInstancesVisible(), FIFE::RectType< T >::bottom(), collect(), FIFE::RenderItem::dimensions, FIFE::Math< T >::Equal(), FL_DBG, fullUpdate(), FIFE::Camera::getViewPort(), FIFE::Camera::getZoom(), FIFE::RectType< T >::h, FIFE::RenderItem::image, FIFE::LayerCache::Entry::instanceIndex, FIFE::RectType< T >::intersects(), m_camera, m_entries, m_entriesToUpdate, m_layer, m_needSorting, m_renderItems, m_straightZoom, m_zMax, m_zMin, m_zoom, m_zoomed, FIFE::Camera::NoneTransform, FIFE::RectType< T >::right(), FIFE::RenderItem::screenpoint, FIFE::Camera::screenToVirtualScreen(), sortRenderList(), updateEntries(), FIFE::LayerCache::Entry::visible, 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 FIFE::Camera::updateRenderLists().
|
private |
Definition at line 453 of file layercache.cpp.
References FIFE::RenderItem::dimensions, EntryNoneUpdate, EntryPositionUpdate, EntryVisualUpdate, FIFE::LayerCache::Entry::forceUpdate, FIFE::Camera::getViewPort(), FIFE::RenderItem::image, FIFE::RenderItem::instance, FIFE::LayerCache::Entry::instanceIndex, FIFE::RectType< T >::intersects(), m_camera, m_entries, m_entriesToUpdate, m_needSorting, m_renderItems, sortRenderList(), FIFE::LayerCache::Entry::updateInfo, updatePosition(), updateVisual(), and FIFE::LayerCache::Entry::visible.
Referenced by update().
void FIFE::LayerCache::updateInstance | ( | Instance * | instance | ) |
Definition at line 316 of file layercache.cpp.
References FIFE::LayerCache::Entry::entryIndex, EntryNoneUpdate, EntryPositionUpdate, EntryVisualUpdate, FIFE::LayerCache::Entry::forceUpdate, FIFE::Instance::getChangeInfo(), FIFE::ICHANGE_ACTION, FIFE::ICHANGE_LOC, FIFE::ICHANGE_ROTATION, FIFE::ICHANGE_TRANSPARENCY, FIFE::ICHANGE_VISIBLE, FIFE::LayerCache::Entry::instanceIndex, m_entries, m_entriesToUpdate, m_instance_map, and FIFE::LayerCache::Entry::updateInfo.
Referenced by FIFE::CacheLayerChangeListener::onLayerChanged().
|
private |
Definition at line 589 of file layercache.cpp.
References FIFE::RenderItem::bbox, FIFE::QuadNode< DataType, MinimumSize >::data(), FIFE::RenderItem::dimensions, FIFE::LayerCache::Entry::entryIndex, FIFE::QuadTree< DataType, MinimumSize >::find_container(), FIFE::Image::getHeight(), FIFE::Instance::getLocationRef(), FIFE::Location::getMapCoordinates(), FIFE::Image::getWidth(), FIFE::Image::getXShift(), FIFE::Image::getYShift(), FIFE::RectType< T >::h, FIFE::RenderItem::image, FIFE::RenderItem::instance, FIFE::LayerCache::Entry::instanceIndex, m_camera, m_renderItems, m_straightZoom, m_tree, m_zoom, m_zoomed, FIFE::LayerCache::Entry::node, FIFE::OVERDRAW, FIFE::RenderItem::screenpoint, FIFE::Camera::toVirtualScreenCoordinates(), FIFE::Camera::virtualScreenToScreen(), FIFE::RectType< T >::w, FIFE::RectType< T >::x, FIFE::PointType3D< T >::x, FIFE::RectType< T >::y, and FIFE::PointType3D< T >::y.
Referenced by fullUpdate(), and updateEntries().
|
private |
Definition at line 512 of file layercache.cpp.
References FIFE::Instance::callOnActionFrame(), FIFE::RenderItem::currentFrame, FIFE::RenderItem::facingAngle, FIFE::LayerCache::Entry::forceUpdate, FIFE::ImageManager::get(), FIFE::Animation::getActionFrame(), FIFE::Instance::getActionRuntime(), FIFE::Instance::getCurrentAction(), FIFE::Object::getDefaultAction(), FIFE::Animation::getDuration(), FIFE::Animation::getFrameByTimestamp(), FIFE::Animation::getFrameIndex(), FIFE::Image::getHeight(), FIFE::Layer::getLayerTransparency(), FIFE::Instance::getObject(), FIFE::Camera::getRotation(), FIFE::Instance::getRotation(), FIFE::RenderItem::getStaticImageIndexByAngle(), FIFE::InstanceVisual::getTransparency(), FIFE::Instance::getVisual(), FIFE::Image::getWidth(), FIFE::Image::getXShift(), FIFE::Image::getYShift(), FIFE::RenderItem::image, FIFE::RenderItem::instance, FIFE::DynamicSingleton< ImageManager >::instance(), FIFE::LayerCache::Entry::instanceIndex, FIFE::Object::isStatic(), FIFE::InstanceVisual::isVisible(), m_camera, m_layer, m_renderItems, FIFE::RenderItem::transparency, and FIFE::LayerCache::Entry::visible.
Referenced by fullUpdate(), and updateEntries().
|
private |
Definition at line 103 of file layercache.h.
Referenced by getCacheImage(), reset(), and setCacheImage().
|
private |
Definition at line 99 of file layercache.h.
Referenced by LayerCache(), removeInstance(), sortRenderList(), update(), updateEntries(), updatePosition(), and updateVisual().
|
private |
Definition at line 106 of file layercache.h.
Referenced by addInstance(), fullUpdate(), removeInstance(), reset(), update(), updateEntries(), updateInstance(), and ~LayerCache().
|
private |
Definition at line 108 of file layercache.h.
Referenced by addInstance(), removeInstance(), reset(), update(), updateEntries(), and updateInstance().
|
private |
Definition at line 109 of file layercache.h.
Referenced by addInstance(), removeInstance(), and reset().
|
private |
Definition at line 105 of file layercache.h.
Referenced by addInstance(), removeInstance(), reset(), and updateInstance().
|
private |
Definition at line 100 of file layercache.h.
Referenced by LayerCache(), removeInstance(), reset(), setLayer(), sortRenderList(), update(), updateVisual(), and ~LayerCache().
|
private |
Definition at line 101 of file layercache.h.
Referenced by setLayer(), and ~LayerCache().
|
private |
Definition at line 111 of file layercache.h.
Referenced by LayerCache(), sortRenderList(), update(), and updateEntries().
|
private |
Definition at line 107 of file layercache.h.
Referenced by addInstance(), removeInstance(), reset(), update(), updateEntries(), updatePosition(), updateVisual(), and ~LayerCache().
|
private |
Definition at line 117 of file layercache.h.
Referenced by LayerCache(), update(), and updatePosition().
|
private |
Definition at line 102 of file layercache.h.
Referenced by collect(), LayerCache(), reset(), updatePosition(), and ~LayerCache().
|
private |
Definition at line 113 of file layercache.h.
Referenced by LayerCache(), sortRenderList(), and update().
|
private |
Definition at line 112 of file layercache.h.
Referenced by LayerCache(), sortRenderList(), and update().
|
private |
Definition at line 115 of file layercache.h.
Referenced by LayerCache(), update(), and updatePosition().
|
private |
Definition at line 116 of file layercache.h.
Referenced by LayerCache(), update(), and updatePosition().