#ifndef GATE_H
#define GATE_H
-#define VG_3D
-#include "vg/vg.h"
+#include "common.h"
#include "model.h"
#include "render.h"
#include "shaders/gate.h"
fb_resize( &grender.fb );
}
-static void render_gate( teleport_gate *gate, m4x3f camera )
+static int render_gate( teleport_gate *gate, v3f viewpos, m4x3f camera )
{
- v3f viewpos, viewdir, gatedir;
- v3_copy( camera[3], viewpos );
+ v3f viewdir, gatedir;
m3x3_mulv( camera, (v3f){0.0f,0.0f,-1.0f}, viewdir );
m3x3_mulv( gate->to_world, (v3f){0.0f,0.0f,-1.0f}, gatedir );
v3f v0;
v3_sub( viewpos, gate->co[0], v0 );
if( v3_dot(v0, gatedir) >= 0.0f )
- return;
+ return 0;
if( v3_dist( viewpos, gate->co[0] ) > 100.0f )
- return;
+ return 0;
v3f a,b,c,d;
glStencilFunc( GL_ALWAYS, 1, 0xFF );
glDisable( GL_STENCIL_TEST );
}
+
+ return 1;
}
static int gate_intersect( teleport_gate *gate, v3f pos, v3f last )
float d = v3_dot(surface, v0);
- if( fabsf(d) > 0.00001f )
+ if( d > 0.00001f )
{
float t = v3_dot(delta, surface) / d;
if( t >= 0.0f && t <= l )