aboutsummaryrefslogtreecommitdiff
path: root/APEX_1.4/samples_v2/SampleParticlesHelloWorld/SampleUIController.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'APEX_1.4/samples_v2/SampleParticlesHelloWorld/SampleUIController.cpp')
-rw-r--r--APEX_1.4/samples_v2/SampleParticlesHelloWorld/SampleUIController.cpp105
1 files changed, 105 insertions, 0 deletions
diff --git a/APEX_1.4/samples_v2/SampleParticlesHelloWorld/SampleUIController.cpp b/APEX_1.4/samples_v2/SampleParticlesHelloWorld/SampleUIController.cpp
new file mode 100644
index 00000000..4c074bdc
--- /dev/null
+++ b/APEX_1.4/samples_v2/SampleParticlesHelloWorld/SampleUIController.cpp
@@ -0,0 +1,105 @@
+/*
+* 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 "SampleUIController.h"
+#include "SampleSceneController.h"
+#include "CommonUIController.h"
+
+SampleUIController::SampleUIController(SampleSceneController* s, CommonUIController* c) : mScene(s), mCommonUIController(c)
+{
+}
+
+void SampleUIController::onInitialize()
+{
+ TwBar* sampleBar = TwNewBar("Sample");
+ PX_UNUSED(sampleBar);
+ TwDefine("Sample color='19 25 59' alpha=128 text=light size='200 150' iconified=false valueswidth=150 position='12 480' label='Select Asset'");
+
+ UINT assetsCount = (UINT)SampleSceneController::getAssetsCount();
+ TwEnumVal* enumAssets = new TwEnumVal[assetsCount];
+ for (UINT i = 0; i < assetsCount; i++)
+ {
+ enumAssets[i].Value = (int32_t)i;
+ enumAssets[i].Label = SampleSceneController::ASSETS[i].uiName;
+ }
+ TwType enumSceneType = TwDefineEnum("Assets", enumAssets, assetsCount);
+ delete[] enumAssets;
+ TwAddVarCB(sampleBar, "Assets", enumSceneType, SampleUIController::setCurrentScene,
+ SampleUIController::getCurrentScene, this, "group='Select Scene'");
+
+ mCommonUIController->addPhysXDebugRenderParam(PxVisualizationParameter::ePARTICLE_SYSTEM_POSITION);
+ mCommonUIController->addPhysXDebugRenderParam(PxVisualizationParameter::ePARTICLE_SYSTEM_VELOCITY);
+ mCommonUIController->addPhysXDebugRenderParam(PxVisualizationParameter::ePARTICLE_SYSTEM_COLLISION_NORMAL);
+ mCommonUIController->addPhysXDebugRenderParam(PxVisualizationParameter::ePARTICLE_SYSTEM_BOUNDS);
+ mCommonUIController->addPhysXDebugRenderParam(PxVisualizationParameter::ePARTICLE_SYSTEM_GRID);
+ mCommonUIController->addPhysXDebugRenderParam(PxVisualizationParameter::ePARTICLE_SYSTEM_BROADPHASE_BOUNDS);
+ mCommonUIController->addPhysXDebugRenderParam(PxVisualizationParameter::ePARTICLE_SYSTEM_MAX_MOTION_DISTANCE);
+
+ mCommonUIController->addApexDebugRenderParam("VISUALIZE_TURBULENCE_FS_VELOCITY", "TurbulenceFS", 1.0f, "TurbulenceFS velocities");
+ mCommonUIController->addApexDebugRenderParam("VISUALIZE_TURBULENCE_FS_BBOX", "TurbulenceFS", 1.0f, "TurbulenceFS BBOX");
+ mCommonUIController->addApexDebugRenderParam("VISUALIZE_TURBULENCE_FS_ACTOR_NAME", "TurbulenceFS", 1.0f, "TurbulenceFS name");
+ mCommonUIController->addApexDebugRenderParam("VISUALIZE_TURBULENCE_FS_VELOCITY_FIELD", "TurbulenceFS", 1.0f, "TurbulenceFS velocity field");
+ mCommonUIController->addApexDebugRenderParam("VISUALIZE_TURBULENCE_FS_STREAMLINES", "TurbulenceFS", 1.0f, "TurbulenceFS streamlines");
+ mCommonUIController->addApexDebugRenderParam("VISUALIZE_IOFX_ACTOR", "Iofx", 1.0f, "IOFX actor");
+ mCommonUIController->addApexDebugRenderParam("apexEmitterParameters.VISUALIZE_APEX_EMITTER_ACTOR", "Emitter", 1.0f, "Emitter actor");
+
+ mCommonUIController->addHintLine("Throw cube - SPACE");
+ mCommonUIController->addHintLine("Hook cube - LMB");
+}
+
+LRESULT SampleUIController::MsgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ PX_UNUSED(hWnd);
+ PX_UNUSED(wParam);
+ PX_UNUSED(lParam);
+
+ if(uMsg == WM_LBUTTONDOWN || uMsg == WM_MOUSEMOVE || uMsg == WM_LBUTTONUP)
+ {
+ short mouseX = (short)LOWORD(lParam);
+ short mouseY = (short)HIWORD(lParam);
+ SampleSceneController::TouchEvent touchEvent = uMsg == WM_LBUTTONDOWN ? SampleSceneController::ePRESS : (uMsg == WM_MOUSEMOVE ? SampleSceneController::eDRAG : SampleSceneController::eRELEASE);
+ mScene->onTouchEvent(touchEvent, mouseX / static_cast<float>(mWidth), mouseY / static_cast<float>(mHeight));
+ }
+
+ if (uMsg == WM_KEYDOWN)
+ {
+ int iKeyPressed = static_cast<int>(wParam);
+ if (iKeyPressed == VK_SPACE)
+ {
+ mScene->throwCube();
+ }
+ }
+
+ return 1;
+}
+
+void SampleUIController::BackBufferResized(ID3D11Device* pDevice, const DXGI_SURFACE_DESC* pBackBufferSurfaceDesc)
+{
+ PX_UNUSED(pDevice);
+
+ mWidth = pBackBufferSurfaceDesc->Width;
+ mHeight = pBackBufferSurfaceDesc->Height;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// UI Callbacks
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void TW_CALL SampleUIController::setCurrentScene(const void* value, void* clientData)
+{
+ SampleUIController* controller = static_cast<SampleUIController*>(clientData);
+ controller->mScene->setCurrentAsset(*static_cast<const int*>(value));
+}
+
+void TW_CALL SampleUIController::getCurrentScene(void* value, void* clientData)
+{
+ SampleUIController* controller = static_cast<SampleUIController*>(clientData);
+ *static_cast<int*>(value) = controller->mScene->getCurrentAsset();
+} \ No newline at end of file