Exemple #1
0
 TimeSpan GetEmitterDuration(EmitterEffect emitterEffect)
 {
     if (emitterEffect.maxTotalParticles == double.PositiveInfinity)
     {
         return(System.Threading.Timeout.InfiniteTimeSpan);
     }
     return(TimeSpan.FromSeconds(emitterEffect.maxTotalParticles / emitterEffect.particlesPerSecond));
 }
        Effect GetEmitterEffect()
        {
            EmitterEffect emitterEffect = new EmitterEffect();

            emitterEffect.bonusVelocityVector = ToVector(tbxBonusVelocity.Text);
            emitterEffect.brightness          = ToTargetValue(tvBrightness);
            emitterEffect.edgeSpread          = nedEdgeSpread.ValueAsDouble / 100.0;
            emitterEffect.effectKind          = EffectKind.Emitter;
            emitterEffect.emitterAirDensity   = nedAirDensity.ValueAsDouble;
            emitterEffect.emitterGravity      = nedEmitterGravity.ValueAsDouble;
            if (rbEmitterRound.IsChecked ?? false)
            {
                emitterEffect.emitterShape = EmitterShape.Circular;
            }
            else
            {
                emitterEffect.emitterShape = EmitterShape.Rectangular;
            }

            emitterEffect.emitterWindDirection   = ToVector(tbxWindDirection.Text);
            emitterEffect.emitterInitialVelocity = ToVector(tbxEmitterInitialVelocity.Text);
            emitterEffect.fadeInTime             = nedParticleFadeInTime.ValueAsDouble;
            emitterEffect.gravityCenter          = ToVector(tbxEmitterGravityCenter.Text);
            emitterEffect.height   = nedEmitterHeight.ValueAsDouble;
            emitterEffect.hue      = ToTargetValue(tvParticleHue);
            emitterEffect.lifeSpan = nedParticleLifeSpan.ValueAsDouble;
            emitterEffect.maxConcurrentParticles   = nedMaxConcurrentParticles.ValueAsDouble;
            emitterEffect.maxOpacity               = nedParticleMaxOpacity.ValueAsDouble / 100.0;
            emitterEffect.maxTotalParticles        = nedMaxTotalParticles.ValueAsDouble;
            emitterEffect.minParticleSize          = nedMinParticleSize.ValueAsDouble;
            emitterEffect.particleAirDensity       = nedParticleAirDensity.ValueAsDouble;
            emitterEffect.particleGravity          = nedParticleGravity.ValueAsDouble;
            emitterEffect.particleGravityCenter    = ToVector(tbxParticleGravityCenter.Text);
            emitterEffect.particleInitialDirection = ToVector(tbxParticleInitialDirection.Text);
            emitterEffect.particleInitialVelocity  = ToTargetValue(tvInitialVelocity);
            emitterEffect.particleMass             = nedParticleMass.ValueAsDouble;
            emitterEffect.particleRadius           = ToTargetValue(tvParticleRadius);
            emitterEffect.particlesPerSecond       = nedParticlesPerSecond.ValueAsDouble;
            emitterEffect.particleWindDirection    = ToVector(tbxParticleWindDirection.Text);
            emitterEffect.radius = nedEmitterRadius.ValueAsDouble;
            emitterEffect.renderOldestParticlesLast = ckbRenderOldestParticlesLast.IsChecked ?? false;
            emitterEffect.saturation   = ToTargetValue(tvParticleSaturation);
            emitterEffect.target       = GetTarget();
            emitterEffect.timeOffsetMs = 0;
            emitterEffect.width        = nedEmitterWidth.ValueAsDouble;
            return(emitterEffect);
        }
