Esempio n. 1
0
        public IEnumerable <ModelAnimation> RenderPreviewVoxels(
            ActorPreviewInitializer init, RenderVoxelsInfo rv, string image, Func <WRot> orientation, int facings, PaletteReference p)
        {
            if (!EnabledByDefault)
            {
                yield break;
            }

            var body     = init.Actor.TraitInfo <BodyOrientationInfo>();
            var armament = init.Actor.TraitInfos <ArmamentInfo>()
                           .First(a => a.Name == Armament);
            var t = init.Actor.TraitInfos <TurretedInfo>()
                    .First(tt => tt.Turret == armament.Turret);

            var model = init.World.ModelCache.GetModelSequence(image, Sequence);

            var         turretFacing      = Turreted.TurretFacingFromInit(init, t);
            Func <WRot> turretOrientation = () => body.QuantizeOrientation(WRot.FromYaw(turretFacing() - orientation().Yaw), facings);

            Func <WRot> quantizedTurret   = () => body.QuantizeOrientation(turretOrientation(), facings);
            Func <WRot> quantizedBody     = () => body.QuantizeOrientation(orientation(), facings);
            Func <WVec> barrelOffset      = () => body.LocalToWorld((t.Offset + LocalOffset.Rotate(quantizedTurret())).Rotate(quantizedBody()));
            Func <WRot> barrelOrientation = () => turretOrientation().Rotate(orientation());

            yield return(new ModelAnimation(model, barrelOffset, barrelOrientation, () => false, () => 0, ShowShadow));
        }
Esempio n. 2
0
 public AttackPopupTurreted(ActorInitializer init, AttackPopupTurretedInfo info)
     : base(init.self)
 {
     Info = info;
     buildComplete = init.Contains<SkipMakeAnimsInit>();
     turret = turrets.FirstOrDefault();
 }
Esempio n. 3
0
        public IEnumerable <IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p)
        {
            if (!EnabledByDefault)
            {
                yield break;
            }

            var body     = init.Actor.TraitInfo <BodyOrientationInfo>();
            var armament = init.Actor.TraitInfos <ArmamentInfo>()
                           .First(a => a.Name == Armament);
            var t = init.Actor.TraitInfos <TurretedInfo>()
                    .First(tt => tt.Turret == armament.Turret);

            var turretFacing = Turreted.TurretFacingFromInit(init, t);
            var anim         = new Animation(init.World, image, turretFacing);

            anim.Play(RenderSprites.NormalizeSequence(anim, init.GetDamageState(), Sequence));

            var         facing       = init.GetFacing();
            Func <WRot> orientation  = () => body.QuantizeOrientation(WRot.FromYaw(facing()), facings);
            Func <WVec> turretOffset = () => body.LocalToWorld(t.Offset.Rotate(orientation()));
            Func <int>  zOffset      = () =>
            {
                var tmpOffset = turretOffset();
                return(-(tmpOffset.Y + tmpOffset.Z) + 1);
            };

            yield return(new SpriteActorPreview(anim, turretOffset, zOffset, p, rs.Scale));
        }
Esempio n. 4
0
        public IEnumerable <VoxelAnimation> RenderPreviewVoxels(ActorPreviewInitializer init, RenderVoxelsInfo rv, string image, WRot orientation, int facings, PaletteReference p)
        {
            if (UpgradeMinEnabledLevel > 0)
            {
                yield break;
            }

            var body     = init.Actor.TraitInfo <BodyOrientationInfo>();
            var armament = init.Actor.TraitInfos <ArmamentInfo>()
                           .First(a => a.Name == Armament);
            var t = init.Actor.TraitInfos <TurretedInfo>()
                    .First(tt => tt.Turret == armament.Turret);

            var voxel = VoxelProvider.GetVoxel(image, Sequence);

            var turretFacing      = Turreted.GetInitialTurretFacing(init, t.InitialFacing, t.Turret);
            var turretOrientation = body.QuantizeOrientation(new WRot(WAngle.Zero, WAngle.Zero, WAngle.FromFacing(turretFacing) - orientation.Yaw), facings);

            var quantizedTurret = body.QuantizeOrientation(turretOrientation, facings);
            var quantizedBody   = body.QuantizeOrientation(orientation, facings);
            var barrelOffset    = body.LocalToWorld((t.Offset + LocalOffset.Rotate(quantizedTurret)).Rotate(quantizedBody));

            yield return(new VoxelAnimation(voxel, () => barrelOffset, () => new[] { turretOrientation, orientation },
                                            () => false, () => 0));
        }
