void offmeshlinkdata_to_luaval(lua_State* L,const cocos2d::OffMeshLinkData& inValue)
{
    if (nullptr == L)
        return;
    
    lua_newtable(L);
    lua_pushstring(L, "startPosition");
    vec3_to_luaval(L, inValue.startPosition);
    lua_rawset(L, -3);
    
    lua_pushstring(L, "endPosition");
    vec3_to_luaval(L, inValue.endPosition);
    lua_rawset(L, -3);
}
void CollisionPoint_to_luaval(lua_State* L,const cocos2d::Physics3DCollisionInfo::CollisionPoint& collisionPoint)
{
    if (nullptr  == L)
        return;
    
    lua_newtable(L);                                    
    lua_pushstring(L, "localPositionOnA");
    vec3_to_luaval(L, collisionPoint.localPositionOnA);
    lua_rawset(L, -3);
    lua_pushstring(L, "worldPositionOnA");
    vec3_to_luaval(L, collisionPoint.worldPositionOnA);
    lua_rawset(L, -3);
    lua_pushstring(L, "localPositionOnB");
    vec3_to_luaval(L, collisionPoint.localPositionOnB);
    lua_rawset(L, -3);
    lua_pushstring(L, "worldPositionOnB");
    vec3_to_luaval(L, collisionPoint.worldPositionOnB);
    lua_rawset(L, -3);
    lua_pushstring(L, "worldNormalOnB");
    vec3_to_luaval(L, collisionPoint.worldNormalOnB);
    lua_rawset(L, -3);
}
void Physics3DWorld_HitResult_to_luaval(lua_State* L, const cocos2d::Physics3DWorld::HitResult& hitResult)
{
    if (nullptr  == L)
        return;
    
    lua_newtable(L);
    lua_pushstring(L, "hitPosition");
    vec3_to_luaval(L, hitResult.hitPosition);
    lua_rawset(L, -3);
    lua_pushstring(L, "hitNormal");
    vec3_to_luaval(L, hitResult.hitNormal);
    lua_rawset(L, -3);
    lua_pushstring(L, "hitObj");
    if (nullptr == hitResult.hitObj)
    {
        lua_pushnil(L);
    }
    else
    {
        object_to_luaval<cocos2d::Physics3DObject>(L, "cc.Physics3DObject",hitResult.hitObj);
    }
    lua_rawset(L, -3);
}