void VShadowMapGenSpotDir::GetBoundingBoxVS(hkvAlignedBBox &boundingBox) const
{
  VASSERT(m_eProjectionType==SHADOW_PROJECTION_ORTHOGRAPHIC && m_iNumParts>0);

  if (!boundingBox.isValid())
    return;

  // transform shadow-caster bounding box with view-matrix of first cascade, since actual cascade is indifferent here 
  boundingBox.transformFromOrigin(m_pParts[0].GetCamera()->GetWorldToCameraTransformation());
}
Esempio n. 2
0
  static void LookAtBox(const hkvAlignedBBox &bbox)
  {
    if (!bbox.isValid())
      return;

    VisBaseEntity_cl* pCenterEntity = Vision::Game.CreateEntity("VisBaseEntity_cl", bbox.getCenter());

    const float fBBRadius = bbox.getBoundingSphere().m_fRadius;

    float fFovX, fFovY;
    Vision::Contexts.GetMainRenderContext()->GetFinalFOV(fFovX, fFovY);
    
    const float fDist = fBBRadius / hkvMath::tanDeg(hkvMath::Min(fFovX, fFovY) * 0.5f);

    VOrbitCamera* pOrbitCamera = new VOrbitCamera();
    pOrbitCamera->MinimalDistance = fDist * 0.01f;
    pOrbitCamera->MaximalDistance = fDist * 100.0f;
    pOrbitCamera->CameraDistance = fDist;

    pCenterEntity->AddComponent(pOrbitCamera);
  }