Open Source Tomb Raider Engine
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

World.cpp 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. /*!
  2. * \file src/World.cpp
  3. * \brief World Model
  4. *
  5. * \author Mongoose
  6. */
  7. #include "global.h"
  8. #include "World.h"
  9. World::~World() {
  10. destroy();
  11. }
  12. void World::destroy() {
  13. mRooms.clear();
  14. mSprites.clear();
  15. mSpriteSequences.clear();
  16. mEntities.clear();
  17. mModels.clear();
  18. mStaticMeshes.clear();
  19. mMeshes.clear();
  20. }
  21. void World::addRoom(Room* room) {
  22. mRooms.emplace_back(std::unique_ptr<Room>(room));
  23. }
  24. unsigned long World::sizeRoom() {
  25. return mRooms.size();
  26. }
  27. Room& World::getRoom(unsigned long index) {
  28. orAssertLessThan(index, mRooms.size());
  29. return *mRooms.at(index);
  30. }
  31. void World::addSprite(Sprite* sprite) {
  32. mSprites.emplace_back(std::unique_ptr<Sprite>(sprite));
  33. }
  34. unsigned long World::sizeSprite() {
  35. return mSprites.size();
  36. }
  37. Sprite& World::getSprite(unsigned long index) {
  38. orAssertLessThan(index, mSprites.size());
  39. return *mSprites.at(index);
  40. }
  41. void World::addSpriteSequence(SpriteSequence* sprite) {
  42. mSpriteSequences.emplace_back(std::unique_ptr<SpriteSequence>(sprite));
  43. }
  44. unsigned long World::sizeSpriteSequence() {
  45. return mSpriteSequences.size();
  46. }
  47. SpriteSequence& World::getSpriteSequence(unsigned long index) {
  48. orAssertLessThan(index, mSpriteSequences.size());
  49. return *mSpriteSequences.at(index);
  50. }
  51. void World::addEntity(Entity* entity) {
  52. mEntities.emplace_back(std::unique_ptr<Entity>(entity));
  53. }
  54. unsigned long World::sizeEntity() {
  55. return mEntities.size();
  56. }
  57. Entity& World::getEntity(unsigned long index) {
  58. orAssertLessThan(index, mEntities.size());
  59. return *mEntities.at(index);
  60. }
  61. void World::addSkeletalModel(SkeletalModel* model) {
  62. mModels.emplace_back(std::unique_ptr<SkeletalModel>(model));
  63. }
  64. unsigned long World::sizeSkeletalModel() {
  65. return mModels.size();
  66. }
  67. SkeletalModel& World::getSkeletalModel(unsigned long index) {
  68. orAssertLessThan(index, mModels.size());
  69. return *mModels.at(index);
  70. }
  71. void World::addStaticMesh(StaticMesh* model) {
  72. mStaticMeshes.emplace_back(std::unique_ptr<StaticMesh>(model));
  73. }
  74. unsigned long World::sizeStaticMesh() {
  75. return mStaticMeshes.size();
  76. }
  77. StaticMesh& World::getStaticMesh(unsigned long index) {
  78. orAssertLessThan(index, mStaticMeshes.size());
  79. return *mStaticMeshes.at(index);
  80. }
  81. void World::addMesh(Mesh* mesh) {
  82. mMeshes.emplace_back(mesh);
  83. }
  84. unsigned long World::sizeMesh() {
  85. return mMeshes.size();
  86. }
  87. Mesh& World::getMesh(unsigned long index) {
  88. orAssertLessThan(index, mMeshes.size());
  89. return *mMeshes.at(index);
  90. }