From: Markus R. <rol...@us...> - 2007-04-25 20:32:28
|
Update of /cvsroot/simspark/simspark/spark/plugin/rubysceneimporter In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv12579 Modified Files: Tag: RSGEDIT_FILEREF rubysceneimporter.cpp rubysceneimporter.h rubysceneimporter_c.cpp Log Message: - maintain correct mFileName value during recursive calls - added optional registering of created nodes to the SceneDict instance (default turned off) - added and exported method EnableSceneDictionary to Ruby Index: rubysceneimporter.h =================================================================== RCS file: /cvsroot/simspark/simspark/spark/plugin/rubysceneimporter/rubysceneimporter.h,v retrieving revision 1.3 retrieving revision 1.3.2.1 diff -C2 -d -r1.3 -r1.3.2.1 *** rubysceneimporter.h 15 Mar 2007 07:26:28 -0000 1.3 --- rubysceneimporter.h 25 Apr 2007 20:32:24 -0000 1.3.2.1 *************** *** 76,79 **** --- 76,82 ---- void SetUnlinkOnCompleteScenes(bool unlink); + /** registers all created nodes in the RubySceneDict */ + void EnableSceneDictionary(bool enable); + protected: virtual bool ParseScene(const char* scene, int size, *************** *** 111,114 **** --- 114,120 ---- bool mDeltaScene; + /** true, if all created nodes are registered in the RubySceneDict */ + bool mUpdateSceneDict; + /** the major version of the scen graph file */ int mVersionMajor; Index: rubysceneimporter.cpp =================================================================== RCS file: /cvsroot/simspark/simspark/spark/plugin/rubysceneimporter/rubysceneimporter.cpp,v retrieving revision 1.3 retrieving revision 1.3.2.1 diff -C2 -d -r1.3 -r1.3.2.1 *** rubysceneimporter.cpp 15 Mar 2007 07:26:28 -0000 1.3 --- rubysceneimporter.cpp 25 Apr 2007 20:32:23 -0000 1.3.2.1 *************** *** 25,28 **** --- 25,29 ---- #include <zeitgeist/scriptserver/scriptserver.h> #include <oxygen/sceneserver/transform.h> + #include <oxygen/sceneserver/scenedict.h> #include <boost/scoped_array.hpp> *************** *** 74,77 **** --- 75,79 ---- mDeltaScene = false; mAutoUnlink = false; + mUpdateSceneDict = false; } *************** *** 85,88 **** --- 87,95 ---- } + void RubySceneImporter::EnableSceneDictionary(bool enable) + { + mUpdateSceneDict = enable; + } + bool RubySceneImporter::ImportScene(const std::string& fileName, shared_ptr<BaseNode> root, *************** *** 99,102 **** --- 106,110 ---- } + std::string oldFileName = mFileName; mFileName = fileName; *************** *** 106,110 **** buffer[file->Size()] = 0; ! return ParseScene(buffer.get(), file->Size(), root, parameter); } --- 114,121 ---- buffer[file->Size()] = 0; ! bool ok = ParseScene(buffer.get(), file->Size(), root, parameter); ! mFileName = oldFileName; ! ! return ok; } *************** *** 144,147 **** --- 155,168 ---- sexp = iparse_sexp(const_cast<char*>(scene),size,pcont); + if (sexp == 0) + { + GetLog()->Error() + << "(RubySceneImporter) ERROR: failed to parse S-Expressions. " + << "Last read line was " << pcont->line << "\n"; + root->UnlinkChildren(); + return false; + + } + if ( (! mDeltaScene) && *************** *** 322,325 **** --- 343,355 ---- } + if ( + (mUpdateSceneDict) && + (mSceneDict != 0) + ) + { + mSceneDict->Insert + (node, SceneDict::FileRef(mFileName,sexp->line)); + } + return node; } Index: rubysceneimporter_c.cpp =================================================================== RCS file: /cvsroot/simspark/simspark/spark/plugin/rubysceneimporter/rubysceneimporter_c.cpp,v retrieving revision 1.1 retrieving revision 1.1.6.1 diff -C2 -d -r1.1 -r1.1.6.1 *** rubysceneimporter_c.cpp 13 Dec 2005 21:48:50 -0000 1.1 --- rubysceneimporter_c.cpp 25 Apr 2007 20:32:24 -0000 1.1.6.1 *************** *** 23,26 **** --- 23,42 ---- #include "rubysceneimporter.h" + FUNCTION(RubySceneImporter,enableSceneDictionary) + { + bool enable; + + if ( + (in.GetSize() != 1) || + (! in.GetValue(in[0], enable)) + ) + { + return false; + } + + obj->EnableSceneDictionary(enable); + return true; + } + FUNCTION(RubySceneImporter,setUnlinkOnCompleteScenes) { *************** *** 43,46 **** --- 59,63 ---- DEFINE_BASECLASS(oxygen/SceneImporter); DEFINE_FUNCTION(setUnlinkOnCompleteScenes); + DEFINE_FUNCTION(enableSceneDictionary); } |