public ParticleEmitter Expand(float multiplier)
    {
        if (!didInit)
        {
            return(this);
        }

        shapeModule.radius       *= multiplier;
        shapeModule.boxThickness *= multiplier;

        emissionModule.rateOverTime     = MultiplyCurve(emissionModule.rateOverTime, multiplier);
        emissionModule.rateOverDistance = MultiplyCurve(emissionModule.rateOverTime, multiplier);

        for (int i = 0; i < emissionModule.burstCount; i++)
        {
            ParticleSystem.Burst burst = emissionModule.GetBurst(i);
            burst.count = MultiplyCurve(burst.count, multiplier);
            emissionModule.SetBurst(i, burst);
        }

        mainModule.startSize     = MultiplyCurve(mainModule.startSize, Mathf.Pow(multiplier, 0.6f));
        mainModule.startLifetime = MultiplyCurve(mainModule.startLifetime, Mathf.Pow(multiplier, 0.3f));

        return(this);
    }
예제 #2
0
 private void Start()
 {
     particles = GetComponentInChildren <ParticleSystem>();
     emission  = particles.emission;
     burst     = emission.GetBurst(0);
     particles.Stop();
 }
    void Start()
    {
        ParticleSystem.EmissionModule TapParticleEmission = TapParticle.emission;
        TapParticleBurstCount = (int)TapParticleEmission.GetBurst(0).count.constant;
        var dur = TapParticle.main;

        TapParticleDuration = dur.duration;
        if (TapParticleInner != null)
        {
            ParticleSystem.EmissionModule TapParticleInnerEmission = TapParticleInner.emission;
            TapParticleInnerBurstCount = (int)TapParticleInnerEmission.GetBurst(0).count.constant;
        }
    }
    void InstantiateParticleSystem()
    {
        GameObject     particleGO  = Instantiate <GameObject>(AsteraX.AsteroidsSO.GetAsteroidParticlePrefab(), transform.position, Quaternion.identity);
        ParticleSystem particleSys = particleGO.GetComponent <ParticleSystem>();

        ParticleSystem.MainModule main = particleSys.main;
        main.startLifetimeMultiplier = size * 0.5f;
        ParticleSystem.EmissionModule emitter    = particleSys.emission;
        ParticleSystem.Burst          burst      = emitter.GetBurst(0);
        ParticleSystem.MinMaxCurve    burstCount = burst.count;
        burstCount.constant = burstCount.constant * size;
        burst.count         = burstCount;
        emitter.SetBurst(0, burst);
    }
예제 #5
0
    public void PlayDestroyedParticleEffect()
    {
        float      magnitude    = (linePoints[1] - linePoints[0]).magnitude;
        GameObject instantiated = GameObject.Instantiate(team.resources.tronWallDestroyedPrefab,
                                                         (linePoints[1] + linePoints[0]) / 2, transform.rotation);
        ParticleSystem ps = instantiated.EnsureComponent <ParticleSystem>();

        ParticleSystem.MainModule main = ps.main;
        main.startColor = team.teamColor.color;
        ParticleSystem.ShapeModule shape = ps.shape;
        shape.radius = magnitude * .65f;
        ParticleSystem.EmissionModule emission = ps.emission;
        ParticleSystem.Burst          burst    = emission.GetBurst(0);
        burst.count = Mathf.Min(magnitude * burst.count.constant, maxParticlesOnDestroy);
        emission.SetBurst(0, burst);
        ps.Play();
    }
예제 #6
0
    void InstantiateParticleSystem(int ndx)
    {
        if (particleSystems.Length <= ndx)
        {
            return;
        }
        GameObject     particleGO  = Instantiate <GameObject>(particleSystems[ndx], transform.position, Quaternion.identity);
        ParticleSystem particleSys = particleGO.GetComponent <ParticleSystem>();

        ParticleSystem.MainModule main = particleSys.main;
        main.startLifetimeMultiplier = size * 0.5f;
        ParticleSystem.EmissionModule emitter    = particleSys.emission;
        ParticleSystem.Burst          burst      = emitter.GetBurst(0);
        ParticleSystem.MinMaxCurve    burstCount = burst.count;
        burstCount.constant = burstCount.constant * size;
        burst.count         = burstCount;
        emitter.SetBurst(0, burst);
        Destroy(particleGO, 4f);
    }
예제 #7
0
    public static void EmitAt(ParticleSystem particlesystem, Vector3 location, Quaternion rotation)
    {
        if (particlesystem == null)
        {
            return;
        }
        particlesystem.transform.position = location;
        particlesystem.transform.rotation = rotation;

        foreach (ParticleSystem ps in particlesystem.gameObject.GetComponentsInChildren <ParticleSystem>())
        {
            if (ps == null)
            {
                continue;
            }
            ParticleSystem.EmissionModule em = particlesystem.emission;
            ps.Emit((em.GetBurst(0).count.mode == ParticleSystemCurveMode.TwoConstants) ?Random.Range(em.GetBurst(0).minCount, em.GetBurst(0).maxCount): ((int)em.GetBurst(0).count.constant));
        }
    }
