Better encapsulation for personality
This commit is contained in:
@@ -61,22 +61,6 @@ SGModelLib::flush1()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
|
||||||
personality_pretrav_callback(ssgEntity * entity, int mask)
|
|
||||||
{
|
|
||||||
((SGPersonalityBranch *)entity)->_old_current = SGAnimation::current_object;
|
|
||||||
SGAnimation::current_object = (SGPersonalityBranch *)entity;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
personality_posttrav_callback(ssgEntity * entity, int mask)
|
|
||||||
{
|
|
||||||
SGAnimation::current_object = ((SGPersonalityBranch *)entity)->_old_current;
|
|
||||||
((SGPersonalityBranch *)entity)->_old_current = 0;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
ssgEntity *
|
ssgEntity *
|
||||||
SGModelLib::load_model( const string &fg_root,
|
SGModelLib::load_model( const string &fg_root,
|
||||||
const string &path,
|
const string &path,
|
||||||
@@ -86,8 +70,6 @@ SGModelLib::load_model( const string &fg_root,
|
|||||||
SGModelData *data )
|
SGModelData *data )
|
||||||
{
|
{
|
||||||
ssgBranch *personality_branch = new SGPersonalityBranch;
|
ssgBranch *personality_branch = new SGPersonalityBranch;
|
||||||
personality_branch->setTravCallback(SSG_CALLBACK_PRETRAV, personality_pretrav_callback);
|
|
||||||
personality_branch->setTravCallback(SSG_CALLBACK_POSTTRAV, personality_posttrav_callback);
|
|
||||||
|
|
||||||
// FIXME: normalize path to
|
// FIXME: normalize path to
|
||||||
// avoid duplicates.
|
// avoid duplicates.
|
||||||
|
|||||||
@@ -2,7 +2,34 @@
|
|||||||
* $Id$
|
* $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <simgear_config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "personality.hxx"
|
#include "personality.hxx"
|
||||||
|
#include "animation.hxx"
|
||||||
|
|
||||||
|
static int
|
||||||
|
personality_pretrav_callback(ssgEntity * entity, int mask)
|
||||||
|
{
|
||||||
|
((SGPersonalityBranch *)entity)->_old_current = SGAnimation::current_object;
|
||||||
|
SGAnimation::current_object = (SGPersonalityBranch *)entity;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
personality_posttrav_callback(ssgEntity * entity, int mask)
|
||||||
|
{
|
||||||
|
SGAnimation::current_object = ((SGPersonalityBranch *)entity)->_old_current;
|
||||||
|
((SGPersonalityBranch *)entity)->_old_current = 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
SGPersonalityBranch::SGPersonalityBranch()
|
||||||
|
{
|
||||||
|
setTravCallback(SSG_CALLBACK_PRETRAV, personality_pretrav_callback);
|
||||||
|
setTravCallback(SSG_CALLBACK_POSTTRAV, personality_posttrav_callback);
|
||||||
|
}
|
||||||
|
|
||||||
void SGPersonalityBranch::setDoubleValue( double value, SGAnimation *anim, int var_id, int var_num )
|
void SGPersonalityBranch::setDoubleValue( double value, SGAnimation *anim, int var_id, int var_num )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ class SGAnimation;
|
|||||||
|
|
||||||
class SGPersonalityBranch : public ssgBranch {
|
class SGPersonalityBranch : public ssgBranch {
|
||||||
public:
|
public:
|
||||||
|
SGPersonalityBranch();
|
||||||
void setDoubleValue( double value, SGAnimation *anim, int var_id, int var_num = 0 );
|
void setDoubleValue( double value, SGAnimation *anim, int var_id, int var_num = 0 );
|
||||||
void setIntValue( int value, SGAnimation *anim, int var_id, int var_num = 0 );
|
void setIntValue( int value, SGAnimation *anim, int var_id, int var_num = 0 );
|
||||||
double getDoubleValue( SGAnimation *anim, int var_id, int var_num = 0 ) const;
|
double getDoubleValue( SGAnimation *anim, int var_id, int var_num = 0 ) const;
|
||||||
|
|||||||
Reference in New Issue
Block a user