public override void ReadFrom(object obj)
        {
            base.ReadFrom(obj);
            if (obj == null)
            {
                return;
            }
            UnityEngine.ParticleSystem.CollisionModule o = (UnityEngine.ParticleSystem.CollisionModule)obj;
            enabled = o.enabled;
            type    = o.type;
            mode    = o.mode;
#if !RT_PE_MAINTANANCE
            dampen       = Read(dampen, o.dampen);
            bounce       = Read(bounce, o.bounce);
            lifetimeLoss = Read(lifetimeLoss, o.lifetimeLoss);
#endif
            dampenMultiplier         = o.dampenMultiplier;
            bounceMultiplier         = o.bounceMultiplier;
            lifetimeLossMultiplier   = o.lifetimeLossMultiplier;
            minKillSpeed             = o.minKillSpeed;
            maxKillSpeed             = o.maxKillSpeed;
            collidesWith             = o.collidesWith;
            enableDynamicColliders   = o.enableDynamicColliders;
            enableInteriorCollisions = o.enableInteriorCollisions;
            maxCollisionShapes       = o.maxCollisionShapes;
            quality               = o.quality;
            voxelSize             = o.voxelSize;
            radiusScale           = o.radiusScale;
            sendCollisionMessages = o.sendCollisionMessages;

            if (o.maxPlaneCount > 20)
            {
                UnityEngine.Debug.LogWarning("maxPlaneCount is expected to be 6 or at least <= 20");
            }
            planes = new long[o.maxPlaneCount];
            for (int i = 0; i < o.maxPlaneCount; ++i)
            {
                planes[i] = o.GetPlane(i).GetMappedInstanceID();
            }
        }
        protected override void GetDependencies(Dictionary <long, Object> dependencies, object obj)
        {
            base.GetDependencies(dependencies, obj);
            if (obj == null)
            {
                return;
            }
            UnityEngine.ParticleSystem.CollisionModule o = (UnityEngine.ParticleSystem.CollisionModule)obj;

            Object[] planeObjects = new Object[o.maxPlaneCount];
            for (int i = 0; i < o.maxPlaneCount; ++i)
            {
                planeObjects[i] = o.GetPlane(i);
            }

            AddDependencies(planeObjects, dependencies);
#if !RT_PE_MAINTANANCE
            GetDependencies(dampen, o.dampen, dependencies);
            GetDependencies(bounce, o.bounce, dependencies);
            GetDependencies(lifetimeLoss, o.lifetimeLoss, dependencies);
#endif
        }