PolyScene.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. /*
  2. * PolyScene.h
  3. * Poly
  4. *
  5. * Created by Ivan Safrin on 3/18/08.
  6. * Copyright 2008 __MyCompanyName__. All rights reserved.
  7. *
  8. */
  9. // @package Scene
  10. #pragma once
  11. #include "PolyString.h"
  12. #include "PolyGlobals.h"
  13. #include "PolyRenderer.h"
  14. #include "PolySceneEntity.h"
  15. #include "PolyCamera.h"
  16. #include "PolySceneLight.h"
  17. #include "PolySceneMesh.h"
  18. #include <vector>
  19. using std::vector;
  20. namespace Polycode {
  21. class Camera;
  22. class SceneLight;
  23. class SceneMesh;
  24. class _PolyExport Scene : public EventDispatcher {
  25. public:
  26. Scene();
  27. Scene(bool virtualScene);
  28. virtual ~Scene();
  29. void addEntity(SceneEntity *entity);
  30. void removeEntity(SceneEntity *entity);
  31. Camera *getDefaultCamera();
  32. void enableLighting(bool enable);
  33. void enableFog(bool enable);
  34. void setFogProperties(int fogMode, Color color, Number density, Number startDepth, Number endDepth);
  35. virtual void Update();
  36. void setVirtual(bool val);
  37. bool isVirtual();
  38. bool isEnabled();
  39. void setEnabled(bool enabled);
  40. int getNumEntities() { return entities.size(); }
  41. SceneEntity *getEntity(int index) { return entities[index]; }
  42. SceneEntity *getEntityAtCursor(Number x, Number y);
  43. void Render();
  44. void RenderDepthOnly(Camera *targetCamera);
  45. // void addGrid(String gridTexture);
  46. static String readString(OSFILE *inFile);
  47. void loadScene(String fileName);
  48. void generateLightmaps(Number lightMapRes, Number lightMapQuality, int numRadPasses);
  49. void addLight(SceneLight *light);
  50. SceneLight *getNearestLight(Vector3 pos);
  51. void writeEntityMatrix(SceneEntity *entity, OSFILE *outFile);
  52. void writeString(String str, OSFILE *outFile);
  53. void saveScene(String fileName);
  54. int getNumStaticGeometry();
  55. SceneMesh *getStaticGeometry(int index);
  56. virtual void loadCollisionChild(SceneEntity *entity, bool autoCollide=false, int type=0){}
  57. int getNumLights();
  58. SceneLight *getLight(int index);
  59. SceneEntity *getCustomEntityByType(String type);
  60. vector<SceneEntity*> getCustomEntitiesByType(String type);
  61. static const unsigned int ENTITY_MESH = 0;
  62. static const unsigned int ENTITY_LIGHT = 1;
  63. static const unsigned int ENTITY_CAMERA = 2;
  64. static const unsigned int ENTITY_ENTITY = 3;
  65. static const unsigned int ENTITY_COLLMESH = 4;
  66. Color clearColor;
  67. Color ambientColor;
  68. Color fogColor;
  69. protected:
  70. bool useClearColor;
  71. bool virtualScene;
  72. bool hasLightmaps;
  73. // LightmapPacker *packer;
  74. vector <SceneLight*> lights;
  75. vector <SceneMesh*> staticGeometry;
  76. vector <SceneMesh*> collisionGeometry;
  77. vector <SceneEntity*> customEntities;
  78. bool isSceneVirtual;
  79. bool enabled;
  80. Camera *defaultCamera;
  81. vector <SceneEntity*> entities;
  82. bool lightingEnabled;
  83. bool fogEnabled;
  84. int fogMode;
  85. Number fogDensity;
  86. Number fogStartDepth;
  87. Number fogEndDepth;
  88. };
  89. }