aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornathansmithsmith <nathansmith7@mailfence.com>2023-09-21 21:28:50 -0600
committernathansmithsmith <nathansmith7@mailfence.com>2023-09-21 21:28:50 -0600
commitff2c529dda20dba1ea7ef21f46703d59fb49178b (patch)
tree306f7b2749b4a7349f7dd2a505cd8b41c75942f9
parent0387c05d7d4b784b91ea35b88caa12c4fc9fd6d3 (diff)
Better looking gyro
-rw-r--r--assets/gyroscope.mtl12
-rw-r--r--assets/gyroscope.obj280
-rw-r--r--assets/gyroscope.pngbin0 -> 105390 bytes
-rw-r--r--src/assets.c20
-rw-r--r--src/assets.h10
-rw-r--r--src/entities/antifaShip.c7
-rw-r--r--src/entities/antifaShip.h1
-rw-r--r--src/gameScreen.c18
-rw-r--r--src/gameScreen.h1
9 files changed, 332 insertions, 17 deletions
diff --git a/assets/gyroscope.mtl b/assets/gyroscope.mtl
new file mode 100644
index 0000000..8e1727c
--- /dev/null
+++ b/assets/gyroscope.mtl
@@ -0,0 +1,12 @@
+# Blender 3.5.1 MTL File: 'gyro.blend'
+# www.blender.org
+
+newmtl Material.001
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.450000
+d 1.000000
+illum 2
diff --git a/assets/gyroscope.obj b/assets/gyroscope.obj
new file mode 100644
index 0000000..39e4d61
--- /dev/null
+++ b/assets/gyroscope.obj
@@ -0,0 +1,280 @@
+# Blender 3.5.1
+# www.blender.org
+mtllib gyroscope.mtl
+o Icosphere
+v 0.000000 -1.000000 0.000000
+v 0.723607 -0.447220 0.525725
+v -0.276388 -0.447220 0.850649
+v -0.894426 -0.447216 0.000000
+v -0.276388 -0.447220 -0.850649
+v 0.723607 -0.447220 -0.525725
+v 0.276388 0.447220 0.850649
+v -0.723607 0.447220 0.525725
+v -0.723607 0.447220 -0.525725
+v 0.276388 0.447220 -0.850649
+v 0.894426 0.447216 0.000000
+v 0.000000 1.000000 0.000000
+v -0.162456 -0.850654 0.499995
+v 0.425323 -0.850654 0.309011
+v 0.262869 -0.525738 0.809012
+v 0.850648 -0.525736 0.000000
+v 0.425323 -0.850654 -0.309011
+v -0.525730 -0.850652 0.000000
+v -0.688189 -0.525736 0.499997
+v -0.162456 -0.850654 -0.499995
+v -0.688189 -0.525736 -0.499997
+v 0.262869 -0.525738 -0.809012
+v 0.951058 0.000000 0.309013
+v 0.951058 0.000000 -0.309013
+v 0.000000 0.000000 1.000000
+v 0.587786 0.000000 0.809017
+v -0.951058 0.000000 0.309013
+v -0.587786 0.000000 0.809017
+v -0.587786 0.000000 -0.809017
+v -0.951058 0.000000 -0.309013
+v 0.587786 0.000000 -0.809017
+v 0.000000 0.000000 -1.000000
+v 0.688189 0.525736 0.499997
+v -0.262869 0.525738 0.809012
+v -0.850648 0.525736 0.000000
+v -0.262869 0.525738 -0.809012
+v 0.688189 0.525736 -0.499997
+v 0.162456 0.850654 0.499995
+v 0.525730 0.850652 0.000000
+v -0.425323 0.850654 0.309011
+v -0.425323 0.850654 -0.309011
+v 0.162456 0.850654 -0.499995
+vn 0.1024 -0.9435 0.3151
+vn 0.7002 -0.6617 0.2680
+vn -0.2680 -0.9435 0.1947
+vn -0.2680 -0.9435 -0.1947
+vn 0.1024 -0.9435 -0.3151
+vn 0.9050 -0.3304 0.2680
+vn 0.0247 -0.3304 0.9435
+vn -0.8897 -0.3304 0.3151
+vn -0.5746 -0.3304 -0.7488
+vn 0.5346 -0.3304 -0.7779
+vn 0.8026 -0.1256 0.5831
+vn -0.3066 -0.1256 0.9435
+vn -0.9921 -0.1256 -0.0000
+vn -0.3066 -0.1256 -0.9435
+vn 0.8026 -0.1256 -0.5831
+vn 0.4089 0.6617 0.6284
+vn -0.4713 0.6617 0.5831
+vn -0.7002 0.6617 -0.2680
+vn 0.0385 0.6617 -0.7488
+vn 0.7240 0.6617 -0.1947
+vn 0.2680 0.9435 -0.1947
+vn 0.4911 0.7947 -0.3568
+vn 0.4089 0.6617 -0.6284
+vn -0.1024 0.9435 -0.3151
+vn -0.1876 0.7947 -0.5773
+vn -0.4713 0.6617 -0.5831
+vn -0.3313 0.9435 -0.0000
+vn -0.6071 0.7947 -0.0000
+vn -0.7002 0.6617 0.2680
+vn -0.1024 0.9435 0.3151
+vn -0.1876 0.7947 0.5773
+vn 0.0385 0.6617 0.7488
+vn 0.2680 0.9435 0.1947
+vn 0.4911 0.7947 0.3568
+vn 0.7240 0.6617 0.1947
+vn 0.8897 0.3304 -0.3151
+vn 0.7947 0.1876 -0.5773
+vn 0.5746 0.3304 -0.7488
+vn -0.0247 0.3304 -0.9435
+vn -0.3035 0.1876 -0.9342
+vn -0.5346 0.3304 -0.7779
+vn -0.9050 0.3304 -0.2680
+vn -0.9822 0.1876 -0.0000
+vn -0.9050 0.3304 0.2680
+vn -0.5346 0.3304 0.7779
+vn -0.3035 0.1876 0.9342
+vn -0.0247 0.3304 0.9435
+vn 0.5746 0.3304 0.7488
+vn 0.7947 0.1876 0.5773
+vn 0.8897 0.3304 0.3151
+vn 0.3066 0.1256 -0.9435
+vn 0.3035 -0.1876 -0.9342
+vn 0.0247 -0.3304 -0.9435
+vn -0.8026 0.1256 -0.5831
+vn -0.7947 -0.1876 -0.5773
+vn -0.8897 -0.3304 -0.3151
+vn -0.8026 0.1256 0.5831
+vn -0.7947 -0.1876 0.5773
+vn -0.5746 -0.3304 0.7488
+vn 0.3066 0.1256 0.9435
+vn 0.3035 -0.1876 0.9342
+vn 0.5346 -0.3304 0.7779
+vn 0.9921 0.1256 -0.0000
+vn 0.9822 -0.1876 -0.0000
+vn 0.9050 -0.3304 -0.2680
+vn 0.4713 -0.6617 -0.5831
+vn 0.1876 -0.7947 -0.5773
+vn -0.0385 -0.6617 -0.7488
+vn -0.4089 -0.6617 -0.6284
+vn -0.4911 -0.7947 -0.3568
+vn -0.7240 -0.6617 -0.1947
+vn -0.7240 -0.6617 0.1947
+vn -0.4911 -0.7947 0.3568
+vn -0.4089 -0.6617 0.6284
+vn 0.7002 -0.6617 -0.2680
+vn 0.6071 -0.7947 -0.0000
+vn 0.3313 -0.9435 -0.0000
+vn -0.0385 -0.6617 0.7488
+vn 0.1876 -0.7947 0.5773
+vn 0.4713 -0.6617 0.5831
+vt 0.094799 0.499779
+vt 0.809837 0.307796
+vt 0.198363 0.685005
+vt 0.116816 0.297055
+vt 0.971919 0.505932
+vt 0.302788 0.189684
+vt 0.759840 0.498352
+vt 0.451909 0.297056
+vt 0.307012 0.499779
+vt 0.906721 0.118985
+vt 0.642104 0.592901
+vt 0.116816 0.082311
+vt 0.533456 0.407675
+vt 0.856724 0.687163
+vt 0.451909 0.082312
+vt 0.694642 0.126566
+vt 0.637881 0.189683
+vt 0.429891 0.592902
+vt 0.201326 0.354911
+vt 0.029707 0.579983
+vt 0.141533 0.600358
+vt 0.917688 0.307796
+vt 0.083414 0.354911
+vt 0.090581 0.688857
+vt 0.536418 0.354911
+vt 0.266269 0.600358
+vt 0.205395 0.491486
+vt 0.024456 0.458518
+vt 0.926139 0.408279
+vt 0.310637 0.291800
+vt 0.215244 0.252795
+vt 0.133038 0.403823
+vt 0.801483 0.403823
+vt 0.870663 0.494014
+vt 0.359550 0.252797
+vt 0.257774 0.403823
+vt 0.691017 0.454605
+vt 0.292408 0.688857
+vt 0.738951 0.225627
+vt 0.645730 0.291799
+vt 0.550337 0.252795
+vt 0.024456 0.252794
+vt 0.974636 0.196816
+vt 0.863608 0.221172
+vt 0.215244 0.126572
+vt 0.105932 0.189683
+vt 0.802952 0.600539
+vt 0.627501 0.403823
+vt 0.310637 0.087568
+vt 0.927610 0.604994
+vt 0.441025 0.189684
+vt 0.359549 0.126573
+vt 0.691925 0.576183
+vt 0.795897 0.114647
+vt 0.592867 0.688857
+vt 0.024457 0.126570
+vt 0.975544 0.075238
+vt 0.601361 0.492322
+vt 0.201325 0.024456
+vt 0.425673 0.403823
+vt 0.418507 0.024456
+vt 0.748872 0.687163
+vt 0.550337 0.126572
+vt 0.468131 0.688857
+vt 0.865078 0.024456
+vt 0.645730 0.087567
+vt 0.359549 0.634163
+vt 0.740421 0.028912
+vt 0.540488 0.601195
+vt 0.476626 0.492323
+vt 0.536419 0.024456
+vt 0.364800 0.512697
+s 0
+usemtl Material.001
+f 1/1/1 14/21/1 13/20/1
+f 2/3/2 14/21/2 16/26/2
+f 1/1/3 13/20/3 18/28/3
+f 1/1/4 18/28/4 20/32/4
+f 1/1/5 20/32/5 17/27/5
+f 2/3/6 16/26/6 23/38/6
+f 3/4/7 15/23/7 25/42/7
+f 4/6/8 19/31/8 27/45/8
+f 5/7/9 21/34/9 29/47/9
+f 6/8/10 22/35/10 31/51/10
+f 2/2/11 23/39/11 26/44/11
+f 3/4/12 25/42/12 28/46/12
+f 4/6/13 27/45/13 30/49/13
+f 5/7/14 29/47/14 32/53/14
+f 6/8/15 31/51/15 24/41/15
+f 7/10/16 33/54/16 38/65/16
+f 8/11/17 34/55/17 40/69/17
+f 9/13/18 35/58/18 41/70/18
+f 10/15/19 36/61/19 42/71/19
+f 11/17/20 37/63/20 39/66/20
+f 39/67/21 42/72/21 12/18/21
+f 39/66/22 37/63/22 42/71/22
+f 37/63/23 10/15/23 42/71/23
+f 42/72/24 41/70/24 12/18/24
+f 42/72/25 36/60/25 41/70/25
+f 36/60/26 9/13/26 41/70/26
+f 41/70/27 40/69/27 12/18/27
+f 41/70/28 35/58/28 40/69/28
+f 35/58/29 8/11/29 40/69/29
+f 40/69/30 38/64/30 12/18/30
+f 40/69/31 34/55/31 38/64/31
+f 34/57/32 7/10/32 38/65/32
+f 38/64/33 39/67/33 12/18/33
+f 38/65/34 33/54/34 39/68/34
+f 33/54/35 11/16/35 39/68/35
+f 24/41/36 37/63/36 11/17/36
+f 24/41/37 31/51/37 37/63/37
+f 31/51/38 10/15/38 37/63/38
+f 32/52/39 36/61/39 10/15/39
+f 32/53/40 29/47/40 36/62/40
+f 29/47/41 9/14/41 36/62/41
+f 30/48/42 35/58/42 9/13/42
+f 30/49/43 27/45/43 35/59/43
+f 27/45/44 8/12/44 35/59/44
+f 28/46/45 34/56/45 8/12/45
+f 28/46/46 25/42/46 34/56/46
+f 25/43/47 7/10/47 34/57/47
+f 26/44/48 33/54/48 7/10/48
+f 26/44/49 23/39/49 33/54/49
+f 23/39/50 11/16/50 33/54/50
+f 31/51/51 32/52/51 10/15/51
+f 31/51/52 22/35/52 32/52/52
+f 22/37/53 5/7/53 32/53/53
+f 29/47/54 30/50/54 9/14/54
+f 29/47/55 21/34/55 30/50/55
+f 21/34/56 4/5/56 30/50/56
+f 27/45/57 28/46/57 8/12/57
+f 27/45/58 19/31/58 28/46/58
+f 19/31/59 3/4/59 28/46/59
+f 25/43/60 26/44/60 7/10/60
+f 25/43/61 15/22/61 26/44/61
+f 15/22/62 2/2/62 26/44/62
+f 23/40/63 24/41/63 11/17/63
+f 23/40/64 16/25/64 24/41/64
+f 16/25/65 6/8/65 24/41/65
+f 17/27/66 22/36/66 6/9/66
+f 17/27/67 20/32/67 22/36/67
+f 20/33/68 5/7/68 22/37/68
+f 20/33/69 21/34/69 5/7/69
+f 20/33/70 18/29/70 21/34/70
+f 18/29/71 4/5/71 21/34/71
+f 18/30/72 19/31/72 4/6/72
+f 18/30/73 13/19/73 19/31/73
+f 13/19/74 3/4/74 19/31/74
+f 16/26/75 17/27/75 6/9/75
+f 16/26/76 14/21/76 17/27/76
+f 14/21/77 1/1/77 17/27/77
+f 13/19/78 15/23/78 3/4/78
+f 13/20/79 14/21/79 15/24/79
+f 14/21/80 2/3/80 15/24/80
diff --git a/assets/gyroscope.png b/assets/gyroscope.png
new file mode 100644
index 0000000..c6da908
--- /dev/null
+++ b/assets/gyroscope.png
Binary files differ
diff --git a/src/assets.c b/src/assets.c
index fd11707..cc6a7b0 100644
--- a/src/assets.c
+++ b/src/assets.c
@@ -3,7 +3,8 @@
const char textureAssetPaths[TEXTURE_ASSET_COUNT][ASSET_PATH_MAX] = {
"/home/nathan/Documents/KillaFacsista/assets/icon.png",
"/home/nathan/Documents/KillaFacsista/assets/icon128.png",
- "/home/nathan/Documents/KillaFacsista/assets/icon64.png"
+ "/home/nathan/Documents/KillaFacsista/assets/icon64.png",
+ "/home/nathan/Documents/KillaFacsista/assets/gyroscope.png"
};
const char modelAssetPaths[MODEL_ASSET_COUNT][ASSET_PATH_MAX] = {
@@ -15,12 +16,25 @@ const char modelAssetPaths[MODEL_ASSET_COUNT][ASSET_PATH_MAX] = {
"/home/nathan/Documents/KillaFacsista/assets/generale.obj",
"/home/nathan/Documents/KillaFacsista/assets/mussolini.obj",
"/home/nathan/Documents/KillaFacsista/assets/guidedMissile.obj",
- "/home/nathan/Documents/KillaFacsista/assets/missile.obj"
+ "/home/nathan/Documents/KillaFacsista/assets/missile.obj",
+ "/home/nathan/Documents/KillaFacsista/assets/gyroscope.obj"
};
+// Some models have textures and other stuff to be set.
+void configModelAssets(Assets * assets) {
+ // Gyroscope
+ SetMaterialTexture(
+ &assets->models[GYROSCOPE_ASSET].materials[0],
+ MATERIAL_MAP_DIFFUSE,
+ assets->textures[GYROSCOPE_TEXTURE_ASSET]
+ );
+}
+
void LoadAssets(Assets * assets) {
int i;
+ // Textures first because models can use textures.
+
// Textures.
for (i = 0; i < TEXTURE_ASSET_COUNT; ++i)
assets->textures[i] = LoadTexture(textureAssetPaths[i]);
@@ -29,6 +43,8 @@ void LoadAssets(Assets * assets) {
for (i = 0; i < MODEL_ASSET_COUNT; ++i)
assets->models[i] = LoadModel(modelAssetPaths[i]);
+ configModelAssets(assets);
+
TraceLog(LOG_INFO, "Assets loaded");
}
diff --git a/src/assets.h b/src/assets.h
index ed842a6..beeb672 100644
--- a/src/assets.h
+++ b/src/assets.h
@@ -5,8 +5,8 @@
#define ASSET_PATH_MAX 255
-#define TEXTURE_ASSET_COUNT 3
-#define MODEL_ASSET_COUNT 9
+#define TEXTURE_ASSET_COUNT 4
+#define MODEL_ASSET_COUNT 10
// Paths to assets.
extern const char textureAssetPaths[TEXTURE_ASSET_COUNT][ASSET_PATH_MAX];
@@ -18,7 +18,8 @@ typedef int32_t AssetId;
enum {
ICON_ASSET,
ICON128_ASSET,
- ICON64_ASSET
+ ICON64_ASSET,
+ GYROSCOPE_TEXTURE_ASSET,
};
// Model asset ids.
@@ -31,7 +32,8 @@ enum {
GENERALE_ASSET,
MUSSOLINI_ASSET,
GUIDED_MISSILE_ASSET,
- MISSILE_ASSET
+ MISSILE_ASSET,
+ GYROSCOPE_ASSET
};
typedef struct Assets {
diff --git a/src/entities/antifaShip.c b/src/entities/antifaShip.c
index fb307fb..bd64545 100644
--- a/src/entities/antifaShip.c
+++ b/src/entities/antifaShip.c
@@ -29,6 +29,7 @@ void initAntifaShip(Entity * entity, Game * game) {
AntifaShip * data = (AntifaShip*)entity->data;
data->lastMouse = GetMousePosition();
data->forwardSpeed = 0.0;
+ data->shouldInitMousePosition = true;
}
void closeAntifaShip(Entity * entity) {
@@ -77,6 +78,12 @@ void controlAntifaShipJoystick(Game * game, Entity * entity) {
void controlAntifaShipKeyboardAndMouse(Game * game, Entity * entity) {
AntifaShip * data = (AntifaShip*)entity->data;
+ // Resets mouse on init.
+ if (data->shouldInitMousePosition) {
+ data->shouldInitMousePosition = false;
+ SetMousePosition(0, 0);
+ }
+
// Get mouse values.
Vector2 mouse = GetMousePosition();
float speed = GetMouseWheelMove();
diff --git a/src/entities/antifaShip.h b/src/entities/antifaShip.h
index 06ef094..e9c78bd 100644
--- a/src/entities/antifaShip.h
+++ b/src/entities/antifaShip.h
@@ -9,6 +9,7 @@
typedef struct AntifaShip {
Vector2 lastMouse;
float forwardSpeed;
+ bool shouldInitMousePosition;
} AntifaShip;
void initAntifaShip(Entity * entity, Game * game);
diff --git a/src/gameScreen.c b/src/gameScreen.c
index 7849af3..96e14ca 100644
--- a/src/gameScreen.c
+++ b/src/gameScreen.c
@@ -2,7 +2,7 @@
#include "game.h"
#include "world.h"
#include "bullets.h"
-#include <raylib.h>
+#include "assets.h"
void initGameScreenGui(GameScreen * gameScreen) {
float width = GetScreenWidth();
@@ -14,7 +14,6 @@ void initGameScreenGui(GameScreen * gameScreen) {
gameScreen->gyroscopePosition = (Vector2){
(width / 2.0) - (GYROSCOPE_TEXTURE_SIZE / 2.0),
height / 1.8
-
};
}
@@ -25,7 +24,7 @@ void initGameScreen(GameScreen * gameScreen) {
gameScreen->gyroscopeCamaera = (Camera3D){
.fovy = 45,
.projection = CAMERA_PERSPECTIVE,
- .position = (Vector3){0.0, 0.0, -3.0},
+ .position = (Vector3){0.0, 0.0, 3.0},
.target = Vector3Zero(),
.up = (Vector3){0.0, 1.0, 0.0}
};
@@ -34,15 +33,10 @@ void initGameScreen(GameScreen * gameScreen) {
GYROSCOPE_TEXTURE_SIZE,
GYROSCOPE_TEXTURE_SIZE
);
-
- // Load model.
- Mesh mesh = GenMeshSphere(1.0, 8, 8);
- gameScreen->gyroscopeModel = LoadModelFromMesh(mesh);
}
void freeGameScreen(GameScreen * gameScreen) {
UnloadRenderTexture(gameScreen->gyroscopeTexture);
- UnloadModel(gameScreen->gyroscopeModel);
}
void drawCrossHair(float size, float thick, Color color) {
@@ -70,14 +64,18 @@ void drawGyroscope(Game * game) {
Entity * player = getEntityFromWorld(game->world, 0);
Vector2 gyroscopePosition = gameScreen->gyroscopePosition;
+ // Get texture and model.
+ Texture2D texture = game->assets.textures[GYROSCOPE_TEXTURE_ASSET];
+ Model model = game->assets.models[GYROSCOPE_ASSET];
+
// Draw this mother fucker.
BeginTextureMode(gameScreen->gyroscopeTexture);
ClearBackground(BLACK);
BeginMode3D(gameScreen->gyroscopeCamaera);
// Set transform and draw.
- gameScreen->gyroscopeModel.transform = QuaternionToMatrix(QuaternionInvert(player->rotation));
- DrawModelWires(gameScreen->gyroscopeModel, Vector3Zero(), 1, BLUE);
+ model.transform = QuaternionToMatrix(player->rotation);
+ DrawModel(model, Vector3Zero(), 1, WHITE);
EndMode3D();
EndTextureMode();
diff --git a/src/gameScreen.h b/src/gameScreen.h
index c0169c6..20872b3 100644
--- a/src/gameScreen.h
+++ b/src/gameScreen.h
@@ -13,7 +13,6 @@ typedef struct GameScreen {
Vector2 gyroscopePosition;
Camera3D gyroscopeCamaera;
RenderTexture gyroscopeTexture;
- Model gyroscopeModel;
} GameScreen;
void initGameScreen(GameScreen * gameScreen);