Beispiel #1
0
 public EditorItem(IParticleModifier modifierModifierInstance)
 {
     ItemType                 = EditorItemType.ExistingModifier;
     InitializerType          = null;
     ModifierInstance         = modifierModifierInstance;
     PositionModifierInstance = null;
 }
 public LifetimeModifier(IParticleModifier modifier, double startTime, double endTime)
 {
     this.modifier  = modifier;
     this.startTime = startTime;
     this.endTime   = endTime;
     this.length    = endTime - startTime;
 }
 private void InitializeModifiers()
 {
     foreach (IParticleModifier modifier in this.Emitter.Data.Modifiers)
     {
         IParticleModifier addedModifier = this.Modifiers.AddLast((IParticleModifier)modifier.Clone()).Value;
         addedModifier.SetParticle(this);
     }
 }
Beispiel #4
0
        protected override void OnNewSettingsLoaded()
        {
            var activeModifiers = EmitterSettings.Modifiers
                                  .OfType <IEditorObject>()
                                  .ToArray();

            var selectableModifiers = new IParticleModifier[] { null }
            .Concat(AllModifiers.Where(x => activeModifiers.All(y => y.GetType() != x.GetType())))
            .ToArray();

            _modifierTypes             = selectableModifiers.Select(x => x?.GetType()).ToArray();
            _modifierTypeNames         = selectableModifiers.Select(x => x?.EditorShortName ?? "<None>").ToArray();
            _selectedModifierTypeIndex = 0;
        }
Beispiel #5
0
        private void WorkbenchOnModifierRemovalRequested(object sender, IParticleModifier e)
        {
            var command = new RemoveModifierCommand(e.GetType());

            _commandHandler.Execute(command);
        }
Beispiel #6
0
 /// <summary>Initializes a new particle movement affector</summary>
 /// <param name="modifier">Used to modify the particles</param>
 public MovementAffector(IParticleModifier <ParticleType> modifier)
 {
     this.modifier = modifier;
 }
Beispiel #7
0
 /// <summary>
 ///   Initializes a new gravity affector with a custom gravity vector
 /// </summary>
 /// <param name="modifier">
 ///   Modifier through which the particles' properties will be changed
 /// </param>
 /// <param name="gravity">Gravity vector that will be applied to the particles</param>
 public GravityAffector(IParticleModifier <ParticleType> modifier, Vector3 gravity)
 {
     this.modifier = modifier;
     this.Gravity  = gravity;
 }
Beispiel #8
0
 /// <summary>
 ///   Initializes a new gravity affector with a custom gravity constant
 /// </summary>
 /// <param name="modifier">
 ///   Modifier through which the particles' properties will be changed
 /// </param>
 /// <param name="gravity">
 ///   Gravity constant that will be applied to the particles
 /// </param>
 public GravityAffector(IParticleModifier <ParticleType> modifier, float gravity) :
     this(modifier, new Vector3(0.0f, -gravity, 0.0f))
 {
 }
Beispiel #9
0
 /// <summary>Initializes a new gravity affector</summary>
 /// <param name="modifier">
 ///   Modifier through which the particles' properties will be changed
 /// </param>
 public GravityAffector(IParticleModifier <ParticleType> modifier) :
     this(modifier, StandardEarthGravity)
 {
 }
Beispiel #10
0
 public ParticleSystem AddModifier(IParticleModifier modifier)
 {
     mModifiers.Add(modifier);
     return(this);
 }
Beispiel #11
0
 public UpdateModifierCommand(IParticleModifier modifier)
 {
     _modifier = modifier ?? throw new ArgumentNullException(nameof(modifier));
 }