void vHavokColliderInfo_t::SetInfo(void *pUserData)
{
  void *pObject = vHavokUserDataPointerPair_t::ExtractTypeAndPointer((void *)pUserData, m_eType);

  switch (m_eType)
  {
  case V_USERDATA_OBJECT:  
    {
      IVObjectComponent* c = (IVObjectComponent*)pObject; 
      if (c->IsOfType( vHavokRigidBody::GetClassTypeId() ))
      {
        m_pRigidBody = (vHavokRigidBody *)pObject;
      }
      else if (c->IsOfType( vHavokCharacterController::GetClassTypeId() ))
      {
        m_pCharacter =  (vHavokCharacterController *)pObject;
      }
	  else if (c->IsOfType( vHavokRagdoll::GetClassTypeId() ))
      {
        m_pRagdoll =  (vHavokRagdoll *)pObject;
      }
    }
    break;
  case V_USERDATA_STATIC:  m_pStaticMesh = (vHavokStaticMesh *)pObject; 
    break;
#ifdef SUPPORTS_TERRAIN
  case V_USERDATA_TERRAIN: m_pTerrainSector = (vHavokTerrain *)pObject;
    break;
#endif
  default:
    break;
  }
}
void VPathRenderingMetaData::OnVariableValueChanged(VisVariable_cl* pVar, const char* value)
{
  IVObjectComponent::OnVariableValueChanged(pVar, value);

  // path renderers need to be re-initialized when variables are changed
  if (GetOwner() != NULL)
  {
    for (int i = 0; i < GetOwner()->Components().Count(); i++)
    {
      IVObjectComponent* pComp = GetOwner()->Components().GetAt(i);
      if (pComp != NULL && pComp->IsOfType(V_RUNTIME_CLASS(VPathRendererBase)))
        ((VPathRendererBase*)pComp)->OnDataChanged();
    }
  }
}
Beispiel #3
0
// Returns true if we are the last component who reads from accumulation buffer
bool VPostProcessFXAA::IsLastComponent()
{
  if ( !GetOwner() )
    return false;

  const int count = GetOwner()->Components().Count();
  for ( int i = 0; i < count; ++i )
  {
    IVObjectComponent* comp = GetOwner()->Components().GetAt(i);
    if ( !comp || comp == this ) 
      continue;
    if ( comp->IsOfType(V_RUNTIME_CLASS(VPostProcessingBaseComponent)) )
    {
      VPostProcessingBaseComponent* ppComp = static_cast<VPostProcessingBaseComponent*>(comp);
      if ( (ppComp->GetBufferUsageFlags()&SAMPLES_ACCUMULATION_BUFFER)!=0 && ppComp->GetPriority() >= GetPriority() )
      {
        // we found a PP that is after us (bigger priority number) and reads from accum buffer, so we're not the last one
        return false;
      }
    }
  }
  return true;
}