本文整理汇总了C++中WorldModel::SetActivateParent方法的典型用法代码示例。如果您正苦于以下问题:C++ WorldModel::SetActivateParent方法的具体用法?C++ WorldModel::SetActivateParent怎么用?C++ WorldModel::SetActivateParent使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorldModel
的用法示例。
在下文中一共展示了WorldModel::SetActivateParent方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: AttachObject
HOBJECT WorldModel::AttachObject( HOBJECT hObj )
{
if( !hObj ) return LTNULL;
// Make sure the object is detached first.
DetachObject( hObj );
LTVector vPos, vParentPos;
LTRotation rRot, rParentRot;
// Get our position and rotation
g_pLTServer->GetObjectPos( m_hObject, &vParentPos );
g_pLTServer->GetObjectRotation( m_hObject, &rParentRot );
LTMatrix mRot;
rParentRot.ConvertToMatrix( mRot );
// Get the attachment object pos / rot
g_pLTServer->GetObjectPos( hObj, &vPos );
g_pLTServer->GetObjectRotation( hObj, &rRot );
// Calculate the offsets...
LTVector vPosOffset( ~mRot * (vPos - vParentPos) );
LTRotation rRotOffset = rRot * ~rParentRot;
// Attach it...
HATTACHMENT hAttachment;
LTRESULT LTRes = g_pLTServer->CreateAttachment( m_hObject, hObj, LTNULL,
&vPosOffset, &rRotOffset, &hAttachment );
if( LTRes != LT_OK )
return NULL;
LTObjRefNotifier ref( *this );
ref = hObj;
m_AttachmentList.push_back( ref );
// If the object is a WorldModel set it's activate parent...
if( IsWorldModel( hObj ))
{
WorldModel *pWorldModel = dynamic_cast<WorldModel*>(g_pLTServer->HandleToObject( hObj ));
if( pWorldModel )
{
// Send any activate messages the WorldModel recevies to us...
pWorldModel->SetActivateParent( m_hObject );
// Add the WorldModel to our list of objects to inherit our ActivateType...
m_ActivateTypeHandler.InheritObject( hObj );
}
}
return hObj;
}
示例2: DetachObject
void WorldModel::DetachObject( HOBJECT hObj )
{
if( !hObj ) return;
// Remove the object from our list of attachments. Should only be in here once.
for( ObjRefNotifierList::iterator iter = m_AttachmentList.begin( ); iter != m_AttachmentList.end( ); iter++ )
{
if( hObj == *iter )
{
// Remove it from our list.
m_AttachmentList.erase( iter );
break;
}
}
HATTACHMENT hAttachment = NULL;
if( g_pLTServer->FindAttachment( m_hObject, hObj, &hAttachment ) != LT_OK )
return;
g_pLTServer->RemoveAttachment( hAttachment );
// If the object is a WorldModel set it's activate parent...
if( IsWorldModel( hObj ))
{
WorldModel *pWorldModel = dynamic_cast<WorldModel*>(g_pLTServer->HandleToObject( hObj ));
if( pWorldModel )
{
// No longer send any activate messages the WorldModel recevies to us...
pWorldModel->SetActivateParent( LTNULL );
// Remove the WorldModel from our list of object to inherit our ActivateType...
m_ActivateTypeHandler.DisownObject( hObj );
}
}
// Don't just let the object float
uint32 dwFlags;
g_pCommonLT->GetObjectFlags( hObj, OFT_Flags, dwFlags );
if( (IsKindOf(hObj, "Prop" )) && (dwFlags & FLAG_GRAVITY) )
{
LTVector vVel;
g_pPhysicsLT->GetVelocity( hObj, &vVel );
if( vVel.y > -0.1f )
{
vVel.y -= 10.0f;
g_pPhysicsLT->SetVelocity( hObj, &vVel );
}
}
}