Esempio n. 5
0
        public IEnumerable <IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p)
        {
            if (UpgradeMinEnabledLevel > 0)
            {
                yield break;
            }

            var body = init.Actor.TraitInfo <BodyOrientationInfo>();
            var t    = init.Actor.TraitInfos <TurretedInfo>()
                       .First(tt => tt.Turret == Turret);

            var ifacing    = init.Actor.TraitInfoOrDefault <IFacingInfo>();
            var bodyFacing = ifacing != null?init.Contains <FacingInit>() ? init.Get <FacingInit, int>() : ifacing.GetInitialFacing() : 0;

            var turretFacing = Turreted.GetInitialTurretFacing(init, t.InitialFacing, Turret);

            var anim = new Animation(init.World, image, () => turretFacing);

            anim.Play(RenderSprites.NormalizeSequence(anim, init.GetDamageState(), Sequence));

            var orientation = body.QuantizeOrientation(new WRot(WAngle.Zero, WAngle.Zero, WAngle.FromFacing(bodyFacing)), facings);
            var offset      = body.LocalToWorld(t.Offset.Rotate(orientation));

            yield return(new SpriteActorPreview(anim, offset, -(offset.Y + offset.Z) + 1, p, rs.Scale));
        }
Esempio n. 6
0
 public AttackPopupTurreted(ActorInitializer init, AttackPopupTurretedInfo info)
     : base(init.Self, info)
 {
     this.info            = info;
     turret               = turrets.FirstOrDefault();
     rb                   = init.Self.Trait <RenderBuilding>();
     skippedMakeAnimation = init.Contains <SkipMakeAnimsInit>();
 }
Esempio n. 7
0
 public AttackPopupTurreted(ActorInitializer init, AttackPopupTurretedInfo info)
     : base(init.Self, info)
 {
     this.info            = info;
     turret               = turrets.FirstOrDefault();
     wsb                  = init.Self.TraitsImplementing <WithSpriteBody>().Single(w => w.Info.Name == info.Body);
     skippedMakeAnimation = init.Contains <SkipMakeAnimsInit>();
 }
Esempio n. 8
0
 public AttackPopupTurreted(ActorInitializer init, AttackPopupTurretedInfo info)
     : base(init.self)
 {
     Info = info;
     Turret = init.self.Trait<Turreted>();
     if (init.Contains<SkipMakeAnimsInit>())
         buildComplete = true;
 }
Esempio n. 9
0
        public WithVoxelTurret(Actor self, WithVoxelTurretInfo info) : base(info)
        {
            this.self     = self;
            body          = self.Trait <BodyOrientation>();
            turreted      = self.TraitsImplementing <Turreted>().First(tt => tt.Name == Info.Turret);
            buildComplete = !self.Info.HasTraitInfo <BuildingInfo>();//always render instantly for units.

            var rv = self.Trait <RenderVoxels>();

            rv.Add(new ModelAnimation(self.World.ModelCache.GetModelSequence(rv.Image, Info.Sequence),
                                      () => turreted.Position(self), TurretRotation, () => IsTraitDisabled || !buildComplete, () => 0, info.ShowShadow));
        }
Esempio n. 10
0
        float2 TurretPosition(Actor self, WorldRenderer wr, Turreted t, IFacing facing)
        {
            var recoil = self.TraitsImplementing <Armament>()
                         .Where(w => w.Info.Turret == t.Name)
                         .Aggregate(WRange.Zero, (a, b) => a + b.Recoil);

            var localOffset       = new WVec(-recoil, WRange.Zero, WRange.Zero);
            var bodyOrientation   = QuantizeOrientation(self, self.Orientation);
            var turretOrientation = QuantizeOrientation(self, t.LocalOrientation(self));
            var worldPos          = t.Position(self) + LocalToWorld(localOffset.Rotate(turretOrientation).Rotate(bodyOrientation));

            return(wr.ScreenPxOffset(worldPos));
        }
