aboutsummaryrefslogtreecommitdiff
path: root/APEX_1.4/module/basicios/src/BasicIosAssetImpl.cpp
diff options
context:
space:
mode:
authorgit perforce import user <a@b>2016-10-25 12:29:14 -0600
committerSheikh Dawood Abdul Ajees <Sheikh Dawood Abdul Ajees>2016-10-25 18:56:37 -0500
commit3dfe2108cfab31ba3ee5527e217d0d8e99a51162 (patch)
treefa6485c169e50d7415a651bf838f5bcd0fd3bfbd /APEX_1.4/module/basicios/src/BasicIosAssetImpl.cpp
downloadphysx-3.4-3dfe2108cfab31ba3ee5527e217d0d8e99a51162.tar.xz
physx-3.4-3dfe2108cfab31ba3ee5527e217d0d8e99a51162.zip
Initial commit:
PhysX 3.4.0 Update @ 21294896 APEX 1.4.0 Update @ 21275617 [CL 21300167]
Diffstat (limited to 'APEX_1.4/module/basicios/src/BasicIosAssetImpl.cpp')
-rw-r--r--APEX_1.4/module/basicios/src/BasicIosAssetImpl.cpp196
1 files changed, 196 insertions, 0 deletions
diff --git a/APEX_1.4/module/basicios/src/BasicIosAssetImpl.cpp b/APEX_1.4/module/basicios/src/BasicIosAssetImpl.cpp
new file mode 100644
index 00000000..5fbf7296
--- /dev/null
+++ b/APEX_1.4/module/basicios/src/BasicIosAssetImpl.cpp
@@ -0,0 +1,196 @@
+/*
+ * 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 "Apex.h"
+
+#include "BasicIosAssetImpl.h"
+#include "BasicIosActorImpl.h"
+//#include "ApexSharedSerialization.h"
+#include "ModuleBasicIosImpl.h"
+#include "ApexUsingNamespace.h"
+
+#if APEX_CUDA_SUPPORT
+#include "BasicIosActorGPU.h"
+#endif
+
+namespace nvidia
+{
+namespace basicios
+{
+
+void BasicIosAssetImpl::processParams()
+{
+ NvParameterized::Handle handle(mParams);
+ if (NvParameterized::ERROR_NONE != mParams->getParameterHandle("particleMass.type", handle))
+ {
+ PX_ALWAYS_ASSERT();
+ return;
+ }
+
+ const char* type = 0;
+ if (NvParameterized::ERROR_NONE != handle.getParamEnum(type))
+ {
+ PX_ALWAYS_ASSERT();
+ return;
+ }
+
+ mMassDistribType = 0 == nvidia::strcmp("uniform", type) ? UNIFORM : NORMAL;
+}
+
+BasicIosAssetImpl::BasicIosAssetImpl(ModuleBasicIosImpl* module, ResourceList& list, NvParameterized::Interface* params, const char* name) :
+ mModule(module),
+ mName(name),
+ mParams((BasicIOSAssetParam*)params)
+{
+ list.add(*this);
+ processParams();
+}
+
+BasicIosAssetImpl::BasicIosAssetImpl(ModuleBasicIosImpl* module, ResourceList& list, const char* name):
+ mModule(module),
+ mName(name),
+ mParams(0)
+{
+ NvParameterized::Traits* traits = GetInternalApexSDK()->getParameterizedTraits();
+ mParams = (BasicIOSAssetParam*)traits->createNvParameterized(BasicIOSAssetParam::staticClassName());
+
+ list.add(*this);
+
+ processParams();
+}
+
+float BasicIosAssetImpl::getParticleMass() const
+{
+ READ_ZONE();
+ float m = 0.0f;
+ switch (mMassDistribType)
+ {
+ case UNIFORM:
+ m = mParams->particleMass.center + mParams->particleMass.spread * mSRand.getNext();
+ break;
+ case NORMAL:
+ m = mNormRand.getScaled(mParams->particleMass.center, mParams->particleMass.spread);
+ break;
+ default:
+ PX_ALWAYS_ASSERT();
+ }
+
+ return m <= 0 ? mParams->particleMass.center : m; // Clamp
+}
+
+void BasicIosAssetImpl::release()
+{
+ mModule->mSdk->releaseAsset(*this);
+}
+
+void BasicIosAssetImpl::destroy()
+{
+ if (mParams)
+ {
+ mParams->destroy();
+ mParams = NULL;
+ }
+
+ delete this;
+}
+
+BasicIosAssetImpl::~BasicIosAssetImpl()
+{
+}
+
+BasicIosActorImpl* BasicIosAssetImpl::getIosActorInScene(Scene& scene, bool mesh) const
+{
+ BasicIosScene* iosScene = mModule->getBasicIosScene(scene);
+ if (iosScene != 0)
+ {
+ for (uint32_t i = 0 ; i < mIosActorList.getSize() ; i++)
+ {
+ BasicIosActorImpl* iosActor = DYNAMIC_CAST(BasicIosActorImpl*)(mIosActorList.getResource(i));
+ if (iosActor->mBasicIosScene == iosScene && iosActor->mIsMesh == mesh)
+ {
+ return iosActor;
+ }
+ }
+ }
+ return NULL;
+}
+
+Actor* BasicIosAssetImpl::createIosActor(Scene& scene, nvidia::apex::IofxAsset* iofxAsset)
+{
+ BasicIosActorImpl* iosActor = getIosActorInScene(scene, iofxAsset->getMeshAssetCount() > 0);
+ if (iosActor == 0)
+ {
+ BasicIosScene* iosScene = mModule->getBasicIosScene(scene);
+ if (iosScene != 0)
+ {
+ iosActor = iosScene->createIosActor(mIosActorList, *this, *iofxAsset);
+ iosActor->mIsMesh = iofxAsset->getMeshAssetCount() > 0;
+ }
+ }
+ PX_ASSERT(iosActor);
+ return iosActor;
+}
+
+void BasicIosAssetImpl::releaseIosActor(Actor& actor)
+{
+ BasicIosActorImpl* iosActor = DYNAMIC_CAST(BasicIosActorImpl*)(&actor);
+ iosActor->destroy();
+}
+
+uint32_t BasicIosAssetImpl::forceLoadAssets()
+{
+ return 0;
+}
+
+bool BasicIosAssetImpl::getSupportsDensity() const
+{
+ BasicIOSAssetParam* gridParams = (BasicIOSAssetParam*)(getAssetNvParameterized());
+ return (gridParams->GridDensity.Enabled);
+}
+
+#ifndef WITHOUT_APEX_AUTHORING
+/******************* BasicIosAssetAuthoringImpl *******************/
+BasicIosAssetAuthoringImpl::BasicIosAssetAuthoringImpl(ModuleBasicIosImpl* module, ResourceList& list):
+ BasicIosAssetImpl(module, list, "Authoring")
+{
+}
+BasicIosAssetAuthoringImpl::BasicIosAssetAuthoringImpl(ModuleBasicIosImpl* module, ResourceList& list, const char* name):
+ BasicIosAssetImpl(module, list, name)
+{
+}
+
+BasicIosAssetAuthoringImpl::BasicIosAssetAuthoringImpl(ModuleBasicIosImpl* module, ResourceList& list, NvParameterized::Interface* params, const char* name) :
+ BasicIosAssetImpl(module, list, params, name)
+{
+}
+
+void BasicIosAssetAuthoringImpl::release()
+{
+ delete this;
+}
+
+void BasicIosAssetAuthoringImpl::setCollisionGroupName(const char* collisionGroupName)
+{
+ NvParameterized::Handle h(*mParams, "collisionGroupName");
+ h.setParamString(collisionGroupName);
+}
+
+void BasicIosAssetAuthoringImpl::setCollisionGroupMaskName(const char* collisionGroupMaskName)
+{
+ NvParameterized::Handle h(*mParams, "collisionGroupMaskName");
+ h.setParamString(collisionGroupMaskName);
+}
+
+
+#endif
+
+}
+} // namespace nvidia