projects
/
carveJwlIkooP6JGAAIwe30JlM.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
third person better camera
[carveJwlIkooP6JGAAIwe30JlM.git]
/
world_gate.h
diff --git
a/world_gate.h
b/world_gate.h
index 9d1287711782d7570fb0c26505647beb2b9c5978..f83cd87a24dd0455a8fea06bf667ba571c896921 100644
(file)
--- a/
world_gate.h
+++ b/
world_gate.h
@@
-152,7
+152,8
@@
VG_STATIC int render_gate( teleport_gate *gate, camera *cam )
return 1;
}
return 1;
}
-VG_STATIC int gate_intersect( teleport_gate *gate, v3f pos, v3f last )
+VG_STATIC int gate_intersect_plane( teleport_gate *gate, v3f pos, v3f last,
+ v2f where )
{
v4f surface;
m3x3_mulv( gate->to_world, (v3f){0.0f,0.0f,-1.0f}, surface );
{
v4f surface;
m3x3_mulv( gate->to_world, (v3f){0.0f,0.0f,-1.0f}, surface );
@@
-185,12
+186,25
@@
VG_STATIC int gate_intersect( teleport_gate *gate, v3f pos, v3f last )
m3x3_mulv( gate->to_world, (v3f){0.0f,1.0f,0.0f}, vup );
m3x3_mulv( gate->to_world, (v3f){1.0f,0.0f,0.0f}, vside );
m3x3_mulv( gate->to_world, (v3f){0.0f,1.0f,0.0f}, vup );
m3x3_mulv( gate->to_world, (v3f){1.0f,0.0f,0.0f}, vside );
- v2f xy = { v3_dot( rel, vside ), v3_dot( rel, vup ) };
+ where[0] = v3_dot( rel, vside );
+ where[1] = v3_dot( rel, vup );
+
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+VG_STATIC int gate_intersect( teleport_gate *gate, v3f pos, v3f last )
+{
+ v2f xy;
- if( fabsf(xy[0]) <= gate->dims[0] && fabsf(xy[1]) <= gate->dims[1] )
- {
- return 1;
- }
+ if( gate_intersect_plane( gate, pos, last, xy ) )
+ {
+ if( fabsf(xy[0]) <= gate->dims[0] && fabsf(xy[1]) <= gate->dims[1] )
+ {
+ return 1;
}
}
}
}