bxGame.cpp:
Code: Select all
void bxGame::funcCircle()
{
scene::ISceneManager* sm = device->getSceneManager();
printf( "Game: funcCircle()\n" );
quakeLevelMesh = (scene::IQ3LevelMesh*) sm->getMesh("maps/map1.bsp");
if ( quakeLevelMesh )
{
scene::quake3::tQ3EntityList &entityList = quakeLevelMesh->getEntityList();
scene::quake3::IEntity search;
search.name = "func_circle";
s32 index = entityList.binary_search ( search );
if ( index >= 0 )
{
const scene::quake3::SVarGroup *group;
s32 notEndList;
do
{
group = entityList[ index ].getGroup(1);
u32 parsepos = 0;
core::vector3df pos =
scene::quake3::getAsVector3df ( group->get ( "origin" ), parsepos );
parsepos = 0;
f32 mdl = ( group->get ( "model" ), parsepos );
parsepos = 0;
int circle_radius = ( group->get ( "circle" ), parsepos );
parsepos = 0;
f32 scale = ( group->get ( "scale" ), parsepos );
scene::IAnimatedMeshSceneNode* model = sm->addAnimatedMeshSceneNode( sm->getMesh("bxgame/models/testModel.md3") );
if (model)
{
model->setScale(core::vector3df(1,1,1));
model->setPosition ( pos );
scene::ISceneNodeAnimator* rotate =
sm->createFlyCircleAnimator(pos, circle_radius);
if (rotate)
{
model->addAnimator(rotate);
rotate->drop();
}
}
index += 1;
notEndList = index == 2;
} while ( notEndList );
}
}
}bxGame.h:
Code: Select all
struct func_circle
{
scene::IAnimatedMeshSceneNode* model;
core::vector3df pos;
};
core::array<func_circle> funcsCircle;