Create RTT Layer from Code

jsding

24-07-2013 05:47:27

Hi,

I want to render MyGUI UI(HUD) on OGRE Mesh using RTTLayer, But it seems that not possible to create new RTT layer from Code? Any idea?

Thanks for your help.

Germanunkol

07-02-2015 17:45:17

I know this post is old, but I have the same question. I want to add in-game UI-Screens (which works find already, using RTT-Layers), but I don't know how many I will need before starting the game.

How do I create new layers on-the run?

I am looking for a function like
LayerManager::createLayer( ... );

The closest thing I can find is to copy the stuff you do in LayerManager::_load(), but that would mean I have to construct the layer as an XML first, which is kind of ugly.

P.S. There has been a similar question to this before: viewtopic.php?f=17&t=14776&p=82465&hilit=layer+c%C3%BC%C3%BC+create+layer+c+#p82465
But the answer is "Sure, and this is shown in the wiki page" - but I've gone through all wiki pages and found nothing so far.

Germanunkol

08-02-2015 14:43:11

I think I am getting somewhere using the FactoryManager's "createObject" class.

Initializing MyGUI:

#if OGRE_VERSION_MAJOR >= 1 && OGRE_VERSION_MINOR >= 9
Ogre::OverlaySystem* pOverlaySystem = new Ogre::OverlaySystem();
sceneMgr->addRenderQueueListener(pOverlaySystem);
#endif
mPlatform = new MyGUI::OgrePlatform();
mPlatform->initialise(window, sceneMgr);
mGUI = new MyGUI::Gui();
mGUI->initialise( "My_Core.xml" );

std::string layerCategory = MyGUI::LayerManager::getInstance().getCategoryName();
MyGUI::FactoryManager::getInstance().registerFactory<MyGUI::RTTLayer>(layerCategory);

MyGUI::ResourceManager::getInstance().load("HologramLayers.xml");


Then I try to create a layer, a texture, and an object.
The object displays the texture and I link the texture to the layer.
The object stays black, and when I try to save the picture to disk it turns out it's an empty transparent texture.


MyGUI::IObject* mObject = MyGUI::FactoryManager::getInstance().createObject(
"Layer", "RTTLayer" );

MyGUI::RTTLayer* layer = mObject->castType<MyGUI::RTTLayer>(false);

MyGUI::ButtonPtr newButton = mGUI->createWidget<MyGUI::Button>("NormalButton",
0, 0, MAIN_HOLOGRAM_WIDTH, MAIN_HOLOGRAM_HEIGHT,
MyGUI::Align::Default, layer->getName() );
newButton->setCaption("Test");

layer->createChildItemNode()->attachLayerItem( newButton );

Ogre::TextureManager::getSingleton().createManual(
"AwesomeUITexture",
Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,
Ogre::TEX_TYPE_2D, // type
255, 255, 1, // width & height & depth
0, // number of mipmaps
Ogre::PF_BYTE_RGBA, // pixel format
Ogre::TU_RENDERTARGET); // usage;

Ogre::MaterialPtr mat = Ogre::MaterialManager::getSingleton().getByName("UI");

mat->getTechnique(0)->getPass(0)->getTextureUnitState(0)->setTextureName( "AwesomeUITexture" );

layer->setTextureSize( MyGUI::IntSize( 255, 255 ) );
layer->setTextureName( "AwesomeUITexture" );

// Create ManualObject and apply the material/texture to it:
Ogre::ManualObject* mMesh = mSceneMgr->createManualObject("UiManual");
mMesh->begin("UI", Ogre::RenderOperation::OT_TRIANGLE_LIST);

float z = 0;
float texZ = 0;
float width = 0.5;
mMesh->position(-width*0.5, -width*0.5, z);
mMesh->textureCoord( 0.0, 0.0, texZ );
mMesh->position( width*0.5, -width*0.5, z);
mMesh->textureCoord( 1.0, 0.0, texZ );
mMesh->position( width*0.5, width*0.5, z);
mMesh->textureCoord( 1.0, 1.0, texZ );
mMesh->position(-width*0.5, width*0.5, z);
mMesh->textureCoord( 0.0, 1.0, texZ );

mMesh->index(0); mMesh->index(1); mMesh->index(2);
mMesh->index(0); mMesh->index(2); mMesh->index(3);