예제 #8
0
    private void Awake()
    {
        cutingWind   = GetComponentInChildren <ParticleSystem>();
        _audioSource = GetComponent <AudioSource>();
        //Ball = GetComponentInChildren<ParticleSystem>();
        _pointLigth    = GetComponentInChildren <Light>();
        trBall         = GetComponentInChildren <TrailRenderer>();
        cutingWindMain = cutingWind.main;
        BallMain       = Ball.main;
        shapeWInd      = cutingWind.shape;
        emissionWind   = cutingWind.emission;
        _burstWind     = emissionWind.GetBurst(1);

        cutingWindMain.startColor = grColor;
        BallMain.startColor       = grColor;
        trBall.colorGradient      = grColor;
        _pointLigth.intensity     = 0;
        _audioSource.loop         = true;
    }
예제 #9
0
    private void DisableSelf()
    {
        if (!edgeCollider.enabled)
        {
            return;
        }
        edgeCollider.enabled = false;
        lineRenderer.enabled = false;
        GameObject instatiated = GameObject.Instantiate(GameManager.Instance.neutralResources.tronWallDestroyedPrefab,
                                                        transform.position,
                                                        transform.rotation);
        ParticleSystem ps = instatiated.EnsureComponent <ParticleSystem>();

        ParticleSystem.MainModule  main  = ps.main;
        ParticleSystem.ShapeModule shape = ps.shape;
        shape.radius = explosionRadius;
        ParticleSystem.EmissionModule emission = ps.emission;
        ParticleSystem.Burst          burst    = emission.GetBurst(0);
        burst.count = numberOfParticles;
        emission.SetBurst(0, burst);
        ps.Play();
    }
 // Token: 0x06001296 RID: 4758 RVA: 0x0005B0F4 File Offset: 0x000592F4
 public void ProcessEffectElement(float radius, float minimumValidRadius)
 {
     if (this.particleSystem)
     {
         if (this.particleSystemOverrideMaterial)
         {
             ParticleSystemRenderer component = this.particleSystem.GetComponent <ParticleSystemRenderer>();
             if (this.particleSystemOverrideMaterial)
             {
                 component.material = this.particleSystemOverrideMaterial;
             }
         }
         ParticleSystem.EmissionModule emission = this.particleSystem.emission;
         int num = (int)emission.GetBurst(0).maxCount + (int)((radius - minimumValidRadius) * this.bonusEmissionPerBonusRadius);
         emission.SetBurst(0, new ParticleSystem.Burst(0f, (float)num));
         if (this.particleSystemEmitParticles)
         {
             this.particleSystem.gameObject.SetActive(true);
             return;
         }
         this.particleSystem.gameObject.SetActive(false);
     }
 }
