AEJSONSceneProcess.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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 AtomicEditor
  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();
  37. bool Write();
  38. private:
  39. HashMap<String, SharedPtr<Material> > materials_;
  40. HashMap<String, SharedPtr<Model> > models_;
  41. SharedPtr<Scene> scene_ ;
  42. List<SharedPtr<Node> > hierarchy_;
  43. bool WriteMaterials();
  44. bool WriteModels();
  45. bool WriteHierarchy(Scene *scene);
  46. bool ProcessTextures();
  47. bool ProcessLightmaps();
  48. bool ProcessMaterials();
  49. bool ProcessModels();
  50. bool ProcessComponent(Node* node, const JSONTransform* jtransform );
  51. bool ProcessComponent(Node* node, const JSONMeshRenderer* jmeshrenderer );
  52. bool ProcessComponent(Node* node, const JSONSkinnedMeshRenderer* jmeshrenderer );
  53. bool ProcessComponent(Node* node, const JSONAnimation* janim );
  54. bool ProcessComponent(Node* node, const JSONTerrain* jterrain );
  55. bool ProcessComponent(Node* node, const JSONBoxCollider* jbox );
  56. bool ProcessComponent(Node* node, const JSONMeshCollider* jmesh );
  57. bool ProcessComponent(Node* node, const JSONLight* jlight );
  58. bool ProcessComponent(Node* node, const JSONRigidBody* jbody );
  59. bool ProcessComponent(Node* node, const JSONTimeOfDay* jtime );
  60. Node* ProcessNode(const JSONNode* jnode, Node *parent);
  61. bool ProcessHierarchy(Scene *scene);
  62. SharedPtr<JSONSceneImporter> importer_;
  63. };
  64. }