示例#1
0
    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);
    }
示例#2
0
    // 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();
    }
示例#4
0
 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());
 }
示例#5
0
    public override void OnNewFrame(Game game, NewFrameEventArgs args)
    {
        float dt = args.GetDt();

        UpdateFpsHistory(dt);
        UpdateStatisticsText(dt);
        DrawLocalPosition(game);
        Draw();
    }
示例#6
0
 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());
 }
示例#7
0
 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.guistate == GuiState.MapLoading)
     {
         return;
     }
     if (game.FollowId() == null)
     {
         UpdateBlockDamageToPlayer(game, args.GetDt());
     }
 }
示例#10
0
 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());
         }
     }
 }
示例#11
0
 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());
         }
     }
 }
示例#12
0
 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.controls.freemove)
     {
         if (fallSoundPlaying)
         {
             SetFallSoundActive(game, false);
         }
         return;
     }
     if (game.FollowId() == null)
     {
         UpdateFallDamageToPlayer(game, args.GetDt());
     }
 }
示例#14
0
 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());
     }
 }
示例#15
0
 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;
         }
     }
 }
示例#16
0
    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;
                }
            }
        }
    }
示例#17
0
    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;
                }
            }
        }
    }
示例#18
0
    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);
    }
示例#19
0
 public override void OnNewFrame(Game game, NewFrameEventArgs args)
 {
     InterpolatePositions(game, args.GetDt());
 }
 public override void OnNewFrame(Game game, NewFrameEventArgs args)
 {
     float dt = args.GetDt();
     UpdateGraph(dt);
     UpdateTitleFps(dt);
     Draw();
 }
示例#21
0
    // 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);
        }
    }