mMesh->index(2); mMesh->index(1); mMesh->index(0);
mMesh->index(3); mMesh->index(2); mMesh->index(0);

mMesh->end();
mNode->attachObject(mMesh);


When I exchange the texture with a .png file it shows that on the mesh just like expected.

Edit: Here's my Log. It's interesting how, when destroying the layermanager, there are ONLY the layers which I created in an xml file. The one I manually create doesn't even show up.
I tried printing the return value of MyGUI::LayerManager::getInstance().getLayerCount() and it stays the same when I create a new layer using the above method. So this isn't working...?

15:45:48 | Platform | Info | * Initialise: RenderManager | /home/micha/Projects/Hiwi/Source/MyGUI/Platforms/Ogre/OgrePlatform/src/MyGUI_OgreRenderManager.cpp | 43
15:45:48 | Platform | Info | RenderManager successfully initialized | /home/micha/Projects/Hiwi/Source/MyGUI/Platforms/Ogre/OgrePlatform/src/MyGUI_OgreRenderManager.cpp | 71
15:45:48 | Platform | Info | * Initialise: DataManager | /home/micha/Projects/Hiwi/Source/MyGUI/Platforms/Ogre/OgrePlatform/src/MyGUI_OgreDataManager.cpp | 27
15:45:49 | Platform | Info | DataManager successfully initialized | /home/micha/Projects/Hiwi/Source/MyGUI/Platforms/Ogre/OgrePlatform/src/MyGUI_OgreDataManager.cpp | 35
15:45:49 | Core | Info | * Initialise: Gui | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_Gui.cpp | 61
15:45:49 | Core | Info | * MyGUI version 3.2.2 | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_Gui.cpp | 66
15:45:49 | Core | Info | * Initialise: ResourceManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceManager.cpp | 32
15:45:49 | Core | Info | ResourceManager successfully initialized | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceManager.cpp | 40
15:45:49 | Core | Info | * Initialise: LayerManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_LayerManager.cpp | 33
15:45:49 | Core | Info | LayerManager successfully initialized | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_LayerManager.cpp | 41
15:45:49 | Core | Info | * Initialise: WidgetManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_WidgetManager.cpp | 53
15:45:49 | Core | Info | WidgetManager successfully initialized | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_WidgetManager.cpp | 84
15:45:49 | Core | Info | * Initialise: InputManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_InputManager.cpp | 46
15:45:49 | Core | Info | InputManager successfully initialized | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_InputManager.cpp | 66
15:45:49 | Core | Info | * Initialise: SubWidgetManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_SubWidgetManager.cpp | 36
15:45:49 | Core | Info | SubWidgetManager successfully initialized | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_SubWidgetManager.cpp | 56
15:45:49 | Core | Info | * Initialise: SkinManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_SkinManager.cpp | 36
15:45:49 | Core | Info | SkinManager successfully initialized | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_SkinManager.cpp | 46
15:45:49 | Core | Info | * Initialise: FontManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_FontManager.cpp | 32
15:45:49 | Core | Info | FontManager successfully initialized | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_FontManager.cpp | 42
15:45:49 | Core | Info | * Initialise: ControllerManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ControllerManager.cpp | 33
15:45:49 | Core | Info | ControllerManager successfully initialized | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ControllerManager.cpp | 42
15:45:49 | Core | Info | * Initialise: PointerManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_PointerManager.cpp | 43
15:45:49 | Core | Info | PointerManager successfully initialized | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_PointerManager.cpp | 62
15:45:49 | Core | Info | * Initialise: ClipboardManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ClipboardManager.cpp | 32
15:45:49 | Core | Info | ClipboardManager successfully initialized | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ClipboardManager.cpp | 39
15:45:49 | Core | Info | * Initialise: LayoutManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_LayoutManager.cpp | 28
15:45:49 | Core | Info | LayoutManager successfully initialized | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_LayoutManager.cpp | 35
15:45:49 | Core | Info | * Initialise: DynLibManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_DynLibManager.cpp | 26
15:45:49 | Core | Info | DynLibManager successfully initialized | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_DynLibManager.cpp | 30
15:45:49 | Core | Info | * Initialise: PluginManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_PluginManager.cpp | 30
15:45:49 | Core | Info | PluginManager successfully initialized | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_PluginManager.cpp | 34
15:45:49 | Core | Info | * Initialise: LanguageManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_LanguageManager.cpp | 30
15:45:49 | Core | Info | LanguageManager successfully initialized | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_LanguageManager.cpp | 34
15:45:49 | Core | Info | * Initialise: FactoryManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_FactoryManager.cpp | 25
15:45:49 | Core | Info | FactoryManager successfully initialized | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_FactoryManager.cpp | 27
15:45:49 | Core | Info | * Initialise: ToolTipManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ToolTipManager.cpp | 33
15:45:49 | Core | Info | ToolTipManager successfully initialized | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ToolTipManager.cpp | 45
15:45:49 | Core | Info | Load ini file 'MyGUI_GeneratedFonts.xml' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceManager.cpp | 114
15:45:49 | Core | Info | Load ini file 'MyGUI_Fonts_Custom.xml' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceManager.cpp | 114
15:45:49 | Core | Info | ResourceTrueTypeFont: Font 'DejaVuSansFont_15' using texture size 128 x 256. | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceTrueTypeFont.cpp | 769
15:45:49 | Core | Info | ResourceTrueTypeFont: Font 'DejaVuSansFont_15' using real height 19 pixels. | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceTrueTypeFont.cpp | 770
15:45:49 | Core | Info | Load ini file 'MyGUI_CommonSkins.xml' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceManager.cpp | 114
15:45:49 | Core | Info | Load ini file 'MyGUI_BlackOrangeTheme.xml' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceManager.cpp | 114
15:45:49 | Core | Info | Load ini file 'MyGUI_BlackOrangeImages.xml' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceManager.cpp | 114
15:45:49 | Core | Info | Load ini file 'MyGUI_BlackOrangeSkins.xml' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceManager.cpp | 114
15:45:49 | Core | Info | Load ini file 'MyGUI_BlackOrangeTemplates.xml' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceManager.cpp | 114
15:45:49 | Core | Info | Load ini file 'MyGUI_PointerImages.xml' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceManager.cpp | 114
15:45:49 | Core | Info | Load ini file 'MyGUI_Pointers.xml' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceManager.cpp | 114
15:45:49 | Core | Info | Load ini file 'MyGUI_Settings.xml' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceManager.cpp | 114
15:45:49 | Core | Info | Load ini file 'HologramUI.xml' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceManager.cpp | 114
15:45:49 | Core | Info | Load ini file 'HologramTemplate.xml' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceManager.cpp | 114
15:45:49 | Core | Info | Load ini file 'HologramFont.xml' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceManager.cpp | 114
15:45:49 | Core | Info | ResourceTrueTypeFont: Font 'DejaVu15' using texture size 128 x 256. | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceTrueTypeFont.cpp | 769
15:45:49 | Core | Info | ResourceTrueTypeFont: Font 'DejaVu15' using real height 24 pixels. | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceTrueTypeFont.cpp | 770
15:45:49 | Core | Info | ResourceTrueTypeFont: Font 'DejaVu18' using texture size 256 x 256. | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceTrueTypeFont.cpp | 769
15:45:49 | Core | Info | ResourceTrueTypeFont: Font 'DejaVu18' using real height 29 pixels. | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceTrueTypeFont.cpp | 770
15:45:49 | Core | Info | Load ini file 'MyGUI_DarkSkin.xml' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceManager.cpp | 114
15:45:49 | Core | Warning | duplicate resource name 'WhiteSkin' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceManager.cpp | 92
15:45:49 | Core | Info | Load ini file 'MyGUI_DarkTemplate.xml' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceManager.cpp | 114
15:45:49 | Core | Info | Gui successfully initialized | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_Gui.cpp | 111
15:45:51 | Core | Info | * Shutdown: Gui | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_Gui.cpp | 125
15:45:51 | Core | Info | * Shutdown: PointerManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_PointerManager.cpp | 69
15:45:51 | Core | Info | PointerManager successfully shutdown | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_PointerManager.cpp | 86
15:45:51 | Core | Info | * Shutdown: InputManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_InputManager.cpp | 73
15:45:51 | Core | Info | InputManager successfully shutdown | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_InputManager.cpp | 78
15:45:51 | Core | Info | * Shutdown: SkinManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_SkinManager.cpp | 53
15:45:51 | Core | Info | SkinManager successfully shutdown | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_SkinManager.cpp | 60
15:45:51 | Core | Info | * Shutdown: SubWidgetManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_SubWidgetManager.cpp | 63
15:45:51 | Core | Info | SubWidgetManager successfully shutdown | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_SubWidgetManager.cpp | 83
15:45:51 | Core | Info | * Shutdown: LayerManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_LayerManager.cpp | 48
15:45:51 | Core | Info | destroy layer 'Pointer' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_LayerManager.cpp | 191
15:45:51 | Core | Info | destroy layer 'ScreenLayer1' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_LayerManager.cpp | 191
15:45:51 | Core | Info | destroy layer 'LoadingScreen' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_LayerManager.cpp | 191
15:45:51 | Core | Info | destroy layer 'ScreenLayerLeft' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_LayerManager.cpp | 191
15:45:51 | Core | Info | destroy layer 'ScreenLayerRight' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_LayerManager.cpp | 191
15:45:51 | Core | Info | destroy layer 'Popup' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_LayerManager.cpp | 191
15:45:51 | Core | Info | destroy layer 'ScreenLayerPointer' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_LayerManager.cpp | 191
15:45:51 | Core | Info | destroy layer 'ScreenLayerPointerRight' | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_LayerManager.cpp | 191
15:45:51 | Core | Info | LayerManager successfully shutdown | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_LayerManager.cpp | 59
15:45:51 | Core | Info | * Shutdown: FontManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_FontManager.cpp | 49
15:45:51 | Core | Info | FontManager successfully shutdown | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_FontManager.cpp | 57
15:45:51 | Core | Info | * Shutdown: ControllerManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ControllerManager.cpp | 49
15:45:51 | Core | Info | ControllerManager successfully shutdown | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ControllerManager.cpp | 59
15:45:51 | Core | Info | * Shutdown: ClipboardManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ClipboardManager.cpp | 46
15:45:51 | Core | Info | ClipboardManager successfully shutdown | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ClipboardManager.cpp | 54
15:45:51 | Core | Info | * Shutdown: LayoutManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_LayoutManager.cpp | 42
15:45:51 | Core | Info | LayoutManager successfully shutdown | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_LayoutManager.cpp | 49
15:45:51 | Core | Info | * Shutdown: PluginManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_PluginManager.cpp | 41
15:45:51 | Core | Info | PluginManager successfully shutdown | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_PluginManager.cpp | 46
15:45:51 | Core | Info | * Shutdown: DynLibManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_DynLibManager.cpp | 37
15:45:51 | Core | Info | DynLibManager successfully shutdown | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_DynLibManager.cpp | 44
15:45:51 | Core | Info | * Shutdown: LanguageManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_LanguageManager.cpp | 41
15:45:51 | Core | Info | LanguageManager successfully shutdown | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_LanguageManager.cpp | 45
15:45:51 | Core | Info | * Shutdown: ResourceManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceManager.cpp | 47
15:45:51 | Core | Info | ResourceManager successfully shutdown | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ResourceManager.cpp | 57
15:45:51 | Core | Info | * Shutdown: FactoryManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_FactoryManager.cpp | 34
15:45:51 | Core | Info | FactoryManager successfully shutdown | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_FactoryManager.cpp | 36
15:45:51 | Core | Info | * Shutdown: ToolTipManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ToolTipManager.cpp | 52
15:45:51 | Core | Info | ToolTipManager successfully shutdown | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_ToolTipManager.cpp | 57
15:45:51 | Core | Info | * Shutdown: WidgetManager | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_WidgetManager.cpp | 91
15:45:51 | Core | Info | WidgetManager successfully shutdown | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_WidgetManager.cpp | 100
15:45:51 | Core | Info | Gui successfully shutdown | /home/micha/Projects/Hiwi/Source/MyGUI/MyGUIEngine/src/MyGUI_Gui.cpp | 171
15:45:51 | Platform | Info | * Shutdown: RenderManager | /home/micha/Projects/Hiwi/Source/MyGUI/Platforms/Ogre/OgrePlatform/src/MyGUI_OgreRenderManager.cpp | 78
15:45:51 | Platform | Info | RenderManager successfully shutdown | /home/micha/Projects/Hiwi/Source/MyGUI/Platforms/Ogre/OgrePlatform/src/MyGUI_OgreRenderManager.cpp | 86
15:45:51 | Platform | Info | * Shutdown: DataManager | /home/micha/Projects/Hiwi/Source/MyGUI/Platforms/Ogre/OgrePlatform/src/MyGUI_OgreDataManager.cpp | 42
15:45:51 | Platform | Info | DataManager successfully shutdown | /home/micha/Projects/Hiwi/Source/MyGUI/Platforms/Ogre/OgrePlatform/src/MyGUI_OgreDataManager.cpp | 44

