当前位置: 首页>>代码示例>>C++>>正文


C++ EHANDLE::Teleport方法代码示例

本文整理汇总了C++中EHANDLE::Teleport方法的典型用法代码示例。如果您正苦于以下问题:C++ EHANDLE::Teleport方法的具体用法?C++ EHANDLE::Teleport怎么用?C++ EHANDLE::Teleport使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在EHANDLE的用法示例。


在下文中一共展示了EHANDLE::Teleport方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: Think

void CLogicMirrorMovement::Think()
{
    // Attempt to get the player's handle because it didn't exist at Activate time
    if ( !m_hMirrorTarget.Get() )
    {
        // If we will never find a target, we don't have a use... shutdown
        if ( m_strMirrorTarget == NULL_STRING )
            SetNextThink ( NULL );

        //BUGBUG: If m_strSetMirrorTarget doesn't exist in ent list, we get per-think searches with no results ever...
        SetMirrorTarget ( STRING(m_strMirrorTarget) );
    }

    // Make sure all entities are valid
    if ( m_hMirrorTarget.Get() && m_hMovementTarget.Get() && m_hRemoteTarget.Get() && m_hMirrorRelative.Get() )
    {
        // Get our two portal's world transforms transforms
        VMatrix matPortal1ToWorldInv, matPortal2ToWorld;
        MatrixInverseGeneral( m_hMirrorRelative->EntityToWorldTransform(), matPortal1ToWorldInv );
        matPortal2ToWorld = m_hRemoteTarget->EntityToWorldTransform();

        VMatrix matTransformToRemotePortal = matPortal1ToWorldInv * matPortal2ToWorld;

        // Get our scene camera's current orientation
        Vector ptCameraPosition, vCameraLook, vCameraRight, vCameraUp;
        ptCameraPosition		= m_hMirrorTarget->EyePosition();
        m_hMirrorTarget->GetVectors ( &vCameraLook, &vCameraRight, &vCameraUp );

        // map this position and orientation to the remote portal, mirrored (invert the result)
        Vector ptNewPosition, vNewLook;
        ptNewPosition	= matPortal1ToWorldInv * ptCameraPosition;
        ptNewPosition	= matPortal2ToWorld*( Vector( -ptNewPosition.x, -ptNewPosition.y, ptNewPosition.z ) );

        vNewLook		= matPortal1ToWorldInv.ApplyRotation( vCameraLook );
        vNewLook		= matPortal2ToWorld.ApplyRotation( Vector( -vNewLook.x, -vNewLook.y, vNewLook.z) );

        // Set the point camera to the new location/orientation
        QAngle qNewAngles;
        VectorAngles( vNewLook, qNewAngles );
        m_hMovementTarget->Teleport( &ptNewPosition, &qNewAngles, NULL );
    }

    SetNextThink( gpGlobals->curtime + TICK_INTERVAL );
}
开发者ID:BenLubar,项目名称:SwarmDirector2,代码行数:44,代码来源:logic_mirror_movement.cpp


注:本文中的EHANDLE::Teleport方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。