├── .gitignore ├── Makefile.am ├── README ├── aclocal.m4 ├── config.h.in ├── configure ├── configure.ac ├── depcomp ├── install-sh ├── missing ├── res ├── Makefile.am ├── carC.mtl ├── carC.obj ├── carC.tga ├── carD.mtl ├── carD.obj ├── carD.tga ├── floor.mtl ├── floor.obj ├── floor.tga ├── lose.jpg ├── skydome.jpg ├── wheel.mtl ├── wheel.obj ├── wheel.tga └── win.jpg └── src ├── AI_Car.cpp ├── AI_Car.h ├── BaseCar.cpp ├── BaseCar.h ├── Car.cpp ├── Car.h ├── GameStateController.cpp ├── GameStateController.h ├── Makefile.am ├── PlayerCar.cpp ├── PlayerCar.h ├── Tire.cpp ├── Tire.h ├── TireRayCast.cpp ├── TireRayCast.h ├── main.cpp └── racingGame.h /.gitignore: -------------------------------------------------------------------------------- 1 | .project 2 | .cproject 3 | Debug 4 | Release 5 | -------------------------------------------------------------------------------- /Makefile.am: -------------------------------------------------------------------------------- 1 | AUTOMAKE_OPTIONS = foreign 2 | builddir = "$(pwd)" 3 | SUBDIRS = src res 4 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | To compile project you need to have installed: 2 | 3 | Irrlicht (1.7.2) 4 | http://irrlicht.sourceforge.net/ 5 | 6 | Newton Game Dynamics (2.29) 7 | http://newtondynamics.com/forum/downloads.php 8 | 9 | Include path: 10 | "${workspace_loc:/${ProjName}/src}" 11 | irrlicht/include 12 | newtonSDK/sdk 13 | newtonSDK/sdk/dMath 14 | 15 | Libs: 16 | Irrlicht 17 | GL 18 | GLU 19 | pthread 20 | Newton 21 | dMath 22 | 23 | Developed with Eclipse Indigo CDT 24 | 25 | =BUILD 26 | You can try to build the project with usual GNU way 27 | but you'll have to specify all dependencies. 28 | 29 | Build example: 30 | Type the following commands in console, 31 | please replace /home/alex/Programs/ with correct path in your system 32 | 33 | mkdir build 34 | cd build 35 | ../configure \ 36 | --with-irrlicht-include=/home/alex/Programs/irrlicht-1.7.2/include \ 37 | --with-irrlicht-lib=/home/alex/Programs/irrlicht-1.7.2/lib/Linux \ 38 | --with-newton-include=/home/alex/Programs/newtonSDK/sdk \ 39 | --with-dmath-include=/home/alex/Programs/newtonSDK/sdk/dMath \ 40 | --with-dmath-lib=/home/alex/Programs/newtonSDK/sdk 41 | make 42 | make install 43 | 44 | If everything goes right you'll have RacingGame folder inside your build directory 45 | you can try to run the game now :) 46 | RacingGame/RacingGame 47 | -------------------------------------------------------------------------------- /aclocal.m4: -------------------------------------------------------------------------------- 1 | # generated automatically by aclocal 1.11.1 -*- Autoconf -*- 2 | 3 | # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 4 | # 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. 5 | # This file is free software; the Free Software Foundation 6 | # gives unlimited permission to copy and/or distribute it, 7 | # with or without modifications, as long as this notice is preserved. 8 | 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY, to the extent permitted by law; without 11 | # even the implied warranty of MERCHANTABILITY or FITNESS FOR A 12 | # PARTICULAR PURPOSE. 13 | 14 | m4_ifndef([AC_AUTOCONF_VERSION], 15 | [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl 16 | m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.67],, 17 | [m4_warning([this file was generated for autoconf 2.67. 18 | You have another version of autoconf. It may work, but is not guaranteed to. 19 | If you have problems, you may need to regenerate the build system entirely. 20 | To do so, use the procedure documented by the package, typically `autoreconf'.])]) 21 | 22 | # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. 23 | # 24 | # This file is free software; the Free Software Foundation 25 | # gives unlimited permission to copy and/or distribute it, 26 | # with or without modifications, as long as this notice is preserved. 27 | 28 | # AM_AUTOMAKE_VERSION(VERSION) 29 | # ---------------------------- 30 | # Automake X.Y traces this macro to ensure aclocal.m4 has been 31 | # generated from the m4 files accompanying Automake X.Y. 32 | # (This private macro should not be called outside this file.) 33 | AC_DEFUN([AM_AUTOMAKE_VERSION], 34 | [am__api_version='1.11' 35 | dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to 36 | dnl require some minimum version. Point them to the right macro. 37 | m4_if([$1], [1.11.1], [], 38 | [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl 39 | ]) 40 | 41 | # _AM_AUTOCONF_VERSION(VERSION) 42 | # ----------------------------- 43 | # aclocal traces this macro to find the Autoconf version. 44 | # This is a private macro too. Using m4_define simplifies 45 | # the logic in aclocal, which can simply ignore this definition. 46 | m4_define([_AM_AUTOCONF_VERSION], []) 47 | 48 | # AM_SET_CURRENT_AUTOMAKE_VERSION 49 | # ------------------------------- 50 | # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. 51 | # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. 52 | AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], 53 | [AM_AUTOMAKE_VERSION([1.11.1])dnl 54 | m4_ifndef([AC_AUTOCONF_VERSION], 55 | [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl 56 | _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) 57 | 58 | # AM_AUX_DIR_EXPAND -*- Autoconf -*- 59 | 60 | # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. 61 | # 62 | # This file is free software; the Free Software Foundation 63 | # gives unlimited permission to copy and/or distribute it, 64 | # with or without modifications, as long as this notice is preserved. 65 | 66 | # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets 67 | # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to 68 | # `$srcdir', `$srcdir/..', or `$srcdir/../..'. 69 | # 70 | # Of course, Automake must honor this variable whenever it calls a 71 | # tool from the auxiliary directory. The problem is that $srcdir (and 72 | # therefore $ac_aux_dir as well) can be either absolute or relative, 73 | # depending on how configure is run. This is pretty annoying, since 74 | # it makes $ac_aux_dir quite unusable in subdirectories: in the top 75 | # source directory, any form will work fine, but in subdirectories a 76 | # relative path needs to be adjusted first. 77 | # 78 | # $ac_aux_dir/missing 79 | # fails when called from a subdirectory if $ac_aux_dir is relative 80 | # $top_srcdir/$ac_aux_dir/missing 81 | # fails if $ac_aux_dir is absolute, 82 | # fails when called from a subdirectory in a VPATH build with 83 | # a relative $ac_aux_dir 84 | # 85 | # The reason of the latter failure is that $top_srcdir and $ac_aux_dir 86 | # are both prefixed by $srcdir. In an in-source build this is usually 87 | # harmless because $srcdir is `.', but things will broke when you 88 | # start a VPATH build or use an absolute $srcdir. 89 | # 90 | # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, 91 | # iff we strip the leading $srcdir from $ac_aux_dir. That would be: 92 | # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` 93 | # and then we would define $MISSING as 94 | # MISSING="\${SHELL} $am_aux_dir/missing" 95 | # This will work as long as MISSING is not called from configure, because 96 | # unfortunately $(top_srcdir) has no meaning in configure. 97 | # However there are other variables, like CC, which are often used in 98 | # configure, and could therefore not use this "fixed" $ac_aux_dir. 99 | # 100 | # Another solution, used here, is to always expand $ac_aux_dir to an 101 | # absolute PATH. The drawback is that using absolute paths prevent a 102 | # configured tree to be moved without reconfiguration. 103 | 104 | AC_DEFUN([AM_AUX_DIR_EXPAND], 105 | [dnl Rely on autoconf to set up CDPATH properly. 106 | AC_PREREQ([2.50])dnl 107 | # expand $ac_aux_dir to an absolute path 108 | am_aux_dir=`cd $ac_aux_dir && pwd` 109 | ]) 110 | 111 | # AM_CONDITIONAL -*- Autoconf -*- 112 | 113 | # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 114 | # Free Software Foundation, Inc. 115 | # 116 | # This file is free software; the Free Software Foundation 117 | # gives unlimited permission to copy and/or distribute it, 118 | # with or without modifications, as long as this notice is preserved. 119 | 120 | # serial 9 121 | 122 | # AM_CONDITIONAL(NAME, SHELL-CONDITION) 123 | # ------------------------------------- 124 | # Define a conditional. 125 | AC_DEFUN([AM_CONDITIONAL], 126 | [AC_PREREQ(2.52)dnl 127 | ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], 128 | [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl 129 | AC_SUBST([$1_TRUE])dnl 130 | AC_SUBST([$1_FALSE])dnl 131 | _AM_SUBST_NOTMAKE([$1_TRUE])dnl 132 | _AM_SUBST_NOTMAKE([$1_FALSE])dnl 133 | m4_define([_AM_COND_VALUE_$1], [$2])dnl 134 | if $2; then 135 | $1_TRUE= 136 | $1_FALSE='#' 137 | else 138 | $1_TRUE='#' 139 | $1_FALSE= 140 | fi 141 | AC_CONFIG_COMMANDS_PRE( 142 | [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then 143 | AC_MSG_ERROR([[conditional "$1" was never defined. 144 | Usually this means the macro was only invoked conditionally.]]) 145 | fi])]) 146 | 147 | # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 148 | # Free Software Foundation, Inc. 149 | # 150 | # This file is free software; the Free Software Foundation 151 | # gives unlimited permission to copy and/or distribute it, 152 | # with or without modifications, as long as this notice is preserved. 153 | 154 | # serial 10 155 | 156 | # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be 157 | # written in clear, in which case automake, when reading aclocal.m4, 158 | # will think it sees a *use*, and therefore will trigger all it's 159 | # C support machinery. Also note that it means that autoscan, seeing 160 | # CC etc. in the Makefile, will ask for an AC_PROG_CC use... 161 | 162 | 163 | # _AM_DEPENDENCIES(NAME) 164 | # ---------------------- 165 | # See how the compiler implements dependency checking. 166 | # NAME is "CC", "CXX", "GCJ", or "OBJC". 167 | # We try a few techniques and use that to set a single cache variable. 168 | # 169 | # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was 170 | # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular 171 | # dependency, and given that the user is not expected to run this macro, 172 | # just rely on AC_PROG_CC. 173 | AC_DEFUN([_AM_DEPENDENCIES], 174 | [AC_REQUIRE([AM_SET_DEPDIR])dnl 175 | AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl 176 | AC_REQUIRE([AM_MAKE_INCLUDE])dnl 177 | AC_REQUIRE([AM_DEP_TRACK])dnl 178 | 179 | ifelse([$1], CC, [depcc="$CC" am_compiler_list=], 180 | [$1], CXX, [depcc="$CXX" am_compiler_list=], 181 | [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], 182 | [$1], UPC, [depcc="$UPC" am_compiler_list=], 183 | [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], 184 | [depcc="$$1" am_compiler_list=]) 185 | 186 | AC_CACHE_CHECK([dependency style of $depcc], 187 | [am_cv_$1_dependencies_compiler_type], 188 | [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then 189 | # We make a subdir and do the tests there. Otherwise we can end up 190 | # making bogus files that we don't know about and never remove. For 191 | # instance it was reported that on HP-UX the gcc test will end up 192 | # making a dummy file named `D' -- because `-MD' means `put the output 193 | # in D'. 194 | mkdir conftest.dir 195 | # Copy depcomp to subdir because otherwise we won't find it if we're 196 | # using a relative directory. 197 | cp "$am_depcomp" conftest.dir 198 | cd conftest.dir 199 | # We will build objects and dependencies in a subdirectory because 200 | # it helps to detect inapplicable dependency modes. For instance 201 | # both Tru64's cc and ICC support -MD to output dependencies as a 202 | # side effect of compilation, but ICC will put the dependencies in 203 | # the current directory while Tru64 will put them in the object 204 | # directory. 205 | mkdir sub 206 | 207 | am_cv_$1_dependencies_compiler_type=none 208 | if test "$am_compiler_list" = ""; then 209 | am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` 210 | fi 211 | am__universal=false 212 | m4_case([$1], [CC], 213 | [case " $depcc " in #( 214 | *\ -arch\ *\ -arch\ *) am__universal=true ;; 215 | esac], 216 | [CXX], 217 | [case " $depcc " in #( 218 | *\ -arch\ *\ -arch\ *) am__universal=true ;; 219 | esac]) 220 | 221 | for depmode in $am_compiler_list; do 222 | # Setup a source with many dependencies, because some compilers 223 | # like to wrap large dependency lists on column 80 (with \), and 224 | # we should not choose a depcomp mode which is confused by this. 225 | # 226 | # We need to recreate these files for each test, as the compiler may 227 | # overwrite some of them when testing with obscure command lines. 228 | # This happens at least with the AIX C compiler. 229 | : > sub/conftest.c 230 | for i in 1 2 3 4 5 6; do 231 | echo '#include "conftst'$i'.h"' >> sub/conftest.c 232 | # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with 233 | # Solaris 8's {/usr,}/bin/sh. 234 | touch sub/conftst$i.h 235 | done 236 | echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf 237 | 238 | # We check with `-c' and `-o' for the sake of the "dashmstdout" 239 | # mode. It turns out that the SunPro C++ compiler does not properly 240 | # handle `-M -o', and we need to detect this. Also, some Intel 241 | # versions had trouble with output in subdirs 242 | am__obj=sub/conftest.${OBJEXT-o} 243 | am__minus_obj="-o $am__obj" 244 | case $depmode in 245 | gcc) 246 | # This depmode causes a compiler race in universal mode. 247 | test "$am__universal" = false || continue 248 | ;; 249 | nosideeffect) 250 | # after this tag, mechanisms are not by side-effect, so they'll 251 | # only be used when explicitly requested 252 | if test "x$enable_dependency_tracking" = xyes; then 253 | continue 254 | else 255 | break 256 | fi 257 | ;; 258 | msvisualcpp | msvcmsys) 259 | # This compiler won't grok `-c -o', but also, the minuso test has 260 | # not run yet. These depmodes are late enough in the game, and 261 | # so weak that their functioning should not be impacted. 262 | am__obj=conftest.${OBJEXT-o} 263 | am__minus_obj= 264 | ;; 265 | none) break ;; 266 | esac 267 | if depmode=$depmode \ 268 | source=sub/conftest.c object=$am__obj \ 269 | depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ 270 | $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ 271 | >/dev/null 2>conftest.err && 272 | grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && 273 | grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && 274 | grep $am__obj sub/conftest.Po > /dev/null 2>&1 && 275 | ${MAKE-make} -s -f confmf > /dev/null 2>&1; then 276 | # icc doesn't choke on unknown options, it will just issue warnings 277 | # or remarks (even with -Werror). So we grep stderr for any message 278 | # that says an option was ignored or not supported. 279 | # When given -MP, icc 7.0 and 7.1 complain thusly: 280 | # icc: Command line warning: ignoring option '-M'; no argument required 281 | # The diagnosis changed in icc 8.0: 282 | # icc: Command line remark: option '-MP' not supported 283 | if (grep 'ignoring option' conftest.err || 284 | grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else 285 | am_cv_$1_dependencies_compiler_type=$depmode 286 | break 287 | fi 288 | fi 289 | done 290 | 291 | cd .. 292 | rm -rf conftest.dir 293 | else 294 | am_cv_$1_dependencies_compiler_type=none 295 | fi 296 | ]) 297 | AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) 298 | AM_CONDITIONAL([am__fastdep$1], [ 299 | test "x$enable_dependency_tracking" != xno \ 300 | && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) 301 | ]) 302 | 303 | 304 | # AM_SET_DEPDIR 305 | # ------------- 306 | # Choose a directory name for dependency files. 307 | # This macro is AC_REQUIREd in _AM_DEPENDENCIES 308 | AC_DEFUN([AM_SET_DEPDIR], 309 | [AC_REQUIRE([AM_SET_LEADING_DOT])dnl 310 | AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl 311 | ]) 312 | 313 | 314 | # AM_DEP_TRACK 315 | # ------------ 316 | AC_DEFUN([AM_DEP_TRACK], 317 | [AC_ARG_ENABLE(dependency-tracking, 318 | [ --disable-dependency-tracking speeds up one-time build 319 | --enable-dependency-tracking do not reject slow dependency extractors]) 320 | if test "x$enable_dependency_tracking" != xno; then 321 | am_depcomp="$ac_aux_dir/depcomp" 322 | AMDEPBACKSLASH='\' 323 | fi 324 | AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) 325 | AC_SUBST([AMDEPBACKSLASH])dnl 326 | _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl 327 | ]) 328 | 329 | # Generate code to set up dependency tracking. -*- Autoconf -*- 330 | 331 | # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 332 | # Free Software Foundation, Inc. 333 | # 334 | # This file is free software; the Free Software Foundation 335 | # gives unlimited permission to copy and/or distribute it, 336 | # with or without modifications, as long as this notice is preserved. 337 | 338 | #serial 5 339 | 340 | # _AM_OUTPUT_DEPENDENCY_COMMANDS 341 | # ------------------------------ 342 | AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], 343 | [{ 344 | # Autoconf 2.62 quotes --file arguments for eval, but not when files 345 | # are listed without --file. Let's play safe and only enable the eval 346 | # if we detect the quoting. 347 | case $CONFIG_FILES in 348 | *\'*) eval set x "$CONFIG_FILES" ;; 349 | *) set x $CONFIG_FILES ;; 350 | esac 351 | shift 352 | for mf 353 | do 354 | # Strip MF so we end up with the name of the file. 355 | mf=`echo "$mf" | sed -e 's/:.*$//'` 356 | # Check whether this is an Automake generated Makefile or not. 357 | # We used to match only the files named `Makefile.in', but 358 | # some people rename them; so instead we look at the file content. 359 | # Grep'ing the first line is not enough: some people post-process 360 | # each Makefile.in and add a new line on top of each file to say so. 361 | # Grep'ing the whole file is not good either: AIX grep has a line 362 | # limit of 2048, but all sed's we know have understand at least 4000. 363 | if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then 364 | dirpart=`AS_DIRNAME("$mf")` 365 | else 366 | continue 367 | fi 368 | # Extract the definition of DEPDIR, am__include, and am__quote 369 | # from the Makefile without running `make'. 370 | DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` 371 | test -z "$DEPDIR" && continue 372 | am__include=`sed -n 's/^am__include = //p' < "$mf"` 373 | test -z "am__include" && continue 374 | am__quote=`sed -n 's/^am__quote = //p' < "$mf"` 375 | # When using ansi2knr, U may be empty or an underscore; expand it 376 | U=`sed -n 's/^U = //p' < "$mf"` 377 | # Find all dependency output files, they are included files with 378 | # $(DEPDIR) in their names. We invoke sed twice because it is the 379 | # simplest approach to changing $(DEPDIR) to its actual value in the 380 | # expansion. 381 | for file in `sed -n " 382 | s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ 383 | sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do 384 | # Make sure the directory exists. 385 | test -f "$dirpart/$file" && continue 386 | fdir=`AS_DIRNAME(["$file"])` 387 | AS_MKDIR_P([$dirpart/$fdir]) 388 | # echo "creating $dirpart/$file" 389 | echo '# dummy' > "$dirpart/$file" 390 | done 391 | done 392 | } 393 | ])# _AM_OUTPUT_DEPENDENCY_COMMANDS 394 | 395 | 396 | # AM_OUTPUT_DEPENDENCY_COMMANDS 397 | # ----------------------------- 398 | # This macro should only be invoked once -- use via AC_REQUIRE. 399 | # 400 | # This code is only required when automatic dependency tracking 401 | # is enabled. FIXME. This creates each `.P' file that we will 402 | # need in order to bootstrap the dependency handling code. 403 | AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], 404 | [AC_CONFIG_COMMANDS([depfiles], 405 | [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], 406 | [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) 407 | ]) 408 | 409 | # Do all the work for Automake. -*- Autoconf -*- 410 | 411 | # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 412 | # 2005, 2006, 2008, 2009 Free Software Foundation, Inc. 413 | # 414 | # This file is free software; the Free Software Foundation 415 | # gives unlimited permission to copy and/or distribute it, 416 | # with or without modifications, as long as this notice is preserved. 417 | 418 | # serial 16 419 | 420 | # This macro actually does too much. Some checks are only needed if 421 | # your package does certain things. But this isn't really a big deal. 422 | 423 | # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) 424 | # AM_INIT_AUTOMAKE([OPTIONS]) 425 | # ----------------------------------------------- 426 | # The call with PACKAGE and VERSION arguments is the old style 427 | # call (pre autoconf-2.50), which is being phased out. PACKAGE 428 | # and VERSION should now be passed to AC_INIT and removed from 429 | # the call to AM_INIT_AUTOMAKE. 430 | # We support both call styles for the transition. After 431 | # the next Automake release, Autoconf can make the AC_INIT 432 | # arguments mandatory, and then we can depend on a new Autoconf 433 | # release and drop the old call support. 434 | AC_DEFUN([AM_INIT_AUTOMAKE], 435 | [AC_PREREQ([2.62])dnl 436 | dnl Autoconf wants to disallow AM_ names. We explicitly allow 437 | dnl the ones we care about. 438 | m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl 439 | AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl 440 | AC_REQUIRE([AC_PROG_INSTALL])dnl 441 | if test "`cd $srcdir && pwd`" != "`pwd`"; then 442 | # Use -I$(srcdir) only when $(srcdir) != ., so that make's output 443 | # is not polluted with repeated "-I." 444 | AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl 445 | # test to see if srcdir already configured 446 | if test -f $srcdir/config.status; then 447 | AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) 448 | fi 449 | fi 450 | 451 | # test whether we have cygpath 452 | if test -z "$CYGPATH_W"; then 453 | if (cygpath --version) >/dev/null 2>/dev/null; then 454 | CYGPATH_W='cygpath -w' 455 | else 456 | CYGPATH_W=echo 457 | fi 458 | fi 459 | AC_SUBST([CYGPATH_W]) 460 | 461 | # Define the identity of the package. 462 | dnl Distinguish between old-style and new-style calls. 463 | m4_ifval([$2], 464 | [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl 465 | AC_SUBST([PACKAGE], [$1])dnl 466 | AC_SUBST([VERSION], [$2])], 467 | [_AM_SET_OPTIONS([$1])dnl 468 | dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. 469 | m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, 470 | [m4_fatal([AC_INIT should be called with package and version arguments])])dnl 471 | AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl 472 | AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl 473 | 474 | _AM_IF_OPTION([no-define],, 475 | [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) 476 | AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl 477 | 478 | # Some tools Automake needs. 479 | AC_REQUIRE([AM_SANITY_CHECK])dnl 480 | AC_REQUIRE([AC_ARG_PROGRAM])dnl 481 | AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) 482 | AM_MISSING_PROG(AUTOCONF, autoconf) 483 | AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) 484 | AM_MISSING_PROG(AUTOHEADER, autoheader) 485 | AM_MISSING_PROG(MAKEINFO, makeinfo) 486 | AC_REQUIRE([AM_PROG_INSTALL_SH])dnl 487 | AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl 488 | AC_REQUIRE([AM_PROG_MKDIR_P])dnl 489 | # We need awk for the "check" target. The system "awk" is bad on 490 | # some platforms. 491 | AC_REQUIRE([AC_PROG_AWK])dnl 492 | AC_REQUIRE([AC_PROG_MAKE_SET])dnl 493 | AC_REQUIRE([AM_SET_LEADING_DOT])dnl 494 | _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], 495 | [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], 496 | [_AM_PROG_TAR([v7])])]) 497 | _AM_IF_OPTION([no-dependencies],, 498 | [AC_PROVIDE_IFELSE([AC_PROG_CC], 499 | [_AM_DEPENDENCIES(CC)], 500 | [define([AC_PROG_CC], 501 | defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl 502 | AC_PROVIDE_IFELSE([AC_PROG_CXX], 503 | [_AM_DEPENDENCIES(CXX)], 504 | [define([AC_PROG_CXX], 505 | defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl 506 | AC_PROVIDE_IFELSE([AC_PROG_OBJC], 507 | [_AM_DEPENDENCIES(OBJC)], 508 | [define([AC_PROG_OBJC], 509 | defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl 510 | ]) 511 | _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl 512 | dnl The `parallel-tests' driver may need to know about EXEEXT, so add the 513 | dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro 514 | dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. 515 | AC_CONFIG_COMMANDS_PRE(dnl 516 | [m4_provide_if([_AM_COMPILER_EXEEXT], 517 | [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl 518 | ]) 519 | 520 | dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not 521 | dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further 522 | dnl mangled by Autoconf and run in a shell conditional statement. 523 | m4_define([_AC_COMPILER_EXEEXT], 524 | m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) 525 | 526 | 527 | # When config.status generates a header, we must update the stamp-h file. 528 | # This file resides in the same directory as the config header 529 | # that is generated. The stamp files are numbered to have different names. 530 | 531 | # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the 532 | # loop where config.status creates the headers, so we can generate 533 | # our stamp files there. 534 | AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], 535 | [# Compute $1's index in $config_headers. 536 | _am_arg=$1 537 | _am_stamp_count=1 538 | for _am_header in $config_headers :; do 539 | case $_am_header in 540 | $_am_arg | $_am_arg:* ) 541 | break ;; 542 | * ) 543 | _am_stamp_count=`expr $_am_stamp_count + 1` ;; 544 | esac 545 | done 546 | echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) 547 | 548 | # Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. 549 | # 550 | # This file is free software; the Free Software Foundation 551 | # gives unlimited permission to copy and/or distribute it, 552 | # with or without modifications, as long as this notice is preserved. 553 | 554 | # AM_PROG_INSTALL_SH 555 | # ------------------ 556 | # Define $install_sh. 557 | AC_DEFUN([AM_PROG_INSTALL_SH], 558 | [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl 559 | if test x"${install_sh}" != xset; then 560 | case $am_aux_dir in 561 | *\ * | *\ *) 562 | install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; 563 | *) 564 | install_sh="\${SHELL} $am_aux_dir/install-sh" 565 | esac 566 | fi 567 | AC_SUBST(install_sh)]) 568 | 569 | # Copyright (C) 2003, 2005 Free Software Foundation, Inc. 570 | # 571 | # This file is free software; the Free Software Foundation 572 | # gives unlimited permission to copy and/or distribute it, 573 | # with or without modifications, as long as this notice is preserved. 574 | 575 | # serial 2 576 | 577 | # Check whether the underlying file-system supports filenames 578 | # with a leading dot. For instance MS-DOS doesn't. 579 | AC_DEFUN([AM_SET_LEADING_DOT], 580 | [rm -rf .tst 2>/dev/null 581 | mkdir .tst 2>/dev/null 582 | if test -d .tst; then 583 | am__leading_dot=. 584 | else 585 | am__leading_dot=_ 586 | fi 587 | rmdir .tst 2>/dev/null 588 | AC_SUBST([am__leading_dot])]) 589 | 590 | # Check to see how 'make' treats includes. -*- Autoconf -*- 591 | 592 | # Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. 593 | # 594 | # This file is free software; the Free Software Foundation 595 | # gives unlimited permission to copy and/or distribute it, 596 | # with or without modifications, as long as this notice is preserved. 597 | 598 | # serial 4 599 | 600 | # AM_MAKE_INCLUDE() 601 | # ----------------- 602 | # Check to see how make treats includes. 603 | AC_DEFUN([AM_MAKE_INCLUDE], 604 | [am_make=${MAKE-make} 605 | cat > confinc << 'END' 606 | am__doit: 607 | @echo this is the am__doit target 608 | .PHONY: am__doit 609 | END 610 | # If we don't find an include directive, just comment out the code. 611 | AC_MSG_CHECKING([for style of include used by $am_make]) 612 | am__include="#" 613 | am__quote= 614 | _am_result=none 615 | # First try GNU make style include. 616 | echo "include confinc" > confmf 617 | # Ignore all kinds of additional output from `make'. 618 | case `$am_make -s -f confmf 2> /dev/null` in #( 619 | *the\ am__doit\ target*) 620 | am__include=include 621 | am__quote= 622 | _am_result=GNU 623 | ;; 624 | esac 625 | # Now try BSD make style include. 626 | if test "$am__include" = "#"; then 627 | echo '.include "confinc"' > confmf 628 | case `$am_make -s -f confmf 2> /dev/null` in #( 629 | *the\ am__doit\ target*) 630 | am__include=.include 631 | am__quote="\"" 632 | _am_result=BSD 633 | ;; 634 | esac 635 | fi 636 | AC_SUBST([am__include]) 637 | AC_SUBST([am__quote]) 638 | AC_MSG_RESULT([$_am_result]) 639 | rm -f confinc confmf 640 | ]) 641 | 642 | # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- 643 | 644 | # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 645 | # Free Software Foundation, Inc. 646 | # 647 | # This file is free software; the Free Software Foundation 648 | # gives unlimited permission to copy and/or distribute it, 649 | # with or without modifications, as long as this notice is preserved. 650 | 651 | # serial 6 652 | 653 | # AM_MISSING_PROG(NAME, PROGRAM) 654 | # ------------------------------ 655 | AC_DEFUN([AM_MISSING_PROG], 656 | [AC_REQUIRE([AM_MISSING_HAS_RUN]) 657 | $1=${$1-"${am_missing_run}$2"} 658 | AC_SUBST($1)]) 659 | 660 | 661 | # AM_MISSING_HAS_RUN 662 | # ------------------ 663 | # Define MISSING if not defined so far and test if it supports --run. 664 | # If it does, set am_missing_run to use it, otherwise, to nothing. 665 | AC_DEFUN([AM_MISSING_HAS_RUN], 666 | [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl 667 | AC_REQUIRE_AUX_FILE([missing])dnl 668 | if test x"${MISSING+set}" != xset; then 669 | case $am_aux_dir in 670 | *\ * | *\ *) 671 | MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; 672 | *) 673 | MISSING="\${SHELL} $am_aux_dir/missing" ;; 674 | esac 675 | fi 676 | # Use eval to expand $SHELL 677 | if eval "$MISSING --run true"; then 678 | am_missing_run="$MISSING --run " 679 | else 680 | am_missing_run= 681 | AC_MSG_WARN([`missing' script is too old or missing]) 682 | fi 683 | ]) 684 | 685 | # Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. 686 | # 687 | # This file is free software; the Free Software Foundation 688 | # gives unlimited permission to copy and/or distribute it, 689 | # with or without modifications, as long as this notice is preserved. 690 | 691 | # AM_PROG_MKDIR_P 692 | # --------------- 693 | # Check for `mkdir -p'. 694 | AC_DEFUN([AM_PROG_MKDIR_P], 695 | [AC_PREREQ([2.60])dnl 696 | AC_REQUIRE([AC_PROG_MKDIR_P])dnl 697 | dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, 698 | dnl while keeping a definition of mkdir_p for backward compatibility. 699 | dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. 700 | dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of 701 | dnl Makefile.ins that do not define MKDIR_P, so we do our own 702 | dnl adjustment using top_builddir (which is defined more often than 703 | dnl MKDIR_P). 704 | AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl 705 | case $mkdir_p in 706 | [[\\/$]]* | ?:[[\\/]]*) ;; 707 | */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; 708 | esac 709 | ]) 710 | 711 | # Helper functions for option handling. -*- Autoconf -*- 712 | 713 | # Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. 714 | # 715 | # This file is free software; the Free Software Foundation 716 | # gives unlimited permission to copy and/or distribute it, 717 | # with or without modifications, as long as this notice is preserved. 718 | 719 | # serial 4 720 | 721 | # _AM_MANGLE_OPTION(NAME) 722 | # ----------------------- 723 | AC_DEFUN([_AM_MANGLE_OPTION], 724 | [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) 725 | 726 | # _AM_SET_OPTION(NAME) 727 | # ------------------------------ 728 | # Set option NAME. Presently that only means defining a flag for this option. 729 | AC_DEFUN([_AM_SET_OPTION], 730 | [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) 731 | 732 | # _AM_SET_OPTIONS(OPTIONS) 733 | # ---------------------------------- 734 | # OPTIONS is a space-separated list of Automake options. 735 | AC_DEFUN([_AM_SET_OPTIONS], 736 | [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) 737 | 738 | # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) 739 | # ------------------------------------------- 740 | # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. 741 | AC_DEFUN([_AM_IF_OPTION], 742 | [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) 743 | 744 | # Check to make sure that the build environment is sane. -*- Autoconf -*- 745 | 746 | # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 747 | # Free Software Foundation, Inc. 748 | # 749 | # This file is free software; the Free Software Foundation 750 | # gives unlimited permission to copy and/or distribute it, 751 | # with or without modifications, as long as this notice is preserved. 752 | 753 | # serial 5 754 | 755 | # AM_SANITY_CHECK 756 | # --------------- 757 | AC_DEFUN([AM_SANITY_CHECK], 758 | [AC_MSG_CHECKING([whether build environment is sane]) 759 | # Just in case 760 | sleep 1 761 | echo timestamp > conftest.file 762 | # Reject unsafe characters in $srcdir or the absolute working directory 763 | # name. Accept space and tab only in the latter. 764 | am_lf=' 765 | ' 766 | case `pwd` in 767 | *[[\\\"\#\$\&\'\`$am_lf]]*) 768 | AC_MSG_ERROR([unsafe absolute working directory name]);; 769 | esac 770 | case $srcdir in 771 | *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) 772 | AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; 773 | esac 774 | 775 | # Do `set' in a subshell so we don't clobber the current shell's 776 | # arguments. Must try -L first in case configure is actually a 777 | # symlink; some systems play weird games with the mod time of symlinks 778 | # (eg FreeBSD returns the mod time of the symlink's containing 779 | # directory). 780 | if ( 781 | set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` 782 | if test "$[*]" = "X"; then 783 | # -L didn't work. 784 | set X `ls -t "$srcdir/configure" conftest.file` 785 | fi 786 | rm -f conftest.file 787 | if test "$[*]" != "X $srcdir/configure conftest.file" \ 788 | && test "$[*]" != "X conftest.file $srcdir/configure"; then 789 | 790 | # If neither matched, then we have a broken ls. This can happen 791 | # if, for instance, CONFIG_SHELL is bash and it inherits a 792 | # broken ls alias from the environment. This has actually 793 | # happened. Such a system could not be considered "sane". 794 | AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken 795 | alias in your environment]) 796 | fi 797 | 798 | test "$[2]" = conftest.file 799 | ) 800 | then 801 | # Ok. 802 | : 803 | else 804 | AC_MSG_ERROR([newly created file is older than distributed files! 805 | Check your system clock]) 806 | fi 807 | AC_MSG_RESULT(yes)]) 808 | 809 | # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. 810 | # 811 | # This file is free software; the Free Software Foundation 812 | # gives unlimited permission to copy and/or distribute it, 813 | # with or without modifications, as long as this notice is preserved. 814 | 815 | # AM_PROG_INSTALL_STRIP 816 | # --------------------- 817 | # One issue with vendor `install' (even GNU) is that you can't 818 | # specify the program used to strip binaries. This is especially 819 | # annoying in cross-compiling environments, where the build's strip 820 | # is unlikely to handle the host's binaries. 821 | # Fortunately install-sh will honor a STRIPPROG variable, so we 822 | # always use install-sh in `make install-strip', and initialize 823 | # STRIPPROG with the value of the STRIP variable (set by the user). 824 | AC_DEFUN([AM_PROG_INSTALL_STRIP], 825 | [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl 826 | # Installed binaries are usually stripped using `strip' when the user 827 | # run `make install-strip'. However `strip' might not be the right 828 | # tool to use in cross-compilation environments, therefore Automake 829 | # will honor the `STRIP' environment variable to overrule this program. 830 | dnl Don't test for $cross_compiling = yes, because it might be `maybe'. 831 | if test "$cross_compiling" != no; then 832 | AC_CHECK_TOOL([STRIP], [strip], :) 833 | fi 834 | INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" 835 | AC_SUBST([INSTALL_STRIP_PROGRAM])]) 836 | 837 | # Copyright (C) 2006, 2008 Free Software Foundation, Inc. 838 | # 839 | # This file is free software; the Free Software Foundation 840 | # gives unlimited permission to copy and/or distribute it, 841 | # with or without modifications, as long as this notice is preserved. 842 | 843 | # serial 2 844 | 845 | # _AM_SUBST_NOTMAKE(VARIABLE) 846 | # --------------------------- 847 | # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. 848 | # This macro is traced by Automake. 849 | AC_DEFUN([_AM_SUBST_NOTMAKE]) 850 | 851 | # AM_SUBST_NOTMAKE(VARIABLE) 852 | # --------------------------- 853 | # Public sister of _AM_SUBST_NOTMAKE. 854 | AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) 855 | 856 | # Check how to create a tarball. -*- Autoconf -*- 857 | 858 | # Copyright (C) 2004, 2005 Free Software Foundation, Inc. 859 | # 860 | # This file is free software; the Free Software Foundation 861 | # gives unlimited permission to copy and/or distribute it, 862 | # with or without modifications, as long as this notice is preserved. 863 | 864 | # serial 2 865 | 866 | # _AM_PROG_TAR(FORMAT) 867 | # -------------------- 868 | # Check how to create a tarball in format FORMAT. 869 | # FORMAT should be one of `v7', `ustar', or `pax'. 870 | # 871 | # Substitute a variable $(am__tar) that is a command 872 | # writing to stdout a FORMAT-tarball containing the directory 873 | # $tardir. 874 | # tardir=directory && $(am__tar) > result.tar 875 | # 876 | # Substitute a variable $(am__untar) that extract such 877 | # a tarball read from stdin. 878 | # $(am__untar) < result.tar 879 | AC_DEFUN([_AM_PROG_TAR], 880 | [# Always define AMTAR for backward compatibility. 881 | AM_MISSING_PROG([AMTAR], [tar]) 882 | m4_if([$1], [v7], 883 | [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], 884 | [m4_case([$1], [ustar],, [pax],, 885 | [m4_fatal([Unknown tar format])]) 886 | AC_MSG_CHECKING([how to create a $1 tar archive]) 887 | # Loop over all known methods to create a tar archive until one works. 888 | _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' 889 | _am_tools=${am_cv_prog_tar_$1-$_am_tools} 890 | # Do not fold the above two line into one, because Tru64 sh and 891 | # Solaris sh will not grok spaces in the rhs of `-'. 892 | for _am_tool in $_am_tools 893 | do 894 | case $_am_tool in 895 | gnutar) 896 | for _am_tar in tar gnutar gtar; 897 | do 898 | AM_RUN_LOG([$_am_tar --version]) && break 899 | done 900 | am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' 901 | am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' 902 | am__untar="$_am_tar -xf -" 903 | ;; 904 | plaintar) 905 | # Must skip GNU tar: if it does not support --format= it doesn't create 906 | # ustar tarball either. 907 | (tar --version) >/dev/null 2>&1 && continue 908 | am__tar='tar chf - "$$tardir"' 909 | am__tar_='tar chf - "$tardir"' 910 | am__untar='tar xf -' 911 | ;; 912 | pax) 913 | am__tar='pax -L -x $1 -w "$$tardir"' 914 | am__tar_='pax -L -x $1 -w "$tardir"' 915 | am__untar='pax -r' 916 | ;; 917 | cpio) 918 | am__tar='find "$$tardir" -print | cpio -o -H $1 -L' 919 | am__tar_='find "$tardir" -print | cpio -o -H $1 -L' 920 | am__untar='cpio -i -H $1 -d' 921 | ;; 922 | none) 923 | am__tar=false 924 | am__tar_=false 925 | am__untar=false 926 | ;; 927 | esac 928 | 929 | # If the value was cached, stop now. We just wanted to have am__tar 930 | # and am__untar set. 931 | test -n "${am_cv_prog_tar_$1}" && break 932 | 933 | # tar/untar a dummy directory, and stop if the command works 934 | rm -rf conftest.dir 935 | mkdir conftest.dir 936 | echo GrepMe > conftest.dir/file 937 | AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) 938 | rm -rf conftest.dir 939 | if test -s conftest.tar; then 940 | AM_RUN_LOG([$am__untar /dev/null 2>&1 && break 942 | fi 943 | done 944 | rm -rf conftest.dir 945 | 946 | AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) 947 | AC_MSG_RESULT([$am_cv_prog_tar_$1])]) 948 | AC_SUBST([am__tar]) 949 | AC_SUBST([am__untar]) 950 | ]) # _AM_PROG_TAR 951 | 952 | -------------------------------------------------------------------------------- /config.h.in: -------------------------------------------------------------------------------- 1 | /* config.h.in. Generated from configure.ac by autoheader. */ 2 | 3 | /* Define to 1 if you have the header file. */ 4 | #undef HAVE_DMATHDEFINES_H 5 | 6 | /* Define to 1 if you have the header file. */ 7 | #undef HAVE_DMATRIX_H 8 | 9 | /* Define to 1 if you have the header file. */ 10 | #undef HAVE_DQUATERNION_H 11 | 12 | /* Define to 1 if you have the header file. */ 13 | #undef HAVE_DVECTOR_H 14 | 15 | /* Define to 1 if you have the header file. */ 16 | #undef HAVE_INTTYPES_H 17 | 18 | /* Define to 1 if you have the header file. */ 19 | #undef HAVE_IRRLICHT_H 20 | 21 | /* Define to 1 if you have the `dMath' library (-ldMath). */ 22 | #undef HAVE_LIBDMATH 23 | 24 | /* Define to 1 if you have the `GL' library (-lGL). */ 25 | #undef HAVE_LIBGL 26 | 27 | /* Define to 1 if you have the `GLU' library (-lGLU). */ 28 | #undef HAVE_LIBGLU 29 | 30 | /* Define to 1 if you have the `Irrlicht' library (-lIrrlicht). */ 31 | #undef HAVE_LIBIRRLICHT 32 | 33 | /* Define to 1 if you have the `Newton' library (-lNewton). */ 34 | #undef HAVE_LIBNEWTON 35 | 36 | /* Define to 1 if you have the header file. */ 37 | #undef HAVE_MEMORY_H 38 | 39 | /* Define to 1 if you have the header file. */ 40 | #undef HAVE_NEWTON_H 41 | 42 | /* Define to 1 if you have the header file. */ 43 | #undef HAVE_RACINGGAME_H 44 | 45 | /* Define to 1 if stdbool.h conforms to C99. */ 46 | #undef HAVE_STDBOOL_H 47 | 48 | /* Define to 1 if you have the header file. */ 49 | #undef HAVE_STDINT_H 50 | 51 | /* Define to 1 if you have the header file. */ 52 | #undef HAVE_STDLIB_H 53 | 54 | /* Define to 1 if you have the header file. */ 55 | #undef HAVE_STRINGS_H 56 | 57 | /* Define to 1 if you have the header file. */ 58 | #undef HAVE_STRING_H 59 | 60 | /* Define to 1 if you have the header file. */ 61 | #undef HAVE_SYS_STAT_H 62 | 63 | /* Define to 1 if you have the header file. */ 64 | #undef HAVE_SYS_TYPES_H 65 | 66 | /* Define to 1 if you have the header file. */ 67 | #undef HAVE_UNISTD_H 68 | 69 | /* Define to 1 if the system has the type `_Bool'. */ 70 | #undef HAVE__BOOL 71 | 72 | /* Name of package */ 73 | #undef PACKAGE 74 | 75 | /* Define to the address where bug reports for this package should be sent. */ 76 | #undef PACKAGE_BUGREPORT 77 | 78 | /* Define to the full name of this package. */ 79 | #undef PACKAGE_NAME 80 | 81 | /* Define to the full name and version of this package. */ 82 | #undef PACKAGE_STRING 83 | 84 | /* Define to the one symbol short name of this package. */ 85 | #undef PACKAGE_TARNAME 86 | 87 | /* Define to the home page for this package. */ 88 | #undef PACKAGE_URL 89 | 90 | /* Define to the version of this package. */ 91 | #undef PACKAGE_VERSION 92 | 93 | /* Define to 1 if you have the ANSI C header files. */ 94 | #undef STDC_HEADERS 95 | 96 | /* Version number of package */ 97 | #undef VERSION 98 | -------------------------------------------------------------------------------- /configure.ac: -------------------------------------------------------------------------------- 1 | # -*- Autoconf -*- 2 | # Process this file with autoconf to produce a configure script. 3 | 4 | AC_PREREQ([2.67]) 5 | AC_INIT([RacingGame], [0.4], [alexei.kornienko@gmail.com]) 6 | AM_INIT_AUTOMAKE([RacingGame], [0.4]) 7 | AC_CONFIG_SRCDIR([src/main.cpp]) 8 | AC_CONFIG_HEADERS([config.h]) 9 | 10 | # Checks for programs. 11 | AC_PROG_CXX() 12 | AC_LANG(C++) 13 | 14 | # Checks for libraries. 15 | LDFLAGS+=" -lGL" 16 | AC_CHECK_LIB([GL],[glBegin],[],AC_MSG_ERROR([Missing Irrlicht lib. Try option --with-irrlicht-lib])) 17 | LDFLAGS+=" -lGLU" 18 | AC_CHECK_LIB([GLU],[gluNewQuadric],[],AC_MSG_ERROR([Missing Irrlicht lib. Try option --with-irrlicht-lib])) 19 | 20 | LDFLAGS+=" -lIrrlicht" 21 | AC_ARG_WITH([irrlicht-lib],AS_HELP_STRING([--with-irrlicht-lib path to irrliht lib file]), 22 | [LDFLAGS+=" -L$withval"] 23 | ) 24 | AC_CHECK_LIB( 25 | [Irrlicht], 26 | [createDevice], 27 | [], 28 | AC_MSG_ERROR([Missing Irrlicht lib. Try option --with-irrlicht-lib]) 29 | ) 30 | 31 | LDFLAGS+=" -lpthread" 32 | AC_CHECK_LIB( 33 | [pthread], 34 | [pthread_create], 35 | [], 36 | AC_MSG_ERROR([Missing Pthreads lib]) 37 | ) 38 | 39 | LDFLAGS+=" -lNewton" 40 | AC_ARG_WITH([newton-lib],AS_HELP_STRING([--with-newton-lib path to Newton lib file]), 41 | [LDFLAGS+=" -L$withval"] 42 | ) 43 | AC_CHECK_LIB( 44 | [Newton], 45 | [NewtonCreate], 46 | [], 47 | AC_MSG_ERROR([Missing Newton lib. Try option --with-newton-lib]) 48 | ) 49 | 50 | LDFLAGS+=" -ldMath" 51 | AC_ARG_WITH([dmath-lib],AS_HELP_STRING([--with-dmath-lib path to dMath lib file]), 52 | [LDFLAGS+=" -L$withval"] 53 | ) 54 | AC_CHECK_LIB( 55 | [dMath], 56 | [main], 57 | [], 58 | AC_MSG_ERROR([Missing dMath lib. Try option --with-dmath-lib]) 59 | ) 60 | 61 | # Checks for header files. 62 | CXXFLAGS+=" -I$srcdir/src" 63 | CPPFLAGS+=" -I$srcdir/src" 64 | AC_ARG_WITH([irrlicht-include],AS_HELP_STRING([--with-irrlicht-include path to irrliht headers]), 65 | [CXXFLAGS+=" -I$withval"; CPPFLAGS+=" -I$withval" ] 66 | ) 67 | AC_CHECK_HEADERS([irrlicht.h], [], AC_MSG_ERROR([Missing irrlicht.h. Try option --with-irrlicht-include]) ) 68 | 69 | AC_ARG_WITH([newton-include],AS_HELP_STRING([--with-newton-include path to Newton headers]), 70 | [CXXFLAGS+=" -I$withval"; CPPFLAGS+=" -I$withval" ] 71 | ) 72 | AC_CHECK_HEADERS([Newton.h], [], AC_MSG_ERROR([Missing Newton.h. Try option. --with-newton-include]) ) 73 | 74 | AC_ARG_WITH([dmath-include],AS_HELP_STRING([--with-dmath-include path to dMath headers]), 75 | [CXXFLAGS+=" -I$withval"; CPPFLAGS+=" -I$withval" ] 76 | ) 77 | AC_CHECK_HEADERS([dMathDefines.h], [], AC_MSG_ERROR([Missing dMath headers. Try option --with-dmath-include]) ) 78 | AC_CHECK_HEADERS([dVector.h], [], AC_MSG_ERROR([Missing dMath headers. Try option --with-dmath-include]) ) 79 | AC_CHECK_HEADERS([dMatrix.h], [], AC_MSG_ERROR([Missing dMath headers. Try option --with-dmath-include]) ) 80 | AC_CHECK_HEADERS([dQuaternion.h], [], AC_MSG_ERROR([Missing dMath headers. Try option --with-dmath-include]) ) 81 | 82 | AC_CHECK_HEADERS([racingGame.h], [], AC_MSG_ERROR([Missing racingGame.h. Try to add src/ dir to include path]) ) 83 | 84 | # Checks for typedefs, structures, and compiler characteristics. 85 | AC_HEADER_STDBOOL 86 | 87 | AC_OUTPUT(Makefile src/Makefile res/Makefile) 88 | -------------------------------------------------------------------------------- /depcomp: -------------------------------------------------------------------------------- 1 | /usr/share/automake-1.11/depcomp -------------------------------------------------------------------------------- /install-sh: -------------------------------------------------------------------------------- 1 | /usr/share/automake-1.11/install-sh -------------------------------------------------------------------------------- /missing: -------------------------------------------------------------------------------- 1 | /usr/share/automake-1.11/missing -------------------------------------------------------------------------------- /res/Makefile.am: -------------------------------------------------------------------------------- 1 | resdir = $(abs_top_builddir)/@PACKAGE@/res 2 | 3 | res_DATA = \ 4 | carC.mtl \ 5 | carC.obj \ 6 | carC.tga \ 7 | carD.mtl \ 8 | carD.obj \ 9 | carD.tga \ 10 | floor.mtl \ 11 | floor.obj \ 12 | floor.tga \ 13 | lose.jpg \ 14 | skydome.jpg \ 15 | wheel.mtl \ 16 | wheel.obj \ 17 | wheel.tga \ 18 | win.jpg 19 | -------------------------------------------------------------------------------- /res/carC.mtl: -------------------------------------------------------------------------------- 1 | # Blender3D MTL File: 2 | # Material Count: 1 3 | newmtl 01___Car 4 | Ns 10.0000 5 | Ni 1.5000 6 | d 1.0000 7 | Tr 0.0000 8 | Tf 1.0000 1.0000 1.0000 9 | illum 2 10 | Ka 0.5882 0.5882 0.5882 11 | Kd 0.5882 0.5882 0.5882 12 | Ks 0.0000 0.0000 0.0000 13 | Ke 0.0000 0.0000 0.0000 14 | map_Ka carC.tga 15 | map_Kd carC.tga 16 | -------------------------------------------------------------------------------- /res/carC.obj: -------------------------------------------------------------------------------- 1 | # Blender3D v249 OBJ File: 2 | # www.blender3d.org 3 | mtllib carC.mtl 4 | v -0.000000 0.003883 -1.021238 5 | v -0.000000 0.082940 -0.687767 6 | v -0.000000 0.030395 -1.009063 7 | v -0.000000 -0.111915 -1.024649 8 | v -0.000000 -0.113735 -0.993392 9 | v -0.000000 -0.070967 -1.007238 10 | v -0.354345 -0.111867 -1.024608 11 | v -0.355119 -0.079201 -1.028909 12 | v -0.135262 -0.021089 1.034744 13 | v -0.130000 0.060190 0.800733 14 | v -0.146896 0.003911 1.012646 15 | v -0.145395 0.076440 0.622633 16 | v -0.175500 0.063440 0.319733 17 | v -0.361599 -0.079201 -0.978653 18 | v -0.361212 -0.111851 -0.974093 19 | v -0.240895 0.191194 -0.443901 20 | v -0.329936 0.082785 -0.582206 21 | v -0.170665 0.061450 -0.837267 22 | v -0.175419 0.082581 -0.664697 23 | v -0.133380 0.205246 -0.443901 24 | v -0.133380 0.222346 -0.118367 25 | v -0.256756 0.209040 -0.118367 26 | v -0.133380 0.214560 0.122094 27 | v -0.252734 0.205289 0.103985 28 | v -0.000000 0.209394 -0.443901 29 | v -0.000000 0.191720 -0.476849 30 | v -0.134385 0.187816 -0.476017 31 | v -0.285417 0.082940 -0.633849 32 | v -0.288506 -0.177663 0.923598 33 | v -0.000000 0.218591 0.126042 34 | v -0.000000 -0.079201 -1.032670 35 | v 0.354695 -0.111867 -1.024608 36 | v 0.355469 -0.079201 -1.028909 37 | v 0.135262 -0.021089 1.034744 38 | v 0.130000 0.060190 0.800733 39 | v 0.146896 0.003911 1.012646 40 | v 0.145395 0.076440 0.622633 41 | v 0.175500 0.063440 0.319733 42 | v -0.000000 0.063440 0.336805 43 | v 0.288506 -0.177663 0.923598 44 | v 0.361562 -0.111851 -0.974093 45 | v 0.361949 -0.079201 -0.978653 46 | v 0.256756 0.209040 -0.118367 47 | v 0.240895 0.191194 -0.443901 48 | v 0.170665 0.061450 -0.837267 49 | v -0.000000 0.063007 -0.837267 50 | v 0.175419 0.082581 -0.664697 51 | v 0.283332 0.174675 0.120074 52 | v 0.133380 0.205246 -0.443901 53 | v 0.133380 0.222346 -0.118367 54 | v -0.000000 0.228846 -0.118367 55 | v 0.252734 0.205289 0.103985 56 | v 0.133380 0.214560 0.122094 57 | v 0.134385 0.187816 -0.476017 58 | v 0.283266 0.082940 -0.634395 59 | v 0.000046 -0.177412 -0.987378 60 | v -0.430138 0.077700 0.198707 61 | v -0.371893 0.071500 0.235152 62 | v -0.423867 0.074291 0.188690 63 | v -0.366102 0.068169 0.215579 64 | v -0.370177 0.109478 0.229194 65 | v -0.364386 0.106146 0.209622 66 | v -0.426734 0.108276 0.193828 67 | v -0.420464 0.104867 0.183811 68 | v -0.234000 -0.203060 -0.708076 69 | v -0.234000 -0.227251 0.423877 70 | v -0.234000 -0.223037 -0.354141 71 | v -0.358150 0.051156 0.229090 72 | v -0.347845 0.060119 0.239566 73 | v -0.343368 0.057653 0.223130 74 | v -0.378433 0.094283 0.217094 75 | v -0.371734 0.100109 0.223904 76 | v -0.368823 0.098506 0.213220 77 | v -0.330263 0.064276 0.621775 78 | v 0.340735 -0.113655 -0.970417 79 | v 0.234000 -0.223037 -0.354141 80 | v 0.290725 0.180119 -0.118584 81 | v 0.430138 0.077700 0.198707 82 | v 0.371893 0.071500 0.235152 83 | v 0.423867 0.074291 0.188690 84 | v 0.366102 0.068169 0.215579 85 | v 0.364386 0.106146 0.209622 86 | v 0.370177 0.109478 0.229194 87 | v 0.420464 0.104867 0.183811 88 | v 0.426734 0.108276 0.193828 89 | v 0.358150 0.051156 0.229090 90 | v 0.347845 0.060119 0.239566 91 | v 0.371734 0.100109 0.223904 92 | v 0.378433 0.094283 0.217094 93 | v 0.343368 0.057653 0.223130 94 | v 0.368823 0.098506 0.213220 95 | v 0.234000 -0.196461 0.782636 96 | v 0.234000 -0.227251 0.423877 97 | v 0.128604 -0.179008 0.939441 98 | v -0.128604 -0.179008 0.939441 99 | v -0.345320 -0.223037 -0.354141 100 | v -0.000000 -0.202532 0.971766 101 | v -0.289387 -0.205706 0.951444 102 | v -0.128604 -0.179008 0.939441 103 | v -0.288506 -0.177663 0.923598 104 | v -0.316249 -0.184943 0.888942 105 | v 0.128604 -0.179008 0.939441 106 | v 0.288506 -0.177663 0.923598 107 | v 0.289387 -0.205706 0.951444 108 | v 0.316249 -0.184943 0.888942 109 | v 0.065590 -0.127711 1.035884 110 | v 0.065590 -0.178924 1.022314 111 | v -0.068603 -0.178924 1.022430 112 | v -0.068583 -0.127711 1.035944 113 | v -0.290725 0.180119 -0.118584 114 | v -0.283332 0.174675 0.120074 115 | v -0.266973 0.179874 0.144503 116 | v -0.137453 0.192613 0.160027 117 | v -0.000000 0.197274 0.164072 118 | v 0.137225 0.193385 0.159073 119 | v 0.264911 0.181896 0.142185 120 | v 0.310552 0.071763 0.275981 121 | v -0.312623 0.069138 0.278929 122 | v -0.320442 -0.070967 -0.999768 123 | v -0.343625 -0.070967 -0.978653 124 | v -0.316073 -0.020871 1.031630 125 | v -0.330332 0.003946 1.009663 126 | v -0.316249 -0.184943 0.888942 127 | v -0.314844 -0.177416 -0.970313 128 | v 0.316452 0.059600 -0.837267 129 | v 0.309399 0.030395 -1.009063 130 | v 0.314844 -0.177416 -0.970313 131 | v 0.265039 0.177870 -0.469346 132 | v 0.335400 -0.203060 -0.708076 133 | v 0.333061 0.067138 0.246223 134 | v 0.330332 0.003946 1.009663 135 | v 0.316073 -0.020871 1.031630 136 | v 0.216124 0.180354 -0.474136 137 | v 0.246452 0.167499 -0.491172 138 | v -0.219863 0.179016 -0.475679 139 | v -0.250013 0.163037 -0.498421 140 | v -0.122503 -0.047942 -1.037574 141 | v -0.122503 -0.146550 -1.037574 142 | v -0.095107 -0.146550 -1.037574 143 | v -0.094859 -0.047942 -1.037574 144 | v -0.122503 -0.047942 -1.021626 145 | v -0.122503 -0.146550 -1.005650 146 | v -0.095107 -0.146550 -1.005650 147 | v -0.094859 -0.047942 -1.021626 148 | v 0.122503 -0.047942 -1.037574 149 | v 0.122503 -0.146550 -1.037574 150 | v 0.095107 -0.146550 -1.037574 151 | v 0.094859 -0.047942 -1.037574 152 | v 0.122503 -0.047942 -1.021626 153 | v 0.122503 -0.146550 -1.005650 154 | v 0.095107 -0.146550 -1.005650 155 | v 0.094859 -0.047942 -1.021626 156 | v 0.130812 0.048055 -0.185079 157 | v 0.060479 0.019607 -0.151362 158 | v 0.250741 0.019607 -0.151362 159 | v 0.180409 0.048055 -0.185079 160 | v 0.087317 -0.071581 -0.121507 161 | v 0.223903 -0.071581 -0.121507 162 | v 0.060479 0.042888 -0.268075 163 | v 0.126716 0.072144 -0.229973 164 | v 0.184505 0.072144 -0.229973 165 | v 0.250741 0.042888 -0.268076 166 | v 0.223903 -0.061321 -0.230145 167 | v 0.087317 -0.061321 -0.230145 168 | v 0.131653 0.155829 -0.194982 169 | v 0.130691 0.130621 -0.166784 170 | v 0.180530 0.130621 -0.166784 171 | v 0.179568 0.155829 -0.194982 172 | v 0.133899 0.065967 -0.166415 173 | v 0.177322 0.065967 -0.166415 174 | v 0.130812 0.067021 -0.180864 175 | v 0.180409 0.067021 -0.180864 176 | v 0.122626 0.128749 -0.242001 177 | v 0.188594 0.128749 -0.242001 178 | v -0.000000 0.063440 0.336805 179 | v 0.175500 0.063440 0.319733 180 | v 0.310552 0.071763 0.275981 181 | v 0.333061 0.067138 0.246223 182 | v -0.000000 -0.041937 -0.226652 183 | v -0.000000 0.058933 -0.262958 184 | v 0.320254 0.058933 -0.262958 185 | v 0.175419 0.082581 -0.664697 186 | v 0.283266 0.082940 -0.634395 187 | v -0.175500 0.063440 0.319733 188 | v -0.312623 0.069138 0.278929 189 | v -0.320254 0.058933 -0.262958 190 | v -0.175419 0.082581 -0.664697 191 | v -0.283266 0.082940 -0.634395 192 | v -0.000000 0.082940 -0.687767 193 | v -0.351385 0.079474 -0.119017 194 | v -0.332212 0.079474 -0.119017 195 | v -0.340039 0.080749 -0.360490 196 | v -0.320254 0.069103 0.099666 197 | v -0.333061 0.067138 0.246223 198 | v -0.302771 -0.060205 0.016181 199 | v -0.320254 -0.041937 -0.226652 200 | v -0.283266 0.082940 -0.634395 201 | v 0.320254 0.069103 0.099666 202 | v 0.332212 0.079474 -0.119017 203 | v 0.351385 0.079474 -0.119017 204 | v 0.302771 -0.060205 0.016181 205 | v 0.320254 -0.041937 -0.226652 206 | v 0.283266 0.082940 -0.634395 207 | v 0.340039 0.080749 -0.360490 208 | v 0.135289 -0.129848 1.028942 209 | v -0.135289 -0.129848 1.028942 210 | v 0.136187 -0.127985 1.053804 211 | v 0.136250 -0.103180 1.059095 212 | v 0.316841 -0.127973 1.053687 213 | v 0.317678 -0.103180 1.058198 214 | v -0.136303 -0.127985 1.053804 215 | v -0.136241 -0.103180 1.059092 216 | v -0.316832 -0.127973 1.053687 217 | v -0.317543 -0.103180 1.058198 218 | v 0.135289 -0.129848 1.028942 219 | v 0.135279 -0.095039 1.031141 220 | v 0.318442 -0.129882 1.023677 221 | v 0.317543 -0.094947 1.026694 222 | v -0.135289 -0.129848 1.028942 223 | v -0.135279 -0.095039 1.031141 224 | v -0.317543 -0.094947 1.026694 225 | v -0.318442 -0.129882 1.023677 226 | v 0.320254 0.058933 -0.262958 227 | v 0.283266 0.082940 -0.634395 228 | v -0.000000 -0.060205 0.016181 229 | v -0.320254 0.058933 -0.262958 230 | v -0.283266 0.082940 -0.634395 231 | v -0.302771 -0.060205 0.016181 232 | v -0.320254 -0.041937 -0.226652 233 | v 0.302771 -0.060205 0.016181 234 | v 0.320254 -0.041937 -0.226652 235 | v -0.343499 0.034340 -0.837267 236 | v -0.336212 0.000889 -1.003897 237 | v -0.390000 -0.064499 0.741260 238 | v -0.342177 -0.127882 1.003638 239 | v -0.237900 -0.073060 0.520382 240 | v -0.237900 -0.064499 0.741260 241 | v -0.237900 -0.082925 -0.424758 242 | v -0.237900 -0.079133 -0.640033 243 | v -0.390000 -0.065873 -0.518767 244 | v -0.390000 -0.082925 -0.424758 245 | v -0.390000 -0.079133 -0.640033 246 | v -0.390000 -0.046085 0.625802 247 | v -0.390000 -0.073060 0.516918 248 | v -0.351385 0.079474 -0.119017 249 | v -0.360902 0.054567 0.281434 250 | v -0.383360 0.062909 -0.119017 251 | v -0.360559 0.049042 0.623020 252 | v -0.368748 0.063468 -0.421062 253 | v -0.339967 -0.013112 1.012380 254 | v -0.360908 0.062272 -0.616781 255 | v -0.340039 0.080749 -0.360490 256 | v -0.311347 0.130639 -0.293761 257 | v -0.378658 -0.139486 -0.684986 258 | v -0.382613 -0.154310 -0.378496 259 | v -0.390998 -0.147810 0.461904 260 | v -0.381012 -0.130480 0.781288 261 | v -0.340735 -0.113655 -0.970417 262 | v -0.335400 -0.196461 0.782636 263 | v -0.316845 -0.113705 -0.989829 264 | v -0.309399 0.030395 -1.009063 265 | v -0.265039 0.177870 -0.469346 266 | v -0.335400 -0.203060 -0.708076 267 | v -0.363495 -0.227251 0.423877 268 | v -0.290133 0.171221 -0.212964 269 | v -0.333061 0.067138 0.246223 270 | v -0.316452 0.059600 -0.837267 271 | v -0.315561 0.003841 -1.023494 272 | v -0.234000 -0.196461 0.782636 273 | v -0.318442 -0.129882 1.023677 274 | v 0.343499 0.034340 -0.837267 275 | v 0.336212 0.000889 -1.003897 276 | v 0.343625 -0.070967 -0.978653 277 | v 0.335400 -0.196461 0.782636 278 | v 0.342177 -0.127882 1.003638 279 | v 0.381012 -0.130480 0.781288 280 | v 0.340039 0.080749 -0.360490 281 | v 0.311347 0.130639 -0.293761 282 | v 0.329936 0.082785 -0.582206 283 | v 0.237900 -0.073060 0.520382 284 | v 0.237900 -0.064499 0.741260 285 | v 0.237900 -0.082925 -0.424758 286 | v 0.234000 -0.203060 -0.708076 287 | v 0.237900 -0.079133 -0.640033 288 | v 0.390000 -0.082925 -0.424758 289 | v 0.390000 -0.065873 -0.518767 290 | v 0.390000 -0.079133 -0.640033 291 | v 0.390000 -0.064499 0.741260 292 | v 0.390000 -0.046085 0.625802 293 | v 0.390000 -0.073060 0.516918 294 | v 0.378658 -0.139486 -0.684986 295 | v 0.382613 -0.154310 -0.378496 296 | v 0.390998 -0.147810 0.461904 297 | v 0.351385 0.079474 -0.119017 298 | v 0.383360 0.062909 -0.119017 299 | v 0.360902 0.054567 0.281434 300 | v 0.360559 0.049042 0.623020 301 | v 0.339967 -0.013112 1.012380 302 | v 0.345320 -0.223037 -0.354141 303 | v 0.360908 0.062272 -0.616781 304 | v 0.368748 0.063468 -0.421062 305 | v 0.330263 0.064276 0.621775 306 | v 0.316845 -0.113705 -0.989829 307 | v 0.315561 0.003841 -1.023494 308 | v 0.320442 -0.070967 -0.999768 309 | v 0.316249 -0.184943 0.888942 310 | v 0.318442 -0.129882 1.023677 311 | v 0.290133 0.171221 -0.212964 312 | v 0.363495 -0.227251 0.423877 313 | v 0.148458 -0.060500 1.071614 314 | v 0.120813 -0.060500 1.071614 315 | v 0.121062 -0.159109 1.071614 316 | v 0.148458 -0.159109 1.071614 317 | v 0.148458 -0.159109 1.039690 318 | v 0.148458 -0.060500 1.055666 319 | v 0.121062 -0.159109 1.039690 320 | v 0.120813 -0.060500 1.055666 321 | v -0.148760 -0.060500 1.071614 322 | v -0.148760 -0.159109 1.071614 323 | v -0.121364 -0.159109 1.071614 324 | v -0.121115 -0.060500 1.071614 325 | v -0.148760 -0.060500 1.055666 326 | v -0.148760 -0.159109 1.039690 327 | v -0.121364 -0.159109 1.039690 328 | v -0.121115 -0.060500 1.055666 329 | v -0.320254 -0.041937 -0.226652 330 | v 0.320254 -0.041937 -0.226652 331 | v -0.000000 0.003883 -1.021238 332 | v -0.315561 0.003841 -1.023494 333 | v -0.000000 0.003883 -1.021238 334 | v -0.316073 -0.020871 1.031630 335 | v -0.135262 -0.021089 1.034744 336 | v -0.135262 -0.021089 1.034744 337 | v -0.361599 -0.079201 -0.978653 338 | v -0.343625 -0.070967 -0.978653 339 | v -0.340735 -0.113655 -0.970417 340 | v -0.340735 -0.113655 -0.970417 341 | v -0.361212 -0.111851 -0.974093 342 | v -0.000000 0.003883 -1.021238 343 | v -0.000000 0.003883 -1.021238 344 | v 0.315561 0.003841 -1.023494 345 | v 0.135262 -0.021089 1.034744 346 | v 0.135262 -0.021089 1.034744 347 | v 0.316073 -0.020871 1.031630 348 | v 0.361949 -0.079201 -0.978653 349 | v 0.343625 -0.070967 -0.978653 350 | v 0.340735 -0.113655 -0.970417 351 | v 0.340735 -0.113655 -0.970417 352 | v 0.361562 -0.111851 -0.974093 353 | v -0.135262 -0.021089 1.034744 354 | v -0.135262 -0.021089 1.034744 355 | v 0.135262 -0.021089 1.034744 356 | v -0.423867 0.074291 0.188690 357 | v -0.366102 0.068169 0.215579 358 | v -0.366102 0.068169 0.215579 359 | v -0.366102 0.068169 0.215579 360 | v -0.364386 0.106146 0.209622 361 | v -0.364386 0.106146 0.209622 362 | v -0.364386 0.106146 0.209622 363 | v -0.420464 0.104867 0.183811 364 | v -0.420464 0.104867 0.183811 365 | v -0.420464 0.104867 0.183811 366 | v -0.423867 0.074291 0.188690 367 | v -0.420464 0.104867 0.183811 368 | v -0.347845 0.060119 0.239566 369 | v -0.371734 0.100109 0.223904 370 | v -0.347845 0.060119 0.239566 371 | v 0.366102 0.068169 0.215579 372 | v 0.366102 0.068169 0.215579 373 | v 0.423867 0.074291 0.188690 374 | v 0.364386 0.106146 0.209622 375 | v 0.364386 0.106146 0.209622 376 | v 0.366102 0.068169 0.215579 377 | v 0.420464 0.104867 0.183811 378 | v 0.420464 0.104867 0.183811 379 | v 0.364386 0.106146 0.209622 380 | v 0.423867 0.074291 0.188690 381 | v 0.420464 0.104867 0.183811 382 | v 0.420464 0.104867 0.183811 383 | v 0.347845 0.060119 0.239566 384 | v 0.371734 0.100109 0.223904 385 | v 0.347845 0.060119 0.239566 386 | v 0.000046 -0.177412 -0.987378 387 | v -0.314844 -0.177416 -0.970313 388 | v 0.000046 -0.177412 -0.987378 389 | v 0.000046 -0.177412 -0.987378 390 | v 0.314844 -0.177416 -0.970313 391 | v 0.314844 -0.177416 -0.970313 392 | v -0.314844 -0.177416 -0.970313 393 | v -0.128604 -0.179008 0.939441 394 | v 0.128604 -0.179008 0.939441 395 | v -0.128604 -0.179008 0.939441 396 | v 0.316249 -0.184943 0.888942 397 | v 0.288506 -0.177663 0.923598 398 | v 0.288506 -0.177663 0.923598 399 | v 0.128604 -0.179008 0.939441 400 | v 0.316249 -0.184943 0.888942 401 | v -0.316249 -0.184943 0.888942 402 | v -0.128604 -0.179008 0.939441 403 | v -0.128604 -0.179008 0.939441 404 | v -0.288506 -0.177663 0.923598 405 | v -0.316249 -0.184943 0.888942 406 | v -0.316249 -0.184943 0.888942 407 | v -0.122503 -0.146550 -1.005650 408 | v -0.122503 -0.146550 -1.005650 409 | v -0.095107 -0.146550 -1.005650 410 | v -0.095107 -0.146550 -1.005650 411 | v -0.122503 -0.047942 -1.021626 412 | v -0.094859 -0.047942 -1.021626 413 | v -0.094859 -0.047942 -1.021626 414 | v 0.122503 -0.146550 -1.005650 415 | v 0.122503 -0.146550 -1.005650 416 | v 0.095107 -0.146550 -1.005650 417 | v 0.095107 -0.146550 -1.005650 418 | v 0.094859 -0.047942 -1.021626 419 | v 0.094859 -0.047942 -1.021626 420 | v 0.122503 -0.047942 -1.021626 421 | v 0.223903 -0.071581 -0.121507 422 | v 0.087317 -0.071581 -0.121507 423 | v 0.180409 0.048055 -0.185079 424 | v 0.130812 0.048055 -0.185079 425 | v 0.180409 0.048055 -0.185079 426 | v 0.184505 0.072144 -0.229973 427 | v 0.126716 0.072144 -0.229973 428 | v 0.126716 0.072144 -0.229973 429 | v 0.180409 0.067021 -0.180864 430 | v 0.188594 0.128749 -0.242001 431 | v 0.188594 0.128749 -0.242001 432 | v 0.180409 0.067021 -0.180864 433 | v 0.180409 0.048055 -0.185079 434 | v 0.184505 0.072144 -0.229973 435 | v 0.188594 0.128749 -0.242001 436 | v 0.179568 0.155829 -0.194982 437 | v 0.180409 0.067021 -0.180864 438 | v 0.184505 0.072144 -0.229973 439 | v 0.188594 0.128749 -0.242001 440 | v 0.122626 0.128749 -0.242001 441 | v 0.122626 0.128749 -0.242001 442 | v 0.130812 0.067021 -0.180864 443 | v 0.130812 0.067021 -0.180864 444 | v 0.126716 0.072144 -0.229973 445 | v 0.130812 0.048055 -0.185079 446 | v 0.122626 0.128749 -0.242001 447 | v 0.131653 0.155829 -0.194982 448 | v 0.130812 0.067021 -0.180864 449 | v 0.122626 0.128749 -0.242001 450 | v 0.126716 0.072144 -0.229973 451 | v -0.333061 0.067138 0.246223 452 | v -0.320254 0.069103 0.099666 453 | v -0.333061 0.067138 0.246223 454 | v -0.320254 0.069103 0.099666 455 | v -0.302771 -0.060205 0.016181 456 | v -0.320254 0.069103 0.099666 457 | v 0.333061 0.067138 0.246223 458 | v 0.320254 0.069103 0.099666 459 | v 0.333061 0.067138 0.246223 460 | v 0.320254 0.069103 0.099666 461 | v 0.302771 -0.060205 0.016181 462 | v 0.320254 0.069103 0.099666 463 | v 0.318442 -0.129882 1.023677 464 | v 0.318442 -0.129882 1.023677 465 | v 0.317543 -0.094947 1.026694 466 | v -0.317543 -0.094947 1.026694 467 | v -0.318442 -0.129882 1.023677 468 | v -0.318442 -0.129882 1.023677 469 | v -0.316452 0.059600 -0.837267 470 | v -0.309399 0.030395 -1.009063 471 | v -0.309399 0.030395 -1.009063 472 | v -0.335400 -0.196461 0.782636 473 | v -0.329936 0.082785 -0.582206 474 | v -0.234000 -0.196461 0.782636 475 | v -0.234000 -0.227251 0.423877 476 | v -0.234000 -0.196461 0.782636 477 | v -0.234000 -0.223037 -0.354141 478 | v -0.234000 -0.203060 -0.708076 479 | v -0.234000 -0.223037 -0.354141 480 | v -0.335400 -0.203060 -0.708076 481 | v -0.340735 -0.113655 -0.970417 482 | v -0.340735 -0.113655 -0.970417 483 | v -0.314844 -0.177416 -0.970313 484 | v -0.335400 -0.203060 -0.708076 485 | v -0.390000 -0.073060 0.516918 486 | v -0.333061 0.067138 0.246223 487 | v -0.333061 0.067138 0.246223 488 | v -0.381012 -0.130480 0.781288 489 | v -0.390000 -0.073060 0.516918 490 | v -0.390000 -0.046085 0.625802 491 | v -0.390000 -0.046085 0.625802 492 | v -0.390000 -0.064499 0.741260 493 | v -0.390000 -0.064499 0.741260 494 | v -0.390000 -0.064499 0.741260 495 | v -0.390998 -0.147810 0.461904 496 | v -0.382613 -0.154310 -0.378496 497 | v -0.390000 -0.082925 -0.424758 498 | v -0.378658 -0.139486 -0.684986 499 | v -0.329936 0.082785 -0.582206 500 | v -0.329936 0.082785 -0.582206 501 | v -0.330263 0.064276 0.621775 502 | v -0.330332 0.003946 1.009663 503 | v -0.330263 0.064276 0.621775 504 | v -0.390000 -0.073060 0.516918 505 | v -0.390000 -0.065873 -0.518767 506 | v -0.390000 -0.065873 -0.518767 507 | v -0.390000 -0.079133 -0.640033 508 | v -0.390000 -0.065873 -0.518767 509 | v -0.390000 -0.079133 -0.640033 510 | v -0.316452 0.059600 -0.837267 511 | v -0.329936 0.082785 -0.582206 512 | v -0.316452 0.059600 -0.837267 513 | v -0.314844 -0.177416 -0.970313 514 | v -0.340735 -0.113655 -0.970417 515 | v -0.316845 -0.113705 -0.989829 516 | v -0.315561 0.003841 -1.023494 517 | v -0.320442 -0.070967 -0.999768 518 | v -0.343625 -0.070967 -0.978653 519 | v -0.343625 -0.070967 -0.978653 520 | v -0.315561 0.003841 -1.023494 521 | v -0.309399 0.030395 -1.009063 522 | v -0.315561 0.003841 -1.023494 523 | v -0.316249 -0.184943 0.888942 524 | v -0.318442 -0.129882 1.023677 525 | v -0.335400 -0.196461 0.782636 526 | v -0.316249 -0.184943 0.888942 527 | v -0.316073 -0.020871 1.031630 528 | v -0.330332 0.003946 1.009663 529 | v -0.318442 -0.129882 1.023677 530 | v -0.316073 -0.020871 1.031630 531 | v -0.318442 -0.129882 1.023677 532 | v -0.330263 0.064276 0.621775 533 | v -0.330263 0.064276 0.621775 534 | v -0.333061 0.067138 0.246223 535 | v -0.390000 -0.073060 0.516918 536 | v -0.390000 -0.073060 0.516918 537 | v -0.390998 -0.147810 0.461904 538 | v -0.363495 -0.227251 0.423877 539 | v -0.234000 -0.227251 0.423877 540 | v -0.390998 -0.147810 0.461904 541 | v -0.234000 -0.227251 0.423877 542 | v -0.390000 -0.064499 0.741260 543 | v -0.345320 -0.223037 -0.354141 544 | v -0.363495 -0.227251 0.423877 545 | v -0.363495 -0.227251 0.423877 546 | v 0.309399 0.030395 -1.009063 547 | v 0.309399 0.030395 -1.009063 548 | v 0.316452 0.059600 -0.837267 549 | v 0.335400 -0.196461 0.782636 550 | v 0.329936 0.082785 -0.582206 551 | v 0.265039 0.177870 -0.469346 552 | v 0.265039 0.177870 -0.469346 553 | v 0.234000 -0.227251 0.423877 554 | v 0.234000 -0.196461 0.782636 555 | v 0.234000 -0.227251 0.423877 556 | v 0.234000 -0.203060 -0.708076 557 | v 0.234000 -0.223037 -0.354141 558 | v 0.234000 -0.203060 -0.708076 559 | v 0.335400 -0.203060 -0.708076 560 | v 0.314844 -0.177416 -0.970313 561 | v 0.340735 -0.113655 -0.970417 562 | v 0.340735 -0.113655 -0.970417 563 | v 0.335400 -0.203060 -0.708076 564 | v 0.333061 0.067138 0.246223 565 | v 0.333061 0.067138 0.246223 566 | v 0.381012 -0.130480 0.781288 567 | v 0.234000 -0.196461 0.782636 568 | v 0.390000 -0.046085 0.625802 569 | v 0.390000 -0.046085 0.625802 570 | v 0.390000 -0.073060 0.516918 571 | v 0.390998 -0.147810 0.461904 572 | v 0.382613 -0.154310 -0.378496 573 | v 0.234000 -0.223037 -0.354141 574 | v 0.378658 -0.139486 -0.684986 575 | v 0.329936 0.082785 -0.582206 576 | v 0.329936 0.082785 -0.582206 577 | v 0.330263 0.064276 0.621775 578 | v 0.330332 0.003946 1.009663 579 | v 0.330263 0.064276 0.621775 580 | v 0.390000 -0.065873 -0.518767 581 | v 0.390000 -0.065873 -0.518767 582 | v 0.390000 -0.065873 -0.518767 583 | v 0.390000 -0.079133 -0.640033 584 | v 0.390000 -0.079133 -0.640033 585 | v 0.316452 0.059600 -0.837267 586 | v 0.329936 0.082785 -0.582206 587 | v 0.316452 0.059600 -0.837267 588 | v 0.314844 -0.177416 -0.970313 589 | v 0.316845 -0.113705 -0.989829 590 | v 0.340735 -0.113655 -0.970417 591 | v 0.315561 0.003841 -1.023494 592 | v 0.343625 -0.070967 -0.978653 593 | v 0.343625 -0.070967 -0.978653 594 | v 0.320442 -0.070967 -0.999768 595 | v 0.315561 0.003841 -1.023494 596 | v 0.309399 0.030395 -1.009063 597 | v 0.315561 0.003841 -1.023494 598 | v 0.316249 -0.184943 0.888942 599 | v 0.335400 -0.196461 0.782636 600 | v 0.318442 -0.129882 1.023677 601 | v 0.316249 -0.184943 0.888942 602 | v 0.330332 0.003946 1.009663 603 | v 0.316073 -0.020871 1.031630 604 | v 0.318442 -0.129882 1.023677 605 | v 0.316073 -0.020871 1.031630 606 | v 0.318442 -0.129882 1.023677 607 | v 0.333061 0.067138 0.246223 608 | v 0.330263 0.064276 0.621775 609 | v 0.330263 0.064276 0.621775 610 | v 0.265039 0.177870 -0.469346 611 | v 0.290133 0.171221 -0.212964 612 | v 0.390998 -0.147810 0.461904 613 | v 0.234000 -0.227251 0.423877 614 | v 0.363495 -0.227251 0.423877 615 | v 0.390998 -0.147810 0.461904 616 | v 0.234000 -0.227251 0.423877 617 | v 0.363495 -0.227251 0.423877 618 | v 0.363495 -0.227251 0.423877 619 | v 0.345320 -0.223037 -0.354141 620 | v 0.148458 -0.159109 1.039690 621 | v 0.148458 -0.159109 1.039690 622 | v 0.121062 -0.159109 1.039690 623 | v 0.121062 -0.159109 1.039690 624 | v 0.148458 -0.060500 1.055666 625 | v 0.120813 -0.060500 1.055666 626 | v 0.120813 -0.060500 1.055666 627 | v -0.148760 -0.159109 1.039690 628 | v -0.148760 -0.159109 1.039690 629 | v -0.121364 -0.159109 1.039690 630 | v -0.121364 -0.159109 1.039690 631 | v -0.121115 -0.060500 1.055666 632 | v -0.121115 -0.060500 1.055666 633 | v -0.148760 -0.060500 1.055666 634 | v -0.390000 -0.082925 -0.424758 635 | v -0.378658 -0.139486 -0.684986 636 | v -0.335400 -0.203060 -0.708076 637 | v -0.234000 -0.203060 -0.708076 638 | v -0.378658 -0.139486 -0.684986 639 | v -0.234000 -0.203060 -0.708076 640 | v -0.234000 -0.223037 -0.354141 641 | v -0.382613 -0.154310 -0.378496 642 | v -0.234000 -0.223037 -0.354141 643 | v -0.345320 -0.223037 -0.354141 644 | v -0.382613 -0.154310 -0.378496 645 | v -0.234000 -0.196461 0.782636 646 | v -0.381012 -0.130480 0.781288 647 | v -0.234000 -0.196461 0.782636 648 | v -0.335400 -0.196461 0.782636 649 | v -0.381012 -0.130480 0.781288 650 | v 0.390000 -0.073060 0.516918 651 | v 0.390000 -0.064499 0.741260 652 | v 0.390000 -0.064499 0.741260 653 | v 0.381012 -0.130480 0.781288 654 | v 0.381012 -0.130480 0.781288 655 | v 0.335400 -0.196461 0.782636 656 | v 0.234000 -0.196461 0.782636 657 | v 0.390000 -0.082925 -0.424758 658 | v 0.234000 -0.203060 -0.708076 659 | v 0.335400 -0.203060 -0.708076 660 | v 0.378658 -0.139486 -0.684986 661 | v 0.234000 -0.203060 -0.708076 662 | v 0.378658 -0.139486 -0.684986 663 | v 0.390000 -0.082925 -0.424758 664 | v 0.382613 -0.154310 -0.378496 665 | v 0.382613 -0.154310 -0.378496 666 | v 0.345320 -0.223037 -0.354141 667 | v 0.234000 -0.223037 -0.354141 668 | v 0.340735 -0.113655 -0.970417 669 | v 0.343625 -0.070967 -0.978653 670 | v 0.390000 -0.079133 -0.640033 671 | v 0.390000 -0.079133 -0.640033 672 | v 0.340735 -0.113655 -0.970417 673 | v -0.390000 -0.079133 -0.640033 674 | v -0.343625 -0.070967 -0.978653 675 | v -0.343625 -0.070967 -0.978653 676 | v -0.340735 -0.113655 -0.970417 677 | v -0.343625 -0.070967 -0.978653 678 | v -0.343625 -0.070967 -0.978653 679 | v -0.390000 -0.079133 -0.640033 680 | v 0.343625 -0.070967 -0.978653 681 | v 0.390000 -0.079133 -0.640033 682 | v 0.343625 -0.070967 -0.978653 683 | vt 0.656250 0.074219 684 | vt 0.656250 0.050781 685 | vt 0.886719 0.050781 686 | vt 0.925781 0.074219 687 | vt 0.656250 0.125000 688 | vt 0.656250 0.101562 689 | vt 0.925781 0.101562 690 | vt 0.886719 0.125000 691 | vt 0.023438 0.835938 692 | vt 0.007812 0.835938 693 | vt 0.023438 0.691406 694 | vt 0.007812 0.691406 695 | vt 0.656250 0.179688 696 | vt 0.886719 0.179688 697 | vt 0.492188 0.457031 698 | vt 0.492188 0.371094 699 | vt 0.632812 0.371094 700 | vt 0.632812 0.457031 701 | vt 0.984375 0.679688 702 | vt 0.882812 0.773438 703 | vt 0.800781 0.679688 704 | vt 0.800781 0.765625 705 | vt 0.511719 0.296875 706 | vt 0.632812 0.304688 707 | vt 0.972656 0.074219 708 | vt 0.972656 0.101562 709 | vt 0.101562 0.753906 710 | vt 0.101562 0.835938 711 | vt 0.839844 0.304688 712 | vt 0.839844 0.371094 713 | vt 0.171875 0.835938 714 | vt 0.179688 0.753906 715 | vt 0.554688 0.773438 716 | vt 0.570312 0.769531 717 | vt 0.570312 0.835938 718 | vt 0.554688 0.835938 719 | vt 0.550781 0.718750 720 | vt 0.566406 0.710938 721 | vt 0.441406 0.718750 722 | vt 0.441406 0.773438 723 | vt 0.292969 0.773438 724 | vt 0.292969 0.718750 725 | vt 0.441406 0.835938 726 | vt 0.292969 0.835938 727 | vt 0.277344 0.835938 728 | vt 0.277344 0.773438 729 | vt 0.265625 0.714844 730 | vt 0.281250 0.707031 731 | vt 0.277344 0.730469 732 | vt 0.562500 0.699219 733 | vt 1.000000 0.687500 734 | vt 1.000000 0.773438 735 | vt 0.984375 0.765625 736 | vt 0.195312 0.703125 737 | vt 0.214844 0.679688 738 | vt 0.101562 0.687500 739 | vt 0.656250 0.003906 740 | vt 0.886719 0.003906 741 | vt 0.929688 0.152344 742 | vt 0.910156 0.140625 743 | vt 0.996094 0.074219 744 | vt 0.996094 0.101562 745 | vt 0.906250 0.039062 746 | vt 0.929688 0.027344 747 | vt 0.488281 0.269531 748 | vt 0.421875 0.050781 749 | vt 0.382812 0.074219 750 | vt 0.382812 0.101562 751 | vt 0.421875 0.125000 752 | vt 0.023438 0.976562 753 | vt 0.007812 0.980469 754 | vt 0.421875 0.179688 755 | vt 0.839844 0.457031 756 | vt 0.980469 0.371094 757 | vt 0.980469 0.457031 758 | vt 0.800781 0.988281 759 | vt 0.800781 0.902344 760 | vt 0.882812 0.894531 761 | vt 0.984375 0.988281 762 | vt 0.667969 0.835938 763 | vt 0.960938 0.296875 764 | vt 0.335938 0.101562 765 | vt 0.335938 0.074219 766 | vt 0.402344 0.968750 767 | vt 0.281250 0.960938 768 | vt 0.292969 0.949219 769 | vt 0.441406 0.949219 770 | vt 0.101562 0.914062 771 | vt 0.179688 0.914062 772 | vt 0.570312 0.898438 773 | vt 0.554688 0.894531 774 | vt 0.546875 0.949219 775 | vt 0.566406 0.957031 776 | vt 0.292969 0.894531 777 | vt 0.441406 0.894531 778 | vt 0.277344 0.894531 779 | vt 0.277344 0.937500 780 | vt 0.445312 0.964844 781 | vt 0.554688 0.964844 782 | vt 0.984375 0.902344 783 | vt 1.000000 0.898438 784 | vt 1.000000 0.980469 785 | vt 0.214844 0.988281 786 | vt 0.195312 0.964844 787 | vt 0.101562 0.980469 788 | vt 0.421875 0.003906 789 | vt 0.398438 0.140625 790 | vt 0.378906 0.152344 791 | vt 0.312500 0.101562 792 | vt 0.312500 0.074219 793 | vt 0.402344 0.039062 794 | vt 0.378906 0.027344 795 | vt 0.984375 0.269531 796 | vt 0.605469 0.222656 797 | vt 0.605469 0.261719 798 | vt 0.531250 0.261719 799 | vt 0.531250 0.226562 800 | vt 0.750000 0.265625 801 | vt 0.660156 0.269531 802 | vt 0.660156 0.214844 803 | vt 0.750000 0.222656 804 | vt 0.519531 0.214844 805 | vt 0.597656 0.199219 806 | vt 0.628906 0.222656 807 | vt 0.628906 0.261719 808 | vt 0.597656 0.285156 809 | vt 0.519531 0.273438 810 | vt 0.972656 0.000000 811 | vt 0.992188 0.000000 812 | vt 0.992188 0.058594 813 | vt 0.972656 0.058594 814 | vt 0.941406 0.000000 815 | vt 0.957031 0.000000 816 | vt 0.957031 0.058594 817 | vt 0.941406 0.058594 818 | vt 0.261719 0.125000 819 | vt 0.261719 0.023438 820 | vt 0.300781 0.078125 821 | vt 0.296875 0.007812 822 | vt 0.296875 0.144531 823 | vt 0.261719 0.148438 824 | vt 0.261719 0.003906 825 | vt 0.011719 0.046875 826 | vt 0.035156 0.023438 827 | vt 0.035156 0.125000 828 | vt 0.011719 0.105469 829 | vt 0.019531 0.144531 830 | vt 0.011719 0.136719 831 | vt 0.035156 0.148438 832 | vt 0.019531 0.007812 833 | vt 0.011719 0.015625 834 | vt 0.035156 0.003906 835 | vt 0.089844 0.023438 836 | vt 0.089844 0.125000 837 | vt 0.207031 0.023438 838 | vt 0.207031 0.125000 839 | vt 0.531250 0.398438 840 | vt 0.531250 0.371094 841 | vt 0.738281 0.371094 842 | vt 0.644531 0.398438 843 | vt 0.511719 0.398438 844 | vt 0.945312 0.398438 845 | vt 0.832031 0.398438 846 | vt 0.945312 0.371094 847 | vt 0.964844 0.398438 848 | vt 0.605469 0.050781 849 | vt 0.605469 0.003906 850 | vt 0.707031 0.003906 851 | vt 0.707031 0.050781 852 | vt 0.445312 0.703125 853 | vt 0.398438 0.695312 854 | vt 0.632812 0.675781 855 | vt 0.644531 0.687500 856 | vt 0.640625 0.980469 857 | vt 0.632812 0.992188 858 | vt 0.269531 0.953125 859 | vt 0.769531 0.511719 860 | vt 0.843750 0.511719 861 | vt 0.843750 0.539062 862 | vt 0.769531 0.539062 863 | vt 0.769531 0.488281 864 | vt 0.843750 0.500000 865 | vt 0.746094 0.539062 866 | vt 0.746094 0.511719 867 | vt 0.843750 0.550781 868 | vt 0.769531 0.562500 869 | vt 0.855469 0.511719 870 | vt 0.855469 0.539062 871 | vt 0.898438 0.238281 872 | vt 0.867188 0.253906 873 | vt 0.843750 0.253906 874 | vt 0.812500 0.238281 875 | vt 0.882812 0.195312 876 | vt 0.828125 0.195312 877 | vt 0.867188 0.277344 878 | vt 0.898438 0.289062 879 | vt 0.812500 0.289062 880 | vt 0.843750 0.277344 881 | vt 0.937500 0.261719 882 | vt 0.933594 0.214844 883 | vt 0.769531 0.257812 884 | vt 0.777344 0.214844 885 | vt 0.234375 0.496094 886 | vt 0.230469 0.468750 887 | vt 0.269531 0.468750 888 | vt 0.265625 0.496094 889 | vt 0.269531 0.421875 890 | vt 0.230469 0.421875 891 | vt 0.269531 0.406250 892 | vt 0.230469 0.406250 893 | vt 0.269531 0.398438 894 | vt 0.230469 0.398438 895 | vt 0.273438 0.535156 896 | vt 0.269531 0.562500 897 | vt 0.230469 0.562500 898 | vt 0.226562 0.535156 899 | vt 0.277344 0.421875 900 | vt 0.304688 0.468750 901 | vt 0.277344 0.402344 902 | vt 0.296875 0.421875 903 | vt 0.296875 0.476562 904 | vt 0.191406 0.468750 905 | vt 0.222656 0.421875 906 | vt 0.199219 0.421875 907 | vt 0.222656 0.402344 908 | vt 0.203125 0.476562 909 | vt 0.410156 0.234375 910 | vt 0.464844 0.257812 911 | vt 0.476562 0.316406 912 | vt 0.476562 0.253906 913 | vt 0.164062 0.160156 914 | vt 0.050781 0.160156 915 | vt 0.050781 0.253906 916 | vt 0.164062 0.253906 917 | vt 0.050781 0.292969 918 | vt 0.164062 0.292969 919 | vt 0.101562 0.449219 920 | vt 0.054688 0.433594 921 | vt 0.015625 0.277344 922 | vt 0.164062 0.457031 923 | vt 0.332031 0.226562 924 | vt 0.191406 0.316406 925 | vt 0.257812 0.234375 926 | vt 0.203125 0.257812 927 | vt 0.191406 0.253906 928 | vt 0.464844 0.382812 929 | vt 0.203125 0.382812 930 | vt 0.468750 0.218750 931 | vt 0.417969 0.207031 932 | vt 0.347656 0.203125 933 | vt 0.347656 0.210938 934 | vt 0.398438 0.160156 935 | vt 0.316406 0.160156 936 | vt 0.175781 0.191406 937 | vt 0.261719 0.207031 938 | vt 0.664062 0.753906 939 | vt 0.664062 0.917969 940 | vt 0.554688 0.074219 941 | vt 0.554688 0.050781 942 | vt 0.753906 0.050781 943 | vt 0.753906 0.074219 944 | vt 0.753906 0.125000 945 | vt 0.753906 0.101562 946 | vt 0.554688 0.125000 947 | vt 0.554688 0.101562 948 | vt 0.089844 0.003906 949 | vt 0.207031 0.003906 950 | vt 0.207031 0.144531 951 | vt 0.089844 0.144531 952 | vt 0.101562 0.613281 953 | vt 0.097656 0.632812 954 | vt 0.019531 0.613281 955 | vt 0.023438 0.597656 956 | vt 0.882812 0.496094 957 | vt 0.984375 0.539062 958 | vt 0.878906 0.535156 959 | vt 0.328125 0.644531 960 | vt 0.359375 0.675781 961 | vt 0.222656 0.648438 962 | vt 0.988281 0.179688 963 | vt 0.984375 0.195312 964 | vt 0.957031 0.195312 965 | vt 0.949219 0.179688 966 | vt 0.988281 0.144531 967 | vt 0.984375 0.156250 968 | vt 0.960938 0.156250 969 | vt 0.953125 0.144531 970 | vt 0.972656 0.171875 971 | vt 0.957031 0.167969 972 | vt 0.968750 0.207031 973 | vt 0.953125 0.203125 974 | vt 0.160156 0.496094 975 | vt 0.175781 0.527344 976 | vt 0.039062 0.542969 977 | vt 0.039062 0.507812 978 | vt 0.296875 0.558594 979 | vt 0.320312 0.519531 980 | vt 0.722656 0.523438 981 | vt 0.750000 0.562500 982 | vt 0.445312 0.628906 983 | vt 0.636719 0.625000 984 | vt 0.625000 0.640625 985 | vt 0.445312 0.644531 986 | vt 0.992188 0.195312 987 | vt 0.988281 0.203125 988 | vt 0.800781 0.574219 989 | vt 0.800781 0.621094 990 | vt 0.855469 0.566406 991 | vt 0.988281 0.589844 992 | vt 0.945312 0.195312 993 | vt 0.996094 0.156250 994 | vt 0.988281 0.167969 995 | vt 0.949219 0.156250 996 | vt 0.207031 0.628906 997 | vt 0.300781 0.628906 998 | vt 0.800781 0.636719 999 | vt 0.988281 0.601562 1000 | vt 0.253906 0.566406 1001 | vt 0.199219 0.558594 1002 | vt 0.023438 0.539062 1003 | vt 0.007812 0.601562 1004 | vt 0.019531 0.562500 1005 | vt 0.035156 0.562500 1006 | vt 0.933594 0.500000 1007 | vt 0.996094 0.535156 1008 | vt 1.000000 0.589844 1009 | vt 0.941406 0.179688 1010 | vt 0.332031 0.484375 1011 | vt 0.707031 0.484375 1012 | vt 0.945312 0.148438 1013 | vt 0.996094 0.144531 1014 | vt 0.996094 0.183594 1015 | usemtl 01___Car 1016 | s off 1017 | f 4/1 5/2 260/3 1018 | f 260/3 7/4 4/1 1019 | f 6/5 31/6 8/7 1020 | f 8/7 119/8 6/5 1021 | f 3/9 1/10 261/11 1022 | f 1/10 268/12 261/11 1023 | f 328/13 6/5 119/8 1024 | f 119/8 329/14 330/13 1025 | f 121/15 270/16 206/17 1026 | f 206/17 9/18 121/15 1027 | f 122/19 10/20 74/21 1028 | f 74/21 10/20 12/22 1029 | f 206/17 270/16 29/23 1030 | f 29/23 95/24 206/17 1031 | f 8/7 7/4 15/25 1032 | f 15/25 14/26 8/7 1033 | f 18/27 46/28 3/9 1034 | f 3/9 261/11 18/27 1035 | f 95/24 94/29 205/30 1036 | f 205/30 206/17 95/24 1037 | f 2/31 46/28 18/27 1038 | f 18/27 19/32 2/31 1039 | f 23/33 113/34 114/35 1040 | f 114/35 30/36 23/33 1041 | f 113/34 23/33 24/37 1042 | f 24/37 112/38 113/34 1043 | f 22/39 21/40 20/41 1044 | f 20/41 16/42 22/39 1045 | f 23/33 21/40 22/39 1046 | f 22/39 24/37 23/33 1047 | f 30/36 51/43 21/40 1048 | f 21/40 23/33 30/36 1049 | f 51/43 25/44 20/41 1050 | f 20/41 21/40 51/43 1051 | f 25/44 26/45 27/46 1052 | f 27/46 20/41 25/44 1053 | f 136/47 262/48 135/49 1054 | f 262/48 16/42 135/49 1055 | f 112/38 24/37 111/50 1056 | f 122/19 331/51 332/52 1057 | f 333/52 11/53 122/19 1058 | f 262/48 28/54 17/55 1059 | f 267/56 17/55 28/54 1060 | f 267/56 28/54 19/32 1061 | f 19/32 18/27 267/56 1062 | f 31/6 4/1 7/4 1063 | f 7/4 8/7 31/6 1064 | f 260/3 5/2 56/57 1065 | f 56/57 124/58 260/3 1066 | f 8/7 334/59 120/60 1067 | f 14/26 15/25 258/61 1068 | f 258/61 335/62 14/26 1069 | f 7/4 260/3 336/63 1070 | f 337/63 338/64 7/4 1071 | f 119/8 8/7 120/60 1072 | f 123/65 29/23 270/16 1073 | f 303/66 5/2 4/1 1074 | f 4/1 32/67 303/66 1075 | f 33/68 31/6 6/5 1076 | f 6/5 305/69 33/68 1077 | f 1/10 3/9 126/70 1078 | f 304/71 1/10 126/70 1079 | f 305/69 6/5 339/13 1080 | f 340/13 341/72 305/69 1081 | f 34/73 9/18 206/17 1082 | f 206/17 205/30 34/73 1083 | f 34/73 205/30 307/74 1084 | f 307/74 132/75 34/73 1085 | f 302/76 37/77 35/78 1086 | f 302/76 35/78 131/79 1087 | f 37/77 39/80 12/22 1088 | f 205/30 94/29 40/81 1089 | f 40/81 307/74 205/30 1090 | f 33/68 42/82 41/83 1091 | f 41/83 32/67 33/68 1092 | f 308/84 128/85 44/86 1093 | f 44/86 43/87 308/84 1094 | f 3/9 46/28 45/88 1095 | f 45/88 126/70 3/9 1096 | f 2/31 47/89 45/88 1097 | f 45/88 46/28 2/31 1098 | f 115/90 53/91 30/36 1099 | f 30/36 114/35 115/90 1100 | f 52/92 53/91 115/90 1101 | f 115/90 116/93 52/92 1102 | f 49/94 50/95 43/87 1103 | f 43/87 44/86 49/94 1104 | f 53/91 52/92 43/87 1105 | f 43/87 50/95 53/91 1106 | f 30/36 53/91 50/95 1107 | f 50/95 51/43 30/36 1108 | f 51/43 50/95 49/94 1109 | f 49/94 25/44 51/43 1110 | f 25/44 49/94 54/96 1111 | f 54/96 26/45 25/44 1112 | f 128/85 133/97 44/86 1113 | f 77/98 43/87 52/92 1114 | f 52/92 48/99 77/98 1115 | f 131/79 36/100 342/101 1116 | f 343/101 344/102 131/79 1117 | f 128/85 279/103 55/104 1118 | f 125/105 55/104 279/103 1119 | f 125/105 45/88 47/89 1120 | f 47/89 55/104 125/105 1121 | f 32/67 4/1 31/6 1122 | f 31/6 33/68 32/67 1123 | f 303/66 127/106 56/57 1124 | f 56/57 5/2 303/66 1125 | f 33/68 273/107 345/108 1126 | f 42/82 346/109 75/110 1127 | f 75/110 41/83 42/82 1128 | f 32/67 347/111 303/66 1129 | f 348/111 32/67 349/112 1130 | f 305/69 273/107 33/68 1131 | f 36/100 11/53 350/52 1132 | f 351/52 352/101 36/100 1133 | f 306/113 307/74 40/81 1134 | f 58/114 61/115 63/116 1135 | f 63/116 57/117 58/114 1136 | f 64/118 62/119 60/120 1137 | f 60/120 59/121 64/118 1138 | f 57/117 353/122 354/123 1139 | f 355/123 58/114 57/117 1140 | f 58/114 356/124 357/125 1141 | f 358/125 61/115 58/114 1142 | f 61/115 359/126 360/127 1143 | f 361/127 63/116 61/115 1144 | f 362/127 363/122 57/117 1145 | f 57/117 63/116 364/127 1146 | f 68/128 69/129 72/130 1147 | f 72/130 71/131 68/128 1148 | f 365/132 70/133 73/134 1149 | f 73/134 366/135 367/132 1150 | f 70/133 68/128 71/131 1151 | f 71/131 73/134 70/133 1152 | f 85/116 83/115 79/114 1153 | f 79/114 78/117 85/116 1154 | f 81/120 82/119 84/118 1155 | f 84/118 80/121 81/120 1156 | f 78/117 79/114 368/123 1157 | f 369/123 370/122 78/117 1158 | f 79/114 83/115 371/125 1159 | f 372/125 373/124 79/114 1160 | f 83/115 85/116 374/127 1161 | f 375/127 376/126 83/115 1162 | f 78/117 377/122 378/127 1163 | f 379/127 85/116 78/117 1164 | f 86/128 89/131 88/130 1165 | f 88/130 87/129 86/128 1166 | f 380/132 381/135 91/134 1167 | f 91/134 90/133 382/132 1168 | f 90/133 91/134 89/131 1169 | f 89/131 86/128 90/133 1170 | f 283/136 65/137 383/138 1171 | f 65/137 384/139 385/138 1172 | f 283/136 386/138 387/140 1173 | f 283/136 388/140 129/141 1174 | f 65/137 263/142 389/139 1175 | f 390/143 269/144 92/145 1176 | f 92/145 391/146 392/143 1177 | f 92/145 393/147 394/148 1178 | f 395/148 396/146 92/145 1179 | f 92/145 274/149 397/147 1180 | f 398/150 269/144 399/143 1181 | f 400/143 401/151 402/150 1182 | f 269/144 403/150 259/152 1183 | f 269/144 66/153 93/154 1184 | f 93/154 92/145 269/144 1185 | f 93/154 66/153 67/155 1186 | f 67/155 76/156 93/154 1187 | f 67/155 65/137 283/136 1188 | f 283/136 76/156 67/155 1189 | f 100/157 98/158 97/159 1190 | f 97/159 99/160 100/157 1191 | f 98/158 100/157 101/161 1192 | f 103/162 102/163 97/159 1193 | f 97/159 104/164 103/162 1194 | f 99/160 97/159 102/163 1195 | f 104/164 105/165 103/162 1196 | f 109/166 108/167 107/168 1197 | f 107/168 106/169 109/166 1198 | f 110/170 22/39 265/171 1199 | f 24/37 22/39 110/170 1200 | f 110/170 111/50 24/37 1201 | f 112/38 111/50 266/172 1202 | f 266/172 118/173 112/38 1203 | f 116/93 117/174 130/175 1204 | f 130/175 48/99 116/93 1205 | f 116/93 48/99 52/92 1206 | f 117/174 302/76 130/175 1207 | f 133/97 128/85 134/176 1208 | f 136/47 28/54 262/48 1209 | f 128/85 55/104 134/176 1210 | f 20/41 27/46 135/49 1211 | f 135/49 16/42 20/41 1212 | f 133/97 54/96 49/94 1213 | f 49/94 44/86 133/97 1214 | f 16/42 262/48 265/171 1215 | f 265/171 22/39 16/42 1216 | f 43/87 77/98 308/84 1217 | f 138/177 137/178 140/179 1218 | f 140/179 139/180 138/177 1219 | f 138/177 142/181 141/182 1220 | f 141/182 137/178 138/177 1221 | f 139/180 143/183 404/184 1222 | f 405/184 138/177 139/180 1223 | f 140/179 144/185 406/186 1224 | f 407/186 139/180 140/179 1225 | f 137/178 408/187 409/188 1226 | f 410/188 140/179 137/178 1227 | f 146/177 147/180 148/179 1228 | f 148/179 145/178 146/177 1229 | f 146/177 145/178 149/182 1230 | f 149/182 150/181 146/177 1231 | f 147/180 146/177 411/184 1232 | f 412/184 151/183 147/180 1233 | f 148/179 147/180 413/186 1234 | f 414/186 152/185 148/179 1235 | f 145/178 148/179 415/188 1236 | f 416/188 417/187 145/178 1237 | f 155/189 156/190 153/191 1238 | f 153/191 154/192 155/189 1239 | f 158/193 155/189 154/192 1240 | f 154/192 157/194 158/193 1241 | f 161/195 162/196 159/197 1242 | f 159/197 160/198 161/195 1243 | f 163/199 162/196 155/189 1244 | f 155/189 418/200 163/199 1245 | f 154/192 159/197 164/201 1246 | f 164/201 419/202 154/192 1247 | f 153/191 160/198 159/197 1248 | f 159/197 154/192 153/191 1249 | f 162/196 161/195 156/190 1250 | f 156/190 155/189 162/196 1251 | f 165/203 166/204 167/205 1252 | f 167/205 168/206 165/203 1253 | f 170/207 167/205 166/204 1254 | f 166/204 169/208 170/207 1255 | f 172/209 170/207 169/208 1256 | f 169/208 171/210 172/209 1257 | f 420/211 172/209 171/210 1258 | f 171/210 421/212 422/211 1259 | f 174/213 423/214 424/215 1260 | f 425/215 173/216 174/213 1261 | f 168/206 174/213 173/216 1262 | f 173/216 165/203 168/206 1263 | f 170/207 426/217 427/218 1264 | f 428/218 167/205 170/207 1265 | f 429/217 430/219 431/220 1266 | f 432/218 433/221 167/205 1267 | f 434/217 435/220 436/218 1268 | f 169/208 166/204 437/222 1269 | f 438/222 439/223 169/208 1270 | f 440/223 441/224 442/225 1271 | f 443/222 166/204 444/226 1272 | f 445/223 446/222 447/224 1273 | f 176/227 177/228 198/229 1274 | f 198/229 177/228 178/230 1275 | f 225/231 230/232 231/233 1276 | f 231/233 179/234 225/231 1277 | f 179/234 231/233 223/235 1278 | f 223/235 180/236 179/234 1279 | f 182/237 223/235 224/238 1280 | f 181/235 202/239 183/238 1281 | f 182/237 189/240 180/236 1282 | f 180/236 223/235 182/237 1283 | f 175/241 193/242 184/243 1284 | f 184/243 193/242 185/244 1285 | f 193/242 194/245 185/244 1286 | f 201/246 195/247 193/242 1287 | f 193/242 198/229 201/246 1288 | f 225/231 179/234 229/233 1289 | f 229/233 228/232 225/231 1290 | f 179/234 180/236 226/235 1291 | f 226/235 229/233 179/234 1292 | f 187/237 227/238 226/235 1293 | f 186/235 188/238 196/239 1294 | f 187/237 226/235 180/236 1295 | f 180/236 189/240 187/237 1296 | f 448/248 449/249 191/250 1297 | f 191/250 190/251 450/248 1298 | f 451/249 452/252 326/253 1299 | f 326/253 191/250 453/249 1300 | f 197/254 192/255 190/251 1301 | f 190/251 191/250 197/254 1302 | f 326/253 197/254 191/250 1303 | f 454/248 200/251 199/250 1304 | f 199/250 455/249 456/248 1305 | f 457/249 199/250 327/253 1306 | f 327/253 458/252 459/249 1307 | f 203/254 199/250 200/251 1308 | f 200/251 204/255 203/254 1309 | f 327/253 199/250 203/254 1310 | f 13/256 118/173 74/21 1311 | f 74/21 12/22 13/256 1312 | f 261/11 267/56 18/27 1313 | f 45/88 125/105 126/70 1314 | f 118/173 266/172 74/21 1315 | f 38/257 37/77 302/76 1316 | f 302/76 117/174 38/257 1317 | f 122/19 11/53 10/20 1318 | f 35/78 36/100 131/79 1319 | f 10/20 11/53 36/100 1320 | f 36/100 35/78 10/20 1321 | f 211/258 219/259 215/260 1322 | f 215/260 207/261 211/258 1323 | f 217/3 209/4 207/261 1324 | f 207/261 215/260 217/3 1325 | f 218/8 216/262 208/263 1326 | f 208/263 210/7 218/8 1327 | f 210/7 209/4 460/25 1328 | f 461/25 462/26 210/7 1329 | f 210/7 208/263 207/261 1330 | f 207/261 209/4 210/7 1331 | f 220/264 212/265 208/263 1332 | f 208/263 216/262 220/264 1333 | f 222/66 219/259 211/258 1334 | f 211/258 213/67 222/66 1335 | f 221/69 214/68 212/265 1336 | f 212/265 220/264 221/69 1337 | f 214/68 463/82 464/83 1338 | f 465/83 213/67 214/68 1339 | f 212/265 211/258 207/261 1340 | f 207/261 208/263 212/265 1341 | f 214/68 213/67 211/258 1342 | f 211/258 212/265 214/68 1343 | f 264/266 96/267 67/155 1344 | f 67/155 66/153 264/266 1345 | f 76/156 299/268 309/269 1346 | f 309/269 93/154 76/156 1347 | f 175/241 198/229 193/242 1348 | f 175/241 176/227 198/229 1349 | f 232/270 466/271 467/272 1350 | f 468/272 233/273 232/270 1351 | f 469/274 235/275 257/276 1352 | f 252/277 253/278 262/48 1353 | f 262/48 470/279 252/277 1354 | f 471/280 237/281 236/282 1355 | f 236/282 472/283 473/280 1356 | f 474/284 238/285 239/286 1357 | f 239/286 475/287 476/284 1358 | f 239/286 240/288 242/289 1359 | f 236/282 243/290 244/291 1360 | f 477/292 254/293 478/294 1361 | f 479/294 480/295 481/292 1362 | f 241/296 255/297 256/298 1363 | f 256/298 482/299 241/296 1364 | f 247/300 246/301 483/302 1365 | f 484/302 245/303 247/300 1366 | f 237/281 485/304 234/305 1367 | f 486/299 487/306 248/307 1368 | f 248/307 488/306 489/308 1369 | f 490/308 235/275 250/309 1370 | f 250/309 248/307 491/308 1371 | f 244/291 492/310 236/282 1372 | f 238/285 493/311 494/312 1373 | f 242/289 495/313 239/286 1374 | f 496/279 251/314 249/315 1375 | f 249/315 252/277 497/279 1376 | f 498/316 248/307 250/309 1377 | f 250/309 499/317 500/316 1378 | f 246/301 501/299 248/307 1379 | f 249/315 502/318 241/296 1380 | f 249/315 251/314 503/318 1381 | f 251/314 504/319 505/318 1382 | f 251/314 232/270 506/319 1383 | f 507/271 232/270 251/314 1384 | f 251/314 508/279 509/271 1385 | f 510/295 511/294 512/320 1386 | f 513/321 514/322 515/323 1387 | f 516/323 233/273 517/321 1388 | f 518/272 519/321 233/273 1389 | f 520/324 521/325 235/275 1390 | f 235/275 522/274 523/324 1391 | f 250/309 524/326 525/317 1392 | f 526/325 527/326 250/309 1393 | f 250/309 235/275 528/325 1394 | f 246/301 248/307 529/316 1395 | f 530/316 531/302 246/301 1396 | f 262/48 253/278 265/171 1397 | f 249/315 247/300 245/303 1398 | f 245/303 252/277 249/315 1399 | f 247/300 241/296 532/299 1400 | f 533/299 246/301 247/300 1401 | f 247/300 249/315 241/296 1402 | f 534/310 535/327 536/283 1403 | f 537/310 538/283 236/282 1404 | f 235/275 539/308 257/276 1405 | f 255/297 540/328 541/329 1406 | f 542/329 256/298 255/297 1407 | f 271/270 272/273 543/272 1408 | f 544/272 545/271 271/270 1409 | f 546/274 276/276 275/275 1410 | f 277/277 547/279 548/48 1411 | f 549/48 278/278 277/277 1412 | f 550/283 280/282 281/281 1413 | f 281/281 551/280 552/283 1414 | f 553/287 284/286 282/285 1415 | f 282/285 554/284 555/287 1416 | f 284/286 286/288 282/285 1417 | f 280/282 289/290 281/281 1418 | f 556/292 557/295 558/294 1419 | f 559/294 291/293 560/292 1420 | f 285/296 290/299 293/298 1421 | f 293/298 292/297 285/296 1422 | f 295/300 294/303 561/302 1423 | f 562/302 296/301 295/300 1424 | f 281/281 563/304 564/280 1425 | f 290/299 297/307 565/306 1426 | f 297/307 288/308 566/306 1427 | f 288/308 297/307 298/309 1428 | f 298/309 275/275 288/308 1429 | f 567/291 280/282 568/310 1430 | f 282/285 569/311 570/284 1431 | f 287/289 284/286 571/313 1432 | f 572/279 277/277 301/315 1433 | f 301/315 300/314 573/279 1434 | f 574/316 575/317 298/309 1435 | f 298/309 297/307 576/316 1436 | f 296/301 297/307 290/299 1437 | f 301/315 285/296 577/318 1438 | f 301/315 578/318 300/314 1439 | f 300/314 579/318 580/319 1440 | f 300/314 581/319 271/270 1441 | f 582/271 583/279 300/314 1442 | f 300/314 271/270 584/271 1443 | f 585/295 586/320 587/294 1444 | f 588/321 272/273 589/323 1445 | f 590/323 591/322 592/321 1446 | f 593/272 272/273 594/321 1447 | f 595/324 596/274 275/275 1448 | f 275/275 597/325 598/324 1449 | f 298/309 599/317 600/326 1450 | f 601/325 275/275 298/309 1451 | f 298/309 602/326 603/325 1452 | f 296/301 604/302 605/316 1453 | f 606/316 297/307 296/301 1454 | f 607/48 608/171 278/278 1455 | f 301/315 277/277 294/303 1456 | f 294/303 295/300 301/315 1457 | f 295/300 296/301 290/299 1458 | f 290/299 285/296 295/300 1459 | f 295/300 285/296 301/315 1460 | f 609/310 610/283 611/327 1461 | f 612/310 280/282 613/283 1462 | f 275/275 276/276 288/308 1463 | f 292/297 293/298 614/329 1464 | f 615/329 616/328 292/297 1465 | f 37/77 12/22 10/20 1466 | f 10/20 35/78 37/77 1467 | f 37/77 38/257 39/80 1468 | f 39/80 13/256 12/22 1469 | f 313/177 310/178 311/179 1470 | f 311/179 312/180 313/177 1471 | f 313/177 314/181 315/182 1472 | f 315/182 310/178 313/177 1473 | f 312/180 316/183 617/184 1474 | f 618/184 313/177 312/180 1475 | f 311/179 317/185 619/186 1476 | f 620/186 312/180 311/179 1477 | f 310/178 621/187 622/188 1478 | f 623/188 311/179 310/178 1479 | f 319/177 320/180 321/179 1480 | f 321/179 318/178 319/177 1481 | f 319/177 318/178 322/182 1482 | f 322/182 323/181 319/177 1483 | f 320/180 319/177 624/184 1484 | f 625/184 324/183 320/180 1485 | f 321/179 320/180 626/186 1486 | f 627/186 325/185 321/179 1487 | f 318/178 321/179 628/188 1488 | f 629/188 630/187 318/178 1489 | f 239/286 238/285 240/288 1490 | f 238/285 631/312 240/288 1491 | f 632/313 633/330 634/287 1492 | f 635/313 636/287 239/286 1493 | f 238/285 637/284 638/311 1494 | f 639/284 640/331 641/311 1495 | f 236/282 237/281 243/290 1496 | f 237/281 234/305 243/290 1497 | f 237/281 642/280 643/304 1498 | f 644/280 645/332 646/304 1499 | f 280/282 647/291 289/290 1500 | f 289/290 648/305 281/281 1501 | f 281/281 649/305 650/304 1502 | f 651/304 652/332 653/280 1503 | f 284/286 287/289 286/288 1504 | f 286/288 654/312 282/285 1505 | f 655/287 656/330 657/313 1506 | f 284/286 658/287 659/313 1507 | f 282/285 660/312 661/311 1508 | f 662/311 663/331 664/284 1509 | f 665/294 666/323 667/319 1510 | f 668/319 291/293 669/294 1511 | f 254/293 670/319 671/323 1512 | f 672/323 673/294 254/293 1513 | f 232/270 233/273 674/323 1514 | f 232/270 675/323 676/319 1515 | f 677/323 272/273 271/270 1516 | f 678/319 679/323 271/270 -------------------------------------------------------------------------------- /res/carC.tga: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexei-Kornienko/Racing-Game/a9f0291bc407ad8967ce9d2176c777e290b6c809/res/carC.tga -------------------------------------------------------------------------------- /res/carD.mtl: -------------------------------------------------------------------------------- 1 | # Blender3D MTL File: 2 | # Material Count: 1 3 | newmtl 01___CarD 4 | Ns 10.0000 5 | Ni 1.5000 6 | d 1.0000 7 | Tr 0.0000 8 | Tf 1.0000 1.0000 1.0000 9 | illum 2 10 | Ka 0.5882 0.5882 0.5882 11 | Kd 0.5882 0.5882 0.5882 12 | Ks 0.0000 0.0000 0.0000 13 | Ke 0.0000 0.0000 0.0000 14 | map_Ka carD.tga 15 | map_Kd carD.tga -------------------------------------------------------------------------------- /res/carD.obj: -------------------------------------------------------------------------------- 1 | # Blender3D v249 OBJ File: 2 | # www.blender3d.org 3 | mtllib carD.mtl 4 | v -0.000000 0.003883 -0.891915 5 | v -0.000000 0.082940 -0.687767 6 | v -0.000000 0.030395 -0.879740 7 | v -0.000000 -0.111915 -0.895326 8 | v -0.000000 -0.113735 -0.864069 9 | v -0.000000 -0.070967 -0.877915 10 | v -0.338667 -0.111867 -0.931544 11 | v -0.339441 -0.079201 -0.935845 12 | v -0.135262 -0.021089 0.941144 13 | v -0.118300 0.069607 0.767873 14 | v -0.146896 0.003911 0.919047 15 | v -0.132309 0.145505 0.623542 16 | v -0.175500 0.063440 0.319733 17 | v -0.345921 -0.079201 -0.885589 18 | v -0.345534 -0.111851 -0.881029 19 | v -0.240895 0.191194 -0.443901 20 | v -0.329936 0.082785 -0.582206 21 | v -0.170665 0.109844 -0.774852 22 | v -0.175419 0.082581 -0.664697 23 | v -0.133380 0.205246 -0.443901 24 | v -0.133380 0.222346 -0.118367 25 | v -0.256756 0.209040 -0.118367 26 | v -0.133380 0.214560 0.122094 27 | v -0.252734 0.205289 0.103985 28 | v -0.000000 0.209394 -0.443901 29 | v -0.000000 0.191720 -0.476849 30 | v -0.134385 0.187816 -0.476017 31 | v -0.285417 0.082940 -0.633849 32 | v -0.288506 -0.177663 0.876408 33 | v -0.000000 0.218591 0.126042 34 | v -0.000000 -0.079201 -0.903347 35 | v 0.354695 -0.111867 -0.937310 36 | v 0.355469 -0.079201 -0.941610 37 | v 0.135262 -0.021089 0.941144 38 | v 0.130000 0.048685 0.779248 39 | v 0.146896 0.003911 0.919047 40 | v 0.145395 0.127089 0.622633 41 | v 0.175500 0.063440 0.319733 42 | v -0.000000 0.063440 0.336805 43 | v 0.288506 -0.177663 0.876408 44 | v 0.361562 -0.111851 -0.886794 45 | v 0.361949 -0.079201 -0.891354 46 | v 0.256756 0.209040 -0.118367 47 | v 0.240895 0.191194 -0.443901 48 | v 0.170665 0.137665 -0.774852 49 | v -0.000000 0.116489 -0.774852 50 | v 0.175419 0.082581 -0.664697 51 | v 0.283332 0.174675 0.120074 52 | v 0.133380 0.205246 -0.443901 53 | v 0.133380 0.222346 -0.118367 54 | v -0.000000 0.228846 -0.118367 55 | v 0.252734 0.205289 0.103985 56 | v 0.133380 0.214560 0.122094 57 | v 0.134385 0.187816 -0.476017 58 | v 0.283266 0.082940 -0.634395 59 | v 0.000046 -0.177412 -0.858055 60 | v -0.414879 0.077700 0.177100 61 | v -0.371893 0.071500 0.235152 62 | v -0.408608 0.074291 0.167083 63 | v -0.366102 0.068169 0.215579 64 | v -0.370177 0.109478 0.229194 65 | v -0.364386 0.106146 0.209622 66 | v -0.411476 0.108276 0.172222 67 | v -0.405205 0.104867 0.162205 68 | v -0.234000 -0.203060 -0.708076 69 | v -0.234000 -0.227251 0.423877 70 | v -0.234000 -0.223037 -0.354141 71 | v -0.358150 0.051156 0.229090 72 | v -0.347845 0.060119 0.239566 73 | v -0.343368 0.057653 0.223130 74 | v -0.378433 0.094283 0.217094 75 | v -0.371734 0.100109 0.223904 76 | v -0.368823 0.098506 0.213220 77 | v -0.330263 0.064276 0.621775 78 | v 0.340735 -0.113655 -0.883119 79 | v 0.234000 -0.223037 -0.354141 80 | v 0.290725 0.180119 -0.118584 81 | v 0.400847 0.077700 0.168966 82 | v 0.371893 0.071500 0.223433 83 | v 0.393234 0.074291 0.159345 84 | v 0.358991 0.068169 0.206607 85 | v 0.357276 0.106146 0.200650 86 | v 0.370177 0.109478 0.217476 87 | v 0.389831 0.104867 0.154467 88 | v 0.397444 0.108276 0.164087 89 | v 0.358150 0.051156 0.229090 90 | v 0.347845 0.060119 0.239566 91 | v 0.368210 0.100109 0.212628 92 | v 0.374909 0.094283 0.205818 93 | v 0.343368 0.057653 0.223130 94 | v 0.365299 0.098506 0.201943 95 | v 0.234000 -0.196461 0.782636 96 | v 0.234000 -0.227251 0.423877 97 | v 0.128604 -0.179008 0.892251 98 | v -0.128604 -0.179008 0.892251 99 | v -0.345320 -0.223037 -0.354141 100 | v -0.000000 -0.202532 0.902260 101 | v -0.289387 -0.205706 0.889978 102 | v -0.128604 -0.179008 0.892251 103 | v -0.288506 -0.177663 0.876408 104 | v -0.316249 -0.184943 0.841752 105 | v 0.128604 -0.179008 0.892251 106 | v 0.288506 -0.177663 0.876408 107 | v 0.289387 -0.205706 0.889979 108 | v 0.316249 -0.184943 0.841752 109 | v 0.065590 -0.127711 0.942284 110 | v 0.065590 -0.178924 0.928715 111 | v -0.068603 -0.178924 0.928831 112 | v -0.068583 -0.127711 0.942344 113 | v -0.290725 0.180119 -0.118584 114 | v -0.283332 0.174675 0.120074 115 | v -0.266973 0.179874 0.144503 116 | v -0.137453 0.192613 0.160027 117 | v -0.000000 0.197274 0.164072 118 | v 0.137225 0.193385 0.159073 119 | v 0.264911 0.181896 0.142185 120 | v 0.310552 0.071763 0.275981 121 | v -0.312623 0.069138 0.278929 122 | v -0.304764 -0.070967 -0.906705 123 | v -0.327947 -0.070967 -0.885589 124 | v -0.316073 -0.020871 0.953745 125 | v -0.330332 0.003946 0.931778 126 | v -0.316249 -0.184943 0.841752 127 | v -0.299166 -0.177416 -0.877249 128 | v 0.316452 0.059600 -0.774852 129 | v 0.309399 0.030395 -0.921765 130 | v 0.314844 -0.177416 -0.883014 131 | v 0.265039 0.177870 -0.469346 132 | v 0.335400 -0.203060 -0.708076 133 | v 0.333061 0.067138 0.246223 134 | v 0.330332 0.003946 0.931778 135 | v 0.316073 -0.020871 0.953745 136 | v 0.216124 0.180354 -0.474136 137 | v 0.246452 0.167499 -0.491172 138 | v -0.219863 0.179016 -0.475679 139 | v -0.250013 0.163037 -0.498421 140 | v -0.121143 -0.047942 -0.918797 141 | v -0.116590 -0.146550 -0.918797 142 | v -0.089194 -0.146550 -0.918797 143 | v -0.096219 -0.047942 -0.918797 144 | v -0.121143 -0.047942 -0.902849 145 | v -0.116590 -0.146550 -0.886873 146 | v -0.089194 -0.146550 -0.886873 147 | v -0.096219 -0.047942 -0.902849 148 | v 0.118580 -0.051160 -0.926551 149 | v 0.120038 -0.146550 -0.926551 150 | v 0.093835 -0.143552 -0.924246 151 | v 0.095197 -0.044944 -0.924225 152 | v 0.119922 -0.051160 -0.910660 153 | v 0.122725 -0.146550 -0.894741 154 | v 0.096521 -0.143552 -0.892435 155 | v 0.096540 -0.044944 -0.908334 156 | v 0.130812 0.048055 -0.184897 157 | v 0.060479 0.019607 -0.151180 158 | v 0.250741 0.019607 -0.151180 159 | v 0.180409 0.048055 -0.184897 160 | v 0.087317 -0.071581 -0.121324 161 | v 0.223903 -0.071581 -0.121324 162 | v 0.060479 0.042888 -0.267893 163 | v 0.126716 0.072144 -0.229791 164 | v 0.184505 0.072144 -0.229791 165 | v 0.250741 0.042888 -0.267894 166 | v 0.223903 -0.061321 -0.229963 167 | v 0.087317 -0.061321 -0.229963 168 | v 0.131653 0.155829 -0.194800 169 | v 0.130691 0.130621 -0.166602 170 | v 0.180530 0.130621 -0.166602 171 | v 0.179568 0.155829 -0.194800 172 | v 0.133899 0.065967 -0.166233 173 | v 0.177322 0.065967 -0.166233 174 | v 0.130812 0.067021 -0.180682 175 | v 0.180409 0.067021 -0.180682 176 | v 0.122626 0.128749 -0.241819 177 | v 0.188594 0.128749 -0.241819 178 | v -0.000000 0.063440 0.336805 179 | v 0.175500 0.063440 0.319733 180 | v 0.310552 0.071763 0.275981 181 | v 0.333061 0.067138 0.246223 182 | v -0.000000 -0.041937 -0.226652 183 | v -0.000000 0.058933 -0.262958 184 | v 0.320254 0.058933 -0.262958 185 | v 0.175419 0.082581 -0.664697 186 | v 0.283266 0.082940 -0.634395 187 | v -0.175500 0.063440 0.319733 188 | v -0.312623 0.069138 0.278929 189 | v -0.320254 0.058933 -0.262958 190 | v -0.175419 0.082581 -0.664697 191 | v -0.283266 0.082940 -0.634395 192 | v -0.000000 0.082940 -0.687767 193 | v -0.351385 0.079474 -0.119017 194 | v -0.332212 0.079474 -0.119017 195 | v -0.340039 0.080749 -0.360490 196 | v -0.320254 0.069103 0.099666 197 | v -0.333061 0.067138 0.246223 198 | v -0.302771 -0.060205 0.016181 199 | v -0.320254 -0.041937 -0.226652 200 | v -0.283266 0.082940 -0.634395 201 | v 0.320254 0.069103 0.099666 202 | v 0.332212 0.079474 -0.119017 203 | v 0.351385 0.079474 -0.119017 204 | v 0.302771 -0.060205 0.016181 205 | v 0.320254 -0.041937 -0.226652 206 | v 0.283266 0.082940 -0.634395 207 | v 0.340039 0.080749 -0.360490 208 | v 0.135289 -0.129848 0.935342 209 | v -0.135289 -0.129848 0.935342 210 | v 0.136187 -0.127985 0.960205 211 | v 0.136250 -0.103179 0.965495 212 | v 0.316841 -0.127973 0.975802 213 | v 0.317678 -0.103180 0.980314 214 | v -0.136303 -0.127985 0.960205 215 | v -0.136241 -0.103179 0.965493 216 | v -0.316832 -0.127973 0.975802 217 | v -0.317543 -0.103180 0.980313 218 | v 0.135289 -0.129848 0.935342 219 | v 0.135279 -0.095039 0.937542 220 | v 0.318442 -0.129882 0.945792 221 | v 0.317543 -0.094947 0.948810 222 | v -0.135289 -0.129848 0.935342 223 | v -0.135279 -0.095039 0.937542 224 | v -0.317543 -0.094947 0.948809 225 | v -0.318442 -0.129882 0.945792 226 | v 0.320254 0.058933 -0.262958 227 | v 0.283266 0.082940 -0.634395 228 | v -0.000000 -0.060205 0.016181 229 | v -0.320254 0.058933 -0.262958 230 | v -0.283266 0.082940 -0.634395 231 | v -0.302771 -0.060205 0.016181 232 | v -0.320254 -0.041937 -0.226652 233 | v 0.302771 -0.060205 0.016181 234 | v 0.320254 -0.041937 -0.226652 235 | v -0.343499 0.034340 -0.774852 236 | v -0.320534 0.000889 -0.910833 237 | v -0.390000 -0.064499 0.741260 238 | v -0.342177 -0.127882 0.925753 239 | v -0.237900 -0.073060 0.520382 240 | v -0.237900 -0.064499 0.741260 241 | v -0.237900 -0.082925 -0.424758 242 | v -0.237900 -0.079133 -0.640033 243 | v -0.390000 -0.065873 -0.518767 244 | v -0.390000 -0.082925 -0.424758 245 | v -0.390000 -0.079133 -0.640033 246 | v -0.390000 -0.046085 0.625802 247 | v -0.390000 -0.073060 0.516918 248 | v -0.351385 0.079474 -0.119017 249 | v -0.360902 0.054567 0.281434 250 | v -0.383360 0.062909 -0.119017 251 | v -0.360559 0.049042 0.623020 252 | v -0.368748 0.063468 -0.421062 253 | v -0.339967 -0.013112 0.934495 254 | v -0.360908 0.062272 -0.616781 255 | v -0.340039 0.080749 -0.360490 256 | v -0.311347 0.130639 -0.293761 257 | v -0.378658 -0.139486 -0.684986 258 | v -0.382613 -0.154310 -0.378496 259 | v -0.390998 -0.147810 0.461904 260 | v -0.381012 -0.130480 0.781288 261 | v -0.325057 -0.113655 -0.877354 262 | v -0.335400 -0.196461 0.782636 263 | v -0.301167 -0.113705 -0.896765 264 | v -0.293721 0.030395 -0.915999 265 | v -0.265039 0.177870 -0.469346 266 | v -0.335400 -0.203060 -0.708076 267 | v -0.363495 -0.227251 0.423877 268 | v -0.290133 0.171221 -0.212964 269 | v -0.333061 0.067138 0.246223 270 | v -0.316452 0.059600 -0.774852 271 | v -0.299883 0.003841 -0.930430 272 | v -0.234000 -0.196461 0.782636 273 | v -0.318442 -0.129882 0.945792 274 | v 0.343499 0.034340 -0.774852 275 | v 0.336212 0.000889 -0.916598 276 | v 0.343625 -0.070967 -0.891354 277 | v 0.335400 -0.196461 0.782636 278 | v 0.342177 -0.127882 0.925753 279 | v 0.381012 -0.130480 0.781288 280 | v 0.340039 0.080749 -0.360490 281 | v 0.311347 0.130639 -0.293761 282 | v 0.329936 0.082785 -0.582206 283 | v 0.237900 -0.073060 0.520382 284 | v 0.237900 -0.064499 0.741260 285 | v 0.237900 -0.082925 -0.424758 286 | v 0.234000 -0.203060 -0.708076 287 | v 0.237900 -0.079133 -0.640033 288 | v 0.390000 -0.082925 -0.424758 289 | v 0.390000 -0.065873 -0.518767 290 | v 0.390000 -0.079133 -0.640033 291 | v 0.390000 -0.064499 0.741260 292 | v 0.390000 -0.046085 0.625802 293 | v 0.390000 -0.073060 0.516918 294 | v 0.378658 -0.139486 -0.684986 295 | v 0.382613 -0.154310 -0.378496 296 | v 0.390998 -0.147810 0.461904 297 | v 0.351385 0.079474 -0.119017 298 | v 0.383360 0.062909 -0.119017 299 | v 0.360902 0.054567 0.281434 300 | v 0.360559 0.049042 0.623020 301 | v 0.339967 -0.013112 0.934495 302 | v 0.345320 -0.223037 -0.354141 303 | v 0.360908 0.062272 -0.616781 304 | v 0.368748 0.063468 -0.421062 305 | v 0.330263 0.064276 0.621775 306 | v 0.316845 -0.113705 -0.902531 307 | v 0.315561 0.003841 -0.936195 308 | v 0.320442 -0.070967 -0.912470 309 | v 0.316249 -0.184943 0.841752 310 | v 0.318442 -0.129882 0.945792 311 | v 0.290133 0.171221 -0.212964 312 | v 0.363495 -0.227251 0.423877 313 | v 0.148458 -0.060500 0.978014 314 | v 0.120813 -0.060500 0.978014 315 | v 0.121062 -0.159109 0.978014 316 | v 0.148458 -0.159109 0.978014 317 | v 0.148458 -0.159109 0.946090 318 | v 0.148458 -0.060500 0.962066 319 | v 0.121062 -0.159109 0.946090 320 | v 0.120813 -0.060500 0.962066 321 | v -0.148760 -0.060500 0.978014 322 | v -0.148760 -0.159109 0.978014 323 | v -0.121364 -0.159109 0.978014 324 | v -0.121115 -0.060500 0.978014 325 | v -0.148760 -0.060500 0.962066 326 | v -0.148760 -0.159109 0.946090 327 | v -0.121364 -0.159109 0.946090 328 | v -0.121115 -0.060500 0.962066 329 | v -0.320254 -0.041937 -0.226652 330 | v 0.320254 -0.041937 -0.226652 331 | v -0.000000 0.003883 -0.891915 332 | v -0.299883 0.003841 -0.930430 333 | v -0.000000 0.003883 -0.891915 334 | v -0.316073 -0.020871 0.953745 335 | v -0.135262 -0.021089 0.941144 336 | v -0.135262 -0.021089 0.941144 337 | v -0.345921 -0.079201 -0.885589 338 | v -0.327947 -0.070967 -0.885589 339 | v -0.325057 -0.113655 -0.877354 340 | v -0.325057 -0.113655 -0.877354 341 | v -0.345534 -0.111851 -0.881029 342 | v -0.000000 0.003883 -0.891915 343 | v -0.000000 0.003883 -0.891915 344 | v 0.315561 0.003841 -0.936195 345 | v 0.135262 -0.021089 0.941144 346 | v 0.135262 -0.021089 0.941144 347 | v 0.316073 -0.020871 0.953745 348 | v 0.361949 -0.079201 -0.891354 349 | v 0.343625 -0.070967 -0.891354 350 | v 0.340735 -0.113655 -0.883119 351 | v 0.340735 -0.113655 -0.883119 352 | v 0.361562 -0.111851 -0.886794 353 | v -0.135262 -0.021089 0.941144 354 | v -0.135262 -0.021089 0.941144 355 | v 0.135262 -0.021089 0.941144 356 | v -0.408608 0.074291 0.167083 357 | v -0.366102 0.068169 0.215579 358 | v -0.366102 0.068169 0.215579 359 | v -0.366102 0.068169 0.215579 360 | v -0.364386 0.106146 0.209622 361 | v -0.364386 0.106146 0.209622 362 | v -0.364386 0.106146 0.209622 363 | v -0.405205 0.104867 0.162205 364 | v -0.405205 0.104867 0.162205 365 | v -0.405205 0.104867 0.162205 366 | v -0.408608 0.074291 0.167083 367 | v -0.405205 0.104867 0.162205 368 | v -0.347845 0.060119 0.239566 369 | v -0.371734 0.100109 0.223904 370 | v -0.347845 0.060119 0.239566 371 | v 0.358991 0.068169 0.206607 372 | v 0.358991 0.068169 0.206607 373 | v 0.393234 0.074291 0.159345 374 | v 0.357276 0.106146 0.200650 375 | v 0.357276 0.106146 0.200650 376 | v 0.358991 0.068169 0.206607 377 | v 0.389831 0.104867 0.154467 378 | v 0.389831 0.104867 0.154467 379 | v 0.357276 0.106146 0.200650 380 | v 0.393234 0.074291 0.159345 381 | v 0.389831 0.104867 0.154467 382 | v 0.389831 0.104867 0.154467 383 | v 0.347845 0.060119 0.239566 384 | v 0.368210 0.100109 0.212628 385 | v 0.347845 0.060119 0.239566 386 | v 0.000046 -0.177412 -0.858055 387 | v -0.299166 -0.177416 -0.877249 388 | v 0.000046 -0.177412 -0.858055 389 | v 0.000046 -0.177412 -0.858055 390 | v 0.314844 -0.177416 -0.883014 391 | v 0.314844 -0.177416 -0.883014 392 | v -0.299166 -0.177416 -0.877249 393 | v -0.128604 -0.179008 0.892251 394 | v 0.128604 -0.179008 0.892251 395 | v -0.128604 -0.179008 0.892251 396 | v 0.316249 -0.184943 0.841752 397 | v 0.288506 -0.177663 0.876408 398 | v 0.288506 -0.177663 0.876408 399 | v 0.128604 -0.179008 0.892251 400 | v 0.316249 -0.184943 0.841752 401 | v -0.316249 -0.184943 0.841752 402 | v -0.128604 -0.179008 0.892251 403 | v -0.128604 -0.179008 0.892251 404 | v -0.288506 -0.177663 0.876408 405 | v -0.316249 -0.184943 0.841752 406 | v -0.316249 -0.184943 0.841752 407 | v -0.116590 -0.146550 -0.886873 408 | v -0.116590 -0.146550 -0.886873 409 | v -0.089194 -0.146550 -0.886873 410 | v -0.089194 -0.146550 -0.886873 411 | v -0.121143 -0.047942 -0.902849 412 | v -0.096219 -0.047942 -0.902849 413 | v -0.096219 -0.047942 -0.902849 414 | v 0.122725 -0.146550 -0.894741 415 | v 0.122725 -0.146550 -0.894741 416 | v 0.096521 -0.143552 -0.892435 417 | v 0.096521 -0.143552 -0.892435 418 | v 0.096540 -0.044944 -0.908334 419 | v 0.096540 -0.044944 -0.908334 420 | v 0.119922 -0.051160 -0.910660 421 | v 0.223903 -0.071581 -0.121324 422 | v 0.087317 -0.071581 -0.121324 423 | v 0.180409 0.048055 -0.184897 424 | v 0.130812 0.048055 -0.184897 425 | v 0.180409 0.048055 -0.184897 426 | v 0.184505 0.072144 -0.229791 427 | v 0.126716 0.072144 -0.229791 428 | v 0.126716 0.072144 -0.229791 429 | v 0.180409 0.067021 -0.180682 430 | v 0.188594 0.128749 -0.241819 431 | v 0.188594 0.128749 -0.241819 432 | v 0.180409 0.067021 -0.180682 433 | v 0.180409 0.048055 -0.184897 434 | v 0.184505 0.072144 -0.229791 435 | v 0.188594 0.128749 -0.241819 436 | v 0.179568 0.155829 -0.194800 437 | v 0.180409 0.067021 -0.180682 438 | v 0.184505 0.072144 -0.229791 439 | v 0.188594 0.128749 -0.241819 440 | v 0.122626 0.128749 -0.241819 441 | v 0.122626 0.128749 -0.241819 442 | v 0.130812 0.067021 -0.180682 443 | v 0.130812 0.067021 -0.180682 444 | v 0.126716 0.072144 -0.229791 445 | v 0.130812 0.048055 -0.184897 446 | v 0.122626 0.128749 -0.241819 447 | v 0.131653 0.155829 -0.194800 448 | v 0.130812 0.067021 -0.180682 449 | v 0.122626 0.128749 -0.241819 450 | v 0.126716 0.072144 -0.229791 451 | v -0.333061 0.067138 0.246223 452 | v -0.320254 0.069103 0.099666 453 | v -0.333061 0.067138 0.246223 454 | v -0.320254 0.069103 0.099666 455 | v -0.302771 -0.060205 0.016181 456 | v -0.320254 0.069103 0.099666 457 | v 0.333061 0.067138 0.246223 458 | v 0.320254 0.069103 0.099666 459 | v 0.333061 0.067138 0.246223 460 | v 0.320254 0.069103 0.099666 461 | v 0.302771 -0.060205 0.016181 462 | v 0.320254 0.069103 0.099666 463 | v 0.318442 -0.129882 0.945792 464 | v 0.318442 -0.129882 0.945792 465 | v 0.317543 -0.094947 0.948810 466 | v -0.317543 -0.094947 0.948809 467 | v -0.318442 -0.129882 0.945792 468 | v -0.318442 -0.129882 0.945792 469 | v -0.316452 0.059600 -0.774852 470 | v -0.293721 0.030395 -0.915999 471 | v -0.293721 0.030395 -0.915999 472 | v -0.335400 -0.196461 0.782636 473 | v -0.329936 0.082785 -0.582206 474 | v -0.234000 -0.196461 0.782636 475 | v -0.234000 -0.227251 0.423877 476 | v -0.234000 -0.196461 0.782636 477 | v -0.234000 -0.223037 -0.354141 478 | v -0.234000 -0.203060 -0.708076 479 | v -0.234000 -0.223037 -0.354141 480 | v -0.335400 -0.203060 -0.708076 481 | v -0.325057 -0.113655 -0.877354 482 | v -0.325057 -0.113655 -0.877354 483 | v -0.299166 -0.177416 -0.877249 484 | v -0.335400 -0.203060 -0.708076 485 | v -0.390000 -0.073060 0.516918 486 | v -0.333061 0.067138 0.246223 487 | v -0.333061 0.067138 0.246223 488 | v -0.381012 -0.130480 0.781288 489 | v -0.390000 -0.073060 0.516918 490 | v -0.390000 -0.046085 0.625802 491 | v -0.390000 -0.046085 0.625802 492 | v -0.390000 -0.064499 0.741260 493 | v -0.390000 -0.064499 0.741260 494 | v -0.390000 -0.064499 0.741260 495 | v -0.390998 -0.147810 0.461904 496 | v -0.382613 -0.154310 -0.378496 497 | v -0.390000 -0.082925 -0.424758 498 | v -0.378658 -0.139486 -0.684986 499 | v -0.329936 0.082785 -0.582206 500 | v -0.329936 0.082785 -0.582206 501 | v -0.330263 0.064276 0.621775 502 | v -0.330332 0.003946 0.931778 503 | v -0.330263 0.064276 0.621775 504 | v -0.390000 -0.073060 0.516918 505 | v -0.390000 -0.065873 -0.518767 506 | v -0.390000 -0.065873 -0.518767 507 | v -0.390000 -0.079133 -0.640033 508 | v -0.390000 -0.065873 -0.518767 509 | v -0.390000 -0.079133 -0.640033 510 | v -0.316452 0.059600 -0.774852 511 | v -0.329936 0.082785 -0.582206 512 | v -0.316452 0.059600 -0.774852 513 | v -0.299166 -0.177416 -0.877249 514 | v -0.325057 -0.113655 -0.877354 515 | v -0.301167 -0.113705 -0.896765 516 | v -0.299883 0.003841 -0.930430 517 | v -0.304764 -0.070967 -0.906705 518 | v -0.327947 -0.070967 -0.885589 519 | v -0.327947 -0.070967 -0.885589 520 | v -0.299883 0.003841 -0.930430 521 | v -0.293721 0.030395 -0.915999 522 | v -0.299883 0.003841 -0.930430 523 | v -0.316249 -0.184943 0.841752 524 | v -0.318442 -0.129882 0.945792 525 | v -0.335400 -0.196461 0.782636 526 | v -0.316249 -0.184943 0.841752 527 | v -0.316073 -0.020871 0.953745 528 | v -0.330332 0.003946 0.931778 529 | v -0.318442 -0.129882 0.945792 530 | v -0.316073 -0.020871 0.953745 531 | v -0.318442 -0.129882 0.945792 532 | v -0.330263 0.064276 0.621775 533 | v -0.330263 0.064276 0.621775 534 | v -0.333061 0.067138 0.246223 535 | v -0.390000 -0.073060 0.516918 536 | v -0.390000 -0.073060 0.516918 537 | v -0.390998 -0.147810 0.461904 538 | v -0.363495 -0.227251 0.423877 539 | v -0.234000 -0.227251 0.423877 540 | v -0.390998 -0.147810 0.461904 541 | v -0.234000 -0.227251 0.423877 542 | v -0.390000 -0.064499 0.741260 543 | v -0.345320 -0.223037 -0.354141 544 | v -0.363495 -0.227251 0.423877 545 | v -0.363495 -0.227251 0.423877 546 | v 0.309399 0.030395 -0.921765 547 | v 0.309399 0.030395 -0.921765 548 | v 0.316452 0.059600 -0.774852 549 | v 0.335400 -0.196461 0.782636 550 | v 0.329936 0.082785 -0.582206 551 | v 0.265039 0.177870 -0.469346 552 | v 0.265039 0.177870 -0.469346 553 | v 0.234000 -0.227251 0.423877 554 | v 0.234000 -0.196461 0.782636 555 | v 0.234000 -0.227251 0.423877 556 | v 0.234000 -0.203060 -0.708076 557 | v 0.234000 -0.223037 -0.354141 558 | v 0.234000 -0.203060 -0.708076 559 | v 0.335400 -0.203060 -0.708076 560 | v 0.314844 -0.177416 -0.883014 561 | v 0.340735 -0.113655 -0.883119 562 | v 0.340735 -0.113655 -0.883119 563 | v 0.335400 -0.203060 -0.708076 564 | v 0.333061 0.067138 0.246223 565 | v 0.333061 0.067138 0.246223 566 | v 0.381012 -0.130480 0.781288 567 | v 0.234000 -0.196461 0.782636 568 | v 0.390000 -0.046085 0.625802 569 | v 0.390000 -0.046085 0.625802 570 | v 0.390000 -0.073060 0.516918 571 | v 0.390998 -0.147810 0.461904 572 | v 0.382613 -0.154310 -0.378496 573 | v 0.234000 -0.223037 -0.354141 574 | v 0.378658 -0.139486 -0.684986 575 | v 0.329936 0.082785 -0.582206 576 | v 0.329936 0.082785 -0.582206 577 | v 0.330263 0.064276 0.621775 578 | v 0.330332 0.003946 0.931778 579 | v 0.330263 0.064276 0.621775 580 | v 0.390000 -0.065873 -0.518767 581 | v 0.390000 -0.065873 -0.518767 582 | v 0.390000 -0.065873 -0.518767 583 | v 0.390000 -0.079133 -0.640033 584 | v 0.390000 -0.079133 -0.640033 585 | v 0.316452 0.059600 -0.774852 586 | v 0.329936 0.082785 -0.582206 587 | v 0.316452 0.059600 -0.774852 588 | v 0.314844 -0.177416 -0.883014 589 | v 0.316845 -0.113705 -0.902531 590 | v 0.340735 -0.113655 -0.883119 591 | v 0.315561 0.003841 -0.936195 592 | v 0.343625 -0.070967 -0.891354 593 | v 0.343625 -0.070967 -0.891354 594 | v 0.320442 -0.070967 -0.912470 595 | v 0.315561 0.003841 -0.936195 596 | v 0.309399 0.030395 -0.921765 597 | v 0.315561 0.003841 -0.936195 598 | v 0.316249 -0.184943 0.841752 599 | v 0.335400 -0.196461 0.782636 600 | v 0.318442 -0.129882 0.945792 601 | v 0.316249 -0.184943 0.841752 602 | v 0.330332 0.003946 0.931778 603 | v 0.316073 -0.020871 0.953745 604 | v 0.318442 -0.129882 0.945792 605 | v 0.316073 -0.020871 0.953745 606 | v 0.318442 -0.129882 0.945792 607 | v 0.333061 0.067138 0.246223 608 | v 0.330263 0.064276 0.621775 609 | v 0.330263 0.064276 0.621775 610 | v 0.265039 0.177870 -0.469346 611 | v 0.290133 0.171221 -0.212964 612 | v 0.390998 -0.147810 0.461904 613 | v 0.234000 -0.227251 0.423877 614 | v 0.363495 -0.227251 0.423877 615 | v 0.390998 -0.147810 0.461904 616 | v 0.234000 -0.227251 0.423877 617 | v 0.363495 -0.227251 0.423877 618 | v 0.363495 -0.227251 0.423877 619 | v 0.345320 -0.223037 -0.354141 620 | v 0.148458 -0.159109 0.946090 621 | v 0.148458 -0.159109 0.946090 622 | v 0.121062 -0.159109 0.946090 623 | v 0.121062 -0.159109 0.946090 624 | v 0.148458 -0.060500 0.962066 625 | v 0.120813 -0.060500 0.962066 626 | v 0.120813 -0.060500 0.962066 627 | v -0.148760 -0.159109 0.946090 628 | v -0.148760 -0.159109 0.946090 629 | v -0.121364 -0.159109 0.946090 630 | v -0.121364 -0.159109 0.946090 631 | v -0.121115 -0.060500 0.962066 632 | v -0.121115 -0.060500 0.962066 633 | v -0.148760 -0.060500 0.962066 634 | v -0.390000 -0.082925 -0.424758 635 | v -0.378658 -0.139486 -0.684986 636 | v -0.335400 -0.203060 -0.708076 637 | v -0.234000 -0.203060 -0.708076 638 | v -0.378658 -0.139486 -0.684986 639 | v -0.234000 -0.203060 -0.708076 640 | v -0.234000 -0.223037 -0.354141 641 | v -0.382613 -0.154310 -0.378496 642 | v -0.234000 -0.223037 -0.354141 643 | v -0.345320 -0.223037 -0.354141 644 | v -0.382613 -0.154310 -0.378496 645 | v -0.234000 -0.196461 0.782636 646 | v -0.381012 -0.130480 0.781288 647 | v -0.234000 -0.196461 0.782636 648 | v -0.335400 -0.196461 0.782636 649 | v -0.381012 -0.130480 0.781288 650 | v 0.390000 -0.073060 0.516918 651 | v 0.390000 -0.064499 0.741260 652 | v 0.390000 -0.064499 0.741260 653 | v 0.381012 -0.130480 0.781288 654 | v 0.381012 -0.130480 0.781288 655 | v 0.335400 -0.196461 0.782636 656 | v 0.234000 -0.196461 0.782636 657 | v 0.390000 -0.082925 -0.424758 658 | v 0.234000 -0.203060 -0.708076 659 | v 0.335400 -0.203060 -0.708076 660 | v 0.378658 -0.139486 -0.684986 661 | v 0.234000 -0.203060 -0.708076 662 | v 0.378658 -0.139486 -0.684986 663 | v 0.390000 -0.082925 -0.424758 664 | v 0.382613 -0.154310 -0.378496 665 | v 0.382613 -0.154310 -0.378496 666 | v 0.345320 -0.223037 -0.354141 667 | v 0.234000 -0.223037 -0.354141 668 | v 0.340735 -0.113655 -0.883119 669 | v 0.343625 -0.070967 -0.891354 670 | v 0.390000 -0.079133 -0.640033 671 | v 0.390000 -0.079133 -0.640033 672 | v 0.340735 -0.113655 -0.883119 673 | v -0.390000 -0.079133 -0.640033 674 | v -0.327947 -0.070967 -0.885589 675 | v -0.327947 -0.070967 -0.885589 676 | v -0.325057 -0.113655 -0.877354 677 | v -0.327947 -0.070967 -0.885589 678 | v -0.327947 -0.070967 -0.885589 679 | v -0.390000 -0.079133 -0.640033 680 | v 0.343625 -0.070967 -0.891354 681 | v 0.390000 -0.079133 -0.640033 682 | v 0.343625 -0.070967 -0.891354 683 | vt 0.656250 0.074219 684 | vt 0.656250 0.050781 685 | vt 0.886719 0.050781 686 | vt 0.925781 0.074219 687 | vt 0.656250 0.125000 688 | vt 0.656250 0.101562 689 | vt 0.925781 0.101562 690 | vt 0.886719 0.125000 691 | vt 0.023438 0.835938 692 | vt 0.007812 0.835938 693 | vt 0.023438 0.691406 694 | vt 0.007812 0.691406 695 | vt 0.656250 0.179688 696 | vt 0.886719 0.179688 697 | vt 0.492188 0.457031 698 | vt 0.492188 0.371094 699 | vt 0.632812 0.371094 700 | vt 0.632812 0.457031 701 | vt 0.984375 0.679688 702 | vt 0.882812 0.773438 703 | vt 0.800781 0.679688 704 | vt 0.800781 0.765625 705 | vt 0.511719 0.296875 706 | vt 0.632812 0.304688 707 | vt 0.972656 0.074219 708 | vt 0.972656 0.101562 709 | vt 0.101562 0.753906 710 | vt 0.101562 0.835938 711 | vt 0.839844 0.304688 712 | vt 0.839844 0.371094 713 | vt 0.171875 0.835938 714 | vt 0.179688 0.753906 715 | vt 0.554688 0.773438 716 | vt 0.570312 0.769531 717 | vt 0.570312 0.835938 718 | vt 0.554688 0.835938 719 | vt 0.550781 0.718750 720 | vt 0.566406 0.710938 721 | vt 0.441406 0.718750 722 | vt 0.441406 0.773438 723 | vt 0.292969 0.773438 724 | vt 0.292969 0.718750 725 | vt 0.441406 0.835938 726 | vt 0.292969 0.835938 727 | vt 0.277344 0.835938 728 | vt 0.277344 0.773438 729 | vt 0.265625 0.714844 730 | vt 0.281250 0.707031 731 | vt 0.277344 0.730469 732 | vt 0.562500 0.699219 733 | vt 1.000000 0.687500 734 | vt 1.000000 0.773438 735 | vt 0.984375 0.765625 736 | vt 0.195312 0.703125 737 | vt 0.214844 0.679688 738 | vt 0.101562 0.687500 739 | vt 0.656250 0.003906 740 | vt 0.886719 0.003906 741 | vt 0.929688 0.152344 742 | vt 0.910156 0.140625 743 | vt 0.996094 0.074219 744 | vt 0.996094 0.101562 745 | vt 0.906250 0.039062 746 | vt 0.929688 0.027344 747 | vt 0.488281 0.269531 748 | vt 0.421875 0.050781 749 | vt 0.382812 0.074219 750 | vt 0.382812 0.101562 751 | vt 0.421875 0.125000 752 | vt 0.023438 0.976562 753 | vt 0.007812 0.980469 754 | vt 0.421875 0.179688 755 | vt 0.839844 0.457031 756 | vt 0.980469 0.371094 757 | vt 0.980469 0.457031 758 | vt 0.800781 0.988281 759 | vt 0.800781 0.902344 760 | vt 0.882812 0.894531 761 | vt 0.984375 0.988281 762 | vt 0.667969 0.835938 763 | vt 0.960938 0.296875 764 | vt 0.335938 0.101562 765 | vt 0.335938 0.074219 766 | vt 0.402344 0.968750 767 | vt 0.281250 0.960938 768 | vt 0.292969 0.949219 769 | vt 0.441406 0.949219 770 | vt 0.101562 0.914062 771 | vt 0.179688 0.914062 772 | vt 0.570312 0.898438 773 | vt 0.554688 0.894531 774 | vt 0.546875 0.949219 775 | vt 0.566406 0.957031 776 | vt 0.292969 0.894531 777 | vt 0.441406 0.894531 778 | vt 0.277344 0.894531 779 | vt 0.277344 0.937500 780 | vt 0.445312 0.964844 781 | vt 0.554688 0.964844 782 | vt 0.984375 0.902344 783 | vt 1.000000 0.898438 784 | vt 1.000000 0.980469 785 | vt 0.214844 0.988281 786 | vt 0.195312 0.964844 787 | vt 0.101562 0.980469 788 | vt 0.421875 0.003906 789 | vt 0.398438 0.140625 790 | vt 0.378906 0.152344 791 | vt 0.312500 0.101562 792 | vt 0.312500 0.074219 793 | vt 0.402344 0.039062 794 | vt 0.378906 0.027344 795 | vt 0.984375 0.269531 796 | vt 0.605469 0.222656 797 | vt 0.605469 0.261719 798 | vt 0.531250 0.261719 799 | vt 0.531250 0.226562 800 | vt 0.750000 0.265625 801 | vt 0.660156 0.269531 802 | vt 0.660156 0.214844 803 | vt 0.750000 0.222656 804 | vt 0.519531 0.214844 805 | vt 0.597656 0.199219 806 | vt 0.628906 0.222656 807 | vt 0.628906 0.261719 808 | vt 0.597656 0.285156 809 | vt 0.519531 0.273438 810 | vt 0.972656 0.000000 811 | vt 0.992188 0.000000 812 | vt 0.992188 0.058594 813 | vt 0.972656 0.058594 814 | vt 0.941406 0.000000 815 | vt 0.957031 0.000000 816 | vt 0.957031 0.058594 817 | vt 0.941406 0.058594 818 | vt 0.261719 0.125000 819 | vt 0.261719 0.023438 820 | vt 0.300781 0.078125 821 | vt 0.296875 0.007812 822 | vt 0.296875 0.144531 823 | vt 0.261719 0.148438 824 | vt 0.261719 0.003906 825 | vt 0.011719 0.046875 826 | vt 0.035156 0.023438 827 | vt 0.035156 0.125000 828 | vt 0.011719 0.105469 829 | vt 0.019531 0.144531 830 | vt 0.011719 0.136719 831 | vt 0.035156 0.148438 832 | vt 0.019531 0.007812 833 | vt 0.011719 0.015625 834 | vt 0.035156 0.003906 835 | vt 0.089844 0.023438 836 | vt 0.089844 0.125000 837 | vt 0.207031 0.023438 838 | vt 0.207031 0.125000 839 | vt 0.531250 0.398438 840 | vt 0.531250 0.371094 841 | vt 0.738281 0.371094 842 | vt 0.644531 0.398438 843 | vt 0.511719 0.398438 844 | vt 0.945312 0.398438 845 | vt 0.832031 0.398438 846 | vt 0.945312 0.371094 847 | vt 0.964844 0.398438 848 | vt 0.605469 0.050781 849 | vt 0.605469 0.003906 850 | vt 0.707031 0.003906 851 | vt 0.707031 0.050781 852 | vt 0.445312 0.703125 853 | vt 0.398438 0.695312 854 | vt 0.632812 0.675781 855 | vt 0.644531 0.687500 856 | vt 0.640625 0.980469 857 | vt 0.632812 0.992188 858 | vt 0.269531 0.953125 859 | vt 0.769531 0.511719 860 | vt 0.843750 0.511719 861 | vt 0.843750 0.539062 862 | vt 0.769531 0.539062 863 | vt 0.769531 0.488281 864 | vt 0.843750 0.500000 865 | vt 0.746094 0.539062 866 | vt 0.746094 0.511719 867 | vt 0.843750 0.550781 868 | vt 0.769531 0.562500 869 | vt 0.855469 0.511719 870 | vt 0.855469 0.539062 871 | vt 0.898438 0.238281 872 | vt 0.867188 0.253906 873 | vt 0.843750 0.253906 874 | vt 0.812500 0.238281 875 | vt 0.882812 0.195312 876 | vt 0.828125 0.195312 877 | vt 0.867188 0.277344 878 | vt 0.898438 0.289062 879 | vt 0.812500 0.289062 880 | vt 0.843750 0.277344 881 | vt 0.937500 0.261719 882 | vt 0.933594 0.214844 883 | vt 0.769531 0.257812 884 | vt 0.777344 0.214844 885 | vt 0.234375 0.496094 886 | vt 0.230469 0.468750 887 | vt 0.269531 0.468750 888 | vt 0.265625 0.496094 889 | vt 0.269531 0.421875 890 | vt 0.230469 0.421875 891 | vt 0.269531 0.406250 892 | vt 0.230469 0.406250 893 | vt 0.269531 0.398438 894 | vt 0.230469 0.398438 895 | vt 0.273438 0.535156 896 | vt 0.269531 0.562500 897 | vt 0.230469 0.562500 898 | vt 0.226562 0.535156 899 | vt 0.277344 0.421875 900 | vt 0.304688 0.468750 901 | vt 0.277344 0.402344 902 | vt 0.296875 0.421875 903 | vt 0.296875 0.476562 904 | vt 0.191406 0.468750 905 | vt 0.222656 0.421875 906 | vt 0.199219 0.421875 907 | vt 0.222656 0.402344 908 | vt 0.203125 0.476562 909 | vt 0.410156 0.234375 910 | vt 0.464844 0.257812 911 | vt 0.476562 0.316406 912 | vt 0.476562 0.253906 913 | vt 0.164062 0.160156 914 | vt 0.050781 0.160156 915 | vt 0.050781 0.253906 916 | vt 0.164062 0.253906 917 | vt 0.050781 0.292969 918 | vt 0.164062 0.292969 919 | vt 0.101562 0.449219 920 | vt 0.054688 0.433594 921 | vt 0.015625 0.277344 922 | vt 0.164062 0.457031 923 | vt 0.332031 0.226562 924 | vt 0.191406 0.316406 925 | vt 0.257812 0.234375 926 | vt 0.203125 0.257812 927 | vt 0.191406 0.253906 928 | vt 0.464844 0.382812 929 | vt 0.203125 0.382812 930 | vt 0.468750 0.218750 931 | vt 0.417969 0.207031 932 | vt 0.347656 0.203125 933 | vt 0.347656 0.210938 934 | vt 0.398438 0.160156 935 | vt 0.316406 0.160156 936 | vt 0.175781 0.191406 937 | vt 0.261719 0.207031 938 | vt 0.664062 0.753906 939 | vt 0.664062 0.917969 940 | vt 0.554688 0.074219 941 | vt 0.554688 0.050781 942 | vt 0.753906 0.050781 943 | vt 0.753906 0.074219 944 | vt 0.753906 0.125000 945 | vt 0.753906 0.101562 946 | vt 0.554688 0.125000 947 | vt 0.554688 0.101562 948 | vt 0.089844 0.003906 949 | vt 0.207031 0.003906 950 | vt 0.207031 0.144531 951 | vt 0.089844 0.144531 952 | vt 0.101562 0.613281 953 | vt 0.097656 0.632812 954 | vt 0.019531 0.613281 955 | vt 0.023438 0.597656 956 | vt 0.882812 0.496094 957 | vt 0.984375 0.539062 958 | vt 0.878906 0.535156 959 | vt 0.328125 0.644531 960 | vt 0.359375 0.675781 961 | vt 0.222656 0.648438 962 | vt 0.988281 0.179688 963 | vt 0.984375 0.195312 964 | vt 0.957031 0.195312 965 | vt 0.949219 0.179688 966 | vt 0.988281 0.144531 967 | vt 0.984375 0.156250 968 | vt 0.960938 0.156250 969 | vt 0.953125 0.144531 970 | vt 0.972656 0.171875 971 | vt 0.957031 0.167969 972 | vt 0.968750 0.207031 973 | vt 0.953125 0.203125 974 | vt 0.160156 0.496094 975 | vt 0.175781 0.527344 976 | vt 0.039062 0.542969 977 | vt 0.039062 0.507812 978 | vt 0.296875 0.558594 979 | vt 0.320312 0.519531 980 | vt 0.722656 0.523438 981 | vt 0.750000 0.562500 982 | vt 0.445312 0.628906 983 | vt 0.636719 0.625000 984 | vt 0.625000 0.640625 985 | vt 0.445312 0.644531 986 | vt 0.992188 0.195312 987 | vt 0.988281 0.203125 988 | vt 0.800781 0.574219 989 | vt 0.800781 0.621094 990 | vt 0.855469 0.566406 991 | vt 0.988281 0.589844 992 | vt 0.945312 0.195312 993 | vt 0.996094 0.156250 994 | vt 0.988281 0.167969 995 | vt 0.949219 0.156250 996 | vt 0.207031 0.628906 997 | vt 0.300781 0.628906 998 | vt 0.800781 0.636719 999 | vt 0.988281 0.601562 1000 | vt 0.253906 0.566406 1001 | vt 0.199219 0.558594 1002 | vt 0.023438 0.539062 1003 | vt 0.007812 0.601562 1004 | vt 0.019531 0.562500 1005 | vt 0.035156 0.562500 1006 | vt 0.933594 0.500000 1007 | vt 0.996094 0.535156 1008 | vt 1.000000 0.589844 1009 | vt 0.941406 0.179688 1010 | vt 0.332031 0.484375 1011 | vt 0.707031 0.484375 1012 | vt 0.945312 0.148438 1013 | vt 0.996094 0.144531 1014 | vt 0.996094 0.183594 1015 | usemtl 01___CarD 1016 | s off 1017 | f 4/1 5/2 260/3 1018 | f 260/3 7/4 4/1 1019 | f 6/5 31/6 8/7 1020 | f 8/7 119/8 6/5 1021 | f 3/9 1/10 261/11 1022 | f 1/10 268/12 261/11 1023 | f 328/13 6/5 119/8 1024 | f 119/8 329/14 330/13 1025 | f 121/15 270/16 206/17 1026 | f 206/17 9/18 121/15 1027 | f 122/19 10/20 74/21 1028 | f 74/21 10/20 12/22 1029 | f 206/17 270/16 29/23 1030 | f 29/23 95/24 206/17 1031 | f 8/7 7/4 15/25 1032 | f 15/25 14/26 8/7 1033 | f 18/27 46/28 3/9 1034 | f 3/9 261/11 18/27 1035 | f 95/24 94/29 205/30 1036 | f 205/30 206/17 95/24 1037 | f 2/31 46/28 18/27 1038 | f 18/27 19/32 2/31 1039 | f 23/33 113/34 114/35 1040 | f 114/35 30/36 23/33 1041 | f 113/34 23/33 24/37 1042 | f 24/37 112/38 113/34 1043 | f 22/39 21/40 20/41 1044 | f 20/41 16/42 22/39 1045 | f 23/33 21/40 22/39 1046 | f 22/39 24/37 23/33 1047 | f 30/36 51/43 21/40 1048 | f 21/40 23/33 30/36 1049 | f 51/43 25/44 20/41 1050 | f 20/41 21/40 51/43 1051 | f 25/44 26/45 27/46 1052 | f 27/46 20/41 25/44 1053 | f 136/47 262/48 135/49 1054 | f 262/48 16/42 135/49 1055 | f 112/38 24/37 111/50 1056 | f 122/19 331/51 332/52 1057 | f 333/52 11/53 122/19 1058 | f 262/48 28/54 17/55 1059 | f 267/56 17/55 28/54 1060 | f 267/56 28/54 19/32 1061 | f 19/32 18/27 267/56 1062 | f 31/6 4/1 7/4 1063 | f 7/4 8/7 31/6 1064 | f 260/3 5/2 56/57 1065 | f 56/57 124/58 260/3 1066 | f 8/7 334/59 120/60 1067 | f 14/26 15/25 258/61 1068 | f 258/61 335/62 14/26 1069 | f 7/4 260/3 336/63 1070 | f 337/63 338/64 7/4 1071 | f 119/8 8/7 120/60 1072 | f 123/65 29/23 270/16 1073 | f 303/66 5/2 4/1 1074 | f 4/1 32/67 303/66 1075 | f 33/68 31/6 6/5 1076 | f 6/5 305/69 33/68 1077 | f 1/10 3/9 126/70 1078 | f 304/71 1/10 126/70 1079 | f 305/69 6/5 339/13 1080 | f 340/13 341/72 305/69 1081 | f 34/73 9/18 206/17 1082 | f 206/17 205/30 34/73 1083 | f 34/73 205/30 307/74 1084 | f 307/74 132/75 34/73 1085 | f 302/76 37/77 35/78 1086 | f 302/76 35/78 131/79 1087 | f 37/77 39/80 12/22 1088 | f 205/30 94/29 40/81 1089 | f 40/81 307/74 205/30 1090 | f 33/68 42/82 41/83 1091 | f 41/83 32/67 33/68 1092 | f 308/84 128/85 44/86 1093 | f 44/86 43/87 308/84 1094 | f 3/9 46/28 45/88 1095 | f 45/88 126/70 3/9 1096 | f 2/31 47/89 45/88 1097 | f 45/88 46/28 2/31 1098 | f 115/90 53/91 30/36 1099 | f 30/36 114/35 115/90 1100 | f 52/92 53/91 115/90 1101 | f 115/90 116/93 52/92 1102 | f 49/94 50/95 43/87 1103 | f 43/87 44/86 49/94 1104 | f 53/91 52/92 43/87 1105 | f 43/87 50/95 53/91 1106 | f 30/36 53/91 50/95 1107 | f 50/95 51/43 30/36 1108 | f 51/43 50/95 49/94 1109 | f 49/94 25/44 51/43 1110 | f 25/44 49/94 54/96 1111 | f 54/96 26/45 25/44 1112 | f 128/85 133/97 44/86 1113 | f 77/98 43/87 52/92 1114 | f 52/92 48/99 77/98 1115 | f 131/79 36/100 342/101 1116 | f 343/101 344/102 131/79 1117 | f 128/85 279/103 55/104 1118 | f 125/105 55/104 279/103 1119 | f 125/105 45/88 47/89 1120 | f 47/89 55/104 125/105 1121 | f 32/67 4/1 31/6 1122 | f 31/6 33/68 32/67 1123 | f 303/66 127/106 56/57 1124 | f 56/57 5/2 303/66 1125 | f 33/68 273/107 345/108 1126 | f 42/82 346/109 75/110 1127 | f 75/110 41/83 42/82 1128 | f 32/67 347/111 303/66 1129 | f 348/111 32/67 349/112 1130 | f 305/69 273/107 33/68 1131 | f 36/100 11/53 350/52 1132 | f 351/52 352/101 36/100 1133 | f 306/113 307/74 40/81 1134 | f 58/114 61/115 63/116 1135 | f 63/116 57/117 58/114 1136 | f 64/118 62/119 60/120 1137 | f 60/120 59/121 64/118 1138 | f 57/117 353/122 354/123 1139 | f 355/123 58/114 57/117 1140 | f 58/114 356/124 357/125 1141 | f 358/125 61/115 58/114 1142 | f 61/115 359/126 360/127 1143 | f 361/127 63/116 61/115 1144 | f 362/127 363/122 57/117 1145 | f 57/117 63/116 364/127 1146 | f 68/128 69/129 72/130 1147 | f 72/130 71/131 68/128 1148 | f 365/132 70/133 73/134 1149 | f 73/134 366/135 367/132 1150 | f 70/133 68/128 71/131 1151 | f 71/131 73/134 70/133 1152 | f 85/116 83/115 79/114 1153 | f 79/114 78/117 85/116 1154 | f 81/120 82/119 84/118 1155 | f 84/118 80/121 81/120 1156 | f 78/117 79/114 368/123 1157 | f 369/123 370/122 78/117 1158 | f 79/114 83/115 371/125 1159 | f 372/125 373/124 79/114 1160 | f 83/115 85/116 374/127 1161 | f 375/127 376/126 83/115 1162 | f 78/117 377/122 378/127 1163 | f 379/127 85/116 78/117 1164 | f 86/128 89/131 88/130 1165 | f 88/130 87/129 86/128 1166 | f 380/132 381/135 91/134 1167 | f 91/134 90/133 382/132 1168 | f 90/133 91/134 89/131 1169 | f 89/131 86/128 90/133 1170 | f 283/136 65/137 383/138 1171 | f 65/137 384/139 385/138 1172 | f 283/136 386/138 387/140 1173 | f 283/136 388/140 129/141 1174 | f 65/137 263/142 389/139 1175 | f 390/143 269/144 92/145 1176 | f 92/145 391/146 392/143 1177 | f 92/145 393/147 394/148 1178 | f 395/148 396/146 92/145 1179 | f 92/145 274/149 397/147 1180 | f 398/150 269/144 399/143 1181 | f 400/143 401/151 402/150 1182 | f 269/144 403/150 259/152 1183 | f 269/144 66/153 93/154 1184 | f 93/154 92/145 269/144 1185 | f 93/154 66/153 67/155 1186 | f 67/155 76/156 93/154 1187 | f 67/155 65/137 283/136 1188 | f 283/136 76/156 67/155 1189 | f 100/157 98/158 97/159 1190 | f 97/159 99/160 100/157 1191 | f 98/158 100/157 101/161 1192 | f 103/162 102/163 97/159 1193 | f 97/159 104/164 103/162 1194 | f 99/160 97/159 102/163 1195 | f 104/164 105/165 103/162 1196 | f 109/166 108/167 107/168 1197 | f 107/168 106/169 109/166 1198 | f 110/170 22/39 265/171 1199 | f 24/37 22/39 110/170 1200 | f 110/170 111/50 24/37 1201 | f 112/38 111/50 266/172 1202 | f 266/172 118/173 112/38 1203 | f 116/93 117/174 130/175 1204 | f 130/175 48/99 116/93 1205 | f 116/93 48/99 52/92 1206 | f 117/174 302/76 130/175 1207 | f 133/97 128/85 134/176 1208 | f 136/47 28/54 262/48 1209 | f 128/85 55/104 134/176 1210 | f 20/41 27/46 135/49 1211 | f 135/49 16/42 20/41 1212 | f 133/97 54/96 49/94 1213 | f 49/94 44/86 133/97 1214 | f 16/42 262/48 265/171 1215 | f 265/171 22/39 16/42 1216 | f 43/87 77/98 308/84 1217 | f 138/177 137/178 140/179 1218 | f 140/179 139/180 138/177 1219 | f 138/177 142/181 141/182 1220 | f 141/182 137/178 138/177 1221 | f 139/180 143/183 404/184 1222 | f 405/184 138/177 139/180 1223 | f 140/179 144/185 406/186 1224 | f 407/186 139/180 140/179 1225 | f 137/178 408/187 409/188 1226 | f 410/188 140/179 137/178 1227 | f 146/177 147/180 148/179 1228 | f 148/179 145/178 146/177 1229 | f 146/177 145/178 149/182 1230 | f 149/182 150/181 146/177 1231 | f 147/180 146/177 411/184 1232 | f 412/184 151/183 147/180 1233 | f 148/179 147/180 413/186 1234 | f 414/186 152/185 148/179 1235 | f 145/178 148/179 415/188 1236 | f 416/188 417/187 145/178 1237 | f 155/189 156/190 153/191 1238 | f 153/191 154/192 155/189 1239 | f 158/193 155/189 154/192 1240 | f 154/192 157/194 158/193 1241 | f 161/195 162/196 159/197 1242 | f 159/197 160/198 161/195 1243 | f 163/199 162/196 155/189 1244 | f 155/189 418/200 163/199 1245 | f 154/192 159/197 164/201 1246 | f 164/201 419/202 154/192 1247 | f 153/191 160/198 159/197 1248 | f 159/197 154/192 153/191 1249 | f 162/196 161/195 156/190 1250 | f 156/190 155/189 162/196 1251 | f 165/203 166/204 167/205 1252 | f 167/205 168/206 165/203 1253 | f 170/207 167/205 166/204 1254 | f 166/204 169/208 170/207 1255 | f 172/209 170/207 169/208 1256 | f 169/208 171/210 172/209 1257 | f 420/211 172/209 171/210 1258 | f 171/210 421/212 422/211 1259 | f 174/213 423/214 424/215 1260 | f 425/215 173/216 174/213 1261 | f 168/206 174/213 173/216 1262 | f 173/216 165/203 168/206 1263 | f 170/207 426/217 427/218 1264 | f 428/218 167/205 170/207 1265 | f 429/217 430/219 431/220 1266 | f 432/218 433/221 167/205 1267 | f 434/217 435/220 436/218 1268 | f 169/208 166/204 437/222 1269 | f 438/222 439/223 169/208 1270 | f 440/223 441/224 442/225 1271 | f 443/222 166/204 444/226 1272 | f 445/223 446/222 447/224 1273 | f 176/227 177/228 198/229 1274 | f 198/229 177/228 178/230 1275 | f 225/231 230/232 231/233 1276 | f 231/233 179/234 225/231 1277 | f 179/234 231/233 223/235 1278 | f 223/235 180/236 179/234 1279 | f 182/237 223/235 224/238 1280 | f 181/235 202/239 183/238 1281 | f 182/237 189/240 180/236 1282 | f 180/236 223/235 182/237 1283 | f 175/241 193/242 184/243 1284 | f 184/243 193/242 185/244 1285 | f 193/242 194/245 185/244 1286 | f 201/246 195/247 193/242 1287 | f 193/242 198/229 201/246 1288 | f 225/231 179/234 229/233 1289 | f 229/233 228/232 225/231 1290 | f 179/234 180/236 226/235 1291 | f 226/235 229/233 179/234 1292 | f 187/237 227/238 226/235 1293 | f 186/235 188/238 196/239 1294 | f 187/237 226/235 180/236 1295 | f 180/236 189/240 187/237 1296 | f 448/248 449/249 191/250 1297 | f 191/250 190/251 450/248 1298 | f 451/249 452/252 326/253 1299 | f 326/253 191/250 453/249 1300 | f 197/254 192/255 190/251 1301 | f 190/251 191/250 197/254 1302 | f 326/253 197/254 191/250 1303 | f 454/248 200/251 199/250 1304 | f 199/250 455/249 456/248 1305 | f 457/249 199/250 327/253 1306 | f 327/253 458/252 459/249 1307 | f 203/254 199/250 200/251 1308 | f 200/251 204/255 203/254 1309 | f 327/253 199/250 203/254 1310 | f 13/256 118/173 74/21 1311 | f 74/21 12/22 13/256 1312 | f 261/11 267/56 18/27 1313 | f 45/88 125/105 126/70 1314 | f 118/173 266/172 74/21 1315 | f 38/257 37/77 302/76 1316 | f 302/76 117/174 38/257 1317 | f 122/19 11/53 10/20 1318 | f 35/78 36/100 131/79 1319 | f 10/20 11/53 36/100 1320 | f 36/100 35/78 10/20 1321 | f 211/258 219/259 215/260 1322 | f 215/260 207/261 211/258 1323 | f 217/3 209/4 207/261 1324 | f 207/261 215/260 217/3 1325 | f 218/8 216/262 208/263 1326 | f 208/263 210/7 218/8 1327 | f 210/7 209/4 460/25 1328 | f 461/25 462/26 210/7 1329 | f 210/7 208/263 207/261 1330 | f 207/261 209/4 210/7 1331 | f 220/264 212/265 208/263 1332 | f 208/263 216/262 220/264 1333 | f 222/66 219/259 211/258 1334 | f 211/258 213/67 222/66 1335 | f 221/69 214/68 212/265 1336 | f 212/265 220/264 221/69 1337 | f 214/68 463/82 464/83 1338 | f 465/83 213/67 214/68 1339 | f 212/265 211/258 207/261 1340 | f 207/261 208/263 212/265 1341 | f 214/68 213/67 211/258 1342 | f 211/258 212/265 214/68 1343 | f 264/266 96/267 67/155 1344 | f 67/155 66/153 264/266 1345 | f 76/156 299/268 309/269 1346 | f 309/269 93/154 76/156 1347 | f 175/241 198/229 193/242 1348 | f 175/241 176/227 198/229 1349 | f 232/270 466/271 467/272 1350 | f 468/272 233/273 232/270 1351 | f 469/274 235/275 257/276 1352 | f 252/277 253/278 262/48 1353 | f 262/48 470/279 252/277 1354 | f 471/280 237/281 236/282 1355 | f 236/282 472/283 473/280 1356 | f 474/284 238/285 239/286 1357 | f 239/286 475/287 476/284 1358 | f 239/286 240/288 242/289 1359 | f 236/282 243/290 244/291 1360 | f 477/292 254/293 478/294 1361 | f 479/294 480/295 481/292 1362 | f 241/296 255/297 256/298 1363 | f 256/298 482/299 241/296 1364 | f 247/300 246/301 483/302 1365 | f 484/302 245/303 247/300 1366 | f 237/281 485/304 234/305 1367 | f 486/299 487/306 248/307 1368 | f 248/307 488/306 489/308 1369 | f 490/308 235/275 250/309 1370 | f 250/309 248/307 491/308 1371 | f 244/291 492/310 236/282 1372 | f 238/285 493/311 494/312 1373 | f 242/289 495/313 239/286 1374 | f 496/279 251/314 249/315 1375 | f 249/315 252/277 497/279 1376 | f 498/316 248/307 250/309 1377 | f 250/309 499/317 500/316 1378 | f 246/301 501/299 248/307 1379 | f 249/315 502/318 241/296 1380 | f 249/315 251/314 503/318 1381 | f 251/314 504/319 505/318 1382 | f 251/314 232/270 506/319 1383 | f 507/271 232/270 251/314 1384 | f 251/314 508/279 509/271 1385 | f 510/295 511/294 512/320 1386 | f 513/321 514/322 515/323 1387 | f 516/323 233/273 517/321 1388 | f 518/272 519/321 233/273 1389 | f 520/324 521/325 235/275 1390 | f 235/275 522/274 523/324 1391 | f 250/309 524/326 525/317 1392 | f 526/325 527/326 250/309 1393 | f 250/309 235/275 528/325 1394 | f 246/301 248/307 529/316 1395 | f 530/316 531/302 246/301 1396 | f 262/48 253/278 265/171 1397 | f 249/315 247/300 245/303 1398 | f 245/303 252/277 249/315 1399 | f 247/300 241/296 532/299 1400 | f 533/299 246/301 247/300 1401 | f 247/300 249/315 241/296 1402 | f 534/310 535/327 536/283 1403 | f 537/310 538/283 236/282 1404 | f 235/275 539/308 257/276 1405 | f 255/297 540/328 541/329 1406 | f 542/329 256/298 255/297 1407 | f 271/270 272/273 543/272 1408 | f 544/272 545/271 271/270 1409 | f 546/274 276/276 275/275 1410 | f 277/277 547/279 548/48 1411 | f 549/48 278/278 277/277 1412 | f 550/283 280/282 281/281 1413 | f 281/281 551/280 552/283 1414 | f 553/287 284/286 282/285 1415 | f 282/285 554/284 555/287 1416 | f 284/286 286/288 282/285 1417 | f 280/282 289/290 281/281 1418 | f 556/292 557/295 558/294 1419 | f 559/294 291/293 560/292 1420 | f 285/296 290/299 293/298 1421 | f 293/298 292/297 285/296 1422 | f 295/300 294/303 561/302 1423 | f 562/302 296/301 295/300 1424 | f 281/281 563/304 564/280 1425 | f 290/299 297/307 565/306 1426 | f 297/307 288/308 566/306 1427 | f 288/308 297/307 298/309 1428 | f 298/309 275/275 288/308 1429 | f 567/291 280/282 568/310 1430 | f 282/285 569/311 570/284 1431 | f 287/289 284/286 571/313 1432 | f 572/279 277/277 301/315 1433 | f 301/315 300/314 573/279 1434 | f 574/316 575/317 298/309 1435 | f 298/309 297/307 576/316 1436 | f 296/301 297/307 290/299 1437 | f 301/315 285/296 577/318 1438 | f 301/315 578/318 300/314 1439 | f 300/314 579/318 580/319 1440 | f 300/314 581/319 271/270 1441 | f 582/271 583/279 300/314 1442 | f 300/314 271/270 584/271 1443 | f 585/295 586/320 587/294 1444 | f 588/321 272/273 589/323 1445 | f 590/323 591/322 592/321 1446 | f 593/272 272/273 594/321 1447 | f 595/324 596/274 275/275 1448 | f 275/275 597/325 598/324 1449 | f 298/309 599/317 600/326 1450 | f 601/325 275/275 298/309 1451 | f 298/309 602/326 603/325 1452 | f 296/301 604/302 605/316 1453 | f 606/316 297/307 296/301 1454 | f 607/48 608/171 278/278 1455 | f 301/315 277/277 294/303 1456 | f 294/303 295/300 301/315 1457 | f 295/300 296/301 290/299 1458 | f 290/299 285/296 295/300 1459 | f 295/300 285/296 301/315 1460 | f 609/310 610/283 611/327 1461 | f 612/310 280/282 613/283 1462 | f 275/275 276/276 288/308 1463 | f 292/297 293/298 614/329 1464 | f 615/329 616/328 292/297 1465 | f 37/77 12/22 10/20 1466 | f 10/20 35/78 37/77 1467 | f 37/77 38/257 39/80 1468 | f 39/80 13/256 12/22 1469 | f 313/177 310/178 311/179 1470 | f 311/179 312/180 313/177 1471 | f 313/177 314/181 315/182 1472 | f 315/182 310/178 313/177 1473 | f 312/180 316/183 617/184 1474 | f 618/184 313/177 312/180 1475 | f 311/179 317/185 619/186 1476 | f 620/186 312/180 311/179 1477 | f 310/178 621/187 622/188 1478 | f 623/188 311/179 310/178 1479 | f 319/177 320/180 321/179 1480 | f 321/179 318/178 319/177 1481 | f 319/177 318/178 322/182 1482 | f 322/182 323/181 319/177 1483 | f 320/180 319/177 624/184 1484 | f 625/184 324/183 320/180 1485 | f 321/179 320/180 626/186 1486 | f 627/186 325/185 321/179 1487 | f 318/178 321/179 628/188 1488 | f 629/188 630/187 318/178 1489 | f 239/286 238/285 240/288 1490 | f 238/285 631/312 240/288 1491 | f 632/313 633/330 634/287 1492 | f 635/313 636/287 239/286 1493 | f 238/285 637/284 638/311 1494 | f 639/284 640/331 641/311 1495 | f 236/282 237/281 243/290 1496 | f 237/281 234/305 243/290 1497 | f 237/281 642/280 643/304 1498 | f 644/280 645/332 646/304 1499 | f 280/282 647/291 289/290 1500 | f 289/290 648/305 281/281 1501 | f 281/281 649/305 650/304 1502 | f 651/304 652/332 653/280 1503 | f 284/286 287/289 286/288 1504 | f 286/288 654/312 282/285 1505 | f 655/287 656/330 657/313 1506 | f 284/286 658/287 659/313 1507 | f 282/285 660/312 661/311 1508 | f 662/311 663/331 664/284 1509 | f 665/294 666/323 667/319 1510 | f 668/319 291/293 669/294 1511 | f 254/293 670/319 671/323 1512 | f 672/323 673/294 254/293 1513 | f 232/270 233/273 674/323 1514 | f 232/270 675/323 676/319 1515 | f 677/323 272/273 271/270 1516 | f 678/319 679/323 271/270 1517 | -------------------------------------------------------------------------------- /res/carD.tga: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexei-Kornienko/Racing-Game/a9f0291bc407ad8967ce9d2176c777e290b6c809/res/carD.tga -------------------------------------------------------------------------------- /res/floor.mtl: -------------------------------------------------------------------------------- 1 | # Blender3D MTL File: floor.blend 2 | # Material Count: 1 3 | newmtl 01___Floor 4 | Ns 10.0000 5 | Ni 1.5000 6 | d 1.0000 7 | Tr 0.0000 8 | Tf 1.0000 1.0000 1.0000 9 | illum 2 10 | Ka 0.5882 0.5882 0.5882 11 | Kd 0.5882 0.5882 0.5882 12 | Ks 0.0000 0.0000 0.0000 13 | Ke 0.0000 0.0000 0.0000 14 | map_Ka floor.tga 15 | map_Kd floor.tga -------------------------------------------------------------------------------- /res/floor.obj: -------------------------------------------------------------------------------- 1 | # Blender3D v249 OBJ File: floor.blend 2 | # www.blender3d.org 3 | mtllib floor.mtl 4 | v 10.000000 0.000000 -10.000000 5 | v 10.000000 0.000000 10.000000 6 | v -10.000000 0.000000 10.000000 7 | v -10.000000 0.000000 -10.000000 8 | vt 0.000000 0.000000 9 | vt 1.000000 0.000000 10 | vt 1.000000 1.000000 11 | vt 0.000000 1.000000 12 | usemtl 01___Floor 13 | s off 14 | f 1/1 4/2 3/3 2/4 -------------------------------------------------------------------------------- /res/floor.tga: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexei-Kornienko/Racing-Game/a9f0291bc407ad8967ce9d2176c777e290b6c809/res/floor.tga -------------------------------------------------------------------------------- /res/lose.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexei-Kornienko/Racing-Game/a9f0291bc407ad8967ce9d2176c777e290b6c809/res/lose.jpg -------------------------------------------------------------------------------- /res/skydome.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexei-Kornienko/Racing-Game/a9f0291bc407ad8967ce9d2176c777e290b6c809/res/skydome.jpg -------------------------------------------------------------------------------- /res/wheel.mtl: -------------------------------------------------------------------------------- 1 | # Blender3D MTL File: 2 | # Material Count: 1 3 | newmtl 01___Wheel 4 | Ns 10.0000 5 | Ni 1.5000 6 | d 1.0000 7 | Tr 0.0000 8 | Tf 1.0000 1.0000 1.0000 9 | illum 2 10 | Ka 0.5882 0.5882 0.5882 11 | Kd 0.5882 0.5882 0.5882 12 | Ks 0.0000 0.0000 0.0000 13 | Ke 0.0000 0.0000 0.0000 14 | map_Ka floor.tga 15 | map_Kd floor.tga -------------------------------------------------------------------------------- /res/wheel.obj: -------------------------------------------------------------------------------- 1 | # Blender3D v249 OBJ File: 2 | # www.blender3d.org 3 | mtllib wheel.mtl 4 | v -0.051829 -0.147000 0.000000 5 | v -0.051829 -0.127306 -0.073500 6 | v -0.051829 -0.073500 -0.127306 7 | v -0.051829 0.000000 -0.147000 8 | v -0.051829 0.073500 -0.127306 9 | v -0.051829 0.127305 -0.073500 10 | v -0.051829 0.147000 -0.000000 11 | v -0.051829 0.127305 0.073500 12 | v -0.051829 0.073500 0.127306 13 | v -0.051829 0.000000 0.147000 14 | v -0.051829 -0.073500 0.127306 15 | v -0.051829 -0.127306 0.073500 16 | v 0.051829 -0.147000 0.000000 17 | v 0.051829 -0.127306 0.073500 18 | v 0.051829 -0.073500 0.127306 19 | v 0.051829 0.000000 0.147000 20 | v 0.051829 0.073500 0.127306 21 | v 0.051829 0.127305 0.073500 22 | v 0.051829 0.147000 -0.000000 23 | v 0.051829 0.127305 -0.073500 24 | v 0.051829 0.073500 -0.127306 25 | v 0.051829 0.000000 -0.147000 26 | v 0.051829 -0.073500 -0.127306 27 | v 0.051829 -0.127306 -0.073500 28 | v -0.051829 -0.147000 0.000000 29 | v -0.051829 -0.127306 -0.073500 30 | v -0.051829 -0.147000 0.000000 31 | v -0.051829 -0.127306 -0.073500 32 | v -0.051829 -0.073500 -0.127306 33 | v 0.051829 -0.127306 -0.073500 34 | v -0.051829 -0.127306 -0.073500 35 | v -0.051829 -0.073500 -0.127306 36 | v -0.051829 0.000000 -0.147000 37 | v 0.051829 -0.073500 -0.127306 38 | v -0.051829 -0.073500 -0.127306 39 | v -0.051829 0.000000 -0.147000 40 | v -0.051829 0.073500 -0.127306 41 | v 0.051829 0.000000 -0.147000 42 | v -0.051829 0.000000 -0.147000 43 | v -0.051829 0.073500 -0.127306 44 | v -0.051829 0.127305 -0.073500 45 | v 0.051829 0.073500 -0.127306 46 | v -0.051829 0.073500 -0.127306 47 | v -0.051829 0.127305 -0.073500 48 | v -0.051829 0.147000 -0.000000 49 | v 0.051829 0.127305 -0.073500 50 | v -0.051829 0.127305 -0.073500 51 | v -0.051829 0.147000 -0.000000 52 | v -0.051829 0.127305 0.073500 53 | v 0.051829 0.147000 -0.000000 54 | v -0.051829 0.147000 -0.000000 55 | v -0.051829 0.127305 0.073500 56 | v -0.051829 0.073500 0.127306 57 | v 0.051829 0.127305 0.073500 58 | v -0.051829 0.127305 0.073500 59 | v -0.051829 0.073500 0.127306 60 | v -0.051829 0.000000 0.147000 61 | v 0.051829 0.073500 0.127306 62 | v -0.051829 0.073500 0.127306 63 | v -0.051829 0.000000 0.147000 64 | v -0.051829 -0.073500 0.127306 65 | v 0.051829 0.000000 0.147000 66 | v -0.051829 0.000000 0.147000 67 | v -0.051829 -0.073500 0.127306 68 | v -0.051829 -0.127306 0.073500 69 | v 0.051829 -0.073500 0.127306 70 | v -0.051829 -0.073500 0.127306 71 | v -0.051829 -0.127306 0.073500 72 | v -0.051829 -0.147000 0.000000 73 | v 0.051829 -0.147000 0.000000 74 | v 0.051829 -0.147000 0.000000 75 | v 0.051829 -0.127306 0.073500 76 | v -0.051829 -0.127306 0.073500 77 | v 0.051829 -0.147000 0.000000 78 | v 0.051829 -0.127306 -0.073500 79 | v 0.051829 -0.073500 -0.127306 80 | v 0.051829 -0.073500 -0.127306 81 | v 0.051829 0.000000 -0.147000 82 | v 0.051829 0.073500 -0.127306 83 | v 0.051829 -0.147000 0.000000 84 | v 0.051829 -0.073500 -0.127306 85 | v 0.051829 0.073500 -0.127306 86 | v 0.051829 0.073500 -0.127306 87 | v 0.051829 0.127305 -0.073500 88 | v 0.051829 0.147000 -0.000000 89 | v 0.051829 0.147000 -0.000000 90 | v 0.051829 0.127305 0.073500 91 | v 0.051829 0.073500 0.127306 92 | v 0.051829 0.073500 -0.127306 93 | v 0.051829 0.147000 -0.000000 94 | v 0.051829 0.073500 0.127306 95 | v 0.051829 -0.147000 0.000000 96 | v 0.051829 0.073500 -0.127306 97 | v 0.051829 0.073500 0.127306 98 | v 0.051829 0.073500 0.127306 99 | v 0.051829 0.000000 0.147000 100 | v 0.051829 -0.073500 0.127306 101 | v 0.051829 -0.147000 0.000000 102 | v 0.051829 0.073500 0.127306 103 | v 0.051829 -0.073500 0.127306 104 | v 0.051829 -0.127306 0.073500 105 | v 0.051829 -0.147000 0.000000 106 | v 0.051829 -0.073500 0.127306 107 | vt 0.434868 0.022884 108 | vt 0.375665 0.007020 109 | vt 0.316461 0.022884 110 | vt 0.273122 0.066224 111 | vt 0.257258 0.125427 112 | vt 0.273122 0.184630 113 | vt 0.316461 0.227970 114 | vt 0.375665 0.243833 115 | vt 0.434868 0.227970 116 | vt 0.478208 0.184630 117 | vt 0.494071 0.125427 118 | vt 0.478208 0.066223 119 | vt 0.890723 0.033433 120 | vt 0.890723 0.005954 121 | vt 0.928156 0.005954 122 | vt 0.928156 0.033433 123 | usemtl 01___Wheel 124 | s off 125 | f 11/1 10/2 9/3 126 | f 9/3 8/4 7/5 127 | f 7/5 6/6 5/7 128 | f 9/3 7/5 5/7 129 | f 5/7 4/8 3/9 130 | f 2/10 1/11 3/9 131 | f 3/9 1/11 5/7 132 | f 5/7 1/11 9/3 133 | f 9/3 1/11 11/1 134 | f 11/1 1/11 12/12 135 | f 25/13 26/14 24/15 136 | f 24/15 13/16 27/13 137 | f 28/13 29/14 23/15 138 | f 23/15 30/16 31/13 139 | f 32/13 33/14 22/15 140 | f 22/15 34/16 35/13 141 | f 36/13 37/14 21/15 142 | f 21/15 38/16 39/13 143 | f 40/13 41/14 20/15 144 | f 20/15 42/16 43/13 145 | f 44/13 45/14 19/15 146 | f 19/15 46/16 47/13 147 | f 48/13 49/14 18/15 148 | f 18/15 50/16 51/13 149 | f 52/13 53/14 17/15 150 | f 17/15 54/16 55/13 151 | f 56/13 57/14 16/15 152 | f 16/15 58/16 59/13 153 | f 60/13 61/14 15/15 154 | f 15/15 62/16 63/13 155 | f 64/13 65/14 14/15 156 | f 14/15 66/16 67/13 157 | f 68/13 69/14 70/15 158 | f 71/15 72/16 73/13 159 | f 74/11 75/10 76/9 160 | f 77/9 78/8 79/7 161 | f 80/11 81/9 82/7 162 | f 83/7 84/6 85/5 163 | f 86/5 87/4 88/3 164 | f 89/7 90/5 91/3 165 | f 92/11 93/7 94/3 166 | f 95/3 96/2 97/1 167 | f 98/11 99/3 100/1 168 | f 101/12 102/11 103/1 169 | -------------------------------------------------------------------------------- /res/wheel.tga: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexei-Kornienko/Racing-Game/a9f0291bc407ad8967ce9d2176c777e290b6c809/res/wheel.tga -------------------------------------------------------------------------------- /res/win.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alexei-Kornienko/Racing-Game/a9f0291bc407ad8967ce9d2176c777e290b6c809/res/win.jpg -------------------------------------------------------------------------------- /src/AI_Car.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * AI_Car.cpp 3 | * 4 | * Created on: Sep 5, 2011 5 | * Author: alex 6 | */ 7 | 8 | #include "AI_Car.h" 9 | #include "math.h" 10 | 11 | AI_Car::AI_Car(GameController * controller, Car * targetCar) : Car(controller) 12 | { 13 | this->targetCar = targetCar; 14 | vector3df position((rand()%20) - 10, 0, (rand()%20) - 10); 15 | // vector3df position(0, 0, -10); 16 | this->setPosition(position); 17 | } 18 | 19 | AI_Car::~AI_Car() 20 | { 21 | } 22 | 23 | void AI_Car::update(dFloat timeSpan) 24 | { 25 | vector3df targetVector = this->targetCar->getPosition() - this->getPosition(); 26 | vector3df direction = this->getDirection().getHorizontalAngle(); 27 | vector3df targetAngle = targetVector.getHorizontalAngle(); 28 | float resultAngle = targetAngle.Y - direction.Y; 29 | 30 | float rotation = this->getWheelsTurn() * this->getSpeed().getLength() * timeSpan*2; //FIXME 31 | 32 | resultAngle -= rotation; 33 | if(resultAngle > 10) { 34 | this->doTurnRight(); 35 | } else if(resultAngle < -10) { 36 | this->doTurnLeft(); 37 | } 38 | 39 | if(targetVector.getLength() > 2 && fabs(this->getWheelsTurn()) < 30) { 40 | this->doAccelerate(); 41 | } else { 42 | if(this->getSpeed().getLength() > -2) { 43 | this->doBrake(); 44 | } 45 | } 46 | Car::update(timeSpan); 47 | } 48 | 49 | void AI_Car::carDestroyed() 50 | { 51 | this->controller->aiDeath(this); 52 | } 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /src/AI_Car.h: -------------------------------------------------------------------------------- 1 | /* 2 | * AI_Car.h 3 | * 4 | * Created on: Sep 5, 2011 5 | * Author: alex 6 | */ 7 | 8 | #ifndef AI_CAR_H_ 9 | #define AI_CAR_H_ 10 | 11 | #include "Car.h" 12 | 13 | class AI_Car : public Car { 14 | public: 15 | AI_Car(GameController * controller, Car * targetCar); 16 | virtual ~AI_Car(); 17 | 18 | void update(dFloat timeSpan); 19 | 20 | protected: 21 | void carDestroyed(); 22 | private: 23 | Car * targetCar; 24 | }; 25 | 26 | #endif /* AI_CAR_H_ */ 27 | -------------------------------------------------------------------------------- /src/BaseCar.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * BaseCar.cpp 3 | * 4 | * Created on: Sep 9, 2011 5 | * Author: alex 6 | */ 7 | 8 | #include "BaseCar.h" 9 | 10 | 11 | BaseCar::BaseCar(int tiresCount, NewtonWorld * world, GameController * controller) 12 | { 13 | this->tiresCount = tiresCount; 14 | this->tiresC = 0; 15 | this->tires = new SuspensionTire[this->tiresCount]; 16 | this->world = world; 17 | this->controller = controller; 18 | } 19 | 20 | BaseCar::~BaseCar() 21 | { 22 | for(int i=0; i < this->getTiresCount(); i++) { 23 | delete this->getTire(i); 24 | } 25 | delete[] this->tires; 26 | this->tires = 0; 27 | this->tiresCount = 0; 28 | } 29 | 30 | dFloat BaseCar::getTireMassLoad(const SuspensionTire & sTire) 31 | { 32 | return this->mass / this->getTiresCount(); 33 | } 34 | 35 | dVector BaseCar::applyTireFriction(SuspensionTire & sTire) 36 | { 37 | dMatrix localCoord = sTire.t->getLocalCoordinates(); 38 | dVector friction(0,0,0,0); 39 | dVector carForceSum = this->speed.Scale(this->getTireMassLoad(sTire)); 40 | dFloat frontForce = carForceSum % localCoord.m_front; 41 | 42 | dFloat rollintFriction = 0.002/sTire.t->getRaduis() * sTire.tireLoad; 43 | if(frontForce > 0) { 44 | friction -= localCoord.m_front.Scale(rollintFriction); 45 | } else { 46 | friction += localCoord.m_front.Scale(rollintFriction); 47 | } 48 | 49 | dFloat sideForce = carForceSum % localCoord.m_right; 50 | dFloat slideFriction = 0.5 * sTire.tireLoad * 2; 51 | if(dAbs(sideForce) > 0.01) { 52 | dVector sF = localCoord.m_right.Scale(slideFriction); 53 | if(sideForce > 0) { 54 | friction -= sF; 55 | } else { 56 | friction += sF; 57 | } 58 | } 59 | return friction; 60 | } 61 | 62 | dVector BaseCar::applyOmegaFriction(SuspensionTire & sTire) 63 | { 64 | dVector resultTorque(0,0,0,0); 65 | 66 | dFloat expectedAnglularSpeed = 0; 67 | if(sTire.t->getTurnAngle() != 0) { 68 | dFloat turnRaduis = this->distanceBetweenFrontAndRearTire / sin(sTire.t->getTurnAngle() * DEGTORAD); 69 | expectedAnglularSpeed = (this->speed % this->localCoordinates.m_front) / turnRaduis; 70 | } 71 | dFloat actualAngularSpeed = this->angularSpeed % this->localCoordinates.m_up; 72 | dFloat speedDiff = actualAngularSpeed - expectedAnglularSpeed; 73 | if(dAbs(speedDiff) > 0.1) { 74 | dFloat slideFriction = 0.5 * sTire.tireLoad; 75 | if(speedDiff > 0) { 76 | resultTorque -= this->localCoordinates.m_up.Scale(slideFriction); 77 | } else { 78 | resultTorque += this->localCoordinates.m_up.Scale(slideFriction); 79 | } 80 | 81 | } 82 | return resultTorque; 83 | } 84 | 85 | dVector BaseCar::applyTireForce(const Tire * t) 86 | { 87 | return t->getLocalCoordinates().m_front.Scale(t->getTorque()*10); 88 | } 89 | 90 | dVector BaseCar::applyTireLoad(SuspensionTire & sTire, const TireRayCast & tireCast, const dFloat timeSpan) 91 | { 92 | sTire.t->setSuspension(sTire.suspensionLenght * tireCast.getHitDistance()); 93 | sTire.tireLoad = NewtonCalculateSpringDamperAcceleration( 94 | timeSpan, 95 | sTire.suspensionSpring, 96 | -((1 - tireCast.getHitDistance()) / 2), 97 | sTire.suspensionDamper, 98 | sTire.tireSpeed % this->localCoordinates.m_up 99 | ); 100 | sTire.tireLoad *= this->getTireMassLoad(sTire); 101 | dVector tireForce = this->localCoordinates.m_up.Scale(sTire.tireLoad); 102 | return tireForce; 103 | } 104 | 105 | void BaseCar::getUpdatedGlobalState() 106 | { 107 | NewtonBodyGetMatrix(this->carBody, &this->globalCoordinates[0][0]); 108 | 109 | // get the car instantaneous linear and angular velocity and force in the local space of the car 110 | NewtonBodyGetVelocity(this->carBody, &this->speed[0]); 111 | this->speed = this->globalCoordinates.UnrotateVector(this->speed); 112 | 113 | NewtonBodyGetOmega(this->carBody, &this->angularSpeed[0]); 114 | this->angularSpeed = this->globalCoordinates.UnrotateVector(this->angularSpeed); 115 | 116 | NewtonBodyGetForce(this->carBody, &this->currentBodyForce[0]); 117 | this->currentBodyForce = this->globalCoordinates.UnrotateVector(this->currentBodyForce); 118 | 119 | NewtonBodyGetTorque(this->carBody, &this->currentBodyTorque[0]); 120 | this->currentBodyTorque = this->globalCoordinates.UnrotateVector(this->currentBodyTorque); 121 | } 122 | 123 | void BaseCar::updateTireSpin(SuspensionTire & sTire, const float timeSpan) 124 | { 125 | sTire.t->setAngularSpeed(sTire.tireSpeed % sTire.t->getLocalCoordinates().m_front / sTire.t->getRaduis()); 126 | dFloat spinAngle = dMod( 127 | sTire.t->getSpinAngle() + sTire.t->getAngularSpeed() * timeSpan, 128 | M_PI * 2 129 | ); 130 | sTire.t->setSpinAngle(spinAngle); 131 | } 132 | 133 | void BaseCar::update(const dFloat timeSpan) 134 | { 135 | this->getUpdatedGlobalState(); 136 | 137 | dVector resultForce(0,0,0,0); 138 | dVector resultTorque(0,0,0,0); 139 | for(int i=0, c=this->getTiresCount(); i < c; i++) { 140 | dVector tireForce(0,0,0,0); 141 | dVector tireTorque(0,0,0,0); 142 | SuspensionTire sTire = this->tires[i]; 143 | sTire.tireSpeed = this->speed + this->angularSpeed * sTire.t->getLocalPos(); 144 | TireRayCast tireCast(this, this->globalCoordinates, sTire.t, sTire.suspensionLenght); 145 | tireCast.castRay(); 146 | if(tireCast.hasContact()) { 147 | tireForce += this->applyTireLoad(sTire, tireCast, timeSpan); 148 | tireForce += this->applyTireForce(sTire.t); 149 | tireForce += this->applyTireFriction(sTire); 150 | 151 | tireTorque += tireForce * (this->massCenter - sTire.t->getLocalPos()); 152 | tireTorque += this->applyOmegaFriction(sTire); 153 | if (dAbs(this->speed % this->localCoordinates.m_front)!=0.0f && sTire.t->getTurnAngle() != 0) { 154 | tireTorque -= this->localCoordinates.m_right.Scale(sTire.t->getTurnAngle()*15) * this->speed; 155 | } 156 | resultForce += tireForce; 157 | resultTorque += tireTorque; 158 | this->updateTireSpin(sTire, timeSpan); 159 | } else { 160 | sTire.t->setSuspension(sTire.suspensionLenght); 161 | } 162 | 163 | sTire.t->setTorque(0); 164 | } 165 | 166 | resultForce = this->globalCoordinates.RotateVector(resultForce); 167 | resultTorque = this->globalCoordinates.RotateVector(resultTorque); 168 | resultForce += this->gravity; 169 | NewtonBodySetForce(this->carBody, &resultForce[0]); 170 | NewtonBodySetTorque(this->carBody, &resultTorque[0]); 171 | } 172 | 173 | 174 | 175 | dVector BaseCar::getSpeed() const 176 | { 177 | return this->speed; 178 | } 179 | 180 | 181 | 182 | int BaseCar::getTiresCount() const 183 | { 184 | return this->tiresCount; 185 | } 186 | 187 | 188 | 189 | Tire *BaseCar::getTire(const int index) const 190 | { 191 | return this->tires[index].t; 192 | } 193 | 194 | 195 | 196 | void BaseCar::addSuspensionTire(Tire *t, const dFloat suspensionLenght, const dFloat suspensionSpring, const dFloat suspensionDamper) 197 | { 198 | for(int i=0; itiresC; i++) { 199 | dFloat distance1 = this->getTire(i)->getLocalPos() % this->getLocalCoordinates().m_front; 200 | dFloat distance2 = t->getLocalPos() % this->getLocalCoordinates().m_front; 201 | dFloat distance = dAbs(distance1 - distance2); 202 | if(distance > distance1 && distance > this->distanceBetweenFrontAndRearTire) { 203 | this->distanceBetweenFrontAndRearTire = distance; 204 | } 205 | } 206 | if(this->tiresC < this->tiresCount) { 207 | t->setLocalCoordinates(this->getLocalCoordinates()); 208 | this->tires[this->tiresC].t = t; 209 | this->tires[this->tiresC].suspensionLenght = suspensionLenght; 210 | this->tires[this->tiresC].suspensionSpring = suspensionSpring; 211 | this->tires[this->tiresC].suspensionDamper = suspensionDamper; 212 | this->tiresC++; 213 | } 214 | } 215 | 216 | NewtonBody *BaseCar::getCarBody() const 217 | { 218 | return carBody; 219 | } 220 | 221 | void BaseCar::setCarBodyAndGravity(NewtonBody *carBody, const dVector &gravity) 222 | { 223 | this->carBody = carBody; 224 | dFloat Ixx; 225 | dFloat Iyy; 226 | dFloat Izz; 227 | NewtonBodyGetMassMatrix(this->carBody, &this->mass, &Ixx, &Iyy, &Izz); 228 | NewtonBodyGetCentreOfMass(this->carBody, &this->massCenter[0]); 229 | this->gravity = dVector( 230 | gravity.m_x * this->mass, 231 | gravity.m_y * this->mass, 232 | gravity.m_z * this->mass, 233 | 1.0f 234 | ); 235 | } 236 | 237 | dMatrix BaseCar::getLocalCoordinates() const 238 | { 239 | return localCoordinates; 240 | } 241 | 242 | void BaseCar::setLocalCoordinates(dMatrix localCoordinates) 243 | { 244 | this->localCoordinates = localCoordinates; 245 | } 246 | 247 | NewtonWorld *BaseCar::getWorld() const 248 | { 249 | return world; 250 | } 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | -------------------------------------------------------------------------------- /src/BaseCar.h: -------------------------------------------------------------------------------- 1 | /* 2 | * BaseCar.h 3 | * 4 | * Created on: Sep 9, 2011 5 | * Author: alex 6 | */ 7 | 8 | #ifndef BASECAR_H_ 9 | #define BASECAR_H_ 10 | 11 | #include "racingGame.h" 12 | #include "Tire.h" 13 | #include "TireRayCast.h" 14 | #include "GameStateController.h" 15 | 16 | class TireRayCast; 17 | class GameController; 18 | 19 | class BaseCar { 20 | public: 21 | BaseCar(int tiresCount, NewtonWorld * world, GameController * controller); 22 | virtual ~BaseCar(); 23 | 24 | virtual void update(const float timeSpan); 25 | void addSuspensionTire(Tire *t, const float suspensionLenght, const float suspensionSpring, const float suspensionDamper); 26 | dVector getSpeed() const; 27 | int getTiresCount() const; 28 | Tire *getTire(const int index) const; 29 | NewtonBody *getCarBody() const; 30 | NewtonWorld *getWorld() const; 31 | dMatrix getLocalCoordinates() const; 32 | void setLocalCoordinates(dMatrix localCoordinates); 33 | protected: 34 | void setCarBodyAndGravity(NewtonBody *carBody, const dVector & gravity); 35 | private: 36 | GameController *controller; 37 | dVector speed; 38 | dVector angularSpeed; 39 | dVector massCenter; 40 | int tiresCount; 41 | int tiresC; 42 | float distanceBetweenFrontAndRearTire; 43 | struct SuspensionTire 44 | { 45 | Tire *t; 46 | float suspensionLenght; 47 | float suspensionSpring; 48 | float suspensionDamper; 49 | dVector tireSpeed; 50 | float tireLoad; 51 | } *tires; 52 | NewtonWorld *world; 53 | NewtonBody *carBody; 54 | float mass; 55 | dVector gravity; 56 | dMatrix localCoordinates; 57 | dMatrix globalCoordinates; 58 | dVector currentBodyForce; 59 | dVector currentBodyTorque; 60 | void updateTireSpin(SuspensionTire & sTire, const float timeSpan); 61 | void getUpdatedGlobalState(); 62 | dVector applyTireLoad(SuspensionTire & sTire, const TireRayCast & tireCast, const float timeSpan); 63 | dVector applyTireForce(const Tire *t); 64 | dVector applyOmegaFriction(SuspensionTire & sTire); 65 | dVector applyTireFriction(SuspensionTire & sTire); 66 | float getTireMassLoad(const SuspensionTire & sTire); 67 | }; 68 | 69 | #endif /* BASECAR_H_ */ 70 | -------------------------------------------------------------------------------- /src/Car.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Car.cpp 3 | * 4 | * Created on: Aug 11, 2011 5 | * Author: alex 6 | */ 7 | 8 | #include "Car.h" 9 | 10 | void applyCarMoveForce(const NewtonBody* body, dFloat timestep, int threadIndex) { 11 | Car* car = (Car*) NewtonBodyGetUserData(body); 12 | if (car) { 13 | car->update(timestep); 14 | } 15 | } 16 | 17 | void applyCarTransform (const NewtonBody* body, const dFloat* matrix, int threadIndex) { 18 | Car* car = (Car*) NewtonBodyGetUserData(body); 19 | if (car) 20 | { 21 | matrix4 transform; 22 | transform.setM(matrix); 23 | car->carNode->setPosition(transform.getTranslation()); 24 | vector3df rotation = transform.getRotationDegrees(); 25 | car->carNode->setRotation(rotation); 26 | } 27 | } 28 | 29 | void applyCarCollisionForce(const NewtonJoint* contact, dFloat timestep, int threadIndex) { 30 | void * userData1 = NewtonBodyGetUserData(NewtonJointGetBody0(contact)); 31 | void * userData2 = NewtonBodyGetUserData(NewtonJointGetBody1(contact)); 32 | if(userData1 == 0 || userData2 == 0) { 33 | return; 34 | } 35 | Car * car1 = (Car *)userData1; 36 | Car * car2 = (Car *)userData2; 37 | NewtonJoint * carContact = (NewtonJoint *) NewtonContactJointGetFirstContact(contact); 38 | do { 39 | dFloat collisionSpeed = NewtonMaterialGetContactNormalSpeed( 40 | NewtonContactGetMaterial(carContact) 41 | ); 42 | collisionSpeed = dAbs(collisionSpeed); 43 | 44 | if(collisionSpeed > 3) { 45 | car1->applyDamagePoints(collisionSpeed); 46 | car2->applyDamagePoints(collisionSpeed); 47 | break; 48 | } 49 | carContact = (NewtonJoint *) NewtonContactJointGetNextContact(contact, carContact); 50 | } while(carContact); 51 | } 52 | 53 | 54 | 55 | Car::Car(GameController * controller) : BaseCar(WHEELS_COUNT, controller->getWorld(), controller) 56 | { 57 | this->controller = controller; 58 | this->initModels(this->controller->getSmgr()); 59 | this->initPhysics(); 60 | this->init(); 61 | this->initVenichlePhysics(this->controller->getWorld()); 62 | 63 | } 64 | 65 | void Car::init() 66 | { 67 | this->helthPoints = 100; 68 | this->damaged = false; 69 | } 70 | 71 | void Car::initModels(ISceneManager * smgr) { 72 | this->carMeshClean = smgr->getMesh("res/carC.obj"); 73 | this->carMeshDamaged = smgr->getMesh("res/carD.obj"); 74 | this->carNode = smgr->addAnimatedMeshSceneNode( 75 | this->carMeshClean, 76 | 0, 77 | -1, 78 | vector3df(0,1,0) 79 | ); 80 | // this->carNode->setRotation(vector3df(0,180,0)); 81 | 82 | this->wheelMesh = smgr->getMesh("res/wheel.obj"); 83 | 84 | float wheelPosY = -0.2235f; 85 | // float wheelPosY = -0.4f; 86 | 87 | this->wheels[0] = smgr->addAnimatedMeshSceneNode( 88 | this->wheelMesh, 89 | this->carNode, 90 | -1, 91 | vector3df(0.3065f, wheelPosY, 0.619f) 92 | ); 93 | this->wheels[1] = smgr->addAnimatedMeshSceneNode( 94 | this->wheelMesh, 95 | this->carNode, 96 | -1, 97 | vector3df(-0.3065f, wheelPosY, 0.619f) 98 | ); 99 | this->wheels[2] = smgr->addAnimatedMeshSceneNode( 100 | this->wheelMesh, 101 | this->carNode, 102 | -1, 103 | vector3df(0.3065f, wheelPosY, -0.55f) 104 | ); 105 | this->wheels[3] = smgr->addAnimatedMeshSceneNode( 106 | this->wheelMesh, 107 | this->carNode, 108 | -1, 109 | vector3df(-0.3065f, wheelPosY, -0.55f) 110 | ); 111 | } 112 | 113 | void Car::initPhysics() { 114 | 115 | NewtonWorld * nWorld = this->controller->getWorld(); 116 | NewtonCollision* collision; 117 | float mass = 900.0f; 118 | 119 | vector3df v1 = this->carNode->getBoundingBox().MinEdge; 120 | vector3df v2 = this->carNode->getBoundingBox().MaxEdge; 121 | 122 | dVector minBox(v1.X, v1.Y, v1.Z); 123 | dVector maxBox(v2.X, v2.Y, v2.Z); 124 | 125 | dVector size(maxBox - minBox); 126 | dVector origin((maxBox + minBox).Scale(0.5f)); 127 | 128 | size.m_w = 1.0f; 129 | origin.m_w = 1.0f; 130 | 131 | dMatrix offset(GetIdentityMatrix()); 132 | offset.m_posit = origin; 133 | 134 | collision = NewtonCreateBox(nWorld, size.m_x, size.m_y, size.m_z, 0, &offset[0][0]); 135 | 136 | dVector inertia; 137 | 138 | matrix4 m = this->carNode->getRelativeTransformation(); 139 | NewtonConvexHullModifierSetMatrix(collision, m.pointer()); 140 | NewtonBody * body = NewtonCreateBody(nWorld, collision, m.pointer()); 141 | NewtonBodySetUserData(body, this); 142 | NewtonConvexCollisionCalculateInertialMatrix(collision, &inertia[0], &origin[0]); 143 | NewtonBodySetMassMatrix(body, mass, mass * inertia.m_x, mass * inertia.m_y, mass * inertia.m_z); 144 | NewtonBodySetCentreOfMass(body, &origin[0]); 145 | NewtonBodySetForceAndTorqueCallback(body, applyCarMoveForce); 146 | NewtonBodySetTransformCallback(body, applyCarTransform); 147 | int matId = NewtonMaterialGetDefaultGroupID(nWorld); 148 | NewtonMaterialSetCollisionCallback(nWorld, matId, matId, this, 0, applyCarCollisionForce); 149 | 150 | NewtonReleaseCollision(nWorld, collision); 151 | this->setCarBodyAndGravity(body, dVector(0,-10,0,0)); 152 | this->setLocalCoordinates(this->createChassisMatrix()); 153 | } 154 | 155 | 156 | void Car::initVenichlePhysics(NewtonWorld *nWorld) 157 | { 158 | float wheelMass = 30.0f; 159 | float wheelRaduis = 0.147f; 160 | float wheelWidth = 0.104f; 161 | float suspensionLenght = wheelRaduis; 162 | float suspensionSpring = 20.0f; 163 | // float suspensionSpring = 50.0f; 164 | float suspensionDamper = 5.0f; 165 | 166 | for(int i=0; iwheels[i]->getPosition().X,this->wheels[i]->getPosition().Y,this->wheels[i]->getPosition().Z, 1.0f), 169 | wheelMass, 170 | wheelRaduis, 171 | wheelWidth, 172 | this->wheels[i] 173 | ); 174 | this->addSuspensionTire( 175 | t, 176 | suspensionLenght, 177 | suspensionSpring, 178 | suspensionDamper 179 | ); 180 | } 181 | } 182 | 183 | vector3df Car::getSpeed() const 184 | { 185 | dVector v = BaseCar::getSpeed(); 186 | return vector3df(v.m_x, v.m_y, v.m_z) ; 187 | } 188 | 189 | void Car::applyDamagePoints(int helthPoints) 190 | { 191 | this->helthPoints -= helthPoints; 192 | printf("Car HP: %d\n", this->helthPoints); 193 | if(this->helthPoints < 0) { 194 | this->carDestroyed(); 195 | } else if(this->helthPoints < 50 && !this->damaged) { 196 | this->carNode->setMesh(this->carMeshDamaged); 197 | } 198 | } 199 | 200 | void Car::updateWheelsPos() 201 | { 202 | for(int i=0, c=this->getTiresCount(); igetTire(i)->getLocalPos(); 204 | vector3df pos(tPos.m_x, tPos.m_y, tPos.m_z); 205 | this->wheels[i]->setPosition(pos); 206 | vector3df rot = this->wheels[i]->getRotation(); 207 | rot.Y = this->getTire(i)->getTurnAngle(); 208 | rot.X = this->getTire(i)->getSpinAngle() * RADTODEG; 209 | this->wheels[i]->setRotation(rot); 210 | } 211 | } 212 | 213 | void Car::update(dFloat timeSpan) 214 | { 215 | if(this->getPosition().Y < -5) { 216 | this->carDestroyed(); 217 | return; 218 | } 219 | BaseCar::update(timeSpan); 220 | this->updateWheelsPos(); 221 | } 222 | 223 | vector3df Car::getPosition() const 224 | { 225 | return this->carNode->getPosition(); 226 | } 227 | 228 | void Car::setPosition(const vector3df pos) 229 | { 230 | this->carNode->setPosition(pos); 231 | NewtonBodySetMatrix(this->getCarBody(), this->carNode->getRelativeTransformation().pointer()); 232 | } 233 | 234 | void Car::doAccelerate() // TODO fix parameters 235 | { 236 | this->getTire(2)->setTorque(400); 237 | this->getTire(3)->setTorque(400); 238 | } 239 | 240 | void Car::doReverse() // TODO fix parameters 241 | { 242 | this->getTire(2)->setTorque(-400); 243 | this->getTire(3)->setTorque(-400); 244 | } 245 | 246 | void Car::doBrake() // TODO fix parameters 247 | { 248 | int count = this->getTiresCount(); 249 | for(int i=0; igetTire(i)->setBrake(1000); 251 | } 252 | } 253 | 254 | void Car::doTurnLeft() 255 | { 256 | this->getTire(0)->setSteerDirection(-1); 257 | this->getTire(1)->setSteerDirection(-1); 258 | } 259 | 260 | void Car::doTurnRight() 261 | { 262 | this->getTire(0)->setSteerDirection(1); 263 | this->getTire(1)->setSteerDirection(1); 264 | } 265 | 266 | void Car::centerWheels() { 267 | this->getTire(0)->setSteerDirection(0); 268 | this->getTire(1)->setSteerDirection(0); 269 | } 270 | 271 | vector3df Car::getDirection() const 272 | { 273 | return this->carNode->getRelativeTransformation().getRotationDegrees(); 274 | } 275 | 276 | float Car::getWheelsTurn() const 277 | { 278 | return this->wheels[0]->getRotation().Y; 279 | } 280 | 281 | dMatrix Car::createChassisMatrix() 282 | { 283 | // set the vehicle local coordinate system 284 | dMatrix chassisMatrix; 285 | chassisMatrix.m_front = dVector(0.0f, 0.0f, 1.0f, 0.0); 286 | chassisMatrix.m_up = dVector(0.0f, 1.0f, 0.0f, 0.0f); 287 | chassisMatrix.m_right = chassisMatrix.m_up * chassisMatrix.m_front; 288 | NewtonBodyGetCentreOfMass(this->getCarBody(), &chassisMatrix.m_posit[0]); 289 | return chassisMatrix; 290 | } 291 | 292 | Car::~Car() 293 | { 294 | NewtonBodySetForceAndTorqueCallback(this->getCarBody(), 0); 295 | NewtonBodySetTransformCallback(this->getCarBody(), 0); 296 | NewtonBodySetUserData(this->getCarBody(), 0); 297 | NewtonDestroyBody(this->controller->getWorld(), this->getCarBody()); 298 | this->carNode->remove(); 299 | } 300 | 301 | int Car::getHelthPoints() const 302 | { 303 | return helthPoints; 304 | } 305 | -------------------------------------------------------------------------------- /src/Car.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Car.h 3 | * 4 | * Created on: 23.07.2011 5 | * Author: Alex 6 | */ 7 | 8 | #ifndef CAR_H_ 9 | #define CAR_H_ 10 | 11 | #include "racingGame.h" 12 | //#include "GameStateController.h" 13 | 14 | #include "BaseCar.h" 15 | 16 | #define WHEELS_COUNT 4 17 | 18 | class BaseCar; 19 | class GameController; 20 | 21 | 22 | void applyCarMoveForce(const NewtonBody* body, dFloat timestep, int threadIndex); 23 | void applyCarTransform (const NewtonBody* body, const dFloat* matrix, int threadIndex); 24 | void applyCarCollisionForce(const NewtonJoint* contact, dFloat timestep, int threadIndex); 25 | 26 | class Car : private BaseCar { 27 | friend void applyCarMoveForce(const NewtonBody* body, float timestep, int threadIndex); 28 | friend void applyCarTransform(const NewtonBody *body, const float *matrix, int threadIndex); 29 | friend void applyCarCollisionForce(const NewtonJoint* contact, float timestep, int threadIndex); 30 | public: 31 | Car(GameController *controller); 32 | virtual ~Car(); 33 | virtual void update(float timeSpan); 34 | int getHelthPoints() const; 35 | vector3df getPosition() const; 36 | vector3df getDirection() const; 37 | void setPosition(const vector3df pos); 38 | float getWheelsTurn() const; 39 | vector3df getSpeed() const; 40 | 41 | protected: 42 | GameController *controller; 43 | IAnimatedMeshSceneNode *carNode; 44 | IAnimatedMeshSceneNode *wheels[WHEELS_COUNT]; 45 | 46 | void doAccelerate(); 47 | void doReverse(); 48 | void doBrake(); 49 | void doTurnLeft(); 50 | void doTurnRight(); 51 | void centerWheels(); 52 | virtual void carDestroyed() = 0; 53 | 54 | void applyDamagePoints(int helthPoints); 55 | private: 56 | void init(); 57 | void initModels(ISceneManager*); 58 | void initPhysics(); 59 | void initVenichlePhysics(NewtonWorld*); 60 | 61 | dMatrix createChassisMatrix(); 62 | 63 | void updateWheelsPos(); 64 | 65 | 66 | 67 | int helthPoints; 68 | bool damaged; 69 | 70 | IAnimatedMesh * carMeshClean; 71 | IAnimatedMesh * carMeshDamaged; 72 | IAnimatedMesh * wheelMesh; 73 | }; 74 | #endif /* CAR_H_ */ 75 | -------------------------------------------------------------------------------- /src/GameStateController.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * GameStateController.cpp 3 | * 4 | * Created on: 22.07.2011 5 | * Author: Alex 6 | */ 7 | 8 | #include "GameStateController.h" 9 | #include "PlayerCar.h" 10 | #include "AI_Car.h" 11 | 12 | bool GameController::OnEvent(const SEvent & event) 13 | { 14 | if (event.EventType == irr::EET_KEY_INPUT_EVENT) { 15 | this->keysDown[event.KeyInput.Key] = event.KeyInput.PressedDown; 16 | 17 | if(!this->paused && (this->isKeyDown(KEY_KEY_P) || this->isKeyDown(KEY_ESCAPE))) { 18 | this->pause(); 19 | return true; 20 | } 21 | } 22 | 23 | if(event.EventType == EET_GUI_EVENT && event.GUIEvent.EventType == EGET_BUTTON_CLICKED) { 24 | s32 id = event.GUIEvent.Caller->getID(); 25 | switch(id) { 26 | case MENU_NEW_GAME: 27 | this->newGame(); 28 | break; 29 | case MENU_OPTIONS: 30 | break; 31 | case MENU_EXIT: 32 | this->exit(); 33 | break; 34 | case PMENU_RESUME: 35 | this->pause(); 36 | break; 37 | case PMENU_MAIN: 38 | this->paused = false; 39 | this->mainMenu(); 40 | break; 41 | default: 42 | return false; 43 | } 44 | return true; 45 | } 46 | 47 | return false; 48 | } 49 | 50 | // This is used to check whether a key is being held down 51 | bool GameController::isKeyDown(EKEY_CODE keyCode) const 52 | { 53 | return this->keysDown[keyCode]; 54 | } 55 | 56 | void GameController::exit() 57 | { 58 | if(!this->timer->isStopped()) { 59 | this->timer->stop(); 60 | } 61 | this->device->closeDevice(); 62 | } 63 | 64 | GameController::GameController(IrrlichtDevice *device) 65 | { 66 | this->device = 0; 67 | this->driver = 0; 68 | this->guienv = 0; 69 | this->smgr = 0; 70 | this->timer = 0; 71 | this->lastUpdate = 0; 72 | this->lastFPS = -1; 73 | 74 | this->car = 0; 75 | this->nWorld = 0; 76 | 77 | this->updateInterval = CONTROLLER_UPDATE_INTERVAL; 78 | 79 | this->paused = false; 80 | 81 | for (u32 i = 0; i < KEY_KEY_CODES_COUNT; ++i) 82 | this->keysDown[i] = false; 83 | 84 | this->init(device); 85 | } 86 | 87 | void GameController::pause() 88 | { 89 | dimension2du size = this->driver->getScreenSize(); 90 | 91 | if(this->paused) { // Resume 92 | this->paused = false; 93 | device->getCursorControl()->setVisible(false); 94 | device->getCursorControl()->setPosition( 95 | (s32)(size.Width>>1), 96 | (s32)(size.Height>>1) 97 | ); 98 | if(this->car) { 99 | // FIXME possible issue 100 | ((PlayerCar*)this->car)->getCamera()->setInputReceiverEnabled(true); 101 | } 102 | 103 | this->guienv->clear(); 104 | } else { // Pause (show pause menu) 105 | this->paused = true; 106 | if(this->car) { 107 | // FIXME possible issue 108 | ((PlayerCar*)this->car)->getCamera()->setInputReceiverEnabled(false); 109 | } 110 | 111 | device->getCursorControl()->setVisible(true); 112 | this->guienv->clear(); 113 | 114 | s32 left = size.Width * 0.2f; 115 | s32 top = size.Height * 0.20f; 116 | size.Width *= 0.6f; 117 | size.Height *= 0.2f; 118 | 119 | position2di pos(left,top); 120 | 121 | this->guienv->addButton( 122 | rect(pos, size), 123 | 0, 124 | PMENU_RESUME, 125 | L"Resume", 126 | L"Resume game" 127 | ); 128 | pos.Y += size.Height + (size.Height>>1); 129 | this->guienv->addButton( 130 | rect(pos, size), 131 | 0, 132 | PMENU_MAIN, 133 | L"Main menu", 134 | L"Return to main menu" 135 | ); 136 | } 137 | } 138 | 139 | GameController::~GameController() 140 | { 141 | this->releaseCars(); 142 | } 143 | 144 | void GameController::init(IrrlichtDevice *device) 145 | { 146 | this->device = device; 147 | this->driver = device->getVideoDriver(); 148 | SColorf color(1,1,1); 149 | this->driver->setAmbientLight(color); 150 | 151 | this->smgr = device->getSceneManager(); 152 | this->guienv = device->getGUIEnvironment(); 153 | this->timer = device->getTimer(); 154 | 155 | this->device->setEventReceiver(this); 156 | this->guienv->setUserEventReceiver(this); 157 | } 158 | 159 | ISceneManager *GameController::getSmgr() const 160 | { 161 | return smgr; 162 | } 163 | 164 | void GameController::update(u32 timeSpan) 165 | { 166 | if(this->paused) { 167 | return; 168 | } 169 | if(this->nWorld) { 170 | NewtonUpdate(this->nWorld,1.0f/this->driver->getFPS()); 171 | } 172 | } 173 | 174 | void GameController::updateFPS() 175 | { 176 | u32 fps = this->driver->getFPS(); 177 | if(this->lastFPS != fps){ 178 | stringw title(L"Flatout :) - FPS:"); 179 | title += stringw(fps); 180 | this->device->setWindowCaption(title.c_str()); 181 | this->lastFPS = fps; 182 | } 183 | } 184 | 185 | void GameController::mainLoop() 186 | { 187 | this->timer->start(); 188 | while(this->device->run()) { 189 | u32 timeSpan = this->timer->getTime() - this->lastUpdate; 190 | 191 | this->device->sleep(20); // FIXME 192 | 193 | this->driver->beginScene(true, true, SColor(255,100,101,140)); 194 | this->smgr->drawAll(); 195 | this->guienv->drawAll(); 196 | this->driver->endScene(); 197 | 198 | this->update(timeSpan); 199 | 200 | this->updateFPS(); 201 | 202 | this->lastUpdate = this->timer->getTime(); 203 | } 204 | } 205 | 206 | void GameController::createGameLevel() 207 | { 208 | IAnimatedMesh *floor = this->smgr->getMesh("res/floor.obj"); 209 | float scale = 1.0; 210 | vector3df floorScale(scale, scale, scale); 211 | IAnimatedMeshSceneNode *floorNode = this->smgr->addAnimatedMeshSceneNode( 212 | floor, 0, 0, 213 | vector3df(0, 0, 0), 214 | vector3df(0, 0, 0), 215 | floorScale 216 | ); 217 | 218 | vector3df v1 = floorNode->getBoundingBox().MinEdge * scale; 219 | vector3df v2 = floorNode->getBoundingBox().MaxEdge * scale; 220 | dVector minBox(v1.X, v1.Y, v1.Z); 221 | dVector maxBox(v2.X, v2.Y, v2.Z); 222 | dVector size(maxBox - minBox); 223 | dVector origin((maxBox + minBox).Scale(0.5f)); 224 | float floorPlaneWidth = 0.1f; 225 | size.m_y = floorPlaneWidth; 226 | size.m_w = 1.0f; 227 | origin.m_w = 1.0f; 228 | dMatrix offset(GetIdentityMatrix()); 229 | offset.m_posit = origin; 230 | NewtonCollision *collision = NewtonCreateBox(this->nWorld, size.m_x, size.m_y, size.m_z, 0, &offset[0][0]); 231 | this->createFloorBody(collision, floorNode, origin); 232 | 233 | IAnimatedMeshSceneNode *wall1 = this->smgr->addAnimatedMeshSceneNode( 234 | floor, 0, 0, 235 | vector3df(0, 3, 18), 236 | vector3df(-20, 0, 0), 237 | floorScale 238 | ); 239 | this->createFloorBody(collision, wall1, origin); 240 | 241 | IAnimatedMeshSceneNode *wall2 = this->smgr->addAnimatedMeshSceneNode( 242 | floor, 0, 0, 243 | vector3df(0, 3, -18), 244 | vector3df(20, 0, 0), 245 | floorScale 246 | ); 247 | this->createFloorBody(collision, wall2, origin); 248 | 249 | IAnimatedMeshSceneNode *wall3 = this->smgr->addAnimatedMeshSceneNode( 250 | floor, 0, 0, 251 | vector3df(18, 3, 0), 252 | vector3df(0, 0, 20), 253 | floorScale 254 | ); 255 | this->createFloorBody(collision, wall3, origin); 256 | 257 | IAnimatedMeshSceneNode *wall4 = this->smgr->addAnimatedMeshSceneNode( 258 | floor, 0, 0, 259 | vector3df(-18, 3, 0), 260 | vector3df(0, 0, -20), 261 | floorScale 262 | ); 263 | this->createFloorBody(collision, wall4, origin); 264 | } 265 | 266 | void GameController::newGame() 267 | { 268 | if(this->car) { 269 | this->releaseCars(); 270 | } 271 | this->clearScene(); 272 | 273 | this->timer->setTime(0); 274 | 275 | this->smgr->addLightSceneNode(0, vector3df(10,10,10), SColorf(1,1,1),10); 276 | this->smgr->addLightSceneNode(0, vector3df(10,10,-10), SColorf(1,1,1),10); 277 | this->smgr->addLightSceneNode(0, vector3df(-10,10,10), SColorf(1,1,1),10); 278 | this->smgr->addLightSceneNode(0, vector3df(-10,10,-10), SColorf(1,1,1),10); 279 | 280 | device->getCursorControl()->setVisible(false); 281 | 282 | this->smgr->addSkyDomeSceneNode( 283 | this->driver->getTexture("res/skydome.jpg"), 284 | 16, 285 | 8, 286 | 0.75f, 287 | 1.2f, 288 | 90.f 289 | ); 290 | 291 | this->nWorld = NewtonCreate(); 292 | // set a fixed world size 293 | dVector minSize (-500.0f, -10.f, -500.0f); 294 | dVector maxSize ( 500.0f, 30.0f, 500.0f); 295 | NewtonSetWorldSize(this->nWorld, &minSize[0], &maxSize[0]); 296 | 297 | // configure the Newton world to use iterative solve mode 0 298 | // this is the most efficient but the less accurate mode 299 | NewtonSetSolverModel(this->nWorld, 1); 300 | 301 | NewtonSetFrictionModel(this->nWorld, 1); 302 | this->createGameLevel(); // TODO create normal level 303 | this->car = new PlayerCar(this); 304 | for(u32 i =0; iaiCars.push_back(new AI_Car(this, this->car)); 306 | } 307 | 308 | device->getCursorControl()->setVisible(false); 309 | this->paused = false; 310 | } 311 | 312 | void GameController::gameOver(bool win) 313 | { 314 | this->paused = true; 315 | if(this->car) { 316 | // FIXME possible issue 317 | ((PlayerCar*)this->car)->getCamera()->setInputReceiverEnabled(false); 318 | } 319 | // this->releaseCars(); 320 | dimension2du size = this->driver->getScreenSize(); 321 | device->getCursorControl()->setVisible(true); 322 | this->guienv->clear(); 323 | 324 | ITexture * texture; 325 | if(win) { 326 | texture = this->driver->getTexture("res/win.jpg"); 327 | } else { 328 | texture = this->driver->getTexture("res/lose.jpg"); 329 | } 330 | 331 | this->guienv->addImage( 332 | texture, 333 | position2di(size.Width * 0.2f, size.Height * 0.10f) 334 | ); 335 | 336 | s32 left = size.Width * 0.2f; 337 | s32 top = size.Height * 0.40f; 338 | size.Width *= 0.6f; 339 | size.Height *= 0.2f; 340 | 341 | position2di pos(left,top); 342 | 343 | this->guienv->addButton( 344 | rect(pos, size), 345 | 0, 346 | MENU_NEW_GAME, 347 | L"New Game", 348 | L"Start a new game" 349 | ); 350 | pos.Y += size.Height + (size.Height>>1); 351 | this->guienv->addButton( 352 | rect(pos, size), 353 | 0, 354 | PMENU_MAIN, 355 | L"Main menu", 356 | L"Return to main menu" 357 | ); 358 | } 359 | 360 | void GameController::aiDeath(Car *car) 361 | { 362 | for(int i=0, c=this->aiCars.size(); iaiCars[i]) { 364 | delete this->aiCars[i]; 365 | this->aiCars[i] = 0; 366 | this->aiCars.erase(i); 367 | break; 368 | } 369 | } 370 | if(this->aiCars.size() == 0) { 371 | this->gameOver(true); 372 | } 373 | } 374 | 375 | void GameController::createFloorBody(NewtonCollision *collision, IAnimatedMeshSceneNode *floorNode, dVector origin) 376 | { 377 | NewtonBody *floorBody = NewtonCreateBody(nWorld, collision, floorNode->getRelativeTransformation().pointer()); 378 | NewtonBodySetUserData(floorBody, 0); 379 | dVector inertia; 380 | NewtonConvexCollisionCalculateInertialMatrix(collision, &inertia[0], &origin[0]); 381 | NewtonBodySetMassMatrix(floorBody, 0, 0, 0, 0); 382 | NewtonBodySetCentreOfMass(floorBody, &origin[0]); 383 | } 384 | 385 | void GameController::clearScene() 386 | { 387 | this->smgr->clear(); 388 | this->guienv->clear(); 389 | } 390 | 391 | void GameController::mainMenu() 392 | { 393 | this->releaseCars(); 394 | this->clearScene(); 395 | 396 | dimension2du size = this->driver->getScreenSize(); 397 | 398 | s32 left = size.Width * 0.2f; 399 | s32 top = size.Height * 0.10f; 400 | size.Width *= 0.6f; 401 | size.Height *= 0.2f; 402 | 403 | position2di pos(left,top); 404 | 405 | this->guienv->addButton( 406 | rect(pos, size), 407 | 0, 408 | MENU_NEW_GAME, 409 | L"New Game", 410 | L"Start new game" 411 | ); 412 | pos.Y += size.Height + (size.Height>>1); 413 | this->guienv->addButton( 414 | rect(pos, size), 415 | 0, 416 | MENU_OPTIONS, 417 | L"Options", 418 | L"Not implemented!" 419 | ); 420 | 421 | pos.Y += size.Height + (size.Height>>1); 422 | this->guienv->addButton( 423 | rect(pos, size), 424 | 0, 425 | MENU_EXIT, 426 | L"Exit", 427 | L"Exit the game..." 428 | ); 429 | } 430 | 431 | NewtonWorld *GameController::getWorld() const 432 | { 433 | return nWorld; 434 | } 435 | 436 | void GameController::releaseCars() 437 | { 438 | if(this->nWorld) { 439 | NewtonWorldCriticalSectionLock(this->nWorld); 440 | } 441 | if(this->car) { 442 | delete this->car; 443 | this->car = 0; 444 | } 445 | u32 size = this->aiCars.size(); 446 | for(u32 i =0; iaiCars[i]) { 448 | delete this->aiCars[i]; 449 | this->aiCars[i] = 0; 450 | } 451 | } 452 | this->aiCars.clear(); 453 | if(this->nWorld) { 454 | NewtonDestroyAllBodies(this->nWorld); 455 | NewtonWorldCriticalSectionUnlock(this->nWorld); 456 | NewtonDestroy(this->nWorld); 457 | this->nWorld = 0; 458 | } 459 | } 460 | 461 | 462 | 463 | -------------------------------------------------------------------------------- /src/GameStateController.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Controller.h 3 | * 4 | * Created on: 21.07.2011 5 | * Author: Alex 6 | */ 7 | 8 | #ifndef CONTROLLER_H_ 9 | #define CONTROLLER_H_ 10 | 11 | #define AI_COUNT 4 12 | 13 | #define MENU_NEW_GAME 1 14 | #define MENU_OPTIONS 2 15 | #define MENU_EXIT 3 16 | 17 | #define PMENU_RESUME 4 18 | #define PMENU_MAIN 5 19 | 20 | #include "racingGame.h" 21 | 22 | class Car; 23 | class GameController : public IEventReceiver { 24 | public: 25 | GameController(IrrlichtDevice *device); 26 | virtual ~GameController(); 27 | 28 | void init(IrrlichtDevice * device); 29 | 30 | void mainLoop(); 31 | 32 | bool OnEvent(const SEvent& event); 33 | bool isKeyDown(EKEY_CODE keyCode) const; 34 | // Game states 35 | void newGame(); 36 | void mainMenu(); 37 | void pause(); 38 | void exit(); 39 | void gameOver(bool win); 40 | 41 | void aiDeath(Car * car); 42 | ISceneManager *getSmgr() const; 43 | NewtonWorld *getWorld() const; 44 | 45 | protected: 46 | u32 lastUpdate; 47 | u32 updateInterval; 48 | 49 | void update(u32 timeSpan); 50 | private: 51 | IrrlichtDevice * device; 52 | IVideoDriver * driver; 53 | ISceneManager * smgr; 54 | IGUIEnvironment * guienv; 55 | void releaseCars(); 56 | void createFloorBody(NewtonCollision *collision, IAnimatedMeshSceneNode *floorNode, dVector origin); 57 | void createGameLevel(); 58 | void updateFPS(); 59 | void clearScene(); 60 | 61 | ITimer * timer; 62 | bool paused; 63 | 64 | NewtonWorld * nWorld; 65 | Car * car; 66 | array aiCars; 67 | 68 | // We use this array to store the current state of each key 69 | bool keysDown[KEY_KEY_CODES_COUNT]; 70 | 71 | u32 lastFPS; 72 | 73 | }; 74 | 75 | #endif /* CONTROLLER_H_ */ 76 | -------------------------------------------------------------------------------- /src/Makefile.am: -------------------------------------------------------------------------------- 1 | # what flags you want to pass to the C compiler & linker 2 | ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS} 3 | AM_CFLAGS = -O3 -g -Wall -c -fmessage-length=0 4 | # LDFLAGS = 5 | # 6 | # # this lists the binaries to produce, the (non-PHONY, binary) targets in 7 | myexecdir = $(abs_top_builddir)/@PACKAGE@ 8 | myexec_PROGRAMS = RacingGame 9 | RacingGame_SOURCES = \ 10 | main.cpp \ 11 | GameStateController.cpp \ 12 | AI_Car.cpp \ 13 | BaseCar.cpp \ 14 | Car.cpp \ 15 | PlayerCar.cpp \ 16 | Tire.cpp \ 17 | TireRayCast.cpp 18 | 19 | -------------------------------------------------------------------------------- /src/PlayerCar.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * PlayerCar.cpp 3 | * 4 | * Created on: Sep 5, 2011 5 | * Author: alex 6 | */ 7 | 8 | #include "PlayerCar.h" 9 | 10 | PlayerCar::PlayerCar(GameController *controller) : Car(controller) 11 | { 12 | // add camera 13 | this->camera = this->controller->getSmgr()->addCameraSceneNode( 14 | this->carNode, 15 | vector3df(0,5,-5), 16 | vector3df(0,0,0) 17 | ); 18 | // this->camera = this->controller->getSmgr()->addCameraSceneNodeFPS( 19 | // 0,100.0f,0.01f 20 | // ); 21 | this->camera->setPosition(core::vector3df(0,5,-7)); 22 | this->camera->setFarValue(100.0f); 23 | } 24 | 25 | PlayerCar::~PlayerCar() 26 | { 27 | } 28 | 29 | void PlayerCar::update(dFloat timeSpan) 30 | { 31 | if(this->controller->isKeyDown(KEY_KEY_W)) { 32 | this->doAccelerate(); 33 | } 34 | if(this->controller->isKeyDown(KEY_KEY_S)) { 35 | this->doReverse(); 36 | } 37 | if(this->controller->isKeyDown(KEY_SPACE)) { 38 | this->doBrake(); 39 | } 40 | if(this->controller->isKeyDown(KEY_KEY_A)) { 41 | this->doTurnLeft(); 42 | } else if(this->controller->isKeyDown(KEY_KEY_D)) { 43 | this->doTurnRight(); 44 | } else { 45 | this->centerWheels(); 46 | } 47 | Car::update(timeSpan); 48 | this->camera->setTarget(this->carNode->getPosition()); 49 | } 50 | 51 | ICameraSceneNode *PlayerCar::getCamera() const 52 | { 53 | return camera; 54 | } 55 | 56 | void PlayerCar::carDestroyed() 57 | { 58 | this->controller->gameOver(false); 59 | } 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /src/PlayerCar.h: -------------------------------------------------------------------------------- 1 | /* 2 | * PlayerCar.h 3 | * 4 | * Created on: Sep 5, 2011 5 | * Author: alex 6 | */ 7 | 8 | #ifndef PLAYERCAR_H_ 9 | #define PLAYERCAR_H_ 10 | 11 | #include "Car.h" 12 | 13 | class GameController; 14 | class PlayerCar : public Car { 15 | public: 16 | PlayerCar(GameController * controller); 17 | virtual ~PlayerCar(); 18 | void update(dFloat timeSpan); 19 | 20 | ICameraSceneNode *getCamera() const; 21 | 22 | protected: 23 | void carDestroyed(); 24 | private: 25 | ICameraSceneNode * camera; 26 | }; 27 | 28 | #endif /* PLAYERCAR_H_ */ 29 | -------------------------------------------------------------------------------- /src/Tire.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Tire.cpp 3 | * 4 | * Created on: Sep 9, 2011 5 | * Author: alex 6 | */ 7 | 8 | #include "Tire.h" 9 | 10 | Tire::Tire(dVector localPos, dFloat tireMass, dFloat tireRaduis, dFloat tireWidth, void *userData) 11 | { 12 | this->harpoint = localPos; 13 | this->localPos = localPos; 14 | this->mass = tireMass; 15 | this->raduis = tireRaduis; 16 | this->width = tireWidth; 17 | this->userData = userData; 18 | this->turnAngle = 0; 19 | this->spinAngle = 0; 20 | } 21 | 22 | Tire::~Tire() 23 | { 24 | 25 | } 26 | 27 | void Tire::setLocalCoordinates(dMatrix localCoordinates) 28 | { 29 | this->localCoordinates = localCoordinates; 30 | this->localCoordinates.m_posit = dVector(0, 0, 0, 0); 31 | } 32 | 33 | void Tire::setSuspension(const dFloat value) 34 | { 35 | this->localPos = this->getHarpoint() - this->getLocalCoordinates().m_up.Scale(value); 36 | } 37 | 38 | dFloat Tire::getAngularSpeed() const 39 | { 40 | return angularSpeed; 41 | } 42 | 43 | dFloat Tire::getSpinAngle() const 44 | { 45 | return spinAngle; 46 | } 47 | 48 | void Tire::setAngularSpeed(dFloat angularSpeed) 49 | { 50 | this->angularSpeed = angularSpeed; 51 | } 52 | 53 | void Tire::setSpinAngle(dFloat spinAngle) 54 | { 55 | this->spinAngle = spinAngle; 56 | } 57 | 58 | dFloat Tire::generateTiresSteerAngle (dFloat value) const 59 | { 60 | dFloat steerAngle = this->turnAngle; 61 | dFloat m_maxSteerAngle = 40.0f ; 62 | dFloat m_maxSteerRate = 3; 63 | if ( value > 0.0f ) { 64 | steerAngle += m_maxSteerRate; 65 | if ( steerAngle > m_maxSteerAngle ) { 66 | steerAngle = m_maxSteerAngle; 67 | } 68 | } else if ( value < 0.0f ) { 69 | steerAngle -= m_maxSteerRate; 70 | if ( steerAngle < -m_maxSteerAngle ) { 71 | steerAngle = -m_maxSteerAngle; 72 | } 73 | } else { 74 | if ( steerAngle > 0.0f ) { 75 | steerAngle -= m_maxSteerRate; 76 | if ( steerAngle < 0.0f ) { 77 | steerAngle = 0.0f; 78 | } 79 | } else if ( steerAngle < 0.0f ) { 80 | steerAngle += m_maxSteerRate; 81 | if ( steerAngle > 0.0f ) { 82 | steerAngle = 0.0f; 83 | } 84 | } 85 | } 86 | 87 | return steerAngle; 88 | } 89 | 90 | void Tire::setTorque(const dFloat torque) 91 | { 92 | this->torque = torque; 93 | } 94 | 95 | void Tire::setBrake(const dFloat torque) 96 | { 97 | this->brakeTorque = -torque; 98 | } 99 | 100 | void Tire::setSteerDirection(const dFloat direction) 101 | { 102 | this->turnAngle = this->generateTiresSteerAngle(direction); 103 | } 104 | 105 | void Tire::setLocalPos(dVector localPos) 106 | { 107 | this->localPos = localPos; 108 | } 109 | 110 | dVector Tire::getHarpoint() const 111 | { 112 | return this->harpoint; 113 | } 114 | 115 | dMatrix Tire::getLocalCoordinates() const 116 | { 117 | return localCoordinates; 118 | } 119 | 120 | dVector Tire::getLocalPos() const 121 | { 122 | return localPos; 123 | } 124 | 125 | dFloat Tire::getMass() const 126 | { 127 | return mass; 128 | } 129 | 130 | dFloat Tire::getRaduis() const 131 | { 132 | return raduis; 133 | } 134 | 135 | dFloat Tire::getTorque() const 136 | { 137 | return torque; 138 | } 139 | 140 | dFloat Tire::getTurnAngle() const 141 | { 142 | return turnAngle; 143 | } 144 | 145 | void *Tire::getUserData() const 146 | { 147 | return userData; 148 | } 149 | 150 | dFloat Tire::getWidth() const 151 | { 152 | return width; 153 | } 154 | -------------------------------------------------------------------------------- /src/Tire.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Tire.h 3 | * 4 | * Created on: Sep 9, 2011 5 | * Author: alex 6 | */ 7 | 8 | #ifndef TIRE_H_ 9 | #define TIRE_H_ 10 | 11 | #include "racingGame.h" 12 | 13 | class Tire { 14 | public: 15 | Tire(dVector localPos, dFloat tireMass, dFloat tireRaduis, dFloat tireWidth, void *userData); 16 | ~Tire(); 17 | void setTorque(const dFloat torque); 18 | void setBrake(const dFloat torque); 19 | void setSteerDirection(const dFloat direction); 20 | dFloat getMass() const; 21 | dFloat getRaduis() const; 22 | dFloat getTorque() const; 23 | dFloat getTurnAngle() const; 24 | void *getUserData() const; 25 | dFloat getWidth() const; 26 | dVector getLocalPos() const; 27 | void setLocalPos(dVector localPos); 28 | dVector getHarpoint() const; 29 | void setSuspension(const dFloat value); 30 | dMatrix getLocalCoordinates() const; 31 | void setLocalCoordinates(dMatrix localCoordinates); 32 | dFloat getAngularSpeed() const; 33 | dFloat getSpinAngle() const; 34 | void setAngularSpeed(dFloat angularSpeed); 35 | void setSpinAngle(dFloat spinAngle); 36 | protected: 37 | private: 38 | dMatrix localCoordinates; // local coordinate system of the tire 39 | dVector harpoint; // initial position of the tire (without suspension) 40 | dVector localPos; // local position of the tire (with suspension) 41 | dFloat turnAngle; 42 | dFloat angularSpeed; 43 | dFloat spinAngle; 44 | dFloat mass; 45 | dFloat raduis; 46 | dFloat width; 47 | dFloat torque; 48 | dFloat brakeTorque; 49 | void *userData; 50 | dFloat generateTiresSteerAngle(const dFloat value) const; 51 | 52 | }; 53 | 54 | #endif /* TIRE_H_ */ 55 | -------------------------------------------------------------------------------- /src/TireRayCast.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * TireRayCast.cpp 3 | * 4 | * Created on: Sep 10, 2011 5 | * Author: alex 6 | */ 7 | 8 | #include "TireRayCast.h" 9 | 10 | TireRayCast::TireRayCast(BaseCar *car, const dMatrix & globalSpace, Tire *tire, dFloat suspensionLenght) 11 | { 12 | this->car = car; 13 | this->globalSpace = globalSpace; 14 | this->tire = tire; 15 | this->suspensionLenght = suspensionLenght; 16 | this->hitDistance = 1; 17 | } 18 | 19 | TireRayCast::~TireRayCast() 20 | { 21 | } 22 | 23 | void TireRayCast::castRay() 24 | { 25 | dVector tirePosGlobal = this->globalSpace.TransformVector(this->tire->getHarpoint()); 26 | dVector sVectorDown = this->car->getLocalCoordinates().m_up.Scale( 27 | (this->suspensionLenght + this->tire->getRaduis()) 28 | ); 29 | dVector sVectorUp = this->car->getLocalCoordinates().m_up.Scale( 30 | (this->suspensionLenght - this->tire->getRaduis()) 31 | ); 32 | sVectorUp = this->globalSpace.RotateVector(sVectorUp); 33 | sVectorDown = this->globalSpace.RotateVector(sVectorDown); 34 | dVector tireRayDirection = tirePosGlobal - sVectorDown; 35 | tirePosGlobal += sVectorUp; 36 | NewtonWorldRayCast( 37 | this->car->getWorld(), 38 | &tirePosGlobal[0], 39 | &tireRayDirection[0], 40 | TireRayCast::filterCallback, 41 | this, 42 | TireRayCast::preFilterCallback 43 | ); 44 | } 45 | 46 | dFloat TireRayCast::filterCallback(const NewtonBody *body, const dFloat *hitNormal, int collisionID, void *userData, dFloat intersectParam) 47 | { 48 | TireRayCast * me = (TireRayCast *)userData; 49 | if (intersectParam < me->hitDistance) { 50 | me->hitDistance = intersectParam; 51 | me->hitNormal = dVector(hitNormal); 52 | } 53 | return me->hitDistance; 54 | } 55 | 56 | unsigned TireRayCast::preFilterCallback(const NewtonBody *body, const NewtonCollision *collision, void *userData) 57 | { 58 | TireRayCast * me = (TireRayCast *)userData; 59 | return me->car->getCarBody() != body; 60 | } 61 | 62 | bool TireRayCast::hasContact() 63 | { 64 | return this->hitDistance < 1; 65 | } 66 | 67 | dFloat TireRayCast::getHitDistance() const 68 | { 69 | return (this->hitDistance*2 - 1); 70 | } 71 | 72 | dVector TireRayCast::getHitNormal() const 73 | { 74 | return this->hitNormal; 75 | } 76 | 77 | Tire *TireRayCast::getTire() const 78 | { 79 | return this->tire; 80 | } 81 | -------------------------------------------------------------------------------- /src/TireRayCast.h: -------------------------------------------------------------------------------- 1 | /* 2 | * TireRayCast.h 3 | * 4 | * Created on: Sep 10, 2011 5 | * Author: alex 6 | */ 7 | 8 | #ifndef TIRERAYCAST_H_ 9 | #define TIRERAYCAST_H_ 10 | 11 | #include "racingGame.h" 12 | #include "BaseCar.h" 13 | 14 | class BaseCar; 15 | 16 | class TireRayCast { 17 | public: 18 | TireRayCast(BaseCar *carBody, const dMatrix & globalSpace, Tire *tire, dFloat suspensionLenght); 19 | ~TireRayCast(); 20 | 21 | void castRay(); 22 | 23 | static dFloat filterCallback(const NewtonBody *body, const dFloat *hitNormal, int collisionID, void *userData, dFloat intersectParam); 24 | static unsigned preFilterCallback(const NewtonBody *body, const NewtonCollision *collision, void *userData); 25 | bool hasContact(); 26 | dFloat getHitDistance() const; 27 | dVector getHitNormal() const; 28 | Tire *getTire() const; 29 | private: 30 | BaseCar *car; 31 | dMatrix globalSpace; 32 | Tire *tire; 33 | dFloat suspensionLenght; 34 | dVector hitNormal; 35 | dFloat hitDistance; 36 | }; 37 | 38 | #endif /* TIRERAYCAST_H_ */ 39 | -------------------------------------------------------------------------------- /src/main.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * main.cpp 3 | * 4 | * Created on: 21.07.2011 5 | * Author: Alex 6 | */ 7 | 8 | #include "racingGame.h" 9 | #include "GameStateController.h" 10 | 11 | IrrlichtDevice * initWindow(video::E_DRIVER_TYPE type) { 12 | IrrlichtDevice * device = createDevice( 13 | type, 14 | dimension2d(800, 600), 15 | 16, 16 | false, 17 | false, 18 | false, 19 | 0 20 | ); 21 | 22 | if (!device) { 23 | printf("Failed to create device"); 24 | return 0; 25 | } 26 | return device; 27 | } 28 | 29 | int main() { 30 | video::E_DRIVER_TYPE type = video::EDT_OPENGL; 31 | IrrlichtDevice * device = initWindow(type); 32 | if(!device) { 33 | return 1; 34 | } 35 | 36 | GameController controller(device); 37 | controller.mainMenu(); 38 | controller.mainLoop(); 39 | 40 | device->drop(); 41 | return 0; 42 | } 43 | -------------------------------------------------------------------------------- /src/racingGame.h: -------------------------------------------------------------------------------- 1 | /* 2 | * racingGame.h 3 | * 4 | * Created on: 21.07.2011 5 | * Author: Alex 6 | */ 7 | 8 | #ifndef RACINGGAME_H_ 9 | #define RACINGGAME_H_ 10 | 11 | #define CONTROLLER_UPDATE_INTERVAL 200 12 | 13 | #include 14 | 15 | #include "irrlicht.h" 16 | #include "Newton.h" 17 | #include "dMathDefines.h" 18 | #include "dVector.h" 19 | #include "dMatrix.h" 20 | #include "dQuaternion.h" 21 | 22 | using namespace irr; 23 | using namespace core; 24 | using namespace scene; 25 | using namespace video; 26 | using namespace io; 27 | using namespace gui; 28 | 29 | #endif /* RACINGGAME_H_ */ 30 | --------------------------------------------------------------------------------