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 *
|
||||
SGModelLib::load_model( const string &fg_root,
|
||||
const string &path,
|
||||
@@ -86,8 +70,6 @@ SGModelLib::load_model( const string &fg_root,
|
||||
SGModelData *data )
|
||||
{
|
||||
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
|
||||
// avoid duplicates.
|
||||
|
||||
@@ -2,7 +2,34 @@
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <simgear_config.h>
|
||||
#endif
|
||||
|
||||
#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 )
|
||||
{
|
||||
|
||||
@@ -16,6 +16,7 @@ class SGAnimation;
|
||||
|
||||
class SGPersonalityBranch : public ssgBranch {
|
||||
public:
|
||||
SGPersonalityBranch();
|
||||
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 );
|
||||
double getDoubleValue( SGAnimation *anim, int var_id, int var_num = 0 ) const;
|
||||
|
||||
Reference in New Issue
Block a user