예제 #1
0
        public override void Update()
        {
            // Handle Input
            if (WindowLayer.GetKeyDown(ctx, '`'))
            {
                showDebugConsole = !showDebugConsole;
            }
            if (WindowLayer.GetKeyDown(ctx, 'R'))
            {
                RandomColor();
            }
            if (WindowLayer.GetKeyDown(ctx, 'H'))
            {
                DebugConsole.Write(quad_body.GetPosition().ToString());
            }

            HandleQuadMovement();
            HandleCameraMovement();

            // Update Physics
            physicsContext.Step(1.0f / 60.0f);

            shader.SetColor("color", floorColor);
            floor.UpdatePhysics();
            floor.Draw(shader, camera2D);

            shader.SetColor("color", quadColor);
            quad.UpdatePhysics();
            quad.Draw(shader, camera2D);
        }
예제 #2
0
        // --

        public void HandleQuadMovement()
        {
            if (WindowLayer.GetKeyDown(ctx, 'W') && Math.Abs(quad.body.GetVelocity().y) <= 0.01f)
            {
                quad.body.ApplyImpulse(IMPULSE_POWER);
            }
            if (WindowLayer.GetKey(ctx, 'A'))
            {
                quad.Move(-vec2.UnitX * deltaTime);
            }
            if (WindowLayer.GetKey(ctx, 'D'))
            {
                quad.Move(vec2.UnitX * deltaTime);
            }
            if (WindowLayer.GetKey(ctx, 'Q'))
            {
                quad.Rotate(deltaTime * (float)Math.PI);
            }
            if (WindowLayer.GetKey(ctx, 'E'))
            {
                quad.Rotate(-deltaTime * (float)Math.PI);
            }
        }