Esempio n. 11
0
 public AttackPopupTurreted(ActorInitializer init, AttackPopupTurretedInfo info)
     : base(init.self)
 {
     Info = info;
     Turret = init.self.Trait<Turreted>();
     if (init.Contains<SkipMakeAnimsInit>())
     {
         State = PopupState.Closed;
         init.self.Trait<RenderBuilding>()
             .PlayCustomAnimRepeating(init.self, "closed-idle");
         Turret.desiredFacing = null;
     }
 }
Esempio n. 12
0
        public WithVoxelTurret(Actor self, WithVoxelTurretInfo info)
        {
            this.self = self;
            body      = self.Trait <IBodyOrientation>();
            turreted  = self.TraitsImplementing <Turreted>()
                        .First(tt => tt.Name == info.Turret);

            var rv = self.Trait <RenderVoxels>();

            rv.Add(new VoxelAnimation(VoxelProvider.GetVoxel(rv.Image, info.Sequence),
                                      () => turreted.Position(self), () => TurretRotation(),
                                      () => false, () => 0));
        }
Esempio n. 13
0
        public WithVoxelTurret(Actor self, WithVoxelTurretInfo info)
            : base(info)
        {
            this.self = self;
            body      = self.Trait <BodyOrientation>();
            turreted  = self.TraitsImplementing <Turreted>()
                        .First(tt => tt.Name == Info.Turret);

            var rv = self.Trait <RenderVoxels>();

            rv.Add(new ModelAnimation(self.World.ModelCache.GetModelSequence(rv.Image, Info.Sequence),
                                      () => turreted.Position(self), TurretRotation,
                                      () => IsTraitDisabled, () => 0, info.ShowShadow));
        }
Esempio n. 14
0
        public WithGunboatBody(ActorInitializer init, WithGunboatBodyInfo info)
            : base(init, info, MakeTurretFacingFunc(init.Self))
        {
            this.info = info;
            rs        = init.Self.Trait <RenderSprites>();
            facing    = init.Self.Trait <IFacing>();
            var name = rs.GetImage(init.Self);

            turret = init.Self.TraitsImplementing <Turreted>()
                     .First(t => t.Name == info.Turret);

            wake = new Animation(init.World, name);
            wake.PlayRepeating(info.WakeLeftSequence);
            rs.Add(new AnimationWithOffset(wake, null, null, -87));
        }
Esempio n. 15
0
        public WithVoxelBarrel(Actor self, WithVoxelBarrelInfo info)
            : base(info)
        {
            this.self = self;
            body      = self.Trait <BodyOrientation>();
            armament  = self.TraitsImplementing <Armament>()
                        .First(a => a.Info.Name == Info.Armament);
            turreted = self.TraitsImplementing <Turreted>()
                       .First(tt => tt.Name == armament.Info.Turret);

            var rv = self.Trait <RenderVoxels>();

            rv.Add(new ModelAnimation(self.World.ModelCache.GetModelSequence(rv.Image, Info.Sequence),
                                      BarrelOffset, BarrelRotation,
                                      () => IsTraitDisabled, () => 0, info.ShowShadow));
        }
Esempio n. 16
0
        public WithVoxelBarrel(Actor self, WithVoxelBarrelInfo info)
        {
            this.self = self;
            this.info = info;
            body      = self.Trait <IBodyOrientation>();
            armament  = self.TraitsImplementing <Armament>()
                        .First(a => a.Info.Name == info.Armament);
            turreted = self.TraitsImplementing <Turreted>()
                       .First(tt => tt.Name == armament.Info.Turret);

            var rv = self.Trait <RenderVoxels>();

            rv.Add(new VoxelAnimation(VoxelProvider.GetVoxel(rv.Image, info.Sequence),
                                      () => BarrelOffset(), () => BarrelRotation(),
                                      () => false, () => 0));
        }
