Irrlicht only: Added preliminary support for reading materials.xml files
(though the information is not used atm). git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/trunk/supertuxkart@3203 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
parent
9314f6fafb
commit
62bc9990ca
@ -35,7 +35,9 @@ Nitro::Nitro(Kart* kart)
|
|||||||
dirtyBSphere();
|
dirtyBSphere();
|
||||||
|
|
||||||
m_nitro_fire = new ssgSimpleState ();
|
m_nitro_fire = new ssgSimpleState ();
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
m_nitro_fire->setTexture(material_manager->getMaterial("nitro-particle.rgb")->getState()->getTexture());
|
m_nitro_fire->setTexture(material_manager->getMaterial("nitro-particle.rgb")->getState()->getTexture());
|
||||||
|
#endif
|
||||||
m_nitro_fire -> setTranslucent () ;
|
m_nitro_fire -> setTranslucent () ;
|
||||||
m_nitro_fire -> enable ( GL_TEXTURE_2D ) ;
|
m_nitro_fire -> enable ( GL_TEXTURE_2D ) ;
|
||||||
m_nitro_fire -> setShadeModel ( GL_SMOOTH ) ;
|
m_nitro_fire -> setShadeModel ( GL_SMOOTH ) ;
|
||||||
|
@ -48,13 +48,14 @@ ssgTransform* createShadow( const std::string& name,
|
|||||||
|
|
||||||
result -> setName ( "Shadow" ) ;
|
result -> setName ( "Shadow" ) ;
|
||||||
|
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
ssgVtxTable *gs = new ssgVtxTable ( GL_TRIANGLE_STRIP, va, na, ta, ca ) ;
|
ssgVtxTable *gs = new ssgVtxTable ( GL_TRIANGLE_STRIP, va, na, ta, ca ) ;
|
||||||
// FIXME LEAK: va, na, ta, and ca are most likely leaked, since plib
|
// FIXME LEAK: va, na, ta, and ca are most likely leaked, since plib
|
||||||
// will mark them as 'not owned' and therefore not free them!
|
// will mark them as 'not owned' and therefore not free them!
|
||||||
gs -> clrTraversalMaskBits ( SSGTRAV_ISECT|SSGTRAV_HOT ) ;
|
gs -> clrTraversalMaskBits ( SSGTRAV_ISECT|SSGTRAV_HOT ) ;
|
||||||
gs -> setState ( material_manager->getMaterial ( name.c_str() ) -> getState () ) ;
|
gs -> setState ( material_manager->getMaterial ( name.c_str() ) -> getState () ) ;
|
||||||
|
|
||||||
result -> addKid ( gs ) ;
|
result -> addKid ( gs ) ;
|
||||||
|
#endif
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,9 @@ Smoke::Smoke(Kart* kart)
|
|||||||
dirtyBSphere();
|
dirtyBSphere();
|
||||||
|
|
||||||
m_smokepuff = new ssgSimpleState ();
|
m_smokepuff = new ssgSimpleState ();
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
m_smokepuff->setTexture(material_manager->getMaterial("smoke.rgb")->getState()->getTexture());
|
m_smokepuff->setTexture(material_manager->getMaterial("smoke.rgb")->getState()->getTexture());
|
||||||
|
#endif
|
||||||
m_smokepuff -> setTranslucent () ;
|
m_smokepuff -> setTranslucent () ;
|
||||||
m_smokepuff -> enable ( GL_TEXTURE_2D ) ;
|
m_smokepuff -> enable ( GL_TEXTURE_2D ) ;
|
||||||
m_smokepuff -> setShadeModel ( GL_SMOOTH ) ;
|
m_smokepuff -> setShadeModel ( GL_SMOOTH ) ;
|
||||||
|
@ -131,8 +131,9 @@ void GrandPrixSelect::update(float dt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
mat = material_manager->getMaterial( img_filename, true );
|
mat = material_manager->getMaterial( img_filename, true );
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
m_track_imgs.push_back(mat->getState()->getTextureHandle());
|
m_track_imgs.push_back(mat->getState()->getTextureHandle());
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !m_track_imgs.empty() )
|
if( !m_track_imgs.empty() )
|
||||||
|
@ -59,44 +59,50 @@ HelpPageTwo::HelpPageTwo()
|
|||||||
widget_manager->breakLine();
|
widget_manager->breakLine();
|
||||||
|
|
||||||
// ------ bubble gum -----
|
// ------ bubble gum -----
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
widget_manager->addImgWgt( WTOK_IMG1, 10, 12,
|
widget_manager->addImgWgt( WTOK_IMG1, 10, 12,
|
||||||
powerup_manager->getIcon(POWERUP_BUBBLEGUM)->getState()->getTextureHandle());
|
powerup_manager->getIcon(POWERUP_BUBBLEGUM)->getState()->getTextureHandle());
|
||||||
|
#endif
|
||||||
widget_manager->addTextWgt( WTOK_TXT1, 90, 12,
|
widget_manager->addTextWgt( WTOK_TXT1, 90, 12,
|
||||||
_("BubbleGum - leave a sticky pink puddle behind you"));
|
_("BubbleGum - leave a sticky pink puddle behind you"));
|
||||||
widget_manager->setWgtRoundCorners( WTOK_TXT1, WGT_AREA_RGT );
|
widget_manager->setWgtRoundCorners( WTOK_TXT1, WGT_AREA_RGT );
|
||||||
widget_manager->breakLine();
|
widget_manager->breakLine();
|
||||||
|
|
||||||
// ------ cakes -----
|
// ------ cakes -----
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
widget_manager->addImgWgt(WTOK_IMG2, 10, 12,
|
widget_manager->addImgWgt(WTOK_IMG2, 10, 12,
|
||||||
powerup_manager->getIcon(POWERUP_CAKE)->getState()->getTextureHandle());
|
powerup_manager->getIcon(POWERUP_CAKE)->getState()->getTextureHandle());
|
||||||
|
#endif
|
||||||
widget_manager->addTextWgt(WTOK_TXT2, 90, 12,
|
widget_manager->addTextWgt(WTOK_TXT2, 90, 12,
|
||||||
_("Cake - thrown at the closest rival,\nbest on short ranges and long straights"));
|
_("Cake - thrown at the closest rival,\nbest on short ranges and long straights"));
|
||||||
widget_manager->setWgtRoundCorners( WTOK_TXT2, WGT_AREA_RGT );
|
widget_manager->setWgtRoundCorners( WTOK_TXT2, WGT_AREA_RGT );
|
||||||
widget_manager->breakLine();
|
widget_manager->breakLine();
|
||||||
|
|
||||||
// ------ bowling balls -----
|
// ------ bowling balls -----
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
widget_manager->addImgWgt(WTOK_IMG3, 10, 12,
|
widget_manager->addImgWgt(WTOK_IMG3, 10, 12,
|
||||||
powerup_manager->getIcon(POWERUP_BOWLING)->getState()->getTextureHandle());
|
powerup_manager->getIcon(POWERUP_BOWLING)->getState()->getTextureHandle());
|
||||||
|
#endif
|
||||||
widget_manager->addTextWgt(WTOK_TXT3, 90, 12,
|
widget_manager->addTextWgt(WTOK_TXT3, 90, 12,
|
||||||
_("Bowling Ball - bounces off walls. If you are looking back,\nit will be thrown backwards."));
|
_("Bowling Ball - bounces off walls. If you are looking back,\nit will be thrown backwards."));
|
||||||
widget_manager->setWgtRoundCorners( WTOK_TXT3, WGT_AREA_RGT );
|
widget_manager->setWgtRoundCorners( WTOK_TXT3, WGT_AREA_RGT );
|
||||||
widget_manager->breakLine();
|
widget_manager->breakLine();
|
||||||
|
|
||||||
// ------ zipper -----
|
// ------ zipper -----
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
widget_manager->addImgWgt(WTOK_IMG4, 10, 12,
|
widget_manager->addImgWgt(WTOK_IMG4, 10, 12,
|
||||||
powerup_manager->getIcon(POWERUP_ZIPPER)->getState()->getTextureHandle());
|
powerup_manager->getIcon(POWERUP_ZIPPER)->getState()->getTextureHandle());
|
||||||
|
#endif
|
||||||
widget_manager->addTextWgt(WTOK_TXT4, 90, 12,
|
widget_manager->addTextWgt(WTOK_TXT4, 90, 12,
|
||||||
_("Zipper - speed boost"));
|
_("Zipper - speed boost"));
|
||||||
widget_manager->setWgtRoundCorners(WTOK_TXT4, WGT_AREA_RGT);
|
widget_manager->setWgtRoundCorners(WTOK_TXT4, WGT_AREA_RGT);
|
||||||
widget_manager->breakLine();
|
widget_manager->breakLine();
|
||||||
|
|
||||||
// ------ parachute -----
|
// ------ parachute -----
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
widget_manager->addImgWgt(WTOK_IMG5, 10, 12,
|
widget_manager->addImgWgt(WTOK_IMG5, 10, 12,
|
||||||
powerup_manager->getIcon(POWERUP_PARACHUTE)->getState()->getTextureHandle());
|
powerup_manager->getIcon(POWERUP_PARACHUTE)->getState()->getTextureHandle());
|
||||||
|
#endif
|
||||||
|
|
||||||
widget_manager->addTextWgt(WTOK_TXT5, 90, 12,
|
widget_manager->addTextWgt(WTOK_TXT5, 90, 12,
|
||||||
_("Parachute - slows down all karts in a better position!"));
|
_("Parachute - slows down all karts in a better position!"));
|
||||||
@ -104,8 +110,10 @@ HelpPageTwo::HelpPageTwo()
|
|||||||
widget_manager->breakLine();
|
widget_manager->breakLine();
|
||||||
|
|
||||||
// ------ anvil -----
|
// ------ anvil -----
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
widget_manager->addImgWgt(WTOK_IMG6, 10, 12,
|
widget_manager->addImgWgt(WTOK_IMG6, 10, 12,
|
||||||
powerup_manager->getIcon(POWERUP_ANVIL)->getState()->getTextureHandle());
|
powerup_manager->getIcon(POWERUP_ANVIL)->getState()->getTextureHandle());
|
||||||
|
#endif
|
||||||
|
|
||||||
widget_manager->addTextWgt(WTOK_TXT6, 90, 12,
|
widget_manager->addTextWgt(WTOK_TXT6, 90, 12,
|
||||||
_("Anvil - slows down greatly the kart in the first position"));
|
_("Anvil - slows down greatly the kart in the first position"));
|
||||||
@ -113,9 +121,10 @@ HelpPageTwo::HelpPageTwo()
|
|||||||
widget_manager->breakLine();
|
widget_manager->breakLine();
|
||||||
|
|
||||||
// ------ plunger -----
|
// ------ plunger -----
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
widget_manager->addImgWgt(WTOK_IMG7, 10, 12,
|
widget_manager->addImgWgt(WTOK_IMG7, 10, 12,
|
||||||
powerup_manager->getIcon(POWERUP_PLUNGER)->getState()->getTextureHandle());
|
powerup_manager->getIcon(POWERUP_PLUNGER)->getState()->getTextureHandle());
|
||||||
|
#endif
|
||||||
widget_manager->addTextWgt(WTOK_TXT7, 90, 12,
|
widget_manager->addTextWgt(WTOK_TXT7, 90, 12,
|
||||||
_("Plunger - throw straight to pull an opponent back,\nor throw while looking back to make one lose sight!"));
|
_("Plunger - throw straight to pull an opponent back,\nor throw while looking back to make one lose sight!"));
|
||||||
widget_manager->setWgtRoundCorners( WTOK_TXT7, WGT_AREA_RGT );
|
widget_manager->setWgtRoundCorners( WTOK_TXT7, WGT_AREA_RGT );
|
||||||
|
@ -97,6 +97,7 @@ RaceGUI::RaceGUI()
|
|||||||
m_pos_string[9] = "9th";
|
m_pos_string[9] = "9th";
|
||||||
m_pos_string[10] = "10th";
|
m_pos_string[10] = "10th";
|
||||||
|
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
m_speed_back_icon = material_manager->getMaterial("speedback.rgb");
|
m_speed_back_icon = material_manager->getMaterial("speedback.rgb");
|
||||||
m_speed_back_icon->getState()->disable(GL_CULL_FACE);
|
m_speed_back_icon->getState()->disable(GL_CULL_FACE);
|
||||||
m_speed_fore_icon = material_manager->getMaterial("speedfore.rgb");
|
m_speed_fore_icon = material_manager->getMaterial("speedfore.rgb");
|
||||||
@ -104,6 +105,7 @@ RaceGUI::RaceGUI()
|
|||||||
|
|
||||||
m_plunger_face = material_manager->getMaterial("plungerface.rgb");
|
m_plunger_face = material_manager->getMaterial("plungerface.rgb");
|
||||||
m_plunger_face->getState()->disable(GL_CULL_FACE);
|
m_plunger_face->getState()->disable(GL_CULL_FACE);
|
||||||
|
#endif
|
||||||
|
|
||||||
m_fps_counter = 0;
|
m_fps_counter = 0;
|
||||||
m_fps_string[0]=0;
|
m_fps_string[0]=0;
|
||||||
@ -370,7 +372,9 @@ void RaceGUI::drawPlayerIcons (const KartIconDisplayInfo* info)
|
|||||||
// the same icon is displayed more than once in a row.
|
// the same icon is displayed more than once in a row.
|
||||||
if(last_players_gst==players_gst)
|
if(last_players_gst==players_gst)
|
||||||
{
|
{
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
players_gst->getState()->force();
|
players_gst->getState()->force();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
//The material of the icons should not have a non-zero alpha_ref value,
|
//The material of the icons should not have a non-zero alpha_ref value,
|
||||||
//because if so the next call can make the text look aliased.
|
//because if so the next call can make the text look aliased.
|
||||||
@ -942,7 +946,9 @@ void RaceGUI::drawStatusText(const float dt)
|
|||||||
if (numPlayers == 3 && pla > 1)
|
if (numPlayers == 3 && pla > 1)
|
||||||
plunger_x = offset_x + user_config->m_width/2 - plunger_size/2;
|
plunger_x = offset_x + user_config->m_width/2 - plunger_size/2;
|
||||||
|
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
m_plunger_face->getState()->force();
|
m_plunger_face->getState()->force();
|
||||||
|
#endif
|
||||||
glBegin ( GL_QUADS ) ;
|
glBegin ( GL_QUADS ) ;
|
||||||
glTexCoord2f(1, 0); glVertex2i(plunger_x+plunger_size, offset_y);
|
glTexCoord2f(1, 0); glVertex2i(plunger_x+plunger_size, offset_y);
|
||||||
glTexCoord2f(0, 0); glVertex2i(plunger_x, offset_y);
|
glTexCoord2f(0, 0); glVertex2i(plunger_x, offset_y);
|
||||||
|
@ -328,7 +328,9 @@ void Widget::setFont( const WidgetFont FONT )
|
|||||||
void Widget::setTexture( const std::string& FILENAME, bool is_full_path )
|
void Widget::setTexture( const std::string& FILENAME, bool is_full_path )
|
||||||
{
|
{
|
||||||
Material *m = material_manager->getMaterial( FILENAME, is_full_path );
|
Material *m = material_manager->getMaterial( FILENAME, is_full_path );
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
m_texture = m->getState()->getTextureHandle();
|
m_texture = m->getState()->getTextureHandle();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Initialize a display list containing a rectangle that can have rounded
|
/** Initialize a display list containing a rectangle that can have rounded
|
||||||
|
@ -109,11 +109,6 @@ void Item::update(float delta)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_collected = false;
|
m_collected = false;
|
||||||
#ifdef HAVE_IRRLICHT
|
|
||||||
|
|
||||||
#else
|
|
||||||
m_root->setTransform(const_cast<sgCoord*>(&m_coord.toSgCoord()));
|
|
||||||
#endif
|
|
||||||
} // T>0
|
} // T>0
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -66,11 +66,13 @@ PowerupManager::PowerupManager()
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void PowerupManager::removeTextures()
|
void PowerupManager::removeTextures()
|
||||||
{
|
{
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
for(int i=0; i<POWERUP_MAX; i++)
|
for(int i=0; i<POWERUP_MAX; i++)
|
||||||
{
|
{
|
||||||
if(m_all_icons [i]) ssgDeRefDelete(m_all_icons [i]->getState());
|
if(m_all_icons [i]) ssgDeRefDelete(m_all_icons [i]->getState());
|
||||||
if(m_all_models[i]) ssgDeRefDelete(m_all_models[i] );
|
if(m_all_models[i]) ssgDeRefDelete(m_all_models[i] );
|
||||||
} // for
|
} // for
|
||||||
|
#endif
|
||||||
callback_manager->clear(CB_COLLECTABLE);
|
callback_manager->clear(CB_COLLECTABLE);
|
||||||
|
|
||||||
} // removeTextures
|
} // removeTextures
|
||||||
@ -115,6 +117,8 @@ void PowerupManager::LoadNode(const lisp::Lisp* lisp, int collectType )
|
|||||||
lisp->get("model", sModel );
|
lisp->get("model", sModel );
|
||||||
lisp->get("icon", sIconFile );
|
lisp->get("icon", sIconFile );
|
||||||
|
|
||||||
|
#ifdef HAVE_IRRLICHT
|
||||||
|
#else
|
||||||
// load material
|
// load material
|
||||||
m_all_icons[collectType] = material_manager->getMaterial(sIconFile,
|
m_all_icons[collectType] = material_manager->getMaterial(sIconFile,
|
||||||
/* full_path */ false,
|
/* full_path */ false,
|
||||||
@ -123,21 +127,19 @@ void PowerupManager::LoadNode(const lisp::Lisp* lisp, int collectType )
|
|||||||
|
|
||||||
if(sModel!="")
|
if(sModel!="")
|
||||||
{
|
{
|
||||||
#ifdef HAVE_IRRLICHT
|
|
||||||
#else
|
|
||||||
// FIXME LEAK: not freed (unimportant, since the models have to exist
|
// FIXME LEAK: not freed (unimportant, since the models have to exist
|
||||||
// for the whole game anyway).
|
// for the whole game anyway).
|
||||||
ssgEntity* e = loader->load(sModel, CB_COLLECTABLE);
|
ssgEntity* e = loader->load(sModel, CB_COLLECTABLE);
|
||||||
m_all_models[collectType] = e;
|
m_all_models[collectType] = e;
|
||||||
e->ref();
|
e->ref();
|
||||||
e->clrTraversalMaskBits(SSGTRAV_ISECT|SSGTRAV_HOT);
|
e->clrTraversalMaskBits(SSGTRAV_ISECT|SSGTRAV_HOT);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_all_models[collectType] = 0;
|
m_all_models[collectType] = 0;
|
||||||
m_all_extends[collectType] = btVector3(0.0f,0.0f,0.0f);
|
m_all_extends[collectType] = btVector3(0.0f,0.0f,0.0f);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// Load special attributes for certain powerups
|
// Load special attributes for certain powerups
|
||||||
switch (collectType) {
|
switch (collectType) {
|
||||||
|
@ -120,8 +120,8 @@ void KartModel::loadModels(const std::string &kart_ident)
|
|||||||
Vec3 size = max-min;
|
Vec3 size = max-min;
|
||||||
m_z_offset = min.getZ();
|
m_z_offset = min.getZ();
|
||||||
m_kart_width = size.getX();
|
m_kart_width = size.getX();
|
||||||
m_kart_height = size.getY();
|
m_kart_height = size.getZ();
|
||||||
m_kart_length = size.getZ();
|
m_kart_length = size.getY();
|
||||||
// FIXME: How do we handle this? it's a mesh only, so we can't
|
// FIXME: How do we handle this? it's a mesh only, so we can't
|
||||||
// simply move it in a transform (unless we turn it into a scene
|
// simply move it in a transform (unless we turn it into a scene
|
||||||
// node). m_z_offset should probably be made available to kart.
|
// node). m_z_offset should probably be made available to kart.
|
||||||
|
@ -87,13 +87,19 @@ ssgEntity *Loader::load(const std::string& filename, CallbackType t,
|
|||||||
{
|
{
|
||||||
m_current_callback_type = t;
|
m_current_callback_type = t;
|
||||||
m_is_full_path = is_full_path;
|
m_is_full_path = is_full_path;
|
||||||
|
#ifdef HAVE_IRRLICHT
|
||||||
|
// FIXME: for now
|
||||||
|
return NULL;
|
||||||
|
#else
|
||||||
ssgEntity *obj = optimise ? ssgLoad (filename.c_str(), this)
|
ssgEntity *obj = optimise ? ssgLoad (filename.c_str(), this)
|
||||||
: ssgLoadAC(filename.c_str(), this);
|
: ssgLoadAC(filename.c_str(), this);
|
||||||
preProcessObj(obj, false);
|
preProcessObj(obj, false);
|
||||||
return obj;
|
return obj;
|
||||||
|
#endif
|
||||||
} // load
|
} // load
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
void Loader::preProcessObj ( ssgEntity *n, bool mirror )
|
void Loader::preProcessObj ( ssgEntity *n, bool mirror )
|
||||||
{
|
{
|
||||||
if ( n == NULL ) return ;
|
if ( n == NULL ) return ;
|
||||||
@ -127,8 +133,9 @@ void Loader::preProcessObj ( ssgEntity *n, bool mirror )
|
|||||||
for ( int i = 0 ; i < b -> getNumKids () ; i++ )
|
for ( int i = 0 ; i < b -> getNumKids () ; i++ )
|
||||||
preProcessObj ( b -> getKid ( i ), mirror ) ;
|
preProcessObj ( b -> getKid ( i ), mirror ) ;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
ssgBranch *Loader::animInit (char *data ) const
|
ssgBranch *Loader::animInit (char *data ) const
|
||||||
{
|
{
|
||||||
while ( ! isdigit ( *data ) && *data != '\0' )
|
while ( ! isdigit ( *data ) && *data != '\0' )
|
||||||
@ -155,8 +162,9 @@ ssgBranch *Loader::animInit (char *data ) const
|
|||||||
return br;
|
return br;
|
||||||
} // animInit
|
} // animInit
|
||||||
|
|
||||||
|
#endif
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
/** Handle userdata that is stored in the model files. Mostly the userdata
|
/** Handle userdata that is stored in the model files. Mostly the userdata
|
||||||
* indicates that a special branch is to be created (e.g. a ssgCutout instead
|
* indicates that a special branch is to be created (e.g. a ssgCutout instead
|
||||||
* of the standard branch). But some userdata indicate that callbacks need
|
* of the standard branch). But some userdata indicate that callbacks need
|
||||||
@ -220,4 +228,4 @@ ssgBranch *Loader::createBranch(char *data) const
|
|||||||
fprintf(stderr, "Warning: Ignoring userdata '%s'\n", data);
|
fprintf(stderr, "Warning: Ignoring userdata '%s'\n", data);
|
||||||
return NULL ;
|
return NULL ;
|
||||||
} // createBranch
|
} // createBranch
|
||||||
|
#endif
|
||||||
|
@ -52,9 +52,11 @@ private:
|
|||||||
|
|
||||||
void makePath (std::string& path, const std::string& dir,
|
void makePath (std::string& path, const std::string& dir,
|
||||||
const std::string& fname) const;
|
const std::string& fname) const;
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
ssgBranch *createBranch (char *data) const;
|
ssgBranch *createBranch (char *data) const;
|
||||||
void preProcessObj( ssgEntity *n, bool mirror );
|
void preProcessObj( ssgEntity *n, bool mirror );
|
||||||
ssgBranch *animInit (char *data) const;
|
ssgBranch *animInit (char *data) const;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
extern Loader* loader;
|
extern Loader* loader;
|
||||||
|
@ -444,7 +444,9 @@ void InitTuxkart()
|
|||||||
irr_driver = new IrrDriver();
|
irr_driver = new IrrDriver();
|
||||||
#endif
|
#endif
|
||||||
loader = new Loader();
|
loader = new Loader();
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
loader->setCreateStateCallback(getAppState);
|
loader->setCreateStateCallback(getAppState);
|
||||||
|
#endif
|
||||||
sound_manager = new SoundManager();
|
sound_manager = new SoundManager();
|
||||||
sfx_manager = new SFXManager();
|
sfx_manager = new SFXManager();
|
||||||
// The order here can be important, e.g. KartPropertiesManager needs
|
// The order here can be important, e.g. KartPropertiesManager needs
|
||||||
|
@ -53,10 +53,14 @@ void MainLoop::loadBackgroundImages()
|
|||||||
{
|
{
|
||||||
int ind = user_config->getBackgroundIndex();
|
int ind = user_config->getBackgroundIndex();
|
||||||
const std::string &main = stk_config->getMainMenuPicture(ind);
|
const std::string &main = stk_config->getMainMenuPicture(ind);
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
m_title_screen_texture = material_manager->getMaterial(main)->getState()->getTextureHandle();
|
m_title_screen_texture = material_manager->getMaterial(main)->getState()->getTextureHandle();
|
||||||
|
#endif
|
||||||
|
|
||||||
const std::string &background = stk_config->getBackgroundPicture(ind);
|
const std::string &background = stk_config->getBackgroundPicture(ind);
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
m_bg_texture = material_manager->getMaterial(background)->getState()->getTextureHandle();
|
m_bg_texture = material_manager->getMaterial(background)->getState()->getTextureHandle();
|
||||||
|
#endif
|
||||||
} // loadBackgroundImages
|
} // loadBackgroundImages
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@ -19,8 +19,11 @@
|
|||||||
|
|
||||||
#include "material.hpp"
|
#include "material.hpp"
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
|
||||||
#include "file_manager.hpp"
|
#include "file_manager.hpp"
|
||||||
#include "stk_config.hpp"
|
#include "stk_config.hpp"
|
||||||
|
#include "io/xml_node.hpp"
|
||||||
#include "utils/string_utils.hpp"
|
#include "utils/string_utils.hpp"
|
||||||
|
|
||||||
#define UCLAMP 1
|
#define UCLAMP 1
|
||||||
@ -44,6 +47,7 @@ int setSpheremap ( ssgEntity * )
|
|||||||
} // setSpheremap
|
} // setSpheremap
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
bool Material::parseBool ( char **p )
|
bool Material::parseBool ( char **p )
|
||||||
{
|
{
|
||||||
/* Skip leading spaces */
|
/* Skip leading spaces */
|
||||||
@ -76,18 +80,66 @@ float Material::parseFloat ( char **p )
|
|||||||
|
|
||||||
return (float)strtod ( *p, p ) ;
|
return (float)strtod ( *p, p ) ;
|
||||||
} // parseFloat
|
} // parseFloat
|
||||||
|
#endif
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
Material::Material(int index)
|
Material::Material(unsigned int index)
|
||||||
{
|
{
|
||||||
m_texname = "";
|
m_texname = "";
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
m_predraw = m_postdraw = NULL ;
|
m_predraw = m_postdraw = NULL ;
|
||||||
|
#endif
|
||||||
|
|
||||||
init (index);
|
init (index);
|
||||||
install();
|
install();
|
||||||
} // Material
|
} // Material
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
#ifdef HAVE_IRRLICHT
|
||||||
|
/** Create a new material using the parameters specified in the xml file.
|
||||||
|
* \param node Node containing the parameters for this material.
|
||||||
|
* \param index Index in material_manager.
|
||||||
|
*/
|
||||||
|
Material::Material(const XMLNode *node, int index)
|
||||||
|
{
|
||||||
|
node->get("name", &m_texname);
|
||||||
|
if(m_texname=="")
|
||||||
|
{
|
||||||
|
throw std::runtime_error("No texture name specified in %s file\n");
|
||||||
|
}
|
||||||
|
init(index);
|
||||||
|
bool b=false;
|
||||||
|
node->get("clampU", &b); if(b) m_clamp_tex +=UCLAMP;
|
||||||
|
b=false;
|
||||||
|
node->get("clampV", &b); if(b) m_clamp_tex +=VCLAMP;
|
||||||
|
node->get("transparency", &m_transparency );
|
||||||
|
node->get("alpha", &m_alpha_ref );
|
||||||
|
node->get("light", &m_lighting );
|
||||||
|
node->get("sphere", &m_sphere_map );
|
||||||
|
node->get("friction", &m_friction );
|
||||||
|
node->get("ignore", &m_ignore );
|
||||||
|
node->get("zipper", &m_zipper );
|
||||||
|
node->get("reset", &m_resetter );
|
||||||
|
node->get("collide", &m_collideable );
|
||||||
|
node->get("maxSpeed", &m_max_speed_fraction);
|
||||||
|
node->get("slowdownTime", &m_slowdown );
|
||||||
|
|
||||||
|
install(/*is_full_path*/false);
|
||||||
|
} // Material
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
/** Create a standard material using the default settings for materials.
|
||||||
|
* \param fname Name of the texture file.
|
||||||
|
* \param index Unique index in material_manager.
|
||||||
|
* \param is_full_path If the fname contains the full path.
|
||||||
|
*/
|
||||||
|
Material::Material(const std::string& fname, int index, bool is_full_path)
|
||||||
|
{
|
||||||
|
m_texname = fname;
|
||||||
|
init(index);
|
||||||
|
install(is_full_path);
|
||||||
|
} // Material
|
||||||
|
|
||||||
|
#else
|
||||||
Material::Material(const std::string& fname, char *description,
|
Material::Material(const std::string& fname, char *description,
|
||||||
int index, bool is_full_path)
|
int index, bool is_full_path)
|
||||||
{
|
{
|
||||||
@ -120,15 +172,18 @@ Material::Material(const std::string& fname, char *description,
|
|||||||
}
|
}
|
||||||
install(is_full_path);
|
install(is_full_path);
|
||||||
} // Material
|
} // Material
|
||||||
|
#endif
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
Material::~Material()
|
Material::~Material()
|
||||||
{
|
{
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
ssgDeRefDelete(m_state);
|
ssgDeRefDelete(m_state);
|
||||||
|
#endif
|
||||||
} // ~Material
|
} // ~Material
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void Material::init(int index)
|
void Material::init(unsigned int index)
|
||||||
{
|
{
|
||||||
m_index = index ;
|
m_index = index ;
|
||||||
m_clamp_tex = 0 ;
|
m_clamp_tex = 0 ;
|
||||||
@ -146,15 +201,18 @@ void Material::init(int index)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
void Material::applyToLeaf(ssgLeaf *l)
|
void Material::applyToLeaf(ssgLeaf *l)
|
||||||
{
|
{
|
||||||
if ( m_predraw ) l -> setCallback ( SSG_CALLBACK_PREDRAW , m_predraw ) ;
|
if ( m_predraw ) l -> setCallback ( SSG_CALLBACK_PREDRAW , m_predraw ) ;
|
||||||
if ( m_postdraw ) l -> setCallback ( SSG_CALLBACK_POSTDRAW, m_postdraw ) ;
|
if ( m_postdraw ) l -> setCallback ( SSG_CALLBACK_POSTDRAW, m_postdraw ) ;
|
||||||
} // applyToLeaf
|
} // applyToLeaf
|
||||||
|
#endif
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void Material::install(bool is_full_path)
|
void Material::install(bool is_full_path)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_IRRLICHT
|
||||||
|
#else
|
||||||
if ( isSphereMap () )
|
if ( isSphereMap () )
|
||||||
{
|
{
|
||||||
m_predraw = setSpheremap ;
|
m_predraw = setSpheremap ;
|
||||||
@ -206,6 +264,7 @@ void Material::install(bool is_full_path)
|
|||||||
m_state -> setOpaque () ;
|
m_state -> setOpaque () ;
|
||||||
m_state -> disable ( GL_BLEND ) ;
|
m_state -> disable ( GL_BLEND ) ;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// now set the name to the basename, so that all tests work as expected
|
// now set the name to the basename, so that all tests work as expected
|
||||||
m_texname = StringUtils::basename(m_texname);
|
m_texname = StringUtils::basename(m_texname);
|
||||||
|
@ -24,13 +24,18 @@
|
|||||||
#define _WINSOCKAPI_
|
#define _WINSOCKAPI_
|
||||||
#include <plib/ssg.h>
|
#include <plib/ssg.h>
|
||||||
|
|
||||||
|
class XMLNode;
|
||||||
|
|
||||||
class Material
|
class Material
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
#ifdef HAVE_IRRLICHT
|
||||||
|
#else
|
||||||
ssgSimpleState *m_state;
|
ssgSimpleState *m_state;
|
||||||
ssgCallback m_predraw;
|
ssgCallback m_predraw;
|
||||||
ssgCallback m_postdraw;
|
ssgCallback m_postdraw;
|
||||||
int m_index;
|
#endif
|
||||||
|
unsigned int m_index;
|
||||||
std::string m_texname;
|
std::string m_texname;
|
||||||
bool m_collideable;
|
bool m_collideable;
|
||||||
bool m_zipper;
|
bool m_zipper;
|
||||||
@ -46,26 +51,32 @@ private:
|
|||||||
float m_slowdown;
|
float m_slowdown;
|
||||||
/** Maximum speed at which no more slow down occurs. */
|
/** Maximum speed at which no more slow down occurs. */
|
||||||
float m_max_speed_fraction;
|
float m_max_speed_fraction;
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
bool parseBool ( char **p );
|
bool parseBool ( char **p );
|
||||||
int parseInt ( char **p );
|
int parseInt ( char **p );
|
||||||
float parseFloat ( char **p );
|
float parseFloat ( char **p );
|
||||||
|
#endif
|
||||||
void init (int index);
|
void init (unsigned int index);
|
||||||
void install (bool is_full_path=false);
|
void install (bool is_full_path=false);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Material(int index);
|
Material(unsigned int index);
|
||||||
|
#ifdef HAVE_IRRLICHT
|
||||||
|
Material(const XMLNode *node, int index);
|
||||||
|
Material(const std::string& fname, int index, bool is_full_path=false);
|
||||||
|
#else
|
||||||
Material(const std::string& fname, char *description, int index,
|
Material(const std::string& fname, char *description, int index,
|
||||||
bool is_full_path=false);
|
bool is_full_path=false);
|
||||||
|
#endif
|
||||||
|
|
||||||
~Material ();
|
~Material ();
|
||||||
|
|
||||||
int matches ( char *tx ) ;
|
int matches ( char *tx ) ;
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
ssgSimpleState
|
ssgSimpleState
|
||||||
*getState () const { return m_state ; }
|
*getState () const { return m_state ; }
|
||||||
|
#endif
|
||||||
bool isIgnore () const { return m_ignore; }
|
bool isIgnore () const { return m_ignore; }
|
||||||
bool isZipper () const { return m_zipper; }
|
bool isZipper () const { return m_zipper; }
|
||||||
bool isSphereMap () const { return m_sphere_map; }
|
bool isSphereMap () const { return m_sphere_map; }
|
||||||
@ -80,10 +91,11 @@ public:
|
|||||||
/** Returns the slowdown that happens if a kart is
|
/** Returns the slowdown that happens if a kart is
|
||||||
* faster than the maximum speed. */
|
* faster than the maximum speed. */
|
||||||
float getSlowDown () const { return m_slowdown; }
|
float getSlowDown () const { return m_slowdown; }
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
void apply () { m_state ->apply(); }
|
void apply () { m_state ->apply(); }
|
||||||
void force () { m_state ->force(); }
|
void force () { m_state ->force(); }
|
||||||
|
void applyToLeaf ( ssgLeaf *l ) ;
|
||||||
void applyToLeaf ( ssgLeaf *l ) ;
|
#endif
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
|
|
||||||
#include "file_manager.hpp"
|
#include "file_manager.hpp"
|
||||||
#include "material.hpp"
|
#include "material.hpp"
|
||||||
|
#include "io/xml_node.hpp"
|
||||||
#include "utils/string_utils.hpp"
|
#include "utils/string_utils.hpp"
|
||||||
|
|
||||||
ssgState *fuzzy_gst;
|
ssgState *fuzzy_gst;
|
||||||
@ -65,16 +66,21 @@ void MaterialManager::reInit()
|
|||||||
void MaterialManager::loadMaterial()
|
void MaterialManager::loadMaterial()
|
||||||
{
|
{
|
||||||
// Create the default/empty material.
|
// Create the default/empty material.
|
||||||
m_materials.push_back(new Material((int)m_materials.size()));
|
m_materials.push_back(new Material(m_materials.size()));
|
||||||
|
|
||||||
// Use temp material for reading, but then set the shared
|
// Use temp material for reading, but then set the shared
|
||||||
// material index later, so that these materials are not popped
|
// material index later, so that these materials are not popped
|
||||||
|
#ifdef HAVE_IRRLICHT
|
||||||
|
const std::string fname = "materials.xml";
|
||||||
|
#else
|
||||||
const std::string fname = "materials.dat";
|
const std::string fname = "materials.dat";
|
||||||
|
#endif
|
||||||
std::string full_name = file_manager->getTextureFile(fname);
|
std::string full_name = file_manager->getTextureFile(fname);
|
||||||
addSharedMaterial(full_name);
|
addSharedMaterial(full_name);
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
ssgSetAppStateCallback(getAppState);
|
ssgSetAppStateCallback(getAppState);
|
||||||
fuzzy_gst = getMaterial("fuzzy.rgb")->getState();
|
fuzzy_gst = getMaterial("fuzzy.rgb")->getState();
|
||||||
|
#endif
|
||||||
// Save index of shared textures
|
// Save index of shared textures
|
||||||
m_shared_material_index = (int)m_materials.size();
|
m_shared_material_index = (int)m_materials.size();
|
||||||
} // MaterialManager
|
} // MaterialManager
|
||||||
@ -102,6 +108,29 @@ void MaterialManager::addSharedMaterial(const std::string& filename)
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
bool MaterialManager::pushTempMaterial(const std::string& filename)
|
bool MaterialManager::pushTempMaterial(const std::string& filename)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_IRRLICHT
|
||||||
|
XMLReader *xml = file_manager->getXMLReader(filename);
|
||||||
|
for(unsigned int i=0; i<xml->getNumNodes(); i++)
|
||||||
|
{
|
||||||
|
const XMLNode *node = xml->getNode(i);
|
||||||
|
if(!node)
|
||||||
|
{
|
||||||
|
// We don't have access to the filename at this stage anymore :(
|
||||||
|
fprintf(stderr, "Unknown node in material.dat file\n");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
m_materials.push_back(new Material(node, m_materials.size() ));
|
||||||
|
}
|
||||||
|
catch(std::exception& e)
|
||||||
|
{
|
||||||
|
// The message contains a '%s' for the filename
|
||||||
|
fprintf(stderr, e.what(), filename.c_str());
|
||||||
|
}
|
||||||
|
} // for i<xml->getNumNodes)(
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
FILE *fd = fopen(filename.c_str(), "r" );
|
FILE *fd = fopen(filename.c_str(), "r" );
|
||||||
|
|
||||||
if ( fd == NULL ) return false;
|
if ( fd == NULL ) return false;
|
||||||
@ -111,6 +140,7 @@ bool MaterialManager::pushTempMaterial(const std::string& filename)
|
|||||||
|
|
||||||
fclose ( fd ) ;
|
fclose ( fd ) ;
|
||||||
return true;
|
return true;
|
||||||
|
#endif
|
||||||
} // pushTempMaterial
|
} // pushTempMaterial
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@ -124,6 +154,7 @@ void MaterialManager::popTempMaterial()
|
|||||||
} // popTempMaterial
|
} // popTempMaterial
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
char* MaterialManager::parseFileName(char **str)
|
char* MaterialManager::parseFileName(char **str)
|
||||||
{
|
{
|
||||||
char *p = *str ;
|
char *p = *str ;
|
||||||
@ -158,8 +189,9 @@ char* MaterialManager::parseFileName(char **str)
|
|||||||
|
|
||||||
return f ;
|
return f ;
|
||||||
} // parseFilename
|
} // parseFilename
|
||||||
|
#endif
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
int MaterialManager::parseMaterial ( FILE *fd )
|
int MaterialManager::parseMaterial ( FILE *fd )
|
||||||
{
|
{
|
||||||
char str [ 1024 ] ;
|
char str [ 1024 ] ;
|
||||||
@ -177,13 +209,14 @@ int MaterialManager::parseMaterial ( FILE *fd )
|
|||||||
|
|
||||||
if ( f != NULL )
|
if ( f != NULL )
|
||||||
{
|
{
|
||||||
m_materials.push_back(new Material (f, s, (int)m_materials.size() ));
|
m_materials.push_back(new Material (f, s, m_materials.size() ));
|
||||||
return true ;
|
return true ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false ;
|
return false ;
|
||||||
} // parseMaterial
|
} // parseMaterial
|
||||||
|
#endif
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
Material *MaterialManager::getMaterial ( ssgLeaf *l )
|
Material *MaterialManager::getMaterial ( ssgLeaf *l )
|
||||||
@ -229,16 +262,22 @@ Material *MaterialManager::getMaterial(const std::string& fname,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add the new material
|
// Add the new material
|
||||||
Material* m=new Material(fname,"", (int)m_materials.size(), is_full_path);
|
#ifdef HAVE_IRRLICHT
|
||||||
|
Material* m=new Material(fname, m_materials.size(), is_full_path);
|
||||||
|
#else
|
||||||
|
Material* m=new Material(fname, "", m_materials.size(), is_full_path);
|
||||||
|
#endif
|
||||||
m_materials.push_back(m);
|
m_materials.push_back(m);
|
||||||
if(make_permanent) m_shared_material_index = (int)m_materials.size();
|
if(make_permanent) m_shared_material_index = (int)m_materials.size();
|
||||||
return m ;
|
return m ;
|
||||||
} // getMaterial
|
} // getMaterial
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
ssgState *getAppState ( char *fname )
|
ssgState *getAppState ( char *fname )
|
||||||
{
|
{
|
||||||
Material *m = material_manager->getMaterial ( fname ) ;
|
Material *m = material_manager->getMaterial ( fname ) ;
|
||||||
return ( m == NULL ) ? NULL : m -> getState () ;
|
return ( m == NULL ) ? NULL : m -> getState () ;
|
||||||
} // getAppState
|
} // getAppState
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@ -26,13 +26,16 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
class Material;
|
class Material;
|
||||||
|
class XMLReader;
|
||||||
|
|
||||||
class MaterialManager
|
class MaterialManager
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
char *parseFileName(char **str);
|
char *parseFileName(char **str);
|
||||||
int parseMaterial(FILE *fd);
|
int parseMaterial(FILE *fd);
|
||||||
|
#endif
|
||||||
void parseMaterialFile(const std::string& filename);
|
void parseMaterialFile(const std::string& filename);
|
||||||
int m_shared_material_index;
|
int m_shared_material_index;
|
||||||
|
|
||||||
@ -51,8 +54,9 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
extern ssgState *fuzzy_gst;//, *herringbones_gst;
|
extern ssgState *fuzzy_gst;//, *herringbones_gst;
|
||||||
|
#ifndef HAVE_IRRLICHT
|
||||||
ssgState *getAppState ( char *fname ) ;
|
ssgState *getAppState ( char *fname ) ;
|
||||||
|
#endif
|
||||||
extern MaterialManager *material_manager;
|
extern MaterialManager *material_manager;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -111,9 +111,9 @@ void Vec3::setPitchRoll(const Vec3 &normal)
|
|||||||
#ifdef HAVE_IRRLICHT
|
#ifdef HAVE_IRRLICHT
|
||||||
const core::vector3df Vec3::toIrrHPR() const
|
const core::vector3df Vec3::toIrrHPR() const
|
||||||
{
|
{
|
||||||
core::vector3df r(RAD_TO_DEGREE( getZ()),
|
core::vector3df r(RAD_TO_DEGREE( getY()),
|
||||||
RAD_TO_DEGREE(-getX()),
|
RAD_TO_DEGREE(-getX()),
|
||||||
RAD_TO_DEGREE( getY()) );
|
RAD_TO_DEGREE(-getZ()) );
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
} // toIrrHPR
|
} // toIrrHPR
|
||||||
|
Loading…
x
Reference in New Issue
Block a user