aboutsummaryrefslogtreecommitdiff
path: root/APEX_1.4/module/pxparticleios/src/ParticleIosAssetImpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'APEX_1.4/module/pxparticleios/src/ParticleIosAssetImpl.cpp')
-rw-r--r--APEX_1.4/module/pxparticleios/src/ParticleIosAssetImpl.cpp152
1 files changed, 152 insertions, 0 deletions
diff --git a/APEX_1.4/module/pxparticleios/src/ParticleIosAssetImpl.cpp b/APEX_1.4/module/pxparticleios/src/ParticleIosAssetImpl.cpp
new file mode 100644
index 00000000..b7b072f1
--- /dev/null
+++ b/APEX_1.4/module/pxparticleios/src/ParticleIosAssetImpl.cpp
@@ -0,0 +1,152 @@
+/*
+ * 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 "ParticleIosAssetImpl.h"
+#include "ParticleIosActorImpl.h"
+#include "ModuleParticleIosImpl.h"
+#include "ApexUsingNamespace.h"
+#include "FluidParticleSystemParams.h"
+
+#if APEX_CUDA_SUPPORT
+#include "ParticleIosActorGPU.h"
+#endif
+
+namespace nvidia
+{
+namespace pxparticleios
+{
+
+ParticleIosAssetImpl::ParticleIosAssetImpl(ModuleParticleIosImpl* module, ResourceList& list, NvParameterized::Interface* params, const char* name) :
+ mModule(module),
+ mName(name),
+ mParams((ParticleIosAssetParam*)params)
+{
+ list.add(*this);
+}
+
+ParticleIosAssetImpl::ParticleIosAssetImpl(ModuleParticleIosImpl* module, ResourceList& list, const char* name):
+ mModule(module),
+ mName(name),
+ mParams(0)
+{
+ NvParameterized::Traits* traits = GetInternalApexSDK()->getParameterizedTraits();
+ mParams = (ParticleIosAssetParam*)traits->createNvParameterized(ParticleIosAssetParam::staticClassName());
+
+ list.add(*this);
+}
+
+void ParticleIosAssetImpl::release()
+{
+ mModule->mSdk->releaseAsset(*this);
+}
+
+void ParticleIosAssetImpl::destroy()
+{
+ if (mParams)
+ {
+ mParams->destroy();
+ mParams = NULL;
+ }
+
+ delete this;
+}
+
+ParticleIosAssetImpl::~ParticleIosAssetImpl()
+{
+}
+
+ParticleIosActorImpl* ParticleIosAssetImpl::getIosActorInScene(Scene& scene, bool mesh) const
+{
+ ParticleIosScene* iosScene = mModule->getParticleIosScene(scene);
+ if (iosScene != 0)
+ {
+ for (uint32_t i = 0 ; i < mIosActorList.getSize() ; i++)
+ {
+ ParticleIosActorImpl* iosActor = DYNAMIC_CAST(ParticleIosActorImpl*)(mIosActorList.getResource(i));
+ if (iosActor->mParticleIosScene == iosScene && iosActor->mIsMesh == mesh)
+ {
+ return iosActor;
+ }
+ }
+ }
+ return NULL;
+}
+
+Actor* ParticleIosAssetImpl::createIosActor(Scene& scene, IofxAsset* iofxAsset)
+{
+ WRITE_ZONE();
+ ParticleIosActorImpl* iosActor = getIosActorInScene(scene, iofxAsset->getMeshAssetCount() > 0);
+ if (iosActor == 0)
+ {
+ ParticleIosScene* iosScene = mModule->getParticleIosScene(scene);
+ if (iosScene != 0)
+ {
+ iosActor = iosScene->createIosActor(mIosActorList, *this, *iofxAsset);
+ iosActor->mIsMesh = iofxAsset->getMeshAssetCount() > 0;
+ }
+ }
+ PX_ASSERT(iosActor);
+ return iosActor;
+}
+
+void ParticleIosAssetImpl::releaseIosActor(Actor& actor)
+{
+ WRITE_ZONE();
+ ParticleIosActorImpl* iosActor = DYNAMIC_CAST(ParticleIosActorImpl*)(&actor);
+ iosActor->destroy();
+}
+
+uint32_t ParticleIosAssetImpl::forceLoadAssets()
+{
+ WRITE_ZONE();
+ return 0;
+}
+
+
+#ifndef WITHOUT_APEX_AUTHORING
+/******************* ParticleIosAssetAuthoringImpl *******************/
+ParticleIosAssetAuthoringImpl::ParticleIosAssetAuthoringImpl(ModuleParticleIosImpl* module, ResourceList& list):
+ ParticleIosAssetImpl(module, list, "Authoring")
+{
+}
+ParticleIosAssetAuthoringImpl::ParticleIosAssetAuthoringImpl(ModuleParticleIosImpl* module, ResourceList& list, const char* name):
+ ParticleIosAssetImpl(module, list, name)
+{
+}
+
+ParticleIosAssetAuthoringImpl::ParticleIosAssetAuthoringImpl(ModuleParticleIosImpl* module, ResourceList& list, NvParameterized::Interface* params, const char* name) :
+ ParticleIosAssetImpl(module, list, params, name)
+{
+}
+
+void ParticleIosAssetAuthoringImpl::release()
+{
+ delete this;
+}
+
+void ParticleIosAssetAuthoringImpl::setCollisionGroupName(const char* collisionGroupName)
+{
+ NvParameterized::Handle h(*mParams, "collisionGroupName");
+ h.setParamString(collisionGroupName);
+}
+
+void ParticleIosAssetAuthoringImpl::setCollisionGroupMaskName(const char* collisionGroupMaskName)
+{
+ NvParameterized::Handle h(*mParams, "collisionGroupMaskName");
+ h.setParamString(collisionGroupMaskName);
+}
+#endif // !WITHOUT_APEX_AUTHORING
+
+}
+} // namespace nvidia
+
+