aboutsummaryrefslogtreecommitdiff
path: root/NvCloth/samples/SampleBase/scene/SceneController.h
diff options
context:
space:
mode:
authormtamis <[email protected]>2017-02-28 18:24:59 +0100
committermtamis <[email protected]>2017-02-28 18:24:59 +0100
commit5581909a4d19db97304449f66404ff99a0429d3f (patch)
treea90f7eb85c095a8aba45cf5e909c82c1cdbed77d /NvCloth/samples/SampleBase/scene/SceneController.h
parentFix cmake visual studio project generation (locate_gw_root.bat) (diff)
downloadnvcloth-5581909a4d19db97304449f66404ff99a0429d3f.tar.xz
nvcloth-5581909a4d19db97304449f66404ff99a0429d3f.zip
Add visual samples.
Diffstat (limited to 'NvCloth/samples/SampleBase/scene/SceneController.h')
-rw-r--r--NvCloth/samples/SampleBase/scene/SceneController.h128
1 files changed, 128 insertions, 0 deletions
diff --git a/NvCloth/samples/SampleBase/scene/SceneController.h b/NvCloth/samples/SampleBase/scene/SceneController.h
new file mode 100644
index 0000000..d527597
--- /dev/null
+++ b/NvCloth/samples/SampleBase/scene/SceneController.h
@@ -0,0 +1,128 @@
+/*
+* Copyright (c) 2008-2017, 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.
+*/
+
+#ifndef SCENE_CONTROLLER_H
+#define SCENE_CONTROLLER_H
+
+
+#include "SampleManager.h"
+#include <map>
+#include <vector>
+
+#include <NvCloth/Factory.h>
+#include "JobManager.h"
+
+#include "ClothRenderMesh.h"
+#include <cuda.h>
+#include "CallbackImplementations.h"
+
+namespace nv
+{
+ namespace cloth
+ {
+ class Factory;
+ class Solver;
+ class Cloth;
+ class Fabric;
+ class DxContextManagerCallback;
+ }
+}
+
+class RenderMaterial;
+class Renderable;
+
+struct ClothActor
+{
+ Renderable* mClothRenderable;
+ ClothRenderMesh* mClothRenderMesh;
+ nv::cloth::Cloth* mCloth;
+};
+
+class Scene;
+
+class SceneController : public ISampleController
+{
+public:
+
+ SceneController();
+ virtual ~SceneController();
+
+ virtual LRESULT MsgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+ virtual void Animate(double dt);
+ void drawUI();
+ void drawStatsUI();
+
+ virtual void onInitialize();
+ virtual void onSampleStart();
+ virtual void onSampleStop();
+ virtual void onTerminate();
+
+ JobManager* getJobManager() { return &sJobManager; }
+ nv::cloth::Factory* getFactory() { return mFactories[mActivePlatform]; }
+
+ static JobManager sJobManager;
+
+ //////// used controllers ////////
+
+ Renderer& getRenderer() const
+ {
+ return getManager()->getRenderer();
+ }
+
+ CommonUIController& getCommonUIController() const
+ {
+ return getManager()->getCommonUIController();
+ }
+
+ RenderMaterial* getDefaultMaterial()
+ {
+ return mPhysXPrimitiveRenderMaterial;
+ }
+
+ RenderMaterial* getDefaultPlaneMaterial()
+ {
+ return mPhysXPlaneRenderMaterial;
+ }
+
+
+private:
+ SceneController& operator= (SceneController&); // not implemented
+
+ void changeScene(int index);
+
+ //////// internal data ////////
+
+ RenderMaterial* mPhysXPrimitiveRenderMaterial;
+ RenderMaterial* mPhysXPlaneRenderMaterial;
+
+ Renderable* mPlane;
+ std::vector<Renderable*> mBoxes;
+
+ float mTimeScale;
+ float mStartDelay;
+
+ // NvCloth
+ CpuDispatcher mDispatcher;
+ physx::PxTaskManager* mTaskManager;
+
+ nv::cloth::Factory* mFactories[3];
+ int mActivePlatform;
+ bool mCUDAInitialized;
+ CUcontext mCUDAContext;
+ bool mDXInitialized;
+ ID3D11Device* mDXDevice;
+ ID3D11DeviceContext* mDXDeviceContext;
+ nv::cloth::DxContextManagerCallback* mGraphicsContextManager;
+
+ Scene* mActiveScene;
+ int mActiveSceneIndex;
+};
+
+#endif \ No newline at end of file