X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_glide.h;h=061a04dd65f427007d5436a3e42c803dd6f6635e;hb=5f6a4f9df6c8accc89f1920bfe9ace3cbac4c4b6;hp=f8f6dd99dffee4de2a9d85f47d91c8c6b025826f;hpb=a109f126d8adab622e38fbcc2d4281e75255246a;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_glide.h b/player_glide.h index f8f6dd9..061a04d 100644 --- a/player_glide.h +++ b/player_glide.h @@ -1,20 +1,22 @@ -#ifndef PLAYER_GLIDE_H -#define PLAYER_GLIDE_H - +#pragma once #include "player.h" +#include "player_render.h" #include "trail.h" -struct player_glide { +struct player_glide +{ struct skeleton_anim *anim_glide; - struct player_glide_animator { + struct player_glide_animator + { v3f root_co; v4f root_q; } animator; /* this sucks */ - struct remote_glider_animator { + struct remote_glider_animator + { v3f root_co; v4f root_q; f32 s; @@ -52,92 +54,26 @@ struct player_glide { GLuint *glider_textures; glmesh glider_mesh; } -static player_glide = { - .parts = { - { - .co = { 1.0f, 0.5f, -1.0f }, - .euler = { VG_TAUf*0.25f, VG_TAUf*0.125f, 0.0f }, - .shape = k_rb_shape_capsule, - .inf = { .h = 2.82842712475f, .r = 0.25f }, - }, - { - .co = { -1.0f, 0.5f, -1.0f }, - .euler = { VG_TAUf*0.25f, -VG_TAUf*0.125f, 0.0f }, - .shape = k_rb_shape_capsule, - .inf = { .h = 2.82842712475f, .r = 0.25f }, - }, - { - .co = { 0.0f, 0.5f, 1.0f }, - .euler = { VG_TAUf*0.25f, VG_TAUf*0.25f, 0.0f }, - .shape = k_rb_shape_capsule, - .inf = { .h = 6.0f, .r = 0.25f }, - }, - { - .co = { 0.0f, -0.5f, 0.0f }, - .euler = { VG_TAUf*0.25f, VG_TAUf*0.25f, 0.0f }, - .shape = k_rb_shape_capsule, - .inf = { .h = 2.0f, .r = 0.25f }, - .is_damage = 1, - }, - -#if 0 - { - .co = { 0.0f, 0.0f, 0.0f }, - .euler = { 0.0f, 0.0f, 0.0f }, - .shape = k_rb_shape_sphere, - .r = 0.5f - } -#endif - } -}; - -static trail_system trails_glider[] = { -{ - .width = 0.035f, - .lifetime = 5.0f, - .min_dist = 0.5f -}, -{ - .width = 0.035f, - .lifetime = 5.0f, - .min_dist = 0.5f -}, -}; - -static void player_glide_pre_update(void); -static void player_glide_update(void); -static void player_glide_post_update(void); -static void player_glide_animate(void); -static void player_glide_pose( void *animator, player_pose *pose ); - -static void player_glide_post_animate(void); -static void player_glide_im_gui(void); -static void player_glide_bind(void); -static void player_glide_transition(void); -static bool glider_physics( v2f steer ); -static void player_glide_animator_exchange( bitpack_ctx *ctx, void *data ); -static void player_glide_render( camera *cam, world_instance *world, - player_pose *pose ); -static void render_glider_model( camera *cam, world_instance *world, - m4x3f mmdl, enum board_shader shader ); -static void -player_glide_remote_animator_exchange( bitpack_ctx *ctx, void *data ); -static void player_glide_equip_glider(void); - -struct player_subsystem_interface static player_subsystem_glide = { - .pre_update = player_glide_pre_update, - .update = player_glide_update, - .post_update = player_glide_post_update, - .animate = player_glide_animate, - .pose = player_glide_pose, - .post_animate = player_glide_post_animate, - .network_animator_exchange = player_glide_animator_exchange, - .im_gui = player_glide_im_gui, - .bind = player_glide_bind, - - .animator_data = &player_glide.animator, - .animator_size = sizeof(player_glide.animator), - .name = "Glide" -}; +extern player_glide; +extern struct player_subsystem_interface player_subsystem_glide; + +void player_glide_pre_update(void); +void player_glide_update(void); +void player_glide_post_update(void); +void player_glide_animate(void); +void player_glide_pose( void *animator, player_pose *pose ); + +void player_glide_post_animate(void); +void player_glide_im_gui(void); +void player_glide_bind(void); +void player_glide_transition(void); +bool glider_physics( v2f steer ); +void player_glide_animator_exchange( bitpack_ctx *ctx, void *data ); +void player_glide_render( vg_camera *cam, world_instance *world, + player_pose *pose ); +void render_glider_model( vg_camera *cam, world_instance *world, + m4x3f mmdl, enum board_shader shader ); +void player_glide_remote_animator_exchange( bitpack_ctx *ctx, void *data ); +void player_glide_equip_glider(void); +void player_glide_render_effects( vg_camera *cam ); -#endif /* PLAYER_GLIDE_H */