Go to the documentation of this file.
27 #define DRAW_SEPARATELY 0
30 #define DRAW_CREATURE_INFORMATION_AFTER_LIGHT 0
54 void updateGeometry(
const Size& visibleDimension,
const Size& optimizedSize);
55 void updateVisibleTilesCache();
56 void requestVisibleTilesCacheUpdate() { m_mustUpdateVisibleTilesCache =
true; }
71 void setMultifloor(
bool enable) { m_multifloor = enable; requestVisibleTilesCacheUpdate(); }
116 void move(
int x,
int y);
134 int top, right, bottom, left;
142 int calcFirstVisibleFloor();
143 int calcLastVisibleFloor();
145 void initViewPortDirection();
147 #if DRAW_SEPARATELY == 1
148 void drawSeparately(
const int floor,
const ViewPort& viewPort,
LightView* lightView);
151 void drawCreatureInformation(
const Rect& rect,
Point drawOffset,
const float horizontalStretchFactor,
const float verticalStretchFactor);
152 void drawText(
const Rect& rect,
Point drawOffset,
const float horizontalStretchFactor,
const float verticalStretchFactor);
154 Rect calcFramebufferSource(
const Size& destSize);
158 return Point((m_virtualCenterOffset.
x + (position.
x - relativePosition.
x) - (relativePosition.
z - position.
z)) * m_tileSize,
159 (m_virtualCenterOffset.
y + (position.
y - relativePosition.
y) - (relativePosition.
z - position.
z)) * m_tileSize);
162 bool isInRange(
const Position& pos);
163 bool canRenderTile(
const TilePtr& tile,
const ViewPort& viewPort,
LightView* lightView);
165 int m_lockedFirstVisibleFloor;
166 int m_cachedFirstVisibleFloor;
167 int m_cachedLastVisibleFloor;
170 Rect m_rectDimension;
172 Size m_drawDimension;
173 Size m_visibleDimension;
174 Size m_optimizedSize;
176 Point m_virtualCenterOffset;
177 Point m_visibleCenterOffset;
182 std::array<ViewPort, Otc::InvalidDirection + 1> m_viewPortDirection;
198 std::vector<CreaturePtr> m_visibleCreatures;
200 std::array<std::vector<TilePtr>,
Otc::MAX_Z + 1> m_cachedVisibleTiles;
207 FrameCache m_frameCache;
212 float m_minimumAmbientLight;
219 Timer m_minTimeRender;
222 uint_fast8_t m_floorMin, m_floorMax;
void setDrawHealthBars(bool enable)
void lockFirstVisibleFloor(int firstVisibleFloor)
int getLockedFirstVisibleFloor()
void setDrawManaBar(bool enable)
void setMinimumAmbientLight(float intensity)
int getCachedFirstVisibleFloor()
PainterShaderProgramPtr getShader()
void setMultifloor(bool enable)
bool isAutoViewModeEnabled()
int getCachedLastVisibleFloor()
Position getPosition(const Point &point, const Size &mapSize)
bool isFollowingCreature()
void setDrawLights(bool enable)
void setShader(const PainterShaderProgramPtr &shader, float fadein, float fadeout)
void setAddLightMethod(bool add)
void setVisibleDimension(const Size &visibleDimension)
void setAutoViewMode(bool enable)
void unlockFirstVisibleFloor()
void setBlendEquation(Painter::BlendEquation blendEquation)
void setDrawTexts(bool enable)
Position getCameraPosition()
void requestDrawing(const Position &pos, const Otc::RequestDrawFlags reDrawFlags, const bool force=false, const bool isLocalPlayer=false)
float getMinimumAmbientLight()
void setDrawNames(bool enable)
void setCameraPosition(const Position &pos)
void onTileUpdate(const Position &pos, const ThingPtr &thing, const Otc::Operation operation)
CreaturePtr getFollowingCreature()
bool isDrawingHealthBars()
Point getVisibleCenterOffset()
void draw(const Rect &rect)
void followCreature(const CreaturePtr &creature)
void optimizeForSize(const Size &visibleSize)
LuaObject, all script-able classes have it as base.
std::vector< CreaturePtr > getVisibleCreatures()
void setViewMode(ViewMode viewMode)
Size getVisibleDimension()
void onMapCenterChange(const Position &pos)