Open Source Tomb Raider Engine
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

CommandRender.cpp 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. /*!
  2. * \file src/commands/CommandRender.cpp
  3. * \brief Renderer commands
  4. *
  5. * \author xythobuz
  6. */
  7. #include "global.h"
  8. #include "Game.h"
  9. #include "Log.h"
  10. #include "RunTime.h"
  11. #include "Render.h"
  12. #include "commands/CommandRender.h"
  13. std::string CommandMode::name() {
  14. return "mode";
  15. }
  16. std::string CommandMode::brief() {
  17. return "MODE - Render mode";
  18. }
  19. void CommandMode::printHelp() {
  20. getLog() << "mode-Command Usage:" << Log::endl;
  21. getLog() << " mode MODE" << Log::endl;
  22. getLog() << "Where MODE is one of the following:" << Log::endl;
  23. getLog() << " wireframe" << Log::endl;
  24. getLog() << " solid" << Log::endl;
  25. getLog() << " texture" << Log::endl;
  26. getLog() << " vertexlight" << Log::endl;
  27. getLog() << " titlescreen" << Log::endl;
  28. }
  29. int CommandMode::execute(std::istream& args) {
  30. if (!getGame().isLoaded()) {
  31. getLog() << "Load a level to set the mode!" << Log::endl;
  32. return -1;
  33. }
  34. std::string s;
  35. args >> s;
  36. if (s.compare("wireframe") == 0) {
  37. getRender().setMode(Render::modeWireframe);
  38. getLog() << "Wireframe mode" << Log::endl;
  39. } else if (s.compare("solid") == 0) {
  40. getRender().setMode(Render::modeSolid);
  41. getLog() << "Solid mode" << Log::endl;
  42. } else if (s.compare("texture") == 0) {
  43. getRender().setMode(Render::modeTexture);
  44. getLog() << "Texture mode" << Log::endl;
  45. } else if (s.compare("vertexlight") == 0) {
  46. getRender().setMode(Render::modeVertexLight);
  47. getLog() << "Vertexlight mode" << Log::endl;
  48. } else if (s.compare("titlescreen") == 0) {
  49. getRender().setMode(Render::modeLoadScreen);
  50. getLog() << "Titlescreen mode" << Log::endl;
  51. } else {
  52. getLog() << "Invalid use of mode command (" << s << ")!" << Log::endl;
  53. return -2;
  54. }
  55. return 0;
  56. }
  57. // --------------------------------------
  58. std::string CommandRenderflag::name() {
  59. return "renderflag";
  60. }
  61. std::string CommandRenderflag::brief() {
  62. return "STRING BOOL - Toggle Render flag";
  63. }
  64. void CommandRenderflag::printHelp() {
  65. getLog() << "renderflag-Command Usage:" << Log::endl;
  66. getLog() << " renderflag STRING BOOL" << Log::endl;
  67. getLog() << "Where STRING is one of the following:" << Log::endl;
  68. getLog() << " ralpha" << Log::endl;
  69. getLog() << " entmodel" << Log::endl;
  70. getLog() << " fog" << Log::endl;
  71. getLog() << " light" << Log::endl;
  72. getLog() << " ponytail" << Log::endl;
  73. }
  74. int CommandRenderflag::execute(std::istream& args) {
  75. if (!getRunTime().isRunning()) {
  76. getLog() << "Use renderflag-Command interactively!" << Log::endl;
  77. return -1;
  78. }
  79. std::string flag;
  80. bool b;
  81. args >> flag >> b;
  82. if (!args) {
  83. getLog() << "Pass STRING and BOOL to renderflag command!" << Log::endl;
  84. return -2;
  85. }
  86. int f = stringToFlag(flag);
  87. if (f == -1) {
  88. getLog() << "Unknown flag \"" << flag << "\"!" << Log::endl;
  89. return -3;
  90. }
  91. if (b) {
  92. getRender().setFlags((unsigned int)f);
  93. } else {
  94. getRender().clearFlags((unsigned int)f);
  95. }
  96. return 0;
  97. }
  98. int CommandRenderflag::stringToFlag(std::string flag) {
  99. if (flag == "ralpha") {
  100. return Render::fRoomAlpha;
  101. } else if (flag == "entmodel") {
  102. return Render::fEntityModels;
  103. } else if (flag == "fog") {
  104. return Render::fFog;
  105. } else if (flag == "light") {
  106. return Render::fGL_Lights;
  107. } else if (flag == "ponytail") {
  108. return Render::fRenderPonytail;
  109. } else {
  110. return -1;
  111. }
  112. }