Esempio n. 17
0
        public new IEnumerable <IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p)
        {
            if (!EnabledByDefault)
            {
                yield break;
            }

            var body = init.Actor.TraitInfo <BodyOrientationInfo>();
            var t    = init.Actor.TraitInfos <TurretedInfo>()
                       .First(tt => tt.Turret == Turret);

            var bodyAnim = new Animation(init.World, image, init.GetFacing());

            bodyAnim.PlayRepeating(RenderSprites.NormalizeSequence(bodyAnim, init.GetDamageState(), "idle"));
            var         bodySequence = bodyAnim.CurrentSequence as OffsetsSpriteSequence;
            Func <WVec> offset       = null;

            if (bodySequence != null && bodySequence.EmbeddedOffsets.ContainsKey(bodyAnim.Image) && bodySequence.EmbeddedOffsets[bodyAnim.Image] != null)
            {
                var point = bodySequence.EmbeddedOffsets[bodyAnim.Image].FirstOrDefault(p1 => p1.Id == 0);

                if (point != null)
                {
                    offset = () => new WVec(point.X * 32, point.Y * 32, 0);
                }
            }

            var turretFacing = Turreted.TurretFacingFromInit(init, t.InitialFacing, Turret);
            var anim         = new Animation(init.World, image, turretFacing);

            anim.Play(RenderSprites.NormalizeSequence(anim, init.GetDamageState(), Sequence));

            if (offset == null)
            {
                Func <int>  facing      = init.GetFacing();
                Func <WRot> orientation = () => body.QuantizeOrientation(WRot.FromFacing(facing()), facings);
                offset = () => body.LocalToWorld(t.Offset.Rotate(orientation()));
            }

            Func <int> zOffset = () =>
            {
                var tmpOffset = offset();
                return(-(tmpOffset.Y + tmpOffset.Z) + 1);
            };

            yield return(new SpriteActorPreview(anim, offset, zOffset, p, rs.Scale));
        }
        public override IEnumerable <IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p)
        {
            if (!EnabledByDefault)
            {
                yield break;
            }

            var t   = init.Actor.TraitInfos <TurretedInfo>().FirstOrDefault();
            var wsb = init.Actor.TraitInfos <WithSpriteBodyInfo>().FirstOrDefault();

            // Show the correct turret facing
            var anim = new Animation(init.World, image, Turreted.TurretFacingFromInit(init, t));

            anim.PlayRepeating(RenderSprites.NormalizeSequence(anim, init.GetDamageState(), wsb.Sequence));

            yield return(new SpriteActorPreview(anim, () => WVec.Zero, () => 0, p, rs.Scale));
        }
Esempio n. 19
0
        public WithVoxelBarrel(Actor self, WithVoxelBarrelInfo info)
            : base(info)
        {
            this.self = self;
            body      = self.Trait <BodyOrientation>();
            armament  = self.TraitsImplementing <Armament>()
                        .First(a => a.Info.Name == Info.Armament);
            turreted = self.TraitsImplementing <Turreted>()
                       .First(tt => tt.Name == armament.Info.Turret);

            buildComplete = !self.Info.HasTraitInfo <BuildingInfo>();            // always render instantly for units

            var rv = self.Trait <RenderVoxels>();

            rv.Add(new VoxelAnimation(VoxelProvider.GetVoxel(rv.Image, Info.Sequence),
                                      BarrelOffset, BarrelRotation,
                                      () => IsTraitDisabled || !buildComplete, () => 0, info.ShowShadow));
        }
Esempio n. 20
0
        public WithSpriteBarrel(Actor self, WithSpriteBarrelInfo info)
            : base(info)
        {
            this.self = self;
            body      = self.Trait <BodyOrientation>();
            armament  = self.TraitsImplementing <Armament>()
                        .First(a => a.Info.Name == Info.Armament);
            turreted = self.TraitsImplementing <Turreted>()
                       .First(tt => tt.Name == armament.Info.Turret);

            rs = self.Trait <RenderSprites>();
            DefaultAnimation = new Animation(self.World, rs.GetImage(self), () => WAngle.FromFacing(turreted.TurretFacing));
            DefaultAnimation.PlayRepeating(NormalizeSequence(self, Info.Sequence));
            rs.Add(new AnimationWithOffset(
                       DefaultAnimation, () => BarrelOffset(), () => IsTraitDisabled, p => RenderUtils.ZOffsetFromCenter(self, p, 0)));

            // Restrict turret facings to match the sprite
            turreted.QuantizedFacings = DefaultAnimation.CurrentSequence.Facings;
        }
