kw.choi Posted May 16, 2011 Posted May 16, 2011 Hello, I want to rotate a WidgetSprite component. I wrote below code. It works well. { m_testWindow = new WidgetWindow( m_GUI , "test" ); m_testWindow.setSizeable( 1 ); m_testWindow.setWidth( m_width + 30); m_testWindow.setHeight( m_height + 50); m_testWindow.setPosition(m_posX, m_posY); } { m_testSprite = new WidgetSprite(m_GUI); m_testSprite.addLayer(); m_testSprite.setTexture("test.jpg"); m_testSprite.setLayerTransform(0, rotateZ(30.0f)); m_testSprite.setLayerTexCoord(0, vec4(0.0f, 0.0f, 1.0f, 1.0f)); } m_testWindow.addChild(m_testSprite); m_GUI.addChild( m_testWindow, GUI_ALIGN_OVERLAP ); But when I add some code. The WigetSprite doesn't rotate as I think. { m_testWindow = new WidgetWindow( m_GUI , "test" ); m_testWindow.setSizeable( 1 ); m_testWindow.setWidth( m_width + 30); m_testWindow.setHeight( m_height + 50); m_testWindow.setPosition(m_posX, m_posY); } { m_testSprite = new WidgetSprite(m_GUI); m_testSprite.addLayer(); m_testSprite.setTexture("test.jpg"); m_testSprite.setLayerTransform(0, rotateZ(30.0f)); m_testSprite.setLayerTexCoord(0, vec4(0.0f, 0.0f, 1.0f, 1.0f)); m_testSprite.setWidth( m_width ); m_testSprite.setHeight( m_height ); } m_testWindow.addChild(m_testSprite); m_GUI.addChild( m_testWindow, GUI_ALIGN_OVERLAP ); What's the problem?
ulf.schroeter Posted May 16, 2011 Posted May 16, 2011 Maybe m_testSprite.setWidth( m_width ); m_testSprite.setHeight( m_height ); should be set before transform. Have a look into working sprite sample <UNIGINE-SDK>/data/saples/widgets/sripte_00.cpp and use it as template.
kw.choi Posted May 17, 2011 Author Posted May 17, 2011 thank you. But that is not the problem. Not changed.
manguste Posted May 24, 2011 Posted May 24, 2011 In both cases it is rotated by 30 degrees. But when you call setWidth() and setHeight() for the 2nd time, you simply resize the widget together with its rotated layer, i.e. make it smaller by X and Y. What did you want your code to do?
Recommended Posts