public override void SerializeEffect <T>(T effect)
        {
            base.SerializeEffect(effect);

            var comp = effect as ShootBlast;

            if (comp.BaseBlast is Blast blast && GetBlastPrefabEnum(blast) != BlastPrefabs.NONE)
            {
                BaseBlast             = GetBlastPrefabEnum(blast);
                AffectHitTargetCenter = blast.AffectHitTargetCenter;
                DontPlayHitSound      = blast.DontPlayHitSound;
                FXIsWorld             = blast.FXIsWorld;
                HitOnShoot            = blast.HitOnShoot;
                IgnoreShooter         = blast.IgnoreShooter;
                ImpactSoundMaterial   = blast.ImpactSoundMaterial;
                Interruptible         = blast.Interruptible;
                MaxHitTargetCount     = blast.MaxHitTargetCount;
                Radius           = blast.Radius;
                RefreshTime      = blast.RefreshTime;
                DontPlayHitSound = blast.DontPlayHitSound;
                PlayFXOnRefresh  = blast.PlayFXOnRefresh;
                DelayFirstShoot  = blast.DelayFirstShoot;

                BlastLifespan                  = comp.BlastLifespan;
                IgnoreStop                     = comp.IgnoreStop;
                InstantiatedAmount             = comp.InstanstiatedAmount;
                NoTargetForwardMultiplier      = comp.NoTargetForwardMultiplier;
                ParentToShootTransform         = comp.ParentToShootTransform;
                UseTargetCharacterPositionType = comp.UseTargetCharacterPositionType;

                if (blast.transform.childCount > 0)
                {
                    var list = new List <SL_EffectTransform>();
                    foreach (Transform child in blast.transform)
                    {
                        var effectsChild = SL_EffectTransform.ParseTransform(child);

                        if (effectsChild.HasContent)
                        {
                            list.Add(effectsChild);
                        }
                    }
                    BlastEffects = list.ToArray();
                }
            }
Example #2
0
        public override void SerializeEffect <T>(T effect)
        {
            base.SerializeEffect(effect);

            var comp = effect as ShootProjectile;

            AddDirection             = comp.AddDirection;
            AddRotationForce         = comp.AddRotationForce;
            AutoTarget               = comp.AutoTarget;
            AutoTargetMaxAngle       = comp.AutoTargetMaxAngle;
            AutoTargetRange          = comp.AutoTargetRange;
            IgnoreShooterCollision   = comp.IgnoreShooterCollision;
            ProjectileForce          = comp.ProjectileForce;
            TargetCountPerProjectile = comp.TargetCountPerProjectile;
            TargetingMode            = comp.TargetingMode;
            TargetRange              = comp.TargetRange;
            YMagnitudeAffect         = comp.YMagnitudeAffect;
            YMagnitudeForce          = comp.YMagnitudeForce;
            InstantiatedAmount       = comp.IntanstiatedAmount;
            CameraAddYDirection      = comp.CameraAddYDirection;

            var prefabEnum = GetProjectilePrefabEnum(comp.BaseProjectile);

            if (prefabEnum != ProjectilePrefabs.NONE)
            {
                var proj = comp.BaseProjectile;

                BaseProjectile            = prefabEnum;
                DefenseLength             = proj.DefenseLength;
                DefenseRange              = proj.DefenseRange;
                DisableOnHit              = proj.DisableOnHit;
                EffectsOnlyIfHitCharacter = proj.EffectsOnlyIfHitCharacter;
                EndMode             = proj.EndMode;
                ImpactSoundMaterial = proj.ImpactSoundMaterial;
                LateShootTime       = proj.LateShootTime;
                Lifespan            = proj.Lifespan;
                LightIntensityFade  = proj.LightIntensityFade;
                PointOffset         = proj.PointOffset;
                TrailEnabled        = proj.TrailEnabled;
                TrailTime           = proj.TrailTime;
                Unblockable         = proj.Unblockable;

                var list = new List <SL_EffectTransform>();
                foreach (Transform child in proj.transform)
                {
                    var effectsChild = SL_EffectTransform.ParseTransform(child);

                    if (effectsChild.HasContent)
                    {
                        list.Add(effectsChild);
                    }
                }
                ProjectileEffects = list.ToArray();
            }
            else if (comp.BaseProjectile)
            {
                SL.Log("Couldn't parse blast prefab to enum: " + comp.BaseProjectile.name);
            }

            var shots = new List <SL_ProjectileShot>();

            foreach (var shot in comp.ProjectileShots)
            {
                shots.Add(new SL_ProjectileShot()
                {
                    RandomLocalDirectionAdd = shot.RandomLocalDirectionAdd,
                    LocalDirectionOffset    = shot.LocalDirectionOffset,
                    LockDirection           = shot.LockDirection,
                    MustShoot = shot.MustShoot,
                    NoBaseDir = shot.NoBaseDir
                });
            }
            ProjectileShots = shots.ToArray();
        }