public unsafe override void LoadToObject(FakeStruct fake, Component game)
        {
            HingeJointData *data = (HingeJointData *)fake.ip;
            var             obj  = game.GetComponent <HingeJoint2D>();

            if (obj == null)
            {
                return;
            }
            obj.enableCollision = data->enableCollision;
            obj.breakForce      = data->breakForce;
            obj.breakTorque     = data->breakTorque;
            obj.anchor          = data->anchor;
            obj.connectedAnchor = data->connectedAnchor;
            obj.autoConfigureConnectedAnchor = data->autoConfigure;
            obj.useMotor  = data->useMotor;
            obj.useLimits = data->useLimits;
            obj.motor     = data->motor;
            obj.limits    = data->limits;
        }
        public override unsafe FakeStruct LoadFromObject(Component com, DataBuffer buffer)
        {
            var obj = com as HingeJoint2D;

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

            dj->enableCollision = obj.enableCollision;
            dj->breakForce      = obj.breakForce;
            dj->breakTorque     = obj.breakTorque;
            dj->anchor          = obj.anchor;
            dj->connectedAnchor = obj.connectedAnchor;
            dj->autoConfigure   = obj.autoConfigureConnectedAnchor;
            dj->useMotor        = obj.useMotor;
            dj->useLimits       = obj.useLimits;
            dj->motor           = obj.motor;
            dj->limits          = obj.limits;
            return(fake);
        }