public static void ParticleCollisionSettings(this ParticleSystem PS, bool enabled = true, float ColliderForce = 0f, float RadiusScale = 0f, ParticleSystemCollisionMode Mode = ParticleSystemCollisionMode.Collision3D, ParticleSystemCollisionQuality Quality = ParticleSystemCollisionQuality.High, ParticleSystemCollisionType Type = ParticleSystemCollisionType.World, bool DynamicColliders = true, bool SendMessages = true, string[] MaskNames = null, // Set Outside, selects Default if none) float BounceMin = 0f, float BounceMax = 0f ) { ParticleSystem.CollisionModule collisionModule = PS.collision; // Collision Settings collisionModule.enabled = enabled; collisionModule.bounce = new ParticleSystem.MinMaxCurve(BounceMin, BounceMax); collisionModule.colliderForce = ColliderForce; collisionModule.radiusScale = RadiusScale; collisionModule.mode = Mode; collisionModule.quality = Quality; collisionModule.type = Type; collisionModule.collidesWith = GetLayer(MaskNames); collisionModule.enableDynamicColliders = DynamicColliders; collisionModule.sendCollisionMessages = SendMessages; }
protected override void ReadFromImpl(object obj) { base.ReadFromImpl(obj); ParticleSystem.CollisionModule uo = (ParticleSystem.CollisionModule)obj; enabled = uo.enabled; type = uo.type; mode = uo.mode; dampen = uo.dampen; dampenMultiplier = uo.dampenMultiplier; bounce = uo.bounce; bounceMultiplier = uo.bounceMultiplier; lifetimeLoss = uo.lifetimeLoss; lifetimeLossMultiplier = uo.lifetimeLossMultiplier; minKillSpeed = uo.minKillSpeed; maxKillSpeed = uo.maxKillSpeed; collidesWith = uo.collidesWith; enableDynamicColliders = uo.enableDynamicColliders; maxCollisionShapes = uo.maxCollisionShapes; quality = uo.quality; voxelSize = uo.voxelSize; radiusScale = uo.radiusScale; sendCollisionMessages = uo.sendCollisionMessages; colliderForce = uo.colliderForce; multiplyColliderForceByCollisionAngle = uo.multiplyColliderForceByCollisionAngle; multiplyColliderForceByParticleSpeed = uo.multiplyColliderForceByParticleSpeed; multiplyColliderForceByParticleSize = uo.multiplyColliderForceByParticleSize; }
// Constructor public RFParticleCollisionDebris() { collidesWith = RFParticleCollisionWithType.Everything; quality = ParticleSystemCollisionQuality.High; radiusScale = 0.1f; dampenType = RFParticleCollisionMatType.ByProperties; dampenMin = 0.1f; dampenMax = 0.4f; bounceType = RFParticleCollisionMatType.ByProperties; bounceMin = 0.2f; bounceMax = 0.4f; }
// Copy from public void CopyFrom(RFParticleCollisionDebris source) { collidesWith = source.collidesWith; quality = source.quality; radiusScale = source.radiusScale; dampenType = source.dampenType; dampenMin = source.dampenMin; dampenMax = source.dampenMax; bounceType = source.bounceType; bounceMin = source.bounceMin; bounceMax = source.bounceMax; propertiesSet = source.propertiesSet; }
// Copy from public void CopyFrom(RFParticleCollisionDust source) { collidesWith = source.collidesWith; quality = source.quality; radiusScale = source.radiusScale; }
// Constructor public RFParticleCollisionDust() { collidesWith = RFParticles.RFParticleCollisionWithType.Everything; quality = ParticleSystemCollisionQuality.High; radiusScale = 1f; }