JSONSceneProcess.h 2.3 KB

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