Exemple #3
0
        private void EffectBuilder_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            if (loadingInternally)
            {
                return;
            }
            if (!(sender is EffectBuilder effectBuilder))
            {
                return;
            }

            EffectEntry effectEntry = effectBuilder.EffectEntry;

            if (effectEntry == null)
            {
                return;
            }
            SetSelectedColorByEffectType(effectEntry.EffectKind);
            if (effectBuilder.EffectKind == EffectKind.SoundEffect)
            {
                string soundFileName = effectEntry.SoundEffect.soundFileName;
                AdjustSelectedEntryDuration(GetSoundFileDuration(soundFileName), true, soundFileName);
            }
            else if (effectBuilder.EffectKind == EffectKind.Animation)
            {
                AnimationEffect animationEffect = effectEntry.AnimationEffect;
                TimeSpan        duration        = GetAnimationDuration(animationEffect.spriteName);
                if (animationEffect.name != "")
                {
                    AdjustSelectedEntryDuration(duration, false, animationEffect.name);
                }
                else
                {
                    AdjustSelectedEntryDuration(duration, false, animationEffect.spriteName);
                }
            }
            else if (effectBuilder.EffectKind == EffectKind.Emitter)
            {
                EmitterEffect emitterEffect = effectEntry.EmitterEffect;
                TimeSpan      duration      = GetEmitterDuration(emitterEffect);
                AdjustSelectedEntryDuration(duration, false, null);
            }

            OnPropertyChanged();
        }
        void LoadFromEmitter(EmitterEffect emitterEffect)
        {
            if (emitterEffect.emitterShape == EmitterShape.Circular)
            {
                rbEmitterRound.IsChecked       = true;
                nedEmitterRadius.ValueAsDouble = emitterEffect.radius;
            }
            else
            {
                rbEmitterRectangular.IsChecked = true;
                nedEmitterWidth.ValueAsDouble  = emitterEffect.width;
                nedEmitterHeight.ValueAsDouble = emitterEffect.height;
            }
            nedEdgeSpread.ValueAsDouble     = emitterEffect.edgeSpread;
            tbxEmitterInitialVelocity.Text  = ToVectorString(emitterEffect.emitterInitialVelocity);
            nedEmitterGravity.ValueAsDouble = emitterEffect.emitterGravity;
            tbxEmitterGravityCenter.Text    = ToVectorString(emitterEffect.gravityCenter);

            tbxWindDirection.Text                   = ToVectorString(emitterEffect.emitterWindDirection);
            nedAirDensity.ValueAsDouble             = emitterEffect.emitterAirDensity;
            nedParticlesPerSecond.ValueAsDouble     = emitterEffect.particlesPerSecond;
            nedMaxConcurrentParticles.ValueAsDouble = emitterEffect.maxConcurrentParticles;
            nedMaxTotalParticles.ValueAsDouble      = emitterEffect.maxTotalParticles;
            nedParticleGravity.ValueAsDouble        = emitterEffect.particleGravity;
            tbxParticleGravityCenter.Text           = ToVectorString(emitterEffect.particleGravityCenter);
            nedParticleMass.ValueAsDouble           = emitterEffect.particleMass;
            SetTargetValueEdit(tvParticleRadius, emitterEffect.particleRadius);
            nedMinParticleSize.ValueAsDouble = emitterEffect.minParticleSize;
            tbxParticleInitialDirection.Text = ToVectorString(emitterEffect.particleInitialDirection);
            SetTargetValueEdit(tvInitialVelocity, emitterEffect.particleInitialVelocity);
            tbxParticleWindDirection.Text       = ToVectorString(emitterEffect.particleWindDirection);
            nedParticleAirDensity.ValueAsDouble = emitterEffect.particleAirDensity;
            tbxBonusVelocity.Text = ToVectorString(emitterEffect.bonusVelocityVector);
            ckbRenderOldestParticlesLast.IsChecked = emitterEffect.renderOldestParticlesLast;
            nedParticleFadeInTime.ValueAsDouble    = emitterEffect.fadeInTime;
            nedParticleMaxOpacity.ValueAsDouble    = emitterEffect.maxOpacity * 100;
            nedParticleLifeSpan.ValueAsDouble      = emitterEffect.lifeSpan;

            SetTargetValueEdit(tvParticleHue, emitterEffect.hue);
            SetTargetValueEdit(tvParticleSaturation, emitterEffect.saturation);
            SetTargetValueEdit(tvBrightness, emitterEffect.brightness);
        }