Init
This commit is contained in:
152
kaplademo/source/kaplaDemo/SampleViewerScene.h
Normal file
152
kaplademo/source/kaplaDemo/SampleViewerScene.h
Normal file
@ -0,0 +1,152 @@
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions
|
||||
// are met:
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above copyright
|
||||
// notice, this list of conditions and the following disclaimer in the
|
||||
// documentation and/or other materials provided with the distribution.
|
||||
// * Neither the name of NVIDIA CORPORATION nor the names of its
|
||||
// contributors may be used to endorse or promote products derived
|
||||
// from this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
|
||||
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Copyright (c) 2018 NVIDIA Corporation. All rights reserved.
|
||||
|
||||
#ifndef SAMPLE_VIEWER_SCENE_H
|
||||
#define SAMPLE_VIEWER_SCENE_H
|
||||
|
||||
#include "foundation/PxVec3.h"
|
||||
#include "foundation/PxTransform.h"
|
||||
#include "PxPhysics.h"
|
||||
#include "PxCooking.h"
|
||||
|
||||
using namespace physx;
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
class OptixRenderer;
|
||||
|
||||
#ifdef USE_OPTIX
|
||||
#include "OptixRenderer.h"
|
||||
#endif
|
||||
|
||||
class Shader;
|
||||
class ShaderShadow;
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
class SampleViewerScene
|
||||
{
|
||||
public:
|
||||
SampleViewerScene(PxPhysics* pxPhysics, PxCooking *pxCooking, bool isGrb,
|
||||
Shader *defaultShader, const char *resourcePath, float slowMotionFactor);
|
||||
virtual ~SampleViewerScene();
|
||||
|
||||
// virtual interface
|
||||
|
||||
virtual void preSim(float dt) {};
|
||||
virtual void postSim(float dt) {};
|
||||
virtual void duringSim(float dt) {};
|
||||
virtual void syncAsynchronousWork() {};
|
||||
|
||||
virtual void handleMouseButton(int button, int state, int x, int y) {};
|
||||
virtual void handleMouseMotion(int x, int y) {};
|
||||
|
||||
virtual void handleKeyDown(unsigned char key, int x, int y) {};
|
||||
virtual void handleKeyUp(unsigned char key, int x, int y) {};
|
||||
virtual void handleSpecialKey(unsigned char key, int x, int y) {};
|
||||
|
||||
virtual void handleGamepadButton(int button, bool state) {};
|
||||
virtual void handleGamepadAxis(int axis, float x) {};
|
||||
virtual void handleGamepadTrigger(int trigger, float x) {};
|
||||
|
||||
virtual void render(bool useShader);
|
||||
virtual void printPerfInfo() {}
|
||||
|
||||
virtual void setSlowMotionFactor(float factor) { mSlowMotionFactor = factor; }
|
||||
virtual std::string getWeaponName() { return ""; };
|
||||
virtual void customizeSceneDesc(PxSceneDesc& desc) {}
|
||||
|
||||
virtual void onInit(PxScene* pxScene){ mPxScene = pxScene; }
|
||||
|
||||
virtual void setScene(PxScene* pxScene) { mPxScene = pxScene; }
|
||||
|
||||
// common code
|
||||
|
||||
void setCamera(const PxVec3 &pos, const PxVec3 &dir, const PxVec3 &up, float fov ) {
|
||||
mCameraPos = pos; mCameraDir = dir; mCameraUp = up; mCameraFov = fov;
|
||||
}
|
||||
|
||||
virtual void getCamera(PxVec3& pos, PxVec3& dir){}
|
||||
virtual bool isCameraDisable() { return mCameraDisable; }
|
||||
|
||||
virtual void getInitialCamera(PxVec3& pos, PxVec3& dir) { pos = PxVec3(0.f, 25.f, 30.f); dir = PxVec3(0.f, -0.3f, -1.f).getNormalized(); }
|
||||
|
||||
void getMouseRay(int xi, int yi, PxVec3 &orig, PxVec3 &dir);
|
||||
std::vector<ShaderShadow*>& getShaders() { return mShaders; }
|
||||
|
||||
enum RenderType {
|
||||
rtOPENGL,
|
||||
rtOPTIX,
|
||||
rtNUM,
|
||||
};
|
||||
static void setRenderType(RenderType renderType) { mRenderType = renderType; }
|
||||
static void toggleRenderType() { setRenderType((RenderType)(((int)mRenderType+1)%rtNUM)); }
|
||||
static RenderType getRenderType() { return mRenderType; }
|
||||
static OptixRenderer* getOptixRenderer() { return mOptixRenderer; }
|
||||
|
||||
// Set option string for renderers.
|
||||
static void setRendererOptions( const char* );
|
||||
static const char* getRendererOptions() {return mRendererOptions.c_str();}
|
||||
|
||||
// Call this before exit().
|
||||
static void cleanupStaticResources();
|
||||
static void setBenchmark( bool on ) { mBenchmark = on; }
|
||||
static bool isBenchmark() { return mBenchmark; }
|
||||
|
||||
virtual bool isSceneKapla() {return false;}
|
||||
|
||||
|
||||
PxPhysics& getPhysics() { return *mPxPhysics; }
|
||||
PxCooking& getCooking() { return *mPxCooking; }
|
||||
PxScene& getScene() { return *mPxScene; }
|
||||
|
||||
|
||||
protected:
|
||||
void setMaterial(float restitution = 0.2f, float staticFriction = 0.2f, float dynamicFriction = 0.2f);
|
||||
|
||||
PxPhysics *mPxPhysics;
|
||||
PxCooking *mPxCooking;
|
||||
PxScene *mPxScene;
|
||||
|
||||
PxMaterial *mDefaultMaterial;
|
||||
|
||||
PxVec3 mCameraPos, mCameraDir, mCameraUp;
|
||||
float mCameraFov;
|
||||
std::vector<ShaderShadow*> mShaders;
|
||||
Shader *mDefaultShader;
|
||||
const char *mResourcePath;
|
||||
float mSlowMotionFactor;
|
||||
|
||||
static RenderType mRenderType;
|
||||
static OptixRenderer *mOptixRenderer;
|
||||
static bool mBenchmark;
|
||||
static std::string mRendererOptions;
|
||||
|
||||
bool mCameraDisable;
|
||||
};
|
||||
|
||||
#endif // SAMPLE_VIEWER_SCENE_H
|
||||
Reference in New Issue
Block a user