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; }