From 433f61f3c8a7cd06aaeaaac5d38cec5444f82b3f Mon Sep 17 00:00:00 2001 From: nathan Date: Sat, 20 Sep 2025 03:25:53 -0600 Subject: Samantha's spot --- assets/models/Samantha.obj | 268 ++++++++++++++++++++-------------------- blender/Samantha/Samantha.blend | Bin 532024 -> 532024 bytes src/entity.c | 2 +- src/entity.h | 6 +- src/player.c | 2 +- src/player.h | 1 + src/world.c | 35 +++++- src/world.h | 6 + 8 files changed, 177 insertions(+), 143 deletions(-) diff --git a/assets/models/Samantha.obj b/assets/models/Samantha.obj index d426447..0c4f655 100644 --- a/assets/models/Samantha.obj +++ b/assets/models/Samantha.obj @@ -2,140 +2,140 @@ # www.blender.org mtllib Samantha.mtl o Samantha -v -2.863373 -14.157234 -0.355840 -v -2.349221 -5.359383 -0.355841 -v -2.081541 -14.157234 0.020670 -v -1.567390 -5.359383 0.020669 -v -1.888445 -14.157234 0.866681 -v -1.374293 -5.359383 0.866680 -v -2.429489 -14.157234 1.545129 -v -1.915337 -5.359383 1.545128 -v -3.297256 -14.157234 1.545129 -v -2.783105 -5.359383 1.545128 -v -3.838300 -14.157234 0.866681 -v -3.324149 -5.359383 0.866680 -v -3.645204 -14.157234 0.020670 -v -3.131053 -5.359383 0.020669 -v 2.922748 -14.157233 -0.355840 -v 2.408597 -5.359383 -0.355841 -v 2.140916 -14.157233 0.020670 -v 1.626765 -5.359383 0.020669 -v 1.947820 -14.157233 0.866681 -v 1.433669 -5.359383 0.866680 -v 2.488864 -14.157233 1.545129 -v 1.974713 -5.359383 1.545128 -v 3.356632 -14.157233 1.545129 -v 2.842480 -5.359383 1.545128 -v 3.897676 -14.157233 0.866681 -v 3.383524 -5.359383 0.866680 -v 3.704579 -14.157233 0.020670 -v 3.190428 -5.359383 0.020669 -v -11.791010 1.172762 -0.300737 -v -5.552674 2.323848 -0.300737 -v -11.791010 0.434014 0.055025 -v -5.552674 1.585099 0.055025 -v -11.791010 0.251558 0.854417 -v -5.552674 1.402643 0.854417 -v -11.791010 0.762788 1.495479 -v -5.552674 1.913873 1.495479 -v -11.791010 1.582737 1.495479 -v -5.552674 2.733823 1.495479 -v -11.791010 2.093967 0.854417 -v -5.552674 3.245053 0.854417 -v -11.791010 1.911512 0.055025 -v -5.552674 3.062597 0.055025 -v 11.850384 1.172763 -0.300737 -v 5.612050 2.323848 -0.300737 -v 11.850384 0.434014 0.055026 -v 5.612050 1.585099 0.055025 -v 11.850384 0.251558 0.854417 -v 5.612050 1.402643 0.854417 -v 11.850384 0.762788 1.495479 -v 5.612050 1.913873 1.495479 -v 11.850384 1.582737 1.495479 -v 5.612050 2.733822 1.495479 -v 11.850384 2.093967 0.854417 -v 5.612050 3.245053 0.854417 -v 11.850384 1.911511 0.055026 -v 5.612050 3.062597 0.055025 -v 0.029688 -7.104691 0.644158 -v 4.752262 -2.942080 4.075269 -v -1.774140 -2.942083 6.195863 -v -5.807724 -2.942051 0.644158 -v -1.774140 -2.942083 -4.907547 -v 4.752262 -2.942080 -2.786952 -v 1.833516 3.793329 6.195863 -v -4.692886 3.793327 4.075269 -v -4.692886 3.793327 -2.786952 -v 1.833516 3.793329 -4.907547 -v 5.867101 3.793297 0.644158 -v 0.029688 7.955938 0.644158 -v -1.030567 -5.980072 3.907343 -v 2.805528 -5.980070 2.660900 -v 1.745284 -3.533347 5.924118 -v 5.581384 -3.533334 0.644158 -v 2.805528 -5.980070 -1.372584 -v -3.401452 -5.980051 0.644158 -v -4.461734 -3.533336 3.907354 -v -1.030567 -5.980072 -2.619027 -v -4.461734 -3.533336 -2.619038 -v 1.745284 -3.533347 -4.635801 -v 6.236703 0.425623 2.660908 -v 6.236703 0.425623 -1.372592 -v 0.029688 0.425623 7.170590 -v 3.865831 0.425623 5.924151 -v -6.177327 0.425623 2.660908 -v -3.806455 0.425623 5.924151 -v -3.806455 0.425623 -4.635835 -v -6.177327 0.425623 -1.372592 -v 3.865831 0.425623 -4.635835 -v 0.029688 0.425623 -5.882274 -v 4.521110 4.384582 3.907354 -v -1.685908 4.384593 5.924118 -v -5.522008 4.384580 0.644158 -v -1.685908 4.384593 -4.635801 -v 4.521110 4.384582 -2.619038 -v 1.089943 6.831318 3.907343 -v 3.460828 6.831298 0.644158 -v -2.746152 6.831317 2.660900 -v -2.746152 6.831317 -1.372584 -v 1.089943 6.831318 -2.619027 -v -2.670608 0.903497 -2.952394 -v -0.833544 2.306899 -1.617704 -v -3.372290 2.306899 -0.792803 -v -4.941360 2.306899 -2.952394 -v -3.372290 2.306899 -5.111984 -v -0.833544 2.306899 -4.287083 -v -1.968926 4.577663 -0.792803 -v -4.507671 4.577663 -1.617704 -v -4.507671 4.577663 -4.287083 -v -1.968926 4.577663 -5.111984 -v -0.399857 4.577663 -2.952394 -v -2.670608 5.981065 -2.952394 -v 2.729983 0.903497 -2.952394 -v 0.892920 2.306898 -1.617704 -v 3.431665 2.306898 -0.792803 -v 5.000735 2.306898 -2.952394 -v 3.431665 2.306898 -5.111984 -v 0.892920 2.306898 -4.287083 -v 2.028302 4.577663 -0.792803 -v 4.567047 4.577663 -1.617704 -v 4.567047 4.577663 -4.287083 -v 2.028302 4.577663 -5.111984 -v 0.459232 4.577663 -2.952394 -v 2.729983 5.981064 -2.952394 -v -0.301825 6.250576 0.644159 -v 2.639737 8.497746 2.781303 -v -1.425379 8.497746 4.102160 -v -3.937821 8.497746 0.644159 -v -1.425379 8.497746 -2.813843 -v 2.639737 8.497746 -1.492986 -v 0.821729 12.133762 4.102160 -v -3.243387 12.133762 2.781303 -v -3.243387 12.133762 -1.492986 -v 0.821729 12.133762 -2.813843 -v 3.334171 12.133762 0.644159 -v -0.301825 14.380932 0.644159 +v -0.429506 -2.123588 -0.053376 +v -0.352383 -0.803908 -0.053376 +v -0.312231 -2.123588 0.003101 +v -0.235109 -0.803908 0.003100 +v -0.283267 -2.123588 0.130002 +v -0.206144 -0.803908 0.130002 +v -0.364423 -2.123588 0.231769 +v -0.287301 -0.803908 0.231769 +v -0.494589 -2.123588 0.231769 +v -0.417466 -0.803908 0.231769 +v -0.575745 -2.123588 0.130002 +v -0.498623 -0.803908 0.130002 +v -0.546781 -2.123588 0.003101 +v -0.469658 -0.803908 0.003100 +v 0.438412 -2.123587 -0.053376 +v 0.361290 -0.803908 -0.053376 +v 0.321138 -2.123587 0.003101 +v 0.244015 -0.803908 0.003100 +v 0.292173 -2.123587 0.130002 +v 0.215050 -0.803908 0.130002 +v 0.373330 -2.123587 0.231769 +v 0.296207 -0.803908 0.231769 +v 0.503495 -2.123587 0.231769 +v 0.426372 -0.803908 0.231769 +v 0.584651 -2.123587 0.130002 +v 0.507529 -0.803908 0.130002 +v 0.555687 -2.123587 0.003101 +v 0.478564 -0.803908 0.003100 +v -1.768652 0.175915 -0.045111 +v -0.832901 0.348578 -0.045111 +v -1.768652 0.065102 0.008254 +v -0.832901 0.237765 0.008254 +v -1.768652 0.037734 0.128163 +v -0.832901 0.210397 0.128163 +v -1.768652 0.114418 0.224322 +v -0.832901 0.287081 0.224322 +v -1.768652 0.237411 0.224322 +v -0.832901 0.410074 0.224322 +v -1.768652 0.314095 0.128163 +v -0.832901 0.486758 0.128163 +v -1.768652 0.286727 0.008254 +v -0.832901 0.459390 0.008254 +v 1.777558 0.175915 -0.045111 +v 0.841808 0.348578 -0.045111 +v 1.777558 0.065102 0.008254 +v 0.841808 0.237765 0.008254 +v 1.777558 0.037734 0.128163 +v 0.841808 0.210397 0.128163 +v 1.777558 0.114418 0.224322 +v 0.841808 0.287081 0.224322 +v 1.777558 0.237411 0.224322 +v 0.841808 0.410074 0.224322 +v 1.777558 0.314095 0.128163 +v 0.841808 0.486758 0.128163 +v 1.777558 0.286727 0.008254 +v 0.841808 0.459390 0.008254 +v 0.004453 -1.065705 0.096624 +v 0.712840 -0.441313 0.611290 +v -0.266121 -0.441313 0.929380 +v -0.871159 -0.441308 0.096624 +v -0.266121 -0.441313 -0.736132 +v 0.712840 -0.441313 -0.418043 +v 0.275027 0.569000 0.929380 +v -0.703933 0.569000 0.611290 +v -0.703933 0.569000 -0.418043 +v 0.275027 0.569000 -0.736132 +v 0.880065 0.568995 0.096624 +v 0.004453 1.193392 0.096624 +v -0.154585 -0.897012 0.586102 +v 0.420829 -0.897012 0.399135 +v 0.261793 -0.530003 0.888618 +v 0.837208 -0.530001 0.096624 +v 0.420829 -0.897012 -0.205888 +v -0.510218 -0.897009 0.096624 +v -0.669260 -0.530001 0.586103 +v -0.154585 -0.897012 -0.392854 +v -0.669260 -0.530001 -0.392856 +v 0.261793 -0.530003 -0.695370 +v 0.935506 0.063844 0.399136 +v 0.935506 0.063844 -0.205889 +v 0.004453 0.063844 1.075589 +v 0.579875 0.063844 0.888623 +v -0.926599 0.063844 0.399136 +v -0.570968 0.063844 0.888623 +v -0.570968 0.063844 -0.695375 +v -0.926599 0.063844 -0.205889 +v 0.579875 0.063844 -0.695375 +v 0.004453 0.063844 -0.882341 +v 0.678167 0.657688 0.586103 +v -0.252886 0.657690 0.888618 +v -0.828301 0.657688 0.096624 +v -0.252886 0.657690 -0.695370 +v 0.678167 0.657688 -0.392856 +v 0.163492 1.024699 0.586102 +v 0.519124 1.024696 0.096624 +v -0.411923 1.024699 0.399135 +v -0.411923 1.024699 -0.205888 +v 0.163492 1.024699 -0.392854 +v -0.400591 0.135525 -0.442859 +v -0.125032 0.346035 -0.242656 +v -0.505844 0.346035 -0.118920 +v -0.741204 0.346035 -0.442859 +v -0.505844 0.346035 -0.766798 +v -0.125032 0.346035 -0.643063 +v -0.295339 0.686650 -0.118920 +v -0.676151 0.686650 -0.242656 +v -0.676151 0.686650 -0.643063 +v -0.295339 0.686650 -0.766798 +v -0.059978 0.686650 -0.442859 +v -0.400591 0.897161 -0.442859 +v 0.409498 0.135525 -0.442859 +v 0.133938 0.346035 -0.242656 +v 0.514750 0.346035 -0.118920 +v 0.750111 0.346035 -0.442859 +v 0.514750 0.346035 -0.766798 +v 0.133938 0.346035 -0.643063 +v 0.304245 0.686650 -0.118920 +v 0.685057 0.686650 -0.242656 +v 0.685057 0.686650 -0.643063 +v 0.304245 0.686650 -0.766798 +v 0.068885 0.686650 -0.442859 +v 0.409498 0.897161 -0.442859 +v -0.045274 0.937587 0.096624 +v 0.395961 1.274663 0.417196 +v -0.213807 1.274663 0.615324 +v -0.590673 1.274663 0.096624 +v -0.213807 1.274663 -0.422077 +v 0.395961 1.274663 -0.223948 +v 0.123259 1.820066 0.615324 +v -0.486508 1.820066 0.417196 +v -0.486508 1.820066 -0.223948 +v 0.123259 1.820066 -0.422077 +v 0.500126 1.820066 0.096624 +v -0.045274 2.157142 0.096624 vn -0.0126 -0.6209 -0.7838 vn 0.0126 0.6209 -0.7838 vn 0.5970 -0.6382 -0.4862 diff --git a/blender/Samantha/Samantha.blend b/blender/Samantha/Samantha.blend index 1513358..693a1d6 100644 Binary files a/blender/Samantha/Samantha.blend and b/blender/Samantha/Samantha.blend differ diff --git a/src/entity.c b/src/entity.c index b7548be..18e44aa 100644 --- a/src/entity.c +++ b/src/entity.c @@ -66,7 +66,7 @@ Entity createEntity(EntityId id, Vector3 position) void updateEntity(Entity* entity, Game* game) { - DrawBoundingBox(entity->box, RED); + //DrawBoundingBox(entity->box, RED); switch (entity->id) { diff --git a/src/entity.h b/src/entity.h index aaf0e82..7779bca 100644 --- a/src/entity.h +++ b/src/entity.h @@ -17,9 +17,9 @@ #define UTILITY_POLE_HEIGHT 100.0 #define UTILITY_POLE_RADIUS 3.0 -#define SAMANTHA_WIDTH 23.6414/2.0 -#define SAMANTHA_HEIGHT 28.5382/2.0 -#define SAMANTHA_THICKNESS 13.0529/2.0 +#define SAMANTHA_WIDTH 3.54621/2.0 +#define SAMANTHA_HEIGHT 4.28073/2.0 +#define SAMANTHA_THICKNESS 1.95793/2.0 #define SAMANTHA_STATIC_SPEED 24 #define SAMANTHA_STATIC_FRAMES 4 diff --git a/src/player.c b/src/player.c index 64bdce6..417c7e1 100644 --- a/src/player.c +++ b/src/player.c @@ -71,7 +71,7 @@ void updatePlayer(Player* player, Game* game) player->velocity.x += -sinf(cameraAngle->x + (PI / 2.0)); } - player->velocity = Vector3Scale(player->velocity, 60.0); + player->velocity = Vector3Scale(player->velocity, PLAYER_SPEED); // Apply velocity. player->position = Vector3Add( diff --git a/src/player.h b/src/player.h index 0bd664e..9bc049f 100644 --- a/src/player.h +++ b/src/player.h @@ -4,6 +4,7 @@ #define PLAYER_H #define PLAYER_HEIGHT 2.0 +#define PLAYER_SPEED 10.0 typedef struct { Vector3 position; diff --git a/src/world.c b/src/world.c index 82ee6da..c7c34d5 100644 --- a/src/world.c +++ b/src/world.c @@ -485,10 +485,16 @@ Seed generatePond(World* world, Color* heightmap, WorldUID id, Seed seed) return seed; } -// TODO: get this mother fucker done in a sane amount of time -Seed generateWorldSamanthasPlace(World* world, Seed seed, int spotIndex) +void generateWorldSamanthasPlace(World* world, Color* heightmap) { - return seed; + Rectangle area = (Rectangle){ + .x = WORLD_IMAGE_WIDTH / 2.0 - PLACE_SAMANTHAS_SPOT_SIZE / 2.0, + .y = WORLD_IMAGE_HEIGHT / 2.0 - PLACE_SAMANTHAS_SPOT_SIZE / 2.0, + .width = PLACE_SAMANTHAS_SPOT_SIZE, + .height = PLACE_SAMANTHAS_SPOT_SIZE + }; + + averageOutAreaWorld(world, heightmap, area); } Seed generateWorldPlants(World* world, Seed seed, int start, int end) @@ -653,6 +659,18 @@ Texture generateGroundTexture() return texture; } +Seed generateWorldCharacters(World* world, Seed seed, int index) +{ + // Create samantha. + Entity samantha = createEntity( + SAMANTHA, + Vector3Add(Vector3Scale(world->size, 0.5), SAMANTHA_OFFSET)); + placeEntityOnGround(&samantha, world); + world->entities[index] = samantha; + + return seed; +} + World createWorld(Seed seed, const Assets* assets) { World world; @@ -668,9 +686,13 @@ World createWorld(Seed seed, const Assets* assets) // Places. WorldUID placeId = 0; + + // Pond. seed = generatePond(&world, colors, placeId, seed); world.places[0] = placeId; + generateWorldSamanthasPlace(&world, colors); + // Heightmap model. image = (Image){ .data = colors, @@ -705,9 +727,14 @@ World createWorld(Seed seed, const Assets* assets) end = WORLD_UTILITY_POLE_COUNT + start; seed = generateWorldUtilityPoles(&world, assets, seed, start, end); + // Characters. + start = end; + end = WORLD_CHARACTER_COUNT + start; + seed = generateWorldCharacters(&world, seed, start); + // Items. start = end; - end = WORLD_ENTITY_MAX - 1; + end = WORLD_ENTITY_MAX; seed = generateWorldItems(&world, seed, start, end); // Generate BVH. diff --git a/src/world.h b/src/world.h index 9e5c4c4..338f935 100644 --- a/src/world.h +++ b/src/world.h @@ -31,6 +31,12 @@ #define PLACE_POND_OUTER_AREA 25 #define PLACE_POND_WALKING_AREA 7 +// Characters. +#define WORLD_CHARACTER_COUNT 1 + +#define PLACE_SAMANTHAS_SPOT_SIZE 10 +#define SAMANTHA_OFFSET (Vector3){0.0, 0.0, 2.0} + // UID for anything in the world. typedef int16_t WorldUID; typedef int Seed; -- cgit v1.2.3