X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=ent_region.c;h=5e0ec03dd2349891f09ee00bfca3c07aa3a19081;hb=304647a7672165dd35ffe54884ed9aedcc9bf363;hp=e58d594708443bd46c3ef92e70569932410348ff;hpb=5f6a4f9df6c8accc89f1920bfe9ace3cbac4c4b6;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/ent_region.c b/ent_region.c index e58d594..5e0ec03 100644 --- a/ent_region.c +++ b/ent_region.c @@ -15,29 +15,33 @@ u32 region_spark_colour( u32 flags ) return 0x00; } -void ent_region_call( world_instance *world, ent_call *call ) +entity_call_result ent_region_call( world_instance *world, ent_call *call ) { ent_region *region = mdl_arritm( &world->ent_region, mdl_entity_id_id(call->id) ); if( !region->zone_volume ) - return; + return k_entity_call_result_invalid; ent_volume *volume = mdl_arritm( &world->ent_volume, mdl_entity_id_id(region->zone_volume) ); - if( call->function == 0 ){ /* enter */ - for( u32 i=0; ient_route); i ++ ){ + if( call->function == 0 ) /* enter */ + { + for( u32 i=0; ient_route); i ++ ) + { ent_route *route = mdl_arritm( &world->ent_route, i ); v3f local; m4x3_mulv( volume->to_local, route->board_transform[3], local ); if( (fabsf(local[0]) <= 1.0f) && (fabsf(local[1]) <= 1.0f) && - (fabsf(local[2]) <= 1.0f) ){ + (fabsf(local[2]) <= 1.0f) ) + { route->flags &= ~k_ent_route_flag_out_of_zone; } - else { + else + { route->flags |= k_ent_route_flag_out_of_zone; } } @@ -52,14 +56,20 @@ void ent_region_call( world_instance *world, ent_call *call ) network_send_region(); localplayer.effect_data.spark.colour = region_spark_colour(region->flags); + return k_entity_call_result_OK; } - else if( call->function == 1 ){ /* leave */ - for( u32 i=0; ient_route); i ++ ){ + else if( call->function == 1 ) /* leave */ + { + for( u32 i=0; ient_route); i ++ ) + { ent_route *route = mdl_arritm( &world->ent_route, i ); route->flags |= k_ent_route_flag_out_of_zone; } localplayer.effect_data.spark.colour = 0x00; + return k_entity_call_result_OK; } + else + return k_entity_call_result_unhandled; } /*