aboutsummaryrefslogtreecommitdiff
path: root/KaplaDemo/samples/sampleViewer3/SampleViewerScene.cpp
diff options
context:
space:
mode:
authorgit perforce import user <a@b>2016-10-25 12:29:14 -0600
committerSheikh Dawood Abdul Ajees <Sheikh Dawood Abdul Ajees>2016-10-25 18:56:37 -0500
commit3dfe2108cfab31ba3ee5527e217d0d8e99a51162 (patch)
treefa6485c169e50d7415a651bf838f5bcd0fd3bfbd /KaplaDemo/samples/sampleViewer3/SampleViewerScene.cpp
downloadphysx-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.cpp106
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();
+}