From 65c2ac8212e3649d0ac034345cdbb79bb8e5c2ba Mon Sep 17 00:00:00 2001 From: NishiOwO Date: Sat, 20 Dec 2025 11:06:31 +0900 Subject: [PATCH] things --- client/gl.c | 30 ++++++++++++++++++++++++++++++ client/net.c | 9 +++++++++ external/libfishsoup | 2 +- include/af_client.h | 1 + include/af_common.h | 14 +++++++++----- server/main.c | 6 ++++++ 6 files changed, 56 insertions(+), 6 deletions(-) diff --git a/client/gl.c b/client/gl.c index fa5e225..6dadf51 100644 --- a/client/gl.c +++ b/client/gl.c @@ -125,6 +125,11 @@ static void cross(double* out, double v00, double v01, double v02, double v10, d out[2] = v00 * v11 - v01 * v10; } +/* + * v0-v2 + * | / + * v1/ + */ void gl_calc_normal3(double* out, double v00, double v01, double v02, double v10, double v11, double v12, double v20, double v21, double v22) { double v[3]; double l = 0; @@ -141,3 +146,28 @@ void gl_calc_normal3(double* out, double v00, double v01, double v02, double v10 out[i] = v[i] / l; } } + +/* + * v0-v3 + * | | + * v1-v2 + */ +void gl_calc_normal4(double* out, double v00, double v01, double v02, double v10, double v11, double v12, double v20, double v21, double v22, double v30, double v31, double v32) { + double v0[3]; + double v1[3]; + int i; + double l = 0; + + gl_calc_normal3(&v0[0], v00, v01, v02, v10, v11, v12, v30, v31, v32); + gl_calc_normal3(&v1[0], v10, v11, v12, v20, v21, v22, v30, v31, v32); + + for(i = 0; i < 3; i++) { + out[i] = v0[i] + v1[i]; + } + + l = sqrt(out[0] * out[0] + out[1] * out[1] + out[2] * out[2]); + + for(i = 0; i < 3; i++) { + out[i] = out[i] / l; + } +} diff --git a/client/net.c b/client/net.c index 410fcd3..4335e43 100644 --- a/client/net.c +++ b/client/net.c @@ -10,6 +10,9 @@ static void on_packet(fishsoup_client_t* client, fishsoup_packet_t* pkt) { } void net_connect(const char* username, const char* hostname, int port) { + fishsoup_packet_t pkt; + af_packet_join_t join; + scene_change(AF_SCENE_CONNECTING); client = fishsoup_client(hostname, port == 0 ? AF_DEFAULT_PORT : port); if(client == NULL) { @@ -17,7 +20,13 @@ void net_connect(const char* username, const char* hostname, int port) { return; } + pkt.header.type = AF_PACKET_JOIN; + pkt.header.length = sizeof(join); + pkt.data = &join; + fishsoup_client_on_packet(client, on_packet); + + fishsoup_packet_send(client->fd, &pkt); } void net_poll(void) { diff --git a/external/libfishsoup b/external/libfishsoup index 19a044c..6b9eb5d 160000 --- a/external/libfishsoup +++ b/external/libfishsoup @@ -1 +1 @@ -Subproject commit 19a044c00adf6a839c30337be51c53399adc1f75 +Subproject commit 6b9eb5de20afd9899aec561d43791f9c7aaac534 diff --git a/include/af_client.h b/include/af_client.h index 9fc8e72..e95c306 100644 --- a/include/af_client.h +++ b/include/af_client.h @@ -39,6 +39,7 @@ void gl_render(void); void gl_resize(int width, int height); void gl_scene_change(void); void gl_calc_normal3(double* out, double v00, double v01, double v02, double v10, double v11, double v12, double v20, double v21, double v22); +void gl_calc_normal4(double* out, double v00, double v01, double v02, double v10, double v11, double v12, double v20, double v21, double v22, double v30, double v31, double v32); /* gl_font.c */ void gl_font_init(void); diff --git a/include/af_common.h b/include/af_common.h index 65ada07..37cd55f 100644 --- a/include/af_common.h +++ b/include/af_common.h @@ -21,10 +21,14 @@ #define AF_VERSION "0.0.0" #define AF_COPYRIGHT "Copyright (C) 2025 Fishsoup" -/* should be broadcasted! otherwise other user wouldn't know */ -typedef struct af_pkt_join { - unsigned char length; - char* name; -} af_pkt_join_t; +enum AF_USER_PACKETS { + AF_PACKET_JOIN = FISHSOUP_PACKET_USER +}; + +#pragma pack(1) +typedef struct af_packet_join { + char name[256]; +} af_packet_join_t; +#pragma pack() #endif diff --git a/server/main.c b/server/main.c index 6107ece..16ea0ae 100644 --- a/server/main.c +++ b/server/main.c @@ -1,4 +1,10 @@ #include int main(int argc, char** argv) { + fishsoup_server_t* server; + int port = 0; + + server = fishsoup_server(port == 0 ? AF_DEFAULT_PORT : port); + + fishsoup_server_loop(server); }