Exemplo n.º 1
0
/* Unit heightmap render function.
 * ARGUMENTS:
 *   - Self pointer:
 *       rk2UNIT *Unit;
 *   - Animation context pointer:
 *       rk2ANIM *Ani;
 * RETURNS: None.
 */
static VOID UnitAreaRender( rk2UNIT_AREA *Unit, rk2ANIM *Ani )
{
  UINT loc;
  INT x, z;
  Ani->RndMatrWorld = MatrDefault();
  RK2_RndBuildMatrix();

  glUseProgram(Ani->ShaderDef);
  for (x = -20; x < 20; x++)
    for (z = -20; z < 20; z++)
    {
      Ani->RndMatrWorld = MatrTranslate(MatrDefault(), x * 30, Ani->WaterLevel, z * 30);
      RK2_RndBuildMatrix();

      RK2_RndShadSendGlobInfo(Ani->ShaderDef, Ani);
      RK2_GObjDraw(Ani->ShaderDef, Ani, &Unit->GObj);
    }
} /* End of 'UnitAreaRender' function */
Exemplo n.º 2
0
/* Camera rotation by camera-axes-dir function.
* ARGUMENTS:
*   - Angle:
*       DBL Angle;
* RETURNS: None.
*/
VOID RK2_RndCameraRotateDir( rk2CAMERA *Cam, DBL Angle )
{
  rk2MATR4x4 RotMat;

  Cam->Dir = VecSubVec(Cam->At, Cam->Loc);
  Cam->Right = VecCrossVec(VecNormalize(Cam->Dir), Cam->Up);
  RK2_RndCameraNormalize(Cam);

  RotMat = RK2_RndCameraGetMatrix(Cam);
  RotMat = MatrMultMatr(MatrRotateX(MatrDefault(), Angle), RotMat);

  RK2_RndCameraSet(Cam, Cam->Loc,                                               /* Location */
    VecSumVec(Cam->Loc,
    VecSet(RotMat.A[0][0], RotMat.A[0][1], RotMat.A[0][2])),                    /* At */
    Cam->Up);                                                                   /* Up */
}  /* End of 'RK2_RndCameraRotateDir' funciton */