public void DeserializeBeforeRef(UABUnpacker unpacker, UABField field, ref object value, List <ISerializer> serializers) { var data = new Data(); unpacker.Deserialize(data, field.fields, serializers); var ps = value as ParticleSystem; #if UNITY_5_5_OR_NEWER ps.useAutoRandomSeed = data.useAutoRandomSeed; if (ps.useAutoRandomSeed == false) { ps.randomSeed = data.randomSeed; } #endif #if UNITY_5_5_OR_NEWER UABUtils.CopyToParticleSystemModule(data.main, ps.main); { UABUtils.CopyToParticleSystemModule(data.emission.data, ps.emission); var bursts = new UnityEngine.ParticleSystem.Burst[data.emission.bursts.Length]; for (int i = 0; i < data.emission.bursts.Length; ++i) { bursts[i] = UABUtils.CopyToParticleSystemModule(data.emission.bursts[i], bursts[i]); } ps.emission.SetBursts(bursts, data.emission.bursts.Length); } #endif UABUtils.CopyToParticleSystemModule(data.shape, ps.shape); UABUtils.CopyToParticleSystemModule(data.velocityOverLifetime, ps.velocityOverLifetime); UABUtils.CopyToParticleSystemModule(data.limitVelocityOverLifetime, ps.limitVelocityOverLifetime); UABUtils.CopyToParticleSystemModule(data.inheritVelocity, ps.inheritVelocity); UABUtils.CopyToParticleSystemModule(data.forceOverLifetime, ps.forceOverLifetime); UABUtils.CopyToParticleSystemModule(data.colorOverLifetime, ps.colorOverLifetime); UABUtils.CopyToParticleSystemModule(data.sizeOverLifetime, ps.sizeOverLifetime); UABUtils.CopyToParticleSystemModule(data.sizeBySpeed, ps.sizeBySpeed); UABUtils.CopyToParticleSystemModule(data.rotationOverLifetime, ps.rotationOverLifetime); UABUtils.CopyToParticleSystemModule(data.rotationBySpeed, ps.rotationBySpeed); UABUtils.CopyToParticleSystemModule(data.externalForces, ps.externalForces); UABUtils.CopyToParticleSystemModule(data.rotationBySpeed, ps.rotationBySpeed); #if UNITY_5_5_OR_NEWER UABUtils.CopyToParticleSystemModule(data.noise, ps.noise); #endif UABUtils.CopyToParticleSystemModule(data.collision, ps.collision); #if UNITY_5_5_OR_NEWER UABUtils.CopyToParticleSystemModule(data.trigger, ps.trigger); { UABUtils.CopyToParticleSystemModule(data.subEmitters.data, ps.subEmitters); for (int i = 0; i < data.subEmitters.subEmitters.Length; ++i) { ps.subEmitters.AddSubEmitter(data.subEmitters.subEmitters[i], data.subEmitters.types[i], data.subEmitters.properties[i]); } } //UABUtils.CopyToParticleSystemModule(data.textureSheetAnimation, ps.textureSheetAnimation); UABUtils.CopyToParticleSystemModule(data.lights, ps.lights); UABUtils.CopyToParticleSystemModule(data.trails, ps.trails); #endif }
public void Serialize(UABPacker packer, UABField field, ref object value, List <ISerializer> serializers) { field.serializatorId = this.GetId(); var ps = value as ParticleSystem; var data = new Data(); #if UNITY_5_5_OR_NEWER data.useAutoRandomSeed = ps.useAutoRandomSeed; if (data.useAutoRandomSeed == false) { data.randomSeed = ps.randomSeed; } else { data.randomSeed = 0; } #endif #if UNITY_5_5_OR_NEWER data.main = UABUtils.CopyFromParticleSystemModule(ps.main, data.main); { data.emission.data = UABUtils.CopyFromParticleSystemModule(ps.emission, data.emission.data); var bursts = new UnityEngine.ParticleSystem.Burst[ps.emission.burstCount]; ps.emission.GetBursts(bursts); data.emission.bursts = new Data.EmissionModule.Burst[bursts.Length]; for (int i = 0; i < bursts.Length; ++i) { data.emission.bursts[i] = new Data.EmissionModule.Burst(); UABUtils.CopyFromParticleSystemModule(bursts[i], data.emission.bursts[i]); } } #endif data.shape = UABUtils.CopyFromParticleSystemModule(ps.shape, data.shape); data.velocityOverLifetime = UABUtils.CopyFromParticleSystemModule(ps.velocityOverLifetime, data.velocityOverLifetime); data.limitVelocityOverLifetime = UABUtils.CopyFromParticleSystemModule(ps.limitVelocityOverLifetime, data.limitVelocityOverLifetime); data.inheritVelocity = UABUtils.CopyFromParticleSystemModule(ps.inheritVelocity, data.inheritVelocity); data.forceOverLifetime = UABUtils.CopyFromParticleSystemModule(ps.forceOverLifetime, data.forceOverLifetime); data.colorOverLifetime = UABUtils.CopyFromParticleSystemModule(ps.colorOverLifetime, data.colorOverLifetime); data.colorOverLifetime = UABUtils.CopyFromParticleSystemModule(ps.colorOverLifetime, data.colorOverLifetime); data.sizeOverLifetime = UABUtils.CopyFromParticleSystemModule(ps.sizeOverLifetime, data.sizeOverLifetime); data.sizeBySpeed = UABUtils.CopyFromParticleSystemModule(ps.sizeBySpeed, data.sizeBySpeed); data.rotationOverLifetime = UABUtils.CopyFromParticleSystemModule(ps.rotationOverLifetime, data.rotationOverLifetime); data.rotationBySpeed = UABUtils.CopyFromParticleSystemModule(ps.rotationBySpeed, data.rotationBySpeed); data.externalForces = UABUtils.CopyFromParticleSystemModule(ps.externalForces, data.externalForces); data.rotationBySpeed = UABUtils.CopyFromParticleSystemModule(ps.rotationBySpeed, data.rotationBySpeed); #if UNITY_5_5_OR_NEWER data.noise = UABUtils.CopyFromParticleSystemModule(ps.noise, data.noise); #endif data.collision = UABUtils.CopyFromParticleSystemModule(ps.collision, data.collision); #if UNITY_5_5_OR_NEWER data.trigger = UABUtils.CopyFromParticleSystemModule(ps.trigger, data.trigger); { data.subEmitters.data = UABUtils.CopyFromParticleSystemModule(ps.subEmitters, data.subEmitters.data); data.subEmitters.subEmitters = new ParticleSystem[ps.subEmitters.subEmittersCount]; data.subEmitters.properties = new ParticleSystemSubEmitterProperties[ps.subEmitters.subEmittersCount]; data.subEmitters.types = new ParticleSystemSubEmitterType[ps.subEmitters.subEmittersCount]; for (int i = 0; i < ps.subEmitters.subEmittersCount; ++i) { data.subEmitters.subEmitters[i] = ps.subEmitters.GetSubEmitterSystem(i); data.subEmitters.properties[i] = ps.subEmitters.GetSubEmitterProperties(i); data.subEmitters.types[i] = ps.subEmitters.GetSubEmitterType(i); } } #endif data.textureSheetAnimation = UABUtils.CopyFromParticleSystemModule(ps.textureSheetAnimation, data.textureSheetAnimation); #if UNITY_5_5_OR_NEWER data.lights = UABUtils.CopyFromParticleSystemModule(ps.lights, data.lights); data.trails = UABUtils.CopyFromParticleSystemModule(ps.trails, data.trails); #endif field.fields = packer.Serialize(data, serializers); }