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(); } } }
// 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; }