From 94ca30b13bffe1f02313b7fd32b2320e5c490fa5 Mon Sep 17 00:00:00 2001 From: nathan Date: Wed, 6 Aug 2025 06:43:37 -0600 Subject: UGGGGG --- assets/bush.png | Bin 12123 -> 0 bytes assets/flower.png | Bin 2561 -> 0 bytes assets/images/bush.png | Bin 0 -> 12123 bytes assets/images/flower.png | Bin 0 -> 2561 bytes assets/images/mint.png | Bin 0 -> 2581 bytes assets/images/nickel.png | Bin 0 -> 2372 bytes assets/images/skybox.png | Bin 0 -> 11307 bytes assets/images/tree.png | Bin 0 -> 55810 bytes assets/mint.png | Bin 2581 -> 0 bytes assets/models/UtilityPole.mtl | 2 ++ assets/models/UtilityPole.obj | 71 ++++++++++++++++++++++++++++++++++++++++++ assets/nickel.png | Bin 2372 -> 0 bytes assets/skybox.png | Bin 11307 -> 0 bytes assets/tree.png | Bin 55810 -> 0 bytes src/assets.c | 20 ++++++++++-- src/assets.h | 8 +++++ src/entity.c | 8 ++--- src/world.c | 8 +++++ src/world.h | 6 +++- 19 files changed, 116 insertions(+), 7 deletions(-) delete mode 100644 assets/bush.png delete mode 100644 assets/flower.png create mode 100644 assets/images/bush.png create mode 100644 assets/images/flower.png create mode 100644 assets/images/mint.png create mode 100644 assets/images/nickel.png create mode 100644 assets/images/skybox.png create mode 100644 assets/images/tree.png delete mode 100644 assets/mint.png create mode 100644 assets/models/UtilityPole.mtl create mode 100644 assets/models/UtilityPole.obj delete mode 100644 assets/nickel.png delete mode 100644 assets/skybox.png delete mode 100644 assets/tree.png diff --git a/assets/bush.png b/assets/bush.png deleted file mode 100644 index 2d46b4c..0000000 Binary files a/assets/bush.png and /dev/null differ diff --git a/assets/flower.png b/assets/flower.png deleted file mode 100644 index 09685a6..0000000 Binary files a/assets/flower.png and /dev/null differ diff --git a/assets/images/bush.png b/assets/images/bush.png new file mode 100644 index 0000000..2d46b4c Binary files /dev/null and b/assets/images/bush.png differ diff --git a/assets/images/flower.png b/assets/images/flower.png new file mode 100644 index 0000000..09685a6 Binary files /dev/null and b/assets/images/flower.png differ diff --git a/assets/images/mint.png b/assets/images/mint.png new file mode 100644 index 0000000..013c13f Binary files /dev/null and b/assets/images/mint.png differ diff --git a/assets/images/nickel.png b/assets/images/nickel.png new file mode 100644 index 0000000..bdb5dc8 Binary files /dev/null and b/assets/images/nickel.png differ diff --git a/assets/images/skybox.png b/assets/images/skybox.png new file mode 100644 index 0000000..6bc64c2 Binary files /dev/null and b/assets/images/skybox.png differ diff --git a/assets/images/tree.png b/assets/images/tree.png new file mode 100644 index 0000000..30d3fa9 Binary files /dev/null and b/assets/images/tree.png differ diff --git a/assets/mint.png b/assets/mint.png deleted file mode 100644 index 013c13f..0000000 Binary files a/assets/mint.png and /dev/null differ diff --git a/assets/models/UtilityPole.mtl b/assets/models/UtilityPole.mtl new file mode 100644 index 0000000..7ec6792 --- /dev/null +++ b/assets/models/UtilityPole.mtl @@ -0,0 +1,2 @@ +# Blender 4.4.3 MTL File: 'None' +# www.blender.org diff --git a/assets/models/UtilityPole.obj b/assets/models/UtilityPole.obj new file mode 100644 index 0000000..83cf6ae --- /dev/null +++ b/assets/models/UtilityPole.obj @@ -0,0 +1,71 @@ +# Blender 4.4.3 +# www.blender.org +mtllib UtilityPole.mtl +o UtilityPole +v 0.000000 -20.000000 -1.000000 +v 0.000000 20.000000 -1.000000 +v 0.866025 -20.000000 -0.500000 +v 0.866025 20.000000 -0.500000 +v 0.866025 -20.000000 0.500000 +v 0.866025 20.000000 0.500000 +v 0.000000 -20.000000 1.000000 +v 0.000000 20.000000 1.000000 +v -0.866025 -20.000000 0.500000 +v -0.866025 20.000000 0.500000 +v -0.866025 -20.000000 -0.500000 +v -0.866025 20.000000 -0.500000 +vn 0.5000 -0.0000 -0.8660 +vn 1.0000 -0.0000 -0.0000 +vn 0.5000 -0.0000 0.8660 +vn -0.5000 -0.0000 0.8660 +vn -0.0000 1.0000 -0.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.5000 -0.0000 -0.8660 +vn -0.0000 -1.0000 -0.0000 +vt 1.000000 1.000000 +vt 0.833333 0.500000 +vt 1.000000 0.500000 +vt 0.833333 1.000000 +vt 0.666667 0.500000 +vt 0.666667 1.000000 +vt 0.500000 0.500000 +vt 0.500000 1.000000 +vt 0.333333 0.500000 +vt 0.250000 0.490000 +vt 0.042154 0.130000 +vt 0.457846 0.130000 +vt 0.333333 1.000000 +vt 0.166667 0.500000 +vt 0.166667 1.000000 +vt -0.000000 0.500000 +vt 0.957846 0.370000 +vt 0.750000 0.010000 +vt 0.542154 0.370000 +vt 0.457846 0.370000 +vt 0.042154 0.370000 +vt 0.250000 0.010000 +vt -0.000000 1.000000 +vt 0.750000 0.490000 +vt 0.957846 0.130000 +vt 0.542154 0.130000 +s 0 +f 2/1/1 3/2/1 1/3/1 +f 4/4/2 5/5/2 3/2/2 +f 6/6/3 7/7/3 5/5/3 +f 8/8/4 9/9/4 7/7/4 +f 2/10/5 10/11/5 6/12/5 +f 10/13/6 11/14/6 9/9/6 +f 12/15/7 1/16/7 11/14/7 +f 3/17/8 7/18/8 11/19/8 +f 2/1/1 4/4/1 3/2/1 +f 4/4/2 6/6/2 5/5/2 +f 6/6/3 8/8/3 7/7/3 +f 8/8/4 10/13/4 9/9/4 +f 6/12/5 4/20/5 2/10/5 +f 2/10/5 12/21/5 10/11/5 +f 10/11/5 8/22/5 6/12/5 +f 10/13/6 12/15/6 11/14/6 +f 12/15/7 2/23/7 1/16/7 +f 11/19/8 1/24/8 3/17/8 +f 3/17/8 5/25/8 7/18/8 +f 7/18/8 9/26/8 11/19/8 diff --git a/assets/nickel.png b/assets/nickel.png deleted file mode 100644 index bdb5dc8..0000000 Binary files a/assets/nickel.png and /dev/null differ diff --git a/assets/skybox.png b/assets/skybox.png deleted file mode 100644 index 6bc64c2..0000000 Binary files a/assets/skybox.png and /dev/null differ diff --git a/assets/tree.png b/assets/tree.png deleted file mode 100644 index 30d3fa9..0000000 Binary files a/assets/tree.png and /dev/null differ diff --git a/src/assets.c b/src/assets.c index 2ceff83..09388b8 100644 --- a/src/assets.c +++ b/src/assets.c @@ -16,20 +16,24 @@ const char shaderAssetNames[SHADER_ASSET_COUNT][FT_NAMEMAX] = { "skybox" }; +const char modelAssetPaths[MODEL_ASSET_COUNT][FT_NAMEMAX] = { + "UtilityPole.obj" +}; + void initAssets(Assets* assets) { // Textures. for (int index = 0; index < TEXTURE_ASSET_COUNT; ++index) { assets->textures[index] = LoadTexture( - TextFormat("assets/%s", textureAssetPaths[index])); + TextFormat("assets/images/%s", textureAssetPaths[index])); } // Images; for (int index = 0; index < IMAGE_ASSET_COUNT; ++index) { assets->images[index] = LoadImage( - TextFormat("assets/%s", imageAssetPaths[index])); + TextFormat("assets/images/%s", imageAssetPaths[index])); } // Shaders. @@ -41,6 +45,13 @@ void initAssets(Assets* assets) TextFormat("assets/shaders/glsl%i/%s.fs", GLSL_VERSION, shaderAssetNames[index])); } + + // Models. + for (int index = 0; index < MODEL_ASSET_COUNT; ++index) + { + assets->models[index] = LoadModel( + TextFormat("assets/models/%s", modelAssetPaths[index])); + } } void closeAssets(Assets* assets) @@ -59,4 +70,9 @@ void closeAssets(Assets* assets) { UnloadShader(assets->shaders[index]); } + + for (int index = 0; index < MODEL_ASSET_COUNT; ++index) + { + UnloadModel(assets->models[index]); + } } diff --git a/src/assets.h b/src/assets.h index 743926c..2457115 100644 --- a/src/assets.h +++ b/src/assets.h @@ -6,10 +6,12 @@ #define TEXTURE_ASSET_COUNT 5 #define IMAGE_ASSET_COUNT 1 #define SHADER_ASSET_COUNT 1 +#define MODEL_ASSET_COUNT 1 extern const char textureAssetPaths[TEXTURE_ASSET_COUNT][FT_NAMEMAX]; extern const char imageAssetPaths[IMAGE_ASSET_COUNT][FT_NAMEMAX]; extern const char shaderAssetNames[SHADER_ASSET_COUNT][FT_NAMEMAX]; +extern const char modelAssetPaths[MODEL_ASSET_COUNT][FT_NAMEMAX]; typedef int8_t AssetId; @@ -32,10 +34,16 @@ enum { SKYBOX_SHADER }; +// Model asset ids. +enum { + UTILITY_POLE_MODEL +}; + typedef struct { Texture textures[TEXTURE_ASSET_COUNT]; Image images[IMAGE_ASSET_COUNT]; Shader shaders[SHADER_ASSET_COUNT]; + Model models[MODEL_ASSET_COUNT]; } Assets; void initAssets(Assets* assets); diff --git a/src/entity.c b/src/entity.c index f9f7989..c63acf4 100644 --- a/src/entity.c +++ b/src/entity.c @@ -91,10 +91,10 @@ void updateEntity(Entity* entity, Game* game) (Vector2){POND_SIZE * 2.5, POND_SIZE * 2.5}, BLUE); break; case UTILITY_POLE: - DrawCylinder(Vector3Subtract(entity->position, - (Vector3){0.0, UTILITY_POLE_HEIGHT}), - UTILITY_POLE_RADIUS, UTILITY_POLE_RADIUS, - UTILITY_POLE_HEIGHT * 2.0, 6, BROWN); + /* DrawCylinder(Vector3Subtract(entity->position, */ + /* (Vector3){0.0, UTILITY_POLE_HEIGHT}), */ + /* UTILITY_POLE_RADIUS, UTILITY_POLE_RADIUS, */ + /* UTILITY_POLE_HEIGHT * 2.0, 6, BROWN); */ break; default: break; diff --git a/src/world.c b/src/world.c index 1d0aa10..828aaa3 100644 --- a/src/world.c +++ b/src/world.c @@ -482,6 +482,9 @@ Seed generateWorldUtilityPoles(World* world, Seed seed, int start, int end) Entity entity = createEntity(UTILITY_POLE, Vector3Zero()); seed = putEntityInRandomPlace(world, seed, &entity); world->entities[index] = entity; + + world->utilityPoleTransforms[index - start] = MatrixTranslate( + entity.position.x, entity.position.y, entity.position.z); } return seed; @@ -614,6 +617,11 @@ void updateWorld(World* world, Game* game) updateEntity(&world->entities[index], game); } + DrawMeshInstanced(game->assets.models[UTILITY_POLE_MODEL].meshes[0], + game->assets.models[UTILITY_POLE_MODEL].materials[0], + world->utilityPoleTransforms, + WORLD_UTILITY_POLE_COUNT); + // Draw BVH leafs. #ifdef FT_DEBUG_MODE if (IsKeyPressed(KEY_RIGHT)) diff --git a/src/world.h b/src/world.h index 1d7dd72..fc84ca3 100644 --- a/src/world.h +++ b/src/world.h @@ -52,9 +52,13 @@ struct World { Vector3 size; Texture heightmapTexture; Model heightmap; + Entity entities[WORLD_ENTITY_MAX]; - BVHNode bvh; WorldUID places[WORLD_PLACE_COUNT]; + BVHNode bvh; + + // Transforms for mesh instancing. + Matrix utilityPoleTransforms[WORLD_UTILITY_POLE_COUNT]; int bvhDebugSelect; }; -- cgit v1.2.3