diff options
| author | mtamis <[email protected]> | 2017-02-28 18:24:59 +0100 |
|---|---|---|
| committer | mtamis <[email protected]> | 2017-02-28 18:24:59 +0100 |
| commit | 5581909a4d19db97304449f66404ff99a0429d3f (patch) | |
| tree | a90f7eb85c095a8aba45cf5e909c82c1cdbed77d /NvCloth/samples/SampleBase/scene/SceneController.h | |
| parent | Fix cmake visual studio project generation (locate_gw_root.bat) (diff) | |
| download | nvcloth-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.h | 128 |
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 |