aboutsummaryrefslogtreecommitdiff
path: root/APEX_1.4/module/fieldsampler/src/FieldSamplerManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'APEX_1.4/module/fieldsampler/src/FieldSamplerManager.cpp')
-rw-r--r--APEX_1.4/module/fieldsampler/src/FieldSamplerManager.cpp329
1 files changed, 0 insertions, 329 deletions
diff --git a/APEX_1.4/module/fieldsampler/src/FieldSamplerManager.cpp b/APEX_1.4/module/fieldsampler/src/FieldSamplerManager.cpp
deleted file mode 100644
index a7c83f88..00000000
--- a/APEX_1.4/module/fieldsampler/src/FieldSamplerManager.cpp
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved.
- *
- * NVIDIA CORPORATION and its licensors retain all intellectual property
- * and proprietary rights in and to this software, related documentation
- * and any modifications thereto. Any use, reproduction, disclosure or
- * distribution of this software and related documentation without an express
- * license agreement from NVIDIA CORPORATION is strictly prohibited.
- */
-
-
-#include "ApexDefs.h"
-#include "Apex.h"
-
-#include "FieldSamplerManager.h"
-
-#include "FieldSamplerQuery.h"
-#include "FieldSamplerSceneWrapper.h"
-#include "FieldSamplerWrapper.h"
-#include "FieldBoundaryWrapper.h"
-
-#include "SceneIntl.h"
-
-namespace nvidia
-{
-namespace fieldsampler
-{
-
-FieldSamplerManager::FieldSamplerManager(FieldSamplerScene* scene)
- : mScene(scene)
- , mFieldSamplerGroupsFilteringChanged(true)
-{
- mWeightedCallback = NULL;
-}
-
-
-PX_INLINE void FieldSamplerManager::addFieldSamplerToQuery(FieldSamplerWrapper* fieldSamplerWrapper, FieldSamplerQuery* query)
-{
- if (query->addFieldSampler(fieldSamplerWrapper))
- {
- fieldSamplerWrapper->mQueryRefCount += 1;
- }
-}
-
-void FieldSamplerManager::addAllFieldSamplersToQuery(FieldSamplerQuery* query) const
-{
- for (uint32_t i = 0; i < mFieldSamplerWrapperList.getSize(); ++i)
- {
- addFieldSamplerToQuery(static_cast<FieldSamplerWrapper*>(mFieldSamplerWrapperList.getResource(i)), query);
- }
-}
-
-void FieldSamplerManager::submitTasks()
-{
- if (mFieldSamplerGroupsFilteringChanged)
- {
- mFieldSamplerGroupsFilteringChanged = false;
-
- //clear queryRefCounts
- for (uint32_t i = 0; i < mFieldSamplerWrapperList.getSize(); ++i)
- {
- FieldSamplerWrapper* fieldSamplerWrapper = static_cast<FieldSamplerWrapper*>(mFieldSamplerWrapperList.getResource(i));
- fieldSamplerWrapper->mQueryRefCount = 0;
- }
-
- //rebuild all connection based on changed collision checking
- for (uint32_t i = 0; i < mFieldSamplerQueryList.getSize(); ++i)
- {
- FieldSamplerQuery* query = DYNAMIC_CAST(FieldSamplerQuery*)(mFieldSamplerQueryList.getResource(i));
- query->clearAllFieldSamplers();
- addAllFieldSamplersToQuery(query);
- }
- }
-
- for (uint32_t i = 0; i < mFieldSamplerQueryList.getSize(); ++i)
- {
- FieldSamplerQuery* query = DYNAMIC_CAST(FieldSamplerQuery*)(mFieldSamplerQueryList.getResource(i));
- query->submitTasks();
- }
-}
-
-void FieldSamplerManager::setTaskDependencies()
-{
- for (uint32_t i = 0; i < mFieldSamplerQueryList.getSize(); ++i)
- {
- FieldSamplerQuery* query = DYNAMIC_CAST(FieldSamplerQuery*)(mFieldSamplerQueryList.getResource(i));
- query->setTaskDependencies();
- }
-
- //update
- for (uint32_t i = 0; i < mFieldBoundaryWrapperList.getSize(); ++i)
- {
- FieldBoundaryWrapper* wrapper = DYNAMIC_CAST(FieldBoundaryWrapper*)(mFieldBoundaryWrapperList.getResource(i));
- wrapper->update();
- }
- for (uint32_t i = 0; i < mFieldSamplerWrapperList.getSize(); ++i)
- {
- FieldSamplerWrapper* wrapper = DYNAMIC_CAST(FieldSamplerWrapper*)(mFieldSamplerWrapperList.getResource(i));
- wrapper->update();
- }
- for (uint32_t i = 0; i < mFieldSamplerSceneWrapperList.getSize(); ++i)
- {
- FieldSamplerSceneWrapper* wrapper = DYNAMIC_CAST(FieldSamplerSceneWrapper*)(mFieldSamplerSceneWrapperList.getResource(i));
- wrapper->update();
- }
- for (uint32_t i = 0; i < mFieldSamplerQueryList.getSize(); ++i)
- {
- FieldSamplerQuery* query = DYNAMIC_CAST(FieldSamplerQuery*)(mFieldSamplerQueryList.getResource(i));
- query->update();
- }
-
- //postUpdate
- for (uint32_t i = 0; i < mFieldSamplerSceneWrapperList.getSize(); ++i)
- {
- FieldSamplerSceneWrapper* wrapper = DYNAMIC_CAST(FieldSamplerSceneWrapper*)(mFieldSamplerSceneWrapperList.getResource(i));
- wrapper->postUpdate();
- }
-}
-
-void FieldSamplerManager::fetchResults()
-{
- for (uint32_t i = 0; i < mFieldSamplerQueryList.getSize(); ++i)
- {
- FieldSamplerQuery* query = DYNAMIC_CAST(FieldSamplerQuery*)(mFieldSamplerQueryList.getResource(i));
- query->fetchResults();
- }
-}
-
-
-FieldSamplerQueryIntl* FieldSamplerManager::createFieldSamplerQuery(const FieldSamplerQueryDescIntl& desc)
-{
- FieldSamplerQuery* query = allocateFieldSamplerQuery(desc);
- if (query)
- {
- addAllFieldSamplersToQuery(query);
- }
- return query;
-}
-
-void FieldSamplerManager::registerFieldSampler(FieldSamplerIntl* fieldSampler, const FieldSamplerDescIntl& fieldSamplerDesc, FieldSamplerSceneIntl* fieldSamplerScene)
-{
- FieldSamplerSceneWrapper* fieldSamplerSceneWrapper = NULL;
- //find FieldSamplerSceneWrapper
- for (uint32_t i = 0; i < mFieldSamplerSceneWrapperList.getSize(); ++i)
- {
- FieldSamplerSceneWrapper* wrapper = DYNAMIC_CAST(FieldSamplerSceneWrapper*)(mFieldSamplerSceneWrapperList.getResource(i));
- if (wrapper->getInternalFieldSamplerScene() == fieldSamplerScene)
- {
- fieldSamplerSceneWrapper = wrapper;
- break;
- }
- }
- if (fieldSamplerSceneWrapper == NULL)
- {
- fieldSamplerSceneWrapper = allocateFieldSamplerSceneWrapper(fieldSamplerScene);
- }
- PX_ASSERT(fieldSamplerSceneWrapper != NULL);
-
- FieldSamplerWrapper* fieldSamplerWrapper = allocateFieldSamplerWrapper(fieldSampler, fieldSamplerDesc, fieldSamplerSceneWrapper);
- PX_ASSERT(fieldSamplerWrapper != NULL);
-
- // add all mFieldBoundaryWrapperList
- for (uint32_t i = 0; i < mFieldBoundaryWrapperList.getSize(); ++i)
- {
- FieldBoundaryWrapper* wrapper = DYNAMIC_CAST(FieldBoundaryWrapper*)(mFieldBoundaryWrapperList.getResource(i));
- fieldSamplerWrapper->addFieldBoundary(wrapper);
- }
-
- for (uint32_t i = 0; i < mFieldSamplerQueryList.getSize(); ++i)
- {
- FieldSamplerQuery* query = DYNAMIC_CAST(FieldSamplerQuery*)(mFieldSamplerQueryList.getResource(i));
- addFieldSamplerToQuery(fieldSamplerWrapper, query);
- }
-}
-
-void FieldSamplerManager::unregisterFieldSampler(FieldSamplerIntl* fieldSampler)
-{
- FieldSamplerWrapper* fieldSamplerWrapper = NULL;
- //find FieldSamplerWrapper
- for (uint32_t i = 0; i < mFieldSamplerWrapperList.getSize(); ++i)
- {
- FieldSamplerWrapper* wrapper = static_cast<FieldSamplerWrapper*>(mFieldSamplerWrapperList.getResource(i));
- if (wrapper->getInternalFieldSampler() == fieldSampler)
- {
- fieldSamplerWrapper = wrapper;
- break;
- }
- }
- if (fieldSamplerWrapper != NULL)
- {
- for (uint32_t i = 0; i < mFieldSamplerQueryList.getSize(); ++i)
- {
- FieldSamplerQuery* query = DYNAMIC_CAST(FieldSamplerQuery*)(mFieldSamplerQueryList.getResource(i));
- query->removeFieldSampler(fieldSamplerWrapper);
- }
- fieldSamplerWrapper->release();
- }
-}
-
-void FieldSamplerManager::registerFieldBoundary(FieldBoundaryIntl* fieldBoundary, const FieldBoundaryDescIntl& fieldBoundaryDesc)
-{
- FieldBoundaryWrapper* fieldBoundaryWrapper = PX_NEW(FieldBoundaryWrapper)(mFieldBoundaryWrapperList, this, fieldBoundary, fieldBoundaryDesc);
- if (fieldBoundaryWrapper)
- {
- for (uint32_t i = 0; i < mFieldSamplerWrapperList.getSize(); ++i)
- {
- static_cast<FieldSamplerWrapper*>(mFieldSamplerWrapperList.getResource(i))->addFieldBoundary(fieldBoundaryWrapper);
- }
- }
-}
-void FieldSamplerManager::unregisterFieldBoundary(FieldBoundaryIntl* fieldBoundary)
-{
- FieldBoundaryWrapper* fieldBoundaryWrapper = 0;
- for (uint32_t i = 0; i < mFieldBoundaryWrapperList.getSize(); ++i)
- {
- FieldBoundaryWrapper* wrapper = static_cast<FieldBoundaryWrapper*>(mFieldBoundaryWrapperList.getResource(i));
- if (wrapper->getInternalFieldBoundary() == fieldBoundary)
- {
- fieldBoundaryWrapper = wrapper;
- break;
- }
- }
- if (fieldBoundaryWrapper != 0)
- {
- for (uint32_t i = 0; i < mFieldSamplerWrapperList.getSize(); ++i)
- {
- static_cast<FieldSamplerWrapper*>(mFieldSamplerWrapperList.getResource(i))->removeFieldBoundary(fieldBoundaryWrapper);
- }
- fieldBoundaryWrapper->release();
- }
-}
-
-void FieldSamplerManager::registerUnhandledParticleSystem(physx::PxActor* actor)
-{
- if (!isUnhandledParticleSystem(actor))
- {
- mUnhandledParticleSystems.pushBack(actor);
- }
-}
-
-void FieldSamplerManager::unregisterUnhandledParticleSystem(physx::PxActor* actor)
-{
- mUnhandledParticleSystems.findAndReplaceWithLast(actor);
-}
-
-bool FieldSamplerManager::isUnhandledParticleSystem(physx::PxActor* actor)
-{
- for (uint32_t i = 0; i < mUnhandledParticleSystems.size(); i++)
- if (mUnhandledParticleSystems[i] == actor)
- {
- return true;
- }
- return false;
-}
-
-bool FieldSamplerManager::getFieldSamplerGroupsFiltering(const PxFilterData &o1,const PxFilterData &o2,float &weight) const
-{
- bool ret = true;
-
- weight = 1.0f;
- if ( mScene )
- {
- if ( mWeightedCallback )
- {
- ret = mWeightedCallback->fieldSamplerWeightedCollisionFilter(o1,o2,weight);
- }
- else
- {
- physx::PxScene *scene = mScene->getModulePhysXScene();
- scene->lockRead(__FILE__,__LINE__);
- physx::PxSimulationFilterShader shader = scene->getFilterShader();
- scene->unlockRead();
- if ( shader )
- {
- physx::PxFilterObjectAttributes atr0 = 0;
- physx::PxFilterObjectAttributes atr1 = 0;
- physx::PxPairFlags pairFlags;
- physx::PxFilterFlags result = (*shader)(atr0,o1,atr1,o2,pairFlags,NULL,0);
- if ( result & (physx::PxFilterFlag::eKILL | physx::PxFilterFlag::eSUPPRESS) )
- {
- ret = false;
- }
- }
- }
- }
- return ret;
-}
-
-
-
-
-/******************************** CPU Version ********************************/
-
-FieldSamplerQuery* FieldSamplerManagerCPU::allocateFieldSamplerQuery(const FieldSamplerQueryDescIntl& desc)
-{
- return PX_NEW(FieldSamplerQueryCPU)(desc, mFieldSamplerQueryList, this);
-}
-FieldSamplerSceneWrapper* FieldSamplerManagerCPU::allocateFieldSamplerSceneWrapper(FieldSamplerSceneIntl* fieldSamplerScene)
-{
- return PX_NEW(FieldSamplerSceneWrapperCPU)(mFieldSamplerSceneWrapperList, this, fieldSamplerScene);
-}
-FieldSamplerWrapper* FieldSamplerManagerCPU::allocateFieldSamplerWrapper(FieldSamplerIntl* fieldSampler, const FieldSamplerDescIntl& fieldSamplerDesc, FieldSamplerSceneWrapper* fieldSamplerSceneWrapper)
-{
- return PX_NEW(FieldSamplerWrapperCPU)(mFieldSamplerWrapperList, this, fieldSampler, fieldSamplerDesc, fieldSamplerSceneWrapper);
-}
-
-/******************************** GPU Version ********************************/
-
-#if APEX_CUDA_SUPPORT
-
-FieldSamplerQuery* FieldSamplerManagerGPU::allocateFieldSamplerQuery(const FieldSamplerQueryDescIntl& desc)
-{
- return PX_NEW(FieldSamplerQueryGPU)(desc, mFieldSamplerQueryList, this);
-}
-FieldSamplerSceneWrapper* FieldSamplerManagerGPU::allocateFieldSamplerSceneWrapper(FieldSamplerSceneIntl* fieldSamplerScene)
-{
- return PX_NEW(FieldSamplerSceneWrapperGPU)(mFieldSamplerSceneWrapperList, this, fieldSamplerScene);
-}
-FieldSamplerWrapper* FieldSamplerManagerGPU::allocateFieldSamplerWrapper(FieldSamplerIntl* fieldSampler, const FieldSamplerDescIntl& fieldSamplerDesc, FieldSamplerSceneWrapper* fieldSamplerSceneWrapper)
-{
- return PX_NEW(FieldSamplerWrapperGPU)(mFieldSamplerWrapperList, this, fieldSampler, fieldSamplerDesc, fieldSamplerSceneWrapper);
-}
-
-#endif // APEX_CUDA_SUPPORT
-
-}
-} // end namespace nvidia::apex
-
-