Altren

08-02-2015 15:21:08

Unfortunately MyGUI doesn't have API for proper runtime resources creation.
Currently the only way how you acn add such layer in runtime is load xml, either from file or from xml created in code.

There are no issues or architecture limits for adding such functionality, it just never was done. I'll try to implement this now.

Altren

08-02-2015 15:51:00

Done. Try to update to latest source from github and use LayerManager::createLayerAt

Germanunkol

09-02-2015 17:50:56

It works!

Thank you so much.
It took me a while to get all the function calls in the right order. Also, I did not know MyGUI's RTTLayer actually created the render-texture itself, so I kept trying to create the texture myself using Ogre's TextureManager and then assign that - which wouldn't work, of course.

Since it took me so long to get it all together, I thought I'd post the working code for anyone else to use:


// mNode is going to be the node to attach a 3D mesh to, which will display the
// new layer.
mNode = node->createChildSceneNode();

// Create a new RTT Layer
MyGUI::RTTLayer* layer = (MyGUI::RTTLayer*)MyGUI::LayerManager::getInstance().createLayerAt(
"MyNewLayer", "RTTLayer", 0 );

// BOTH setTextureName AND setTextureSize MUST be called:
layer->setTextureName( "MyNewTexture" );
// This second call will actually create the texture. If you have not called setTextureName
// before then this will create a (seemingly random) name for the texture -> then you won't
// be able to use it!
layer->setTextureSize( MyGUI::IntSize( 255,255 ) );

