Exemple #1
0
        public override void Update(Time deltaTime)
        {
            base.Update(deltaTime);

            if (_sheet.AllFieldsLocked())
            {
                Program.SwitchScene(new SceneFinalScore(_sheet.GetTotalScore()));
            }

            if (_startDelay > 0)
            {
                _startDelay -= deltaTime.DeltaF;
                if (_startDelay <= 0)
                {
                    Transform targetTrans = CurrentCamera.Transform;
                    targetTrans.RotateX(-45f.AsRad());
                    CurrentCamera.MovementController = new MovementControllerLerp(CurrentCamera.Transform, targetTrans, 1.2f)
                    {
                        Curve = new BezierCurve(new vec2(.5f, 0), new vec2(.5f, 1)), Lerping = true
                    };
                    _tut1.Hide = false;
                }
            }

            _dice.Update(deltaTime, !_rerollButton.Hovered && !_sheet.Hovered);

            if (_dice.CanReroll())
            {
                if (_rerollText.Text == "")
                {
                    _rerollText.Text = "Reroll";
                }
                if (_rerollText.Text == "Reroll" && _dice.Rolling.Count <= 0)
                {
                    _rerollText.Text = "Reroll All";
                }
                else if (_rerollText.Text == "Reroll All" && _dice.Rolling.Count > 0)
                {
                    _rerollText.Text = "Reroll";
                }
            }
            else
            {
                _rerollText.Text = "";
            }

            _rerollsLeftText.Text = "Rerolls Left: " + _dice.RerollsLeft;

            _candleLight.Position = _candleParent.Position;

            if (_candleParent.MovementController == null || ((MovementControllerLerp)_candleParent.MovementController).Progress >= 1)
            {
                var r = new Random();
                _candleTargetPos = _candleLightCenter + new vec3(((float)r.NextDouble() * .34f) - .17f, 0, ((float)r.NextDouble() * .34f) - .17f);
                Transform newTrans = new Transform()
                {
                    Translation = _candleTargetPos
                };
                _candleParent.MovementController = new MovementControllerLerp(_candleParent.Transform, newTrans, .15f)
                {
                    Curve = _candleCurve, Lerping = true
                };
            }

            vec3 diff    = (_flame.Transform.Translation - _candleParent.Transform.Translation).NormalizedSafe;
            vec3 cross   = vec3.Cross(vec3.UnitY, diff);
            quat newQuat = new quat(cross.x, cross.y, cross.z, vec3.Dot(vec3.UnitY, diff));

            _flame.Transform.Orientation = newQuat;

            //_candleLight.Position = _candleLightCenter + new vec3(.3f * (float)(Math.Cos(5 * deltaTime.Total)), 0, .3f * (float)(Math.Sin(3 * deltaTime.Total)));
            //_dice.Dice[0].Position = _candleLight.Position;
        }