projects
/
carveJwlIkooP6JGAAIwe30JlM.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
water fog material prop; ragdoll float only on drowned
[carveJwlIkooP6JGAAIwe30JlM.git]
/
world_physics.c
diff --git
a/world_physics.c
b/world_physics.c
index 96ffa2f47d56104f337a67ac6fab33044ca8e2a6..03be1fc27fd7c7744bd526e6d03b5391eaa4a5d1 100644
(file)
--- a/
world_physics.c
+++ b/
world_physics.c
@@
-4,24
+4,24
@@
#include "world.h"
#include "world_physics.h"
#include "world.h"
#include "world_physics.h"
-VG_STATIC void ray_world_get_tri( world_instance *world,
- ray_hit *hit, v3f tri[3] )
+void ray_world_get_tri( world_instance *world, ray_hit *hit, v3f tri[3] )
{
for( int i=0; i<3; i++ )
v3_copy( world->scene_geo.arrvertices[ hit->tri[i] ].co, tri[i] );
}
{
for( int i=0; i<3; i++ )
v3_copy( world->scene_geo.arrvertices[ hit->tri[i] ].co, tri[i] );
}
-
VG_STATIC
int ray_world( world_instance *world,
-
v3f pos, v3f dir, ray_hit *hit
)
+int ray_world( world_instance *world,
+
v3f pos, v3f dir, ray_hit *hit, u16 ignore
)
{
{
- return scene_raycast( &world->scene_geo, world->geo_bh, pos, dir, hit );
+ return scene_raycast( &world->scene_geo, world->geo_bh, pos, dir, hit,
+ ignore );
}
/*
* Cast a sphere from a to b and see what time it hits
*/
}
/*
* Cast a sphere from a to b and see what time it hits
*/
-
VG_STATIC
int spherecast_world( world_instance *world,
-
v3f pa, v3f pb, float r, float *t, v3f n
)
+int spherecast_world( world_instance *world,
+
v3f pa, v3f pb, float r, float *t, v3f n, u16 ignore
)
{
boxf region;
box_init_inf( region );
{
boxf region;
box_init_inf( region );
@@
-47,11
+47,11
@@
VG_STATIC int spherecast_world( world_instance *world,
i32 idx;
while( bh_next( world->geo_bh, &it, &idx ) ){
u32 *ptri = &world->scene_geo.arrindices[ idx*3 ];
i32 idx;
while( bh_next( world->geo_bh, &it, &idx ) ){
u32 *ptri = &world->scene_geo.arrindices[ idx*3 ];
-
v3f tri[3]
;
+
if( world->scene_geo.arrvertices[ptri[0]].flags & ignore ) continue
;
+ v3f tri[3];
boxf box;
box_init_inf( box );
boxf box;
box_init_inf( box );
-
for( int j=0; j<3; j++ ){
v3_copy( world->scene_geo.arrvertices[ptri[j]].co, tri[j] );
box_addpt( box, tri[j] );
for( int j=0; j<3; j++ ){
v3_copy( world->scene_geo.arrvertices[ptri[j]].co, tri[j] );
box_addpt( box, tri[j] );
@@
-78,9
+78,8
@@
VG_STATIC int spherecast_world( world_instance *world,
return hit;
}
return hit;
}
-VG_STATIC
struct world_surface *world_tri_index_surface( world_instance *world,
struct world_surface *world_tri_index_surface( world_instance *world,
-
u32 index )
+ u32 index )
{
for( int i=1; i<world->surface_count; i++ ){
struct world_surface *surf = &world->surfaces[i];
{
for( int i=1; i<world->surface_count; i++ ){
struct world_surface *surf = &world->surfaces[i];
@@
-95,14
+94,12
@@
struct world_surface *world_tri_index_surface( world_instance *world,
return &world->surfaces[0];
}
return &world->surfaces[0];
}
-VG_STATIC struct world_surface *world_contact_surface( world_instance *world,
- rb_ct *ct )
+struct world_surface *world_contact_surface( world_instance *world, rb_ct *ct )
{
return world_tri_index_surface( world, ct->element_id );
}
{
return world_tri_index_surface( world, ct->element_id );
}
-VG_STATIC struct world_surface *ray_hit_surface( world_instance *world,
- ray_hit *hit )
+struct world_surface *ray_hit_surface( world_instance *world, ray_hit *hit )
{
return world_tri_index_surface( world, hit->tri[0] );
}
{
return world_tri_index_surface( world, hit->tri[0] );
}