Rotation is now set in the tilebank wrapper and applied when replacing a tile.

--HG--
branch : gsoc2014-dfighter
This commit is contained in:
dfighter1985 2014-08-05 13:42:56 +02:00
parent 99bcb6cf79
commit f25d152f4f
7 changed files with 28 additions and 5 deletions

View file

@ -198,6 +198,7 @@ TileBank::TileBank()
{ {
m_pvt = new TileBankPvt(); m_pvt = new TileBankPvt();
resetError(); resetError();
m_rotation = 0;
} }
TileBank::~TileBank() TileBank::~TileBank()
@ -378,6 +379,16 @@ bool TileBank::setTile( int tileset, int tile, const QString &name, const QVaria
NL3D::CTileBorder border; NL3D::CTileBorder border;
m_pvt->buildBorder( pm, border ); m_pvt->buildBorder( pm, border );
if( ( type == TileConstants::TileTransition ) && ( channel == TileConstants::TileAlpha ) )
{
int rotBits = m_rotation;
while( rotBits > 0 )
{
border.rotate();
rotBits--;
}
}
QString msg; QString msg;
NL3D::CTileSet::TError error = m_pvt->checkTile( set, tile, type, border, channelToTBitmap( channel ), msg ); NL3D::CTileSet::TError error = m_pvt->checkTile( set, tile, type, border, channelToTBitmap( channel ), msg );
@ -387,7 +398,7 @@ bool TileBank::setTile( int tileset, int tile, const QString &name, const QVaria
if( error == NL3D::CTileSet::addFirstA128128 ) if( error == NL3D::CTileSet::addFirstA128128 )
set->setBorder( channelToTBitmap( channel ), border ); set->setBorder( channelToTBitmap( channel ), border );
m_pvt->setTile( set, tile, 0 /* rotation */, name, channelToTBitmap( channel ), type, border ); m_pvt->setTile( set, tile, m_rotation, name, channelToTBitmap( channel ), type, border );
return true; return true;
} }
@ -618,6 +629,11 @@ QString TileBank::getTexturePath() const
return m_pvt->m_bank.getAbsPath().c_str(); return m_pvt->m_bank.getAbsPath().c_str();
} }
void TileBank::setRotation( int rotation )
{
m_rotation = rotation;
}
void TileBank::serial( NLMISC::IStream &f ) void TileBank::serial( NLMISC::IStream &f )
{ {
m_pvt->m_bank.serial( f ); m_pvt->m_bank.serial( f );

View file

@ -74,6 +74,8 @@ public:
void setTexturePath( const QString &path ); void setTexturePath( const QString &path );
QString getTexturePath() const; QString getTexturePath() const;
void setRotation( int rotation );
void serial( NLMISC::IStream &f ); void serial( NLMISC::IStream &f );
bool hasError() const{ return m_hasError; } bool hasError() const{ return m_hasError; }
@ -93,6 +95,7 @@ private:
TileBankPvt *m_pvt; TileBankPvt *m_pvt;
QString m_lastError; QString m_lastError;
bool m_hasError; bool m_hasError;
int m_rotation;
}; };
#endif #endif

View file

@ -335,7 +335,7 @@ void TileEditorMainWindow::onZoomFactor(int level)
void TileEditorMainWindow::onRotate( int id ) void TileEditorMainWindow::onRotate( int id )
{ {
TileItemNode::setAlphaRot( id * 90 ); m_tileModel->setAlphaRot( id );
} }
void TileEditorMainWindow::onActionAddTile(bool triggered) void TileEditorMainWindow::onActionAddTile(bool triggered)

View file

@ -298,7 +298,6 @@ private:
}; };
TileConstants::TTileChannel TileItemNode::s_displayChannel = TileConstants::TileDiffuse; TileConstants::TTileChannel TileItemNode::s_displayChannel = TileConstants::TileDiffuse;
int TileItemNode::s_alphaRot = 0;
TileItemNode::TileItemNode( TileConstants::TNodeTileType type, int tileId, Node *parent ) TileItemNode::TileItemNode( TileConstants::TNodeTileType type, int tileId, Node *parent )
{ {

View file

@ -117,7 +117,6 @@ public:
static void setDisplayChannel( TileConstants::TTileChannel channel ){ s_displayChannel = channel; } static void setDisplayChannel( TileConstants::TTileChannel channel ){ s_displayChannel = channel; }
static TileConstants::TTileChannel displayChannel(){ return s_displayChannel; } static TileConstants::TTileChannel displayChannel(){ return s_displayChannel; }
static void setAlphaRot( int rot ){ s_alphaRot = rot; }
QVariant pixmap( TileConstants::TTileChannel channel ) const; QVariant pixmap( TileConstants::TTileChannel channel ) const;
@ -126,7 +125,6 @@ private:
QMap<TileConstants::TTileChannel, TileWidget*> m_tileWidget; QMap<TileConstants::TTileChannel, TileWidget*> m_tileWidget;
static TileConstants::TTileChannel s_displayChannel; static TileConstants::TTileChannel s_displayChannel;
static int s_alphaRot;
int m_id; int m_id;

View file

@ -472,6 +472,11 @@ QString TileModel::getTexturePath() const
return m_tileBank->getTexturePath(); return m_tileBank->getTexturePath();
} }
void TileModel::setAlphaRot( int rotation )
{
m_tileBank->setRotation( rotation );
}
QString TileModel::getLastError() const{ QString TileModel::getLastError() const{
return m_tileBank->getLastError(); return m_tileBank->getLastError();
} }

View file

@ -117,6 +117,8 @@ public:
void setTexturePath( const QString &path ); void setTexturePath( const QString &path );
QString getTexturePath() const; QString getTexturePath() const;
void setAlphaRot( int rotation );
void serial( NLMISC::IStream &f ); void serial( NLMISC::IStream &f );
QString getLastError() const; QString getLastError() const;