anchor.diff:                  then { emitter with Body = { emitter.Body with Rotation = entityRotation }}
                   else emitter
               let particleSystem = { particleSystem with Emitters = Map.add typeof<Particles.BasicEmitter>.Name (emitter :> Particles.Emitter) particleSystem.Emitters }
  -            entity.SetParticleSystem particleSystem world
  +            let world = entity.SetParticleSystem particleSystem world
  +            (Cascade, world)
   
           static member Properties =
               [define Entity.PublishChanges true
  
positive.code:     type BasicEmitterFacet () =
          inherit Facet ()
  
          static let updateEmitter (descriptor : Particles.BasicEmitterDescriptor) (entity : Entity) world =
              let particleSystem = entity.GetParticleSystem world
              let emitter = Map.find typeof<Particles.BasicEmitter>.Name particleSystem.Emitters :?> Particles.BasicEmitter
              let emitter =
                  let entityPosition = entity.GetPosition world
                  if v2Neq emitter.Body.Position (entityPosition + descriptor.Body.Position)
                  then { emitter with Body = { emitter.Body with Position = entityPosition + descriptor.Body.Position }}
                  else emitter
              let emitter =
                  let entityRotation = entity.GetRotation world
                  if emitter.Body.Rotation <> entityRotation + descriptor.Body.Rotation
                  then { emitter with Body = { emitter.Body with Rotation = entityRotation + descriptor.Body.Rotation }}
                  else emitter
              let emitter = if v2Neq emitter.Body.Gravity descriptor.Body.Gravity then { emitter with Body = { emitter.Body with Gravity = descriptor.Body.Gravity }} else emitter
              let emitter = if assNeq emitter.Image descriptor.Image then { emitter with Image = descriptor.Image } else emitter
              let emitter = if emitter.Blend <> descriptor.Blend then { emitter with Blend = descriptor.Blend } else emitter
              let emitter = if emitter.Life.LifeTimeOpt <> descriptor.LifeTimeOpt then { emitter with Life = { emitter.Life with LifeTimeOpt = descriptor.LifeTimeOpt }} else emitter
              let emitter = if emitter.ParticleLifeTimeOpt <> descriptor.ParticleLifeTimeOpt then { emitter with ParticleLifeTimeOpt = descriptor.ParticleLifeTimeOpt } else emitter
              let emitter = if emitter.ParticleRate <> descriptor.ParticleRate then { emitter with ParticleRate = descriptor.ParticleRate } else emitter
              let emitter = if emitter.ParticleBuffer.Length <> descriptor.ParticleMax then Particles.BasicEmitter.resize descriptor.ParticleMax emitter else emitter
              let emitter = if emitter.ParticleSeed <> descriptor.ParticleSeed then { emitter with ParticleSeed = descriptor.ParticleSeed } else emitter
              let emitter = if emitter.Constraint <> descriptor.Constraint then { emitter with Constraint = descriptor.Constraint } else emitter
              let particleSystem = { particleSystem with Emitters = Map.add typeof<Particles.BasicEmitter>.Name (emitter :> Particles.Emitter) particleSystem.Emitters }
              entity.SetParticleSystem particleSystem world
  
          static let handleBoundsChanged evt world =
              let entity = evt.Subscriber : Entity
  
negative.code:         member this.GetBasicEmitterDescriptors world : Particles.BasicEmitterDescriptors = this.Get Property? BasicEmitterDescriptors world // NOTE: Body.Position and Rotation will act as offsets.
          member this.SetBasicEmitterDescriptors (value : Particles.BasicEmitterDescriptors) world = this.SetFast Property? BasicEmitterDescriptors true value world
          member this.BasicEmitterDescriptors = lens Property? BasicEmitterDescriptors this.GetBasicEmitterDescriptors this.SetBasicEmitterDescriptors this
  
      type BasicEmittersFacet () =
          inherit Facet ()
  
          static let updateEmitter (descriptor : Particles.BasicEmitterDescriptor) (emitter : Particles.BasicEmitter) position rotation =
              let emitter =
                  if v2Neq emitter.Body.Position (position + descriptor.Body.Position)
                  then { emitter with Body = { emitter.Body with Position = position + descriptor.Body.Position }}
                  else emitter
              let emitter =
                  if emitter.Body.Rotation <> rotation + descriptor.Body.Rotation
                  then { emitter with Body = { emitter.Body with Rotation = rotation + descriptor.Body.Rotation }}
                  else emitter
              let emitter = if v2Neq emitter.Body.Gravity descriptor.Body.Gravity then { emitter with Body = { emitter.Body with Gravity = descriptor.Body.Gravity }} else emitter
              let emitter = if assNeq emitter.Image descriptor.Image then { emitter with Image = descriptor.Image } else emitter
              let emitter = if emitter.Blend <> descriptor.Blend then { emitter with Blend = descriptor.Blend } else emitter
              let emitter = if emitter.Life.LifeTimeOpt <> descriptor.LifeTimeOpt then { emitter with Life = { emitter.Life with LifeTimeOpt = descriptor.LifeTimeOpt }} else emitter
              let emitter = if emitter.ParticleLifeTimeOpt <> descriptor.ParticleLifeTimeOpt then { emitter with ParticleLifeTimeOpt = descriptor.ParticleLifeTimeOpt } else emitter
              let emitter = if emitter.ParticleRate <> descriptor.ParticleRate then { emitter with ParticleRate = descriptor.ParticleRate } else emitter
              let emitter = if emitter.ParticleBuffer.Length <> descriptor.ParticleMax then Particles.BasicEmitter.resize descriptor.ParticleMax emitter else emitter
              let emitter = if emitter.ParticleSeed <> descriptor.ParticleSeed then { emitter with ParticleSeed = descriptor.ParticleSeed } else emitter
              let emitter = if emitter.Constraint <> descriptor.Constraint then { emitter with Constraint = descriptor.Constraint } else emitter
              emitter
  
          do ignore updateEmitter // silence warning for now
          
  
  [<AutoOpen>]
  module EffectFacetModule =
  