public void OnNewFrame(NewFrameEventArgs args) { if (!initialized) { initialized = true; p.InitShaders(); p.GlClearColorRgbaf(0, 0, 0, 1); p.GlEnableDepthTest(); } viewportWidth = p.GetCanvasWidth(); viewportHeight = p.GetCanvasHeight(); DrawScene(args.GetDt()); Animate(args.GetDt()); loginClient.Update(p); }
// Todo: cubic interpolation public override void OnNewFrame(Game game, NewFrameEventArgs args) { float dt = args.GetDt(); if (playingTime == -1) { return; } playingTime += dt; float playingDist = playingTime * playingSpeed; UpdateAvi(dt); float distA = 0; int foundPoint = -1; for (int i = 0; i < cameraPointsCount - 1; i++) { CameraPoint a = cameraPoints[i]; CameraPoint b = cameraPoints[i + 1]; float dist = Distance(a, b); if (playingDist >= distA && playingDist < distA + dist) { foundPoint = i; break; } distA += dist; } if (foundPoint == -1) { Stop(); return; } { CameraPoint a = cameraPoints[foundPoint]; CameraPoint b = cameraPoints[foundPoint + 1]; CameraPoint aminus = a; CameraPoint bplus = b; if (foundPoint - 1 >= 0) { aminus = cameraPoints[foundPoint - 1]; } if (foundPoint + 2 < cameraPointsCount) { bplus = cameraPoints[foundPoint + 2]; } float t = (playingDist - distA) / Distance(a, b); float x = q(t, aminus.positionGlX, a.positionGlX, b.positionGlX, bplus.positionGlX); float y = q(t, aminus.positionGlY, a.positionGlY, b.positionGlY, bplus.positionGlY); float z = q(t, aminus.positionGlZ, a.positionGlZ, b.positionGlZ, bplus.positionGlZ); m.SetLocalPosition(x, y, z); float orientx = q(t, aminus.orientationGlX, a.orientationGlX, b.orientationGlX, bplus.orientationGlX); float orienty = q(t, aminus.orientationGlY, a.orientationGlY, b.orientationGlY, bplus.orientationGlY); float orientz = q(t, aminus.orientationGlZ, a.orientationGlZ, b.orientationGlZ, bplus.orientationGlZ); m.SetLocalOrientation(orientx, orienty, orientz); } }
public override void OnNewFrame(Game game, NewFrameEventArgs args) { float dt = args.GetDt(); UpdateGraph(dt); UpdateTitleFps(dt); Draw(); }
public override void OnNewFrameFixed(Game game, NewFrameEventArgs args) { if (d_RailMapUtil == null) { this.d_RailMapUtil = new RailMapUtil(); this.d_RailMapUtil.game = game; } RailOnNewFrame(game, args.GetDt()); }
public override void OnNewFrame(Game game, NewFrameEventArgs args) { float dt = args.GetDt(); UpdateFpsHistory(dt); UpdateStatisticsText(dt); DrawLocalPosition(game); Draw(); }
public override void OnNewFrameFixed(Game game, NewFrameEventArgs args) { for (int i = 0; i < game.entitiesCount; i++) { Entity entity = game.entities[i]; if (entity == null) { continue; } if (entity.grenade == null) { continue; } UpdateGrenade(game, i, args.GetDt()); } }
public override void OnNewFrameFixed(Game game, NewFrameEventArgs args) { if (game.guistate == GuiState.MapLoading) { return; } if (game.FollowId() == null) { UpdateBlockDamageToPlayer(game, args.GetDt()); } }
public override void OnNewFrameFixed(Game game, NewFrameEventArgs args) { if (game.FollowId() == null) { if (game.soundnow.value) { UpdateWalkSound(game, -1); } if (game.isplayeronground && game.controls.movedx != 0 || game.controls.movedy != 0) { UpdateWalkSound(game, args.GetDt()); } } }
public override void OnNewFrameFixed(Game game, NewFrameEventArgs args) { if (game.guistate == GuiState.MapLoading) { return; } if (game.controls.freemove) { if (fallSoundPlaying) { SetFallSoundActive(game, false); } return; } if (game.FollowId() == null) { UpdateFallDamageToPlayer(game, args.GetDt()); } }
public override void OnNewFrameFixed(Game game, NewFrameEventArgs args) { for (int i = 0; i < game.entitiesCount; i++) { Entity entity = game.entities[i]; if (entity == null) { continue; } if (entity.expires == null) { continue; } entity.expires.timeLeft -= args.GetDt(); if (entity.expires.timeLeft <= 0) { if (entity.grenade != null) { GrenadeExplosion(game, i); } game.entities[i] = null; } } }
public override void OnNewFrameFixed(Game game, NewFrameEventArgs args) { float one = 1; float dt = args.GetDt(); if (game.guistate == GuiState.MapLoading) { return; } bool angleup = false; bool angledown = false; float overheadcameraanglemovearea = one * 5 / 100; float overheadcameraspeed = 3; game.controls.wantsjump = game.guistate == GuiState.Normal && game.GuiTyping == TypingState.None && game.keyboardState[game.GetKey(GlKeys.Space)]; game.controls.wantsjumphalf = false; game.controls.shiftkeydown = game.guistate == GuiState.Normal && game.GuiTyping == TypingState.None && game.keyboardState[game.GetKey(GlKeys.ShiftLeft)]; game.controls.movedx = 0; game.controls.movedy = 0; game.controls.moveup = false; game.controls.movedown = false; if (game.guistate == GuiState.Normal) { if (game.GuiTyping == TypingState.None) { if (game.reachedwall_1blockhigh && (game.AutoJumpEnabled || (!game.platform.IsMousePointerLocked()))) { game.controls.wantsjump = true; } if (game.reachedHalfBlock) { game.controls.wantsjumphalf = true; } if (game.overheadcamera) { CameraMove m = new CameraMove(); if (game.keyboardState[game.GetKey(GlKeys.A)]) { game.overheadcameraK.TurnRight(dt * overheadcameraspeed); } if (game.keyboardState[game.GetKey(GlKeys.D)]) { game.overheadcameraK.TurnLeft(dt * overheadcameraspeed); } if (game.keyboardState[game.GetKey(GlKeys.W)]) { angleup = true; } if (game.keyboardState[game.GetKey(GlKeys.S)]) { angledown = true; } game.overheadcameraK.Center.X = game.player.position.x; game.overheadcameraK.Center.Y = game.player.position.y; game.overheadcameraK.Center.Z = game.player.position.z; m.Distance = game.overheadcameradistance; m.AngleUp = angleup; m.AngleDown = angledown; game.overheadcameraK.Move(m, dt); float toDest = game.Dist(game.player.position.x, game.player.position.y, game.player.position.z, game.playerdestination.X + one / 2, game.playerdestination.Y - one / 2, game.playerdestination.Z + one / 2); if (toDest >= 1) { game.controls.movedy += 1; if (game.reachedwall) { game.controls.wantsjump = true; } //player orientation float qX = game.playerdestination.X - game.player.position.x; float qY = game.playerdestination.Y - game.player.position.y; float qZ = game.playerdestination.Z - game.player.position.z; float angle = game.VectorAngleGet(qX, qY, qZ); game.player.position.roty = Game.GetPi() / 2 + angle; game.player.position.rotx = Game.GetPi(); } } else if (game.enable_move) { if (game.keyboardState[game.GetKey(GlKeys.W)]) { game.controls.movedy += 1; } if (game.keyboardState[game.GetKey(GlKeys.S)]) { game.controls.movedy += -1; } if (game.keyboardState[game.GetKey(GlKeys.A)]) { game.controls.movedx += -1; game.localplayeranimationhint.leanleft = true; game.localstance = 1; } else { game.localplayeranimationhint.leanleft = false; } if (game.keyboardState[game.GetKey(GlKeys.D)]) { game.controls.movedx += 1; game.localplayeranimationhint.leanright = true; game.localstance = 2; } else { game.localplayeranimationhint.leanright = false; } if (!game.localplayeranimationhint.leanleft && !game.localplayeranimationhint.leanright) { game.localstance = 0; } game.controls.movedx += game.touchMoveDx; game.controls.movedy += game.touchMoveDy; } } if (game.controls.freemove || game.SwimmingEyes()) { if (game.GuiTyping == TypingState.None && game.keyboardState[game.GetKey(GlKeys.Space)]) { game.controls.moveup = true; } if (game.GuiTyping == TypingState.None && game.keyboardState[game.GetKey(GlKeys.ControlLeft)]) { game.controls.movedown = true; } } } }
public override void OnNewFrameFixed(Game game, NewFrameEventArgs args) { float one = 1; float dt = args.GetDt(); if (game.guistate == GuiState.MapLoading) { return; } bool angleup = false; bool angledown = false; float overheadcameraanglemovearea = one * 5 / 100; float overheadcameraspeed = 3; game.controls.wantsjump = game.guistate == GuiState.Normal && game.GuiTyping == TypingState.None && game.keyboardState[game.GetKey(GlKeys.Space)]; game.controls.wantsjumphalf = false; game.controls.shiftkeydown = game.guistate == GuiState.Normal && game.GuiTyping == TypingState.None && game.keyboardState[game.GetKey(GlKeys.ShiftLeft)]; game.controls.movedx = 0; game.controls.movedy = 0; game.controls.moveup = false; game.controls.movedown = false; if (game.guistate == GuiState.Normal) { if (game.GuiTyping == TypingState.None) { if (game.reachedwall_1blockhigh && (game.AutoJumpEnabled || (!game.platform.IsMousePointerLocked()))) { game.controls.wantsjump = true; } if (game.reachedHalfBlock) { game.controls.wantsjumphalf = true; } if (game.overheadcamera) { CameraMove m = new CameraMove(); if (game.keyboardState[game.GetKey(GlKeys.A)]) { game.overheadcameraK.TurnRight(dt * overheadcameraspeed); } if (game.keyboardState[game.GetKey(GlKeys.D)]) { game.overheadcameraK.TurnLeft(dt * overheadcameraspeed); } if (game.keyboardState[game.GetKey(GlKeys.W)]) { angleup = true; } if (game.keyboardState[game.GetKey(GlKeys.S)]) { angledown = true; } game.overheadcameraK.Center.X = game.player.position.x; game.overheadcameraK.Center.Y = game.player.position.y; game.overheadcameraK.Center.Z = game.player.position.z; m.Distance = game.overheadcameradistance; m.AngleUp = angleup; m.AngleDown = angledown; game.overheadcameraK.Move(m, dt); float toDest = game.Dist(game.player.position.x, game.player.position.y, game.player.position.z, game.playerdestination.X + one / 2, game.playerdestination.Y - one / 2, game.playerdestination.Z + one / 2); if (toDest >= 1) { game.controls.movedy += 1; if (game.reachedwall) { game.controls.wantsjump = true; } //player orientation float qX = game.playerdestination.X - game.player.position.x; float qY = game.playerdestination.Y - game.player.position.y; float qZ = game.playerdestination.Z - game.player.position.z; float angle = game.VectorAngleGet(qX, qY, qZ); game.player.position.roty = Game.GetPi() / 2 + angle; game.player.position.rotx = Game.GetPi(); } } else if (game.enable_move) { if (game.keyboardState[game.GetKey(GlKeys.W)]) { game.controls.movedy += 1; } if (game.keyboardState[game.GetKey(GlKeys.S)]) { game.controls.movedy += -1; } if (game.keyboardState[game.GetKey(GlKeys.A)]) { game.controls.movedx += -1; game.localplayeranimationhint.leanleft = true; game.localstance = 1; } else { game.localplayeranimationhint.leanleft = false; } if (game.keyboardState[game.GetKey(GlKeys.D)]) { game.controls.movedx += 1; game.localplayeranimationhint.leanright = true; game.localstance = 2; } else { game.localplayeranimationhint.leanright = false; } if (!game.localplayeranimationhint.leanleft && !game.localplayeranimationhint.leanright) { game.localstance = 0; } game.controls.movedx += game.touchMoveDx; game.controls.movedy += game.touchMoveDy; } } if ((game.controls.GetFreemove() != FreemoveLevelEnum.None) || game.SwimmingEyes()) { if (game.GuiTyping == TypingState.None && game.keyboardState[game.GetKey(GlKeys.Space)]) { game.controls.moveup = true; } if (game.GuiTyping == TypingState.None && game.keyboardState[game.GetKey(GlKeys.ControlLeft)]) { game.controls.movedown = true; } } } }
public override void OnNewFrame(Game game, NewFrameEventArgs args) { InterpolatePositions(game, args.GetDt()); }
// Todo: cubic interpolation public override void OnNewFrame(Game game, NewFrameEventArgs args) { float dt = args.GetDt(); if (playingTime == -1) { return; } playingTime += dt; float playingDist = playingTime * playingSpeed; UpdateAvi(dt); float distA = 0; int foundPoint = -1; for (int i = 0; i < cameraPointsCount - 1; i++) { CameraPoint a = cameraPoints[i]; CameraPoint b = cameraPoints[i + 1]; float dist = Distance(a, b); if (playingDist >= distA && playingDist < distA + dist) { foundPoint = i; break; } distA += dist; } if (foundPoint == -1) { Stop(); return; } { CameraPoint a = cameraPoints[foundPoint]; CameraPoint b = cameraPoints[foundPoint + 1]; CameraPoint aminus = a; CameraPoint bplus = b; if (foundPoint -1 >= 0) { aminus = cameraPoints[foundPoint - 1]; } if (foundPoint + 2 < cameraPointsCount) { bplus = cameraPoints[foundPoint + 2]; } float t = (playingDist - distA) / Distance(a, b); float x = q(t, aminus.positionGlX, a.positionGlX, b.positionGlX, bplus.positionGlX); float y = q(t, aminus.positionGlY, a.positionGlY, b.positionGlY, bplus.positionGlY); float z = q(t, aminus.positionGlZ, a.positionGlZ, b.positionGlZ, bplus.positionGlZ); m.SetLocalPosition(x, y, z); float orientx = q(t, aminus.orientationGlX, a.orientationGlX, b.orientationGlX, bplus.orientationGlX); float orienty = q(t, aminus.orientationGlY, a.orientationGlY, b.orientationGlY, bplus.orientationGlY); float orientz = q(t, aminus.orientationGlZ, a.orientationGlZ, b.orientationGlZ, bplus.orientationGlZ); m.SetLocalOrientation(orientx, orienty, orientz); } }