本文整理汇总了C++中IAnimatedMeshSceneNode::getAbsolutePosition方法的典型用法代码示例。如果您正苦于以下问题:C++ IAnimatedMeshSceneNode::getAbsolutePosition方法的具体用法?C++ IAnimatedMeshSceneNode::getAbsolutePosition怎么用?C++ IAnimatedMeshSceneNode::getAbsolutePosition使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IAnimatedMeshSceneNode
的用法示例。
在下文中一共展示了IAnimatedMeshSceneNode::getAbsolutePosition方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setupHud
void Game::setupHud(){
IAnimatedMesh* gunmesh = smgr->getMesh("resources/models/weapons/test.obj");
IAnimatedMeshSceneNode* gunnode;
if(gunmesh)
{
gunnode = smgr->addAnimatedMeshSceneNode(gunmesh, gunnode);
gunnode->setParent(camera);
gunnode->setPosition(vector3df(50, 0, 1000));
gunnode->setRotation(vector3df(0, 0, 1000));
gunnode->updateAbsolutePosition();
std::cout << gunnode->getAbsolutePosition().X << ", " << gunnode->getAbsolutePosition().Y << ", "
<< gunnode->getAbsolutePosition().Z;
//gunnode->setScale(vector3df(1, 1, 1));
}
}
示例2: OnRegisterSceneNode
// registering the scene node for rendering, here we take the opportunity
// to make LOD adjustments to child nodes
void CLODSceneNode::OnRegisterSceneNode()
{
//if this node is invisible forget any child nodes
if (!IsVisible)
return;
// get a timer to calculate the amount to fade objects
u32 time = device->getTimer()->getTime();
// get the camera position
ICameraSceneNode* cam = smgr->getActiveCamera();
core::vector3df vectorCam = cam->getAbsolutePosition();
// loop through all child nodes
u32 i,j;
u32 lod, fade;
SMaterial * material;
for (i=0; i < children.size(); ++i)
{
// get the node associated with this link
SChildLink &child = children[i];
IAnimatedMeshSceneNode *node = (IAnimatedMeshSceneNode *)child.node;
// calculate the distance to the node. at the moment we do this the
// slow linear way instead of using the distance squared method
core::vector3df vectorNode = node->getAbsolutePosition();
float distance = vectorNode.getDistanceFrom( vectorCam );
// itterate through all of the LOD levels and find the lod distance
// that is appropriate for this distance
lod = 0xFFFFFFFF;
for (j=0; j < lods.size(); ++j)
{
if ( distance >= lods[j].distance )
{
lod = j;
}
}
// if a LOD level was found
if ( lod != 0xFFFFFFFF )
{
// if this lod is associated with a mesh
if ( lods[lod].mesh )
{
// if this lod differs from the child lod
if ( lod != children[i].lod )
{
children[i].lod = lod;
// if the node is an animated mesh node
if ( ( node->getType()) == ESNT_ANIMATED_MESH )
{
// set the new mesh to be used
node->setMeshClean( lods[lod].mesh );
}
}
// handle instances where the node is faded
switch ( children[i].mode )
{
case LOD_INVISIBLE:
// make the node visible
node->setVisible( true );
children[i].mode = LOD_FADE_IN;
children[i].fade = time;
break;
// we are partially faded we need to fade back in
case LOD_FADE_IN:
// fade the node in by 1 multiplied by the time passed
fade = (time - children[i].fade) / fadeScale;
if ( fade > 0xFF ) fade = 0xFF;
// if the node is fully opaque again
if ( fade == 0xFF )
{
// restore the origonal material type
node->setMaterialType(children[i].matType);
children[i].mode = LOD_OPAQUE;
if ( callback ) callback( true, node );
}
// fade the node through its materials
fade *= 0x01010101;
material = &node->getMaterial( 0 );
if ( useAlpha )
{
material->DiffuseColor.set( fade );
material->AmbientColor.set( fade );
}
else
{
material->DiffuseColor.set( fade & 0xFFFFFF );
material->AmbientColor.set( fade & 0xFFFFFF );
}
break;
//.........这里部分代码省略.........