i've a problem with rendering a rotated window. First the CEGUI log essential:
Code: Select all
16/03/2013 11:40:31 (Std) ********************************************************************************
16/03/2013 11:40:31 (Std) * -------- START OF ESSENTIAL SECTION TO BE POSTED ON THE FORUM -------- *
16/03/2013 11:40:31 (Std) ********************************************************************************
16/03/2013 11:40:31 (Std) ---- Version 0.7.9 (Build: Jan 27 2013 Debug Microsoft Windows MSVC++ 10.0 32 bit) ----
16/03/2013 11:40:31 (Std) ---- Renderer module is: CEGUI::IrrlichtRenderer - Official Irrlicht based 2nd generation renderer module. RenderTarget support is enabled. ----
16/03/2013 11:40:31 (Std) ---- XML Parser module is: CEGUI::ExpatParser - Official expat based parser module for CEGUI ----
16/03/2013 11:40:31 (Std) ---- Image Codec module is: IrrlichtImageCodec - Integrated ImageCodec using the Irrlicht engine. ----
16/03/2013 11:40:31 (Std) ---- Scripting module is: None ----
16/03/2013 11:40:31 (Std) ********************************************************************************
16/03/2013 11:40:31 (Std) * -------- END OF ESSENTIAL SECTION TO BE POSTED ON THE FORUM -------- *
16/03/2013 11:40:31 (Std) ********************************************************************************
I've build CEGUI against Irrlicht 1.8 - so far no problems at initialisation and rendering, but rotation doesn't seem to work. So here some snippets:
CEGUI init:
Code: Select all
try
{
/* Bootstrap CEGUI and save pointers */
LogWrite(MT_INFO, "Bootstrapping CEGUI...");
m_GUIRenderer = &CEGUI::IrrlichtRenderer::bootstrapSystem(*m_RenderDevice);
m_GUISystem = CEGUI::System::getSingletonPtr();
/* Set CEGUI logging level (if activated) */
CEGUI::Logger::getSingleton().setLoggingLevel(CEGUI::LoggingLevel::Insane);
/* Set resource provider and paths */
CEGUI::DefaultResourceProvider* res = static_cast<CEGUI::DefaultResourceProvider*>(m_GUISystem->getResourceProvider());
res->setResourceGroupDirectory("gui", "data/gui/");
CEGUI::Imageset::setDefaultResourceGroup("gui");
CEGUI::Font::setDefaultResourceGroup("gui");
CEGUI::Scheme::setDefaultResourceGroup("gui");
CEGUI::WidgetLookManager::setDefaultResourceGroup("gui");
CEGUI::WindowManager::setDefaultResourceGroup("gui");
CEGUI::ScriptModule::setDefaultResourceGroup("gui");
}
Window Layout
Code: Select all
<GUILayout>
<Window Name="DefaultWindow" Type="DefaultWindow">
<Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{1,0},{1,0}}" />
<Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
<Window Name="DefaultWindow/FrameWindow" Type="WindowsLook/FrameWindow">
<Property Name="UnifiedAreaRect" Value="{{0,230},{0,129},{0,972},{0,649}}" />
<Property Name="Rotation" Value="w:0.991445 x:-0.130526 y:0 z:0" />
<Window Name="DefaultWindow/FrameWindow/Button" Type="WindowsLook/Button">
<Property Name="UnifiedAreaRect" Value="{{0,177},{0,87},{0,563},{0,137}}" />
<Property Name="Text" Value="New Game" />
<Property Name="AutoRenderingSurface" Value="True" />
</Window>
<Window Name="DefaultWindow/FrameWindow/Button2" Type="WindowsLook/Button">
<Property Name="UnifiedAreaRect" Value="{{0,181},{0,198},{0,505},{0,248}}" />
<Property Name="Text" Value="Quit" />
</Window>
</Window>
</Window>
</GUILayout>
Initialisiation of layout:
Code: Select all
try
{
LogWrite(MT_INFO, "Loading menu GUI template...");
m_GUIScheme = &CEGUI::SchemeManager::getSingletonPtr()->create(MENU_SCHEME);
LogWrite(MT_INFO, "Loading menu window layout...");
m_MenuLayout = CEGUI::WindowManager::getSingletonPtr()->loadWindowLayout("menu.layout");
m_GUISystem->setGUISheet(m_MenuLayout);
CEGUI::Window* button1 = CEGUI::WindowManager::getSingletonPtr()->getWindow("DefaultWindow/FrameWindow");
}
Updating (coded for some test):
Code: Select all
void CMenuState::Update(void)
{
CEGUI::Window* button1 = CEGUI::WindowManager::getSingletonPtr()->getWindow("DefaultWindow/FrameWindow");
CEGUI::Vector3 currot = button1->getRotation();
currot.d_x += 0.01;
if (currot.d_x == 0.99)
{
currot.d_x = 0;
}
button1->setRotation(currot);
}
Rendering:
Code: Select all
void CMenuState::Draw()
{
m_VideoDriver->beginScene(true, true, SColor(255,100,101,140));
m_GUISystem->renderGUI();
m_VideoDriver->endScene();
}
OnEvent:
Code: Select all
bool CMenuState::OnEvent(const SEvent& GameEvent)
{
/* Check if it is a mouse event */
if (GameEvent.EventType == EET_MOUSE_INPUT_EVENT)
{
switch (GameEvent.MouseInput.Event)
{
/* Left mouse clicked? */
case EMIE_LMOUSE_LEFT_UP:
{
/* Yes: switch to menu */
CGameManager::Quit();
}
break;
}
}
return m_GUIRenderer->injectEvent(GameEvent);
}
The scene renders correctly - despite of the rotation. Am i missing something?
Greetings
radical
EDIT: Rotation is expressed in degrees - if somebody else is as dumb as me