Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/gameengine/Ketsji/KX_KetsjiEngine.cpp')
-rw-r--r--source/gameengine/Ketsji/KX_KetsjiEngine.cpp162
1 files changed, 81 insertions, 81 deletions
diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
index d82a0fd533b..355e63212ae 100644
--- a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
+++ b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
@@ -23,7 +23,7 @@
* Contributor(s): none yet.
*
* ***** END GPL LICENSE BLOCK *****
- * The engine ties all game modules together.
+ * The engine ties all game modules together.
*/
/** \file gameengine/Ketsji/KX_KetsjiEngine.cpp
@@ -123,9 +123,9 @@ KX_KetsjiEngine::KX_KetsjiEngine(KX_ISystem* system)
m_activecam(0),
m_bFixedTime(false),
m_useExternalClock(false),
-
+
m_firstframe(true),
-
+
m_frameTime(0.f),
m_clockTime(0.f),
m_previousClockTime(0.f),
@@ -138,7 +138,7 @@ KX_KetsjiEngine::KX_KetsjiEngine(KX_ISystem* system)
m_exitstring(""),
m_cameraZoom(1.0f),
-
+
m_overrideCam(false),
m_overrideCamUseOrtho(false),
m_overrideCamNear(0.0f),
@@ -149,7 +149,7 @@ KX_KetsjiEngine::KX_KetsjiEngine(KX_ISystem* system)
m_curreye(0),
m_logger(NULL),
-
+
// Set up timing info display variables
m_show_framerate(false),
m_show_profile(false),
@@ -280,7 +280,7 @@ void KX_KetsjiEngine::InitDome(short res, short mode, short angle, float resbuf,
void KX_KetsjiEngine::RenderDome()
{
const GLint *viewport = m_canvas->GetViewPort();
-
+
m_dome->SetViewPort(viewport);
KX_Scene* firstscene = *m_scenes.begin();
@@ -327,17 +327,17 @@ void KX_KetsjiEngine::RenderDome()
{
if (scene->IsClearingZBuffer())
m_rasterizer->ClearDepthBuffer();
-
+
m_rasterizer->SetAuxilaryClientInfo(scene);
-
+
// do the rendering
m_dome->RenderDomeFrame(scene,cam, i);
// render all the font objects for this scene
scene->RenderFonts();
}
-
+
list<class KX_Camera*>* cameras = scene->GetCameras();
-
+
// Draw the scene once for each camera with an enabled viewport
list<KX_Camera*>::iterator it = cameras->begin();
while (it != cameras->end()) {
@@ -345,15 +345,15 @@ void KX_KetsjiEngine::RenderDome()
{
if (scene->IsClearingZBuffer())
m_rasterizer->ClearDepthBuffer();
-
+
m_rasterizer->SetAuxilaryClientInfo(scene);
-
+
// do the rendering
m_dome->RenderDomeFrame(scene, (*it),i);
// render all the font objects for this scene
scene->RenderFonts();
}
-
+
it++;
}
// Part of PostRenderScene()
@@ -427,7 +427,7 @@ void KX_KetsjiEngine::StartEngine(bool clearIpo)
m_maxLogicFrame = 5;
m_maxPhysicsFrame = 5;
}
-
+
if (m_animation_record)
{
m_sceneconverter->ResetPhysicsObjectsAnimationIpo(clearIpo);
@@ -499,7 +499,7 @@ bool KX_KetsjiEngine::BeginFrame()
return true;
}
-
+
return false;
}
@@ -542,7 +542,7 @@ void KX_KetsjiEngine::EndFrame()
m_logger->StartLog(tc_latency, m_kxsystem->GetTimeInSeconds(), true);
m_rasterizer->SwapBuffers();
m_logger->StartLog(tc_rasterizer, m_kxsystem->GetTimeInSeconds(), true);
-
+
m_canvas->EndDraw();
}
@@ -576,7 +576,7 @@ bool KX_KetsjiEngine::NextFrame()
* will be executed before the next rendering phase (which will occur at "clockTime").
* The game time elapsing between two logic frames (called framestep)
* depends on several variables:
- * - ticrate
+ * - ticrate
* - max_physic_frame
* - max_logic_frame
* XXX The logic over computation framestep is definitively not clear (and
@@ -599,7 +599,7 @@ bool KX_KetsjiEngine::NextFrame()
m_clockTime += dt * m_timescale;
}
}
-
+
double deltatime = m_clockTime - m_frameTime;
if (deltatime<0.0)
{
@@ -613,19 +613,19 @@ bool KX_KetsjiEngine::NextFrame()
// if (frames>1)
// printf("****************************************");
// printf("dt = %f, deltatime = %f, frames = %d\n",dt, deltatime,frames);
-
+
// if (!frames)
// PIL_sleep_ms(1);
KX_SceneList::iterator sceneit;
-
+
if (frames>m_maxPhysicsFrame)
{
-
+
// printf("framedOut: %d\n",frames);
m_frameTime+=(frames-m_maxPhysicsFrame)*timestep;
frames = m_maxPhysicsFrame;
}
-
+
bool doRender = frames>0;
@@ -637,17 +637,17 @@ bool KX_KetsjiEngine::NextFrame()
while (frames)
{
-
+
m_frameTime += framestep;
-
+
m_sceneconverter->MergeAsyncLoads();
for (sceneit = m_scenes.begin();sceneit != m_scenes.end(); ++sceneit)
// for each scene, call the proceed functions
{
KX_Scene* scene = *sceneit;
-
+
/* Suspension holds the physics and logic processing for an
* entire scene. Objects can be suspended individually, and
* the settings for that precede the logic and physics
@@ -657,7 +657,7 @@ bool KX_KetsjiEngine::NextFrame()
m_sceneconverter->resetNoneDynamicObjectToIpo(); // this is for none dynamic objects with ipo
scene->UpdateObjectActivity();
-
+
if (!scene->IsSuspended())
{
// if the scene was suspended recalculate the delta tu "curtime"
@@ -666,15 +666,15 @@ bool KX_KetsjiEngine::NextFrame()
scene->setSuspendedDelta(scene->getSuspendedDelta()+m_clockTime-scene->getSuspendedTime());
m_suspendeddelta = scene->getSuspendedDelta();
-
+
m_logger->StartLog(tc_network, m_kxsystem->GetTimeInSeconds(), true);
SG_SetActiveStage(SG_STAGE_NETWORK);
scene->GetNetworkScene()->proceed(m_frameTime);
-
+
//m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
//SG_SetActiveStage(SG_STAGE_NETWORK_UPDATE);
//scene->UpdateParents(m_frameTime);
-
+
m_logger->StartLog(tc_physics, m_kxsystem->GetTimeInSeconds(), true);
SG_SetActiveStage(SG_STAGE_PHYSICS1);
// set Python hooks for each scene
@@ -682,35 +682,35 @@ bool KX_KetsjiEngine::NextFrame()
PHY_SetActiveEnvironment(scene->GetPhysicsEnvironment());
#endif
KX_SetActiveScene(scene);
-
+
scene->GetPhysicsEnvironment()->EndFrame();
-
+
// Update scenegraph after physics step. This maps physics calculations
// into node positions.
//m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
//SG_SetActiveStage(SG_STAGE_PHYSICS1_UPDATE);
//scene->UpdateParents(m_frameTime);
-
+
// Process sensors, and controllers
m_logger->StartLog(tc_logic, m_kxsystem->GetTimeInSeconds(), true);
SG_SetActiveStage(SG_STAGE_CONTROLLER);
scene->LogicBeginFrame(m_frameTime);
-
- // Scenegraph needs to be updated again, because Logic Controllers
+
+ // Scenegraph needs to be updated again, because Logic Controllers
// can affect the local matrices.
m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
SG_SetActiveStage(SG_STAGE_CONTROLLER_UPDATE);
scene->UpdateParents(m_frameTime);
-
+
// Process actuators
-
+
// Do some cleanup work for this logic frame
m_logger->StartLog(tc_logic, m_kxsystem->GetTimeInSeconds(), true);
SG_SetActiveStage(SG_STAGE_ACTUATOR);
scene->LogicUpdateFrame(m_frameTime, true);
-
+
scene->LogicEndFrame();
-
+
// Actuators can affect the scenegraph
m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
SG_SetActiveStage(SG_STAGE_ACTUATOR_UPDATE);
@@ -722,16 +722,16 @@ bool KX_KetsjiEngine::NextFrame()
m_logger->StartLog(tc_physics, m_kxsystem->GetTimeInSeconds(), true);
SG_SetActiveStage(SG_STAGE_PHYSICS2);
scene->GetPhysicsEnvironment()->BeginFrame();
-
- // Perform physics calculations on the scene. This can involve
+
+ // Perform physics calculations on the scene. This can involve
// many iterations of the physics solver.
scene->GetPhysicsEnvironment()->ProceedDeltaTime(m_frameTime,timestep,framestep);//m_deltatimerealDeltaTime);
m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
SG_SetActiveStage(SG_STAGE_PHYSICS2_UPDATE);
scene->UpdateParents(m_frameTime);
-
-
+
+
if (m_animation_record)
{
m_sceneconverter->WritePhysicsObjectToAnimationIpo(++m_currentFrame);
@@ -742,7 +742,7 @@ bool KX_KetsjiEngine::NextFrame()
else
if (scene->getSuspendedTime()==0.0)
scene->setSuspendedTime(m_clockTime);
-
+
m_logger->StartLog(tc_services, m_kxsystem->GetTimeInSeconds(), true);
// invalidates the shadow buffer from previous render/ImageRender because the scene has changed
@@ -753,22 +753,22 @@ bool KX_KetsjiEngine::NextFrame()
m_logger->StartLog(tc_logic, m_kxsystem->GetTimeInSeconds(), true);
if (m_keyboarddevice)
m_keyboarddevice->NextFrame();
-
+
if (m_mousedevice)
m_mousedevice->NextFrame();
-
+
if (m_networkdevice)
m_networkdevice->NextFrame();
// scene management
ProcessScheduledScenes();
-
+
frames--;
}
// Start logging time spent outside main loop
m_logger->StartLog(tc_outside, m_kxsystem->GetTimeInSeconds(), true);
-
+
return doRender && m_doRender;
}
@@ -846,15 +846,15 @@ void KX_KetsjiEngine::Render()
{
if (scene->IsClearingZBuffer())
m_rasterizer->ClearDepthBuffer();
-
+
m_rasterizer->SetAuxilaryClientInfo(scene);
-
+
// do the rendering
RenderFrame(scene, cam);
}
-
+
list<class KX_Camera*>* cameras = scene->GetCameras();
-
+
// Draw the scene once for each camera with an enabled viewport
list<KX_Camera*>::iterator it = cameras->begin();
while (it != cameras->end()) {
@@ -862,13 +862,13 @@ void KX_KetsjiEngine::Render()
{
if (scene->IsClearingZBuffer())
m_rasterizer->ClearDepthBuffer();
-
+
m_rasterizer->SetAuxilaryClientInfo(scene);
-
+
// do the rendering
RenderFrame(scene, (*it));
}
-
+
it++;
}
PostRenderScene(scene);
@@ -891,7 +891,7 @@ void KX_KetsjiEngine::Render()
// pass the scene's worldsettings to the rasterizer
scene->GetWorldInfo()->UpdateWorldSettings();
-
+
if (scene->IsClearingZBuffer())
m_rasterizer->ClearDepthBuffer();
@@ -903,7 +903,7 @@ void KX_KetsjiEngine::Render()
RenderFrame(scene, cam);
list<class KX_Camera*>* cameras = scene->GetCameras();
-
+
// Draw the scene once for each camera with an enabled viewport
list<KX_Camera*>::iterator it = cameras->begin();
while (it != cameras->end()) {
@@ -911,13 +911,13 @@ void KX_KetsjiEngine::Render()
{
if (scene->IsClearingZBuffer())
m_rasterizer->ClearDepthBuffer();
-
+
m_rasterizer->SetAuxilaryClientInfo(scene);
-
+
// do the rendering
RenderFrame(scene, (*it));
}
-
+
it++;
}
PostRenderScene(scene);
@@ -951,7 +951,7 @@ int KX_KetsjiEngine::GetExitCode()
if (m_scenes.begin() == m_scenes.end())
m_exitcode = KX_EXIT_REQUEST_NO_SCENES_LEFT;
}
-
+
// check if the window has been closed.
if (!m_exitcode)
{
@@ -1022,7 +1022,7 @@ void KX_KetsjiEngine::GetSceneViewport(KX_Scene *scene, KX_Camera* cam, RAS_Rect
if (cam->GetViewport()) {
RAS_Rect userviewport;
- userviewport.SetLeft(cam->GetViewportLeft());
+ userviewport.SetLeft(cam->GetViewportLeft());
userviewport.SetBottom(cam->GetViewportBottom());
userviewport.SetRight(cam->GetViewportRight());
userviewport.SetTop(cam->GetViewportTop());
@@ -1049,7 +1049,7 @@ void KX_KetsjiEngine::GetSceneViewport(KX_Scene *scene, KX_Camera* cam, RAS_Rect
area = m_canvas->GetDisplayArea();
} else {
- viewport.SetLeft(0);
+ viewport.SetLeft(0);
viewport.SetBottom(0);
viewport.SetRight(int(m_canvas->GetWidth()));
viewport.SetTop(int(m_canvas->GetHeight()));
@@ -1134,7 +1134,7 @@ void KX_KetsjiEngine::RenderShadowBuffers(KX_Scene *scene)
/* remember that we have a valid shadow buffer for that scene */
scene->SetShadowDone(true);
}
-
+
// update graphics
void KX_KetsjiEngine::RenderFrame(KX_Scene* scene, KX_Camera* cam)
{
@@ -1142,7 +1142,7 @@ void KX_KetsjiEngine::RenderFrame(KX_Scene* scene, KX_Camera* cam)
RAS_Rect viewport, area;
float nearfrust, farfrust, focallength;
// KX_Camera* cam = scene->GetActiveCamera();
-
+
if (!cam)
return;
@@ -1160,7 +1160,7 @@ void KX_KetsjiEngine::RenderFrame(KX_Scene* scene, KX_Camera* cam)
// set the viewport for this frame and scene
m_canvas->SetViewPort(viewport.GetLeft(), viewport.GetBottom(),
viewport.GetRight(), viewport.GetTop());
-
+
// see KX_BlenderMaterial::Activate
//m_rasterizer->SetAmbient();
m_rasterizer->DisplayFog();
@@ -1243,7 +1243,7 @@ void KX_KetsjiEngine::RenderFrame(KX_Scene* scene, KX_Camera* cam)
frustum.x1, frustum.x2, frustum.y1, frustum.y2, frustum.camnear, frustum.camfar, focallength);
}
cam->SetProjectionMatrix(projmat);
-
+
// Otherwise the projection matrix for each eye will be the same...
if (!orthographic && m_rasterizer->Stereo())
cam->InvalidateProjectionMatrix();
@@ -1251,7 +1251,7 @@ void KX_KetsjiEngine::RenderFrame(KX_Scene* scene, KX_Camera* cam)
MT_Transform camtrans(cam->GetWorldToCamera());
MT_Matrix4x4 viewmat(camtrans);
-
+
m_rasterizer->SetViewMatrix(viewmat, cam->NodeGetWorldOrientation(), cam->NodeGetWorldPosition(), cam->NodeGetLocalScaling(), cam->GetCameraData()->m_perspective);
cam->SetModelviewMatrix(viewmat);
@@ -1296,7 +1296,7 @@ void KX_KetsjiEngine::PostRenderScene(KX_Scene* scene)
// We need to first make sure our viewport is correct (enabling multiple viewports can mess this up)
m_canvas->SetViewPort(0, 0, m_canvas->GetWidth(), m_canvas->GetHeight());
-
+
m_rasterizer->FlushDebugShapes(scene);
scene->Render2DFilters(m_canvas);
@@ -1337,7 +1337,7 @@ void KX_KetsjiEngine::StopEngine()
// Scene Management is able to switch between scenes
// and have several scenes running in parallel
void KX_KetsjiEngine::AddScene(KX_Scene* scene)
-{
+{
m_scenes.push_back(scene);
PostProcessScene(scene);
}
@@ -1362,19 +1362,19 @@ void KX_KetsjiEngine::PostProcessScene(KX_Scene* scene)
camdata.m_lens = m_overrideCamLens;
camdata.m_clipstart = m_overrideCamNear;
camdata.m_clipend = m_overrideCamFar;
-
+
camdata.m_perspective= !m_overrideCamUseOrtho;
}
activecam = new KX_Camera(scene,KX_Scene::m_callbacks,camdata);
activecam->SetName("__default__cam__");
-
+
// set transformation
if (override_camera) {
const MT_CmMatrix4x4& cammatdata = m_overrideCamViewMat;
MT_Transform trans = MT_Transform(cammatdata.getPointer());
MT_Transform camtrans;
camtrans.invert(trans);
-
+
activecam->NodeSetLocalPosition(camtrans.getOrigin());
activecam->NodeSetLocalOrientation(camtrans.getBasis());
activecam->NodeUpdateGS(0);
@@ -1391,7 +1391,7 @@ void KX_KetsjiEngine::PostProcessScene(KX_Scene* scene)
// done with activecam
activecam->Release();
}
-
+
scene->UpdateParents(0.0);
}
@@ -1409,7 +1409,7 @@ void KX_KetsjiEngine::RenderDebugProperties()
int xcoord = 12; // mmmm, these constants were taken from blender source
int ycoord = 17; // to 'mimic' behavior
-
+
int profile_indent = 72;
float tottime = m_logger->GetAverage();
@@ -1420,7 +1420,7 @@ void KX_KetsjiEngine::RenderDebugProperties()
// Set viewport to entire canvas
RAS_Rect viewport;
m_canvas->SetViewPort(0, 0, int(m_canvas->GetWidth()), int(m_canvas->GetHeight()));
-
+
if (m_show_framerate || m_show_profile) {
/* Title for profiling("Profile") */
m_rasterizer->RenderText2D(RAS_IRasterizer::RAS_TEXT_PADDED,
@@ -1444,7 +1444,7 @@ void KX_KetsjiEngine::RenderDebugProperties()
ycoord,
m_canvas->GetWidth() /* RdV, TODO ?? */,
m_canvas->GetHeight() /* RdV, TODO ?? */);
-
+
debugtxt.Format("%5.1fms (%.1ffps)", tottime * 1000.0f, 1.0f/tottime);
m_rasterizer->RenderText2D(RAS_IRasterizer::RAS_TEXT_PADDED,
debugtxt.ReadPtr(),
@@ -1507,7 +1507,7 @@ void KX_KetsjiEngine::RenderDebugProperties()
KX_Scene* scene = *sceneit;
/* the 'normal' debug props */
vector<SCA_DebugProp*>& debugproplist = scene->GetDebugProperties();
-
+
for (unsigned i=0; i < debugproplist.size() && propsAct < propsMax; i++)
{
CValue *propobj = debugproplist[i]->m_obj;
@@ -1571,8 +1571,8 @@ KX_Scene* KX_KetsjiEngine::FindScene(const STR_String& scenename)
{
KX_SceneList::iterator sceneit = m_scenes.begin();
- // bit risky :) better to split the second clause
- while ( (sceneit != m_scenes.end())
+ // bit risky :) better to split the second clause
+ while ( (sceneit != m_scenes.end())
&& ((*sceneit)->GetName() != scenename))
{
sceneit++;
@@ -1688,7 +1688,7 @@ void KX_KetsjiEngine::AddScheduledScenes()
}
m_addingOverlayScenes.clear();
}
-
+
if (m_addingBackgroundScenes.size())
{
for (scenenameit = m_addingBackgroundScenes.begin();
@@ -1734,7 +1734,7 @@ void KX_KetsjiEngine::ReplaceScheduledScenes()
if (m_replace_scenes.size())
{
vector<pair<STR_String,STR_String> >::iterator scenenameit;
-
+
for (scenenameit = m_replace_scenes.begin();
scenenameit != m_replace_scenes.end();
scenenameit++)