Changeset 14101

Show
Ignore:
Timestamp:
11/09/15 17:13:03 (2 years ago)
Author:
robert
Message:

Release OpenSceneGraph-3.5.1

Location:
OpenSceneGraph/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/include/osgDB/Serializer

    r14100 r14101  
    11461146    virtual void* getElement(osg::Object& obj, void* ptrKey) const { return 0; } 
    11471147    virtual const void* getElement(const osg::Object& obj, void* ptrKey) const { return 0; } 
     1148    virtual unsigned int size(const osg::Object& obj) const { return 0; } 
    11481149 
    11491150protected: 
     
    12031204        if (itr==map.end()) return 0; 
    12041205        else return &(itr->second); 
     1206    } 
     1207 
     1208    virtual unsigned int size(const osg::Object& obj) const 
     1209    { 
     1210        const C& object = OBJECT_CAST<const C&>(obj); 
     1211        const P& map = (object.*_constgetter)(); 
     1212        return map.size(); 
    12051213    } 
    12061214 
  • OpenSceneGraph/trunk/src/osgPlugins/lua/LuaScriptEngine.cpp

    r14100 r14101  
    224224} 
    225225 
    226 static int getContainerClear(lua_State* _lua) 
     226static int callVectorClear(lua_State* _lua) 
    227227{ 
    228228    const LuaScriptEngine* lse = reinterpret_cast<const LuaScriptEngine*>(lua_topointer(_lua, lua_upvalueindex(1))); 
     
    246246} 
    247247 
    248 static int getContainerResize(lua_State* _lua) 
     248static int callVectorResize(lua_State* _lua) 
    249249{ 
    250250    const LuaScriptEngine* lse = reinterpret_cast<const LuaScriptEngine*>(lua_topointer(_lua, lua_upvalueindex(1))); 
     
    268268} 
    269269 
    270 static int getContainerReserve(lua_State* _lua) 
     270static int callVectorReserve(lua_State* _lua) 
    271271{ 
    272272    const LuaScriptEngine* lse = reinterpret_cast<const LuaScriptEngine*>(lua_topointer(_lua, lua_upvalueindex(1))); 
     
    291291 
    292292 
    293 static int getContainerAdd(lua_State* _lua) 
     293static int callVectorAdd(lua_State* _lua) 
    294294{ 
    295295    const LuaScriptEngine* lse = reinterpret_cast<const LuaScriptEngine*>(lua_topointer(_lua, lua_upvalueindex(1))); 
     
    426426} 
    427427 
    428 static int getMapClear(lua_State* _lua) 
     428static int callMapClear(lua_State* _lua) 
    429429{ 
    430430    const LuaScriptEngine* lse = reinterpret_cast<const LuaScriptEngine*>(lua_topointer(_lua, lua_upvalueindex(1))); 
     
    441441    if (ms) 
    442442    { 
    443         OSG_NOTICE<<"Doing map clear"<<std::endl; 
    444  
    445443        ms->clear(*object); 
    446444        return 0; 
     445    } 
     446 
     447    return 0; 
     448} 
     449 
     450static int getMapSize(lua_State* _lua) 
     451{ 
     452    const LuaScriptEngine* lse = reinterpret_cast<const LuaScriptEngine*>(lua_topointer(_lua, lua_upvalueindex(1))); 
     453    int n = lua_gettop(_lua);    /* number of arguments */ 
     454    if (n<1 || lua_type(_lua, 1)!=LUA_TTABLE) return 0; 
     455 
     456    osg::Object* object  = lse->getObjectFromTable<osg::Object>(1); 
     457    std::string containerPropertyName = lse->getStringFromTable(1,"containerPropertyName"); 
     458 
     459    // check to see if Object "is a" vector 
     460    osgDB::BaseSerializer::Type type; 
     461    osgDB::BaseSerializer* bs = lse->getPropertyInterface().getSerializer(object, containerPropertyName, type); 
     462    osgDB::MapBaseSerializer* ms = dynamic_cast<osgDB::MapBaseSerializer*>(bs); 
     463    if (ms) 
     464    { 
     465        lua_pushinteger(lse->getLuaState(), ms->size(*object)); 
     466        return 1; 
    447467    } 
    448468 
     
    28762896        { 
    28772897            assignClosure("size", getContainerSize); 
    2878             assignClosure("clear", getContainerClear); 
    2879             assignClosure("resize", getContainerResize); 
    2880             assignClosure("reserve", getContainerReserve); 
    2881             assignClosure("add", getContainerAdd); 
     2898            assignClosure("clear", callVectorClear); 
     2899            assignClosure("resize", callVectorResize); 
     2900            assignClosure("reserve", callVectorReserve); 
     2901            assignClosure("add", callVectorAdd); 
    28822902 
    28832903            luaL_getmetatable(_lua, "LuaScriptEngine.Container"); 
     
    28872907        { 
    28882908            OSG_NOTICE<<"Need to set up map object"<<std::endl; 
    2889             assignClosure("clear", getMapClear); 
     2909            assignClosure("clear", callMapClear); 
     2910            assignClosure("size", getMapSize); 
    28902911 
    28912912            luaL_getmetatable(_lua, "LuaScriptEngine.Map"); 
     
    29502971 
    29512972            assignClosure("size", getContainerSize); 
    2952             assignClosure("clear", getContainerClear); 
    2953             assignClosure("resize", getContainerResize); 
    2954             assignClosure("reserve", getContainerReserve); 
    2955             assignClosure("add", getContainerAdd); 
     2973            assignClosure("clear", callVectorClear); 
     2974            assignClosure("resize", callVectorResize); 
     2975            assignClosure("reserve", callVectorReserve); 
     2976            assignClosure("add", callVectorAdd); 
    29562977 
    29572978            luaL_getmetatable(_lua, "LuaScriptEngine.Container");