예제 #11
0
    public void UpdateParticleSystem()
    {
        ParticleSystem refSystem = referenceLine.GetComponent <ParticleSystem>();

        ParticleSystem.MainModule                 refSetting          = refSystem.main;
        ParticleSystem.EmissionModule             refEmission         = refSystem.emission;
        ParticleSystem.RotationOverLifetimeModule refRotationLifeTime = refSystem.rotationOverLifetime;
        ParticleSystem.SizeOverLifetimeModule     refSizeLifetime     = refSystem.sizeOverLifetime;
        ParticleSystemRenderer refRenderer = refSystem.GetComponent <ParticleSystemRenderer>();

        ParticleSystem.Burst refBurst = refEmission.GetBurst(0);

        foreach (Line line in triangleComplex.lines)
        {
            ParticleSystem                            particleSystem           = line.GetComponent <ParticleSystem>();
            ParticleSystem.MainModule                 particleSettings         = particleSystem.main;
            ParticleSystem.EmissionModule             particleEmission         = particleSystem.emission;
            ParticleSystem.RotationOverLifetimeModule particleRotationLifeTime = particleSystem.rotationOverLifetime;
            ParticleSystem.SizeOverLifetimeModule     particleSizeLifetime     = particleSystem.sizeOverLifetime;
            ParticleSystemRenderer                    particleRenderer         = particleSystem.GetComponent <ParticleSystemRenderer>();

            particleSettings.customSimulationSpace = refSetting.customSimulationSpace;
            particleSettings.duration                  = refSetting.duration;
            particleSettings.emitterVelocityMode       = refSetting.emitterVelocityMode;
            particleSettings.flipRotation              = refSetting.flipRotation;
            particleSettings.gravityModifier           = refSetting.gravityModifier;
            particleSettings.gravityModifierMultiplier = refSetting.gravityModifierMultiplier;
            particleSettings.loop                     = refSetting.loop;
            particleSettings.maxParticles             = refSetting.maxParticles;
            particleSettings.playOnAwake              = refSetting.playOnAwake;
            particleSettings.prewarm                  = refSetting.prewarm;
            particleSettings.scalingMode              = refSetting.scalingMode;
            particleSettings.simulationSpace          = refSetting.simulationSpace;
            particleSettings.simulationSpeed          = refSetting.simulationSpeed;
            particleSettings.startColor               = refSetting.startColor;
            particleSettings.startDelay               = refSetting.startDelay;
            particleSettings.startDelayMultiplier     = refSetting.startDelayMultiplier;
            particleSettings.startLifetime            = refSetting.startLifetime;
            particleSettings.startLifetimeMultiplier  = refSetting.startLifetimeMultiplier;
            particleSettings.startRotation            = refSetting.startRotation;
            particleSettings.startRotation3D          = refSetting.startRotation3D;
            particleSettings.startRotationMultiplier  = refSetting.startRotationMultiplier;
            particleSettings.startRotationX           = refSetting.startRotationX;
            particleSettings.startRotationXMultiplier = refSetting.startRotationXMultiplier;
            particleSettings.startRotationY           = refSetting.startRotationY;
            particleSettings.startRotationYMultiplier = refSetting.startRotationYMultiplier;
            particleSettings.startRotationZ           = refSetting.startRotationZ;
            particleSettings.startRotationZMultiplier = refSetting.startRotationZMultiplier;
            particleSettings.startSize                = refSetting.startSize;
            particleSettings.startSize3D              = refSetting.startSize3D;
            particleSettings.startSizeMultiplier      = refSetting.startSizeMultiplier;
            particleSettings.startSizeX               = refSetting.startSizeX;
            particleSettings.startSizeXMultiplier     = refSetting.startSizeXMultiplier;
            particleSettings.startSizeY               = refSetting.startSizeY;
            particleSettings.startSizeYMultiplier     = refSetting.startSizeYMultiplier;
            particleSettings.startSizeZ               = refSetting.startSizeZ;
            particleSettings.startSizeZMultiplier     = refSetting.startSizeZMultiplier;
            particleSettings.startSpeed               = refSetting.startSpeed;
            particleSettings.startSpeedMultiplier     = refSetting.startSpeedMultiplier;
            particleSettings.stopAction               = refSetting.stopAction;
            particleSettings.useUnscaledTime          = refSetting.useUnscaledTime;

            particleEmission.burstCount                 = refEmission.burstCount;
            particleEmission.enabled                    = refEmission.enabled;
            particleEmission.rateOverDistance           = refEmission.rateOverDistance;
            particleEmission.rateOverDistanceMultiplier = refEmission.rateOverDistanceMultiplier;
            particleEmission.rateOverTime               = refEmission.rateOverTime;
            particleEmission.rateOverTimeMultiplier     = refEmission.rateOverTimeMultiplier;

            particleRotationLifeTime.enabled      = refRotationLifeTime.enabled;
            particleRotationLifeTime.separateAxes = refRotationLifeTime.separateAxes;
            particleRotationLifeTime.x            = refRotationLifeTime.x;
            particleRotationLifeTime.xMultiplier  = refRotationLifeTime.xMultiplier;
            particleRotationLifeTime.y            = refRotationLifeTime.y;
            particleRotationLifeTime.yMultiplier  = refRotationLifeTime.yMultiplier;
            particleRotationLifeTime.z            = refRotationLifeTime.z;
            particleRotationLifeTime.zMultiplier  = refRotationLifeTime.zMultiplier;

            particleSizeLifetime.enabled        = refSizeLifetime.enabled;
            particleSizeLifetime.separateAxes   = refSizeLifetime.separateAxes;
            particleSizeLifetime.size           = refSizeLifetime.size;
            particleSizeLifetime.sizeMultiplier = refSizeLifetime.sizeMultiplier;
            particleSizeLifetime.x           = refSizeLifetime.x;
            particleSizeLifetime.xMultiplier = refSizeLifetime.xMultiplier;
            particleSizeLifetime.y           = refSizeLifetime.y;
            particleSizeLifetime.yMultiplier = refSizeLifetime.yMultiplier;
            particleSizeLifetime.z           = refSizeLifetime.z;
            particleSizeLifetime.zMultiplier = refSizeLifetime.zMultiplier;

            particleRenderer.minParticleSize = refRenderer.minParticleSize;

            particleEmission.SetBursts(new ParticleSystem.Burst[] { refBurst });
        }
    }