コード例 #1
0
        protected override void UpdateInternal(GameTime time)
        {
            var turretRotation = BasicHelpers.NormalizeAngle(TankHelper.ConstrainTurretRotation(
                                                                 null, null,
                                                                 Components["turret"].Rotation + Rotation,
                                                                 InputState.LookDirection,
                                                                 1.5f * (float)time.ElapsedGameTime.TotalSeconds
                                                                 ) - Rotation);

            //Network optimization - check if turret rotation changed without accounting for object rotation
            var uncorrected = BasicHelpers.NormalizeAngle(TankHelper.ConstrainTurretRotation(
                                                              null, null,
                                                              _uncorrectedRot,
                                                              InputState.LookDirection,
                                                              1.5f * (float)time.ElapsedGameTime.TotalSeconds
                                                              ));

            _uncorrectedRot = uncorrected;
            ComponentGroups["turret"].Rotation = turretRotation;

            if (Authoritative && MathHelper.Distance(_lastStateChangeRotation, uncorrected) > 0.05)
            {
                RaiseStateChangeEvent(a => a.Write(turretRotation));
                _lastStateChangeRotation = uncorrected;
            }
            Animations["death_explosion"].Mask = ColorMask;
            base.UpdateInternal(time);
        }