本文整理汇总了C++中CControl::UpdatePlayerPos方法的典型用法代码示例。如果您正苦于以下问题:C++ CControl::UpdatePlayerPos方法的具体用法?C++ CControl::UpdatePlayerPos怎么用?C++ CControl::UpdatePlayerPos使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CControl
的用法示例。
在下文中一共展示了CControl::UpdatePlayerPos方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: racing_loop
void racing_loop (double time_step){
CControl *ctrl = Players.GetCtrl (g_game.player_id);
double ycoord = Course.FindYCoord (ctrl->cpos.x, ctrl->cpos.z);
bool airborne = (bool) (ctrl->cpos.y > (ycoord + JUMP_MAX_START_HEIGHT));
check_gl_error();
ClearRenderContext ();
Env.SetupFog ();
Music.Update ();
CalcTrickControls (ctrl, time_step, airborne);
if (!g_game.finish) CalcSteeringControls (ctrl, time_step);
else CalcFinishControls (ctrl, time_step, airborne);
PlayTerrainSound (ctrl, airborne);
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ctrl->UpdatePlayerPos (time_step);
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
if (g_game.finish) IncCameraDistance (time_step);
update_view (ctrl, time_step);
UpdateTrackmarks (ctrl);
SetupViewFrustum (ctrl);
if (sky) Env.DrawSkybox (ctrl->viewpos);
if (fog) Env.DrawFog ();
void SetupLight ();
if (terr) RenderCourse ();
DrawTrackmarks ();
if (trees) DrawTrees ();
if (param.perf_level > 2) {
update_particles (time_step);
draw_particles (ctrl);
}
Char.Draw (g_game.char_id);
UpdateWind (time_step, ctrl);
UpdateSnow (time_step, ctrl);
DrawSnow (ctrl);
DrawHud (ctrl);
Reshape (param.x_resolution, param.y_resolution);
Winsys.SwapBuffers ();
if (g_game.finish == false) g_game.time += time_step;
}
示例2: Loop
void CReset::Loop(double time_step) {
CControl *ctrl = Players.GetCtrl (g_game.player_id);
double elapsed_time = Winsys.ClockTime () - reset_start_time;
static bool tux_visible = true;
static int tux_visible_count = 0;
check_gl_error();
ClearRenderContext ();
Env.SetupFog ();
ctrl->UpdatePlayerPos (EPS);
update_view (ctrl, EPS);
SetupViewFrustum (ctrl);
Env.DrawSkybox (ctrl->viewpos);
Env.DrawFog ();
Env.SetupLight (); // and fog
RenderCourse();
DrawTrackmarks ();
DrawTrees ();
if ((elapsed_time > BLINK_IN_PLACE_TIME) && (!position_reset)) {
TObjectType* object_types = &Course.ObjTypes[0];
TItem* item_locs = &Course.NocollArr[0];
size_t num_item_types = Course.ObjTypes.size();
size_t first_reset = 0;
size_t last_reset = 0;
for (size_t i = 0; i < num_item_types; i++) {
if (object_types[i].reset_point == true) {
last_reset = first_reset + object_types[i].num_items - 1;
break;
} else {
first_reset += object_types[i].num_items;
}
} // for
if (last_reset == 0) {
ctrl->cpos.x = Course.GetDimensions().x/2.0;
ctrl->cpos.z = min(ctrl->cpos.z + 10, -1.0);
} else {
int best_loc = -1;
for (size_t i = first_reset; i <= last_reset; i++) {
if (item_locs[i].pt.z > ctrl->cpos.z) {
if (best_loc == -1 || item_locs[i].pt.z < item_locs[best_loc].pt.z) {
best_loc = (int)i;
} // if
} // if
} // for
if (best_loc == -1) {
ctrl->cpos.x = Course.GetDimensions().x/2.0;
ctrl->cpos.z = min (ctrl->cpos.z + 10, -1.0);
} else if (item_locs[best_loc].pt.z <= ctrl->cpos.z) {
ctrl->cpos.x = Course.GetDimensions().x/2.0;
ctrl->cpos.z = min (ctrl->cpos.z + 10, -1.0);
} else {
ctrl->cpos.x = item_locs[best_loc].pt.x;
ctrl->cpos.z = item_locs[best_loc].pt.z;
} // if
}
ctrl->view_init = false;
ctrl->Init ();
position_reset = true;
} // if elapsed time
if (tux_visible) Char.Draw (g_game.char_id);
if (++tux_visible_count > 3) {
tux_visible = (bool) !tux_visible;
tux_visible_count = 0;
}
DrawHud (ctrl);
Reshape (Winsys.resolution.width, Winsys.resolution.height);
Winsys.SwapBuffers ();
g_game.time += time_step;
if (elapsed_time > TOTAL_RESET_TIME) {
State::manager.RequestEnterState (Racing);
}
}