projects
/
carveJwlIkooP6JGAAIwe30JlM.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
process triggers on leave world
[carveJwlIkooP6JGAAIwe30JlM.git]
/
player.c
diff --git
a/player.c
b/player.c
index 7a31eda047382aba659f289a36f156494b77d5c4..fce9c488aaabf58f4e341881d497de9ede7c296e 100644
(file)
--- a/
player.c
+++ b/
player.c
@@
-11,6
+11,7
@@
#include "network.h"
#include "network_common.h"
#include "world_routes.h"
#include "network.h"
#include "network_common.h"
#include "world_routes.h"
+#include "ent_miniworld.h"
static int localplayer_cmd_respawn( int argc, const char *argv[] ){
ent_spawn *rp = NULL, *r;
static int localplayer_cmd_respawn( int argc, const char *argv[] ){
ent_spawn *rp = NULL, *r;
@@
-66,10
+67,6
@@
static void player__debugtext( int size, const char *fmt, ... ){
/*
* Appearence
*/
/*
* Appearence
*/
-static void player__use_avatar( struct player_avatar *av ){
- localplayer.playeravatar = av;
- player_setup_ragdoll_from_avatar( &localplayer.ragdoll, av );
-}
static void player__use_model( u16 reg_id ){
addon_cache_unwatch( k_addon_type_player,
static void player__use_model( u16 reg_id ){
addon_cache_unwatch( k_addon_type_player,
@@
-146,9
+143,6
@@
static void player__pass_gate( u32 id ){
m4x3_mulv( gate->transport, localplayer.cam.pos, localplayer.cam.pos );
m4x3_mulv( gate->transport, localplayer.cam.pos, localplayer.cam.pos );
- if( gate->flags & k_ent_gate_nonlocal )
- world_set_active_instance( gate->target );
-
audio_lock();
audio_oneshot( &audio_gate_pass, 1.0f, 0.0f );
audio_unlock();
audio_lock();
audio_oneshot( &audio_gate_pass, 1.0f, 0.0f );
audio_unlock();
@@
-193,20
+187,16
@@
static void player__im_gui(void){
player__debugtext( 2, "instance #%u", world_static.active_instance );
player__debugtext( 2, "instance #%u", world_static.active_instance );
- char buf
_hub[96],
- buf_client[96];
-
if( world_static.addon_client
)
-
addon_alias_uid( &world_static.addon_client->alias, buf_client
);
- else
-
strcpy( buf_client
, "none" );
+ char buf
[96];
+ for( u32 i=0; i<k_world_max; i++ ){
+
if( world_static.instance_addons[ i ]
)
+
addon_alias_uid( &world_static.instance_addons[ i ]->alias, buf
);
+
else
+
strcpy( buf
, "none" );
- if( world_static.addon_hub )
- addon_alias_uid( &world_static.addon_hub->alias, buf_hub );
- else
- strcpy( buf_hub, "none" );
+ player__debugtext( 1, "world #%u: %s", i, buf );
+ }
- player__debugtext( 1, "hub uid: %s", buf_hub );
- player__debugtext( 1, "client uid: %s", buf_client );
player__debugtext( 2, "director" );
player__debugtext( 1, "activity: %s",
(const char *[]){ [k_skaterift_menu] = "menu",
player__debugtext( 2, "director" );
player__debugtext( 1, "activity: %s",
(const char *[]){ [k_skaterift_menu] = "menu",
@@
-227,18
+217,22
@@
static void player__im_gui(void){
skaterift_replay_debug_info();
}
skaterift_replay_debug_info();
}
-
static void player__setpos( v3f pos ){
v3_copy( pos, localplayer.rb.co );
v3_zero( localplayer.rb.v );
rb_update_transform( &localplayer.rb );
}
static void player__setpos( v3f pos ){
v3_copy( pos, localplayer.rb.co );
v3_zero( localplayer.rb.v );
rb_update_transform( &localplayer.rb );
}
-static void player__
spawn( ent_spawn *rp
){
+static void player__
reset(void
){
replay_clear( &skaterift.replay );
replay_clear( &skaterift.replay );
- player__setpos( rp->transform.co );
+
+ v3_zero( localplayer.rb.v );
v3_zero( localplayer.rb.w );
v3_zero( localplayer.rb.w );
- q_identity( localplayer.rb.q );
+
+ f32 l = v4_length( localplayer.rb.q );
+ if( (l < 0.9f) || (l > 1.1f) )
+ q_identity( localplayer.rb.q );
+
rb_update_transform( &localplayer.rb );
q_identity( localplayer.qbasis );
rb_update_transform( &localplayer.rb );
q_identity( localplayer.qbasis );
@@
-246,17
+240,19
@@
static void player__spawn( ent_spawn *rp ){
m3x3_identity( localplayer.invbasis );
localplayer.subsystem = k_player_subsystem_walk;
m3x3_identity( localplayer.invbasis );
localplayer.subsystem = k_player_subsystem_walk;
+ player__walk_reset();
+
localplayer.immobile = 0;
localplayer.gate_waiting = NULL;
localplayer.immobile = 0;
localplayer.gate_waiting = NULL;
-
world_static.last_use = 0.0
;
- world_static.focused_entity = 0;
+
localplayer.viewable_world = world_current_instance()
;
+
world_static.challenge_target = NULL;
world_static.challenge_timer = 0.0f;
world_static.challenge_target = NULL;
world_static.challenge_timer = 0.0f;
+ world_static.focused_entity = 0;
+ world_static.active_trigger_volume_count = 0;
+ world_static.last_use = 0.0;
world_entity_unfocus();
world_entity_unfocus();
- if( player_subsystems[ localplayer.subsystem ]->reset )
- player_subsystems[ localplayer.subsystem ]->reset( rp );
-
localplayer.boundary_hash ^= NETMSG_BOUNDARY_BIT;
for( u32 i=0; i<vg_list_size(world_static.instances); i++ ){
localplayer.boundary_hash ^= NETMSG_BOUNDARY_BIT;
for( u32 i=0; i<vg_list_size(world_static.instances); i++ ){
@@
-267,13
+263,19
@@
static void player__spawn( ent_spawn *rp ){
}
}
}
}
+static void player__spawn( ent_spawn *rp ){
+ player__setpos( rp->transform.co );
+ player__reset();
+}
+
static void player__kill(void){
}
static void player__kill(void){
}
-static void player__begin_holdout(
void
){
+static void player__begin_holdout(
v3f offset
){
memcpy( &localplayer.holdout_pose, &localplayer.pose,
sizeof(localplayer.pose) );
memcpy( &localplayer.holdout_pose, &localplayer.pose,
sizeof(localplayer.pose) );
+ v3_copy( offset, localplayer.holdout_pose.root_co );
localplayer.holdout_time = 1.0f;
}
localplayer.holdout_time = 1.0f;
}