summaryrefslogtreecommitdiffstats
path: root/matchblox/engine/C_Hand.cpp
blob: 796be883b5b3dd89a12deb99006d5ad5d9c564c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <GL/glut.h>
#include "C_Hand.h"

#define FADE_DURATION 500

//duration of animations in ms
unsigned int g_HandAnimDurations[3] = {0, 100, 100};


C_Hand::C_Hand(const char* f_strFileName, GLuint f_uiTex,
               MatProps_t f_Mat) 
: C_3DObject(f_strFileName, f_uiTex, f_Mat), 
  m_CurrState(HS_IDLE), m_uiAnimStart(0)
{
}


void C_Hand::Render(unsigned int f_iElapsedTime)
{
  unsigned int l_uiDeltaTime = f_iElapsedTime - m_uiAnimStart;

  if (l_uiDeltaTime > g_HandAnimDurations[(int)m_CurrState])
  {
    m_CurrState = HS_IDLE;
  }

  MatProps_t l_m = m_Mat; //backup

  //scale translate and rotate
  glPushMatrix();
  
  TransRotateScale();

  switch (m_CurrState)
  {
  case HS_COLLIDE:
    m_Mat.setEmi(1.0, 0.0, 0.0, 1.0);
    C_3DObject::Render();
    break;
  case HS_GRAB:
    C_3DObject::Render();
    break;

  case HS_RELEASE:
    C_3DObject::Render();
    break;

  case HS_IDLE:
  default:
    C_3DObject::Render();
    break;
  }

  //restore original matprops
  m_Mat = l_m;

  glPopMatrix();
}