aboutsummaryrefslogtreecommitdiff
path: root/APEX_1.4/module/emitter/src/EmitterAssetPreview.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/emitter/src/EmitterAssetPreview.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/emitter/src/EmitterAssetPreview.cpp')
-rw-r--r--APEX_1.4/module/emitter/src/EmitterAssetPreview.cpp206
1 files changed, 206 insertions, 0 deletions
diff --git a/APEX_1.4/module/emitter/src/EmitterAssetPreview.cpp b/APEX_1.4/module/emitter/src/EmitterAssetPreview.cpp
new file mode 100644
index 00000000..8bf99098
--- /dev/null
+++ b/APEX_1.4/module/emitter/src/EmitterAssetPreview.cpp
@@ -0,0 +1,206 @@
+/*
+ * 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 "EmitterPreview.h"
+#include "EmitterAssetPreview.h"
+
+#define ASSET_INFO_XPOS (-0.9f) // left position of the asset info
+#define ASSET_INFO_YPOS ( 0.9f) // top position of the asset info
+#define DEBUG_TEXT_HEIGHT (0.4f) // in screen space
+
+namespace nvidia
+{
+namespace emitter
+{
+
+bool EmitterAssetPreview::isValid() const
+{
+ return mApexRenderDebug != NULL;
+}
+
+void EmitterAssetPreview::drawEmitterPreview(void)
+{
+ WRITE_ZONE();
+#ifndef WITHOUT_DEBUG_VISUALIZE
+ if (!mApexRenderDebug)
+ {
+ return;
+ }
+
+ //asset preview init
+ if (mGroupID == 0)
+ {
+ mGroupID = RENDER_DEBUG_IFACE(mApexRenderDebug)->beginDrawGroup(PxMat44(PxIdentity));
+ mAsset->mGeom->drawPreview(mScale, mApexRenderDebug);
+ RENDER_DEBUG_IFACE(mApexRenderDebug)->endDrawGroup();
+ }
+
+ toggleDrawPreview();
+ setDrawGroupsPose();
+#endif
+}
+
+void EmitterAssetPreview::drawPreviewAssetInfo(void)
+{
+ if (!mApexRenderDebug)
+ {
+ return;
+ }
+
+ char buf[128];
+ buf[sizeof(buf) - 1] = 0;
+
+ ApexSimpleString myString;
+ ApexSimpleString floatStr;
+ uint32_t lineNum = 0;
+
+ using RENDER_DEBUG::DebugColors;
+ RENDER_DEBUG_IFACE(mApexRenderDebug)->pushRenderState();
+ // RENDER_DEBUG_IFACE(&mApexRenderDebug)->addToCurrentState(RENDER_DEBUG::DebugRenderState::ScreenSpace);
+ RENDER_DEBUG_IFACE(mApexRenderDebug)->addToCurrentState(RENDER_DEBUG::DebugRenderState::NoZbuffer);
+ RENDER_DEBUG_IFACE(mApexRenderDebug)->setCurrentTextScale(2.0f);
+ RENDER_DEBUG_IFACE(mApexRenderDebug)->setCurrentColor(RENDER_DEBUG_IFACE(mApexRenderDebug)->getDebugColor(DebugColors::Yellow));
+
+ // asset name
+ APEX_SPRINTF_S(buf, sizeof(buf) - 1, "%s %s", mAsset->getObjTypeName(), mAsset->getName());
+ drawInfoLine(lineNum++, buf);
+ lineNum++;
+
+ RENDER_DEBUG_IFACE(mApexRenderDebug)->popRenderState();
+}
+
+
+void EmitterAssetPreview::drawInfoLine(uint32_t lineNum, const char* str)
+{
+#ifdef WITHOUT_DEBUG_VISUALIZE
+ PX_UNUSED(lineNum);
+ PX_UNUSED(str);
+#else
+ using RENDER_DEBUG::DebugColors;
+ RENDER_DEBUG_IFACE(mApexRenderDebug)->setCurrentColor(RENDER_DEBUG_IFACE(mApexRenderDebug)->getDebugColor(DebugColors::Green));
+ PxVec3 textLocation = mPose.getPosition();
+ PxMat44 cameraMatrix = mPreviewScene->getCameraMatrix();
+ textLocation += cameraMatrix.column1.getXYZ() * (ASSET_INFO_YPOS - (lineNum * DEBUG_TEXT_HEIGHT));
+ RENDER_DEBUG_IFACE(mApexRenderDebug)->debugText(textLocation, str);
+#endif
+}
+
+
+void EmitterAssetPreview::destroy(void)
+{
+ ApexPreview::destroy();
+ delete this;
+}
+
+EmitterAssetPreview::~EmitterAssetPreview(void)
+{
+}
+
+void EmitterAssetPreview::setScale(float scale)
+{
+ WRITE_ZONE();
+ mScale = scale;
+ drawEmitterPreview();
+}
+
+void EmitterAssetPreview::setPose(const PxMat44& pose)
+{
+ WRITE_ZONE();
+ mPose = pose;
+ setDrawGroupsPose();
+}
+
+const PxMat44 EmitterAssetPreview::getPose() const
+{
+ READ_ZONE();
+ return mPose;
+}
+
+void EmitterAssetPreview::setDrawGroupsPose()
+{
+ if (mApexRenderDebug)
+ {
+ RENDER_DEBUG_IFACE(mApexRenderDebug)->setDrawGroupPose(mGroupID, mPose);
+ }
+}
+
+void EmitterAssetPreview::toggleDrawPreview()
+{
+ if (mApexRenderDebug)
+ {
+ //asset preview set visibility
+ RENDER_DEBUG_IFACE(mApexRenderDebug)->setDrawGroupVisible(mGroupID, true);
+ }
+}
+
+
+// from RenderDataProvider
+void EmitterAssetPreview::lockRenderResources(void)
+{
+ ApexRenderable::renderDataLock();
+}
+
+void EmitterAssetPreview::unlockRenderResources(void)
+{
+ ApexRenderable::renderDataUnLock();
+}
+
+void EmitterAssetPreview::updateRenderResources(bool /*rewriteBuffers*/, void* /*userRenderData*/)
+{
+ if (mApexRenderDebug)
+ {
+ mApexRenderDebug->updateRenderResources();
+ }
+}
+
+// from Renderable.h
+void EmitterAssetPreview::dispatchRenderResources(UserRenderer& renderer)
+{
+ if (mApexRenderDebug)
+ {
+ drawPreviewAssetInfo();
+ mApexRenderDebug->dispatchRenderResources(renderer);
+ }
+}
+
+PxBounds3 EmitterAssetPreview::getBounds(void) const
+{
+ READ_ZONE();
+ return mApexRenderDebug->getBounds();
+}
+
+void EmitterAssetPreview::release(void)
+{
+ if (mInRelease)
+ {
+ return;
+ }
+ mInRelease = true;
+ const_cast<EmitterAssetImpl*>(mAsset)->releaseEmitterPreview(*this);
+}
+
+ EmitterAssetPreview::EmitterAssetPreview(const EmitterPreviewDesc& pdesc, const EmitterAssetImpl& asset, AssetPreviewScene* previewScene, ApexSDK* myApexSDK) :
+ mApexSDK(myApexSDK),
+ mScale(pdesc.mScale),
+ mAsset(&asset),
+ mPreviewScene(previewScene),
+ mGroupID(0),
+ mApexRenderDebug(0)
+ {
+#ifndef WITHOUT_DEBUG_VISUALIZE
+ setPose(pdesc.mPose);
+ drawPreviewAssetInfo();
+ drawEmitterPreview();
+#endif
+ };
+
+}
+} // namespace nvidia::apex