Esempio n. 21
0
        public WithBarrel(Actor self, WithBarrelInfo info)
        {
            this.self = self;
            this.info = info;
            body      = self.Trait <IBodyOrientation>();
            armament  = self.TraitsImplementing <Armament>()
                        .First(a => a.Info.Name == info.Armament);
            turreted = self.TraitsImplementing <Turreted>()
                       .First(tt => tt.Name == armament.Info.Turret);

            var rs = self.Trait <RenderSprites>();

            anim = new Animation(self.World, rs.GetImage(self), () => turreted.TurretFacing);
            anim.Play(info.Sequence);
            rs.Add("barrel_{0}".F(info.Barrel), new AnimationWithOffset(
                       anim, () => BarrelOffset(), null, () => false, p => WithTurret.ZOffsetFromCenter(self, p, 0)));

            // Restrict turret facings to match the sprite
            turreted.QuantizedFacings = anim.CurrentSequence.Facings;
        }
Esempio n. 22
0
        public WithTurret(Actor self, WithTurretInfo info)
        {
            this.info = info;
            rs        = self.Trait <RenderSprites>();
            body      = self.Trait <IBodyOrientation>();

            ab = self.TraitOrDefault <AttackBase>();
            t  = self.TraitsImplementing <Turreted>()
                 .First(tt => tt.Name == info.Turret);
            arms = self.TraitsImplementing <Armament>()
                   .Where(w => w.Info.Turret == info.Turret);

            anim = new Animation(rs.GetImage(self), () => t.turretFacing);
            anim.Play(info.Sequence);
            rs.anims.Add("turret_{0}".F(info.Turret), new AnimationWithOffset(
                             anim, () => TurretOffset(self), null, p => ZOffsetFromCenter(self, p, 1)));

            // Restrict turret facings to match the sprite
            t.QuantizedFacings = anim.CurrentSequence.Facings;
        }
Esempio n. 23
0
        public WithSpriteTurret(Actor self, WithSpriteTurretInfo info)
            : base(info)
        {
            rs   = self.Trait <RenderSprites>();
            body = self.Trait <BodyOrientation>();
            t    = self.TraitsImplementing <Turreted>()
                   .First(tt => tt.Name == info.Turret);
            arms = self.TraitsImplementing <Armament>()
                   .Where(w => w.Info.Turret == info.Turret).ToArray();

            DefaultAnimation = new Animation(self.World, rs.GetImage(self), () => t.WorldOrientation.Yaw);
            DefaultAnimation.PlayRepeating(NormalizeSequence(self, info.Sequence));
            rs.Add(new AnimationWithOffset(DefaultAnimation,
                                           () => TurretOffset(self),
                                           () => IsTraitDisabled,
                                           p => RenderUtils.ZOffsetFromCenter(self, p, 1)), info.Palette, info.IsPlayerPalette);

            // Restrict turret facings to match the sprite
            t.QuantizedFacings = DefaultAnimation.CurrentSequence.Facings;
        }
Esempio n. 24
0
        public WithSpriteTurret(Actor self, WithSpriteTurretInfo info) : base(info)
        {
            rs     = self.Trait <RenderSprites>();
            body   = self.Trait <BodyOrientation>();
            Attack = self.TraitOrDefault <AttackBase>();
            t      = self.TraitsImplementing <Turreted>().First(tt => tt.Name == Info.Turret);

            arms = self.TraitsImplementing <Armament>().Where(w => w.Info.Turret == info.Turret).ToArray();

            buildComplete = !self.Info.HasTraitInfo <BuildingInfo>();

            DefaultAnimation = new Animation(self.World, rs.GetImage(self), () => t.TurretFacing);
            DefaultAnimation.PlayRepeating(NormalizeSequence(self, info.Sequence));
            rs.Add(new AnimationWithOffset(DefaultAnimation,
                                           () => TurretOffset(self),
                                           () => IsTraitDisabled || !buildComplete,
                                           p => RenderUtils.ZOffsetFromCenter(self, p, 1)));

            t.QuantizedFacings = DefaultAnimation.CurrentSequence.Facings;
        }
Esempio n. 25
0
        public IEnumerable <ModelAnimation> RenderPreviewVoxels(
            ActorPreviewInitializer init, RenderVoxelsInfo rv, string image, Func <WRot> orientation, int facings, PaletteReference p)
        {
            if (!EnabledByDefault)
            {
                yield break;
            }

            var body = init.Actor.TraitInfo <BodyOrientationInfo>();
            var t    = init.Actor.TraitInfos <TurretedInfo>()
                       .First(tt => tt.Turret == Turret);

            var         model        = init.World.ModelCache.GetModelSequence(image, Sequence);
            Func <WVec> turretOffset = () => body.LocalToWorld(t.Offset.Rotate(orientation()));

            var         turretFacing          = Turreted.TurretFacingFromInit(init, t.InitialFacing, Turret);
            Func <WRot> turretBodyOrientation = () => WRot.FromYaw(WAngle.FromFacing(turretFacing()) - orientation().Yaw);

            yield return(new ModelAnimation(model, turretOffset,
                                            () => new[] { turretBodyOrientation(), body.QuantizeOrientation(orientation(), facings) }, () => false, () => 0, ShowShadow));
        }
