diff options
| author | git perforce import user <a@b> | 2016-10-25 12:29:14 -0600 |
|---|---|---|
| committer | Sheikh Dawood Abdul Ajees <Sheikh Dawood Abdul Ajees> | 2016-10-25 18:56:37 -0500 |
| commit | 3dfe2108cfab31ba3ee5527e217d0d8e99a51162 (patch) | |
| tree | fa6485c169e50d7415a651bf838f5bcd0fd3bfbd /KaplaDemo/samples/sampleViewer3/SampleViewerScene.cpp | |
| download | physx-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 'KaplaDemo/samples/sampleViewer3/SampleViewerScene.cpp')
| -rw-r--r-- | KaplaDemo/samples/sampleViewer3/SampleViewerScene.cpp | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/KaplaDemo/samples/sampleViewer3/SampleViewerScene.cpp b/KaplaDemo/samples/sampleViewer3/SampleViewerScene.cpp new file mode 100644 index 00000000..0f95ae24 --- /dev/null +++ b/KaplaDemo/samples/sampleViewer3/SampleViewerScene.cpp @@ -0,0 +1,106 @@ +#include "SampleViewerScene.h" +#include "PxMaterial.h" +#include "ShaderShadow.h" + +#include <windows.h> +#include <GL/gl.h> +#include <GL/glu.h> +#include <GL/glut.h> + + +#ifdef USE_OPTIX + SampleViewerScene::RenderType SampleViewerScene::mRenderType = SampleViewerScene::rtOPTIX; +#else + SampleViewerScene::RenderType SampleViewerScene::mRenderType = SampleViewerScene::rtOPENGL; +#endif + +OptixRenderer *SampleViewerScene::mOptixRenderer = NULL; + +bool SampleViewerScene::mBenchmark = false; + +//----------------------------------------------------------------------------- +SampleViewerScene::SampleViewerScene(PxPhysics* pxPhysics, PxCooking *pxCooking, bool isGrb, + Shader *defaultShader, const char *resourcePath, float slowMotionFactor) +{ + mPxPhysics = pxPhysics; + mPxCooking = pxCooking; + mCameraPos = PxVec3(0.0f, 20.0f, 10.0f); + mCameraDir = PxVec3(0.0f, 0.0f, 1.0f); + mCameraUp = PxVec3(0.0f, 1.0f, 0.0f); + mCameraFov = 40.f; + mDefaultShader = defaultShader; + //printf("hhh = %s\n", resourcePath); + mResourcePath = resourcePath; + mSlowMotionFactor = slowMotionFactor; + mDefaultMaterial = pxPhysics->createMaterial(0.5f, 0.5f, 0.0f); + mCameraDisable = false; +} + +//----------------------------------------------------------------------------- +SampleViewerScene::~SampleViewerScene() +{ + for (int i = 0; i < (int)mShaders.size(); i++) + delete mShaders[i]; + mShaders.clear(); +} + +// ---------------------------------------------------------------------------------------------- +void SampleViewerScene::getMouseRay(int xi, int yi, PxVec3 &orig, PxVec3 &dir) +{ + GLint viewPort[4]; + GLdouble modelMatrix[16]; + GLdouble projMatrix[16]; + glGetIntegerv(GL_VIEWPORT, viewPort); + glGetDoublev(GL_MODELVIEW_MATRIX, modelMatrix); + glGetDoublev(GL_PROJECTION_MATRIX, projMatrix); + + yi = viewPort[3] - yi - 1; + GLdouble x,y,z; + gluUnProject((GLdouble) xi, (GLdouble) yi, 0.0f, + modelMatrix, projMatrix, viewPort, &x, &y, &z); + orig = PxVec3((float)x, (float)y, (float)z); + gluUnProject((GLdouble) xi, (GLdouble) yi, 1.0f, + modelMatrix, projMatrix, viewPort, &x, &y, &z); + dir = PxVec3((float)x, (float)y, (float)z); + dir = dir - orig; + dir.normalize(); + orig -= dir * 100.0f; // to catch ray casts +} + +// ---------------------------------------------------------------------------------------------- +void SampleViewerScene::setMaterial(float restitution, float staticFriction, float dynamicFriction) +{ + mDefaultMaterial->setRestitution(restitution); + mDefaultMaterial->setStaticFriction(staticFriction); + mDefaultMaterial->setDynamicFriction(dynamicFriction); +} + +// ---------------------------------------------------------------------------------------------- +void SampleViewerScene::render(bool useShader) +{ +#ifdef USE_OPTIX + if (mRenderType == rtOPTIX && mOptixRenderer == NULL) + mOptixRenderer = new OptixRenderer( getRendererOptions() ); +#endif +} + +// ---------------------------------------------------------------------------------------------- +void SampleViewerScene::cleanupStaticResources() +{ +#ifdef USE_OPTIX + if( mOptixRenderer ) { + OptixRenderer* ren = mOptixRenderer; + mOptixRenderer = 0; + delete ren; + } +#endif +} + +// ---------------------------------------------------------------------------------------------- +std::string SampleViewerScene::mRendererOptions; + +void SampleViewerScene::setRendererOptions( const char* text ) +{ + if( text ) mRendererOptions = text; + else mRendererOptions.clear(); +} |