public override unsafe FakeStruct LoadFromObject(Component com, DataBuffer buffer)
        {
            var obj = com as EdgeCollider2D;

            if (obj == null)
            {
                return(null);
            }
            FakeStruct        fake = new FakeStruct(buffer, EdgeColliderData.ElementSize);
            EdgeColliderData *ec   = (EdgeColliderData *)fake.ip;

            if (obj.sharedMaterial != null)
            {
                ec->sharedMaterial = buffer.AddData(obj.sharedMaterial.name);
            }
            ec->offset         = obj.offset;
            ec->usedByEffector = obj.usedByEffector;
            ec->isTrigger      = obj.isTrigger;
            ec->density        = obj.density;
            ec->edgeRadius     = obj.edgeRadius;
            if (obj.points != null)
            {
                ec->points = buffer.AddArray <Vector2>(obj.points);
            }
            return(fake);
        }
        public unsafe override void LoadToComponent(FakeStruct fake, Component game, FakeStruct main)
        {
            EdgeColliderData *data = (EdgeColliderData *)fake.ip;
            var obj = game.GetComponent <EdgeCollider2D>();

            if (obj == null)
            {
                return;
            }
            obj.points         = fake.buffer.GetArray <Vector2>(data->points);
            obj.offset         = data->offset;
            obj.usedByEffector = data->usedByEffector;
            obj.isTrigger      = data->isTrigger;
            obj.density        = data->density;
            obj.edgeRadius     = data->edgeRadius;
            string mat = fake.buffer.GetData(data->sharedMaterial) as string;

            if (mat != null)
            {
                obj.sharedMaterial = new PhysicsMaterial2D(mat);
            }
        }