3#include "MyGUI_LayerItem.h"
5#include "MyGUI_Enumerator.h"
6#include "MyGUI_FactoryManager.h"
7#include "MyGUI_RenderManager.h"
9#include "MyGUI_LayerNode.h"
28 Base::deserialization(_node, _version);
30 MyGUI::xml::ElementEnumerator propert = _node->getElementEnumerator();
31 while (propert.next(
"Property"))
33 const std::string& key = propert->findAttribute(
"key");
34 const std::string& value = propert->findAttribute(
"value");
35 if (key ==
"TextureSize")
37 if (key ==
"TextureName")
51 if (outOfDate || _update)
53 MyGUI::IRenderTarget* target =
mTexture->getRenderTarget();
54 if (target !=
nullptr)
58 for (VectorILayerNode::iterator iter = mChildItems.begin(); iter != mChildItems.end(); ++iter)
59 (*iter)->renderToTarget(target, _update);
92 MyGUI::RenderManager::getInstance().destroyTexture(
mTexture);
94 LOG(fmt::format(
"[RoR|Dashboard] Destroyed texture '{}' in RTTLayer '{}'",
mTextureName, mName));
100 ROR_ASSERT(!
mTexture &&
"RTTLayer texture already exists; destroy it first before creating a new one");
104 std::string name =
mTextureName.empty() ? MyGUI::utility::toString((
size_t)
this, getClassTypeName()) :
mTextureName;
105 mTexture = MyGUI::RenderManager::getInstance().createTexture(name);
108 LOG(fmt::format(
"[RoR|Dashboard] Created texture '{}' in RTTLayer '{}'",
mTextureName, mName));
121 LOG(fmt::format(
"[RoR|Dashboard] Reusing RTTLayer '{}'", rttLayer->getName()));
125 MyGUI::ILayer* layer = MyGUI::LayerManager::getInstance().createLayerAt(fmt::format(
"RttLayer_{}",
mNextRenderdashRttNum++),
"RTTLayer", 0);
126 rttLayer =
dynamic_cast<RTTLayer*
>(layer);
127 LOG(fmt::format(
"[RoR|Dashboard] Creating new RTTLayer '{}'", rttLayer->getName()));
134 LOG(fmt::format(
"[RoR|Dashboard] Recycling RTTLayer '{}'", rttLayer->getName()));
#define ROR_ASSERT(_EXPR)
void LOG(const char *msg)
Legacy alias - formerly a macro.
RTT texture 'slot' within MyGUI system; we can only create them, not destroy, so we reuse.
void deserialization(MyGUI::xml::ElementPtr _node, MyGUI::Version _version) override
void setTextureSize(const MyGUI::IntSize &_size)
Call before createRttTexture()
MyGUI::ITexture * mTexture
void setTextureName(const std::string &_name)
Call before createRttTexture()
MyGUI::IntSize mTextureSize
void renderToTarget(MyGUI::IRenderTarget *_target, bool _update) override
RTTLayer * CreateOrReuseRttLayer()
void RecycleRttLayer(RTTLayer *obj)
std::vector< RTTLayer * > mReusableRttLayers
MyGUI allows dynamic allocation of RTT layers, but not destruction - we reuse.
int mNextRenderdashRttNum