예제 #1
0
void RenderCallback()
{
    // Clear buffers
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	ProcessCameraKeys();
	SetupCamera();

    if (gScene && !bPause)
	{
		GetPhysicsResults();
        ProcessInputs();
		StartPhysics();
	}

    // Display scene
 	RenderActors(bShadows);

	if (bForceMode)
		DrawForce(gSelectedActor, gForceVec, NxVec3(1,1,0));
	else
		DrawForce(gSelectedActor, gForceVec, NxVec3(0,1,1));
	gForceVec = NxVec3(0,0,0);

	// Render HUD
	hud.Render();

    glFlush();
    glutSwapBuffers();
}
예제 #2
0
void RenderCallback()
{
	// Clear buffers
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	ProcessCameraKeys();
	SetupCamera();

	UpdateEmitterPosition();

	if (gScene && !bPause)
	{
		GetPhysicsResults();
		ProcessInputs();
		StartPhysics();
	}

	// Display scene
	RenderActors(bShadows);

	RenderFluid();

	if (bForceMode)
		DrawForce(gSelectedActor, gForceVec, NxVec3(1,1,0));
	else
		DrawForce(gSelectedActor, gForceVec, NxVec3(0,1,1));
	gForceVec = NxVec3(0,0,0);

	if (bEmitterWireframe)
	{
		NxMat34 fluidEmitterMat = fluidEmitter->getGlobalPose();
		NxVec3 fluidEmitterPos, fluidEmitterDir;
		fluidEmitterPos = fluidEmitterMat.t;
		fluidEmitterMat.M.getColumn(2,fluidEmitterDir);

		DrawArrow(fluidEmitterPos, fluidEmitterPos + fluidEmitterDir, NxVec3(0,0,1)); 
		DrawEllipse(20, fluidEmitter->getGlobalPose(), NxVec3(0.5,0,0.5), fluidEmitter->getDimensionX(), fluidEmitter->getDimensionY());
	}

	if (!bPause)
	{
		if (gDeltaTime < 10)  gTotalTime += gDeltaTime;
	}

	// Render HUD
	hud.Render();

	glFlush();
	glutSwapBuffers();
}
예제 #3
0
void CVXS_SimGLView::Draw(int Selected, bool ViewSection, int SectionLayer)
{
	if (!pSim->IsInitalized()) return;

	if (CurViewMode == RVM_NONE) return;
	else if (CurViewMode == RVM_VOXELS){ 
		switch (CurViewVox){
		case RVV_DISCRETE: DrawGeometry(Selected, ViewSection, SectionLayer); break; //section view only currently enabled in voxel view mode
		case RVV_DEFORMED: DrawVoxMesh(Selected); break;
		case RVV_SMOOTH: DrawSurfMesh(); break;
		}
	}
	else { //CurViewMode == RVT_BONDS
		vfloat VoxScale=0.2;
		if (ViewForce){
			DrawForce();
			DrawGeometry(Selected, ViewSection, SectionLayer, VoxScale);

		}
		else {
			if (CurViewVox == RVV_SMOOTH) VoxScale=0.1;
			DrawBonds();
			DrawGeometry(Selected, ViewSection, SectionLayer, VoxScale);
		}
		DrawStaticFric();
	}
	if (ViewAngles)	DrawAngles();
	if (pSim->IsFeatureEnabled(VXSFEAT_FLOOR)) DrawFloor(); //draw the floor if its in use
//	if (pEnv->IsFloorEnabled()) DrawFloor(); //draw the floor if its in use

	NeedStatsUpdate=true;
}
예제 #4
0
void RenderCallback()
{
    if (gScene && !bPause)
	{
		StartPhysics();	
		GetPhysicsResults();
	}

    // Clear buffers
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	ProcessInputs();
	ProcessCameraKeys();
	SetupCamera();

 	RenderActors(bShadows);

    // Render all the cloths in the scene
	for (MyCloth **cloth = gCloths.begin(); cloth != gCloths.end(); cloth++)
	{
		glColor4f(1.0f, 0.0f, 0.0f,1.0f);
		(*cloth)->draw(bShadows);
	}

	if (bForceMode)
		DrawForce(gSelectedActor, gForceVec, NxVec3(1,1,0));
	else
		DrawForce(gSelectedActor, gForceVec, NxVec3(0,1,1));
	gForceVec = NxVec3(0,0,0);

	// Render HUD
	hud.Render();

    glFlush();
    glutSwapBuffers();
}
예제 #5
0
void CVX_Sim::Draw(int Selected, bool ViewSection, int SectionLayer)
{
	if (!Initalized) return;

	if (CurViewMode == RVM_NONE) return;
	else if (CurViewMode == RVM_VOXELS){ 
		switch (CurViewVox){
		case RVV_DISCRETE: DrawGeometry(Selected, ViewSection, SectionLayer); break; //section view only currently enabled in voxel view mode
		case RVV_DEFORMED: DrawVoxMesh(Selected); break;
		case RVV_SMOOTH: DrawSurfMesh(); break;
		}
	}
	else { //CurViewMode == RVT_BONDS
		DrawBonds();
		DrawStaticFric();
	}
	if (ViewAngles)	DrawAngles();
	if (ViewForce) DrawForce();
	if (pEnv->IsFloorEnabled()) DrawFloor(); //draw the floor if its in use

	NeedStatsUpdate=true;
}