Esempio n. 26
0
        public IEnumerable <VoxelAnimation> RenderPreviewVoxels(
            ActorPreviewInitializer init, RenderVoxelsInfo rv, string image, Func <WRot> orientation, int facings, PaletteReference p)
        {
            if (UpgradeMinEnabledLevel > 0)
            {
                yield break;
            }

            var body = init.Actor.TraitInfo <BodyOrientationInfo>();
            var t    = init.Actor.TraitInfos <TurretedInfo>()
                       .First(tt => tt.Turret == Turret);

            var         voxel        = VoxelProvider.GetVoxel(image, Sequence);
            Func <WVec> turretOffset = () => body.LocalToWorld(t.Offset.Rotate(orientation()));

            var         turretFacing          = Turreted.TurretFacingFromInit(init, t.InitialFacing, Turret);
            Func <WRot> turretBodyOrientation = () => WRot.FromYaw(WAngle.FromFacing(turretFacing()) - orientation().Yaw);

            yield return(new VoxelAnimation(voxel, turretOffset,
                                            () => new[] { turretBodyOrientation(), body.QuantizeOrientation(orientation(), facings) }, () => false, () => 0));
        }
Esempio n. 27
0
        public IEnumerable <IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p)
        {
            if (!EnabledByDefault)
            {
                yield break;
            }

            var body = init.Actor.TraitInfo <BodyOrientationInfo>();
            var t    = init.Actor.TraitInfos <TurretedInfo>()
                       .First(tt => tt.Turret == Turret);

            var turretFacing = Turreted.TurretFacingFromInit(init, t.InitialFacing, Turret);
            var anim         = new Animation(init.World, image, turretFacing);

            anim.Play(RenderSprites.NormalizeSequence(anim, init.GetDamageState(), Sequence));

            Func <int>  facing      = init.GetFacing();
            Func <WRot> orientation = () => body.QuantizeOrientation(WRot.FromFacing(facing()), facings);
            Func <WVec> offset      = () => body.LocalToWorld(t.Offset.Rotate(orientation()));
            Func <int>  zOffset     = () =>
            {
                var tmpOffset = offset();
                return(-(tmpOffset.Y + tmpOffset.Z) + 1);
            };

            if (IsPlayerPalette)
            {
                p = init.WorldRenderer.Palette(Palette + init.Get <OwnerInit>().PlayerName);
            }
            else if (Palette != null)
            {
                p = init.WorldRenderer.Palette(Palette);
            }

            yield return(new SpriteActorPreview(anim, offset, zOffset, p, rs.Scale));
        }
Esempio n. 28
0
 public WaitForTurretAlignment(Actor self, int desiredAlignment)
 {
     this.turreted         = self.Trait <Turreted>();
     this.desiredAlignment = desiredAlignment;
 }
 public RenderBuildingTurreted(ActorInitializer init, RenderBuildingInfo info)
     : base(init, info, MakeTurretFacingFunc(init.self))
 {
     t = init.self.TraitsImplementing <Turreted>().FirstOrDefault();
     t.QuantizedFacings = DefaultAnimation.CurrentSequence.Facings;
 }
Esempio n. 30
0
 public WithEmbeddedTurretSpriteBody(ActorInitializer init, WithSpriteBodyInfo info)
     : base(init, info, MakeTurretFacingFunc(init.Self))
 {
     turreted = init.Self.TraitsImplementing <Turreted>().FirstOrDefault();
 }
 public WithEmbeddedTurretSpriteBody(ActorInitializer init, WithSpriteBodyInfo info)
     : base(init, info, MakeTurretFacingFunc(init.Self))
 {
     turreted = init.Self.TraitsImplementing <Turreted>().FirstOrDefault();
     turreted.QuantizedFacings = DefaultAnimation.CurrentSequence.Facings;
 }