~ubuntu-branches/ubuntu/precise/supertuxkart/precise

« back to all changes in this revision

Viewing changes to src/isect.cxx

  • Committer: Bazaar Package Importer
  • Author(s): Gonéri Le Bouder, Gonéri Le Bouder, Eddy Petrişor
  • Date: 2006-09-08 22:59:25 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20060908225925-3spug0pnh9ekwlpw
Tags: 0.2-1
[ Gonéri Le Bouder ]
* new upstream release candidate
 + Closes: #388021
 + remove supertuxkart.sh
 + add supertuxkart(|-data).install
 + clean up
 + remove deps on ${shlibs:Depends}, ${misc:Depends} for supertuxkart-data
* fix French comment was tagged de_DE
* fix not-binnmuable-any-depends-all
* fix FTBFS on 64bit arch
 + Closes: #370810

[ Eddy Petrişor ]
* added Romanian translation to desktop file

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
//  $Id: isect.cxx 498 2004-12-22 06:55:12Z grumbel $
2
 
//
3
 
//  SuperTuxKart - a fun racing game with go-kart
4
 
//  Copyright (C) 2004 Steve Baker <sjbaker1@airmail.net>
5
 
//
6
 
//  This program is free software; you can redistribute it and/or
7
 
//  modify it under the terms of the GNU General Public License
8
 
//  as published by the Free Software Foundation; either version 2
9
 
//  of the License, or (at your option) any later version.
10
 
//
11
 
//  This program is distributed in the hope that it will be useful,
12
 
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 
//  GNU General Public License for more details.
15
 
//
16
 
//  You should have received a copy of the GNU General Public License
17
 
//  along with this program; if not, write to the Free Software
18
 
//  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19
 
 
20
 
#include <limits.h>
21
 
#include "tuxkart.h"
22
 
#include "isect.h"
23
 
 
24
 
float getHeightAndNormal(ssgBranch* branch, sgVec3 my_position, sgVec3 normal)
25
 
{
26
 
  /* Look for the nearest polygon *beneath* my_position */
27
 
 
28
 
  ssgHit *results ;
29
 
  int num_hits ;
30
 
 
31
 
  float hot ;        /* H.O.T == Height Of Terrain */
32
 
  sgVec3 HOTvec ;
33
 
 
34
 
  sgMat4 invmat ;
35
 
  sgMakeIdentMat4 ( invmat ) ;
36
 
  invmat[3][0] = - my_position [0] ;
37
 
  invmat[3][1] = - my_position [1] ;
38
 
  invmat[3][2] = 0.0 ;
39
 
 
40
 
  sgSetVec3 ( HOTvec, 0.0f, 0.0f, my_position [ 2 ] ) ;
41
 
 
42
 
  num_hits = ssgHOT (branch, HOTvec, invmat, &results ) ;
43
 
  
44
 
  hot = - FLT_MAX ;
45
 
 
46
 
  for ( int i = 0 ; i < num_hits ; i++ )
47
 
  {
48
 
    ssgHit *h = &results [ i ] ;
49
 
 
50
 
    float hgt = - h->plane[3] / h->plane[2] ;
51
 
 
52
 
    if ( hgt >= hot )
53
 
    {
54
 
      hot = hgt ;
55
 
 
56
 
      if ( normal != NULL )
57
 
        sgCopyVec3 ( normal, h->plane ) ;
58
 
    }
59
 
  }
60
 
 
61
 
  return hot ;
62
 
}
63