sceneGraph.lua 4.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. local sceneGraph = class("sceneGraph")
  2. function sceneGraph:ctor()
  3. self.mC2dxScene = 0
  4. self.mFunctionalSceneNode = {}
  5. end
  6. function sceneGraph:destory()
  7. end
  8. function sceneGraph:Inst()
  9. if not sceneGraph.instance then
  10. sceneGraph.instance = sceneGraph.new()
  11. end
  12. return sceneGraph.instance
  13. end
  14. -----------------------------------------------------------------------------
  15. function sceneGraph:LoadGraph(fileName)
  16. local scene = requireExport(fileName).create()
  17. if nil == scene or nil == scene.root then
  18. return -1
  19. end
  20. local rootNode = scene.root
  21. self.mC2dxScene = cc.Scene:create() --cocos2d::Scene::create()
  22. self.mC2dxScene:addChild( rootNode, 1, 9999 )
  23. self.mFunctionalSceneNode[global.MMO.NODE_ROOT] = rootNode
  24. self.mFunctionalSceneNode[global.MMO.NODE_GAME_WORLD] = rootNode:getChildByTag( 10023 )
  25. self.mFunctionalSceneNode[global.MMO.NODE_MAP] = rootNode:getChildByTag( 10023 ):getChildByTag( 10003 )
  26. self.mFunctionalSceneNode[global.MMO.NODE_MAP_SLICE] = rootNode:getChildByTag( 10023 ):getChildByTag( 10003 ):getChildByTag( 10006 )
  27. self.mFunctionalSceneNode[global.MMO.NODE_SKILL_BEHIND] = rootNode:getChildByTag( 10023 ):getChildByTag( 10034 )
  28. self.mFunctionalSceneNode[global.MMO.NODE_ACTOR] = rootNode:getChildByTag( 10023 ):getChildByTag( 10004 )
  29. self.mFunctionalSceneNode[global.MMO.NODE_ACTOR_SHADOW] = rootNode:getChildByTag( 10023 ):getChildByTag( 10004 ):getChildByTag( 10007 )
  30. self.mFunctionalSceneNode[global.MMO.NODE_ACTOR_CLONE_SHADOW] = rootNode:getChildByTag( 10023 ):getChildByTag( 10004 ):getChildByTag( 10030 )
  31. self.mFunctionalSceneNode[global.MMO.NODE_ACTOR_NPC_SHADOW] = rootNode:getChildByTag( 10023 ):getChildByTag( 10004 ):getChildByTag( 10030 ):getChildByTag( 10031 )
  32. self.mFunctionalSceneNode[global.MMO.NODE_ACTOR_MONSTER_SHADOW] = rootNode:getChildByTag( 10023 ):getChildByTag( 10004 ):getChildByTag( 10030 ):getChildByTag( 10032 )
  33. self.mFunctionalSceneNode[global.MMO.NODE_ACTOR_PLAYER_SHADOW] = rootNode:getChildByTag( 10023 ):getChildByTag( 10004 ):getChildByTag( 10030 ):getChildByTag( 10033 )
  34. self.mFunctionalSceneNode[global.MMO.NODE_ACTOR_SFX_BEHIND] = rootNode:getChildByTag( 10023 ):getChildByTag( 10004 ):getChildByTag( 10016 )
  35. self.mFunctionalSceneNode[global.MMO.NODE_ACTOR_SPRITE] = rootNode:getChildByTag( 10023 ):getChildByTag( 10004 ):getChildByTag( 10008 )
  36. self.mFunctionalSceneNode[global.MMO.NODE_ACTOR_SFX_FRONT] = rootNode:getChildByTag( 10023 ):getChildByTag( 10004 ):getChildByTag( 10010 )
  37. self.mFunctionalSceneNode[global.MMO.NODE_MAP_OBJ] = rootNode:getChildByTag( 10023 ):getChildByTag( 10035 )
  38. self.mFunctionalSceneNode[global.MMO.NODE_SKILL] = rootNode:getChildByTag( 10023 ):getChildByTag( 10015 )
  39. self.mFunctionalSceneNode[global.MMO.NODE_ACTOR_HUD] = rootNode:getChildByTag( 10023 ):getChildByTag( 10009 )
  40. self.mFunctionalSceneNode[global.MMO.NODE_DAMAGE] = rootNode:getChildByTag( 10023 ):getChildByTag( 10017 )
  41. self.mFunctionalSceneNode[global.MMO.NODE_UI] = rootNode:getChildByTag( 10005 )
  42. self.mFunctionalSceneNode[global.MMO.NODE_UI_NORMAL] = rootNode:getChildByTag( 10005 ):getChildByTag( 10011 )
  43. self.mFunctionalSceneNode[global.MMO.NODE_UI_TOPMOST] = rootNode:getChildByTag( 10005 ):getChildByTag( 10012 )
  44. -- init hud root
  45. global.HUDManager:Init()
  46. return 1
  47. end
  48. function sceneGraph:GetSceneNode(nodeID)
  49. if nodeID < global.MMO.NODE_NUM then
  50. return self.mFunctionalSceneNode[nodeID]
  51. end
  52. return nil
  53. end
  54. function sceneGraph:GetC2dxScene()
  55. return self.mC2dxScene
  56. end
  57. -- Some specialized functions
  58. function sceneGraph:GetGameWorldRoot()
  59. return self:GetSceneNode( global.MMO.NODE_GAME_WORLD )
  60. end
  61. function sceneGraph:GetActorSpriteNode()
  62. return self:GetSceneNode( global.MMO.NODE_ACTOR_SPRITE )
  63. end
  64. function sceneGraph:GetMapSlice()
  65. return self:GetSceneNode( global.MMO.NODE_MAP_SLICE )
  66. end
  67. function sceneGraph:GetUiNormal()
  68. return self:GetSceneNode( global.MMO.NODE_UI_NORMAL )
  69. end
  70. function sceneGraph:Cleanup()
  71. self.mC2dxScene = 0
  72. self.mFunctionalSceneNode = {}
  73. end
  74. return sceneGraph