// Create a test button on the new layer.
// Note: Beforehand, you must initialize mGUI as usual, loading a Theme/Scheme with
// button Definitions etc. I loaded one which defines a button type called "NormalButton".
// Change that to whatever widgets you would create, just like you would on a normal Layer.
MyGUI::ButtonPtr newButton = mGUI->createWidget<MyGUI::Button>("NormalButton",
0, 0, 150, 50,
MyGUI::Align::Default, "MyNewLayer" );
newButton->setCaption("Test");

// Assign the texture to the "UI" material. In a real-world scenary, "UI" would be
// created at runtime - for example by copying another material - for every panel
// which is created:
Ogre::MaterialPtr mat = Ogre::MaterialManager::getSingleton().getByName("UI");
mat->getTechnique(0)->getPass(0)->getTextureUnitState(0)->setTextureName( "MyNewTexture" );

// Create a 3D object to display the stuff on. It's a simple two-sided square, but could
// be any other object/mesh as well.
Ogre::ManualObject* mMesh = mSceneMgr->createManualObject("UiManual");
// The object uses the "UI" Material:
mMesh->begin("UI", Ogre::RenderOperation::OT_TRIANGLE_LIST);

float z = 0;
float texZ = 0;
float width = 0.5;
mMesh->position(-width*0.5, width*0.5, z);
mMesh->textureCoord( 0.0, 0.0, texZ );
mMesh->position( width*0.5, width*0.5, z);
mMesh->textureCoord( 1.0, 0.0, texZ );
mMesh->position( width*0.5, -width*0.5, z);
mMesh->textureCoord( 1.0, 1.0, texZ );
mMesh->position(-width*0.5, -width*0.5, z);
mMesh->textureCoord( 0.0, 1.0, texZ );

mMesh->index(0); mMesh->index(1); mMesh->index(2);
mMesh->index(0); mMesh->index(2); mMesh->index(3);

mMesh->index(2); mMesh->index(1); mMesh->index(0);
mMesh->index(3); mMesh->index(2); mMesh->index(0);

mMesh->end();

// Add the mesh to the scene:
mNode->attachObject(mMesh);


Edit: i'm thinking of putting this into the Ogre Wiki as well. Seems like many people have been asking for this, or similar things.