Jump to content

A WigetSprite doesn't rotate as I think.


photo

Recommended Posts

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 );

 

post-50-0-54652000-1305538453_thumb.jpg

 

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 );

post-50-0-09729500-1305538465_thumb.jpg

 

What's the problem?

Link to comment

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.

Link to comment

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?

Link to comment
×
×
  • Create New...