JSONSceneProcess.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. //
  2. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  3. // LICENSE: Atomic Game Engine Editor and Tools EULA
  4. // Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
  5. // license information: https://github.com/AtomicGameEngine/AtomicGameEngine
  6. //
  7. #pragma once
  8. #include <Atomic/Container/HashMap.h>
  9. #include <Atomic/Container/List.h>
  10. #include <Atomic/Resource/ResourceCache.h>
  11. #include <Atomic/Graphics/Technique.h>
  12. #include <Atomic/Graphics/Texture2D.h>
  13. #include <Atomic/Graphics/Material.h>
  14. #include <Atomic/Atomic3D/Model.h>
  15. #include <Atomic/Scene/Scene.h>
  16. using namespace Atomic;
  17. namespace ToolCore
  18. {
  19. class JSONSceneImporter;
  20. class JSONNode;
  21. class JSONTransform;
  22. class JSONMeshRenderer;
  23. class JSONSkinnedMeshRenderer;
  24. class JSONAnimation;
  25. class JSONTerrain;
  26. class JSONBoxCollider;
  27. class JSONMeshCollider;
  28. class JSONRigidBody;
  29. class JSONLight;
  30. class JSONTimeOfDay;
  31. class JSONSceneProcess : public Object
  32. {
  33. OBJECT(JSONSceneProcess);
  34. public:
  35. JSONSceneProcess(Context* context, JSONSceneImporter* importer) : Object(context)
  36. {
  37. importer_ = importer;
  38. }
  39. bool Process(const String& resourcePath);
  40. bool Write();
  41. private:
  42. String resourcePath_;
  43. HashMap<String, SharedPtr<Material> > materials_;
  44. HashMap<String, SharedPtr<Model> > models_;
  45. SharedPtr<Scene> scene_ ;
  46. List<SharedPtr<Node> > hierarchy_;
  47. bool WriteMaterials();
  48. bool WriteModels();
  49. bool WriteHierarchy(Scene *scene);
  50. bool ProcessTextures();
  51. bool ProcessLightmaps();
  52. bool ProcessMaterials();
  53. bool ProcessModels();
  54. bool ProcessComponent(Node* node, const JSONTransform* jtransform );
  55. bool ProcessComponent(Node* node, const JSONMeshRenderer* jmeshrenderer );
  56. bool ProcessComponent(Node* node, const JSONSkinnedMeshRenderer* jmeshrenderer );
  57. bool ProcessComponent(Node* node, const JSONAnimation* janim );
  58. bool ProcessComponent(Node* node, const JSONTerrain* jterrain );
  59. bool ProcessComponent(Node* node, const JSONBoxCollider* jbox );
  60. bool ProcessComponent(Node* node, const JSONMeshCollider* jmesh );
  61. bool ProcessComponent(Node* node, const JSONLight* jlight );
  62. bool ProcessComponent(Node* node, const JSONRigidBody* jbody );
  63. bool ProcessComponent(Node* node, const JSONTimeOfDay* jtime );
  64. Node* ProcessNode(const JSONNode* jnode, Node *parent);
  65. bool ProcessHierarchy(Scene *scene);
  66. SharedPtr<JSONSceneImporter> importer_;
  67. };
  68. }