├── .editorconfig ├── .gitignore ├── Makefile ├── README.md ├── debug.sh ├── engine ├── audio.c ├── audio.h ├── data │ ├── aabb.h │ ├── camera.h │ ├── light.h │ ├── material.c │ ├── material.h │ ├── mesh.c │ ├── mesh.h │ ├── object.c │ ├── object.h │ ├── ray.h │ └── vertex.h ├── debug.c ├── debug.h ├── dict.c ├── dict.h ├── engine.h ├── factory.c ├── factory.h ├── glad.c ├── importer.c ├── importer.h ├── linmath.h ├── physics.c ├── physics.h ├── render_list.c ├── render_list.h ├── renderer.c ├── renderer.h ├── shader.c ├── shader.h ├── shaders │ ├── debug.fs │ ├── debug.vs │ ├── normal.fs │ ├── normal.vs │ ├── ripple.fs │ ├── shadow.fs │ ├── shadow.vs │ ├── simple.fs │ ├── simple.vs │ ├── skybox.fs │ ├── skybox.vs │ ├── toon.fs │ ├── toon.vs │ ├── triangle.fs │ └── triangle.vs ├── skybox.c ├── skybox.h ├── stb_image.h └── steve.h ├── game ├── assets │ ├── audio │ │ └── test.wav │ ├── racing │ │ ├── Textures │ │ │ ├── checkers.png │ │ │ ├── net.png │ │ │ └── tankco.png │ │ ├── bannerTowerGreen.mtl │ │ ├── bannerTowerGreen.obj │ │ ├── bannerTowerRed.mtl │ │ ├── bannerTowerRed.obj │ │ ├── barrierRed.mtl │ │ ├── barrierRed.obj │ │ ├── barrierWall.mtl │ │ ├── barrierWall.obj │ │ ├── barrierWhite.mtl │ │ ├── barrierWhite.obj │ │ ├── billboard.mtl │ │ ├── billboard.obj │ │ ├── billboardDouble_exclusive.mtl │ │ ├── billboardDouble_exclusive.obj │ │ ├── billboardLow.mtl │ │ ├── billboardLow.obj │ │ ├── billboardLower.mtl │ │ ├── billboardLower.obj │ │ ├── camera_exclusive.mtl │ │ ├── camera_exclusive.obj │ │ ├── fenceCurved.mtl │ │ ├── fenceCurved.obj │ │ ├── fenceStraight.mtl │ │ ├── fenceStraight.obj │ │ ├── flagCheckers.mtl │ │ ├── flagCheckers.obj │ │ ├── flagCheckersSmall.mtl │ │ ├── flagCheckersSmall.obj │ │ ├── flagGreen.mtl │ │ ├── flagGreen.obj │ │ ├── flagRed.mtl │ │ ├── flagRed.obj │ │ ├── flagTankco.mtl │ │ ├── flagTankco.obj │ │ ├── grandStand.mtl │ │ ├── grandStand.obj │ │ ├── grandStandAwning.mtl │ │ ├── grandStandAwning.obj │ │ ├── grandStandCovered.mtl │ │ ├── grandStandCovered.obj │ │ ├── grandStandCoveredRound.mtl │ │ ├── grandStandCoveredRound.obj │ │ ├── grandStandRound.mtl │ │ ├── grandStandRound.obj │ │ ├── grass.mtl │ │ ├── grass.obj │ │ ├── lightColored.mtl │ │ ├── lightColored.obj │ │ ├── lightPostLarge.mtl │ │ ├── lightPostLarge.obj │ │ ├── lightPostModern.mtl │ │ ├── lightPostModern.obj │ │ ├── lightPost_exclusive.mtl │ │ ├── lightPost_exclusive.obj │ │ ├── lightRed.mtl │ │ ├── lightRed.obj │ │ ├── lightRedDouble.mtl │ │ ├── lightRedDouble.obj │ │ ├── overhead.mtl │ │ ├── overhead.obj │ │ ├── overheadLights.mtl │ │ ├── overheadLights.obj │ │ ├── overheadRound.mtl │ │ ├── overheadRound.obj │ │ ├── overheadRoundColored.mtl │ │ ├── overheadRoundColored.obj │ │ ├── pitsGarage.mtl │ │ ├── pitsGarage.obj │ │ ├── pitsGarageClosed.mtl │ │ ├── pitsGarageClosed.obj │ │ ├── pitsGarageCorner.mtl │ │ ├── pitsGarageCorner.obj │ │ ├── pitsOffice.mtl │ │ ├── pitsOffice.obj │ │ ├── pitsOfficeCorner.mtl │ │ ├── pitsOfficeCorner.obj │ │ ├── pitsOfficeRoof.mtl │ │ ├── pitsOfficeRoof.obj │ │ ├── pylon.mtl │ │ ├── pylon.obj │ │ ├── raceCarGreen.mtl │ │ ├── raceCarGreen.obj │ │ ├── raceCarOrange.mtl │ │ ├── raceCarOrange.obj │ │ ├── raceCarRed.mtl │ │ ├── raceCarRed.obj │ │ ├── raceCarWhite.mtl │ │ ├── raceCarWhite.obj │ │ ├── radarEquipment.mtl │ │ ├── radarEquipment.obj │ │ ├── rail.mtl │ │ ├── rail.obj │ │ ├── railDouble.mtl │ │ ├── railDouble.obj │ │ ├── ramp.mtl │ │ ├── ramp.obj │ │ ├── roadBump.mtl │ │ ├── roadBump.obj │ │ ├── roadCornerBridgeLarge.mtl │ │ ├── roadCornerBridgeLarge.obj │ │ ├── roadCornerBridgeLarger.mtl │ │ ├── roadCornerBridgeLarger.obj │ │ ├── roadCornerBridgeSmall.mtl │ │ ├── roadCornerBridgeSmall.obj │ │ ├── roadCornerLarge.mtl │ │ ├── roadCornerLarge.obj │ │ ├── roadCornerLargeBorder.mtl │ │ ├── roadCornerLargeBorder.obj │ │ ├── roadCornerLargeBorderInner.mtl │ │ ├── roadCornerLargeBorderInner.obj │ │ ├── roadCornerLargeSand.mtl │ │ ├── roadCornerLargeSand.obj │ │ ├── roadCornerLargeSandInner.mtl │ │ ├── roadCornerLargeSandInner.obj │ │ ├── roadCornerLargeWall.mtl │ │ ├── roadCornerLargeWall.obj │ │ ├── roadCornerLargeWallInner.mtl │ │ ├── roadCornerLargeWallInner.obj │ │ ├── roadCornerLarger.mtl │ │ ├── roadCornerLarger.obj │ │ ├── roadCornerLargerBorder.mtl │ │ ├── roadCornerLargerBorder.obj │ │ ├── roadCornerLargerBorderInner.mtl │ │ ├── roadCornerLargerBorderInner.obj │ │ ├── roadCornerLargerSand.mtl │ │ ├── roadCornerLargerSand.obj │ │ ├── roadCornerLargerSandInner.mtl │ │ ├── roadCornerLargerSandInner.obj │ │ ├── roadCornerLargerWall.mtl │ │ ├── roadCornerLargerWall.obj │ │ ├── roadCornerLargerWallInner.mtl │ │ ├── roadCornerLargerWallInner.obj │ │ ├── roadCornerSmall.mtl │ │ ├── roadCornerSmall.obj │ │ ├── roadCornerSmallBorder.mtl │ │ ├── roadCornerSmallBorder.obj │ │ ├── roadCornerSmallSand.mtl │ │ ├── roadCornerSmallSand.obj │ │ ├── roadCornerSmallSquare.mtl │ │ ├── roadCornerSmallSquare.obj │ │ ├── roadCornerSmallWall.mtl │ │ ├── roadCornerSmallWall.obj │ │ ├── roadCrossing.mtl │ │ ├── roadCrossing.obj │ │ ├── roadCurved.mtl │ │ ├── roadCurved.obj │ │ ├── roadCurvedSplit.mtl │ │ ├── roadCurvedSplit.obj │ │ ├── roadEnd.mtl │ │ ├── roadEnd.obj │ │ ├── roadPitEntry.mtl │ │ ├── roadPitEntry.obj │ │ ├── roadPitGarage.mtl │ │ ├── roadPitGarage.obj │ │ ├── roadPitStraight.mtl │ │ ├── roadPitStraight.obj │ │ ├── roadPitStraightLong.mtl │ │ ├── roadPitStraightLong.obj │ │ ├── roadRamp.mtl │ │ ├── roadRamp.obj │ │ ├── roadRampLong.mtl │ │ ├── roadRampLong.obj │ │ ├── roadRampLongCurved.mtl │ │ ├── roadRampLongCurved.obj │ │ ├── roadRampLongCurvedWall.mtl │ │ ├── roadRampLongCurvedWall.obj │ │ ├── roadRampLongWall.mtl │ │ ├── roadRampLongWall.obj │ │ ├── roadRampWall.mtl │ │ ├── roadRampWall.obj │ │ ├── roadSide.mtl │ │ ├── roadSide.obj │ │ ├── roadSplit.mtl │ │ ├── roadSplit.obj │ │ ├── roadSplitLarge.mtl │ │ ├── roadSplitLarge.obj │ │ ├── roadSplitLarger.mtl │ │ ├── roadSplitLarger.obj │ │ ├── roadSplitRound.mtl │ │ ├── roadSplitRound.obj │ │ ├── roadSplitRoundLarge.mtl │ │ ├── roadSplitRoundLarge.obj │ │ ├── roadSplitSmall.mtl │ │ ├── roadSplitSmall.obj │ │ ├── roadStart.mtl │ │ ├── roadStart.obj │ │ ├── roadStartPositions.mtl │ │ ├── roadStartPositions.obj │ │ ├── roadStraight.mtl │ │ ├── roadStraight.obj │ │ ├── roadStraightArrow.mtl │ │ ├── roadStraightArrow.obj │ │ ├── roadStraightBridge.mtl │ │ ├── roadStraightBridge.obj │ │ ├── roadStraightBridgeMid.mtl │ │ ├── roadStraightBridgeMid.obj │ │ ├── roadStraightBridgeStart.mtl │ │ ├── roadStraightBridgeStart.obj │ │ ├── roadStraightLong.mtl │ │ ├── roadStraightLong.obj │ │ ├── roadStraightLongBump.mtl │ │ ├── roadStraightLongBump.obj │ │ ├── roadStraightLongBumpRound.mtl │ │ ├── roadStraightLongBumpRound.obj │ │ ├── roadStraightLongMid.mtl │ │ ├── roadStraightLongMid.obj │ │ ├── roadStraightSkew.mtl │ │ ├── roadStraightSkew.obj │ │ ├── tent.mtl │ │ ├── tent.obj │ │ ├── tentClosed.mtl │ │ ├── tentClosed.obj │ │ ├── tentClosedLong.mtl │ │ ├── tentClosedLong.obj │ │ ├── tentLong.mtl │ │ ├── tentLong.obj │ │ ├── tentRoof.mtl │ │ ├── tentRoof.obj │ │ ├── tentRoofDouble.mtl │ │ ├── tentRoofDouble.obj │ │ ├── track.mtl │ │ ├── track.obj │ │ ├── treeLarge.mtl │ │ ├── treeLarge.obj │ │ ├── treeSmall.mtl │ │ └── treeSmall.obj │ ├── skybox │ │ ├── skybox_bk.bmp │ │ ├── skybox_dn.bmp │ │ ├── skybox_ft.bmp │ │ ├── skybox_lf.bmp │ │ ├── skybox_rt.bmp │ │ └── skybox_up.bmp │ └── textures │ │ ├── Dirty_Grass_DIFF.jpg │ │ ├── Dirty_Grass_DISP.jpg │ │ ├── Dirty_Grass_SPEC.jpg │ │ ├── Generated_Checker_Tiles_DIFF.png │ │ ├── Generated_Checker_Tiles_DISP.png │ │ ├── Generated_Checker_Tiles_NRM.png │ │ ├── Generated_Checker_Tiles_OCC.png │ │ ├── Generated_Checker_Tiles_RGH.png │ │ ├── Wood_Grain_DIFF.png │ │ ├── Wood_Grain_DISP.png │ │ ├── Wood_Grain_NRM.png │ │ ├── Wood_Grain_RGH.png │ │ ├── Wood_Grain_SPEC.png │ │ └── wood_toon.jpg ├── data │ └── car.h ├── editor.c ├── editor.h ├── entities.c ├── entities.h ├── game.c ├── game.h ├── input.c ├── input.h ├── main.c ├── ui.c └── ui.h ├── libs ├── nuklear.h └── nuklear_glfw_gl3.h ├── screenshots └── screen_1.png └── test.sh /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | insert_final_newline = true 7 | indent_size = 2 8 | indent_style = space 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode 2 | *.dSYM 3 | game/microdrag 4 | *.o 5 | game/maps/* 6 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | #OBJS specifies which files to compile as part of the project 2 | OBJS = game/main.o game/game.o game/entities.o game/ui.o game/editor.o game/input.o engine/glad.o engine/shader.o engine/renderer.o engine/importer.o engine/audio.o engine/dict.o engine/render_list.o engine/factory.o engine/debug.o engine/physics.o engine/skybox.o engine/data/object.o engine/data/mesh.o engine/data/material.o 3 | 4 | #CC specifies which compiler we're using 5 | CC = gcc -g -std=c99 `pkg-config --cflags glfw3` 6 | 7 | #COMPILER_FLAGS specifies the additional compilation options we're using 8 | # -w suppresses all warnings 9 | # COMPILER_FLAGS = -w 10 | # 11 | # #LINKER_FLAGS specifies the libraries we're linking against 12 | 13 | #OBJ_NAME specifies the name of our exectuable 14 | OBJ_NAME = game/microdrag 15 | LINKER_FLAGS = `pkg-config --static --libs glfw3 openal freealut` 16 | 17 | #This is the target that compiles our executable 18 | 19 | $(OBJ_NAME): $(OBJS) 20 | $(CC) -o $@ $^ $(LINKER_FLAGS) 21 | 22 | clean: 23 | rm -f $(OBJ_NAME) ./engine/*.o ./engine/data/*.o ./game/*.o 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OpenGL Racing Game Prototype 2 | 3 | ![screen](screenshots/screen_1.png) 4 | 5 | Features: 6 | - Modern rendering pipeline (GLSL) 7 | - Shadow mapping (with PCF) 8 | - Custom toon shader 9 | - Multiple lights 10 | - Simple rendering engine (OpenGL) 11 | - Simple physics engine (car-road collision tests) 12 | - Custom OBJ / MTL importer 13 | - Built-in tracks editor (serializer included) 14 | - UI with [Nuklear](https://github.com/vurtun/nuklear) 15 | - Joysticks integration 16 | - OpenAL implementation 17 | - Written in C 18 | -------------------------------------------------------------------------------- /debug.sh: -------------------------------------------------------------------------------- 1 | make && cd game && gdb microdrag 2 | -------------------------------------------------------------------------------- /engine/audio.c: -------------------------------------------------------------------------------- 1 | #include "audio.h" 2 | 3 | static void list_audio_devices(const ALCchar *devices) { 4 | const ALCchar *device = devices, *next = devices + 1; 5 | size_t len = 0; 6 | 7 | fprintf(stdout, "[audio_init] devices list:\n"); 8 | fprintf(stdout, "----------\n"); 9 | while (device && *device != '\0' && next && *next != '\0') { 10 | fprintf(stdout, "%s\n", device); 11 | len = strlen(device); 12 | device += (len + 1); 13 | next += (len + 2); 14 | } 15 | fprintf(stdout, "----------\n"); 16 | } 17 | 18 | int audio_init() { 19 | audio_device = alcOpenDevice(NULL); 20 | if (!audio_device) { 21 | printf("[audio_init] error: could not initialize device\n"); 22 | return -1; 23 | } 24 | 25 | fprintf(stdout, "[audio_init] error: using device: %s\n", alcGetString(audio_device, ALC_DEVICE_SPECIFIER)); 26 | 27 | ALboolean enumeration = alcIsExtensionPresent(NULL, "ALC_ENUMERATION_EXT");; 28 | if (enumeration) { 29 | list_audio_devices(alcGetString(NULL, ALC_DEVICE_SPECIFIER)); 30 | } else { 31 | printf("[audio_init] enumeration not available\n"); 32 | } 33 | 34 | alGetError(); 35 | 36 | audio_context = alcCreateContext(audio_device, NULL); 37 | if (!alcMakeContextCurrent(audio_context)) { 38 | printf("[audio_init] error: could not initialize context\n"); 39 | return -1; 40 | } 41 | 42 | AUDIO_TEST_ERROR("[audio_init] error: make default context"); 43 | 44 | ALfloat listener_ori[] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f }; 45 | alListener3f(AL_POSITION, 0, 0, 1.0f); 46 | AUDIO_TEST_ERROR("[audio_init] error: listener position"); 47 | alListener3f(AL_VELOCITY, 0, 0, 0); 48 | AUDIO_TEST_ERROR("[audio_init] error: listener velocity"); 49 | alListenerfv(AL_ORIENTATION, listener_ori); 50 | AUDIO_TEST_ERROR("[audio_init] error: listener orientation"); 51 | 52 | alutInitWithoutContext(NULL, NULL); 53 | 54 | audio_buffers_count = 0; 55 | 56 | return 1; 57 | } 58 | 59 | int audio_load_sound(const char* filename, ALuint* out_buffer) { 60 | audio_buffers[audio_buffers_count] = alutCreateBufferFromFile(filename); 61 | //audio_buffer = alutCreateBufferHelloWorld(); 62 | AUDIO_TEST_ERROR("[audio_load_sound] error: buffer generation"); 63 | *out_buffer = audio_buffers[audio_buffers_count]; 64 | audio_buffers_count++; 65 | } 66 | 67 | int audio_add_source(ALuint* source, ALuint buffer) { 68 | alGenSources(1, source); 69 | AUDIO_TEST_ERROR("[audio_add_source] error: source generation"); 70 | 71 | alSourcef(*source, AL_PITCH, 1); 72 | AUDIO_TEST_ERROR("[audio_add_source] error: source pitch"); 73 | alSourcef(*source, AL_GAIN, 1); 74 | AUDIO_TEST_ERROR("[audio_add_source] error: source gain"); 75 | alSource3f(*source, AL_POSITION, 0, 0, 0); 76 | AUDIO_TEST_ERROR("[audio_add_source] error: source position"); 77 | alSource3f(*source, AL_VELOCITY, 0, 0, 0); 78 | AUDIO_TEST_ERROR("[audio_add_source] error: source velocity"); 79 | alSourcei(*source, AL_LOOPING, AL_FALSE); 80 | AUDIO_TEST_ERROR("[audio_add_source] error: source looping"); 81 | 82 | alSourcei(*source, AL_BUFFER, buffer); 83 | AUDIO_TEST_ERROR("[audio_add_source] error: source-buffer binding"); 84 | } 85 | 86 | int audio_play_source(ALuint source) { 87 | alSourcePlay(source); 88 | AUDIO_TEST_ERROR("[audio_play_source] error: play source"); 89 | } 90 | 91 | int audio_source_playing(ALuint source) { 92 | ALint source_state; 93 | alGetSourcei(source, AL_SOURCE_STATE, &source_state); 94 | AUDIO_TEST_ERROR("[audio_source_playing] error: get source state"); 95 | return source_state == AL_PLAYING; 96 | } 97 | 98 | int audio_move_listener(vec3 pos) { 99 | alListener3f(AL_POSITION, pos[0], pos[1], pos[2]); 100 | AUDIO_TEST_ERROR("[audio_init] error: listener position"); 101 | } 102 | 103 | int audio_move_source(ALuint source, vec3 pos) { 104 | alSource3f(source, AL_POSITION, pos[0], pos[1], pos[2]); 105 | AUDIO_TEST_ERROR("[audio_add_source] error: source position"); 106 | } 107 | 108 | int audio_loop_source(ALuint source, ALboolean loop) { 109 | alSourcei(source, AL_LOOPING, loop); 110 | AUDIO_TEST_ERROR("[audio_add_source] error: source looping"); 111 | } 112 | 113 | int audio_init_object(object* object, ALuint source, int loop) { 114 | ALuint s; 115 | audio_add_source(&s, source); 116 | if (loop) { audio_loop_source(s, AL_TRUE); } 117 | else { audio_loop_source(s, AL_FALSE); } 118 | // audio_play_source(s); 119 | object->audio_source = s; 120 | } 121 | 122 | int audio_free_object(object* object) { 123 | alDeleteSources(1, &object->audio_source); 124 | } 125 | 126 | void audio_free() { 127 | for (int i = 0; i < AUDIO_MAX_BUFFERS; i++) { 128 | alDeleteBuffers(1, &audio_buffers[i]); 129 | } 130 | audio_device = alcGetContextsDevice(audio_context); 131 | alcMakeContextCurrent(NULL); 132 | alcDestroyContext(audio_context); 133 | alcCloseDevice(audio_device); 134 | alutExit(); 135 | } 136 | -------------------------------------------------------------------------------- /engine/audio.h: -------------------------------------------------------------------------------- 1 | #ifndef audio_h 2 | #define audio_h 3 | 4 | #include "engine.h" 5 | #include "data/object.h" 6 | 7 | #define AUDIO_MAX_BUFFERS 16 8 | 9 | ALCenum error; 10 | #define AUDIO_TEST_ERROR(_msg) \ 11 | error = alGetError(); \ 12 | if (error != AL_NO_ERROR) { \ 13 | fprintf(stderr, _msg "\n"); \ 14 | return -1; \ 15 | } 16 | 17 | ALCdevice* audio_device; 18 | ALCcontext* audio_context; 19 | ALuint audio_buffers[AUDIO_MAX_BUFFERS]; 20 | int audio_buffers_count; 21 | 22 | int audio_init(); 23 | int audio_load_sound(const char* filename, ALuint* out_buffer); 24 | int audio_add_source(ALuint* source, ALuint buffer); 25 | int audio_play_source(ALuint source); 26 | int audio_source_playing(ALuint source); 27 | int audio_move_listener(vec3 pos); 28 | int audio_move_source(ALuint source, vec3 pos); 29 | int audio_loop_source(ALuint source, ALboolean loop); 30 | int audio_init_object(object* object, ALuint source, int loop); 31 | int audio_free_object(object* object); 32 | void audio_free(); 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /engine/data/aabb.h: -------------------------------------------------------------------------------- 1 | #ifndef aabb_h 2 | #define aabb_h 3 | 4 | #include "../engine.h" 5 | 6 | typedef struct { 7 | float min_x, max_x; 8 | float min_y, max_y; 9 | float min_z, max_z; 10 | 11 | GLuint vao, vbo, ebo; 12 | } aabb; 13 | 14 | #endif 15 | -------------------------------------------------------------------------------- /engine/data/camera.h: -------------------------------------------------------------------------------- 1 | #ifndef camera_h 2 | #define camera_h 3 | 4 | #include "../engine.h" 5 | 6 | typedef struct 7 | { 8 | vec3 front; 9 | vec3 up; 10 | vec3 pos; 11 | float speed; 12 | } camera; 13 | 14 | #endif 15 | -------------------------------------------------------------------------------- /engine/data/light.h: -------------------------------------------------------------------------------- 1 | #ifndef light_h 2 | #define light_h 3 | 4 | #include "../engine.h" 5 | 6 | typedef struct { 7 | vec3 position; 8 | vec3 color; 9 | } light; 10 | 11 | #endif 12 | -------------------------------------------------------------------------------- /engine/data/material.c: -------------------------------------------------------------------------------- 1 | #include "material.h" 2 | 3 | void material_init(material* mat) { 4 | strcpy(mat->name, "\0"); 5 | strcpy(mat->texture_path, "\0"); 6 | strcpy(mat->normal_map_path, "\0"); 7 | strcpy(mat->specular_map_path, "\0"); 8 | mat->diffuse[0] = 1.0f; 9 | mat->diffuse[1] = 1.0f; 10 | mat->diffuse[2] = 1.0f; 11 | mat->specular[0] = 1.0f; 12 | mat->specular[1] = 1.0f; 13 | mat->specular[2] = 1.0f; 14 | mat->texture_subdivision = 1; 15 | } 16 | -------------------------------------------------------------------------------- /engine/data/material.h: -------------------------------------------------------------------------------- 1 | #ifndef material_h 2 | #define material_h 3 | 4 | #include "../engine.h" 5 | 6 | typedef struct { 7 | char name[256]; 8 | char texture_path[256]; 9 | char normal_map_path[256]; 10 | char specular_map_path[256]; 11 | vec3 diffuse; 12 | vec3 specular; 13 | int texture_subdivision; 14 | } material; 15 | 16 | void material_init(material* mat); 17 | 18 | #endif 19 | -------------------------------------------------------------------------------- /engine/data/mesh.c: -------------------------------------------------------------------------------- 1 | #include "mesh.h" 2 | 3 | void mesh_compute_tangent(mesh* m) { 4 | for (unsigned int i = 0; i < m->num_indices; i += 3) { 5 | vertex v1, v2, v3; 6 | v1 = m->vertices[m->indices[i]]; 7 | v2 = m->vertices[m->indices[i + 1]]; 8 | v3 = m->vertices[m->indices[i + 2]]; 9 | 10 | vec2 uv1 = { v1.u, v1.v }; 11 | vec2 uv2 = { v2.u, v2.v }; 12 | vec2 uv3 = { v3.u, v3.v }; 13 | 14 | vec3 v1_pos = { v1.x, v1.y, v1.z }; 15 | vec3 v2_pos = { v2.x, v2.y, v2.z }; 16 | vec3 v3_pos = { v3.x, v3.y, v3.z }; 17 | 18 | vec3 edge1; 19 | vec3 edge2; 20 | vec3_sub(edge1, v2_pos, v1_pos); 21 | vec3_sub(edge2, v3_pos, v1_pos); 22 | 23 | vec2 delta_uv1; 24 | vec2 delta_uv2; 25 | vec2_sub(delta_uv1, uv2, uv1); 26 | vec2_sub(delta_uv2, uv3, uv1); 27 | 28 | GLfloat f = 1.0f / (delta_uv1[0] * delta_uv2[1] - delta_uv2[0] * delta_uv1[1]); 29 | 30 | vec3 tangent; 31 | tangent[0] = f * (delta_uv2[1] * edge1[0] - delta_uv1[1] * edge2[0]); 32 | tangent[1] = f * (delta_uv2[1] * edge1[1] - delta_uv1[1] * edge2[1]); 33 | tangent[2] = f * (delta_uv2[1] * edge1[2] - delta_uv1[1] * edge2[2]); 34 | vec3_norm(tangent, tangent); 35 | 36 | v1.tx = tangent[0]; 37 | v1.ty = tangent[1]; 38 | v1.tz = tangent[2]; 39 | v2.tx = tangent[0]; 40 | v2.ty = tangent[1]; 41 | v2.tz = tangent[2]; 42 | v3.tx = tangent[0]; 43 | v3.ty = tangent[1]; 44 | v3.tz = tangent[2]; 45 | 46 | m->vertices[m->indices[i]] = v1; 47 | m->vertices[m->indices[i + 1]] = v2; 48 | m->vertices[m->indices[i + 2]] = v3; 49 | } 50 | 51 | // Normalize 52 | for (unsigned int i = 0; i < m->num_indices; i++) { 53 | vertex v = m->vertices[m->indices[i]]; 54 | vec3 tnorm = { v.tx, v.ty, v.tz }; 55 | vec3_norm(tnorm, tnorm); 56 | m->vertices[m->indices[i]].tx = tnorm[0]; 57 | m->vertices[m->indices[i]].ty = tnorm[1]; 58 | m->vertices[m->indices[i]].tz = tnorm[2]; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /engine/data/mesh.h: -------------------------------------------------------------------------------- 1 | #ifndef mesh_h 2 | #define mesh_h 3 | 4 | #include "../engine.h" 5 | #include "vertex.h" 6 | #include "material.h" 7 | 8 | typedef struct { 9 | char name[256]; 10 | 11 | vertex* vertices; 12 | GLuint* indices; 13 | 14 | GLuint num_indices; 15 | GLuint num_vertices; 16 | 17 | GLuint vao, vbo, ebo; 18 | material mat; 19 | 20 | GLuint texture_id; 21 | GLuint normal_map_id; 22 | GLuint specular_map_id; 23 | } mesh; 24 | 25 | void mesh_compute_tangent(mesh* m); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /engine/data/object.c: -------------------------------------------------------------------------------- 1 | #include "object.h" 2 | 3 | object* object_create(vec3 position, GLfloat scale, mesh* meshes, int num_meshes, int compute_center) { 4 | object* obj = (object*)malloc(sizeof(object)); 5 | 6 | vec3 zero_vec = { 0, 0, 0 }; 7 | 8 | // meshes 9 | obj->meshes = meshes; 10 | obj->num_meshes = num_meshes; 11 | 12 | // transform 13 | quat_identity(obj->rotation); 14 | obj->scale = 1.0f; 15 | if (position) { vec3_copy(obj->position, position); } 16 | else { vec3_copy(obj->position, zero_vec); } 17 | 18 | // shader 19 | vec3_copy(obj->color_mask, zero_vec); 20 | obj->receive_shadows = 0; 21 | obj->glowing = 0; 22 | vec3_copy(obj->glow_color, zero_vec); 23 | 24 | // center 25 | if (compute_center) { object_set_center(obj); } 26 | 27 | return obj; 28 | } 29 | 30 | void object_get_transform(const object* o, mat4x4 m) { 31 | mat4x4_identity(m); 32 | 33 | // scale 34 | mat4x4_identity(m); 35 | mat4x4_scale(m, m, o->scale); 36 | 37 | // translate 38 | mat4x4 translation; 39 | mat4x4_translate(translation, o->position[0], o->position[1], o->position[2]); 40 | mat4x4_mul(m, m, translation); 41 | 42 | // compute rotation matrix from quaternion 43 | mat4x4 mat_rot; 44 | mat4x4_from_quat(mat_rot, o->rotation); 45 | 46 | // rotate around center 47 | mat4x4 t1; 48 | mat4x4_translate(t1, o->center[0], o->center[1], o->center[2]); 49 | mat4x4_mul(m, m, t1); 50 | mat4x4_mul(m, m, mat_rot); 51 | mat4x4 t2; 52 | mat4x4_translate(t2, -o->center[0], -o->center[1], -o->center[2]); 53 | mat4x4_mul(m, m, t2); 54 | } 55 | 56 | void object_get_center(const object* o, vec3* out_center) { 57 | mesh* first_mesh = &o->meshes[0]; 58 | float min_x = first_mesh->vertices[0].x; 59 | float max_x = first_mesh->vertices[0].x; 60 | float min_y = first_mesh->vertices[0].y; 61 | float max_y = first_mesh->vertices[0].y; 62 | float min_z = first_mesh->vertices[0].z; 63 | float max_z = first_mesh->vertices[0].z; 64 | 65 | for (int i = 0; i < o->num_meshes; i++) { 66 | mesh* mesh = &o->meshes[i]; 67 | for (int j = 0; j < mesh->num_vertices; j++) { 68 | vertex* v = &mesh->vertices[j]; 69 | if (v->x < min_x) { min_x = v->x; } 70 | if (v->x > max_x) { max_x = v->x; } 71 | if (v->y < min_y) { min_y = v->y; } 72 | if (v->y > max_y) { max_y = v->y; } 73 | if (v->z < min_z) { min_z = v->z; } 74 | if (v->z > max_z) { max_z = v->z; } 75 | } 76 | } 77 | vec3 center = {(min_x + max_x) / 2, (min_y + max_y) / 2, (min_z + max_z) / 2}; 78 | vec3_copy(*out_center, center); 79 | } 80 | 81 | void object_set_center(object* o) { 82 | vec3 center; 83 | object_get_center(o, ¢er); 84 | vec3_copy(o->center, center); 85 | } 86 | 87 | void object_vec3_to_object_space(const object* o, vec3 v) { 88 | vec4 u = { v[0], v[1], v[2], 1.0f }; 89 | vec4 r; 90 | mat4x4 m; 91 | object_get_transform(o, m); 92 | mat4x4_mul_vec4(r, m, u); 93 | v[0] = r[0]; 94 | v[1] = r[1]; 95 | v[2] = r[2]; 96 | } 97 | 98 | aabb object_aabb_to_object_space(const object* o, aabb box) { 99 | aabb res = box; 100 | res.min_x += o->position[0] * o->scale; 101 | res.max_x += o->position[0] * o->scale; 102 | res.min_y += o->position[1] * o->scale; 103 | res.max_y += o->position[1] * o->scale; 104 | res.min_z += o->position[2] * o->scale; 105 | res.max_z += o->position[2] * o->scale; 106 | return res; 107 | } 108 | 109 | void object_free(object* o) { 110 | if (o->num_meshes > 0) { 111 | free(o->meshes[0].vertices); 112 | } 113 | free(o->meshes); 114 | alDeleteSources(1, &o->audio_source); 115 | } 116 | -------------------------------------------------------------------------------- /engine/data/object.h: -------------------------------------------------------------------------------- 1 | #ifndef object_h 2 | #define object_h 3 | 4 | #include "../engine.h" 5 | #include "mesh.h" 6 | #include "aabb.h" 7 | 8 | typedef struct { 9 | vec3 position; 10 | vec3 center; 11 | GLfloat scale; 12 | quat rotation; 13 | 14 | mesh* meshes; 15 | int num_meshes; 16 | 17 | vec3 color_mask; 18 | int glowing; 19 | vec3 glow_color; 20 | int receive_shadows; 21 | 22 | aabb box; 23 | 24 | ALuint audio_source; 25 | } object; 26 | 27 | object* object_create(vec3 position, GLfloat scale, mesh* meshes, int num_meshes, int compute_center); 28 | void object_get_transform(const object* o, mat4x4 m); 29 | void object_get_center(const object* o, vec3* out_center); 30 | void object_set_center(object* o); 31 | void object_vec3_to_object_space(const object* o, vec3 v); 32 | aabb object_aabb_to_object_space(const object* o, aabb box); 33 | void object_free(object* o); 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /engine/data/ray.h: -------------------------------------------------------------------------------- 1 | #ifndef ray_h 2 | #define ray_h 3 | 4 | #include "../engine.h" 5 | 6 | typedef struct { 7 | vec3 o; 8 | vec3 dir; 9 | float length; 10 | } ray; 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /engine/data/vertex.h: -------------------------------------------------------------------------------- 1 | #ifndef vertex_h 2 | #define vertex_h 3 | 4 | #include "../engine.h" 5 | 6 | typedef struct { 7 | GLfloat x; 8 | GLfloat y; 9 | GLfloat z; 10 | GLfloat u; 11 | GLfloat v; 12 | GLfloat nx; 13 | GLfloat ny; 14 | GLfloat nz; 15 | GLfloat tx; 16 | GLfloat ty; 17 | GLfloat tz; 18 | } vertex; 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /engine/debug.c: -------------------------------------------------------------------------------- 1 | #include "debug.h" 2 | 3 | void debug_print_mat4x4(mat4x4 m) { 4 | for (int i = 0; i < 4; i++) { 5 | printf("%f %f %f %f\n", m[0][i], m[1][i], m[2][i], m[3][i]); 6 | } 7 | printf("-------------------\n"); 8 | } 9 | 10 | void debug_print_vec3(vec3 v) { 11 | printf("%f %f %f\n", v[0], v[1], v[2]); 12 | printf("-------------------\n"); 13 | } 14 | 15 | void debug_print_vec4(vec4 v) { 16 | printf("%f %f %f %f\n", v[0], v[1], v[2], v[3]); 17 | printf("-------------------\n"); 18 | } 19 | -------------------------------------------------------------------------------- /engine/debug.h: -------------------------------------------------------------------------------- 1 | #ifndef debug_h 2 | #define debug_h 3 | 4 | #include "engine.h" 5 | 6 | void debug_print_mat4x4(mat4x4 m); 7 | void debug_print_vec3(vec3 v); 8 | void debug_print_vec4(vec4 v); 9 | 10 | #endif 11 | -------------------------------------------------------------------------------- /engine/dict.c: -------------------------------------------------------------------------------- 1 | #include "dict.h" 2 | 3 | static unsigned long hash(const char str[256]) 4 | { 5 | unsigned long hash = 5381; 6 | unsigned int c; 7 | 8 | while ((c = *str++)) { 9 | hash = ((hash << 5) + hash) + c; /* hash * 33 + c */ 10 | } 11 | 12 | return hash; 13 | } 14 | 15 | dict* dict_new(int capacity) { 16 | dict *h = calloc(1, sizeof(dict)); 17 | h->keys = calloc(capacity, sizeof(char*)); 18 | h->values = calloc(capacity, sizeof(void*)); 19 | for (int i = 0; i < capacity; i++) { 20 | h->keys[i] = NULL; 21 | h->values[i] = NULL; 22 | } 23 | h->capacity = capacity; 24 | h->size = 0; 25 | return h; 26 | } 27 | 28 | int dict_index(dict* h, const char key[256]) { 29 | unsigned int i = hash(key) % h->capacity; 30 | while (h->keys[i] != NULL && strcmp(h->keys[i], key) != 0) { 31 | i = (i + 1) % h->capacity; 32 | } 33 | return i; 34 | } 35 | 36 | void dict_insert(dict* h, const char key[256], void* value) { 37 | // insert element 38 | int i = dict_index(h, key); 39 | h->keys[i] = malloc(256 * sizeof(char)); 40 | strncpy(h->keys[i], key, 256 * sizeof(char)); 41 | h->values[i] = value; 42 | h->size++; 43 | 44 | // resize 45 | if (h->size >= h->capacity) { 46 | int new_capacity = (int)(h->capacity * 1.5f); 47 | h->keys = realloc(h->keys, new_capacity * sizeof(char*)); 48 | h->values = realloc(h->values, new_capacity * sizeof(void*)); 49 | for (int i = h->capacity; i < new_capacity; i++) { 50 | h->keys[i] = NULL; 51 | h->values[i] = NULL; 52 | } 53 | h->capacity = new_capacity; 54 | } 55 | } 56 | 57 | void* dict_search(dict* h, const char key[256]) { 58 | int i = dict_index(h, key); 59 | return h->values[i]; 60 | } 61 | 62 | void dict_free(dict* h) { 63 | for (int i = 0; i < h->capacity; i++) { 64 | free(h->keys[i]); 65 | free(h->values[i]); 66 | } 67 | free(h->keys); 68 | free(h->values); 69 | free(h); 70 | } 71 | -------------------------------------------------------------------------------- /engine/dict.h: -------------------------------------------------------------------------------- 1 | #ifndef dict_h 2 | #define dict_h 3 | 4 | #include "engine.h" 5 | 6 | typedef struct { 7 | int capacity; 8 | int size; 9 | char** keys; 10 | void** values; 11 | } dict; 12 | 13 | dict *dict_new(int size); 14 | int dict_index(dict* h, const char key[256]); 15 | void dict_insert(dict* h, const char key[256], void* value); 16 | void* dict_search(dict* h, const char key[256]); 17 | void dict_free(dict* h); 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /engine/engine.h: -------------------------------------------------------------------------------- 1 | #ifndef engine_h 2 | #define engine_h 3 | 4 | /* standard includes */ 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | /* importer */ 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | 25 | /* math */ 26 | #include "linmath.h" 27 | 28 | /* libraries */ 29 | #include "stb_image.h" 30 | 31 | /* include data structures */ 32 | #include "dict.h" 33 | 34 | /* include data */ 35 | /*#include "data/vertex.h" 36 | #include "data/material.h" 37 | #include "data/camera.h" 38 | #include "data/light.h" 39 | #include "data/aabb.h" 40 | #include "data/mesh.h" 41 | #include "data/object.h"*/ 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /engine/factory.c: -------------------------------------------------------------------------------- 1 | #include "factory.h" 2 | 3 | object* factory_create_sphere(float radius, int sector_count, int stack_count) { 4 | int num_vertices = sector_count * stack_count; 5 | 6 | vertex* vertices = (vertex*)malloc(3 * num_vertices * sizeof(vertex)); 7 | int vcount = 0; 8 | 9 | float x, y, z, xy; 10 | float nx, ny, nz, lengthInv = 1.0f / radius; 11 | float s, t; 12 | 13 | float sector_step = 2 * M_PI / sector_count; 14 | float stack_step = M_PI / stack_count; 15 | float sector_angle, stack_angle; 16 | 17 | // generate vertices 18 | for (int i = 0; i <= stack_count; i++) { 19 | stack_angle = M_PI / 2 - i * stack_step; // starting from pi/2 to -pi/2 20 | xy = radius * cosf(stack_angle); // r * cos(u) 21 | z = radius * sinf(stack_angle); // r * sin(u) 22 | 23 | for (int j = 0; j <= sector_count; j++) { 24 | sector_angle = j * sector_step; // starting from 0 to 2pi 25 | 26 | // vertex position (x, y, z) 27 | x = xy * cosf(sector_angle); 28 | y = xy * sinf(sector_angle); 29 | vertices[vcount].x = x; 30 | vertices[vcount].y = y; 31 | vertices[vcount].z = z; 32 | 33 | // normalized vertex normal (nx, ny, nz) 34 | nx = x * lengthInv; 35 | ny = y * lengthInv; 36 | nz = z * lengthInv; 37 | vertices[vcount].nx = nx; 38 | vertices[vcount].ny = ny; 39 | vertices[vcount].nz = nz; 40 | 41 | // vertex tex coord (s, t) range between [0, 1] 42 | s = (float)j / sector_count; 43 | t = (float)i / stack_count; 44 | vertices[vcount].u = s; 45 | vertices[vcount].v = t; 46 | vcount++; 47 | } 48 | } 49 | 50 | // generate indices 51 | GLuint* indices = (GLuint*)malloc(6 * num_vertices * sizeof(GLuint)); 52 | int icount = 0; 53 | int k1, k2; 54 | for (int i = 0; i < stack_count; i++) { 55 | k1 = i * (sector_count + 1); // beginning of current stack 56 | k2 = k1 + sector_count + 1; // beginning of next stack 57 | 58 | for (int j = 0; j < sector_count; j++, k1++, k2++) { 59 | // 2 triangles per sector excluding first and last stacks 60 | // k1 => k2 => k1+1 61 | if (i != 0) { 62 | indices[icount++] = k1; 63 | indices[icount++] = k2; 64 | indices[icount++] = k1 + 1; 65 | } 66 | 67 | // k1+1 => k2 => k2+1 68 | if (i != (stack_count - 1)) { 69 | indices[icount++] = k1 + 1; 70 | indices[icount++] = k2; 71 | indices[icount++] = k2 + 1; 72 | } 73 | } 74 | } 75 | 76 | // prepare and return object 77 | mesh* m = (mesh*)malloc(sizeof(mesh)); 78 | m->vertices = vertices; 79 | m->num_vertices = vcount; 80 | m->indices = indices; 81 | m->num_indices = icount; 82 | 83 | object* obj = object_create(NULL, 1.0f, m, 1, 1); 84 | return obj; 85 | } 86 | 87 | object* factory_create_plane(float width, float height) { 88 | vertex* vertices = (vertex*)malloc(4 * sizeof(vertex)); 89 | vertex v1 = { -width/2, 0, -height/2, 0, 0, 0, 1, 0 }; 90 | vertex v2 = { width/2, 0, -height/2, 0, 1, 0, 1, 0 }; 91 | vertex v3 = { width/2, 0, height/2, 1, 1, 0, 1, 0 }; 92 | vertex v4 = { -width/2, 0, height/2, 1, 0, 0, 1, 0 }; 93 | vertices[0] = v1; 94 | vertices[1] = v2; 95 | vertices[2] = v3; 96 | vertices[3] = v4; 97 | 98 | GLuint* indices = (GLuint*)malloc(4 * sizeof(GLuint)); 99 | indices[0] = 0; 100 | indices[1] = 3; 101 | indices[2] = 1; 102 | indices[3] = 3; 103 | indices[4] = 2; 104 | indices[5] = 1; 105 | 106 | mesh* m = (mesh*)malloc(sizeof(mesh)); 107 | m->vertices = vertices; 108 | m->num_vertices = 4; 109 | m->indices = indices; 110 | m->num_indices = 6; 111 | 112 | object* obj = object_create(NULL, 1.0f, m, 1, 1); 113 | return obj; 114 | } 115 | -------------------------------------------------------------------------------- /engine/factory.h: -------------------------------------------------------------------------------- 1 | #ifndef factory_h 2 | #define factory_h 3 | 4 | #include "engine.h" 5 | #include "data/object.h" 6 | 7 | object* factory_create_sphere(float radius, int sector_count, int stack_count); 8 | object* factory_create_plane(float width, float height); 9 | 10 | #endif 11 | -------------------------------------------------------------------------------- /engine/importer.h: -------------------------------------------------------------------------------- 1 | #ifndef importer_h 2 | #define importer_h 3 | 4 | #include "engine.h" 5 | #include "data/object.h" 6 | 7 | object* importer_load_obj(const char *filename); 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /engine/physics.h: -------------------------------------------------------------------------------- 1 | #ifndef physics_h 2 | #define physics_h 3 | 4 | #include "engine.h" 5 | #include "data/object.h" 6 | #include "data/mesh.h" 7 | #include "data/aabb.h" 8 | #include "data/ray.h" 9 | 10 | void physics_compute_aabb(object* object); 11 | int physics_objects_collide(object* a, object* b); 12 | int physics_point_in_triangle(vec3 p, vec3 v0, vec3 v1, vec3 v2); 13 | int physics_point_in_mesh(vec3 p, mesh* m); 14 | mesh* physics_ray_hit_mesh(const ray ray, const object* o); 15 | 16 | #endif 17 | -------------------------------------------------------------------------------- /engine/render_list.c: -------------------------------------------------------------------------------- 1 | #include "render_list.h" 2 | 3 | render_list* render_list_new() { 4 | render_list* rl = malloc(sizeof(render_list)); 5 | for (int i = 0; i < RENDER_LIST_SIZE; i++) 6 | rl->objects[i] = NULL; 7 | rl->size = 0; 8 | return rl; 9 | } 10 | 11 | void render_list_add(render_list* rl, object* o) { 12 | rl->objects[rl->size++] = o; 13 | } 14 | 15 | void render_list_add_batch(render_list* rl, object** batch, int size) { 16 | for (int i = 0; i < size; i++) 17 | rl->objects[rl->size++] = batch[i]; 18 | } 19 | 20 | void render_list_clear(render_list* rl) { 21 | for (int i = 0; i < rl->size; i++) 22 | rl->objects[i] = NULL; 23 | rl->size = 0; 24 | } 25 | 26 | void render_list_free(render_list* rl) { 27 | free(rl); 28 | } 29 | -------------------------------------------------------------------------------- /engine/render_list.h: -------------------------------------------------------------------------------- 1 | #ifndef render_list_h 2 | #define render_list_h 3 | 4 | #include "engine.h" 5 | #include "data/object.h" 6 | 7 | #define RENDER_LIST_SIZE 128 8 | 9 | typedef struct { 10 | object* objects[RENDER_LIST_SIZE]; 11 | int size; 12 | } render_list; 13 | 14 | render_list* render_list_new(); 15 | void render_list_add(render_list* rl, object* o); 16 | void render_list_add_batch(render_list* rl, object** batch, int size); 17 | void render_list_clear(render_list* rl); 18 | void render_list_free(render_list* rl); 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /engine/renderer.h: -------------------------------------------------------------------------------- 1 | #ifndef renderer_h 2 | #define renderer_h 3 | 4 | #include "engine.h" 5 | #include "shader.h" 6 | #include "skybox.h" 7 | #include "data/object.h" 8 | #include "data/light.h" 9 | #include "data/camera.h" 10 | #include "data/ray.h" 11 | 12 | #define SHADOW_WIDTH 1024 * 4 13 | #define SHADOW_HEIGHT 1024 * 4 14 | 15 | GLFWwindow* window; 16 | 17 | GLuint renderer_main_shader; 18 | GLuint renderer_shadow_shader; 19 | GLuint renderer_debug_shader; 20 | GLuint renderer_skybox_shader; 21 | 22 | GLuint renderer_depth_fbo; 23 | GLuint renderer_depth_map; 24 | GLuint renderer_debug_vao; 25 | GLuint renderer_debug_vbo; 26 | 27 | int renderer_debug_enabled; 28 | int renderer_render_aabb; 29 | float renderer_shadow_bias; 30 | int renderer_shadow_pcf_enabled; 31 | float renderer_shadow_near; 32 | float renderer_shadow_far; 33 | 34 | int renderer_init(char* title, int width, int height, int fullscreen, GLFWwindow** out_window); 35 | void renderer_cleanup(); 36 | void renderer_recompile_shader(); 37 | int renderer_should_close(); 38 | void renderer_init_object(object* o); 39 | void renderer_free_object(object* o); 40 | void renderer_render_objects(object* objects[], int objects_length, light* lights[], int lights_length, camera* camera, void (*ui_render_callback)(void), skybox* sky); 41 | 42 | #endif 43 | -------------------------------------------------------------------------------- /engine/shader.c: -------------------------------------------------------------------------------- 1 | #include "shader.h" 2 | 3 | void shader_check_compile_errors(GLuint object, const char* type) 4 | { 5 | GLint success; 6 | GLchar info_log[1024]; 7 | if (strcmp(type, "PROGRAM") != 0) 8 | { 9 | glGetShaderiv(object, GL_COMPILE_STATUS, &success); 10 | if (!success) 11 | { 12 | glGetShaderInfoLog(object, 1024, NULL, info_log); 13 | printf("Error shader of type %s\n %s\n", type, info_log); 14 | } 15 | } 16 | else 17 | { 18 | glGetProgramiv(object, GL_LINK_STATUS, &success); 19 | if (!success) 20 | { 21 | glGetProgramInfoLog(object, 1024, NULL, info_log); 22 | printf("Error linking shader of type %s\n %s\n", type, info_log); 23 | } 24 | } 25 | } 26 | 27 | void shader_load(const GLchar* file_path, GLchar** shader) 28 | { 29 | FILE *f = fopen(file_path, "rb"); 30 | fseek(f, 0, SEEK_END); 31 | long fsize = ftell(f); 32 | fseek(f, 0, SEEK_SET); //same as rewind(f); 33 | 34 | *shader = malloc(fsize + 1); 35 | fread(*shader, fsize, 1, f); 36 | fclose(f); 37 | 38 | (*shader)[fsize] = 0; 39 | } 40 | 41 | void shader_compile(const GLchar* vertex_path, const GLchar* fragment_path, GLuint* shader_id) 42 | { 43 | GLuint s_vertex, s_fragment; 44 | GLchar* vertex_source; 45 | GLchar* fragment_source; 46 | shader_load(vertex_path, &vertex_source); 47 | shader_load(fragment_path, &fragment_source); 48 | 49 | // Vertex Shader 50 | s_vertex = glCreateShader(GL_VERTEX_SHADER); 51 | glShaderSource(s_vertex, 1, (const GLchar **)&vertex_source, NULL); 52 | glCompileShader(s_vertex); 53 | shader_check_compile_errors(s_vertex, "VERTEX"); 54 | 55 | // Fragment Shader 56 | s_fragment = glCreateShader(GL_FRAGMENT_SHADER); 57 | glShaderSource(s_fragment, 1, (const GLchar **)&fragment_source, NULL); 58 | glCompileShader(s_fragment); 59 | shader_check_compile_errors(s_fragment, "FRAGMENT"); 60 | 61 | // Shader Program 62 | *shader_id = glCreateProgram(); 63 | glAttachShader(*shader_id, s_vertex); 64 | glAttachShader(*shader_id, s_fragment); 65 | glLinkProgram(*shader_id); 66 | shader_check_compile_errors(*shader_id, "PROGRAM"); 67 | 68 | // Delete the shaders as they're linked into our program now and no longer necessery 69 | glDeleteShader(s_vertex); 70 | glDeleteShader(s_fragment); 71 | } 72 | -------------------------------------------------------------------------------- /engine/shader.h: -------------------------------------------------------------------------------- 1 | #ifndef shader_h 2 | #define shader_h 3 | 4 | #include "engine.h" 5 | 6 | void shader_compile(const GLchar* vertex_path, const GLchar* fragment_path, GLuint* shader_id); 7 | 8 | #endif 9 | -------------------------------------------------------------------------------- /engine/shaders/debug.fs: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | out vec4 FragColor; 3 | 4 | in vec2 TexCoords; 5 | 6 | uniform sampler2D depthMap; 7 | uniform float near_plane; 8 | uniform float far_plane; 9 | 10 | // required when using a perspective projection matrix 11 | float LinearizeDepth(float depth) { 12 | float z = depth * 2.0 - 1.0; // Back to NDC 13 | return (2.0 * near_plane * far_plane) / (far_plane + near_plane - z * (far_plane - near_plane)); 14 | } 15 | 16 | void main() { 17 | float depthValue = texture(depthMap, TexCoords).r; 18 | // FragColor = vec4(vec3(LinearizeDepth(depthValue) / far_plane), 1.0); // perspective 19 | FragColor = vec4(vec3(depthValue), 1.0); // orthographic 20 | } 21 | -------------------------------------------------------------------------------- /engine/shaders/debug.vs: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | layout (location = 0) in vec3 aPos; 3 | layout (location = 1) in vec2 aTexCoords; 4 | 5 | out vec2 TexCoords; 6 | 7 | void main() { 8 | TexCoords = aTexCoords; 9 | gl_Position = vec4(aPos, 1.0); 10 | } 11 | -------------------------------------------------------------------------------- /engine/shaders/normal.fs: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | #define NR_LIGHTS 4 3 | 4 | out vec4 FragColor; 5 | 6 | struct Material { 7 | vec3 diffuse; 8 | vec3 specular; 9 | }; 10 | 11 | in vec3 Normal; 12 | in vec2 Uvs; 13 | in vec3 FragPos; 14 | 15 | // lights 16 | uniform vec3 lightsPos[NR_LIGHTS]; 17 | uniform vec3 lightsColors[NR_LIGHTS]; 18 | uniform int lightsNr; 19 | 20 | // camera 21 | uniform vec3 cameraPos; 22 | 23 | // material 24 | uniform Material material; 25 | 26 | // texture 27 | uniform int hasTexture; 28 | uniform sampler2D texture1; 29 | 30 | // time 31 | uniform float time; 32 | 33 | // render params 34 | uniform int glowing; 35 | uniform vec3 glow_color; 36 | 37 | void main() 38 | { 39 | vec3 result = vec3(0.0); 40 | for (int i = 0; i < min(NR_LIGHTS, lightsNr); i++) { 41 | // ambient 42 | float ambientStrength = 0.1; 43 | vec3 ambient = ambientStrength * lightsColors[i]; 44 | 45 | // diffuse 46 | vec3 norm = normalize(Normal); 47 | vec3 lightDir = normalize(lightsPos[i] - FragPos); 48 | float diff = max(dot(norm, lightDir), 0.0); 49 | vec3 diffuse = diff * lightsColors[i] * material.diffuse; 50 | 51 | // specular 52 | float specularStrength = 0.5; 53 | vec3 viewDir = normalize(cameraPos - FragPos); 54 | vec3 reflectDir = reflect(-lightDir, norm); 55 | float spec = pow(max(dot(viewDir, reflectDir), 0.0), 32); 56 | vec3 specular = specularStrength * spec * lightsColors[i] * material.specular; 57 | 58 | vec3 objectColor = hasTexture > 0 ? texture(texture1, Uvs).rgb : vec3(1.0); 59 | result += (ambient + diffuse + specular) * objectColor; 60 | } 61 | 62 | // glowing effect 63 | if (glowing == 1) { 64 | result += vec3((1.0f + sin(time * 5.0f)) / 8.0f); 65 | result *= glow_color; 66 | } 67 | 68 | FragColor = vec4(result, 1.0f); 69 | } 70 | -------------------------------------------------------------------------------- /engine/shaders/normal.vs: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | layout (location = 0) in vec3 aPos; 3 | layout (location = 1) in vec2 aUvs; 4 | layout (location = 2) in vec3 aNormal; 5 | 6 | out vec3 FragPos; 7 | out vec2 Uvs; 8 | out vec3 Normal; 9 | 10 | uniform mat4 M; 11 | uniform mat4 V; 12 | uniform mat4 P; 13 | 14 | void main() 15 | { 16 | FragPos = vec3(M * vec4(aPos, 1.0)); 17 | Uvs = aUvs.st; 18 | Normal = mat3(transpose(inverse(M))) * aNormal; 19 | 20 | gl_Position = P * V * vec4(FragPos, 1.0); 21 | } 22 | -------------------------------------------------------------------------------- /engine/shaders/ripple.fs: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | out vec4 fragColor; 3 | 4 | uniform float time; 5 | uniform sampler2D texture1; 6 | 7 | float radius = .5; 8 | 9 | in vec2 uv; 10 | 11 | void main() 12 | { 13 | vec2 coords = uv.st; 14 | vec2 dir = coords - vec2(.5); 15 | 16 | float dist = distance(coords, vec2(.5)); 17 | vec2 offset = dir * (sin(dist * 80. - time*15.) + .5) / 30.; 18 | 19 | vec2 texCoord = coords + offset; 20 | vec4 diffuse = texture2D(texture1, texCoord); 21 | 22 | fragColor = diffuse; 23 | } 24 | -------------------------------------------------------------------------------- /engine/shaders/shadow.fs: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | 3 | void main() { 4 | gl_FragDepth = gl_FragCoord.z; 5 | } 6 | -------------------------------------------------------------------------------- /engine/shaders/shadow.vs: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | layout (location = 0) in vec3 aPos; 3 | 4 | uniform mat4 lightSpaceMatrix; 5 | uniform mat4 M; 6 | 7 | void main() { 8 | vec3 FragPos = vec3(M * vec4(aPos, 1.0)); 9 | gl_Position = lightSpaceMatrix * vec4(FragPos, 1.0); 10 | } 11 | -------------------------------------------------------------------------------- /engine/shaders/simple.fs: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | out vec4 fragColor; 3 | 4 | in vec2 uv; 5 | 6 | uniform sampler2D texture1; 7 | 8 | void main () 9 | { 10 | fragColor = texture(texture1, uv); 11 | //fragColor = vec4(uv.x, 0.0, 0.0, 1.0); 12 | } 13 | -------------------------------------------------------------------------------- /engine/shaders/simple.vs: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | layout (location = 0) in vec3 pos; 3 | layout (location = 1) in vec2 uvs; 4 | layout (location = 2) in vec3 norm; 5 | 6 | uniform mat4 M; 7 | uniform mat4 V; 8 | uniform mat4 P; 9 | 10 | out vec2 uv; 11 | 12 | void main() 13 | { 14 | gl_Position = P * V * M * vec4(pos, 1.0f); 15 | uv = vec2(uvs.x, uvs.y); 16 | } 17 | -------------------------------------------------------------------------------- /engine/shaders/skybox.fs: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | out vec4 FragColor; 3 | 4 | in vec3 TexCoords; 5 | 6 | uniform samplerCube skybox; 7 | 8 | void main() 9 | { 10 | FragColor = texture(skybox, TexCoords); 11 | } 12 | -------------------------------------------------------------------------------- /engine/shaders/skybox.vs: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | layout (location = 0) in vec3 aPos; 3 | 4 | out vec3 TexCoords; 5 | 6 | uniform mat4 projection; 7 | uniform mat4 view; 8 | 9 | void main() 10 | { 11 | TexCoords = aPos; 12 | vec4 pos = projection * view * vec4(aPos, 1.0); 13 | gl_Position = pos.xyww; 14 | } 15 | -------------------------------------------------------------------------------- /engine/shaders/toon.fs: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | #define NR_LIGHTS 4 3 | 4 | out vec4 FragColor; 5 | 6 | struct Material { 7 | vec3 diffuse; 8 | vec3 specular; 9 | }; 10 | 11 | in vec3 Normal; 12 | in vec2 Uvs; 13 | in vec3 FragPos; 14 | in vec4 FragPosLightSpace; 15 | 16 | // lights 17 | uniform vec3 lightsPos[NR_LIGHTS]; 18 | uniform vec3 lightsColors[NR_LIGHTS]; 19 | uniform int lightsNr; 20 | 21 | // camera 22 | uniform vec3 cameraPos; 23 | 24 | // material 25 | uniform Material material; 26 | 27 | // shadow map 28 | uniform sampler2D shadowMap; 29 | uniform float shadowBias; 30 | uniform int shadowPCFEnabled; 31 | 32 | // skybox 33 | uniform samplerCube skybox; 34 | 35 | // texture 36 | uniform int hasTexture; 37 | uniform sampler2D texture1; 38 | uniform int texture_subdivision; 39 | 40 | // time 41 | uniform float time; 42 | 43 | // render params 44 | uniform vec3 color_mask; 45 | uniform int glowing; 46 | uniform vec3 glow_color; 47 | uniform int receive_shadows; 48 | 49 | // normal map 50 | uniform int hasNormalMap; 51 | uniform sampler2D normalMap; 52 | in VS_OUT { 53 | vec3 TangentLightPos; 54 | vec3 TangentViewPos; 55 | vec3 TangentFragPos; 56 | vec3 debug; 57 | } fs_in; 58 | 59 | // specular map 60 | uniform int hasSpecularMap; 61 | uniform sampler2D specularMap; 62 | 63 | float shadowCalculation(vec4 fragPosLightSpace, vec3 lightDir) { 64 | // perform perspective divide 65 | vec3 projCoords = fragPosLightSpace.xyz / fragPosLightSpace.w; 66 | // transform to [0,1] range 67 | projCoords = projCoords * 0.5 + 0.5; 68 | // get closest depth value from light's perspective (using [0,1] range fragPosLight as coords) 69 | float closestDepth = texture(shadowMap, projCoords.xy).r; 70 | // get depth of current fragment from light's perspective 71 | float currentDepth = projCoords.z; 72 | // check whether current frag pos is in shadow 73 | float bias = max(0.02 * (1.0 - dot(Normal, lightDir)), 0.01); 74 | 75 | float shadow = 0.0; 76 | 77 | if (shadowPCFEnabled == 1) { 78 | vec2 texelSize = 1.0 / textureSize(shadowMap, 0); 79 | for (int x = -1; x <= 1; x++) { 80 | for (int y = -1; y <= 1; y++) { 81 | float pcfDepth = texture(shadowMap, projCoords.xy + vec2(x, y) * texelSize).r; 82 | shadow += currentDepth - bias > pcfDepth ? 1.0 : 0.0; 83 | } 84 | } 85 | shadow /= 9.0; 86 | } else { 87 | shadow = currentDepth - bias > closestDepth ? 1.0 : 0.0; 88 | } 89 | 90 | if (projCoords.z > 1.0) 91 | shadow = 0.0; 92 | 93 | return shadow; 94 | } 95 | 96 | vec3 computeNormal() 97 | { 98 | // obtain normal from normal map in range [0,1] 99 | vec3 normal = texture(normalMap, Uvs * texture_subdivision).rgb; 100 | 101 | // transform normal vector to range [-1,1] 102 | normal = normalize(normal * 2.0 - 1.0); // this normal is in tangent space 103 | 104 | return normal; 105 | } 106 | 107 | void main() { 108 | vec3 result = vec3(0.0); 109 | for (int i = 0; i < min(NR_LIGHTS, lightsNr); i++) { 110 | // ambient 111 | float ambientStrength = 0.8; 112 | vec3 ambient = ambientStrength * lightsColors[i]; 113 | 114 | // diffuse 115 | // vec3 norm = hasNormalMap > 0 ? computeNormal() : normalize(Normal); 116 | vec3 norm = hasNormalMap > 0 ? computeNormal() : normalize(Normal); 117 | vec3 lightDir = hasNormalMap > 0 ? normalize(fs_in.TangentLightPos - fs_in.TangentFragPos) : normalize(lightsPos[i] - FragPos); 118 | float diff = max(dot(norm, lightDir), 0.0); 119 | vec3 diffuse = diff * lightsColors[i]; 120 | 121 | // specular 122 | float specularStrength = 0.2; 123 | vec3 viewDir = hasNormalMap > 0 ? normalize(fs_in.TangentViewPos - fs_in.TangentFragPos) : normalize(cameraPos - FragPos); 124 | vec3 reflectDir = reflect(-lightDir, norm); 125 | vec3 halfwayDir = normalize(lightDir + viewDir); 126 | float spec = pow(max(dot(norm, halfwayDir), 0.0), 64); 127 | spec = spec > 0.01 ? 0.6 : 0; 128 | 129 | // skybox 130 | vec3 r = reflect(-viewDir, normalize(norm)); 131 | vec3 specular = specularStrength * spec * lightsColors[i] * material.specular + texture(skybox, r).rgb * material.specular; 132 | 133 | if (hasSpecularMap > 0) { 134 | specular *= texture(specularMap, Uvs).rgb; 135 | } 136 | 137 | // shadows 138 | float shadow = 0.0; 139 | if (receive_shadows == 1) { 140 | shadow = shadowCalculation(FragPosLightSpace, lightDir); 141 | } 142 | 143 | vec3 objectColor = hasTexture > 0 ? texture(texture1, Uvs * texture_subdivision).rgb : material.diffuse; 144 | result += (ambient + (1.0 - shadow) * (diffuse + specular)) * objectColor; 145 | } 146 | 147 | // color mask 148 | result += color_mask; 149 | 150 | // glowing effect 151 | if (glowing == 1) { 152 | result += vec3((1.0f + sin(time * 5.0f)) / 8.0f); 153 | result *= glow_color; 154 | } 155 | 156 | FragColor = vec4(result, 1.0f); 157 | } 158 | -------------------------------------------------------------------------------- /engine/shaders/toon.vs: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | #define NR_LIGHTS 4 3 | 4 | layout (location = 0) in vec3 aPos; 5 | layout (location = 1) in vec2 aUvs; 6 | layout (location = 2) in vec3 aNormal; 7 | layout (location = 3) in vec3 aTangent; 8 | 9 | out vec3 FragPos; 10 | out vec2 Uvs; 11 | out vec3 Normal; 12 | out vec4 FragPosLightSpace; 13 | 14 | uniform mat4 M; 15 | uniform mat4 V; 16 | uniform mat4 P; 17 | uniform mat4 lightSpaceMatrix; 18 | 19 | out VS_OUT { 20 | vec3 TangentLightPos; 21 | vec3 TangentViewPos; 22 | vec3 TangentFragPos; 23 | vec3 debug; 24 | } vs_out; 25 | 26 | uniform vec3 cameraPos; 27 | uniform vec3 lightsPos[NR_LIGHTS]; 28 | uniform int hasNormalMap; 29 | 30 | void main() { 31 | FragPos = vec3(M * vec4(aPos, 1.0)); 32 | Uvs = aUvs.st; 33 | Normal = mat3(transpose(inverse(M))) * aNormal; 34 | FragPosLightSpace = lightSpaceMatrix * vec4(FragPos, 1.0); 35 | 36 | // normal map 37 | if (hasNormalMap > 0) { 38 | mat3 normalMatrix = transpose(inverse(mat3(M))); 39 | vec3 T = normalize(normalMatrix * aTangent); 40 | vec3 N = normalize(normalMatrix * aNormal); 41 | T = normalize(T - dot(T, N) * N); 42 | vec3 B = cross(N, T); 43 | 44 | mat3 TBN = transpose(mat3(T, B, N)); 45 | vs_out.TangentLightPos = TBN * lightsPos[0]; 46 | vs_out.TangentViewPos = TBN * cameraPos; 47 | vs_out.TangentFragPos = TBN * FragPos; 48 | vs_out.debug = aTangent; 49 | } 50 | 51 | gl_Position = P * V * vec4(FragPos, 1.0); 52 | } 53 | -------------------------------------------------------------------------------- /engine/shaders/triangle.fs: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | out vec4 fragColor; 3 | 4 | in vec2 uv; 5 | 6 | uniform sampler2D texture1; 7 | 8 | void main () 9 | { 10 | fragColor = texture(texture1, uv); 11 | //fragColor = vec4(uv.x, 0.0, 0.0, 1.0); 12 | } 13 | -------------------------------------------------------------------------------- /engine/shaders/triangle.vs: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | layout (location = 0) in vec3 pos; 3 | layout (location = 1) in vec2 uvs; 4 | layout (location = 2) in vec3 norm; 5 | 6 | uniform mat4 M; 7 | uniform mat4 V; 8 | uniform mat4 P; 9 | 10 | out vec2 uv; 11 | 12 | void main() 13 | { 14 | gl_Position = P * V * M * vec4(pos, 1.0f); 15 | uv = vec2(uvs.x, uvs.y); 16 | } 17 | -------------------------------------------------------------------------------- /engine/skybox.c: -------------------------------------------------------------------------------- 1 | #include "skybox.h" 2 | 3 | float skybox_vertices[] = { 4 | // positions 5 | -1.0f, 1.0f, -1.0f, 6 | -1.0f, -1.0f, -1.0f, 7 | 1.0f, -1.0f, -1.0f, 8 | 1.0f, -1.0f, -1.0f, 9 | 1.0f, 1.0f, -1.0f, 10 | -1.0f, 1.0f, -1.0f, 11 | 12 | -1.0f, -1.0f, 1.0f, 13 | -1.0f, -1.0f, -1.0f, 14 | -1.0f, 1.0f, -1.0f, 15 | -1.0f, 1.0f, -1.0f, 16 | -1.0f, 1.0f, 1.0f, 17 | -1.0f, -1.0f, 1.0f, 18 | 19 | 1.0f, -1.0f, -1.0f, 20 | 1.0f, -1.0f, 1.0f, 21 | 1.0f, 1.0f, 1.0f, 22 | 1.0f, 1.0f, 1.0f, 23 | 1.0f, 1.0f, -1.0f, 24 | 1.0f, -1.0f, -1.0f, 25 | 26 | -1.0f, -1.0f, 1.0f, 27 | -1.0f, 1.0f, 1.0f, 28 | 1.0f, 1.0f, 1.0f, 29 | 1.0f, 1.0f, 1.0f, 30 | 1.0f, -1.0f, 1.0f, 31 | -1.0f, -1.0f, 1.0f, 32 | 33 | -1.0f, 1.0f, -1.0f, 34 | 1.0f, 1.0f, -1.0f, 35 | 1.0f, 1.0f, 1.0f, 36 | 1.0f, 1.0f, 1.0f, 37 | -1.0f, 1.0f, 1.0f, 38 | -1.0f, 1.0f, -1.0f, 39 | 40 | -1.0f, -1.0f, -1.0f, 41 | -1.0f, -1.0f, 1.0f, 42 | 1.0f, -1.0f, -1.0f, 43 | 1.0f, -1.0f, -1.0f, 44 | -1.0f, -1.0f, 1.0f, 45 | 1.0f, -1.0f, 1.0f 46 | }; 47 | 48 | // loads a cubemap texture from 6 individual texture faces 49 | // order: 50 | // +X (right) 51 | // -X (left) 52 | // +Y (top) 53 | // -Y (bottom) 54 | // +Z (front) 55 | // -Z (back) 56 | // ------------------------------------------------------- 57 | static unsigned int load_cubemap(const char* faces[]) 58 | { 59 | unsigned int texture_id; 60 | glGenTextures(1, &texture_id); 61 | glBindTexture(GL_TEXTURE_CUBE_MAP, texture_id); 62 | 63 | int width, height, nrChannels; 64 | stbi_set_flip_vertically_on_load(false); 65 | for (unsigned int i = 0; i < 6; i++) 66 | { 67 | unsigned char *data = stbi_load(faces[i], &width, &height, &nrChannels, 0); 68 | if (data) 69 | { 70 | glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data); 71 | stbi_image_free(data); 72 | } 73 | else 74 | { 75 | printf("Cubemap texture failed to load at path: %s\n", faces[i]); 76 | stbi_image_free(data); 77 | } 78 | } 79 | 80 | glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 81 | glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 82 | glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 83 | glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 84 | glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE); 85 | 86 | return texture_id; 87 | } 88 | 89 | void skybox_init(skybox* s, const char* faces[]) { 90 | // init vao & vbo 91 | glGenVertexArrays(1, &s->vao); 92 | glGenBuffers(1, &s->vbo); 93 | glBindVertexArray(s->vao); 94 | glBindBuffer(GL_ARRAY_BUFFER, s->vbo); 95 | glBufferData(GL_ARRAY_BUFFER, sizeof(skybox_vertices), &skybox_vertices, GL_STATIC_DRAW); 96 | glEnableVertexAttribArray(0); 97 | glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0); 98 | 99 | // load texture 100 | s->texture_id = load_cubemap(faces); 101 | } 102 | 103 | void skybox_free(skybox* s) { 104 | glDeleteVertexArrays(1, &(s->vao)); 105 | glDeleteBuffers(1, &(s->vbo)); 106 | } 107 | -------------------------------------------------------------------------------- /engine/skybox.h: -------------------------------------------------------------------------------- 1 | #ifndef skybox_h 2 | #define skybox_h 3 | 4 | #include "engine.h" 5 | 6 | typedef struct { 7 | unsigned int vao; 8 | unsigned int vbo; 9 | unsigned int texture_id; 10 | const char* faces[6]; 11 | } skybox; 12 | 13 | void skybox_init(skybox* s, const char* faces[]); 14 | void skybox_free(skybox* s); 15 | 16 | #endif 17 | -------------------------------------------------------------------------------- /engine/steve.h: -------------------------------------------------------------------------------- 1 | #include "engine.h" 2 | 3 | /* include modules */ 4 | #include "shader.h" 5 | #include "renderer.h" 6 | #include "importer.h" 7 | #include "physics.h" 8 | #include "audio.h" 9 | #include "render_list.h" 10 | #include "factory.h" 11 | #include "skybox.h" 12 | -------------------------------------------------------------------------------- /game/assets/audio/test.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/audio/test.wav -------------------------------------------------------------------------------- /game/assets/racing/Textures/checkers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/racing/Textures/checkers.png -------------------------------------------------------------------------------- /game/assets/racing/Textures/net.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/racing/Textures/net.png -------------------------------------------------------------------------------- /game/assets/racing/Textures/tankco.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/racing/Textures/tankco.png -------------------------------------------------------------------------------- /game/assets/racing/bannerTowerGreen.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl _defaultMat 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 1 1 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl grass 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.3019608 0.5607843 0.4313726 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/bannerTowerRed.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl _defaultMat 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 1 1 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl red 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.9098039 0.3333333 0.3254902 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/barrierRed.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl red 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.9098039 0.3333333 0.3254902 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | -------------------------------------------------------------------------------- /game/assets/racing/barrierRed.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib barrierRed.mtl 4 | 5 | g barrierRed 6 | 7 | v 0 0 0.123 8 | v -0.25 0 0.123 9 | v 0 0.0246 0.123 10 | v -0.25 0.0246 0.123 11 | v -0.25 0 0 12 | v 0 0 0 13 | v -0.25 0.0246 0 14 | v 0 0.0246 0 15 | v 0 0.0738 0.101475 16 | v -0.25 0.0738 0.101475 17 | v -0.25 0.0738 0.02152503 18 | v -0.25 0.1312 0.02991974 19 | v -0.25 0.1312 0.09308028 20 | v 0 0.0738 0.02152503 21 | v 0 0.1312 0.02991974 22 | v 0 0.1312 0.09308028 23 | 24 | vn 0 0 1 25 | vn 0 0 -1 26 | vn 0 0.4008189 0.9161574 27 | vn -1 0 0 28 | vn 0 0.4008189 -0.9161574 29 | vn 0 -1 0 30 | vn 1 0 0 31 | vn 0 1 0 32 | vn 0 0.1447106 0.9894741 33 | vn 0 0.1447106 -0.9894741 34 | 35 | vt 0 0 36 | vt -9.84252 0 37 | vt 0 0.968504 38 | vt -9.84252 0.968504 39 | vt 9.84252 0 40 | vt 9.84252 0.968504 41 | vt 0 -1.053671 42 | vt -9.84252 -1.053671 43 | vt 0 1.060603 44 | vt -9.84252 1.060603 45 | vt 4.84252 0 46 | vt 0.847441 2.905512 47 | vt 1.177943 5.165354 48 | vt 3.995079 2.905512 49 | vt 3.664577 5.165354 50 | vt 4.84252 0.968504 51 | vt 9.84252 0.887302 52 | vt 0 0.887302 53 | vt 9.84252 3.001576 54 | vt 0 3.001576 55 | vt 0 4.84252 56 | vt -9.84252 4.84252 57 | vt -0.847441 2.905512 58 | vt -4.84252 0 59 | vt -1.177943 5.165354 60 | vt -3.995079 2.905512 61 | vt -3.664577 5.165354 62 | vt -4.84252 0.968504 63 | vt 0 1.177943 64 | vt 0 3.664577 65 | vt 9.84252 1.177943 66 | vt 9.84252 3.664577 67 | vt 0 2.296798 68 | vt -9.84252 2.296798 69 | vt 0 4.580681 70 | vt -9.84252 4.580681 71 | vt 9.84252 2.997562 72 | vt 0 2.997562 73 | vt 9.84252 5.281445 74 | vt 0 5.281445 75 | 76 | usemtl red 77 | 78 | f 2/2/1 1/1/1 3/3/1 79 | f 3/3/1 4/4/1 2/2/1 80 | f 6/1/2 5/5/2 7/6/2 81 | f 7/6/2 8/3/2 6/1/2 82 | f 4/8/3 3/7/3 9/9/3 83 | f 9/9/3 10/10/3 4/8/3 84 | f 7/3/4 5/1/4 2/11/4 85 | f 2/11/4 11/12/4 7/3/4 86 | f 2/11/4 12/13/4 11/12/4 87 | f 2/11/4 10/14/4 12/13/4 88 | f 10/14/4 13/15/4 12/13/4 89 | f 2/11/4 4/16/4 10/14/4 90 | f 8/18/5 7/17/5 11/19/5 91 | f 11/19/5 14/20/5 8/18/5 92 | f 6/1/6 1/21/6 2/22/6 93 | f 2/22/6 5/2/6 6/1/6 94 | f 6/1/7 8/3/7 14/23/7 95 | f 14/23/7 1/24/7 6/1/7 96 | f 14/23/7 15/25/7 1/24/7 97 | f 15/25/7 9/26/7 1/24/7 98 | f 15/25/7 16/27/7 9/26/7 99 | f 9/26/7 3/28/7 1/24/7 100 | f 16/30/8 15/29/8 12/31/8 101 | f 12/31/8 13/32/8 16/30/8 102 | f 10/34/9 9/33/9 16/35/9 103 | f 16/35/9 13/36/9 10/34/9 104 | f 14/38/10 11/37/10 12/39/10 105 | f 12/39/10 15/40/10 14/38/10 106 | g barrierRed 107 | 108 | 109 | 110 | 111 | usemtl red 112 | 113 | f 2/2/1 1/1/1 3/3/1 114 | f 3/3/1 4/4/1 2/2/1 115 | f 6/1/2 5/5/2 7/6/2 116 | f 7/6/2 8/3/2 6/1/2 117 | f 4/8/3 3/7/3 9/9/3 118 | f 9/9/3 10/10/3 4/8/3 119 | f 7/3/4 5/1/4 2/11/4 120 | f 2/11/4 11/12/4 7/3/4 121 | f 2/11/4 12/13/4 11/12/4 122 | f 2/11/4 10/14/4 12/13/4 123 | f 10/14/4 13/15/4 12/13/4 124 | f 2/11/4 4/16/4 10/14/4 125 | f 8/18/5 7/17/5 11/19/5 126 | f 11/19/5 14/20/5 8/18/5 127 | f 6/1/6 1/21/6 2/22/6 128 | f 2/22/6 5/2/6 6/1/6 129 | f 6/1/7 8/3/7 14/23/7 130 | f 14/23/7 1/24/7 6/1/7 131 | f 14/23/7 15/25/7 1/24/7 132 | f 15/25/7 9/26/7 1/24/7 133 | f 15/25/7 16/27/7 9/26/7 134 | f 9/26/7 3/28/7 1/24/7 135 | f 16/30/8 15/29/8 12/31/8 136 | f 12/31/8 13/32/8 16/30/8 137 | f 10/34/9 9/33/9 16/35/9 138 | f 16/35/9 13/36/9 10/34/9 139 | f 14/38/10 11/37/10 12/39/10 140 | f 12/39/10 15/40/10 14/38/10 141 | -------------------------------------------------------------------------------- /game/assets/racing/barrierWall.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl red 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.9098039 0.3333333 0.3254902 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/barrierWhite.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | -------------------------------------------------------------------------------- /game/assets/racing/barrierWhite.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib barrierWhite.mtl 4 | 5 | g barrierWhite 6 | 7 | v 0 0 0.123 8 | v -0.25 0 0.123 9 | v 0 0.0246 0.123 10 | v -0.25 0.0246 0.123 11 | v -0.25 0 0 12 | v 0 0 0 13 | v -0.25 0.0246 0 14 | v 0 0.0246 0 15 | v 0 0.0738 0.101475 16 | v -0.25 0.0738 0.101475 17 | v -0.25 0.0738 0.02152503 18 | v -0.25 0.1312 0.02991974 19 | v -0.25 0.1312 0.09308028 20 | v 0 0.0738 0.02152503 21 | v 0 0.1312 0.02991974 22 | v 0 0.1312 0.09308028 23 | 24 | vn 0 0 1 25 | vn 0 0 -1 26 | vn 0 0.4008189 0.9161574 27 | vn -1 0 0 28 | vn 0 0.4008189 -0.9161574 29 | vn 0 -1 0 30 | vn 1 0 0 31 | vn 0 1 0 32 | vn 0 0.1447106 0.9894741 33 | vn 0 0.1447106 -0.9894741 34 | 35 | vt 0 0 36 | vt -9.84252 0 37 | vt 0 0.968504 38 | vt -9.84252 0.968504 39 | vt 9.84252 0 40 | vt 9.84252 0.968504 41 | vt 0 -1.053671 42 | vt -9.84252 -1.053671 43 | vt 0 1.060603 44 | vt -9.84252 1.060603 45 | vt 4.84252 0 46 | vt 0.847441 2.905512 47 | vt 1.177943 5.165354 48 | vt 3.995079 2.905512 49 | vt 3.664577 5.165354 50 | vt 4.84252 0.968504 51 | vt 9.84252 0.887302 52 | vt 0 0.887302 53 | vt 9.84252 3.001576 54 | vt 0 3.001576 55 | vt 0 4.84252 56 | vt -9.84252 4.84252 57 | vt -0.847441 2.905512 58 | vt -4.84252 0 59 | vt -1.177943 5.165354 60 | vt -3.995079 2.905512 61 | vt -3.664577 5.165354 62 | vt -4.84252 0.968504 63 | vt 0 1.177943 64 | vt 0 3.664577 65 | vt 9.84252 1.177943 66 | vt 9.84252 3.664577 67 | vt 0 2.296798 68 | vt -9.84252 2.296798 69 | vt 0 4.580681 70 | vt -9.84252 4.580681 71 | vt 9.84252 2.997562 72 | vt 0 2.997562 73 | vt 9.84252 5.281445 74 | vt 0 5.281445 75 | 76 | usemtl grey 77 | 78 | f 2/2/1 1/1/1 3/3/1 79 | f 3/3/1 4/4/1 2/2/1 80 | f 6/1/2 5/5/2 7/6/2 81 | f 7/6/2 8/3/2 6/1/2 82 | f 4/8/3 3/7/3 9/9/3 83 | f 9/9/3 10/10/3 4/8/3 84 | f 7/3/4 5/1/4 2/11/4 85 | f 2/11/4 11/12/4 7/3/4 86 | f 2/11/4 12/13/4 11/12/4 87 | f 2/11/4 10/14/4 12/13/4 88 | f 10/14/4 13/15/4 12/13/4 89 | f 2/11/4 4/16/4 10/14/4 90 | f 8/18/5 7/17/5 11/19/5 91 | f 11/19/5 14/20/5 8/18/5 92 | f 6/1/6 1/21/6 2/22/6 93 | f 2/22/6 5/2/6 6/1/6 94 | f 6/1/7 8/3/7 14/23/7 95 | f 14/23/7 1/24/7 6/1/7 96 | f 14/23/7 15/25/7 1/24/7 97 | f 15/25/7 9/26/7 1/24/7 98 | f 15/25/7 16/27/7 9/26/7 99 | f 9/26/7 3/28/7 1/24/7 100 | f 16/30/8 15/29/8 12/31/8 101 | f 12/31/8 13/32/8 16/30/8 102 | f 10/34/9 9/33/9 16/35/9 103 | f 16/35/9 13/36/9 10/34/9 104 | f 14/38/10 11/37/10 12/39/10 105 | f 12/39/10 15/40/10 14/38/10 106 | g barrierWhite 107 | 108 | 109 | 110 | 111 | usemtl grey 112 | 113 | f 2/2/1 1/1/1 3/3/1 114 | f 3/3/1 4/4/1 2/2/1 115 | f 6/1/2 5/5/2 7/6/2 116 | f 7/6/2 8/3/2 6/1/2 117 | f 4/8/3 3/7/3 9/9/3 118 | f 9/9/3 10/10/3 4/8/3 119 | f 7/3/4 5/1/4 2/11/4 120 | f 2/11/4 11/12/4 7/3/4 121 | f 2/11/4 12/13/4 11/12/4 122 | f 2/11/4 10/14/4 12/13/4 123 | f 10/14/4 13/15/4 12/13/4 124 | f 2/11/4 4/16/4 10/14/4 125 | f 8/18/5 7/17/5 11/19/5 126 | f 11/19/5 14/20/5 8/18/5 127 | f 6/1/6 1/21/6 2/22/6 128 | f 2/22/6 5/2/6 6/1/6 129 | f 6/1/7 8/3/7 14/23/7 130 | f 14/23/7 1/24/7 6/1/7 131 | f 14/23/7 15/25/7 1/24/7 132 | f 15/25/7 9/26/7 1/24/7 133 | f 15/25/7 16/27/7 9/26/7 134 | f 9/26/7 3/28/7 1/24/7 135 | f 16/30/8 15/29/8 12/31/8 136 | f 12/31/8 13/32/8 16/30/8 137 | f 10/34/9 9/33/9 16/35/9 138 | f 16/35/9 13/36/9 10/34/9 139 | f 14/38/10 11/37/10 12/39/10 140 | f 12/39/10 15/40/10 14/38/10 141 | -------------------------------------------------------------------------------- /game/assets/racing/billboard.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl bark 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.8313726 0.654902 0.4235294 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl road 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.2666667 0.2666667 0.2666667 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl tankco 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 1 1 1 16 | Ks 0.330000 0.330000 0.330000 17 | map_Ka Textures/tankco.png 18 | map_Kd Textures/tankco.png 19 | 20 | newmtl grey 21 | Ka 0.000000 0.000000 0.000000 22 | Kd 0.945098 0.9490196 0.9647059 23 | Ks 0.330000 0.330000 0.330000 24 | 25 | -------------------------------------------------------------------------------- /game/assets/racing/billboardDouble_exclusive.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl bark 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.8313726 0.654902 0.4235294 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl road 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.2666667 0.2666667 0.2666667 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl tankco 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 1 1 1 16 | Ks 0.330000 0.330000 0.330000 17 | map_Ka Textures/tankco.png 18 | map_Kd Textures/tankco.png 19 | 20 | newmtl grey 21 | Ka 0.000000 0.000000 0.000000 22 | Kd 0.945098 0.9490196 0.9647059 23 | Ks 0.330000 0.330000 0.330000 24 | 25 | -------------------------------------------------------------------------------- /game/assets/racing/billboardLow.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl bark 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.8313726 0.654902 0.4235294 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl road 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.2666667 0.2666667 0.2666667 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl tankco 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 1 1 1 16 | Ks 0.330000 0.330000 0.330000 17 | map_Ka Textures/tankco.png 18 | map_Kd Textures/tankco.png 19 | 20 | newmtl grey 21 | Ka 0.000000 0.000000 0.000000 22 | Kd 0.945098 0.9490196 0.9647059 23 | Ks 0.330000 0.330000 0.330000 24 | 25 | -------------------------------------------------------------------------------- /game/assets/racing/billboardLower.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl road 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.2666667 0.2666667 0.2666667 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl bark 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.8313726 0.654902 0.4235294 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | newmtl tankco 19 | Ka 0.000000 0.000000 0.000000 20 | Kd 1 1 1 21 | Ks 0.330000 0.330000 0.330000 22 | map_Ka Textures/tankco.png 23 | map_Kd Textures/tankco.png 24 | 25 | newmtl _defaultMat 26 | Ka 0.000000 0.000000 0.000000 27 | Kd 1 1 1 28 | Ks 0.330000 0.330000 0.330000 29 | 30 | -------------------------------------------------------------------------------- /game/assets/racing/camera_exclusive.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl road 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.2666667 0.2666667 0.2666667 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl _defaultMat 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 1 1 1 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/fenceCurved.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl net 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 1 1 1 11 | Ks 0.330000 0.330000 0.330000 12 | map_Ka Textures/net.png 13 | map_Kd Textures/net.png 14 | 15 | -------------------------------------------------------------------------------- /game/assets/racing/fenceStraight.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl net 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 1 1 1 11 | Ks 0.330000 0.330000 0.330000 12 | map_Ka Textures/net.png 13 | map_Kd Textures/net.png 14 | 15 | -------------------------------------------------------------------------------- /game/assets/racing/fenceStraight.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib fenceStraight.mtl 4 | 5 | g fenceStraight 6 | 7 | v -0.9655 0.5 0 8 | v -0.9655 0 0 9 | v -0.9655 0.5 0.01725 10 | v -0.9655 0 0.01725 11 | v -0.9655 0.5 0.0345 12 | v -0.9655 0 0.0345 13 | v -1 0 0 14 | v -1 0.5 0 15 | v 0 0 0.0345 16 | v 0 0 0 17 | v -0.0345 0 0.0345 18 | v -0.0345 0 0 19 | v -0.0345 0 0.01725 20 | v -1 0.5 0.0345 21 | v -1 0 0.0345 22 | v 0 0.5 0 23 | v 0 0.5 0.0345 24 | v -0.0345 0.5 0 25 | v -0.0345 0.5 0.0345 26 | v -0.0345 0.5 0.01725 27 | 28 | vn 1 0 0 29 | vn 0 0 -1 30 | vn 0 -1 0 31 | vn 0 1 0 32 | vn -1 0 0 33 | vn 0 0 1 34 | 35 | vt 0 19.68504 36 | vt 0 -4.975745E-17 37 | vt -0.6791338 19.68504 38 | vt -0.6791338 -4.975745E-17 39 | vt -1.358268 19.68504 40 | vt -1.358268 -4.975745E-17 41 | vt 39.37008 -4.975745E-17 42 | vt 38.01181 -4.975745E-17 43 | vt 39.37008 19.68504 44 | vt 38.01181 19.68504 45 | vt 0 1.358268 46 | vt 0 0 47 | vt -1.358268 1.358268 48 | vt -1.358268 0 49 | vt -1.358268 0.6791338 50 | vt 38.01181 0 51 | vt 38.01181 0.6791338 52 | vt 39.37008 0 53 | vt 38.01181 1.358268 54 | vt 39.37008 1.358268 55 | vt -38.01181 1.358268 56 | vt -38.01181 0.6791338 57 | vt -39.37008 1.358268 58 | vt -38.01181 0 59 | vt -39.37008 0 60 | vt 1.358268 -4.975745E-17 61 | vt 1.358268 19.68504 62 | vt -38.01181 -4.975745E-17 63 | vt -39.37008 -4.975745E-17 64 | vt -38.01181 19.68504 65 | vt -39.37008 19.68504 66 | vt 1.358268 0 67 | vt 1.358268 1.358268 68 | vt 1.358268 0.6791338 69 | vt 0.6791338 0 70 | vt 0.6791338 19.68504 71 | vt 3.950403 2.000005 72 | vt -4.385381E-15 2 73 | vt 3.950403 4.121595 74 | vt 1.843845E-10 4.121591 75 | 76 | usemtl grey 77 | 78 | f 2/2/1 1/1/1 3/3/1 79 | f 3/3/1 4/4/1 2/2/1 80 | f 4/4/1 3/3/1 5/5/1 81 | f 5/5/1 6/6/1 4/4/1 82 | f 2/8/2 7/7/2 8/9/2 83 | f 8/9/2 1/10/2 2/8/2 84 | f 10/12/3 9/11/3 11/13/3 85 | f 11/13/3 12/14/3 10/12/3 86 | f 11/13/3 13/15/3 12/14/3 87 | f 3/17/4 1/16/4 8/18/4 88 | f 8/18/4 5/19/4 3/17/4 89 | f 8/18/4 14/20/4 5/19/4 90 | f 4/22/3 6/21/3 15/23/3 91 | f 15/23/3 2/24/3 4/22/3 92 | f 15/23/3 7/25/3 2/24/3 93 | f 8/1/5 7/2/5 15/26/5 94 | f 15/26/5 14/27/5 8/1/5 95 | f 15/29/6 6/28/6 5/30/6 96 | f 5/30/6 14/31/6 15/29/6 97 | f 17/11/4 16/12/4 18/32/4 98 | f 18/32/4 19/33/4 17/11/4 99 | f 18/32/4 20/34/4 19/33/4 100 | f 10/12/2 12/32/2 18/27/2 101 | f 18/27/2 16/1/2 10/12/2 102 | f 20/36/5 13/35/5 11/32/5 103 | f 11/32/5 19/27/5 20/36/5 104 | f 13/35/5 20/36/5 18/1/5 105 | f 18/1/5 12/12/5 13/35/5 106 | f 11/14/6 9/12/6 17/1/6 107 | f 17/1/6 19/5/6 11/14/6 108 | f 10/12/1 16/1/1 17/5/1 109 | f 17/5/1 9/14/1 10/12/1 110 | 111 | usemtl net 112 | 113 | f 13/38/2 4/37/2 3/39/2 114 | f 3/39/2 20/40/2 13/38/2 115 | f 13/38/6 3/39/6 4/37/6 116 | f 3/39/6 13/38/6 20/40/6 117 | g fenceStraight 118 | 119 | 120 | 121 | 122 | usemtl grey 123 | 124 | f 2/2/1 1/1/1 3/3/1 125 | f 3/3/1 4/4/1 2/2/1 126 | f 4/4/1 3/3/1 5/5/1 127 | f 5/5/1 6/6/1 4/4/1 128 | f 2/8/2 7/7/2 8/9/2 129 | f 8/9/2 1/10/2 2/8/2 130 | f 10/12/3 9/11/3 11/13/3 131 | f 11/13/3 12/14/3 10/12/3 132 | f 11/13/3 13/15/3 12/14/3 133 | f 3/17/4 1/16/4 8/18/4 134 | f 8/18/4 5/19/4 3/17/4 135 | f 8/18/4 14/20/4 5/19/4 136 | f 4/22/3 6/21/3 15/23/3 137 | f 15/23/3 2/24/3 4/22/3 138 | f 15/23/3 7/25/3 2/24/3 139 | f 8/1/5 7/2/5 15/26/5 140 | f 15/26/5 14/27/5 8/1/5 141 | f 15/29/6 6/28/6 5/30/6 142 | f 5/30/6 14/31/6 15/29/6 143 | f 17/11/4 16/12/4 18/32/4 144 | f 18/32/4 19/33/4 17/11/4 145 | f 18/32/4 20/34/4 19/33/4 146 | f 10/12/2 12/32/2 18/27/2 147 | f 18/27/2 16/1/2 10/12/2 148 | f 20/36/5 13/35/5 11/32/5 149 | f 11/32/5 19/27/5 20/36/5 150 | f 13/35/5 20/36/5 18/1/5 151 | f 18/1/5 12/12/5 13/35/5 152 | f 11/14/6 9/12/6 17/1/6 153 | f 17/1/6 19/5/6 11/14/6 154 | f 10/12/1 16/1/1 17/5/1 155 | f 17/5/1 9/14/1 10/12/1 156 | 157 | usemtl net 158 | 159 | f 13/38/2 4/37/2 3/39/2 160 | f 3/39/2 20/40/2 13/38/2 161 | f 13/38/6 3/39/6 4/37/6 162 | f 3/39/6 13/38/6 20/40/6 163 | -------------------------------------------------------------------------------- /game/assets/racing/flagCheckers.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl checkers 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 1 1 6 | Ks 0.330000 0.330000 0.330000 7 | map_Ka Textures/checkers.png 8 | map_Kd Textures/checkers.png 9 | 10 | newmtl _defaultMat 11 | Ka 0.000000 0.000000 0.000000 12 | Kd 1 1 1 13 | Ks 0.330000 0.330000 0.330000 14 | 15 | newmtl grey 16 | Ka 0.000000 0.000000 0.000000 17 | Kd 0.945098 0.9490196 0.9647059 18 | Ks 0.330000 0.330000 0.330000 19 | 20 | newmtl road 21 | Ka 0.000000 0.000000 0.000000 22 | Kd 0.2666667 0.2666667 0.2666667 23 | Ks 0.330000 0.330000 0.330000 24 | 25 | -------------------------------------------------------------------------------- /game/assets/racing/flagCheckersSmall.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl checkers 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 1 1 6 | Ks 0.330000 0.330000 0.330000 7 | map_Ka Textures/checkers.png 8 | map_Kd Textures/checkers.png 9 | 10 | newmtl _defaultMat 11 | Ka 0.000000 0.000000 0.000000 12 | Kd 1 1 1 13 | Ks 0.330000 0.330000 0.330000 14 | 15 | newmtl grey 16 | Ka 0.000000 0.000000 0.000000 17 | Kd 0.945098 0.9490196 0.9647059 18 | Ks 0.330000 0.330000 0.330000 19 | 20 | newmtl road 21 | Ka 0.000000 0.000000 0.000000 22 | Kd 0.2666667 0.2666667 0.2666667 23 | Ks 0.330000 0.330000 0.330000 24 | 25 | -------------------------------------------------------------------------------- /game/assets/racing/flagGreen.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl _defaultMat 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 1 1 1 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl grey 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.945098 0.9490196 0.9647059 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | newmtl road 19 | Ka 0.000000 0.000000 0.000000 20 | Kd 0.2666667 0.2666667 0.2666667 21 | Ks 0.330000 0.330000 0.330000 22 | 23 | -------------------------------------------------------------------------------- /game/assets/racing/flagRed.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl red 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.9098039 0.3333333 0.3254902 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl _defaultMat 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 1 1 1 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl grey 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.945098 0.9490196 0.9647059 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | newmtl road 19 | Ka 0.000000 0.000000 0.000000 20 | Kd 0.2666667 0.2666667 0.2666667 21 | Ks 0.330000 0.330000 0.330000 22 | 23 | -------------------------------------------------------------------------------- /game/assets/racing/flagTankco.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl tankco 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 1 1 6 | Ks 0.330000 0.330000 0.330000 7 | map_Ka Textures/tankco.png 8 | map_Kd Textures/tankco.png 9 | 10 | newmtl _defaultMat 11 | Ka 0.000000 0.000000 0.000000 12 | Kd 1 1 1 13 | Ks 0.330000 0.330000 0.330000 14 | 15 | newmtl grey 16 | Ka 0.000000 0.000000 0.000000 17 | Kd 0.945098 0.9490196 0.9647059 18 | Ks 0.330000 0.330000 0.330000 19 | 20 | newmtl road 21 | Ka 0.000000 0.000000 0.000000 22 | Kd 0.2666667 0.2666667 0.2666667 23 | Ks 0.330000 0.330000 0.330000 24 | 25 | -------------------------------------------------------------------------------- /game/assets/racing/grandStand.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl _defaultMat 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 1 1 1 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl red 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.9098039 0.3333333 0.3254902 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | newmtl road 19 | Ka 0.000000 0.000000 0.000000 20 | Kd 0.2666667 0.2666667 0.2666667 21 | Ks 0.330000 0.330000 0.330000 22 | 23 | -------------------------------------------------------------------------------- /game/assets/racing/grandStandAwning.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl red 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.9098039 0.3333333 0.3254902 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/grandStandCovered.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl _defaultMat 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 1 1 1 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl red 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.9098039 0.3333333 0.3254902 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | newmtl road 19 | Ka 0.000000 0.000000 0.000000 20 | Kd 0.2666667 0.2666667 0.2666667 21 | Ks 0.330000 0.330000 0.330000 22 | 23 | newmtl glass 24 | Ka 0.000000 0.000000 0.000000 25 | Kd 0.2980392 0.3764706 0.4666667 26 | Ks 0.330000 0.330000 0.330000 27 | 28 | -------------------------------------------------------------------------------- /game/assets/racing/grandStandCoveredRound.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl road 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.2666667 0.2666667 0.2666667 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl red 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.9098039 0.3333333 0.3254902 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl glass 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2980392 0.3764706 0.4666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | newmtl grey 19 | Ka 0.000000 0.000000 0.000000 20 | Kd 0.945098 0.9490196 0.9647059 21 | Ks 0.330000 0.330000 0.330000 22 | 23 | newmtl _defaultMat 24 | Ka 0.000000 0.000000 0.000000 25 | Kd 1 1 1 26 | Ks 0.330000 0.330000 0.330000 27 | 28 | -------------------------------------------------------------------------------- /game/assets/racing/grandStandRound.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl red 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.9098039 0.3333333 0.3254902 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | newmtl _defaultMat 19 | Ka 0.000000 0.000000 0.000000 20 | Kd 1 1 1 21 | Ks 0.330000 0.330000 0.330000 22 | 23 | -------------------------------------------------------------------------------- /game/assets/racing/grass.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | -------------------------------------------------------------------------------- /game/assets/racing/grass.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib grass.mtl 4 | 5 | g grass 6 | 7 | v 0 0 0 8 | v 0 0 1 9 | v -1 0 0 10 | v -1 0 1 11 | 12 | vn 0 1 0 13 | 14 | vt 0 0 15 | vt 0 39.37008 16 | vt 39.37008 0 17 | vt 39.37008 39.37008 18 | 19 | usemtl grass 20 | 21 | f 2/2/1 1/1/1 3/3/1 22 | f 3/3/1 4/4/1 2/2/1 23 | g grass 24 | 25 | 26 | 27 | 28 | usemtl grass 29 | 30 | f 2/2/1 1/1/1 3/3/1 31 | f 3/3/1 4/4/1 2/2/1 32 | -------------------------------------------------------------------------------- /game/assets/racing/lightColored.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl _defaultMat 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 1 1 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | newmtl pylon 19 | Ka 0.000000 0.000000 0.000000 20 | Kd 0.9607843 0.7254902 0.2588235 21 | Ks 0.330000 0.330000 0.330000 22 | 23 | newmtl red 24 | Ka 0.000000 0.000000 0.000000 25 | Kd 0.9098039 0.3333333 0.3254902 26 | Ks 0.330000 0.330000 0.330000 27 | 28 | newmtl grass 29 | Ka 0.000000 0.000000 0.000000 30 | Kd 0.3019608 0.5607843 0.4313726 31 | Ks 0.330000 0.330000 0.330000 32 | 33 | -------------------------------------------------------------------------------- /game/assets/racing/lightPostLarge.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl _defaultMat 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 1 1 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl pylon 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.9607843 0.7254902 0.2588235 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/lightPostModern.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl _defaultMat 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 1 1 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/lightPost_exclusive.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl _defaultMat 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 1 1 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl pylon 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.9607843 0.7254902 0.2588235 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/lightRed.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl _defaultMat 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 1 1 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | newmtl pylon 19 | Ka 0.000000 0.000000 0.000000 20 | Kd 0.9607843 0.7254902 0.2588235 21 | Ks 0.330000 0.330000 0.330000 22 | 23 | newmtl red 24 | Ka 0.000000 0.000000 0.000000 25 | Kd 0.9098039 0.3333333 0.3254902 26 | Ks 0.330000 0.330000 0.330000 27 | 28 | -------------------------------------------------------------------------------- /game/assets/racing/lightRedDouble.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl _defaultMat 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 1 1 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | newmtl pylon 19 | Ka 0.000000 0.000000 0.000000 20 | Kd 0.9607843 0.7254902 0.2588235 21 | Ks 0.330000 0.330000 0.330000 22 | 23 | newmtl red 24 | Ka 0.000000 0.000000 0.000000 25 | Kd 0.9098039 0.3333333 0.3254902 26 | Ks 0.330000 0.330000 0.330000 27 | 28 | -------------------------------------------------------------------------------- /game/assets/racing/overhead.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | -------------------------------------------------------------------------------- /game/assets/racing/overheadLights.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl road 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.2666667 0.2666667 0.2666667 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl red 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.9098039 0.3333333 0.3254902 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/overheadRound.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl road 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.2666667 0.2666667 0.2666667 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/overheadRoundColored.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl red 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.9098039 0.3333333 0.3254902 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/pitsGarage.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl _defaultMat 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 1 1 1 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl tankco 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 1 1 1 16 | Ks 0.330000 0.330000 0.330000 17 | map_Ka Textures/tankco.png 18 | map_Kd Textures/tankco.png 19 | 20 | newmtl red 21 | Ka 0.000000 0.000000 0.000000 22 | Kd 0.9098039 0.3333333 0.3254902 23 | Ks 0.330000 0.330000 0.330000 24 | 25 | -------------------------------------------------------------------------------- /game/assets/racing/pitsGarageClosed.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl _defaultMat 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 1 1 1 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl tankco 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 1 1 1 16 | Ks 0.330000 0.330000 0.330000 17 | map_Ka Textures/tankco.png 18 | map_Kd Textures/tankco.png 19 | 20 | newmtl red 21 | Ka 0.000000 0.000000 0.000000 22 | Kd 0.9098039 0.3333333 0.3254902 23 | Ks 0.330000 0.330000 0.330000 24 | 25 | newmtl glass 26 | Ka 0.000000 0.000000 0.000000 27 | Kd 0.2980392 0.3764706 0.4666667 28 | Ks 0.330000 0.330000 0.330000 29 | 30 | -------------------------------------------------------------------------------- /game/assets/racing/pitsGarageCorner.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl _defaultMat 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 1 1 1 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl red 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.9098039 0.3333333 0.3254902 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | newmtl road 19 | Ka 0.000000 0.000000 0.000000 20 | Kd 0.2666667 0.2666667 0.2666667 21 | Ks 0.330000 0.330000 0.330000 22 | 23 | newmtl glass 24 | Ka 0.000000 0.000000 0.000000 25 | Kd 0.2980392 0.3764706 0.4666667 26 | Ks 0.330000 0.330000 0.330000 27 | 28 | -------------------------------------------------------------------------------- /game/assets/racing/pitsOffice.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl red 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.9098039 0.3333333 0.3254902 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl glass 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2980392 0.3764706 0.4666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | newmtl _defaultMat 19 | Ka 0.000000 0.000000 0.000000 20 | Kd 1 1 1 21 | Ks 0.330000 0.330000 0.330000 22 | 23 | -------------------------------------------------------------------------------- /game/assets/racing/pitsOfficeCorner.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl glass 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.2980392 0.3764706 0.4666667 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl red 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.9098039 0.3333333 0.3254902 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/pitsOfficeRoof.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl red 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.9098039 0.3333333 0.3254902 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl glass 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2980392 0.3764706 0.4666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | newmtl _defaultMat 19 | Ka 0.000000 0.000000 0.000000 20 | Kd 1 1 1 21 | Ks 0.330000 0.330000 0.330000 22 | 23 | -------------------------------------------------------------------------------- /game/assets/racing/pylon.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl pylon 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.9607843 0.7254902 0.2588235 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | -------------------------------------------------------------------------------- /game/assets/racing/raceCarGreen.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl carTire 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.2666667 0.2666667 0.2666667 6 | Ks 0.000000 0.000000 0.000000 7 | 8 | newmtl grass 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.3019608 0.5607843 0.4313726 11 | Ks 0.000000 0.000000 0.000000 12 | 13 | newmtl glass 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2980392 0.3764706 0.4666667 16 | Ks 1.000000 1.000000 1.000000 17 | 18 | newmtl grey 19 | Ka 0.000000 0.000000 0.000000 20 | Kd 0.945098 0.9490196 0.9647059 21 | Ks 0.000000 0.000000 0.000000 22 | 23 | -------------------------------------------------------------------------------- /game/assets/racing/raceCarOrange.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl carTire 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.2666667 0.2666667 0.2666667 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl pylon 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.9607843 0.7254902 0.2588235 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl glass 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2980392 0.3764706 0.4666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | newmtl grey 19 | Ka 0.000000 0.000000 0.000000 20 | Kd 0.945098 0.9490196 0.9647059 21 | Ks 0.330000 0.330000 0.330000 22 | 23 | -------------------------------------------------------------------------------- /game/assets/racing/raceCarRed.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl carTire 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.2666667 0.2666667 0.2666667 6 | Ks 0.000000 0.000000 0.000000 7 | 8 | newmtl red 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.9098039 0.3333333 0.3254902 11 | Ks 0.000000 0.000000 0.000000 12 | 13 | newmtl glass 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2980392 0.3764706 0.4666667 16 | Ks 1.000000 1.000000 1.000000 17 | 18 | newmtl grey 19 | Ka 0.000000 0.000000 0.000000 20 | Kd 0.945098 0.9490196 0.9647059 21 | Ks 0.000000 0.000000 0.000000 22 | 23 | -------------------------------------------------------------------------------- /game/assets/racing/raceCarWhite.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl carTire 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.2666667 0.2666667 0.2666667 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl glass 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2980392 0.3764706 0.4666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/radarEquipment.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl road 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.2666667 0.2666667 0.2666667 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/rail.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | -------------------------------------------------------------------------------- /game/assets/racing/railDouble.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | -------------------------------------------------------------------------------- /game/assets/racing/ramp.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl bark 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.8313726 0.654902 0.4235294 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/roadBump.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerBridgeLarge.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl wall 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 0.9490196 0.8705882 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerBridgeLarger.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl wall 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 1 0.9490196 0.8705882 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerBridgeSmall.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl wall 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 0.9490196 0.8705882 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerLarge.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.000000 0.000000 0.000000 7 | 8 | newmtl grass 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.3019608 0.5607843 0.4313726 11 | Ks 0.000000 0.000000 0.000000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.000000 0.000000 0.000000 17 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerLargeBorder.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl white 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 1 1 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl red 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.9098039 0.3333333 0.3254902 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerLargeBorderInner.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl red 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.9098039 0.3333333 0.3254902 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl white 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 1 1 1 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerLargeSand.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl sand 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.7830189 0.7193986 0.5872642 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerLargeSand.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib roadCornerLargeSand.mtl 4 | 5 | g roadCornerLargeSand 6 | 7 | v 0.53 0 0 8 | v 0.5083555 0 0.3302313 9 | v 0 0 0 10 | v 0.4437924 0 0.6548122 11 | v 0.3374152 0 0.9681891 12 | v 0.1910442 0 1.265 13 | v 0.007183939 0 1.540166 14 | v -0.01711029 0 0.2610524 15 | v -0.2110198 0 1.78898 16 | v -0.06814834 0 0.5176381 17 | v -0.1522409 0 0.7653669 18 | v -0.2679492 0 1 19 | v -0.4598336 0 2.007184 20 | v -0.4132933 0 1.217523 21 | v -0.5857864 0 1.414214 22 | v -0.735 0 2.191044 23 | v -0.7824771 0 1.586707 24 | v -1.031811 0 2.337415 25 | v -1 0 1.732051 26 | v -1.234633 0 1.847759 27 | v -1.345188 0 2.443792 28 | v -1.482362 0 1.931852 29 | v -1.669769 0 2.508355 30 | v -1.738948 0 1.98289 31 | v -2 0 2.53 32 | v -2 0 2 33 | 34 | vn 0 1 0 35 | 36 | vt -20.86614 0 37 | vt -20.014 13.00123 38 | vt 0 0 39 | vt -17.47214 25.78001 40 | vt -13.28406 38.11768 41 | vt -7.521428 49.80315 42 | vt -0.2828327 60.63647 43 | vt 0.673633 10.27765 44 | vt 8.307868 70.43229 45 | vt 2.683006 20.37945 46 | vt 5.993738 30.13255 47 | vt 10.54918 39.37008 48 | vt 18.10369 79.02299 49 | vt 16.27139 47.93397 50 | vt 23.06246 55.6777 51 | vt 28.93701 86.26159 52 | vt 30.80619 62.46877 53 | vt 40.62248 92.02422 54 | vt 39.37008 68.19098 55 | vt 48.6076 72.74642 56 | vt 52.96015 96.2123 57 | vt 58.36071 76.05715 58 | vt 65.73893 98.75415 59 | vt 68.4625 78.06653 60 | vt 78.74016 99.6063 61 | vt 78.74016 78.74016 62 | 63 | usemtl sand 64 | 65 | f 2/2/1 1/1/1 3/3/1 66 | f 3/3/1 4/4/1 2/2/1 67 | f 3/3/1 5/5/1 4/4/1 68 | f 3/3/1 6/6/1 5/5/1 69 | f 3/3/1 7/7/1 6/6/1 70 | f 3/3/1 8/8/1 7/7/1 71 | f 8/8/1 9/9/1 7/7/1 72 | f 8/8/1 10/10/1 9/9/1 73 | f 10/10/1 11/11/1 9/9/1 74 | f 11/11/1 12/12/1 9/9/1 75 | f 12/12/1 13/13/1 9/9/1 76 | f 12/12/1 14/14/1 13/13/1 77 | f 14/14/1 15/15/1 13/13/1 78 | f 15/15/1 16/16/1 13/13/1 79 | f 15/15/1 17/17/1 16/16/1 80 | f 17/17/1 18/18/1 16/16/1 81 | f 17/17/1 19/19/1 18/18/1 82 | f 19/19/1 20/20/1 18/18/1 83 | f 20/20/1 21/21/1 18/18/1 84 | f 20/20/1 22/22/1 21/21/1 85 | f 22/22/1 23/23/1 21/21/1 86 | f 22/22/1 24/24/1 23/23/1 87 | f 24/24/1 25/25/1 23/23/1 88 | f 24/24/1 26/26/1 25/25/1 89 | g roadCornerLargeSand 90 | 91 | 92 | 93 | 94 | usemtl sand 95 | 96 | f 2/2/1 1/1/1 3/3/1 97 | f 3/3/1 4/4/1 2/2/1 98 | f 3/3/1 5/5/1 4/4/1 99 | f 3/3/1 6/6/1 5/5/1 100 | f 3/3/1 7/7/1 6/6/1 101 | f 3/3/1 8/8/1 7/7/1 102 | f 8/8/1 9/9/1 7/7/1 103 | f 8/8/1 10/10/1 9/9/1 104 | f 10/10/1 11/11/1 9/9/1 105 | f 11/11/1 12/12/1 9/9/1 106 | f 12/12/1 13/13/1 9/9/1 107 | f 12/12/1 14/14/1 13/13/1 108 | f 14/14/1 15/15/1 13/13/1 109 | f 15/15/1 16/16/1 13/13/1 110 | f 15/15/1 17/17/1 16/16/1 111 | f 17/17/1 18/18/1 16/16/1 112 | f 17/17/1 19/19/1 18/18/1 113 | f 19/19/1 20/20/1 18/18/1 114 | f 20/20/1 21/21/1 18/18/1 115 | f 20/20/1 22/22/1 21/21/1 116 | f 22/22/1 23/23/1 21/21/1 117 | f 22/22/1 24/24/1 23/23/1 118 | f 24/24/1 25/25/1 23/23/1 119 | f 24/24/1 26/26/1 25/25/1 120 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerLargeSandInner.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl sand 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.7830189 0.7193986 0.5872642 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerLargeSandInner.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib roadCornerLargeSandInner.mtl 4 | 5 | g roadCornerLargeSandInner 6 | 7 | v -1 0 0 8 | v -1.008555 0 0.1305262 9 | v -1.53 0 0 10 | v -1.034074 0 0.258819 11 | v -1.07612 0 0.3826834 12 | v -1.133975 0 0.5 13 | v -1.206647 0 0.6087614 14 | v -1.292893 0 0.7071067 15 | v -1.391239 0 0.7933533 16 | v -1.5 0 0.8660254 17 | v -1.534021 0 0.06134731 18 | v -1.617317 0 0.9238795 19 | v -1.546015 0 0.121645 20 | v -1.565777 0 0.1798612 21 | v -1.592968 0 0.235 22 | v -1.627124 0 0.2861179 23 | v -1.741181 0 0.9659258 24 | v -1.66766 0 0.3323402 25 | v -1.713882 0 0.372876 26 | v -1.765 0 0.4070319 27 | v -1.869474 0 0.9914449 28 | v -1.820139 0 0.4342234 29 | v -1.878355 0 0.4539851 30 | v -2 0 1 31 | v -1.938653 0 0.4659791 32 | v -2 0 0.47 33 | 34 | vn 0 1 0 35 | 36 | vt 39.37008 0 37 | vt 39.70689 5.138826 38 | vt 60.23622 0 39 | vt 40.71158 10.18973 40 | vt 42.36695 15.06628 41 | vt 44.64467 19.68504 42 | vt 47.50578 23.96699 43 | vt 50.90131 27.83885 44 | vt 54.77317 31.23438 45 | vt 59.05512 34.09549 46 | vt 60.39452 2.415248 47 | vt 63.67388 36.37321 48 | vt 60.86673 4.789171 49 | vt 61.64475 7.08115 50 | vt 62.71528 9.251968 51 | vt 64.06 11.26448 52 | vt 68.55043 38.02858 53 | vt 65.6559 13.08426 54 | vt 67.47568 14.68016 55 | vt 69.48819 16.02488 56 | vt 73.60133 39.03326 57 | vt 71.659 17.09541 58 | vt 73.95099 17.87343 59 | vt 78.74016 39.37008 60 | vt 76.32491 18.34563 61 | vt 78.74016 18.50394 62 | 63 | usemtl sand 64 | 65 | f 2/2/1 1/1/1 3/3/1 66 | f 3/3/1 4/4/1 2/2/1 67 | f 3/3/1 5/5/1 4/4/1 68 | f 3/3/1 6/6/1 5/5/1 69 | f 3/3/1 7/7/1 6/6/1 70 | f 3/3/1 8/8/1 7/7/1 71 | f 3/3/1 9/9/1 8/8/1 72 | f 3/3/1 10/10/1 9/9/1 73 | f 3/3/1 11/11/1 10/10/1 74 | f 11/11/1 12/12/1 10/10/1 75 | f 11/11/1 13/13/1 12/12/1 76 | f 13/13/1 14/14/1 12/12/1 77 | f 14/14/1 15/15/1 12/12/1 78 | f 15/15/1 16/16/1 12/12/1 79 | f 16/16/1 17/17/1 12/12/1 80 | f 16/16/1 18/18/1 17/17/1 81 | f 18/18/1 19/19/1 17/17/1 82 | f 19/19/1 20/20/1 17/17/1 83 | f 20/20/1 21/21/1 17/17/1 84 | f 20/20/1 22/22/1 21/21/1 85 | f 22/22/1 23/23/1 21/21/1 86 | f 23/23/1 24/24/1 21/21/1 87 | f 23/23/1 25/25/1 24/24/1 88 | f 25/25/1 26/26/1 24/24/1 89 | g roadCornerLargeSandInner 90 | 91 | 92 | 93 | 94 | usemtl sand 95 | 96 | f 2/2/1 1/1/1 3/3/1 97 | f 3/3/1 4/4/1 2/2/1 98 | f 3/3/1 5/5/1 4/4/1 99 | f 3/3/1 6/6/1 5/5/1 100 | f 3/3/1 7/7/1 6/6/1 101 | f 3/3/1 8/8/1 7/7/1 102 | f 3/3/1 9/9/1 8/8/1 103 | f 3/3/1 10/10/1 9/9/1 104 | f 3/3/1 11/11/1 10/10/1 105 | f 11/11/1 12/12/1 10/10/1 106 | f 11/11/1 13/13/1 12/12/1 107 | f 13/13/1 14/14/1 12/12/1 108 | f 14/14/1 15/15/1 12/12/1 109 | f 15/15/1 16/16/1 12/12/1 110 | f 16/16/1 17/17/1 12/12/1 111 | f 16/16/1 18/18/1 17/17/1 112 | f 18/18/1 19/19/1 17/17/1 113 | f 19/19/1 20/20/1 17/17/1 114 | f 20/20/1 21/21/1 17/17/1 115 | f 20/20/1 22/22/1 21/21/1 116 | f 22/22/1 23/23/1 21/21/1 117 | f 23/23/1 24/24/1 21/21/1 118 | f 23/23/1 25/25/1 24/24/1 119 | f 25/25/1 26/26/1 24/24/1 120 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerLargeWall.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl white 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 1 1 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl red 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.9098039 0.3333333 0.3254902 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerLargeWallInner.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl white 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 1 1 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl red 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.9098039 0.3333333 0.3254902 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl _defaultMat 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 1 1 1 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerLarger.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl _defaultMat 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 1 1 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grass 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.3019608 0.5607843 0.4313726 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerLargerBorder.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl red 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.9098039 0.3333333 0.3254902 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl white 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 1 1 1 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerLargerBorderInner.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl red 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.9098039 0.3333333 0.3254902 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl white 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 1 1 1 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerLargerSand.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl sand 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.7830189 0.7193986 0.5872642 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerLargerSand.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib roadCornerLargerSand.mtl 4 | 5 | g roadCornerLargerSand 6 | 7 | v 0.53 0 0 8 | v 0.4998004 0 0.4607574 9 | v 0 0 0 10 | v 0.4097182 0 0.9136313 11 | v 0.2612948 0 1.350873 12 | v 0.05706969 0 1.765 13 | v -0.0256654 0 0.3915786 14 | v -0.1994627 0 2.148928 15 | v -0.1022225 0 0.7764572 16 | v -0.2283614 0 1.14805 17 | v -0.503913 0 2.496087 18 | v -0.4019238 0 1.5 19 | v -0.61994 0 1.826284 20 | v -0.8510722 0 2.800537 21 | v -0.8786798 0 2.12132 22 | v -1.235 0 3.057069 23 | v -1.173716 0 2.38006 24 | v -1.5 0 2.598076 25 | v -1.649127 0 3.261294 26 | v -1.85195 0 2.771638 27 | v -2.086369 0 3.409718 28 | v -2.223543 0 2.897777 29 | v -2.539243 0 3.4998 30 | v -2.608421 0 2.974334 31 | v -3 0 3.53 32 | v -3 0 3 33 | 34 | vn 0 1 0 35 | 36 | vt -20.86614 0 37 | vt -19.67718 18.14006 38 | vt 0 0 39 | vt -16.13064 35.96973 40 | vt -10.2872 53.18396 41 | vt -2.246838 69.48819 42 | vt 1.010449 15.41648 43 | vt 7.852862 84.60346 44 | vt 4.024508 30.56918 45 | vt 8.990606 45.19883 46 | vt 19.8391 98.27114 47 | vt 15.82377 59.05512 48 | vt 24.40709 71.90096 49 | vt 33.50678 110.2574 50 | vt 34.59369 83.51655 51 | vt 48.62205 120.3571 52 | vt 46.20928 93.70315 53 | vt 59.05512 102.2865 54 | vt 64.92628 128.3974 55 | vt 72.91141 109.1196 56 | vt 82.1405 134.2409 57 | vt 87.54106 114.0857 58 | vt 99.97018 137.7874 59 | vt 102.6938 117.0998 60 | vt 118.1102 138.9764 61 | vt 118.1102 118.1102 62 | 63 | usemtl sand 64 | 65 | f 2/2/1 1/1/1 3/3/1 66 | f 3/3/1 4/4/1 2/2/1 67 | f 3/3/1 5/5/1 4/4/1 68 | f 3/3/1 6/6/1 5/5/1 69 | f 3/3/1 7/7/1 6/6/1 70 | f 7/7/1 8/8/1 6/6/1 71 | f 7/7/1 9/9/1 8/8/1 72 | f 9/9/1 10/10/1 8/8/1 73 | f 10/10/1 11/11/1 8/8/1 74 | f 10/10/1 12/12/1 11/11/1 75 | f 12/12/1 13/13/1 11/11/1 76 | f 13/13/1 14/14/1 11/11/1 77 | f 13/13/1 15/15/1 14/14/1 78 | f 15/15/1 16/16/1 14/14/1 79 | f 15/15/1 17/17/1 16/16/1 80 | f 17/17/1 18/18/1 16/16/1 81 | f 18/18/1 19/19/1 16/16/1 82 | f 18/18/1 20/20/1 19/19/1 83 | f 20/20/1 21/21/1 19/19/1 84 | f 20/20/1 22/22/1 21/21/1 85 | f 22/22/1 23/23/1 21/21/1 86 | f 22/22/1 24/24/1 23/23/1 87 | f 24/24/1 25/25/1 23/23/1 88 | f 24/24/1 26/26/1 25/25/1 89 | g roadCornerLargerSand 90 | 91 | 92 | 93 | 94 | usemtl sand 95 | 96 | f 2/2/1 1/1/1 3/3/1 97 | f 3/3/1 4/4/1 2/2/1 98 | f 3/3/1 5/5/1 4/4/1 99 | f 3/3/1 6/6/1 5/5/1 100 | f 3/3/1 7/7/1 6/6/1 101 | f 7/7/1 8/8/1 6/6/1 102 | f 7/7/1 9/9/1 8/8/1 103 | f 9/9/1 10/10/1 8/8/1 104 | f 10/10/1 11/11/1 8/8/1 105 | f 10/10/1 12/12/1 11/11/1 106 | f 12/12/1 13/13/1 11/11/1 107 | f 13/13/1 14/14/1 11/11/1 108 | f 13/13/1 15/15/1 14/14/1 109 | f 15/15/1 16/16/1 14/14/1 110 | f 15/15/1 17/17/1 16/16/1 111 | f 17/17/1 18/18/1 16/16/1 112 | f 18/18/1 19/19/1 16/16/1 113 | f 18/18/1 20/20/1 19/19/1 114 | f 20/20/1 21/21/1 19/19/1 115 | f 20/20/1 22/22/1 21/21/1 116 | f 22/22/1 23/23/1 21/21/1 117 | f 22/22/1 24/24/1 23/23/1 118 | f 24/24/1 25/25/1 23/23/1 119 | f 24/24/1 26/26/1 25/25/1 120 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerLargerSandInner.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl sand 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.7830189 0.7193986 0.5872642 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerLargerSandInner.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib roadCornerLargerSandInner.mtl 4 | 5 | g roadCornerLargerSandInner 6 | 7 | v -1 0 0 8 | v -1.01711 0 0.2610524 9 | v -1.53 0 0 10 | v -1.068148 0 0.5176381 11 | v -1.152241 0 0.7653669 12 | v -1.267949 0 1 13 | v -1.413293 0 1.217523 14 | v -1.585786 0 1.414214 15 | v -1.542576 0 0.1918735 16 | v -1.580089 0 0.380464 17 | v -1.641897 0 0.5625447 18 | v -1.782477 0 1.586707 19 | v -1.726943 0 0.735 20 | v -1.833771 0 0.8948792 21 | v -2 0 1.732051 22 | v -1.960553 0 1.039447 23 | v -2.105121 0 1.166229 24 | v -2.234633 0 1.847759 25 | v -2.265 0 1.273057 26 | v -2.482362 0 1.931852 27 | v -2.437455 0 1.358103 28 | v -2.619536 0 1.419911 29 | v -2.738948 0 1.98289 30 | v -2.808126 0 1.457424 31 | v -3 0 2 32 | v -3 0 1.47 33 | 34 | vn 0 1 0 35 | 36 | vt 39.37008 0 37 | vt 40.04371 10.27765 38 | vt 60.23622 0 39 | vt 42.05309 20.37945 40 | vt 45.36382 30.13255 41 | vt 49.91926 39.37008 42 | vt 55.64147 47.93397 43 | vt 62.43254 55.6777 44 | vt 60.73134 7.554075 45 | vt 62.20823 14.9789 46 | vt 64.64162 22.14743 47 | vt 70.17626 62.46877 48 | vt 67.98987 28.93701 49 | vt 72.19569 35.23147 50 | vt 78.74016 68.19098 51 | vt 77.18713 40.92311 52 | vt 82.87877 45.91454 53 | vt 87.97768 72.74642 54 | vt 89.17323 50.12037 55 | vt 97.73078 76.05715 56 | vt 95.96281 53.46862 57 | vt 103.1313 55.90201 58 | vt 107.8326 78.06653 59 | vt 110.5562 57.37889 60 | vt 118.1102 78.74016 61 | vt 118.1102 57.87402 62 | 63 | usemtl sand 64 | 65 | f 2/2/1 1/1/1 3/3/1 66 | f 3/3/1 4/4/1 2/2/1 67 | f 3/3/1 5/5/1 4/4/1 68 | f 3/3/1 6/6/1 5/5/1 69 | f 3/3/1 7/7/1 6/6/1 70 | f 3/3/1 8/8/1 7/7/1 71 | f 3/3/1 9/9/1 8/8/1 72 | f 9/9/1 10/10/1 8/8/1 73 | f 10/10/1 11/11/1 8/8/1 74 | f 11/11/1 12/12/1 8/8/1 75 | f 11/11/1 13/13/1 12/12/1 76 | f 13/13/1 14/14/1 12/12/1 77 | f 14/14/1 15/15/1 12/12/1 78 | f 14/14/1 16/16/1 15/15/1 79 | f 16/16/1 17/17/1 15/15/1 80 | f 17/17/1 18/18/1 15/15/1 81 | f 17/17/1 19/19/1 18/18/1 82 | f 19/19/1 20/20/1 18/18/1 83 | f 19/19/1 21/21/1 20/20/1 84 | f 21/21/1 22/22/1 20/20/1 85 | f 22/22/1 23/23/1 20/20/1 86 | f 22/22/1 24/24/1 23/23/1 87 | f 24/24/1 25/25/1 23/23/1 88 | f 24/24/1 26/26/1 25/25/1 89 | g roadCornerLargerSandInner 90 | 91 | 92 | 93 | 94 | usemtl sand 95 | 96 | f 2/2/1 1/1/1 3/3/1 97 | f 3/3/1 4/4/1 2/2/1 98 | f 3/3/1 5/5/1 4/4/1 99 | f 3/3/1 6/6/1 5/5/1 100 | f 3/3/1 7/7/1 6/6/1 101 | f 3/3/1 8/8/1 7/7/1 102 | f 3/3/1 9/9/1 8/8/1 103 | f 9/9/1 10/10/1 8/8/1 104 | f 10/10/1 11/11/1 8/8/1 105 | f 11/11/1 12/12/1 8/8/1 106 | f 11/11/1 13/13/1 12/12/1 107 | f 13/13/1 14/14/1 12/12/1 108 | f 14/14/1 15/15/1 12/12/1 109 | f 14/14/1 16/16/1 15/15/1 110 | f 16/16/1 17/17/1 15/15/1 111 | f 17/17/1 18/18/1 15/15/1 112 | f 17/17/1 19/19/1 18/18/1 113 | f 19/19/1 20/20/1 18/18/1 114 | f 19/19/1 21/21/1 20/20/1 115 | f 21/21/1 22/22/1 20/20/1 116 | f 22/22/1 23/23/1 20/20/1 117 | f 22/22/1 24/24/1 23/23/1 118 | f 24/24/1 25/25/1 23/23/1 119 | f 24/24/1 26/26/1 25/25/1 120 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerLargerWall.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl white 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 1 1 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl red 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.9098039 0.3333333 0.3254902 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerLargerWallInner.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl red 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.9098039 0.3333333 0.3254902 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl white 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 1 1 1 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerSmall.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.000000 0.000000 0.000000 7 | 8 | newmtl grass 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.3019608 0.5607843 0.4313726 11 | Ks 0.000000 0.000000 0.000000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.000000 0.000000 0.000000 17 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerSmallBorder.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl red 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.9098039 0.3333333 0.3254902 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl white 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 1 1 1 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerSmallSand.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl sand 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.7830189 0.7193986 0.5872642 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerSmallSand.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib roadCornerSmallSand.mtl 4 | 5 | g roadCornerSmallSand 6 | 7 | v 0.53 0 0 8 | v 0.5169106 0 0.1997051 9 | v 0 0 0 10 | v 0.4778665 0 0.3959931 11 | v 0.4135357 0 0.5855056 12 | v 0.3250189 0 0.765 13 | v 0.2138306 0 0.9314049 14 | v 0.08187339 0 1.081873 15 | v 0 0 1.153674 16 | v -0.008555144 0 0.1305262 17 | v -0.06859502 0 1.213831 18 | v -0.03407416 0 0.258819 19 | v -0.07612047 0 0.3826834 20 | v -0.235 0 1.325019 21 | v -0.1339746 0 0.5 22 | v -0.2066467 0 0.6087614 23 | v -0.2928932 0 0.7071067 24 | v -0.4144944 0 1.413536 25 | v -0.3912386 0 0.7933533 26 | v -0.5 0 0.8660254 27 | v -0.6040069 0 1.477866 28 | v -0.6173166 0 0.9238795 29 | v -0.8002949 0 1.516911 30 | v -0.741181 0 0.9659258 31 | v -0.8694738 0 0.9914449 32 | v -1 0 1.53 33 | v -1 0 1 34 | 35 | vn 0 1 0 36 | 37 | vt -20.86614 0 38 | vt -20.35081 7.862404 39 | vt 0 0 40 | vt -18.81364 15.59028 41 | vt -16.28093 23.0514 42 | vt -12.79602 30.11811 43 | vt -8.418528 36.66949 44 | vt -3.223361 42.59344 45 | vt 0 45.42025 46 | vt 0.3368165 5.138826 47 | vt 2.700591 47.78861 48 | vt 1.341503 10.18973 49 | vt 2.996869 15.06628 50 | vt 9.251968 52.1661 51 | vt 5.27459 19.68504 52 | vt 8.135695 23.96699 53 | vt 11.53123 27.83885 54 | vt 16.31868 55.65101 55 | vt 15.40309 31.23438 56 | vt 19.68504 34.09549 57 | vt 23.7798 58.18372 58 | vt 24.3038 36.37321 59 | vt 31.50768 59.72089 60 | vt 29.18035 38.02858 61 | vt 34.23125 39.03326 62 | vt 39.37008 60.23622 63 | vt 39.37008 39.37008 64 | 65 | usemtl sand 66 | 67 | f 2/2/1 1/1/1 3/3/1 68 | f 3/3/1 4/4/1 2/2/1 69 | f 3/3/1 5/5/1 4/4/1 70 | f 3/3/1 6/6/1 5/5/1 71 | f 3/3/1 7/7/1 6/6/1 72 | f 3/3/1 8/8/1 7/7/1 73 | f 3/3/1 9/9/1 8/8/1 74 | f 3/3/1 10/10/1 9/9/1 75 | f 10/10/1 11/11/1 9/9/1 76 | f 10/10/1 12/12/1 11/11/1 77 | f 12/12/1 13/13/1 11/11/1 78 | f 13/13/1 14/14/1 11/11/1 79 | f 13/13/1 15/15/1 14/14/1 80 | f 15/15/1 16/16/1 14/14/1 81 | f 16/16/1 17/17/1 14/14/1 82 | f 17/17/1 18/18/1 14/14/1 83 | f 17/17/1 19/19/1 18/18/1 84 | f 19/19/1 20/20/1 18/18/1 85 | f 20/20/1 21/21/1 18/18/1 86 | f 20/20/1 22/22/1 21/21/1 87 | f 22/22/1 23/23/1 21/21/1 88 | f 22/22/1 24/24/1 23/23/1 89 | f 24/24/1 25/25/1 23/23/1 90 | f 25/25/1 26/26/1 23/23/1 91 | f 25/25/1 27/27/1 26/26/1 92 | g roadCornerSmallSand 93 | 94 | 95 | 96 | 97 | usemtl sand 98 | 99 | f 2/2/1 1/1/1 3/3/1 100 | f 3/3/1 4/4/1 2/2/1 101 | f 3/3/1 5/5/1 4/4/1 102 | f 3/3/1 6/6/1 5/5/1 103 | f 3/3/1 7/7/1 6/6/1 104 | f 3/3/1 8/8/1 7/7/1 105 | f 3/3/1 9/9/1 8/8/1 106 | f 3/3/1 10/10/1 9/9/1 107 | f 10/10/1 11/11/1 9/9/1 108 | f 10/10/1 12/12/1 11/11/1 109 | f 12/12/1 13/13/1 11/11/1 110 | f 13/13/1 14/14/1 11/11/1 111 | f 13/13/1 15/15/1 14/14/1 112 | f 15/15/1 16/16/1 14/14/1 113 | f 16/16/1 17/17/1 14/14/1 114 | f 17/17/1 18/18/1 14/14/1 115 | f 17/17/1 19/19/1 18/18/1 116 | f 19/19/1 20/20/1 18/18/1 117 | f 20/20/1 21/21/1 18/18/1 118 | f 20/20/1 22/22/1 21/21/1 119 | f 22/22/1 23/23/1 21/21/1 120 | f 22/22/1 24/24/1 23/23/1 121 | f 24/24/1 25/25/1 23/23/1 122 | f 25/25/1 26/26/1 23/23/1 123 | f 25/25/1 27/27/1 26/26/1 124 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerSmallSquare.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl _defaultMat 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 1 1 1 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadCornerSmallWall.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl red 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.9098039 0.3333333 0.3254902 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl white 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 1 1 1 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/roadCrossing.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grass 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.3019608 0.5607843 0.4313726 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadCurved.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl road 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.2666667 0.2666667 0.2666667 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl grass 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.3019608 0.5607843 0.4313726 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadCurvedSplit.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grass 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.3019608 0.5607843 0.4313726 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadEnd.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grass 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.3019608 0.5607843 0.4313726 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadPitEntry.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grass 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.3019608 0.5607843 0.4313726 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadPitEntry.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib roadPitEntry.mtl 4 | 5 | g roadPitEntry 6 | 7 | v -0.8451352 0.02 0 8 | v -0.8451352 0.01 0 9 | v -1.845135 0.02 2 10 | v -1.845135 0.01 2 11 | v -0.9183474 0 0 12 | v -0.9183474 0.02 0 13 | v -1.918347 0 2 14 | v -1.918347 0.02 2 15 | v -0.8451352 0.01 1.38054 16 | v -0.8451352 0.02 1.38054 17 | v -1.154865 0.01 2 18 | v -1.154865 0.02 2 19 | v -0.9183474 0.02 1.67339 20 | v -0.9183474 0 1.67339 21 | v -1.081653 0.02 2 22 | v -1.081653 0 2 23 | v -0.9183474 0 2 24 | v -0.9183474 0.02 2 25 | v -0.08165261 0.02 0 26 | v -0.08165261 0.02 2 27 | v -0.1548649 0.02 0 28 | v -0.1548649 0.02 2 29 | v -0.08165261 0 0 30 | v -0.08165261 0 2 31 | v -0.1548649 0.01 0 32 | v -0.1548649 0.01 2 33 | v -0.8451352 0.02 2 34 | v -0.8451352 0.01 2 35 | v -1 0 0 36 | v -2 0 2 37 | v 0 0 0 38 | v 0 0 2 39 | 40 | vn 0.8944272 0 0.4472136 41 | vn -0.8944272 0 -0.4472136 42 | vn 0 1 0 43 | vn -1 0 0 44 | vn 1 0 0 45 | 46 | vt -14.88015 0.7874016 47 | vt -14.88015 0.3937008 48 | vt -102.9143 0.7874016 49 | vt -102.9143 0.3937008 50 | vt 16.16919 -2.451382E-13 51 | vt 16.16919 0.7874016 52 | vt 104.2034 -2.451382E-13 53 | vt 104.2034 0.7874016 54 | vt 33.27304 9.030845E-18 55 | vt 72.64311 78.74016 56 | vt 36.15541 2.843074E-14 57 | vt 75.52549 78.74016 58 | vt 63.49405 0.3937008 59 | vt 63.49405 0.7874016 60 | vt 90.76086 0.3937008 61 | vt 90.76086 0.7874016 62 | vt -75.09538 0.7874016 63 | vt -75.09538 -4.605153E-15 64 | vt -89.47182 0.7874016 65 | vt -89.47182 -4.605153E-15 66 | vt 65.88148 2.640143E-30 67 | vt 65.88148 0.7874016 68 | vt 78.74016 6.310887E-30 69 | vt 78.74016 0.7874016 70 | vt 3.21467 2.841492E-14 71 | vt 3.21467 78.74016 72 | vt 6.097044 -6.785073E-18 73 | vt 6.097044 78.74016 74 | vt -2.856661E-14 0.7874016 75 | vt -2.856661E-14 1.731856E-14 76 | vt -78.74016 0.7874016 77 | vt -78.74016 1.731856E-14 78 | vt 4.549067E-15 0.3937008 79 | vt 4.549067E-15 0.7874016 80 | vt 78.74016 0.3937008 81 | vt -54.35198 0.7874016 82 | vt -54.35198 0.3937008 83 | vt -78.74016 0.3937008 84 | vt 33.27304 78.74016 85 | vt 36.15541 65.88148 86 | vt 33.27304 54.35198 87 | vt 45.46712 78.74016 88 | vt 42.58475 78.74016 89 | vt 36.15541 78.74016 90 | vt 36.15541 2.842171E-14 91 | vt 39.37008 0 92 | vt 78.74016 78.74016 93 | vt 0 0 94 | vt 0 78.74016 95 | vt 3.21467 2.842171E-14 96 | vt 33.27304 -2.497333E-19 97 | vt 6.097044 -2.497333E-19 98 | 99 | usemtl grey 100 | 101 | f 2/2/1 1/1/1 3/3/1 102 | f 3/3/1 4/4/1 2/2/1 103 | f 6/6/2 5/5/2 7/7/2 104 | f 7/7/2 8/8/2 6/6/2 105 | f 3/10/3 1/9/3 6/11/3 106 | f 6/11/3 8/12/3 3/10/3 107 | f 10/14/2 9/13/2 11/15/2 108 | f 11/15/2 12/16/2 10/14/2 109 | f 14/18/1 13/17/1 15/19/1 110 | f 15/19/1 16/20/1 14/18/1 111 | f 13/22/4 14/21/4 17/23/4 112 | f 17/23/4 18/24/4 13/22/4 113 | f 20/26/3 19/25/3 21/27/3 114 | f 21/27/3 22/28/3 20/26/3 115 | f 23/30/5 19/29/5 20/31/5 116 | f 20/31/5 24/32/5 23/30/5 117 | f 21/34/4 25/33/4 26/35/4 118 | f 26/35/4 22/24/4 21/34/4 119 | f 9/37/5 10/36/5 27/31/5 120 | f 27/31/5 28/38/5 9/37/5 121 | f 13/40/3 27/39/3 10/41/3 122 | f 10/41/3 12/42/3 13/40/3 123 | f 12/42/3 15/43/3 13/40/3 124 | f 27/39/3 13/40/3 18/44/3 125 | 126 | usemtl grass 127 | 128 | f 7/12/3 5/45/3 29/46/3 129 | f 29/46/3 30/47/3 7/12/3 130 | f 32/49/3 31/48/3 23/50/3 131 | f 23/50/3 24/26/3 32/49/3 132 | f 17/44/3 14/40/3 16/43/3 133 | 134 | usemtl road 135 | 136 | f 9/41/3 2/51/3 4/10/3 137 | f 4/10/3 11/42/3 9/41/3 138 | f 2/51/3 9/41/3 28/39/3 139 | f 2/51/3 28/39/3 26/28/3 140 | f 26/28/3 25/52/3 2/51/3 141 | g roadPitEntry 142 | 143 | 144 | 145 | 146 | usemtl grey 147 | 148 | f 2/2/1 1/1/1 3/3/1 149 | f 3/3/1 4/4/1 2/2/1 150 | f 6/6/2 5/5/2 7/7/2 151 | f 7/7/2 8/8/2 6/6/2 152 | f 3/10/3 1/9/3 6/11/3 153 | f 6/11/3 8/12/3 3/10/3 154 | f 10/14/2 9/13/2 11/15/2 155 | f 11/15/2 12/16/2 10/14/2 156 | f 14/18/1 13/17/1 15/19/1 157 | f 15/19/1 16/20/1 14/18/1 158 | f 13/22/4 14/21/4 17/23/4 159 | f 17/23/4 18/24/4 13/22/4 160 | f 20/26/3 19/25/3 21/27/3 161 | f 21/27/3 22/28/3 20/26/3 162 | f 23/30/5 19/29/5 20/31/5 163 | f 20/31/5 24/32/5 23/30/5 164 | f 21/34/4 25/33/4 26/35/4 165 | f 26/35/4 22/24/4 21/34/4 166 | f 9/37/5 10/36/5 27/31/5 167 | f 27/31/5 28/38/5 9/37/5 168 | f 13/40/3 27/39/3 10/41/3 169 | f 10/41/3 12/42/3 13/40/3 170 | f 12/42/3 15/43/3 13/40/3 171 | f 27/39/3 13/40/3 18/44/3 172 | 173 | usemtl grass 174 | 175 | f 7/12/3 5/45/3 29/46/3 176 | f 29/46/3 30/47/3 7/12/3 177 | f 32/49/3 31/48/3 23/50/3 178 | f 23/50/3 24/26/3 32/49/3 179 | f 17/44/3 14/40/3 16/43/3 180 | 181 | usemtl road 182 | 183 | f 9/41/3 2/51/3 4/10/3 184 | f 4/10/3 11/42/3 9/41/3 185 | f 2/51/3 9/41/3 28/39/3 186 | f 2/51/3 28/39/3 26/28/3 187 | f 26/28/3 25/52/3 2/51/3 188 | -------------------------------------------------------------------------------- /game/assets/racing/roadPitGarage.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl road 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.2666667 0.2666667 0.2666667 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl grass 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.3019608 0.5607843 0.4313726 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadPitStraight.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadPitStraight.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib roadPitStraight.mtl 4 | 5 | g roadPitStraight 6 | 7 | v 0 0 0 8 | v 0 0 1 9 | v -0.08165261 0 0 10 | v -0.08165261 0 1 11 | v -0.8451352 0.02 0 12 | v -0.8451352 0.02 1 13 | v -1 0.02 0 14 | v -1 0.02 1 15 | v -0.8451352 0.01 0 16 | v -0.8451352 0.01 1 17 | v -1 0 0 18 | v -1 0 1 19 | v -0.08165261 0.02 0 20 | v -0.08165261 0.02 1 21 | v -0.1548649 0.02 0 22 | v -0.1548649 0.02 1 23 | v -0.1548649 0.01 0 24 | v -0.1548649 0.01 1 25 | 26 | vn 0 1 0 27 | vn 1 0 0 28 | vn -1 0 0 29 | 30 | vt 0 0 31 | vt 0 39.37008 32 | vt 3.21467 0 33 | vt 3.21467 39.37008 34 | vt 33.27304 0 35 | vt 33.27304 39.37008 36 | vt 39.37008 0 37 | vt 39.37008 39.37008 38 | vt 0 0.7874016 39 | vt 0 0.3937008 40 | vt -39.37008 0.7874016 41 | vt -39.37008 0.3937008 42 | vt 39.37008 0.7874016 43 | vt -39.37008 0 44 | vt 6.097044 0 45 | vt 6.097044 39.37008 46 | vt 39.37008 0.3937008 47 | 48 | usemtl grass 49 | 50 | f 2/2/1 1/1/1 3/3/1 51 | f 3/3/1 4/4/1 2/2/1 52 | 53 | usemtl grey 54 | 55 | f 6/6/1 5/5/1 7/7/1 56 | f 7/7/1 8/8/1 6/6/1 57 | f 9/10/2 5/9/2 6/11/2 58 | f 6/11/2 10/12/2 9/10/2 59 | f 7/9/3 11/1/3 12/7/3 60 | f 12/7/3 8/13/3 7/9/3 61 | f 3/1/2 13/9/2 14/11/2 62 | f 14/11/2 4/14/2 3/1/2 63 | f 14/4/1 13/3/1 15/15/1 64 | f 15/15/1 16/16/1 14/4/1 65 | f 15/9/3 17/10/3 18/17/3 66 | f 18/17/3 16/13/3 15/9/3 67 | 68 | usemtl road 69 | 70 | f 18/16/1 17/15/1 9/5/1 71 | f 9/5/1 10/6/1 18/16/1 72 | g roadPitStraight 73 | 74 | 75 | 76 | 77 | usemtl grass 78 | 79 | f 2/2/1 1/1/1 3/3/1 80 | f 3/3/1 4/4/1 2/2/1 81 | 82 | usemtl grey 83 | 84 | f 6/6/1 5/5/1 7/7/1 85 | f 7/7/1 8/8/1 6/6/1 86 | f 9/10/2 5/9/2 6/11/2 87 | f 6/11/2 10/12/2 9/10/2 88 | f 7/9/3 11/1/3 12/7/3 89 | f 12/7/3 8/13/3 7/9/3 90 | f 3/1/2 13/9/2 14/11/2 91 | f 14/11/2 4/14/2 3/1/2 92 | f 14/4/1 13/3/1 15/15/1 93 | f 15/15/1 16/16/1 14/4/1 94 | f 15/9/3 17/10/3 18/17/3 95 | f 18/17/3 16/13/3 15/9/3 96 | 97 | usemtl road 98 | 99 | f 18/16/1 17/15/1 9/5/1 100 | f 9/5/1 10/6/1 18/16/1 101 | -------------------------------------------------------------------------------- /game/assets/racing/roadPitStraightLong.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadPitStraightLong.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib roadPitStraightLong.mtl 4 | 5 | g roadPitStraightLong 6 | 7 | v 0 0 0 8 | v 0 0 2 9 | v -0.08165261 0 0 10 | v -0.08165261 0 2 11 | v -0.8451352 0.02 0 12 | v -0.8451352 0.02 2 13 | v -1 0.02 0 14 | v -1 0.02 2 15 | v -0.8451352 0.01 0 16 | v -0.8451352 0.01 2 17 | v -1 0 0 18 | v -1 0 2 19 | v -0.08165261 0.02 0 20 | v -0.08165261 0.02 2 21 | v -0.1548649 0.02 0 22 | v -0.1548649 0.02 2 23 | v -0.1548649 0.01 0 24 | v -0.1548649 0.01 2 25 | 26 | vn 0 1 0 27 | vn 1 0 0 28 | vn -1 0 0 29 | 30 | vt 0 0 31 | vt 0 78.74016 32 | vt 3.21467 1.421085E-14 33 | vt 3.21467 78.74016 34 | vt 33.27304 8.326673E-18 35 | vt 33.27304 78.74016 36 | vt 39.37008 1.421918E-14 37 | vt 39.37008 78.74016 38 | vt 0 0.7874016 39 | vt 0 0.3937008 40 | vt -78.74016 0.7874016 41 | vt -78.74016 0.3937008 42 | vt -7.744246E-29 1.705303E-11 43 | vt 1.421085E-14 0.7874016 44 | vt 78.74016 1.705303E-11 45 | vt 78.74016 0.7874016 46 | vt -1.421085E-14 0.7874016 47 | vt -1.421085E-14 0 48 | vt -78.74016 6.310887E-30 49 | vt 3.21467 1.420475E-14 50 | vt 6.097044 -6.106227E-18 51 | vt 6.097044 78.74016 52 | vt 4.401525E-15 0.3937008 53 | vt 4.401525E-15 0.7874016 54 | vt 78.74016 0.3937008 55 | vt 6.097044 3.155444E-32 56 | vt 33.27304 3.155444E-32 57 | 58 | usemtl grass 59 | 60 | f 2/2/1 1/1/1 3/3/1 61 | f 3/3/1 4/4/1 2/2/1 62 | 63 | usemtl grey 64 | 65 | f 6/6/1 5/5/1 7/7/1 66 | f 7/7/1 8/8/1 6/6/1 67 | f 9/10/2 5/9/2 6/11/2 68 | f 6/11/2 10/12/2 9/10/2 69 | f 7/14/3 11/13/3 12/15/3 70 | f 12/15/3 8/16/3 7/14/3 71 | f 3/18/2 13/17/2 14/11/2 72 | f 14/11/2 4/19/2 3/18/2 73 | f 14/4/1 13/20/1 15/21/1 74 | f 15/21/1 16/22/1 14/4/1 75 | f 15/24/3 17/23/3 18/25/3 76 | f 18/25/3 16/16/3 15/24/3 77 | 78 | usemtl road 79 | 80 | f 18/22/1 17/26/1 9/27/1 81 | f 9/27/1 10/6/1 18/22/1 82 | g roadPitStraightLong 83 | 84 | 85 | 86 | 87 | usemtl grass 88 | 89 | f 2/2/1 1/1/1 3/3/1 90 | f 3/3/1 4/4/1 2/2/1 91 | 92 | usemtl grey 93 | 94 | f 6/6/1 5/5/1 7/7/1 95 | f 7/7/1 8/8/1 6/6/1 96 | f 9/10/2 5/9/2 6/11/2 97 | f 6/11/2 10/12/2 9/10/2 98 | f 7/14/3 11/13/3 12/15/3 99 | f 12/15/3 8/16/3 7/14/3 100 | f 3/18/2 13/17/2 14/11/2 101 | f 14/11/2 4/19/2 3/18/2 102 | f 14/4/1 13/20/1 15/21/1 103 | f 15/21/1 16/22/1 14/4/1 104 | f 15/24/3 17/23/3 18/25/3 105 | f 18/25/3 16/16/3 15/24/3 106 | 107 | usemtl road 108 | 109 | f 18/22/1 17/26/1 9/27/1 110 | f 9/27/1 10/6/1 18/22/1 111 | -------------------------------------------------------------------------------- /game/assets/racing/roadRamp.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadRamp.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib roadRamp.mtl 4 | 5 | g roadRamp 6 | 7 | v -0.9183474 0 0 8 | v -0.9183474 0.25 1 9 | v -1 0 0 10 | v -1 0.25 1 11 | v 0 0 0 12 | v 0 0.25 1 13 | v -0.08165261 0 0 14 | v -0.08165261 0.25 1 15 | v -0.8451352 0.02 0 16 | v -0.8451352 0.27 1 17 | v -0.9183474 0.02 0 18 | v -0.9183474 0.27 1 19 | v -0.8451352 0.01 0 20 | v -0.8451352 0.26 1 21 | v -0.08165261 0.02 0 22 | v -0.08165261 0.27 1 23 | v -0.1548649 0.02 0 24 | v -0.1548649 0.27 1 25 | v -0.1548649 0.01 0 26 | v -0.1548649 0.26 1 27 | 28 | vn 0 0.9701425 -0.2425356 29 | vn 1 0 0 30 | vn -1 0 0 31 | 32 | vt 36.15541 0 33 | vt 36.15541 40.58175 34 | vt 39.37008 0 35 | vt 39.37008 40.58175 36 | vt 0 0 37 | vt -3.07747E-27 40.58175 38 | vt 3.21467 2.437808E-28 39 | vt 3.21467 40.58175 40 | vt 33.27304 0.1909729 41 | vt 33.27304 40.77272 42 | vt 36.15541 0.1909729 43 | vt 36.15541 40.77272 44 | vt 0 0.7874016 45 | vt 0 0.3937008 46 | vt -39.37008 10.62992 47 | vt -39.37008 10.23622 48 | vt 39.37008 9.84252 49 | vt 39.37008 10.62992 50 | vt -39.37008 9.84252 51 | vt 3.21467 0.1909729 52 | vt 3.21467 40.77272 53 | vt 6.097044 0.1909729 54 | vt 6.097044 40.77272 55 | vt 39.37008 10.23622 56 | vt 6.097044 0.09548647 57 | vt 6.097044 40.67723 58 | vt 33.27304 0.09548647 59 | vt 33.27304 40.67723 60 | 61 | usemtl grass 62 | 63 | f 2/2/1 1/1/1 3/3/1 64 | f 3/3/1 4/4/1 2/2/1 65 | f 6/6/1 5/5/1 7/7/1 66 | f 7/7/1 8/8/1 6/6/1 67 | 68 | usemtl grey 69 | 70 | f 10/10/1 9/9/1 11/11/1 71 | f 11/11/1 12/12/1 10/10/1 72 | f 13/14/2 9/13/2 10/15/2 73 | f 10/15/2 14/16/2 13/14/2 74 | f 11/13/3 1/5/3 2/17/3 75 | f 2/17/3 12/18/3 11/13/3 76 | f 7/5/2 15/13/2 16/15/2 77 | f 16/15/2 8/19/2 7/5/2 78 | f 16/21/1 15/20/1 17/22/1 79 | f 17/22/1 18/23/1 16/21/1 80 | f 17/13/3 19/14/3 20/24/3 81 | f 20/24/3 18/18/3 17/13/3 82 | 83 | usemtl road 84 | 85 | f 20/26/1 19/25/1 13/27/1 86 | f 13/27/1 14/28/1 20/26/1 87 | g roadRamp 88 | 89 | 90 | 91 | 92 | usemtl grass 93 | 94 | f 2/2/1 1/1/1 3/3/1 95 | f 3/3/1 4/4/1 2/2/1 96 | f 6/6/1 5/5/1 7/7/1 97 | f 7/7/1 8/8/1 6/6/1 98 | 99 | usemtl grey 100 | 101 | f 10/10/1 9/9/1 11/11/1 102 | f 11/11/1 12/12/1 10/10/1 103 | f 13/14/2 9/13/2 10/15/2 104 | f 10/15/2 14/16/2 13/14/2 105 | f 11/13/3 1/5/3 2/17/3 106 | f 2/17/3 12/18/3 11/13/3 107 | f 7/5/2 15/13/2 16/15/2 108 | f 16/15/2 8/19/2 7/5/2 109 | f 16/21/1 15/20/1 17/22/1 110 | f 17/22/1 18/23/1 16/21/1 111 | f 17/13/3 19/14/3 20/24/3 112 | f 20/24/3 18/18/3 17/13/3 113 | 114 | usemtl road 115 | 116 | f 20/26/1 19/25/1 13/27/1 117 | f 13/27/1 14/28/1 20/26/1 118 | -------------------------------------------------------------------------------- /game/assets/racing/roadRampLong.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadRampLong.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib roadRampLong.mtl 4 | 5 | g roadRampLong 6 | 7 | v -0.9183474 0 0 8 | v -0.9183474 0.5 2 9 | v -1 0 0 10 | v -1 0.5 2 11 | v 0 0 0 12 | v 0 0.5 2 13 | v -0.08165261 0 0 14 | v -0.08165261 0.5 2 15 | v -0.8451352 0.02 0 16 | v -0.8451352 0.52 2 17 | v -0.9183474 0.02 0 18 | v -0.9183474 0.52 2 19 | v -0.8451352 0.01 0 20 | v -0.8451352 0.51 2 21 | v -0.08165261 0.02 0 22 | v -0.08165261 0.52 2 23 | v -0.1548649 0.02 0 24 | v -0.1548649 0.52 2 25 | v -0.1548649 0.01 0 26 | v -0.1548649 0.51 2 27 | 28 | vn 0 0.9701425 -0.2425356 29 | vn 1 0 0 30 | vn -1 0 0 31 | 32 | vt 36.15541 8.613803E-14 33 | vt 36.15541 81.1635 34 | vt 39.37008 7.878443E-14 35 | vt 39.37008 81.1635 36 | vt 0 0 37 | vt 1.624183E-13 81.1635 38 | vt 3.21467 7.353599E-15 39 | vt 3.21467 81.1635 40 | vt 33.27304 0.1909729 41 | vt 33.27304 81.35447 42 | vt 36.15541 0.1909729 43 | vt 36.15541 81.35447 44 | vt 0 0.7874016 45 | vt 0 0.3937008 46 | vt -78.74016 20.47244 47 | vt -78.74016 20.07874 48 | vt 1.421085E-14 0 49 | vt 1.421085E-14 0.7874016 50 | vt 78.74016 19.68504 51 | vt 78.74016 20.47244 52 | vt -1.421085E-14 0.7874016 53 | vt -1.421085E-14 0 54 | vt -78.74016 19.68504 55 | vt 3.21467 0.1909729 56 | vt 3.21467 81.35447 57 | vt 6.097044 0.1909729 58 | vt 6.097044 81.35447 59 | vt 4.401525E-15 0.3937008 60 | vt 4.401525E-15 0.7874016 61 | vt 78.74016 20.07874 62 | vt 6.097044 0.09548647 63 | vt 6.097044 81.25898 64 | vt 33.27304 0.09548647 65 | vt 33.27304 81.25898 66 | 67 | usemtl grass 68 | 69 | f 2/2/1 1/1/1 3/3/1 70 | f 3/3/1 4/4/1 2/2/1 71 | f 6/6/1 5/5/1 7/7/1 72 | f 7/7/1 8/8/1 6/6/1 73 | 74 | usemtl grey 75 | 76 | f 10/10/1 9/9/1 11/11/1 77 | f 11/11/1 12/12/1 10/10/1 78 | f 13/14/2 9/13/2 10/15/2 79 | f 10/15/2 14/16/2 13/14/2 80 | f 11/18/3 1/17/3 2/19/3 81 | f 2/19/3 12/20/3 11/18/3 82 | f 7/22/2 15/21/2 16/15/2 83 | f 16/15/2 8/23/2 7/22/2 84 | f 16/25/1 15/24/1 17/26/1 85 | f 17/26/1 18/27/1 16/25/1 86 | f 17/29/3 19/28/3 20/30/3 87 | f 20/30/3 18/20/3 17/29/3 88 | 89 | usemtl road 90 | 91 | f 20/32/1 19/31/1 13/33/1 92 | f 13/33/1 14/34/1 20/32/1 93 | g roadRampLong 94 | 95 | 96 | 97 | 98 | usemtl grass 99 | 100 | f 2/2/1 1/1/1 3/3/1 101 | f 3/3/1 4/4/1 2/2/1 102 | f 6/6/1 5/5/1 7/7/1 103 | f 7/7/1 8/8/1 6/6/1 104 | 105 | usemtl grey 106 | 107 | f 10/10/1 9/9/1 11/11/1 108 | f 11/11/1 12/12/1 10/10/1 109 | f 13/14/2 9/13/2 10/15/2 110 | f 10/15/2 14/16/2 13/14/2 111 | f 11/18/3 1/17/3 2/19/3 112 | f 2/19/3 12/20/3 11/18/3 113 | f 7/22/2 15/21/2 16/15/2 114 | f 16/15/2 8/23/2 7/22/2 115 | f 16/25/1 15/24/1 17/26/1 116 | f 17/26/1 18/27/1 16/25/1 117 | f 17/29/3 19/28/3 20/30/3 118 | f 20/30/3 18/20/3 17/29/3 119 | 120 | usemtl road 121 | 122 | f 20/32/1 19/31/1 13/33/1 123 | f 13/33/1 14/34/1 20/32/1 124 | -------------------------------------------------------------------------------- /game/assets/racing/roadRampLongCurved.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grass 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.3019608 0.5607843 0.4313726 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadRampLongCurvedWall.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl wall 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 0.9490196 0.8705882 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadRampLongWall.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl wall 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 0.9490196 0.8705882 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadRampLongWall.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib roadRampLongWall.mtl 4 | 5 | g roadRampLongWall 6 | 7 | v -0.9183474 0 0 8 | v -0.9183474 0.5 2 9 | v -1 0 0 10 | v -1 0.5 2 11 | v 0 0 0 12 | v 0 0.5 2 13 | v -0.08165261 0 0 14 | v -0.08165261 0.5 2 15 | v -1 0 2 16 | v 0 0 2 17 | v -0.1548649 0.51 2 18 | v -0.08165261 0.52 2 19 | v -0.1548649 0.52 2 20 | v -0.8451352 0.51 2 21 | v -0.9183474 0.52 2 22 | v -0.8451352 0.52 2 23 | v -0.8451352 0.02 0 24 | v -0.9183474 0.02 0 25 | v -0.8451352 0.01 0 26 | v -0.08165261 0.02 0 27 | v -0.1548649 0.02 0 28 | v -0.1548649 0.01 0 29 | 30 | vn 0 0.9701425 -0.2425356 31 | vn -1 0 0 32 | vn 1 0 0 33 | vn 0 0 1 34 | 35 | vt 36.15541 8.613803E-14 36 | vt 36.15541 81.1635 37 | vt 39.37008 7.878443E-14 38 | vt 39.37008 81.1635 39 | vt 0 0 40 | vt 1.624183E-13 81.1635 41 | vt 3.21467 7.353599E-15 42 | vt 3.21467 81.1635 43 | vt 78.74016 0 44 | vt 78.74016 19.68504 45 | vt -78.74016 19.68504 46 | vt -78.74016 0 47 | vt -39.37008 0 48 | vt 0 19.68504 49 | vt -39.37008 19.68504 50 | vt -3.21467 19.68504 51 | vt -36.15541 19.68504 52 | vt -6.097044 20.07874 53 | vt -3.21467 20.47244 54 | vt -6.097044 20.47244 55 | vt -33.27304 20.07874 56 | vt -36.15541 20.47244 57 | vt -33.27304 20.47244 58 | vt 33.27304 0.1909729 59 | vt 33.27304 81.35447 60 | vt 36.15541 0.1909729 61 | vt 36.15541 81.35447 62 | vt 0 0.7874016 63 | vt 0 0.3937008 64 | vt -78.74016 20.47244 65 | vt -78.74016 20.07874 66 | vt 1.421085E-14 0 67 | vt 1.421085E-14 0.7874016 68 | vt 78.74016 20.47244 69 | vt -1.421085E-14 0.7874016 70 | vt -1.421085E-14 0 71 | vt 3.21467 0.1909729 72 | vt 3.21467 81.35447 73 | vt 6.097044 0.1909729 74 | vt 6.097044 81.35447 75 | vt 4.401525E-15 0.3937008 76 | vt 4.401525E-15 0.7874016 77 | vt 78.74016 20.07874 78 | vt 6.097044 0.09548647 79 | vt 6.097044 81.25898 80 | vt 33.27304 0.09548647 81 | vt 33.27304 81.25898 82 | 83 | usemtl wall 84 | 85 | f 2/2/1 1/1/1 3/3/1 86 | f 3/3/1 4/4/1 2/2/1 87 | f 6/6/1 5/5/1 7/7/1 88 | f 7/7/1 8/8/1 6/6/1 89 | f 3/5/2 9/9/2 4/10/2 90 | f 5/5/3 6/11/3 10/12/3 91 | f 9/13/4 10/5/4 6/14/4 92 | f 6/14/4 4/15/4 9/13/4 93 | f 6/14/4 8/16/4 4/15/4 94 | f 8/16/4 2/17/4 4/15/4 95 | f 11/18/4 2/17/4 8/16/4 96 | f 8/16/4 12/19/4 11/18/4 97 | f 12/19/4 13/20/4 11/18/4 98 | f 2/17/4 11/18/4 14/21/4 99 | f 14/21/4 15/22/4 2/17/4 100 | f 14/21/4 16/23/4 15/22/4 101 | 102 | usemtl grey 103 | 104 | f 16/25/1 17/24/1 18/26/1 105 | f 18/26/1 15/27/1 16/25/1 106 | f 19/29/3 17/28/3 16/30/3 107 | f 16/30/3 14/31/3 19/29/3 108 | f 18/33/2 1/32/2 2/10/2 109 | f 2/10/2 15/34/2 18/33/2 110 | f 7/36/3 20/35/3 12/30/3 111 | f 12/30/3 8/11/3 7/36/3 112 | f 12/38/1 20/37/1 21/39/1 113 | f 21/39/1 13/40/1 12/38/1 114 | f 21/42/2 22/41/2 11/43/2 115 | f 11/43/2 13/34/2 21/42/2 116 | 117 | usemtl road 118 | 119 | f 11/45/1 22/44/1 19/46/1 120 | f 19/46/1 14/47/1 11/45/1 121 | g roadRampLongWall 122 | 123 | 124 | 125 | 126 | usemtl wall 127 | 128 | f 2/2/1 1/1/1 3/3/1 129 | f 3/3/1 4/4/1 2/2/1 130 | f 6/6/1 5/5/1 7/7/1 131 | f 7/7/1 8/8/1 6/6/1 132 | f 3/5/2 9/9/2 4/10/2 133 | f 5/5/3 6/11/3 10/12/3 134 | f 9/13/4 10/5/4 6/14/4 135 | f 6/14/4 4/15/4 9/13/4 136 | f 6/14/4 8/16/4 4/15/4 137 | f 8/16/4 2/17/4 4/15/4 138 | f 11/18/4 2/17/4 8/16/4 139 | f 8/16/4 12/19/4 11/18/4 140 | f 12/19/4 13/20/4 11/18/4 141 | f 2/17/4 11/18/4 14/21/4 142 | f 14/21/4 15/22/4 2/17/4 143 | f 14/21/4 16/23/4 15/22/4 144 | 145 | usemtl grey 146 | 147 | f 16/25/1 17/24/1 18/26/1 148 | f 18/26/1 15/27/1 16/25/1 149 | f 19/29/3 17/28/3 16/30/3 150 | f 16/30/3 14/31/3 19/29/3 151 | f 18/33/2 1/32/2 2/10/2 152 | f 2/10/2 15/34/2 18/33/2 153 | f 7/36/3 20/35/3 12/30/3 154 | f 12/30/3 8/11/3 7/36/3 155 | f 12/38/1 20/37/1 21/39/1 156 | f 21/39/1 13/40/1 12/38/1 157 | f 21/42/2 22/41/2 11/43/2 158 | f 11/43/2 13/34/2 21/42/2 159 | 160 | usemtl road 161 | 162 | f 11/45/1 22/44/1 19/46/1 163 | f 19/46/1 14/47/1 11/45/1 164 | -------------------------------------------------------------------------------- /game/assets/racing/roadRampWall.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl wall 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 0.9490196 0.8705882 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadRampWall.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib roadRampWall.mtl 4 | 5 | g roadRampWall 6 | 7 | v -0.9183474 0 0 8 | v -0.9183474 0.25 1 9 | v -1 0 0 10 | v -1 0.25 1 11 | v 0 0 0 12 | v 0 0.25 1 13 | v -0.08165261 0 0 14 | v -0.08165261 0.25 1 15 | v -1 0 1 16 | v 0 0 1 17 | v -0.1548649 0.26 1 18 | v -0.08165261 0.27 1 19 | v -0.1548649 0.27 1 20 | v -0.8451352 0.26 1 21 | v -0.9183474 0.27 1 22 | v -0.8451352 0.27 1 23 | v -0.8451352 0.02 0 24 | v -0.9183474 0.02 0 25 | v -0.8451352 0.01 0 26 | v -0.08165261 0.02 0 27 | v -0.1548649 0.02 0 28 | v -0.1548649 0.01 0 29 | 30 | vn 0 0.9701425 -0.2425356 31 | vn -1 0 0 32 | vn 1 0 0 33 | vn 0 0 1 34 | 35 | vt 36.15541 0 36 | vt 36.15541 40.58175 37 | vt 39.37008 0 38 | vt 39.37008 40.58175 39 | vt 0 0 40 | vt -3.07747E-27 40.58175 41 | vt 3.21467 2.437808E-28 42 | vt 3.21467 40.58175 43 | vt 39.37008 9.84252 44 | vt -39.37008 9.84252 45 | vt -39.37008 0 46 | vt 0 9.84252 47 | vt -3.21467 9.84252 48 | vt -36.15541 9.84252 49 | vt -6.097044 10.23622 50 | vt -3.21467 10.62992 51 | vt -6.097044 10.62992 52 | vt -33.27304 10.23622 53 | vt -36.15541 10.62992 54 | vt -33.27304 10.62992 55 | vt 33.27304 0.1909729 56 | vt 33.27304 40.77272 57 | vt 36.15541 0.1909729 58 | vt 36.15541 40.77272 59 | vt 0 0.7874016 60 | vt 0 0.3937008 61 | vt -39.37008 10.62992 62 | vt -39.37008 10.23622 63 | vt 39.37008 10.62992 64 | vt 3.21467 0.1909729 65 | vt 3.21467 40.77272 66 | vt 6.097044 0.1909729 67 | vt 6.097044 40.77272 68 | vt 39.37008 10.23622 69 | vt 6.097044 0.09548647 70 | vt 6.097044 40.67723 71 | vt 33.27304 0.09548647 72 | vt 33.27304 40.67723 73 | 74 | usemtl wall 75 | 76 | f 2/2/1 1/1/1 3/3/1 77 | f 3/3/1 4/4/1 2/2/1 78 | f 6/6/1 5/5/1 7/7/1 79 | f 7/7/1 8/8/1 6/6/1 80 | f 3/5/2 9/3/2 4/9/2 81 | f 5/5/3 6/10/3 10/11/3 82 | f 9/11/4 10/5/4 6/12/4 83 | f 6/12/4 4/10/4 9/11/4 84 | f 6/12/4 8/13/4 4/10/4 85 | f 8/13/4 2/14/4 4/10/4 86 | f 11/15/4 2/14/4 8/13/4 87 | f 8/13/4 12/16/4 11/15/4 88 | f 12/16/4 13/17/4 11/15/4 89 | f 2/14/4 11/15/4 14/18/4 90 | f 14/18/4 15/19/4 2/14/4 91 | f 14/18/4 16/20/4 15/19/4 92 | 93 | usemtl grey 94 | 95 | f 16/22/1 17/21/1 18/23/1 96 | f 18/23/1 15/24/1 16/22/1 97 | f 19/26/3 17/25/3 16/27/3 98 | f 16/27/3 14/28/3 19/26/3 99 | f 18/25/2 1/5/2 2/9/2 100 | f 2/9/2 15/29/2 18/25/2 101 | f 7/5/3 20/25/3 12/27/3 102 | f 12/27/3 8/10/3 7/5/3 103 | f 12/31/1 20/30/1 21/32/1 104 | f 21/32/1 13/33/1 12/31/1 105 | f 21/25/2 22/26/2 11/34/2 106 | f 11/34/2 13/29/2 21/25/2 107 | 108 | usemtl road 109 | 110 | f 11/36/1 22/35/1 19/37/1 111 | f 19/37/1 14/38/1 11/36/1 112 | g roadRampWall 113 | 114 | 115 | 116 | 117 | usemtl wall 118 | 119 | f 2/2/1 1/1/1 3/3/1 120 | f 3/3/1 4/4/1 2/2/1 121 | f 6/6/1 5/5/1 7/7/1 122 | f 7/7/1 8/8/1 6/6/1 123 | f 3/5/2 9/3/2 4/9/2 124 | f 5/5/3 6/10/3 10/11/3 125 | f 9/11/4 10/5/4 6/12/4 126 | f 6/12/4 4/10/4 9/11/4 127 | f 6/12/4 8/13/4 4/10/4 128 | f 8/13/4 2/14/4 4/10/4 129 | f 11/15/4 2/14/4 8/13/4 130 | f 8/13/4 12/16/4 11/15/4 131 | f 12/16/4 13/17/4 11/15/4 132 | f 2/14/4 11/15/4 14/18/4 133 | f 14/18/4 15/19/4 2/14/4 134 | f 14/18/4 16/20/4 15/19/4 135 | 136 | usemtl grey 137 | 138 | f 16/22/1 17/21/1 18/23/1 139 | f 18/23/1 15/24/1 16/22/1 140 | f 19/26/3 17/25/3 16/27/3 141 | f 16/27/3 14/28/3 19/26/3 142 | f 18/25/2 1/5/2 2/9/2 143 | f 2/9/2 15/29/2 18/25/2 144 | f 7/5/3 20/25/3 12/27/3 145 | f 12/27/3 8/10/3 7/5/3 146 | f 12/31/1 20/30/1 21/32/1 147 | f 21/32/1 13/33/1 12/31/1 148 | f 21/25/2 22/26/2 11/34/2 149 | f 11/34/2 13/29/2 21/25/2 150 | 151 | usemtl road 152 | 153 | f 11/36/1 22/35/1 19/37/1 154 | f 19/37/1 14/38/1 11/36/1 155 | -------------------------------------------------------------------------------- /game/assets/racing/roadSide.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadSplit.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grass 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.3019608 0.5607843 0.4313726 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadSplit.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib roadSplit.mtl 4 | 5 | g roadSplit 6 | 7 | v -0.5 0.02 0.8366948 8 | v -0.5 0 0.8366948 9 | v -1.081653 0.02 2 10 | v -1.081653 0 2 11 | v -0.5 0.02 0.6902702 12 | v -0.5 0.01 0.6902702 13 | v 0.1548649 0.02 2 14 | v 0.1548649 0.01 2 15 | v -0.08165261 0.02 0 16 | v -0.08165261 0 0 17 | v 0.9183472 0.02 2 18 | v 0.9183472 0 2 19 | v 0.8451351 0.02 2 20 | v -0.1548649 0.02 0 21 | v -0.9183474 0 0 22 | v -0.9183474 0.02 0 23 | v -1.918347 0 2 24 | v -1.918347 0.02 2 25 | v -0.1548649 0.01 0 26 | v 0.8451351 0.01 2 27 | v -1.154865 0.01 2 28 | v -1.154865 0.02 2 29 | v -0.8451352 0.02 0 30 | v -0.8451352 0.01 0 31 | v -1.845135 0.02 2 32 | v -1.845135 0.01 2 33 | v 0.08165261 0 2 34 | v 0.08165261 0.02 2 35 | v -1 0 0 36 | v -2 0 2 37 | v 0 0 2 38 | v -0.5 0 1 39 | v -1 0 2 40 | v 1 0 2 41 | v 0 0 0 42 | 43 | vn 0.8944272 0 0.4472136 44 | vn 0.8944272 0 -0.4472136 45 | vn 0 1 0 46 | vn -0.8944272 0 -0.4472136 47 | vn -0.8944272 0 0.4472136 48 | 49 | vt -38.26651 0.7874016 50 | vt -38.26651 3.684123E-15 51 | vt -89.47182 0.7874016 52 | vt -89.47182 3.684123E-15 53 | vt -15.50353 0.7874016 54 | vt -15.50353 0.3937008 55 | vt -73.15402 0.7874016 56 | vt -73.15402 0.3937008 57 | vt 1.437644 0.7874016 58 | vt 1.437644 -1.591899E-26 59 | vt -86.59653 0.7874016 60 | vt -86.59653 -1.591268E-26 61 | vt -36.15541 78.74016 62 | vt -33.27304 78.74016 63 | vt 3.21467 -6.661338E-18 64 | vt 6.097044 -6.661338E-18 65 | vt 16.16919 4.143534E-14 66 | vt 16.16919 0.7874016 67 | vt 104.2034 4.143534E-14 68 | vt 104.2034 0.7874016 69 | vt -2.726681 0.3937008 70 | vt -2.726681 0.7874016 71 | vt 85.3075 0.3937008 72 | vt 85.3075 0.7874016 73 | vt 33.11036 0.3937008 74 | vt 33.11036 0.7874016 75 | vt 90.76086 0.3937008 76 | vt 90.76086 0.7874016 77 | vt -14.88015 0.7874016 78 | vt -14.88015 0.3937008 79 | vt -102.9143 0.7874016 80 | vt -102.9143 0.3937008 81 | vt 20.65968 -4.143534E-14 82 | vt 20.65968 0.7874016 83 | vt 71.86498 -4.143534E-14 84 | vt 71.86498 0.7874016 85 | vt 33.27304 7.771561E-18 86 | vt 72.64311 78.74016 87 | vt 36.15541 7.771561E-18 88 | vt 75.52549 78.74016 89 | vt -6.097044 78.74016 90 | vt -3.21467 78.74016 91 | vt 19.68504 27.17599 92 | vt 19.68504 32.94074 93 | vt 45.46712 78.74016 94 | vt 42.58475 78.74016 95 | vt 36.15541 0 96 | vt 39.37008 0 97 | vt 78.74016 78.74016 98 | vt 0 78.74016 99 | vt 19.68504 39.37008 100 | vt 39.37008 78.74016 101 | vt -39.37008 78.74016 102 | vt 0 0 103 | vt 3.21467 0 104 | vt 6.097044 0 105 | vt 33.27304 0 106 | 107 | usemtl grey 108 | 109 | f 2/2/1 1/1/1 3/3/1 110 | f 3/3/1 4/4/1 2/2/1 111 | f 6/6/2 5/5/2 7/7/2 112 | f 7/7/2 8/8/2 6/6/2 113 | f 10/10/2 9/9/2 11/11/2 114 | f 11/11/2 12/12/2 10/10/2 115 | f 13/14/3 11/13/3 9/15/3 116 | f 9/15/3 14/16/3 13/14/3 117 | f 16/18/4 15/17/4 17/19/4 118 | f 17/19/4 18/20/4 16/18/4 119 | f 14/22/5 19/21/5 20/23/5 120 | f 20/23/5 13/24/5 14/22/5 121 | f 5/26/4 6/25/4 21/27/4 122 | f 21/27/4 22/28/4 5/26/4 123 | f 24/30/1 23/29/1 25/31/1 124 | f 25/31/1 26/32/1 24/30/1 125 | f 1/34/5 2/33/5 27/35/5 126 | f 27/35/5 28/36/5 1/34/5 127 | f 25/38/3 23/37/3 16/39/3 128 | f 16/39/3 18/40/3 25/38/3 129 | f 28/42/3 7/41/3 5/43/3 130 | f 5/43/3 1/44/3 28/42/3 131 | f 5/43/3 22/45/3 1/44/3 132 | f 22/45/3 3/46/3 1/44/3 133 | 134 | usemtl grass 135 | 136 | f 17/40/3 15/47/3 29/48/3 137 | f 29/48/3 30/49/3 17/40/3 138 | f 31/50/3 27/42/3 2/44/3 139 | f 2/44/3 32/51/3 31/50/3 140 | f 2/44/3 4/46/3 32/51/3 141 | f 4/46/3 33/52/3 32/51/3 142 | f 12/13/3 34/53/3 35/54/3 143 | f 35/54/3 10/55/3 12/13/3 144 | 145 | usemtl road 146 | 147 | f 8/41/3 20/14/3 19/56/3 148 | f 19/56/3 6/43/3 8/41/3 149 | f 19/56/3 24/57/3 6/43/3 150 | f 24/57/3 21/45/3 6/43/3 151 | f 24/57/3 26/38/3 21/45/3 152 | g roadSplit 153 | 154 | 155 | 156 | 157 | usemtl grey 158 | 159 | f 2/2/1 1/1/1 3/3/1 160 | f 3/3/1 4/4/1 2/2/1 161 | f 6/6/2 5/5/2 7/7/2 162 | f 7/7/2 8/8/2 6/6/2 163 | f 10/10/2 9/9/2 11/11/2 164 | f 11/11/2 12/12/2 10/10/2 165 | f 13/14/3 11/13/3 9/15/3 166 | f 9/15/3 14/16/3 13/14/3 167 | f 16/18/4 15/17/4 17/19/4 168 | f 17/19/4 18/20/4 16/18/4 169 | f 14/22/5 19/21/5 20/23/5 170 | f 20/23/5 13/24/5 14/22/5 171 | f 5/26/4 6/25/4 21/27/4 172 | f 21/27/4 22/28/4 5/26/4 173 | f 24/30/1 23/29/1 25/31/1 174 | f 25/31/1 26/32/1 24/30/1 175 | f 1/34/5 2/33/5 27/35/5 176 | f 27/35/5 28/36/5 1/34/5 177 | f 25/38/3 23/37/3 16/39/3 178 | f 16/39/3 18/40/3 25/38/3 179 | f 28/42/3 7/41/3 5/43/3 180 | f 5/43/3 1/44/3 28/42/3 181 | f 5/43/3 22/45/3 1/44/3 182 | f 22/45/3 3/46/3 1/44/3 183 | 184 | usemtl grass 185 | 186 | f 17/40/3 15/47/3 29/48/3 187 | f 29/48/3 30/49/3 17/40/3 188 | f 31/50/3 27/42/3 2/44/3 189 | f 2/44/3 32/51/3 31/50/3 190 | f 2/44/3 4/46/3 32/51/3 191 | f 4/46/3 33/52/3 32/51/3 192 | f 12/13/3 34/53/3 35/54/3 193 | f 35/54/3 10/55/3 12/13/3 194 | 195 | usemtl road 196 | 197 | f 8/41/3 20/14/3 19/56/3 198 | f 19/56/3 6/43/3 8/41/3 199 | f 19/56/3 24/57/3 6/43/3 200 | f 24/57/3 21/45/3 6/43/3 201 | f 24/57/3 26/38/3 21/45/3 202 | -------------------------------------------------------------------------------- /game/assets/racing/roadSplitLarge.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grass 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.3019608 0.5607843 0.4313726 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadSplitLarger.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl _defaultMat 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 1 1 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grass 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.3019608 0.5607843 0.4313726 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadSplitRound.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grass 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.3019608 0.5607843 0.4313726 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadSplitRoundLarge.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl _defaultMat 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 1 1 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grass 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.3019608 0.5607843 0.4313726 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadSplitSmall.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grass 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.3019608 0.5607843 0.4313726 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadStart.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grass 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.3019608 0.5607843 0.4313726 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadStartPositions.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadStraight.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.000000 0.000000 0.000000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.000000 0.000000 0.000000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.000000 0.000000 0.000000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadStraight.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib roadStraight.mtl 4 | 5 | g roadStraight 6 | 7 | v -0.9183474 0 0 8 | v -0.9183474 0 1 9 | v -1 0 0 10 | v -1 0 1 11 | v 0 0 0 12 | v 0 0 1 13 | v -0.08165261 0 0 14 | v -0.08165261 0 1 15 | v -0.8451352 0.02 0 16 | v -0.8451352 0.02 1 17 | v -0.9183474 0.02 0 18 | v -0.9183474 0.02 1 19 | v -0.8451352 0.01 0 20 | v -0.8451352 0.01 1 21 | v -0.08165261 0.02 0 22 | v -0.08165261 0.02 1 23 | v -0.1548649 0.02 0 24 | v -0.1548649 0.02 1 25 | v -0.1548649 0.01 0 26 | v -0.1548649 0.01 1 27 | 28 | vn 0 1 0 29 | vn 1 0 0 30 | vn -1 0 0 31 | 32 | vt 36.15541 0 33 | vt 36.15541 39.37008 34 | vt 39.37008 0 35 | vt 39.37008 39.37008 36 | vt 0 0 37 | vt 0 39.37008 38 | vt 3.21467 0 39 | vt 3.21467 39.37008 40 | vt 33.27304 0 41 | vt 33.27304 39.37008 42 | vt 0 0.7874016 43 | vt 0 0.3937008 44 | vt -39.37008 0.7874016 45 | vt -39.37008 0.3937008 46 | vt 39.37008 0.7874016 47 | vt -39.37008 0 48 | vt 6.097044 0 49 | vt 6.097044 39.37008 50 | vt 39.37008 0.3937008 51 | 52 | usemtl grass 53 | 54 | f 2/2/1 1/1/1 3/3/1 55 | f 3/3/1 4/4/1 2/2/1 56 | f 6/6/1 5/5/1 7/7/1 57 | f 7/7/1 8/8/1 6/6/1 58 | 59 | usemtl grey 60 | 61 | f 10/10/1 9/9/1 11/1/1 62 | f 11/1/1 12/2/1 10/10/1 63 | f 13/12/2 9/11/2 10/13/2 64 | f 10/13/2 14/14/2 13/12/2 65 | f 11/11/3 1/5/3 2/3/3 66 | f 2/3/3 12/15/3 11/11/3 67 | f 7/5/2 15/11/2 16/13/2 68 | f 16/13/2 8/16/2 7/5/2 69 | f 16/8/1 15/7/1 17/17/1 70 | f 17/17/1 18/18/1 16/8/1 71 | f 17/11/3 19/12/3 20/19/3 72 | f 20/19/3 18/15/3 17/11/3 73 | 74 | usemtl road 75 | 76 | f 20/18/1 19/17/1 13/9/1 77 | f 13/9/1 14/10/1 20/18/1 78 | g roadStraight 79 | 80 | 81 | 82 | 83 | usemtl grass 84 | 85 | f 2/2/1 1/1/1 3/3/1 86 | f 3/3/1 4/4/1 2/2/1 87 | f 6/6/1 5/5/1 7/7/1 88 | f 7/7/1 8/8/1 6/6/1 89 | 90 | usemtl grey 91 | 92 | f 10/10/1 9/9/1 11/1/1 93 | f 11/1/1 12/2/1 10/10/1 94 | f 13/12/2 9/11/2 10/13/2 95 | f 10/13/2 14/14/2 13/12/2 96 | f 11/11/3 1/5/3 2/3/3 97 | f 2/3/3 12/15/3 11/11/3 98 | f 7/5/2 15/11/2 16/13/2 99 | f 16/13/2 8/16/2 7/5/2 100 | f 16/8/1 15/7/1 17/17/1 101 | f 17/17/1 18/18/1 16/8/1 102 | f 17/11/3 19/12/3 20/19/3 103 | f 20/19/3 18/15/3 17/11/3 104 | 105 | usemtl road 106 | 107 | f 20/18/1 19/17/1 13/9/1 108 | f 13/9/1 14/10/1 20/18/1 109 | -------------------------------------------------------------------------------- /game/assets/racing/roadStraightArrow.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadStraightArrow.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib roadStraightArrow.mtl 4 | 5 | g roadStraightArrow 6 | 7 | v -0.9183474 0 0 8 | v -0.9183474 0 1 9 | v -1 0 0 10 | v -1 0 1 11 | v 0 0 0 12 | v 0 0 1 13 | v -0.08165261 0 0 14 | v -0.08165261 0 1 15 | v -0.8451352 0.02 0 16 | v -0.8451352 0.02 1 17 | v -0.9183474 0.02 0 18 | v -0.9183474 0.02 1 19 | v -0.8451352 0.01 0 20 | v -0.8451352 0.01 1 21 | v -0.08165261 0.02 0 22 | v -0.08165261 0.02 1 23 | v -0.1548649 0.02 0 24 | v -0.1548649 0.02 1 25 | v -0.1548649 0.01 0 26 | v -0.1548649 0.01 1 27 | v -0.4420685 0.01 0.2543842 28 | v -0.4420685 0.01 0.6031159 29 | v -0.5579315 0.01 0.2543842 30 | v -0.5 0.01 0.7306159 31 | v -0.5579315 0.01 0.6031159 32 | v -0.5879315 0.01 0.6355499 33 | v -0.5879315 0.01 0.6031159 34 | v -0.4120685 0.01 0.6355499 35 | v -0.4120685 0.01 0.6031159 36 | 37 | vn 0 1 0 38 | vn 1 0 0 39 | vn -1 0 0 40 | 41 | vt 36.15541 0 42 | vt 36.15541 39.37008 43 | vt 39.37008 0 44 | vt 39.37008 39.37008 45 | vt 0 0 46 | vt 0 39.37008 47 | vt 3.21467 0 48 | vt 3.21467 39.37008 49 | vt 33.27304 0 50 | vt 33.27304 39.37008 51 | vt 0 0.7874016 52 | vt 0 0.3937008 53 | vt -39.37008 0.7874016 54 | vt -39.37008 0.3937008 55 | vt 39.37008 0.7874016 56 | vt -39.37008 0 57 | vt 6.097044 0 58 | vt 6.097044 39.37008 59 | vt 39.37008 0.3937008 60 | vt 17.40427 10.01512 61 | vt 17.40427 23.74472 62 | vt 21.96581 10.01512 63 | vt 19.68504 28.7644 64 | vt 21.96581 23.74472 65 | vt 23.14691 25.02165 66 | vt 23.14691 23.74472 67 | vt 16.22317 25.02165 68 | vt 16.22317 23.74472 69 | 70 | usemtl grass 71 | 72 | f 2/2/1 1/1/1 3/3/1 73 | f 3/3/1 4/4/1 2/2/1 74 | f 6/6/1 5/5/1 7/7/1 75 | f 7/7/1 8/8/1 6/6/1 76 | 77 | usemtl grey 78 | 79 | f 10/10/1 9/9/1 11/1/1 80 | f 11/1/1 12/2/1 10/10/1 81 | f 13/12/2 9/11/2 10/13/2 82 | f 10/13/2 14/14/2 13/12/2 83 | f 11/11/3 1/5/3 2/3/3 84 | f 2/3/3 12/15/3 11/11/3 85 | f 7/5/2 15/11/2 16/13/2 86 | f 16/13/2 8/16/2 7/5/2 87 | f 16/8/1 15/7/1 17/17/1 88 | f 17/17/1 18/18/1 16/8/1 89 | f 17/11/3 19/12/3 20/19/3 90 | f 20/19/3 18/15/3 17/11/3 91 | f 22/21/1 21/20/1 23/22/1 92 | f 23/22/1 24/23/1 22/21/1 93 | f 23/22/1 25/24/1 24/23/1 94 | f 25/24/1 26/25/1 24/23/1 95 | f 25/24/1 27/26/1 26/25/1 96 | f 22/21/1 24/23/1 28/27/1 97 | f 28/27/1 29/28/1 22/21/1 98 | 99 | usemtl road 100 | 101 | f 21/20/1 20/18/1 19/17/1 102 | f 19/17/1 13/9/1 21/20/1 103 | f 21/20/1 29/28/1 20/18/1 104 | f 13/9/1 23/22/1 21/20/1 105 | f 13/9/1 25/24/1 23/22/1 106 | f 13/9/1 27/26/1 25/24/1 107 | f 13/9/1 26/25/1 27/26/1 108 | f 20/18/1 29/28/1 28/27/1 109 | f 20/18/1 28/27/1 24/23/1 110 | f 24/23/1 14/10/1 20/18/1 111 | f 24/23/1 26/25/1 14/10/1 112 | f 26/25/1 13/9/1 14/10/1 113 | f 29/28/1 21/20/1 22/21/1 114 | g roadStraightArrow 115 | 116 | 117 | 118 | 119 | usemtl grass 120 | 121 | f 2/2/1 1/1/1 3/3/1 122 | f 3/3/1 4/4/1 2/2/1 123 | f 6/6/1 5/5/1 7/7/1 124 | f 7/7/1 8/8/1 6/6/1 125 | 126 | usemtl grey 127 | 128 | f 10/10/1 9/9/1 11/1/1 129 | f 11/1/1 12/2/1 10/10/1 130 | f 13/12/2 9/11/2 10/13/2 131 | f 10/13/2 14/14/2 13/12/2 132 | f 11/11/3 1/5/3 2/3/3 133 | f 2/3/3 12/15/3 11/11/3 134 | f 7/5/2 15/11/2 16/13/2 135 | f 16/13/2 8/16/2 7/5/2 136 | f 16/8/1 15/7/1 17/17/1 137 | f 17/17/1 18/18/1 16/8/1 138 | f 17/11/3 19/12/3 20/19/3 139 | f 20/19/3 18/15/3 17/11/3 140 | f 22/21/1 21/20/1 23/22/1 141 | f 23/22/1 24/23/1 22/21/1 142 | f 23/22/1 25/24/1 24/23/1 143 | f 25/24/1 26/25/1 24/23/1 144 | f 25/24/1 27/26/1 26/25/1 145 | f 22/21/1 24/23/1 28/27/1 146 | f 28/27/1 29/28/1 22/21/1 147 | 148 | usemtl road 149 | 150 | f 21/20/1 20/18/1 19/17/1 151 | f 19/17/1 13/9/1 21/20/1 152 | f 21/20/1 29/28/1 20/18/1 153 | f 13/9/1 23/22/1 21/20/1 154 | f 13/9/1 25/24/1 23/22/1 155 | f 13/9/1 27/26/1 25/24/1 156 | f 13/9/1 26/25/1 27/26/1 157 | f 20/18/1 29/28/1 28/27/1 158 | f 20/18/1 28/27/1 24/23/1 159 | f 24/23/1 14/10/1 20/18/1 160 | f 24/23/1 26/25/1 14/10/1 161 | f 26/25/1 13/9/1 14/10/1 162 | f 29/28/1 21/20/1 22/21/1 163 | -------------------------------------------------------------------------------- /game/assets/racing/roadStraightBridge.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl wall 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 0.9490196 0.8705882 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | newmtl _defaultMat 19 | Ka 0.000000 0.000000 0.000000 20 | Kd 1 1 1 21 | Ks 0.330000 0.330000 0.330000 22 | 23 | -------------------------------------------------------------------------------- /game/assets/racing/roadStraightBridge.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib roadStraightBridge.mtl 4 | 5 | g roadStraightBridge 6 | 7 | v -0.9183474 0.5 0 8 | v -0.9183474 0.5 1 9 | v -1 0.5 0 10 | v -1 0.5 1 11 | v 0 0.5 0 12 | v 0 0.5 1 13 | v -0.08165261 0.5 0 14 | v -0.08165261 0.5 1 15 | v -1 0 0 16 | v -1 0 1 17 | v 0 0 1 18 | v -0.1548649 0.51 1 19 | v -0.08165261 0.52 1 20 | v -0.1548649 0.52 1 21 | v -0.8451352 0.51 1 22 | v -0.9183474 0.52 1 23 | v -0.8451352 0.52 1 24 | v 0 0 0 25 | v -0.8451352 0.51 0 26 | v -0.9183474 0.52 0 27 | v -0.8451352 0.52 0 28 | v -0.1548649 0.51 0 29 | v -0.08165261 0.52 0 30 | v -0.1548649 0.52 0 31 | 32 | vn 0 1 0 33 | vn -1 0 0 34 | vn 0 0 1 35 | vn 1 0 0 36 | vn 0 0 -1 37 | vn 0 -1 0 38 | 39 | vt 36.15541 0 40 | vt 36.15541 39.37008 41 | vt 39.37008 0 42 | vt 39.37008 39.37008 43 | vt 0 0 44 | vt 0 39.37008 45 | vt 3.21467 0 46 | vt 3.21467 39.37008 47 | vt 0 19.68504 48 | vt 39.37008 19.68504 49 | vt -39.37008 0 50 | vt -39.37008 19.68504 51 | vt -3.21467 19.68504 52 | vt -36.15541 19.68504 53 | vt -6.097044 20.07874 54 | vt -3.21467 20.47244 55 | vt -6.097044 20.47244 56 | vt -33.27304 20.07874 57 | vt -36.15541 20.47244 58 | vt -33.27304 20.47244 59 | vt 36.15541 19.68504 60 | vt 3.21467 19.68504 61 | vt 33.27304 20.07874 62 | vt 36.15541 20.47244 63 | vt 33.27304 20.47244 64 | vt 6.097044 20.07874 65 | vt 3.21467 20.47244 66 | vt 6.097044 20.47244 67 | vt 33.27304 0 68 | vt 33.27304 39.37008 69 | vt 0 20.47244 70 | vt 0 20.07874 71 | vt -39.37008 20.47244 72 | vt -39.37008 20.07874 73 | vt 39.37008 20.47244 74 | vt 6.097044 0 75 | vt 6.097044 39.37008 76 | vt 39.37008 20.07874 77 | 78 | usemtl wall 79 | 80 | f 2/2/1 1/1/1 3/3/1 81 | f 3/3/1 4/4/1 2/2/1 82 | f 6/6/1 5/5/1 7/7/1 83 | f 7/7/1 8/8/1 6/6/1 84 | f 3/9/2 9/5/2 10/3/2 85 | f 10/3/2 4/10/2 3/9/2 86 | f 10/11/3 11/5/3 6/9/3 87 | f 6/9/3 4/12/3 10/11/3 88 | f 6/9/3 8/13/3 4/12/3 89 | f 8/13/3 2/14/3 4/12/3 90 | f 12/15/3 2/14/3 8/13/3 91 | f 8/13/3 13/16/3 12/15/3 92 | f 13/16/3 14/17/3 12/15/3 93 | f 2/14/3 12/15/3 15/18/3 94 | f 15/18/3 16/19/3 2/14/3 95 | f 15/18/3 17/20/3 16/19/3 96 | f 18/5/4 5/9/4 6/12/4 97 | f 6/12/4 11/11/4 18/5/4 98 | f 18/5/5 9/3/5 3/10/5 99 | f 3/10/5 5/9/5 18/5/5 100 | f 3/10/5 1/21/5 5/9/5 101 | f 1/21/5 7/22/5 5/9/5 102 | f 19/23/5 7/22/5 1/21/5 103 | f 1/21/5 20/24/5 19/23/5 104 | f 20/24/5 21/25/5 19/23/5 105 | f 7/22/5 19/23/5 22/26/5 106 | f 22/26/5 23/27/5 7/22/5 107 | f 22/26/5 24/28/5 23/27/5 108 | 109 | usemtl grey 110 | 111 | f 17/30/1 21/29/1 20/1/1 112 | f 20/1/1 16/2/1 17/30/1 113 | f 19/32/4 21/31/4 17/33/4 114 | f 17/33/4 15/34/4 19/32/4 115 | f 20/31/2 1/9/2 2/10/2 116 | f 2/10/2 16/35/2 20/31/2 117 | f 7/9/4 23/31/4 13/33/4 118 | f 13/33/4 8/12/4 7/9/4 119 | f 13/8/1 23/7/1 24/36/1 120 | f 24/36/1 14/37/1 13/8/1 121 | f 24/31/2 22/32/2 12/38/2 122 | f 12/38/2 14/35/2 24/31/2 123 | 124 | usemtl road 125 | 126 | f 12/37/1 22/36/1 19/29/1 127 | f 19/29/1 15/30/1 12/37/1 128 | 129 | usemtl _defaultMat 130 | 131 | f 18/26/6 11/28/6 10/27/6 132 | f 10/26/6 9/28/6 18/27/6 133 | g roadStraightBridge 134 | 135 | 136 | 137 | 138 | usemtl wall 139 | 140 | f 2/2/1 1/1/1 3/3/1 141 | f 3/3/1 4/4/1 2/2/1 142 | f 6/6/1 5/5/1 7/7/1 143 | f 7/7/1 8/8/1 6/6/1 144 | f 3/9/2 9/5/2 10/3/2 145 | f 10/3/2 4/10/2 3/9/2 146 | f 10/11/3 11/5/3 6/9/3 147 | f 6/9/3 4/12/3 10/11/3 148 | f 6/9/3 8/13/3 4/12/3 149 | f 8/13/3 2/14/3 4/12/3 150 | f 12/15/3 2/14/3 8/13/3 151 | f 8/13/3 13/16/3 12/15/3 152 | f 13/16/3 14/17/3 12/15/3 153 | f 2/14/3 12/15/3 15/18/3 154 | f 15/18/3 16/19/3 2/14/3 155 | f 15/18/3 17/20/3 16/19/3 156 | f 18/5/4 5/9/4 6/12/4 157 | f 6/12/4 11/11/4 18/5/4 158 | f 18/5/5 9/3/5 3/10/5 159 | f 3/10/5 5/9/5 18/5/5 160 | f 3/10/5 1/21/5 5/9/5 161 | f 1/21/5 7/22/5 5/9/5 162 | f 19/23/5 7/22/5 1/21/5 163 | f 1/21/5 20/24/5 19/23/5 164 | f 20/24/5 21/25/5 19/23/5 165 | f 7/22/5 19/23/5 22/26/5 166 | f 22/26/5 23/27/5 7/22/5 167 | f 22/26/5 24/28/5 23/27/5 168 | 169 | usemtl grey 170 | 171 | f 17/30/1 21/29/1 20/1/1 172 | f 20/1/1 16/2/1 17/30/1 173 | f 19/32/4 21/31/4 17/33/4 174 | f 17/33/4 15/34/4 19/32/4 175 | f 20/31/2 1/9/2 2/10/2 176 | f 2/10/2 16/35/2 20/31/2 177 | f 7/9/4 23/31/4 13/33/4 178 | f 13/33/4 8/12/4 7/9/4 179 | f 13/8/1 23/7/1 24/36/1 180 | f 24/36/1 14/37/1 13/8/1 181 | f 24/31/2 22/32/2 12/38/2 182 | f 12/38/2 14/35/2 24/31/2 183 | 184 | usemtl road 185 | 186 | f 12/37/1 22/36/1 19/29/1 187 | f 19/29/1 15/30/1 12/37/1 188 | 189 | usemtl _defaultMat 190 | 191 | f 18/26/6 11/28/6 10/27/6 192 | f 10/26/6 9/28/6 18/27/6 193 | -------------------------------------------------------------------------------- /game/assets/racing/roadStraightBridgeMid.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl wall 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 0.9490196 0.8705882 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadStraightBridgeMid.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib roadStraightBridgeMid.mtl 4 | 5 | g roadStraightBridgeMid 6 | 7 | v -0.9183474 0.5 0 8 | v -0.9183474 0.5 1 9 | v -1 0.5 0 10 | v -1 0.5 1 11 | v 0 0.5 0 12 | v 0 0.5 1 13 | v -0.08165261 0.5 0 14 | v -0.08165261 0.5 1 15 | v 0 0.3933791 1 16 | v -1 0.3933791 1 17 | v -0.1548649 0.51 1 18 | v -0.08165261 0.52 1 19 | v -0.1548649 0.52 1 20 | v -0.8451352 0.51 1 21 | v -0.9183474 0.52 1 22 | v -0.8451352 0.52 1 23 | v 0 0.3933791 0 24 | v -1 0.3933791 0 25 | v -0.9499999 0.3933791 0 26 | v -0.05000001 0.3933791 0 27 | v -0.8451352 0.51 0 28 | v -0.9183474 0.52 0 29 | v -0.8451352 0.52 0 30 | v -0.1548649 0.51 0 31 | v -0.08165261 0.52 0 32 | v -0.1548649 0.52 0 33 | 34 | vn 0 1 0 35 | vn 0 0 1 36 | vn 1 0 0 37 | vn 0 0 -1 38 | vn -1 0 0 39 | vn 0 -1 0 40 | 41 | vt 36.15541 0 42 | vt 36.15541 39.37008 43 | vt 39.37008 0 44 | vt 39.37008 39.37008 45 | vt 0 0 46 | vt 0 39.37008 47 | vt 3.21467 0 48 | vt 3.21467 39.37008 49 | vt 0 15.48737 50 | vt -39.37008 15.48737 51 | vt 0 19.68504 52 | vt -39.37008 19.68504 53 | vt -3.21467 19.68504 54 | vt -36.15541 19.68504 55 | vt -6.097044 20.07874 56 | vt -3.21467 20.47244 57 | vt -6.097044 20.47244 58 | vt -33.27304 20.07874 59 | vt -36.15541 20.47244 60 | vt -33.27304 20.47244 61 | vt 39.37008 15.48737 62 | vt 37.40157 15.48737 63 | vt 39.37008 19.68504 64 | vt 1.968504 15.48737 65 | vt 36.15541 19.68504 66 | vt 3.21467 19.68504 67 | vt 33.27304 20.07874 68 | vt 36.15541 20.47244 69 | vt 33.27304 20.47244 70 | vt 6.097044 20.07874 71 | vt 3.21467 20.47244 72 | vt 6.097044 20.47244 73 | vt 9.449718E-16 39.37008 74 | vt 9.449718E-16 -6.987817E-16 75 | vt -39.37008 39.37008 76 | vt -1.968504 -6.987817E-16 77 | vt -37.40157 5.614464E-14 78 | vt -39.37008 -6.987817E-16 79 | vt 33.27304 0 80 | vt 33.27304 39.37008 81 | vt 0 20.47244 82 | vt 0 20.07874 83 | vt -39.37008 20.47244 84 | vt -39.37008 20.07874 85 | vt 39.37008 20.47244 86 | vt 6.097044 0 87 | vt 6.097044 39.37008 88 | vt 39.37008 20.07874 89 | 90 | usemtl wall 91 | 92 | f 2/2/1 1/1/1 3/3/1 93 | f 3/3/1 4/4/1 2/2/1 94 | f 6/6/1 5/5/1 7/7/1 95 | f 7/7/1 8/8/1 6/6/1 96 | f 10/10/2 9/9/2 6/11/2 97 | f 6/11/2 4/12/2 10/10/2 98 | f 6/11/2 8/13/2 4/12/2 99 | f 8/13/2 2/14/2 4/12/2 100 | f 11/15/2 2/14/2 8/13/2 101 | f 8/13/2 12/16/2 11/15/2 102 | f 12/16/2 13/17/2 11/15/2 103 | f 2/14/2 11/15/2 14/18/2 104 | f 14/18/2 15/19/2 2/14/2 105 | f 14/18/2 16/20/2 15/19/2 106 | f 17/9/3 5/11/3 6/12/3 107 | f 6/12/3 9/10/3 17/9/3 108 | f 19/22/4 18/21/4 3/23/4 109 | f 3/23/4 20/24/4 19/22/4 110 | f 3/23/4 17/9/4 20/24/4 111 | f 3/23/4 5/11/4 17/9/4 112 | f 3/23/4 1/25/4 5/11/4 113 | f 1/25/4 7/26/4 5/11/4 114 | f 21/27/4 7/26/4 1/25/4 115 | f 1/25/4 22/28/4 21/27/4 116 | f 22/28/4 23/29/4 21/27/4 117 | f 7/26/4 21/27/4 24/30/4 118 | f 24/30/4 25/31/4 7/26/4 119 | f 24/30/4 26/32/4 25/31/4 120 | f 3/11/5 18/9/5 10/21/5 121 | f 10/21/5 4/23/5 3/11/5 122 | f 17/34/6 9/33/6 10/35/6 123 | f 10/35/6 20/36/6 17/34/6 124 | f 10/35/6 19/37/6 20/36/6 125 | f 10/35/6 18/38/6 19/37/6 126 | 127 | usemtl grey 128 | 129 | f 16/40/1 23/39/1 22/1/1 130 | f 22/1/1 15/2/1 16/40/1 131 | f 21/42/3 23/41/3 16/43/3 132 | f 16/43/3 14/44/3 21/42/3 133 | f 22/41/5 1/11/5 2/23/5 134 | f 2/23/5 15/45/5 22/41/5 135 | f 7/11/3 25/41/3 12/43/3 136 | f 12/43/3 8/12/3 7/11/3 137 | f 12/8/1 25/7/1 26/46/1 138 | f 26/46/1 13/47/1 12/8/1 139 | f 26/41/5 24/42/5 11/48/5 140 | f 11/48/5 13/45/5 26/41/5 141 | 142 | usemtl road 143 | 144 | f 11/47/1 24/46/1 21/39/1 145 | f 21/39/1 14/40/1 11/47/1 146 | g roadStraightBridgeMid 147 | 148 | 149 | 150 | 151 | usemtl wall 152 | 153 | f 2/2/1 1/1/1 3/3/1 154 | f 3/3/1 4/4/1 2/2/1 155 | f 6/6/1 5/5/1 7/7/1 156 | f 7/7/1 8/8/1 6/6/1 157 | f 10/10/2 9/9/2 6/11/2 158 | f 6/11/2 4/12/2 10/10/2 159 | f 6/11/2 8/13/2 4/12/2 160 | f 8/13/2 2/14/2 4/12/2 161 | f 11/15/2 2/14/2 8/13/2 162 | f 8/13/2 12/16/2 11/15/2 163 | f 12/16/2 13/17/2 11/15/2 164 | f 2/14/2 11/15/2 14/18/2 165 | f 14/18/2 15/19/2 2/14/2 166 | f 14/18/2 16/20/2 15/19/2 167 | f 17/9/3 5/11/3 6/12/3 168 | f 6/12/3 9/10/3 17/9/3 169 | f 19/22/4 18/21/4 3/23/4 170 | f 3/23/4 20/24/4 19/22/4 171 | f 3/23/4 17/9/4 20/24/4 172 | f 3/23/4 5/11/4 17/9/4 173 | f 3/23/4 1/25/4 5/11/4 174 | f 1/25/4 7/26/4 5/11/4 175 | f 21/27/4 7/26/4 1/25/4 176 | f 1/25/4 22/28/4 21/27/4 177 | f 22/28/4 23/29/4 21/27/4 178 | f 7/26/4 21/27/4 24/30/4 179 | f 24/30/4 25/31/4 7/26/4 180 | f 24/30/4 26/32/4 25/31/4 181 | f 3/11/5 18/9/5 10/21/5 182 | f 10/21/5 4/23/5 3/11/5 183 | f 17/34/6 9/33/6 10/35/6 184 | f 10/35/6 20/36/6 17/34/6 185 | f 10/35/6 19/37/6 20/36/6 186 | f 10/35/6 18/38/6 19/37/6 187 | 188 | usemtl grey 189 | 190 | f 16/40/1 23/39/1 22/1/1 191 | f 22/1/1 15/2/1 16/40/1 192 | f 21/42/3 23/41/3 16/43/3 193 | f 16/43/3 14/44/3 21/42/3 194 | f 22/41/5 1/11/5 2/23/5 195 | f 2/23/5 15/45/5 22/41/5 196 | f 7/11/3 25/41/3 12/43/3 197 | f 12/43/3 8/12/3 7/11/3 198 | f 12/8/1 25/7/1 26/46/1 199 | f 26/46/1 13/47/1 12/8/1 200 | f 26/41/5 24/42/5 11/48/5 201 | f 11/48/5 13/45/5 26/41/5 202 | 203 | usemtl road 204 | 205 | f 11/47/1 24/46/1 21/39/1 206 | f 21/39/1 14/40/1 11/47/1 207 | -------------------------------------------------------------------------------- /game/assets/racing/roadStraightBridgeStart.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl wall 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 1 0.9490196 0.8705882 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadStraightLong.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadStraightLong.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib roadStraightLong.mtl 4 | 5 | g roadStraightLong 6 | 7 | v -0.9183474 0 0 8 | v -0.9183474 0 2 9 | v -1 0 0 10 | v -1 0 2 11 | v 0 0 0 12 | v 0 0 2 13 | v -0.08165261 0 0 14 | v -0.08165261 0 2 15 | v -0.8451352 0.02 0 16 | v -0.8451352 0.02 2 17 | v -0.9183474 0.02 0 18 | v -0.9183474 0.02 2 19 | v -0.8451352 0.01 0 20 | v -0.8451352 0.01 2 21 | v -0.08165261 0.02 0 22 | v -0.08165261 0.02 2 23 | v -0.1548649 0.02 0 24 | v -0.1548649 0.02 2 25 | v -0.1548649 0.01 0 26 | v -0.1548649 0.01 2 27 | 28 | vn 0 1 0 29 | vn 1 0 0 30 | vn -1 0 0 31 | 32 | vt 36.15541 0 33 | vt 36.15541 78.74016 34 | vt 39.37008 0 35 | vt 39.37008 78.74016 36 | vt 0 0 37 | vt 0 78.74016 38 | vt 3.21467 0 39 | vt 3.21467 78.74016 40 | vt 33.27304 8.326673E-18 41 | vt 33.27304 78.74016 42 | vt 36.15541 8.326673E-18 43 | vt 0 0.7874016 44 | vt 0 0.3937008 45 | vt -78.74016 0.7874016 46 | vt -78.74016 0.3937008 47 | vt 78.74016 6.310887E-30 48 | vt 78.74016 0.7874016 49 | vt -78.74016 6.310887E-30 50 | vt 3.21467 -6.106227E-18 51 | vt 6.097044 -6.106227E-18 52 | vt 6.097044 78.74016 53 | vt 4.401525E-15 0.3937008 54 | vt 4.401525E-15 0.7874016 55 | vt 78.74016 0.3937008 56 | vt 6.097044 3.155444E-32 57 | vt 33.27304 3.155444E-32 58 | 59 | usemtl grass 60 | 61 | f 2/2/1 1/1/1 3/3/1 62 | f 3/3/1 4/4/1 2/2/1 63 | f 6/6/1 5/5/1 7/7/1 64 | f 7/7/1 8/8/1 6/6/1 65 | 66 | usemtl grey 67 | 68 | f 10/10/1 9/9/1 11/11/1 69 | f 11/11/1 12/2/1 10/10/1 70 | f 13/13/2 9/12/2 10/14/2 71 | f 10/14/2 14/15/2 13/13/2 72 | f 11/12/3 1/5/3 2/16/3 73 | f 2/16/3 12/17/3 11/12/3 74 | f 7/5/2 15/12/2 16/14/2 75 | f 16/14/2 8/18/2 7/5/2 76 | f 16/8/1 15/19/1 17/20/1 77 | f 17/20/1 18/21/1 16/8/1 78 | f 17/23/3 19/22/3 20/24/3 79 | f 20/24/3 18/17/3 17/23/3 80 | 81 | usemtl road 82 | 83 | f 20/21/1 19/25/1 13/26/1 84 | f 13/26/1 14/10/1 20/21/1 85 | g roadStraightLong 86 | 87 | 88 | 89 | 90 | usemtl grass 91 | 92 | f 2/2/1 1/1/1 3/3/1 93 | f 3/3/1 4/4/1 2/2/1 94 | f 6/6/1 5/5/1 7/7/1 95 | f 7/7/1 8/8/1 6/6/1 96 | 97 | usemtl grey 98 | 99 | f 10/10/1 9/9/1 11/11/1 100 | f 11/11/1 12/2/1 10/10/1 101 | f 13/13/2 9/12/2 10/14/2 102 | f 10/14/2 14/15/2 13/13/2 103 | f 11/12/3 1/5/3 2/16/3 104 | f 2/16/3 12/17/3 11/12/3 105 | f 7/5/2 15/12/2 16/14/2 106 | f 16/14/2 8/18/2 7/5/2 107 | f 16/8/1 15/19/1 17/20/1 108 | f 17/20/1 18/21/1 16/8/1 109 | f 17/23/3 19/22/3 20/24/3 110 | f 20/24/3 18/17/3 17/23/3 111 | 112 | usemtl road 113 | 114 | f 20/21/1 19/25/1 13/26/1 115 | f 13/26/1 14/10/1 20/21/1 116 | -------------------------------------------------------------------------------- /game/assets/racing/roadStraightLongBump.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadStraightLongBumpRound.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadStraightLongMid.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadStraightSkew.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | newmtl road 14 | Ka 0.000000 0.000000 0.000000 15 | Kd 0.2666667 0.2666667 0.2666667 16 | Ks 0.330000 0.330000 0.330000 17 | 18 | -------------------------------------------------------------------------------- /game/assets/racing/roadStraightSkew.obj: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | mtllib roadStraightSkew.mtl 4 | 5 | g roadStraightSkew 6 | 7 | v -0.9183474 0 0 8 | v -1.918347 0 2 9 | v -1 0 0 10 | v -2 0 2 11 | v 0 0 0 12 | v -1 0 2 13 | v -0.08165261 0 0 14 | v -1.081653 0 2 15 | v -0.8451352 0.02 0 16 | v -1.845135 0.02 2 17 | v -0.9183474 0.02 0 18 | v -1.918347 0.02 2 19 | v -0.8451352 0.01 0 20 | v -1.845135 0.01 2 21 | v -0.08165261 0.02 0 22 | v -1.081653 0.02 2 23 | v -0.1548649 0.02 0 24 | v -1.154865 0.02 2 25 | v -0.1548649 0.01 0 26 | v -1.154865 0.01 2 27 | 28 | vn 0 1 0 29 | vn 0.8944272 0 0.4472136 30 | vn -0.8944272 0 -0.4472136 31 | 32 | vt 36.15541 1.421085E-14 33 | vt 75.52549 78.74016 34 | vt 39.37008 0 35 | vt 78.74016 78.74016 36 | vt 0 0 37 | vt 39.37008 78.74016 38 | vt 3.21467 1.421085E-14 39 | vt 42.58475 78.74016 40 | vt 33.27304 7.771561E-18 41 | vt 72.64311 78.74016 42 | vt 36.15541 1.421863E-14 43 | vt -14.88015 0.7874016 44 | vt -14.88015 0.3937008 45 | vt -102.9143 0.7874016 46 | vt -102.9143 0.3937008 47 | vt 16.16919 -8.287068E-14 48 | vt 16.16919 0.7874016 49 | vt 104.2034 -8.287068E-14 50 | vt 104.2034 0.7874016 51 | vt -1.437644 0.7874016 52 | vt -1.437644 1.489865E-26 53 | vt -89.47182 0.7874016 54 | vt -89.47182 1.490496E-26 55 | vt 3.21467 1.420419E-14 56 | vt 6.097044 -6.661338E-18 57 | vt 45.46712 78.74016 58 | vt 2.726681 0.3937008 59 | vt 2.726681 0.7874016 60 | vt 90.76086 0.3937008 61 | vt 90.76086 0.7874016 62 | vt 6.097044 0 63 | vt 33.27304 0 64 | 65 | usemtl grass 66 | 67 | f 2/2/1 1/1/1 3/3/1 68 | f 3/3/1 4/4/1 2/2/1 69 | f 6/6/1 5/5/1 7/7/1 70 | f 7/7/1 8/8/1 6/6/1 71 | 72 | usemtl grey 73 | 74 | f 10/10/1 9/9/1 11/11/1 75 | f 11/11/1 12/2/1 10/10/1 76 | f 13/13/2 9/12/2 10/14/2 77 | f 10/14/2 14/15/2 13/13/2 78 | f 11/17/3 1/16/3 2/18/3 79 | f 2/18/3 12/19/3 11/17/3 80 | f 7/21/2 15/20/2 16/22/2 81 | f 16/22/2 8/23/2 7/21/2 82 | f 16/8/1 15/24/1 17/25/1 83 | f 17/25/1 18/26/1 16/8/1 84 | f 17/28/3 19/27/3 20/29/3 85 | f 20/29/3 18/30/3 17/28/3 86 | 87 | usemtl road 88 | 89 | f 20/26/1 19/31/1 13/32/1 90 | f 13/32/1 14/10/1 20/26/1 91 | g roadStraightSkew 92 | 93 | 94 | 95 | 96 | usemtl grass 97 | 98 | f 2/2/1 1/1/1 3/3/1 99 | f 3/3/1 4/4/1 2/2/1 100 | f 6/6/1 5/5/1 7/7/1 101 | f 7/7/1 8/8/1 6/6/1 102 | 103 | usemtl grey 104 | 105 | f 10/10/1 9/9/1 11/11/1 106 | f 11/11/1 12/2/1 10/10/1 107 | f 13/13/2 9/12/2 10/14/2 108 | f 10/14/2 14/15/2 13/13/2 109 | f 11/17/3 1/16/3 2/18/3 110 | f 2/18/3 12/19/3 11/17/3 111 | f 7/21/2 15/20/2 16/22/2 112 | f 16/22/2 8/23/2 7/21/2 113 | f 16/8/1 15/24/1 17/25/1 114 | f 17/25/1 18/26/1 16/8/1 115 | f 17/28/3 19/27/3 20/29/3 116 | f 20/29/3 18/30/3 17/28/3 117 | 118 | usemtl road 119 | 120 | f 20/26/1 19/31/1 13/32/1 121 | f 13/32/1 14/10/1 20/26/1 122 | -------------------------------------------------------------------------------- /game/assets/racing/tent.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl red 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.9098039 0.3333333 0.3254902 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/tentClosed.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/tentClosedLong.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/tentLong.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl red 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.9098039 0.3333333 0.3254902 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/tentRoof.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grey 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.945098 0.9490196 0.9647059 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grass 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.3019608 0.5607843 0.4313726 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/tentRoofDouble.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl grey 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.945098 0.9490196 0.9647059 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/track.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'None' 2 | # Material Count: 6 3 | 4 | newmtl grass 5 | Ns 96.078431 6 | Ka 0.000000 0.000000 0.000000 7 | Kd 0.301961 0.560784 0.431373 8 | Ks 0.330000 0.330000 0.330000 9 | Ke 0.000000 0.000000 0.000000 10 | Ni 1.000000 11 | d 1.000000 12 | illum 2 13 | 14 | newmtl grass.001 15 | Ns 96.078431 16 | Ka 0.000000 0.000000 0.000000 17 | Kd 0.301961 0.560784 0.431373 18 | Ks 0.330000 0.330000 0.330000 19 | Ke 0.000000 0.000000 0.000000 20 | Ni 1.000000 21 | d 1.000000 22 | illum 2 23 | 24 | newmtl grey 25 | Ns 96.078431 26 | Ka 0.000000 0.000000 0.000000 27 | Kd 0.945098 0.949020 0.964706 28 | Ks 0.330000 0.330000 0.330000 29 | Ke 0.000000 0.000000 0.000000 30 | Ni 1.000000 31 | d 1.000000 32 | illum 2 33 | 34 | newmtl grey.001 35 | Ns 96.078431 36 | Ka 0.000000 0.000000 0.000000 37 | Kd 0.945098 0.949020 0.964706 38 | Ks 0.330000 0.330000 0.330000 39 | Ke 0.000000 0.000000 0.000000 40 | Ni 1.000000 41 | d 1.000000 42 | illum 2 43 | 44 | newmtl road 45 | Ns 96.078431 46 | Ka 0.000000 0.000000 0.000000 47 | Kd 0.266667 0.266667 0.266667 48 | Ks 0.330000 0.330000 0.330000 49 | Ke 0.000000 0.000000 0.000000 50 | Ni 1.000000 51 | d 1.000000 52 | illum 2 53 | 54 | newmtl road.001 55 | Ns 96.078431 56 | Ka 0.000000 0.000000 0.000000 57 | Kd 0.266667 0.266667 0.266667 58 | Ks 0.330000 0.330000 0.330000 59 | Ke 0.000000 0.000000 0.000000 60 | Ni 1.000000 61 | d 1.000000 62 | illum 2 63 | -------------------------------------------------------------------------------- /game/assets/racing/treeLarge.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl bark 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.8313726 0.654902 0.4235294 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/racing/treeSmall.mtl: -------------------------------------------------------------------------------- 1 | # Created by Kenney (www.kenney.nl) 2 | 3 | newmtl grass 4 | Ka 0.000000 0.000000 0.000000 5 | Kd 0.3019608 0.5607843 0.4313726 6 | Ks 0.330000 0.330000 0.330000 7 | 8 | newmtl bark 9 | Ka 0.000000 0.000000 0.000000 10 | Kd 0.8313726 0.654902 0.4235294 11 | Ks 0.330000 0.330000 0.330000 12 | 13 | -------------------------------------------------------------------------------- /game/assets/skybox/skybox_bk.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/skybox/skybox_bk.bmp -------------------------------------------------------------------------------- /game/assets/skybox/skybox_dn.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/skybox/skybox_dn.bmp -------------------------------------------------------------------------------- /game/assets/skybox/skybox_ft.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/skybox/skybox_ft.bmp -------------------------------------------------------------------------------- /game/assets/skybox/skybox_lf.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/skybox/skybox_lf.bmp -------------------------------------------------------------------------------- /game/assets/skybox/skybox_rt.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/skybox/skybox_rt.bmp -------------------------------------------------------------------------------- /game/assets/skybox/skybox_up.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/skybox/skybox_up.bmp -------------------------------------------------------------------------------- /game/assets/textures/Dirty_Grass_DIFF.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/textures/Dirty_Grass_DIFF.jpg -------------------------------------------------------------------------------- /game/assets/textures/Dirty_Grass_DISP.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/textures/Dirty_Grass_DISP.jpg -------------------------------------------------------------------------------- /game/assets/textures/Dirty_Grass_SPEC.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/textures/Dirty_Grass_SPEC.jpg -------------------------------------------------------------------------------- /game/assets/textures/Generated_Checker_Tiles_DIFF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/textures/Generated_Checker_Tiles_DIFF.png -------------------------------------------------------------------------------- /game/assets/textures/Generated_Checker_Tiles_DISP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/textures/Generated_Checker_Tiles_DISP.png -------------------------------------------------------------------------------- /game/assets/textures/Generated_Checker_Tiles_NRM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/textures/Generated_Checker_Tiles_NRM.png -------------------------------------------------------------------------------- /game/assets/textures/Generated_Checker_Tiles_OCC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/textures/Generated_Checker_Tiles_OCC.png -------------------------------------------------------------------------------- /game/assets/textures/Generated_Checker_Tiles_RGH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/textures/Generated_Checker_Tiles_RGH.png -------------------------------------------------------------------------------- /game/assets/textures/Wood_Grain_DIFF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/textures/Wood_Grain_DIFF.png -------------------------------------------------------------------------------- /game/assets/textures/Wood_Grain_DISP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/textures/Wood_Grain_DISP.png -------------------------------------------------------------------------------- /game/assets/textures/Wood_Grain_NRM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/textures/Wood_Grain_NRM.png -------------------------------------------------------------------------------- /game/assets/textures/Wood_Grain_RGH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/textures/Wood_Grain_RGH.png -------------------------------------------------------------------------------- /game/assets/textures/Wood_Grain_SPEC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/textures/Wood_Grain_SPEC.png -------------------------------------------------------------------------------- /game/assets/textures/wood_toon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/game/assets/textures/wood_toon.jpg -------------------------------------------------------------------------------- /game/data/car.h: -------------------------------------------------------------------------------- 1 | #ifndef car_h 2 | #define car_h 3 | 4 | #include "../../engine/steve.h" 5 | 6 | #define CAR_ACCEL 0.1f 7 | #define CAR_TURN_RATE 2.0f 8 | #define CAR_MAX_SPEED 0.7f 9 | #define CAR_MAX_SPEED_GRASS 0.05f 10 | 11 | typedef struct { 12 | object* obj; 13 | vec3 dir; 14 | float accel; 15 | float speed; 16 | int current_lap; 17 | int last_piece_index; 18 | } car; 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /game/editor.h: -------------------------------------------------------------------------------- 1 | #ifndef editor_h 2 | #define editor_h 3 | 4 | #include "../engine/steve.h" 5 | #include "data/car.h" 6 | 7 | #define EDITOR_OBJECTS_COUNT 4 8 | #define EDITOR_MAX_PLACED_OBJECTS 256 9 | #define EDITOR_MAP_SIZE 10 10 | #define EDITOR_MAP_DIR "maps/" 11 | 12 | typedef struct { 13 | int enabled; 14 | object* objects[EDITOR_OBJECTS_COUNT]; 15 | object* placed_objects[EDITOR_MAX_PLACED_OBJECTS]; 16 | object* render_list[EDITOR_MAX_PLACED_OBJECTS + 1]; 17 | unsigned int placed_indices[EDITOR_MAX_PLACED_OBJECTS]; 18 | int placed_angles[EDITOR_MAX_PLACED_OBJECTS]; 19 | unsigned int current_index; 20 | int current_angle; 21 | unsigned int render_list_size; 22 | vec3 current_pos; 23 | int start_index; 24 | int placed_count; 25 | } editor; 26 | 27 | editor game_editor; 28 | 29 | void editor_init(); 30 | void editor_set_enabled(int on); 31 | void editor_next_piece(); 32 | void editor_rotate_piece(); 33 | void editor_move_piece(vec3 pos); 34 | void editor_update(); 35 | void editor_place_piece(); 36 | void editor_remove_piece(); 37 | object* editor_current_object(); 38 | object* editor_start_object(); 39 | void editor_color_car_pieces(const car* red_car, const car* green_car); 40 | void editor_serialize(const char* filename); 41 | void editor_deserialize(const char* filename); 42 | void editor_free(); 43 | 44 | #endif 45 | -------------------------------------------------------------------------------- /game/entities.c: -------------------------------------------------------------------------------- 1 | #include "entities.h" 2 | 3 | car* entities_new_car(vec3 pos, char* filename) { 4 | car* c = malloc(sizeof(car)); 5 | c->obj = importer_load_obj(filename); 6 | c->accel = 0.0f; 7 | c->speed = 0.0f; 8 | vec3_copy(c->obj->position, pos); 9 | c->current_lap = 0; 10 | c->last_piece_index = 0; 11 | 12 | physics_compute_aabb(c->obj); 13 | renderer_init_object(c->obj); 14 | audio_init_object(c->obj, microdrag.sound_car, 1); 15 | 16 | return c; 17 | } 18 | 19 | static ray compute_car_ray(car* c) { 20 | vec3 p = { c->obj->center[0], c->obj->center[1], c->obj->center[2] }; 21 | object_vec3_to_object_space(c->obj, p); 22 | ray r; 23 | vec3 ray_dir = { 0, -1.0f, 0 }; 24 | vec3_copy(r.o, p); 25 | vec3_copy(r.dir, ray_dir); 26 | r.length = 10; 27 | return r; 28 | } 29 | 30 | void entities_update() { 31 | for (int i = 0; i < microdrag.num_cars; i++) { 32 | car* car = µdrag.cars[i]; 33 | 34 | vec3 y_axis = {0.0f, 1.0f, 0.0f}; 35 | //quat_rotate(car->obj->rotation, (float)glfwGetTime(), y_axis); 36 | 37 | // rotation 38 | vec4 front = { 0.0f, 0.0f, -1.0f, 1.0f }; 39 | vec4 vel; 40 | mat4x4 m; 41 | mat4x4_from_quat(m, car->obj->rotation); 42 | mat4x4_mul_vec4(vel, m, front); 43 | vec4_norm(vel, vel); 44 | 45 | // speed 46 | car->speed += car->accel * microdrag.delta_time; 47 | if (fabsf(car->speed) > CAR_MAX_SPEED) car->speed = (car->speed / fabsf(car->speed)) * CAR_MAX_SPEED; 48 | 49 | // damping 50 | if (car->accel == 0) { 51 | car->speed -= car->speed * 0.01f; 52 | } 53 | 54 | // collide with track 55 | int on_grass = 1; 56 | for (int j = 0; j < EDITOR_MAX_PLACED_OBJECTS; j++) { 57 | object* track_piece = game_editor.placed_objects[j]; 58 | if (track_piece != NULL && physics_objects_collide(car->obj, track_piece)) { 59 | mesh* m = physics_ray_hit_mesh(compute_car_ray(car), track_piece); 60 | if (m != NULL) { 61 | 62 | // advance piece 63 | if ((car->last_piece_index + 1) % game_editor.placed_count == j) { 64 | car->last_piece_index = j; 65 | } 66 | 67 | if (strcmp(m->mat.name, "grass") != 0) { 68 | on_grass = 0; 69 | } 70 | break; 71 | } 72 | } 73 | } 74 | 75 | if (on_grass) { 76 | if (fabsf(car->speed) > CAR_MAX_SPEED_GRASS) 77 | car->speed = (car->speed / fabsf(car->speed)) * CAR_MAX_SPEED_GRASS; 78 | } 79 | 80 | // apply velocity 81 | vec4_scale(vel, vel, car->speed); 82 | vec3_add(car->obj->position, car->obj->position, vel); 83 | 84 | // audio 85 | audio_move_source(car->obj->audio_source, car->obj->position); 86 | audio_source_playing(car->obj->audio_source); 87 | 88 | // color track pieces 89 | editor_color_car_pieces(µdrag.cars[0], µdrag.cars[1]); 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /game/entities.h: -------------------------------------------------------------------------------- 1 | #ifndef entities_h 2 | #define entities_h 3 | 4 | #include "../engine/steve.h" 5 | #include "game.h" 6 | #include "editor.h" 7 | #include "data/car.h" 8 | 9 | car* entities_new_car(vec3 pos, char* filename); 10 | void entities_car_advance(); 11 | void entities_update(); 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /game/game.c: -------------------------------------------------------------------------------- 1 | #include "game.h" 2 | 3 | void game_init(GLFWwindow* window) { 4 | camera game_camera = { 5 | .front = {0.0f, 0.0f, -1.0f}, 6 | .up = {0.0f, 1.0f, 0.0f}, 7 | .pos = {0.0f, 2.0f, 9.0f}, 8 | .speed = 10.0f 9 | }; 10 | 11 | microdrag.game_camera = game_camera; 12 | 13 | microdrag.window = window; 14 | microdrag.delta_time = 0.0f; 15 | microdrag.last_frame = 0.0f; 16 | 17 | microdrag.game_render_list = render_list_new(); 18 | 19 | microdrag.cars = malloc(MAX_CARS * sizeof(car)); 20 | microdrag.lights = malloc(MAX_LIGHTS * sizeof(light)); 21 | 22 | microdrag.state = MENU; 23 | } 24 | 25 | void game_start() { 26 | if (game_editor.start_index != -1) { 27 | object* start = game_editor.placed_objects[game_editor.start_index]; 28 | vec3 start_pos; 29 | vec3_copy(start_pos, start->position); 30 | vec3_scale(start_pos, start->position, start->scale); 31 | 32 | car* red_car = µdrag.cars[0]; 33 | vec3_copy(red_car->obj->position, start_pos); 34 | red_car->last_piece_index = game_editor.start_index; 35 | 36 | car* green_car = µdrag.cars[1]; 37 | vec3 green_off = { -0.5f, 0.0f, 0.0 }; 38 | vec3_copy(green_car->obj->position, start_pos); 39 | vec3_add(green_car->obj->position, green_off, green_car->obj->position); 40 | green_car->last_piece_index = game_editor.start_index; 41 | 42 | microdrag.state = RACE; 43 | 44 | // top-down camera 45 | camera* cam = µdrag.game_camera; 46 | vec3 pos = { 0.0f, 50.0f, 0.0f }; 47 | vec3_copy(cam->pos, pos); 48 | vec3 front = { -0.03f, -0.99, -0.04f }; 49 | vec3_copy(cam->front, front); 50 | } 51 | } 52 | 53 | void game_update() { 54 | // 1st person camera 55 | /* if (microdrag.state == RACE) { 56 | camera* cam = µdrag.game_camera; 57 | vec3_copy(cam->pos, microdrag.cars[0].obj->position); 58 | cam->pos[1] = 0.6f; 59 | vec4 front = { 0.0f, 0.0f, -1.0f, 1.0f }; 60 | vec3 dir; 61 | mat4x4 m; 62 | mat4x4_from_quat(m, microdrag.cars[0].obj->rotation); 63 | mat4x4_mul_vec4(dir, m, front); 64 | vec3_norm(dir, dir); 65 | vec3_copy(cam->front, dir); 66 | 67 | vec3 off = { dir[0], dir[1], dir[2] }; 68 | vec3_scale(off, off, -2); 69 | vec3_add(cam->pos, off, cam->pos); 70 | } */ 71 | } 72 | 73 | void game_free() { 74 | render_list_free(microdrag.game_render_list); 75 | renderer_free_object(microdrag.cars[0].obj); 76 | renderer_free_object(microdrag.cars[1].obj); 77 | audio_free_object(microdrag.cars[0].obj); 78 | audio_free_object(microdrag.cars[1].obj); 79 | object_free(microdrag.cars[0].obj); 80 | object_free(microdrag.cars[1].obj); 81 | free(microdrag.cars); 82 | free(microdrag.lights); 83 | } 84 | -------------------------------------------------------------------------------- /game/game.h: -------------------------------------------------------------------------------- 1 | #ifndef game_h 2 | #define game_h 3 | 4 | #include "../engine/steve.h" 5 | #include "editor.h" 6 | #include "data/car.h" 7 | 8 | #define GAME_WIDTH 1920 9 | #define GAME_HEIGHT 1080 10 | 11 | #define MAX_CARS 128 12 | #define MAX_LIGHTS 128 13 | 14 | enum game_state { MENU, RACE }; 15 | 16 | typedef struct { 17 | GLFWwindow* window; 18 | camera game_camera; 19 | render_list* game_render_list; 20 | float delta_time; 21 | float last_frame; 22 | car* cars; 23 | int num_cars; 24 | light* lights; 25 | int num_lights; 26 | ALuint sound_car; 27 | enum game_state state; 28 | } game; 29 | 30 | game microdrag; 31 | 32 | void game_init(GLFWwindow* window); 33 | void game_start(); 34 | void game_update(); 35 | void game_free(); 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /game/input.h: -------------------------------------------------------------------------------- 1 | #ifndef input_h 2 | #define input_h 3 | 4 | #include "../engine/steve.h" 5 | #include "game.h" 6 | #include "editor.h" 7 | 8 | typedef struct { 9 | int first_mouse; 10 | float yaw; 11 | float pitch; 12 | float mouse_last_x; 13 | float mouse_last_y; 14 | float fov; 15 | float sensitivity; 16 | int capture_cursor; 17 | int joystick_1_present; 18 | int joystick_2_present; 19 | } input; 20 | 21 | input game_input; 22 | 23 | void input_key_callback(GLFWwindow* window, int key, int scancode, int action, int mods); 24 | void input_mouse_callback(GLFWwindow* window, double x_pos, double y_pos); 25 | void input_mouse_button_callback(GLFWwindow* window, int button, int action, int mods); 26 | void input_joystick_callback(int joy, int event); 27 | 28 | void input_init(); 29 | void input_update(); 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /game/main.c: -------------------------------------------------------------------------------- 1 | #include "../engine/steve.h" 2 | 3 | #include "game.h" 4 | #include "ui.h" 5 | #include "editor.h" 6 | #include "input.h" 7 | #include "entities.h" 8 | #include "data/car.h" 9 | 10 | int main() 11 | { 12 | // Init context 13 | GLFWwindow* window; 14 | if (renderer_init("Microdrag", GAME_WIDTH, GAME_HEIGHT, 0, &window) < 0) { 15 | printf("Error initializing renderer!\n"); 16 | return -1; 17 | } 18 | 19 | // Init audio 20 | if (audio_init() < 0) { 21 | printf("Error initializing audio\n"); 22 | return -1; 23 | } 24 | 25 | // init game 26 | game_init(window); 27 | 28 | // init input 29 | input_init(); 30 | 31 | // init ui 32 | ui_init(µdrag); 33 | 34 | // init editor 35 | editor_init(); 36 | 37 | // lights 38 | light l1; 39 | l1.position[0] = 0.0f; 40 | l1.position[1] = 4.0f; 41 | l1.position[2] = 0.0f; 42 | l1.color[0] = 1.0f; 43 | l1.color[1] = 1.0f; 44 | l1.color[2] = 1.0f; 45 | 46 | microdrag.lights[0] = l1; 47 | microdrag.num_lights = 1; 48 | 49 | // audio 50 | audio_load_sound("assets/audio/test.wav", µdrag.sound_car); 51 | 52 | // cars 53 | vec3 car_pos = {0.0f, 0.05f, 0.0f}; 54 | microdrag.cars[0] = *entities_new_car(car_pos, "assets/racing/raceCarRed.obj"); 55 | vec3 red_car_pos = {2.0f, 0.05f, 0.0f}; 56 | microdrag.cars[1] = *entities_new_car(red_car_pos, "assets/racing/raceCarGreen.obj"); 57 | microdrag.num_cars = 2; 58 | 59 | // test sphere 60 | object* sphere = factory_create_sphere(1, 36, 18); 61 | material mat; 62 | material_init(&mat); 63 | strcpy(mat.name, "sphere_mat"); 64 | sphere->meshes[0].mat = mat; 65 | object_set_center(sphere); 66 | renderer_init_object(sphere); 67 | 68 | // plane 69 | object* plane = factory_create_plane(80, 80); 70 | plane->position[1] = -0.001; 71 | plane->meshes[0].mat = mat; 72 | plane->receive_shadows = 1; 73 | material mat_plane; 74 | material_init(&mat_plane); 75 | strcpy(mat_plane.name, "plane_mat"); 76 | strcpy(mat_plane.texture_path, "assets/textures/Wood_Grain_DIFF.png"); 77 | strcpy(mat_plane.normal_map_path, "assets/textures/Wood_Grain_NRM.png"); 78 | strcpy(mat_plane.specular_map_path, "assets/textures/Wood_Grain_SPEC.png"); 79 | mat_plane.texture_subdivision = 5; 80 | plane->meshes[0].mat = mat_plane; 81 | object_set_center(plane); 82 | mesh_compute_tangent(&plane->meshes[0]); 83 | renderer_init_object(plane); 84 | 85 | // init skybox 86 | skybox sky; 87 | const char* faces[6]; 88 | faces[0] = "assets/skybox/skybox_rt.bmp"; 89 | faces[1] = "assets/skybox/skybox_lf.bmp"; 90 | faces[2] = "assets/skybox/skybox_up.bmp"; 91 | faces[3] = "assets/skybox/skybox_dn.bmp"; 92 | faces[4] = "assets/skybox/skybox_ft.bmp"; 93 | faces[5] = "assets/skybox/skybox_bk.bmp"; 94 | skybox_init(&sky, faces); 95 | 96 | int macMoved = 0; 97 | while (!renderer_should_close()) { 98 | float current_frame = glfwGetTime(); 99 | microdrag.delta_time = current_frame - microdrag.last_frame; 100 | microdrag.last_frame = current_frame; 101 | 102 | // microdrag.lights[0].position[0] = 4 + sinf(current_frame); 103 | // microdrag.cars[0].obj->position[1] = 1.0f + sinf(2.0f * current_frame); 104 | // microdrag.lights[0].position[0] = 24 * sinf(0.5f * current_frame); 105 | vec3_copy(sphere->position, microdrag.lights[0].position); 106 | 107 | // game 108 | game_update(); 109 | 110 | // audio 111 | audio_move_listener(microdrag.game_camera.pos); 112 | 113 | // input 114 | input_update(); 115 | 116 | // update editor 117 | editor_update(); 118 | 119 | // update entities 120 | entities_update(); 121 | 122 | // render entities 123 | render_list_clear(microdrag.game_render_list); 124 | render_list_add(microdrag.game_render_list, microdrag.cars[0].obj); 125 | render_list_add(microdrag.game_render_list, microdrag.cars[1].obj); 126 | // render_list_add(microdrag.game_render_list, sphere); 127 | render_list_add(microdrag.game_render_list, plane); 128 | render_list_add_batch(microdrag.game_render_list, game_editor.render_list, game_editor.render_list_size); 129 | 130 | // render editor 131 | renderer_render_objects(microdrag.game_render_list->objects, microdrag.game_render_list->size, µdrag.lights, microdrag.num_lights, µdrag.game_camera, ui_render, &sky); 132 | 133 | #ifdef __APPLE__ // TODO: remove this workaround with glfw 3.3 134 | if (macMoved == 0) 135 | { 136 | int x, y; 137 | glfwGetWindowPos(window, &x, &y); 138 | glfwSetWindowPos(window, ++x, y); 139 | macMoved = 1; 140 | } 141 | #endif 142 | } 143 | 144 | // cleanup 145 | editor_free(); 146 | ui_free(); 147 | audio_free(); 148 | game_free(); 149 | skybox_free(&sky); 150 | renderer_cleanup(); 151 | 152 | return 0; 153 | } 154 | -------------------------------------------------------------------------------- /game/ui.c: -------------------------------------------------------------------------------- 1 | #include "ui.h" 2 | 3 | #define NK_INCLUDE_FIXED_TYPES 4 | #define NK_INCLUDE_STANDARD_IO 5 | #define NK_INCLUDE_STANDARD_VARARGS 6 | #define NK_INCLUDE_DEFAULT_ALLOCATOR 7 | #define NK_INCLUDE_VERTEX_BUFFER_OUTPUT 8 | #define NK_INCLUDE_FONT_BAKING 9 | #define NK_INCLUDE_DEFAULT_FONT 10 | #define NK_IMPLEMENTATION 11 | #define NK_GLFW_GL3_IMPLEMENTATION 12 | #define NK_KEYSTATE_BASED_INPUT 13 | 14 | #include "../libs/nuklear.h" 15 | #include "../libs/nuklear_glfw_gl3.h" 16 | 17 | struct nk_context *ctx; 18 | struct nk_colorf bg; 19 | 20 | void ui_init() { 21 | 22 | ctx = nk_glfw3_init(microdrag.window, NK_GLFW3_INSTALL_CALLBACKS); 23 | {struct nk_font_atlas *atlas; 24 | nk_glfw3_font_stash_begin(&atlas); 25 | nk_glfw3_font_stash_end();} 26 | 27 | bg.r = 0.10f, bg.g = 0.18f, bg.b = 0.24f, bg.a = 1.0f; 28 | strncpy(ui_map_filename, "map", 4); 29 | 30 | //ctx->style.window.background = nk_rgba(0,0,0,0); 31 | //ctx->style.window.fixed_background = nk_style_item_color(nk_rgba(0,0,0,0)); 32 | ctx->style.window.border_color = nk_rgb(255,165,0); 33 | ctx->style.window.combo_border_color = nk_rgb(255,165,0); 34 | ctx->style.window.contextual_border_color = nk_rgb(255,165,0); 35 | ctx->style.window.menu_border_color = nk_rgb(255,165,0); 36 | ctx->style.window.group_border_color = nk_rgb(255,165,0); 37 | ctx->style.window.tooltip_border_color = nk_rgb(255,165,0); 38 | ctx->style.window.scrollbar_size = nk_vec2(16,16); 39 | ctx->style.window.border_color = nk_rgba(0,0,0,0); 40 | ctx->style.window.border = 1; 41 | 42 | ctx->style.button.normal = nk_style_item_color(nk_rgba(0,0,0,0)); 43 | ctx->style.button.hover = nk_style_item_color(nk_rgb(255,165,0)); 44 | ctx->style.button.active = nk_style_item_color(nk_rgb(220,10,0)); 45 | ctx->style.button.border_color = nk_rgb(255,165,0); 46 | ctx->style.button.text_background = nk_rgb(0,0,0); 47 | ctx->style.button.text_normal = nk_rgb(255,165,0); 48 | ctx->style.button.text_hover = nk_rgb(28,48,62); 49 | ctx->style.button.text_active = nk_rgb(28,48,62); 50 | } 51 | 52 | void ui_render() { 53 | 54 | nk_glfw3_new_frame(); 55 | 56 | camera* cam = µdrag.game_camera; 57 | 58 | // editor 59 | if (nk_begin(ctx, "Editor", nk_rect(50, 50, 160, 225), 60 | NK_WINDOW_BORDER|NK_WINDOW_MOVABLE| 61 | NK_WINDOW_MINIMIZABLE|NK_WINDOW_TITLE)) { 62 | 63 | nk_layout_row_static(ctx, 30, 120, 1); 64 | char* on = "Editor on"; 65 | char* off = "Editor off"; 66 | if (nk_button_label(ctx, game_editor.enabled == 0 ? on : off)) 67 | editor_set_enabled(game_editor.enabled == 0 ? 1 : 0); 68 | 69 | nk_layout_row_static(ctx, 30, 120, 1); 70 | nk_label(ctx, "Map name:", NK_TEXT_LEFT); 71 | nk_edit_string_zero_terminated(ctx, NK_EDIT_FIELD, ui_map_filename, sizeof(ui_map_filename) - 1, nk_filter_default); 72 | if (nk_button_label(ctx, "Save map")) { 73 | editor_serialize(ui_map_filename); 74 | } 75 | 76 | nk_layout_row_static(ctx, 30, 120, 1); 77 | if (nk_button_label(ctx, "Load map")) { 78 | editor_deserialize(ui_map_filename); 79 | } 80 | } 81 | nk_end(ctx); 82 | 83 | // debug 84 | if (nk_begin(ctx, "Debug", nk_rect(800, 50, 300, 400), 85 | NK_WINDOW_BORDER|NK_WINDOW_MOVABLE|NK_WINDOW_SCALABLE| 86 | NK_WINDOW_MINIMIZABLE|NK_WINDOW_TITLE)) 87 | { 88 | nk_layout_row_static(ctx, 30, 120, 1); 89 | if (nk_button_label(ctx, "Toggle AABB")) 90 | renderer_render_aabb = renderer_render_aabb == 0 ? 1 : 0; 91 | 92 | nk_layout_row_static(ctx, 30, 120, 1); 93 | if (nk_button_label(ctx, "Reset camera")) { 94 | cam->pos[0] = 0.0f; 95 | cam->pos[1] = 2.0f; 96 | cam->pos[2] = 9.0f; 97 | cam->front[0] = 0.0f; 98 | cam->front[1] = 0.0f; 99 | cam->front[2] = -1.0f; 100 | } 101 | 102 | nk_layout_row_static(ctx, 30, 120, 1); 103 | if (nk_button_label(ctx, "Start game")) { 104 | game_start(); 105 | } 106 | 107 | nk_layout_row_static(ctx, 30, 120, 1); 108 | if (nk_button_label(ctx, "Compile shader")) { 109 | renderer_recompile_shader(); 110 | } 111 | 112 | nk_layout_row_static(ctx, 30, 120, 1); 113 | if (nk_button_label(ctx, "Set light here")) { 114 | vec3_copy(microdrag.lights[0].position, cam->pos); 115 | } 116 | 117 | nk_layout_row_static(ctx, 30, 120, 1); 118 | if (nk_button_label(ctx, "Toggle depth map")) { 119 | renderer_debug_enabled = renderer_debug_enabled == 0 ? 1 : 0; 120 | } 121 | 122 | nk_layout_row_static(ctx, 30, 120, 1); 123 | if (nk_button_label(ctx, "Toggle pcf")) { 124 | renderer_shadow_pcf_enabled = renderer_shadow_pcf_enabled == 0 ? 1 : 0; 125 | } 126 | 127 | char camera_pos[128]; 128 | snprintf(camera_pos, 128, "camera: %f %f %f | %f %f %f\n", cam->pos[0], cam->pos[1], cam->pos[2], cam->front[0], cam->front[1], cam->front[2]); 129 | nk_label(ctx, camera_pos, NK_TEXT_LEFT); 130 | 131 | nk_layout_row_begin(ctx, NK_STATIC, 30, 2); 132 | { 133 | nk_layout_row_push(ctx, 50); 134 | nk_label(ctx, "Shadow Bias:", NK_TEXT_LEFT); 135 | nk_layout_row_push(ctx, 110); 136 | nk_slider_float(ctx, 0, &renderer_shadow_bias, 0.5f, 0.1f); 137 | } 138 | 139 | char shadow_bias[128]; 140 | snprintf(shadow_bias, 128, "%f\n", renderer_shadow_bias); 141 | nk_label(ctx, shadow_bias, NK_TEXT_LEFT); 142 | nk_layout_row_end(ctx); 143 | 144 | nk_layout_row_begin(ctx, NK_STATIC, 30, 2); 145 | { 146 | nk_layout_row_push(ctx, 50); 147 | nk_label(ctx, "Shadow Map Size:", NK_TEXT_LEFT); 148 | nk_layout_row_push(ctx, 110); 149 | nk_slider_float(ctx, 0, &renderer_shadow_far, 20.0f, 10.0f); 150 | } 151 | 152 | char shadow_far[128]; 153 | snprintf(shadow_far, 128, "%f\n", renderer_shadow_far); 154 | nk_label(ctx, shadow_far, NK_TEXT_LEFT); 155 | nk_layout_row_end(ctx); 156 | } 157 | nk_end(ctx); 158 | 159 | nk_glfw3_render(NK_ANTI_ALIASING_ON, MAX_VERTEX_BUFFER, MAX_ELEMENT_BUFFER); 160 | } 161 | 162 | void ui_free() { 163 | nk_glfw3_shutdown(); 164 | } 165 | -------------------------------------------------------------------------------- /game/ui.h: -------------------------------------------------------------------------------- 1 | #ifndef ui_h 2 | #define ui_h 3 | 4 | #include "../engine/steve.h" 5 | 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | 17 | #include 18 | #include 19 | 20 | #include "game.h" 21 | #include "editor.h" 22 | 23 | #define MAX_VERTEX_BUFFER 512 * 1024 24 | #define MAX_ELEMENT_BUFFER 128 * 1024 25 | 26 | char ui_map_filename[256]; 27 | 28 | void ui_init(); 29 | void ui_render(); 30 | void ui_free(); 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /screenshots/screen_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mikepicker/opengl-racing/73f8b51d610c79156eff615250218f1d1db649db/screenshots/screen_1.png -------------------------------------------------------------------------------- /test.sh: -------------------------------------------------------------------------------- 1 | make && cd game && ./microdrag 2 | --------------------------------------------------------------------------------