Advertisement
Guest User

Untitled

a guest
Jul 29th, 2012
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.97 KB | None | 0 0
  1. #include "Object2D.h"
  2.  
  3. Object2D::Object2D(){
  4.     m_updateProjection = true;
  5.     m_updateModelview = true;
  6.  
  7.     m_size = vec2();
  8.     m_position = vec2();
  9.     m_direction = vec2();
  10.     m_scale = vec2(1);
  11.     m_rotationPoint = vec2();
  12.     m_speed = 0;
  13.     m_rotation = 0;
  14.     m_flip = false;
  15.  
  16.     m_moveForward = false;
  17.     m_moveBackward = false;
  18.     m_moveLeft = false;
  19.     m_moveRight = false;
  20.  
  21.     m_viewport[0] = 0;
  22.     m_viewport[1] = 0;
  23.     m_viewport[2] = 0;
  24.     m_viewport[3] = 0;
  25. }
  26.  
  27. Object2D::~Object2D(){
  28.     delete &m_projection;
  29.     delete &m_modelview;
  30.     delete &m_size;
  31.     delete &m_position;
  32.     delete &m_direction;
  33.     delete &m_scale;
  34.     delete &m_rotationPoint;
  35. }
  36.  
  37. void Object2D::setViewport(int x0, int y0, int x1, int y1){
  38.     m_viewport[0] = x0;
  39.     m_viewport[1] = y0;
  40.     m_viewport[2] = x1;
  41.     m_viewport[3] = y1;
  42.  
  43.     m_updateProjection = true;
  44. }
  45.  
  46. void Object2D::setViewport(int width, int height){
  47.     setViewport(0, 0, width, height);
  48. }
  49.  
  50. void Object2D::setSize(vec2 v){
  51.     m_size = v;
  52. }
  53.  
  54. void Object2D::setSize(float x, float y){
  55.     setSize(vec2(x, y));
  56. }
  57.  
  58. void Object2D::setXSize(float f){
  59.     setSize(vec2(f, m_size.y));
  60. }
  61.  
  62. void Object2D::setYSize(float f){
  63.     setSize(vec2(m_size.x, f));
  64. }
  65.  
  66. void Object2D::addSize(vec2 v){
  67.     m_size += v;
  68. }
  69.  
  70. void Object2D::addSize(float x, float y){
  71.     addSize(vec2(x, y));
  72. }
  73.  
  74. void Object2D::addXSize(float f){
  75.     addSize(vec2(f, 0));
  76. }
  77.  
  78. void Object2D::addYSize(float f){
  79.     addSize(vec2(0, f));
  80. }
  81.  
  82. void Object2D::setPosition(vec2 v){
  83.     m_position = v;
  84.     m_updateModelview = true;
  85. }
  86.  
  87. void Object2D::setPosition(float x, float y){
  88.     setPosition(vec2(x, y));
  89. }
  90.  
  91. void Object2D::addPosition(vec2 v){
  92.     m_position += v;
  93.     m_updateModelview = true;
  94. }
  95.  
  96. void Object2D::addPosition(float x, float y){
  97.     addPosition(vec2(x, y));
  98. }
  99.  
  100. void Object2D::setX(float f){
  101.     setPosition(vec2(f, m_position.y));
  102. }
  103.  
  104. void Object2D::setY(float f){
  105.     setPosition(vec2(m_position.x, f));
  106. }
  107.  
  108. void Object2D::addX(float f){
  109.     addPosition(vec2(f, 0));
  110. }
  111.  
  112. void Object2D::addY(float f){
  113.     addPosition(vec2(0, f));
  114. }
  115.  
  116. void Object2D::setScale(vec2 v){
  117.     m_scale = v;
  118.     m_updateModelview = true;
  119. }
  120.  
  121. void Object2D::setScale(float x, float y){
  122.     setScale(vec2(x, y));
  123. }
  124.  
  125. void Object2D::addScale(vec2 v){
  126.     m_scale += v;
  127.     m_updateModelview = true;
  128. }
  129.  
  130. void Object2D::addSclae(float x, float y){
  131.     addScale(vec2(x, y));
  132. }
  133.  
  134. void Object2D::setXScale(float f){
  135.     setScale(vec2(f, m_scale.y));
  136. }
  137.  
  138. void Object2D::setYScale(float f){
  139.     setScale(vec2(m_scale.x, f));
  140. }
  141.  
  142. void Object2D::addXScale(float f){
  143.     addScale(vec2(f, 0));
  144. }
  145.  
  146. void Object2D::addYScale(float f){
  147.     addScale(vec2(0, f));
  148. }
  149.  
  150. void Object2D::setDirection(vec2 v){
  151.     m_direction = v;
  152.     m_direction.normalize();
  153.     m_updateModelview = true;
  154. }
  155.  
  156. void Object2D::setDirection(float x, float y){
  157.     setDirection(vec2(x, y));
  158. }
  159.  
  160. void Object2D::addDirection(vec2 v){
  161.     m_direction += v;
  162.     m_direction.normalize();
  163.     m_updateModelview = true;
  164. }
  165.  
  166. void Object2D::addDirection(float x, float y){
  167.     addDirection(vec2(x, y));
  168. }
  169.  
  170. void Object2D::setXDirection(float f){
  171.     setDirection(vec2(f, m_direction.x));
  172. }
  173.  
  174. void Object2D::setYDirection(float f){
  175.     setDirection(vec2(m_direction.y, f));
  176. }
  177.  
  178. void Object2D::addXDirection(float f){
  179.     addDirection(vec2(f, 0));
  180. }
  181.  
  182. void Object2D::addYDirection(float f){
  183.     addDirection(vec2(0, f));
  184. }
  185.  
  186. void Object2D::setSpeed(float f){
  187.     m_speed = f;
  188. }
  189.  
  190. void Object2D::addSpeed(float f){
  191.     m_speed += f;
  192. }
  193.  
  194. void Object2D::setRotationPoint(int i){
  195.     switch(i){
  196.         case OBJECT2D_BOTTOM_LEFT:
  197.             m_rotationPoint = vec2();
  198.  
  199.             break;
  200.         case OBJECT2D_BOTTOM_RIGHT:
  201.             m_rotationPoint = vec2(m_size.x, 0);
  202.  
  203.             break;
  204.         case OBJECT2D_TOP_LEFT:
  205.             m_rotationPoint = vec2(0, m_size.y);
  206.  
  207.             break;
  208.         case OBJECT2D_TOP_RIGHT:
  209.             m_rotationPoint = vec2(m_size.x, m_size.y);
  210.  
  211.             break;
  212.         case OBJECT2D_CENTER:
  213.             m_rotationPoint = vec2(m_size.x/2, m_size.y/2);
  214.  
  215.             break;
  216.         default:
  217.             m_rotationPoint = vec2();
  218.     }
  219. }
  220.  
  221. void Object2D::setRotationPoint(vec2 v){
  222.     m_rotationPoint = v;
  223.     m_updateModelview = true;
  224. }
  225.  
  226. void Object2D::setRotationPoint(float x, float y){
  227.     setRotationPoint(vec2(x, y));
  228. }
  229.  
  230. void Object2D::setXRotationPoint(float f){
  231.     setRotationPoint(vec2(f, m_rotationPoint.y));
  232. }
  233.  
  234. void Object2D::setYRotationPoint(float f){
  235.     setRotationPoint(vec2(m_rotationPoint.x, f));
  236. }
  237.  
  238. void Object2D::addRotationPoint(vec2 v){
  239.     m_rotationPoint += v;
  240. }
  241.  
  242. void Object2D::addXRotationPoint(float f){
  243.     addRotationPoint(vec2(f, 0));
  244. }
  245.  
  246. void Object2D::addYRotationPoint(float f){
  247.     addRotationPoint(vec2(0, f));
  248. }
  249.  
  250. void Object2D::setRotation(float f){
  251.     m_rotation = f;
  252.     m_updateModelview = true;
  253. }
  254.  
  255. void Object2D::addRotation(float f){
  256.     m_rotation += f;
  257.     m_updateModelview = true;
  258. }
  259.  
  260. void Object2D::flip(){
  261.     if(m_flip){
  262.         m_flip = false;
  263.     }
  264.     else{
  265.         m_flip = true;
  266.     }
  267.  
  268.     m_updateModelview = true;
  269. }
  270.  
  271. mat4 Object2D::getProjection(mat4 m){
  272.     m.ortho(m_viewport[0], m_viewport[2], m_viewport[1], m_viewport[3], -1, 1);
  273.    
  274.     m_projection = m;
  275.     m_updateProjection = false;
  276.  
  277.     return m;
  278. }
  279.  
  280. mat4 Object2D::getProjection(){
  281.     if(m_updateProjection){
  282.         mat4 m;
  283.         m.setIdentity();
  284.  
  285.         return getProjection(m);
  286.     }
  287.    
  288.     return m_projection;
  289. }
  290.  
  291. mat4 Object2D::getUpdatedProjection(){
  292.     m_updateProjection = true;
  293.     return getProjection();
  294. }
  295.  
  296. mat4 Object2D::getModelview(mat4 m){
  297.     m.translate(m_position.x+m_rotationPoint.x, m_position.y+m_rotationPoint.y, 0);
  298.     m.rotate(m_rotation, 0, 0, 1);
  299.     m.translate(-m_rotationPoint.x, -m_rotationPoint.y, 0);
  300.     m.scale(m_scale.x, m_scale.y, 0);
  301.  
  302.     if(m_flip){
  303.         m.rotate(180, 0, 1, 0); // braucht glDisable(GL_CULL_FACE)
  304.     }
  305.    
  306.     m_modelview = m;
  307.     m_updateModelview = false;
  308.  
  309.     return m;
  310. }
  311.  
  312. mat4 Object2D::getModelview(){
  313.     if(m_updateModelview){
  314.         mat4 m;
  315.         m.setIdentity();
  316.  
  317.         return getModelview(m);
  318.     }
  319.    
  320.     return m_modelview;
  321. }
  322.  
  323. mat4 Object2D::getUpdatedModelview(){
  324.     m_updateModelview = true;
  325.     return getModelview();
  326. }
  327.  
  328. vec2 Object2D::getSize(){
  329.     return m_size;
  330. }
  331.  
  332. float Object2D::getSizeX(){
  333.     return m_size.x;
  334. }
  335.  
  336. float Object2D::getSizeY(){
  337.     return m_size.y;
  338. }
  339.  
  340. int Object2D::getWidth(){
  341.     return int(m_size.x);
  342. }
  343.  
  344. int Object2D::getHeight(){
  345.     return int(m_size.y);
  346. }
  347.  
  348. vec2 Object2D::getPosition(){
  349.     return m_position;
  350. }
  351.  
  352. float Object2D::getX(){
  353.     return m_position.x;
  354. }
  355.  
  356. float Object2D::getY(){
  357.     return m_position.y;
  358. }
  359.  
  360. vec2 Object2D::getDirection(){
  361.     return m_direction;
  362. }
  363.  
  364. float Object2D::getXDirection(){
  365.     return m_direction.x;
  366. }
  367.  
  368. float Object2D::getYDirection(){
  369.     return m_direction.y;
  370. }
  371.  
  372. vec2 Object2D::getScale(){
  373.     return m_scale;
  374. }
  375.  
  376. float Object2D::getXScale(){
  377.     return m_scale.x;
  378. }
  379.  
  380. float Object2D::getYScale(){
  381.     return m_scale.y;
  382. }
  383.  
  384. vec2 Object2D::getRotationPoint(){
  385.     return m_rotationPoint;
  386. }
  387.  
  388. float Object2D::getXRotationPoint(){
  389.     return m_rotationPoint.x;
  390. }
  391.  
  392. float Object2D::getYRotationPoint(){
  393.     return m_rotationPoint.y;
  394. }
  395.  
  396. float Object2D::getRotation(){
  397.     return m_rotation;
  398. }
  399.  
  400. float Object2D::getSpeed(){
  401.     return m_speed;
  402. }
  403.  
  404. bool Object2D::isFlipped(){
  405.     return m_flip;
  406. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement