From d00b1df8f80e4714dc2f9aa2189d242bb4d09a2f Mon Sep 17 00:00:00 2001 From: hgn Date: Sat, 8 Oct 2022 01:19:42 +0100 Subject: [PATCH] Notices & clean --- anim_test.h | 91 ---------- audio.h | 4 + blender_export.py | 4 + blender_graphics_cropper.py | 3 + build.sh | 3 +- bvh.h | 4 + common.h | 4 + highscores.h | 4 + ik.h | 144 --------------- ik_emulate.py | 338 ------------------------------------ lighting.h | 0 mesh.h | 0 network.h | 7 +- network_msg.h | 4 + physics_test.h | 14 +- player.h | 7 +- player_animation.h | 4 + player_audio.h | 7 +- player_model.h | 2 +- player_physics.h | 8 +- player_walkgrid.h | 26 +-- ragdoll.h | 9 - render.h | 4 + rigidbody.h | 4 + road.h | 275 ----------------------------- scope.h | 19 -- server.c | 10 +- shaders.sh | 2 +- skeleton.h | 2 +- skeleton_animator.h | 7 - sprites_autocombine.h | 8 - steam.h | 5 + terrain.h | 143 --------------- testaa.c | 179 ------------------- vg.conf | 4 + vg_config.h | 5 +- world.h | 5 +- world_gate.h | 4 + world_gen.h | 4 + world_info.h | 4 + world_render.h | 4 + world_routes.h | 4 + world_sfd.h | 4 + world_water.h | 4 + 44 files changed, 128 insertions(+), 1259 deletions(-) delete mode 100644 anim_test.h delete mode 100644 ik.h delete mode 100644 ik_emulate.py delete mode 100644 lighting.h delete mode 100644 mesh.h delete mode 100644 ragdoll.h delete mode 100644 road.h delete mode 100644 scope.h delete mode 100644 skeleton_animator.h delete mode 100644 sprites_autocombine.h delete mode 100644 terrain.h delete mode 100644 testaa.c diff --git a/anim_test.h b/anim_test.h deleted file mode 100644 index 054e955..0000000 --- a/anim_test.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (C) Mount0 Software, Harry Godden - All Rights Reserved - */ - -#ifndef ANIM_TEST_H -#define ANIM_TEST_H - -#include "player.h" -#include "skeleton.h" -#include "shaders/viewchar.h" - -static struct -{ - struct skeleton skele; - struct skeleton_anim *anim_stand, *anim_highg; - - glmesh mesh; -} -animtest; - -static void anim_test_start(void) -{ - mdl_header *johannes = mdl_load( "models/ch_new.mdl" ); - skeleton_setup( &animtest.skele, johannes ); - animtest.anim_stand = skeleton_get_anim( &animtest.skele, "pose_stand" ); - animtest.anim_highg = skeleton_get_anim( &animtest.skele, "pose_highg" ); - mdl_unpack_glmesh( johannes, &animtest.mesh ); - - free( johannes ); -} - -static void anim_test_update(void) -{ - player_freecam(); - player_camera_update(); - - m4x3f transform; - m4x3_identity( transform ); - - v4f qt; - q_axis_angle( qt, (v3f){0.0f,1.0f,0.0f}, vg_time*1.2f ); - q_m3x3( qt, transform ); - - mdl_keyframe apose[32], - bpose[32]; - - float a = sinf(vg_time)*0.5f+0.5f, - b = (sinf(vg_time*2.0f)*0.5f+0.5f)*(15.0f/30.0f); - - skeleton_sample_anim( &animtest.skele, animtest.anim_stand, b, apose ); - skeleton_sample_anim( &animtest.skele, animtest.anim_highg, b, bpose ); - - skeleton_lerp_pose( &animtest.skele, apose, bpose, a, apose ); - skeleton_apply_standard( &animtest.skele, apose, transform ); - - skeleton_debug( &animtest.skele ); -} - -static void anim_test_render( vg_tex2d *tex ) -{ - m4x4f world_4x4; - m4x3_expand( player.camera_inverse, world_4x4 ); - - gpipeline.fov = 60.0f; - m4x4_projection( vg_pv, gpipeline.fov, - (float)vg_window_x / (float)vg_window_y, - 0.1f, 2100.0f ); - - m4x4_mul( vg_pv, world_4x4, vg_pv ); - glEnable( GL_DEPTH_TEST ); - - shader_viewchar_use(); - vg_tex2d_bind( tex, 0 ); - shader_viewchar_uTexMain( 0 ); - shader_viewchar_uPv( vg_pv ); - - shader_link_standard_ub( _shader_viewchar.id, 2 ); - - glUniformMatrix4x3fv( _uniform_viewchar_uTransforms, - animtest.skele.bone_count, - 0, - (float *)animtest.skele.final_mtx ); - - mesh_bind( &animtest.mesh ); - mesh_draw( &animtest.mesh ); - - glDisable( GL_DEPTH_TEST ); - vg_lines_drawall( (float *)vg_pv ); -} - -#endif /* ANIM_TEST_H */ diff --git a/audio.h b/audio.h index fc9330c..a984dd0 100644 --- a/audio.h +++ b/audio.h @@ -1,3 +1,7 @@ +/* + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved + */ + #include "common.h" #ifndef AUDIO_H diff --git a/blender_export.py b/blender_export.py index c44694a..86b6541 100644 --- a/blender_export.py +++ b/blender_export.py @@ -1,3 +1,7 @@ +# +# Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved +# + import bpy, math, gpu import cProfile from ctypes import * diff --git a/blender_graphics_cropper.py b/blender_graphics_cropper.py index 37cd26c..0dbc463 100644 --- a/blender_graphics_cropper.py +++ b/blender_graphics_cropper.py @@ -1,3 +1,6 @@ +# Any copyright is dedicated to the Public Domain. (blender_graphics_cropper.py) +# https://creativecommons.org/publicdomain/zero/1.0/ + import bpy, math, gpu, blf from mathutils import * from gpu_extras.batch import batch_for_shader diff --git a/build.sh b/build.sh index 1bf5fdd..bb59b6f 100755 --- a/build.sh +++ b/build.sh @@ -1,5 +1,6 @@ #!/bin/bash -# Copyright (C) 2021-2022 Harry Godden (hgn) - All Rights Reserved +# +# Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved # # Main cross-compiling build script for Skate Rift # Supports Linux and Windows building from a Linux Host diff --git a/bvh.h b/bvh.h index 637b553..c18bb30 100644 --- a/bvh.h +++ b/bvh.h @@ -1,3 +1,7 @@ +/* + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved + */ + #ifndef BVH_H #define BVH_H #include "common.h" diff --git a/common.h b/common.h index 3a3a23a..d0f4c07 100644 --- a/common.h +++ b/common.h @@ -1,3 +1,7 @@ +/* + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved + */ + #ifndef COMMON_H #define COMMON_H diff --git a/highscores.h b/highscores.h index 0136886..d99710e 100644 --- a/highscores.h +++ b/highscores.h @@ -1,3 +1,7 @@ +/* + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved + */ + #ifndef HIGHSCORES_H #define HIGHSCORES_H diff --git a/ik.h b/ik.h deleted file mode 100644 index e02fd30..0000000 --- a/ik.h +++ /dev/null @@ -1,144 +0,0 @@ -#ifndef IK_H -#define IK_H - -#include "vg/vg.h" - -/* - * Setup basic IK system (2d, 2 bones) - * - * + base (m1) - * \ - * \ l1 - * \ - * *(m2) + pole - * / - * / l2 - * + - * end - */ -struct ik_basic -{ - v3f base, - pole, - end; - - float l1, l2; -}; - -typedef enum ik_dir ik_dir; -enum ik_dir -{ - k_ikX, - k_iknX, - k_ikY, - k_iknY, - k_ikZ, - k_iknZ -}; - -static void ik_track_to( m4x3f m, v3f pos, v3f target, v3f axis, - ik_dir fwd, ik_dir up ) -{ - v3f dir, other; - v3_sub( target, pos, dir ); - v3_normalize( dir ); - v3_cross( dir, axis, other ); - - if( fwd == k_ikX && up == k_ikY ) - { - v3_copy( axis, m[0] ); - v3_copy( dir, m[1] ); - v3_copy( other, m[2] ); - } - - if( fwd == k_ikY && up == k_ikX ) - { - v3_negate( axis, m[2] ); - v3_copy( dir, m[1] ); - v3_negate( other,m[0] ); - } - - if( fwd == k_ikY && up == k_iknX ) - { - v3_negate( axis, m[2] ); - v3_negate( dir, m[1] ); - v3_copy( other,m[0] ); - } - - if( fwd == k_ikZ && up == k_ikY ) - { - v3_copy( axis, m[1] ); - v3_copy( dir, m[2] ); - v3_negate( other, m[0] ); - } - - if( fwd == k_iknZ && up == k_ikY ) - { - v3_negate( axis, m[1] ); - v3_negate( dir, m[2] ); - v3_negate( other, m[0] ); - } - - v3_copy( pos, m[3] ); -} - -static void ik_basic( struct ik_basic *ik, m4x3f m1, m4x3f m2, - enum ik_dir fwd, enum ik_dir up ) -{ - /* Localize the system into 2d */ - v3f local[3]; - float *v0 = local[0], - *v1 = local[1], - *axis = local[2]; - - vg_line( ik->base, ik->pole, 0x6fffff00 ); - vg_line( ik->end, ik->pole, 0x6fffff00 ); - - v3_sub( ik->base, ik->pole, v0 ); - v3_sub( ik->end, ik->pole, v1 ); - - v3_cross( v0, v1, axis ); - v3_normalize( v0 ); - v3_normalize( axis ); - v3_cross( axis, v0, v1 ); - - v3f p0, p1, p2; - v3_muladds( ik->base, axis, 0.05f, p0 ); - v3_muladds( ik->base, v0, 0.05f, p1 ); - v3_muladds( ik->base, v1, 0.05f, p2 ); - vg_line( ik->base, p0, 0xffff0000 ); - vg_line( ik->base, p1, 0xff00ff00 ); - vg_line( ik->base, p2, 0xff0000ff ); - - v2f base = { v3_dot( v0, ik->base ), v3_dot( v1, ik->base ) }, - end = { v3_dot( v0, ik->end ), v3_dot( v1, ik->end ) }, - knee; - - /* Compute angles */ - v2f delta; - v2_sub( end, base, delta ); - - float - d = vg_clampf( v2_length(delta), fabsf(ik->l1 - ik->l2), - ik->l1+ik->l2-0.00001f ), - c = acosf( (ik->l1*ik->l1 + d*d - ik->l2*ik->l2) / (2.0f*ik->l1*d) ), - rot = atan2f( delta[1], delta[0] ) + c - VG_PIf/2.0f; - - knee[0] = sinf(-rot) * ik->l1; - knee[1] = cosf(-rot) * ik->l1; - - /* Project back into world coords */ - v3f world_knee; - v3_muladds( ik->base, v0, knee[0], world_knee ); - v3_muladds( world_knee, v1, knee[1], world_knee ); - - /* Create matrices */ - - ik_track_to( m1, ik->base, world_knee, axis, fwd, up ); - ik_track_to( m2, world_knee, ik->end, axis, fwd, up ); - - vg_line( ik->base, world_knee, 0xa00000ff ); - vg_line( world_knee, ik->end, 0xa000ff40 ); -} - -#endif diff --git a/ik_emulate.py b/ik_emulate.py deleted file mode 100644 index 0ee3cae..0000000 --- a/ik_emulate.py +++ /dev/null @@ -1,338 +0,0 @@ -import bpy -from math import * - -def v2_sub( a, b, d ): - d[0] = a[0]-b[0] - d[1] = a[1]-b[1] - -def v3_sub( a, b, d ): - d[0] = a[0]-b[0] - d[1] = a[1]-b[1] - d[2] = a[2]-b[2] - -def v3_cross( a, b, d ): - d[0] = a[1]*b[2] - a[2]*b[1] - d[1] = a[2]*b[0] - a[0]*b[2] - d[2] = a[0]*b[1] - a[1]*b[0] - -def v3_muladds( a, b, s, d ): - d[0] = a[0]+b[0]*s - d[1] = a[1]+b[1]*s - d[2] = a[2]+b[2]*s - -def v3_muls( a, s, d ): - d[0] = a[0]*s - d[1] = a[1]*s - d[2] = a[2]*s - -def v3_copy( a, b ): - b[0] = a[0] - b[1] = a[1] - b[2] = a[2] - -def v3_zero( a ): - a[0] = 0.0 - a[1] = 0.0 - a[2] = 0.0 - -def v3_negate( a, b ): - b[0] = -a[0] - b[1] = -a[1] - b[2] = -a[2] - -def v3_dot( a, b ): - return a[0]*b[0] + a[1]*b[1] + a[2]*b[2] - -def v2_dot( a, b ): - return a[0]*b[0] + a[1]*b[1] - -def v2_length2( a ): - return v2_dot( a, a ) - -def v3_length2( a ): - return v3_dot( a, a ) - -def v3_length( a ): - return sqrt( v3_length2(a) ) - -def v2_length( a ): - return sqrt( v2_length2(a) ) - -def v3_normalize( a ): - v3_muls( a, 1.0 / v3_length( a ), a ) - -def m3x3_identity( a ): - a[0][0] = 1.0 - a[0][1] = 0.0 - a[0][2] = 0.0 - a[1][0] = 0.0 - a[1][1] = 1.0 - a[1][2] = 0.0 - a[2][0] = 0.0 - a[2][1] = 0.0 - a[2][2] = 1.0 - -def m4x3_mul( a, b, d ): - a00 = a[0][0] - a01 = a[0][1] - a02 = a[0][2] - a10 = a[1][0] - a11 = a[1][1] - a12 = a[1][2] - a20 = a[2][0] - a21 = a[2][1] - a22 = a[2][2] - a30 = a[3][0] - a31 = a[3][1] - a32 = a[3][2] - b00 = b[0][0] - b01 = b[0][1] - b02 = b[0][2] - b10 = b[1][0] - b11 = b[1][1] - b12 = b[1][2] - b20 = b[2][0] - b21 = b[2][1] - b22 = b[2][2] - b30 = b[3][0] - b31 = b[3][1] - b32 = b[3][2] - - d[0][0] = a00*b00 + a10*b01 + a20*b02 - d[0][1] = a01*b00 + a11*b01 + a21*b02 - d[0][2] = a02*b00 + a12*b01 + a22*b02 - d[1][0] = a00*b10 + a10*b11 + a20*b12 - d[1][1] = a01*b10 + a11*b11 + a21*b12 - d[1][2] = a02*b10 + a12*b11 + a22*b12 - d[2][0] = a00*b20 + a10*b21 + a20*b22 - d[2][1] = a01*b20 + a11*b21 + a21*b22 - d[2][2] = a02*b20 + a12*b21 + a22*b22 - d[3][0] = a00*b30 + a10*b31 + a20*b32 + a30 - d[3][1] = a01*b30 + a11*b31 + a21*b32 + a31 - d[3][2] = a02*b30 + a12*b31 + a22*b32 + a32 - -def m4x3_mulv( m, v, d ): - res = [0,0,0] - res[0] = m[0][0]*v[0] + m[1][0]*v[1] + m[2][0]*v[2] + m[3][0] - res[1] = m[0][1]*v[0] + m[1][1]*v[1] + m[2][1]*v[2] + m[3][1] - res[2] = m[0][2]*v[0] + m[1][2]*v[1] + m[2][2]*v[2] + m[3][2] - v3_copy( res, d ) - -def vg_clampf( a, minf, maxf ): - return max( min(maxf,a), minf ) - -class ik_basic_t(): - def __init__(_): - _.base = [0,0,0] - _.pole = [0,0,0] - _.end = [0,0,0] - _.l1 = 0 - _.l2 = 0 - -k_ikX = 0 -k_iknX = 1 -k_ikY = 2 -k_iknY = 3 -k_ikZ = 4 -k_iknZ = 5 - -def ik_track_to( m, pos, target, axis, fwd, up ): - dirr = [0,0,0] - other = [0,0,0] - v3_sub( target, pos, dirr ) - v3_normalize(dirr) - v3_cross(dirr,axis,other) - - if fwd == k_ikX and up == k_ikY: - v3_copy( axis, m[0] ) - v3_copy( dirr, m[1] ) - v3_copy( other, m[2] ) - if fwd == k_ikY and up == k_ikX: - v3_negate( axis, m[2] ) - v3_copy( dirr, m[1] ) - v3_negate( other, m[0] ) - if fwd == k_ikY and up == k_iknX: - v3_negate( axis, m[2] ) - v3_negate( dirr, m[1] ) - v3_copy( other, m[0] ) - if fwd == k_ikZ and up == k_ikY: - v3_copy( axis, m[1] ) - v3_copy( dirr, m[2] ) - v3_negate( other, m[0] ) - if fwd == k_iknZ and up == k_ikY: - v3_negate( axis, m[1] ) - v3_negate( dirr, m[2] ) - v3_negate( other, m[0] ) - v3_copy( pos, m[3] ) - -def ik_basic( ik, m1, m2, fwd, up ): - v0 = [0,0,0] - v1 = [0,0,0] - axis = [0,0,0] - - v3_sub( ik.base, ik.pole, v0 ) - v3_sub( ik.end, ik.pole, v1 ) - - v3_cross( v0, v1, axis ) - v3_normalize( v0 ) - v3_normalize( axis ) - v3_cross( axis, v0, v1 ) - - base = [ v3_dot(v0,ik.base), v3_dot(v1,ik.base) ] - end = [ v3_dot(v0,ik.end), v3_dot(v1,ik.end) ] - knee = [0,0] - delta = [0,0] - - v2_sub( end, base, delta ) - - d = vg_clampf( v2_length(delta), abs(ik.l1-ik.l2), ik.l1+ik.l2-0.00001) - c = acos( (ik.l1*ik.l1 + d*d - ik.l2*ik.l2) / (2.0*ik.l1*d) ) - rot = atan2( delta[1], delta[0] ) + c - 3.14159265/2.0 - - knee[0] = sin(-rot) * ik.l1 - knee[1] = cos(-rot) * ik.l1 - - world_knee = [0,0,0] - v3_muladds( ik.base, v0, knee[0], world_knee ) - v3_muladds( world_knee, v1, knee[1], world_knee ) - - ik_track_to( m1, ik.base, world_knee, axis, fwd, up ) - ik_track_to( m2, world_knee, ik.end, axis, fwd, up ) - -def get_location_obj( obj, v ): - v[0] = obj.location[0] - v[1] = obj.location[2] - v[2] = -obj.location[1] - -def get_location( obj, v ): - v[0] = obj.matrix_world.translation[0] - v[1] = obj.matrix_world.translation[2] - v[2] = -obj.matrix_world.translation[1] - -def matrix_ready( a ): - b2gl = [[1.0,0.0,0.0],[0.0,0.0,-1.0],[0.0,1.0,0.0],[0.0,0.0,0.0]] - fixer = [[1.0,0.0,0.0],[0.0,0.0,1.0],[0.0,-1.0,0.0],[0.0,0.0,0.0]] - m4x3_mul( a, b2gl, a ) - m4x3_mul( fixer, a, a ) - - a[0][3] = 0.0 - a[1][3] = 0.0 - a[2][3] = 0.0 - a[3][3] = 1.0 - -def make_offset( n1, n2, v ): - a = [0,0,0] - b = [0,0,0] - - get_location_obj( bpy.data.objects[n1], a ) - get_location_obj( bpy.data.objects[n2], b ) - - v3_sub( b, a, v ) - -def get_dist( n1, n2 ): - c = [0,0,0] - make_offset( n1, n2, c ) - return v3_length( c ) - -# Measure distances -ik_body = ik_basic_t() -ik_body.l1 = get_dist( "ch_default_body0", "ch_default_body1" ) -ik_body.l2 = get_dist( "ch_default_body1", "ch_default_neck" ) - -ik_arm_l = ik_basic_t() -ik_arm_l.l1 = get_dist( "ch_default_arm_l0", "ch_default_arm_l1" ) -ik_arm_l.l2 = get_dist( "ch_default_arm_l1", "ch_default_hand_l" ) -ik_arm_r = ik_basic_t() -ik_arm_r.l1 = get_dist( "ch_default_arm_r0", "ch_default_arm_r1" ) -ik_arm_r.l2 = get_dist( "ch_default_arm_r1", "ch_default_hand_r" ) - -ik_leg_l = ik_basic_t() -ik_leg_l.l1 = get_dist( "ch_default_leg_l0", "ch_default_leg_l1" ) -ik_leg_l.l2 = get_dist( "ch_default_leg_l1", "ch_default_foot_l" ) -ik_leg_r = ik_basic_t() -ik_leg_r.l1 = get_dist( "ch_default_leg_r0", "ch_default_leg_r1" ) -ik_leg_r.l2 = get_dist( "ch_default_leg_r1", "ch_default_foot_r" ) - -offs_arm_l = [0,0,0] -offs_arm_r = [0,0,0] -offs_leg_l = [0,0,0] -offs_leg_r = [0,0,0] -make_offset( "ch_default_body1", "ch_default_arm_l0", offs_arm_l ) -make_offset( "ch_default_body1", "ch_default_arm_r0", offs_arm_r ) -make_offset( "ch_default_body0", "ch_default_leg_l0", offs_leg_l ) -make_offset( "ch_default_body0", "ch_default_leg_r0", offs_leg_r ) - -# character_eval() clone -# -cam_pos = [0,0,0] - -get_location( bpy.data.objects["BODY0"], ik_body.base ) -get_location( bpy.data.objects["BODY1"], ik_body.end ) -get_location( bpy.data.objects["POLE"], ik_body.pole ) -get_location( bpy.data.objects["FOOT_L"], ik_leg_l.end ) -get_location( bpy.data.objects["POLE_LEG_L"], ik_leg_l.pole ) -get_location( bpy.data.objects["FOOT_R"], ik_leg_r.end ) -get_location( bpy.data.objects["POLE_LEG_R"], ik_leg_r.pole ) -get_location( bpy.data.objects["HAND_L"], ik_arm_l.end ) -get_location( bpy.data.objects["POLE_ARM_L"], ik_arm_l.pole ) -get_location( bpy.data.objects["HAND_R"], ik_arm_r.end ) -get_location( bpy.data.objects["POLE_ARM_R"], ik_arm_r.pole ) -get_location( bpy.data.objects["CAMERA"], cam_pos ) - -m1 = [[0,0,0,0] for _ in range(4)] -m2 = [[0,0,0,0] for _ in range(4)] - -ik_basic( ik_body, m1, m2, k_ikY, k_ikX ) - -m4x3_mulv( m2, offs_arm_l, ik_arm_l.base ) -m4x3_mulv( m2, offs_arm_r, ik_arm_r.base ) -m4x3_mulv( m1, offs_leg_l, ik_leg_l.base ) -m4x3_mulv( m1, offs_leg_r, ik_leg_r.base ) - -matrix_ready(m1) -matrix_ready(m2) -bpy.data.objects["_body0"].matrix_world = m1 -bpy.data.objects["_body1"].matrix_world = m2 - -# Arms and legs ik -ik_basic( ik_arm_l, m1, m2, k_ikZ, k_ikY ) -matrix_ready(m1) -matrix_ready(m2) -bpy.data.objects["_arm_l0"].matrix_world = m1 -bpy.data.objects["_arm_l1"].matrix_world = m2 - -ik_basic( ik_arm_r, m1, m2, k_iknZ, k_ikY ) -matrix_ready(m1) -matrix_ready(m2) -bpy.data.objects["_arm_r0"].matrix_world = m1 -bpy.data.objects["_arm_r1"].matrix_world = m2 - -ik_basic( ik_leg_l, m1, m2, k_ikY, k_iknX ) -matrix_ready(m1) -matrix_ready(m2) -bpy.data.objects["_leg_l0"].matrix_world = m1 -bpy.data.objects["_leg_l1"].matrix_world = m2 - -ik_basic( ik_leg_r, m1, m2, k_ikY, k_iknX ) -matrix_ready(m1) -matrix_ready(m2) -bpy.data.objects["_leg_r0"].matrix_world = m1 -bpy.data.objects["_leg_r1"].matrix_world = m2 - -def strv3( v ): - return '{'+ F"{v[0]:.4f}f, {v[1]:.4f}f, {v[2]:.4f}f" + '}' - -print( F""" - .b0 = {strv3(ik_body.base)}, - .b1 = {strv3(ik_body.end)}, - .p = {strv3(ik_body.pole)}, - .fr = {strv3(ik_leg_r.end)}, - .fl = {strv3(ik_leg_l.end)}, - .pl = {strv3(ik_leg_l.pole)}, - .pr = {strv3(ik_leg_r.pole)}, - .hl = {strv3(ik_arm_l.end)}, - .hr = {strv3(ik_arm_r.end)}, - .apl = {strv3(ik_arm_l.pole)}, - .apr = {strv3(ik_arm_r.pole)}, - .cam = {strv3(cam_pos)} -""") diff --git a/lighting.h b/lighting.h deleted file mode 100644 index e69de29..0000000 diff --git a/mesh.h b/mesh.h deleted file mode 100644 index e69de29..0000000 diff --git a/network.h b/network.h index 10e85dc..6783769 100644 --- a/network.h +++ b/network.h @@ -1,3 +1,8 @@ +/* + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved + * All trademarks are property of their respective owners + */ + #ifndef NETWORK_H #define NETWORK_H @@ -357,7 +362,7 @@ static void network_end(void*_) #else /* SR_NETWORKED */ -static int network_init(void){ return 1; } +static void network_init(void){} static void network_update(void){} static void network_end(void*_){} diff --git a/network_msg.h b/network_msg.h index 0a0d1f8..221e6ef 100644 --- a/network_msg.h +++ b/network_msg.h @@ -1,3 +1,7 @@ +/* + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved + */ + #ifndef NETWORK_MSG_H #define NETWORK_MSG_H diff --git a/physics_test.h b/physics_test.h index 33a6b6b..243de36 100644 --- a/physics_test.h +++ b/physics_test.h @@ -1,3 +1,7 @@ +/* + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved + */ + #ifndef PHYSICS_TEST_H #define PHYSICS_TEST_H @@ -139,7 +143,7 @@ static void physics_test_start(void) } } - free( mdl ); + vg_free( mdl ); scene_bh_create( &epic_scene ); rb_init( &epic_scene_rb ); @@ -227,26 +231,26 @@ static void physics_test_update(void) /* POSITION OVERRIDE */ { - if(glfwGetKey( vg_window, GLFW_KEY_L )) + if(glfwGetKey( vg.window, GLFW_KEY_L )) { m4x3_mulv( player.camera, (v3f){0.0f,0.0f,-5.0f}, marko.co ); v3_zero( marko.v ); v3_zero( marko.w ); } - if(glfwGetKey( vg_window, GLFW_KEY_K )) + if(glfwGetKey( vg.window, GLFW_KEY_K )) { m4x3_mulv( player.camera, (v3f){0.0f,0.0f,-5.0f}, ball.co ); v3_zero( ball.v ); v3_zero( ball.w ); } - if(glfwGetKey( vg_window, GLFW_KEY_J )) + if(glfwGetKey( vg.window, GLFW_KEY_J )) { m4x3_mulv( player.camera, (v3f){0.0f,0.0f,-5.0f}, ball1.co ); v3_zero( ball1.v ); v3_zero( ball1.w ); } - if(glfwGetKey( vg_window, GLFW_KEY_H )) + if(glfwGetKey( vg.window, GLFW_KEY_H )) { reorg_jeffs(); } diff --git a/player.h b/player.h index f03747a..5dd9401 100644 --- a/player.h +++ b/player.h @@ -1,10 +1,5 @@ /* - * Copyright 2021-2022 (C) Mount0 Software, Harry Godden - All Rights Reserved - * ----------------------------------------------------------------------------- - * - * Player head module - * - * ----------------------------------------------------------------------------- + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved */ #ifndef PLAYER_H diff --git a/player_animation.h b/player_animation.h index 02b4d25..94664f7 100644 --- a/player_animation.h +++ b/player_animation.h @@ -1,3 +1,7 @@ +/* + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved + */ + #ifndef PLAYER_ANIMATION_H #define PLAYER_ANIMATION_H diff --git a/player_audio.h b/player_audio.h index 3071af3..f46d670 100644 --- a/player_audio.h +++ b/player_audio.h @@ -1,10 +1,5 @@ /* - * Copyright 2021-2022 (C) Mount0 Software, Harry Godden - All Rights Reserved - * ----------------------------------------------------------------------------- - * - * Player audio - * - * ----------------------------------------------------------------------------- + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved */ #ifndef PLAYER_AUDIO_H diff --git a/player_model.h b/player_model.h index 97b4768..20e5c0a 100644 --- a/player_model.h +++ b/player_model.h @@ -1,5 +1,5 @@ /* - * Copyright 2021-2022 (C) Mount0 Software, Harry Godden - All Rights Reserved + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved */ #ifndef CHARACTER_H diff --git a/player_physics.h b/player_physics.h index ebcb55e..f71568b 100644 --- a/player_physics.h +++ b/player_physics.h @@ -1,11 +1,5 @@ /* - * Copyright 2021-2022 (C) Mount0 Software, Harry Godden - All Rights Reserved - * ----------------------------------------------------------------------------- - * - * Player physics and control submodule - * contains main physics models, input, and player control. - * - * ----------------------------------------------------------------------------- + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved */ #ifndef PLAYER_PHYSICS_H diff --git a/player_walkgrid.h b/player_walkgrid.h index 937c305..b2fff82 100644 --- a/player_walkgrid.h +++ b/player_walkgrid.h @@ -1,3 +1,7 @@ +/* + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved + */ + #ifndef PLAYER_WALKGRID_H #define PLAYER_WALKGRID_H @@ -585,7 +589,7 @@ static void player_walkgrid_stand_cell(struct walkgrid *wg) v3f world; world[0] = wg->region[0][0]+((float)wg->cell_id[0]+wg->pos[0])*k_gridscale; - world[1] = player.rb.co[1]; + world[1] = player.phys.rb.co[1]; world[2] = wg->region[0][2]+((float)wg->cell_id[1]+wg->pos[1])*k_gridscale; struct grid_sample *corners[4]; @@ -721,7 +725,7 @@ static void player_walkgrid_stand_cell(struct walkgrid *wg) } } - v3_copy( world, player.rb.co ); + v3_copy( world, player.phys.rb.co ); } static void player_walkgrid_getsurface(void) @@ -734,7 +738,7 @@ static void player_walkgrid_getsurface(void) static struct walkgrid wg; v3f cell; - v3_copy( player.rb.co, cell ); + v3_copy( player.phys.rb.co, cell ); player_walkgrid_floor( cell ); v3_muladds( cell, (v3f){-1.0f,-1.0f,-1.0f}, k_region_size, wg.region[0] ); @@ -751,14 +755,14 @@ static void player_walkgrid_getsurface(void) /* Temp */ if( !vg_console_enabled() ) { - if( glfwGetKey( vg_window, GLFW_KEY_W ) ) + if( glfwGetKey( vg.window, GLFW_KEY_W ) ) v3_muladds( delta, fwd, ktimestep*k_walkspeed, delta ); - if( glfwGetKey( vg_window, GLFW_KEY_S ) ) + if( glfwGetKey( vg.window, GLFW_KEY_S ) ) v3_muladds( delta, fwd, -ktimestep*k_walkspeed, delta ); - if( glfwGetKey( vg_window, GLFW_KEY_A ) ) + if( glfwGetKey( vg.window, GLFW_KEY_A ) ) v3_muladds( delta, side, -ktimestep*k_walkspeed, delta ); - if( glfwGetKey( vg_window, GLFW_KEY_D ) ) + if( glfwGetKey( vg.window, GLFW_KEY_D ) ) v3_muladds( delta, side, ktimestep*k_walkspeed, delta ); v3_muladds( delta, fwd, @@ -776,8 +780,8 @@ static void player_walkgrid_getsurface(void) v2f region_pos = { - (player.rb.co[0] - wg.region[0][0]) * (1.0f/k_gridscale), - (player.rb.co[2] - wg.region[0][2]) * (1.0f/k_gridscale) + (player.phys.rb.co[0] - wg.region[0][0]) * (1.0f/k_gridscale), + (player.phys.rb.co[2] - wg.region[0][2]) * (1.0f/k_gridscale) }; v2f region_cell_pos; v2_floor( region_pos, region_cell_pos ); @@ -955,9 +959,9 @@ static void player_walkgrid(void) { player_walkgrid_getsurface(); - m4x3_mulv( player.rb.to_world, (v3f){0.0f,1.8f,0.0f}, player.camera_pos ); + m4x3_mulv(player.phys.rb.to_world, (v3f){0.0f,1.8f,0.0f}, player.camera_pos); player_mouseview(); - rb_update_transform( &player.rb ); + rb_update_transform( &player.phys.rb ); } #endif /* PLAYER_WALKGRID_H */ diff --git a/ragdoll.h b/ragdoll.h deleted file mode 100644 index fa51b6c..0000000 --- a/ragdoll.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef RAGDOLL_H -#define RAGDOLL_H - -#include "vg/vg.h" -#include "scene.h" - - - -#endif diff --git a/render.h b/render.h index cac188d..a00c209 100644 --- a/render.h +++ b/render.h @@ -1,3 +1,7 @@ +/* + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved + */ + #include "common.h" #include "model.h" diff --git a/rigidbody.h b/rigidbody.h index 0a95bdd..a327488 100644 --- a/rigidbody.h +++ b/rigidbody.h @@ -1,3 +1,7 @@ +/* + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved + */ + /* * Resources: Box2D - Erin Catto * qu3e - Randy Gaul diff --git a/road.h b/road.h deleted file mode 100644 index bb4f5f6..0000000 --- a/road.h +++ /dev/null @@ -1,275 +0,0 @@ -float const k_road_width = 4.0f; - -#define ROAD_PATCH_NODES 1024 -#define ROAD_SEGMENT_VERTICES 8 -#define ROAD_SEGMENT_INDICES ((3*2)*5) -#define ROAD_INDEX_BUFFER_SIZE (ROAD_SEGMENT_INDICES * (ROAD_PATCH_NODES-2)) -#define ROAD_RENDER_DIST 12 -#define ROAD_RENDER_DIST_INDICES (ROAD_SEGMENT_INDICES*ROAD_RENDER_DIST) - -typedef struct road_node -{ - v3f pos, - side, - fwd; - -} road_node; - -typedef struct road_patch -{ - road_node nodes[ ROAD_PATCH_NODES ]; - - int active_id; - road_node *active; -} -road_patch; - -static void road_get_range( road_patch *road, int range, int *start, int *end ) -{ - *start = VG_MIN( VG_MAX( 0, road->active_id-range ), ROAD_PATCH_NODES-2 ); - *end = VG_MIN( VG_MAX( 0, road->active_id+range ), ROAD_PATCH_NODES-2 ); -} - -static int test_edge_with_norm( v3f p0, v3f p1, v3f norm, v3f p ) -{ - v3f edge, edge_norm, v1; - - v3_sub( p1, p0, edge ); - v3_cross( edge, norm, edge_norm ); - v3_sub( p0, p, v1 ); - - if( v3_dot( edge_norm, v1 ) > 0.0f ) - { - vg_line( p0, p1, 0xff0000ff ); - return 0; - } - else - { - vg_line( p0, p1, 0xff00ff00 ); - return 1; - } -} - -static int patch_seg_test_inside( road_node *node, v3f p ) -{ - road_node *next = node + 1; - - v3f norm, - sa, sb, sc, sd; - - v3_muls( node->side, -k_road_width, sa ); - v3_add( node->pos, sa, sa ); - - v3_muls( next->side, -k_road_width, sb ); - v3_add( next->pos, sb, sb ); - - v3_muls( next->side, k_road_width, sc ); - v3_add( next->pos, sc, sc ); - - v3_muls( node->side, k_road_width, sd ); - v3_add( node->pos, sd, sd ); - - v3_cross( node->side, node->fwd, norm ); - - if( !test_edge_with_norm( sa, sb, norm, p ) ) return 0; - if( !test_edge_with_norm( sb, sc, norm, p ) ) return 0; - if( !test_edge_with_norm( sc, sd, norm, p ) ) return 0; - if( !test_edge_with_norm( sd, sa, norm, p ) ) return 0; - - return 1; -} - -static void road_patch_setplayer( road_patch *road, v3f pos ) -{ - int idx_start, idx_end; - road_get_range( road, ROAD_RENDER_DIST, &idx_start, &idx_end ); - - for( int i = idx_start; i < idx_end; i ++ ) - { - if( patch_seg_test_inside( road->nodes + i, pos ) ) - { - road->active_id = i; - road->active = road->nodes + i; - return; - } - } -} - -static void road_patch_init( road_patch *road ) -{ - road->active = road->nodes + road->active_id; -} - -static void road_generate( road_patch *road ) -{ - v3f dir_fwd = { 1.0f, 0.0f, 0.0f }, - dir_up = { 0.0f, 1.0f, 0.0f }, - dir_side = { 0.0f, 0.0f, 1.0f }, - current_point = { 0.0f, 0.0f, 0.0f }; - - float current_rotation_amt = 0.0f, - current_pitch_amt = -0.2f, - current_roll_amt = 0.00f; - - for( int i = 0; i < ROAD_PATCH_NODES; i ++ ) - { - road_node *node = road->nodes + i; - - if( (float)rand()/(float)(RAND_MAX) < 0.3f ) - { - current_rotation_amt = (float)rand()/(float)(RAND_MAX)*0.6f-0.3f; - current_pitch_amt = (float)rand()/(float)(RAND_MAX)*0.03f-0.015f; - } - - v3_rotate( dir_up, current_roll_amt, dir_fwd, dir_up ); - v3_cross( dir_fwd, dir_up, dir_side ); - dir_side[1] = 0.0f; - - v3_rotate( dir_fwd, current_rotation_amt, (v3f){0.f, 1.f, 0.f}, dir_fwd ); - v3_rotate( dir_fwd, current_pitch_amt, dir_side, dir_fwd ); - v3_rotate( dir_up, current_pitch_amt, dir_side, dir_up ); - - v3_muladds( current_point, dir_fwd, 7.0f, current_point ); - - v3_copy( current_point, node->pos ); - v3_copy( dir_side, node->side ); - v3_copy( dir_fwd, node->fwd ); - current_pitch_amt = 0.f; - - node->pos[1] += (float)rand()/(float)(RAND_MAX)*0.2f; - } - - road->active_id = 0; -} - -void draw_road_patch_dev( road_patch *road ) -{ - v3f dir; - v3f norm; - v3f p0 = { 0.0f, 0.0f, 0.0f }, p1 = { 0.0f, 0.0f, 0.0f }; - v3f p2; v3f p3; - - for( int i = 0; i < ROAD_PATCH_NODES-1; i ++ ) - { - road_node *node = &road->nodes[i]; - road_node *next = &road->nodes[i+1]; - - vg_line( node->pos, next->pos, 0x55ffcc22 ); - - // Get line dir - v3_sub( next->pos, node->pos, dir ); - v3_normalize( dir ); - -#if 0 - // Perpendicular vector - norm[0] = -dir[2]; - norm[1] = 0.f; - norm[2] = dir[0]; -#endif - - v3_muls( node->side, k_road_width, p2 ); - v3_add( p2, node->pos, p2 ); - v3_muls( node->side, -k_road_width, p3 ); - v3_add( p3, node->pos, p3 ); - - vg_line( p3, p1, 0xccffcc22 ); - vg_line( p2, p0, 0xccffcc22 ); - - v3_copy( p3, p1 ); - v3_copy( p2, p0 ); - } -} - -static void sample_road( road_patch *patch, v3f pos ) -{ - v3f v1, norm; - v3_sub( patch->active->pos, pos, v1 ); - v3_cross( patch->active->side, patch->active->fwd, norm ); - - float d = v3_dot( norm, v1 ); - v3_muladds( pos, norm, d, pos ); -} - -static int triangle_raycast( v3f pA, v3f pB, v3f pC, v3f ray, float *height ) -{ - v2f v0, v1, v2, vp, vp2; - float d, bca = 0.f, bcb = 0.f, bcc = 0.f; - - v0[0] = pB[0] - pA[0]; - v0[1] = pB[2] - pA[2]; - v1[0] = pC[0] - pA[0]; - v1[1] = pC[2] - pA[2]; - v2[0] = pB[0] - pC[0]; - v2[1] = pB[2] - pC[2]; - - d = 1.f / (v0[0]*v1[1] - v1[0]*v0[1]); - -#if 0 - /* Backface culling */ - if( v2_cross( v0, v1 ) > 0.f ) - return; -#endif - - vp[0] = ray[0] - pA[0]; - vp[1] = ray[2] - pA[2]; - - if( v2_cross( v0, vp ) > 0.f ) return 0; - if( v2_cross( vp, v1 ) > 0.f ) return 0; - - vp2[0] = ray[0] - pB[0]; - vp2[1] = ray[2] - pB[2]; - - if( v2_cross( vp2, v2 ) > 0.f ) return 0; - - bcb = (vp[0]*v1[1] - v1[0]*vp[1]) * d; - bcc = (v0[0]*vp[1] - vp[0]*v0[1]) * d; - bca = 1.f - bcb - bcc; - - *height = pA[1]*bca + pB[1]*bcb + pC[1]*bcc; - return 1; -} - - -static int sample_road_height( road_patch *road, v3f pos ) -{ - v3f norm, - sa, sb, sc, sd; - - int idx_start, idx_end; - road_get_range( road, ROAD_RENDER_DIST, &idx_start, &idx_end ); - - for( int i = idx_start; i < idx_end; i ++ ) - { - road_node *node = &road->nodes[i], - *next = &road->nodes[i+1]; - - v3_muls( node->side, -k_road_width, sa ); - v3_add( node->pos, sa, sa ); - - v3_muls( next->side, -k_road_width, sb ); - v3_add( next->pos, sb, sb ); - - v3_muls( next->side, k_road_width, sc ); - v3_add( next->pos, sc, sc ); - - v3_muls( node->side, k_road_width, sd ); - v3_add( node->pos, sd, sd ); - - /* Triangle 1 */ - float height; - - if( triangle_raycast( sa, sc, sb, pos, &height ) ) - { - pos[1] = height; - return 1; - } - - if( triangle_raycast( sa, sd, sc, pos, &height ) ) - { - pos[1] = height; - return 1; - } - } - - return 0; -} diff --git a/scope.h b/scope.h deleted file mode 100644 index 8807ec9..0000000 --- a/scope.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Scope debugger thing */ -#include "vg/vg_ui.h" -#include "vg/vg_platform.h" - -static struct -{ - struct scope_log - { - ui_px buffer[128]; - } - logs[10]; - -} -dev_scope; - -static void scope_watch( const char *name, float value, float min, float max ) -{ - -} diff --git a/server.c b/server.c index 4f3ceb6..8225c6e 100644 --- a/server.c +++ b/server.c @@ -1,4 +1,6 @@ -/* Copyright (C) 2021-2022 Harry Godden (hgn) - All Rights Reserved */ +/* + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved + */ /* * This server application requires steamclient.so to be present in the @@ -43,14 +45,14 @@ static void recieve_http( void *callresult, void *context ) SteamAPI_ISteamHTTP_GetHTTPResponseBodySize( hSteamHTTP, request, &size ); - u8 *buffer = malloc( size ); + u8 *buffer = vg_alloc( size ); SteamAPI_ISteamHTTP_GetHTTPResponseBodyData( hSteamHTTP, request, buffer, size ); buffer[size-1] = '\0'; vg_info( "%s\n", (char *)buffer ); - free( buffer ); + vg_free( buffer ); SteamAPI_ISteamHTTP_ReleaseHTTPRequest( hSteamHTTP, result->m_hRequest ); } @@ -123,7 +125,7 @@ static void on_inet_auth( SteamNetworkingMessage_t *msg ) return; } - vg_log( "Attempting to verify user\n" ); + vg_low( "Attempting to verify user\n" ); if( msg->m_cbSize < sizeof(netmsg_auth) ) { diff --git a/shaders.sh b/shaders.sh index 9130269..b4b0f03 100755 --- a/shaders.sh +++ b/shaders.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (C) 2021-2022 Harry Godden (hgn) - All Rights Reserved +# Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved # # Shader header generator script which wraps vg's tool # Stores a list of shaders to build into -> .h files diff --git a/skeleton.h b/skeleton.h index 788bd19..78a0b56 100644 --- a/skeleton.h +++ b/skeleton.h @@ -1,5 +1,5 @@ /* - * Copyright (C) Mount0 Software, Harry Godden - All Rights Reserved + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved */ #ifndef SKELETON_H diff --git a/skeleton_animator.h b/skeleton_animator.h deleted file mode 100644 index 3077084..0000000 --- a/skeleton_animator.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef SKELETON_ANIMATOR_H -#define SKELETON_ANIMATOR_H - -#include "common.h" -#include "skeleton.h" - -#endif /* SKELETON_ANIMATOR_H */ diff --git a/sprites_autocombine.h b/sprites_autocombine.h deleted file mode 100644 index cb1229f..0000000 --- a/sprites_autocombine.h +++ /dev/null @@ -1,8 +0,0 @@ -enum sprites_auto_combine_index -{ - k_sprite_*, -}; - -static struct vg_sprite sprites_auto_combine[] = -{ -}; \ No newline at end of file diff --git a/steam.h b/steam.h index c0fb789..8720c08 100644 --- a/steam.h +++ b/steam.h @@ -1,3 +1,8 @@ +/* + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved + * All trademarks are property of their respective owners + */ + #ifndef STEAM_H #define STEAM_H diff --git a/terrain.h b/terrain.h deleted file mode 100644 index b5e7e53..0000000 --- a/terrain.h +++ /dev/null @@ -1,143 +0,0 @@ -#include "common.h" - -static void render_terrain(m4x4f projection, v3f camera); -static void render_sky(m4x3f camera); - -#if 0 -#ifndef TERRAIN_H -#define TERRAIN_H - -#include "model.h" -#include "render.h" -#include "water.h" - -#include "shaders/terrain.h" -#include "shaders/sky.h" -#include "shaders/planeinf.h" - -vg_tex2d tex_terrain_colours = { .path = "textures/gradients.qoi", - .flags = VG_TEXTURE_CLAMP | VG_TEXTURE_NEAREST -}; -vg_tex2d tex_terrain_noise = { .path = "textures/garbage.qoi", - .flags = VG_TEXTURE_NEAREST }; - -static struct -{ - glmesh skydome; - submodel dome_upper, - dome_lower; -} -trender; - -static void terrain_register(void) -{ - shader_terrain_register(); - shader_sky_register(); - shader_planeinf_register(); -} - -static void terrain_init(void) -{ - vg_tex2d_init( (vg_tex2d *[]){ &tex_terrain_colours, - &tex_terrain_noise }, 2 ); - - - model *msky = vg_asset_read("models/rs_skydome.mdl"); - model_unpack( msky, &trender.skydome ); - - trender.dome_lower = *submodel_get( msky, "dome_lower" ); - trender.dome_upper = *submodel_get( msky, "dome_upper" ); - - free(msky); -} - -static void bind_terrain_textures(void) -{ - vg_tex2d_bind( &tex_terrain_noise, 0 ); - vg_tex2d_bind( &tex_terrain_colours, 1 ); -} - -static void render_terrain(m4x4f projection, v3f camera) -{ - shader_terrain_use(); - shader_terrain_uTexGarbage(0); - shader_terrain_uTexGradients(1); - - vg_tex2d_bind( &tex_terrain_noise, 0 ); - vg_tex2d_bind( &tex_terrain_colours, 1 ); - - m4x3f identity_matrix; - m4x3_identity( identity_matrix ); - shader_terrain_uPv( projection ); - shader_terrain_uMdl( identity_matrix ); - shader_terrain_uCamera( camera ); - shader_terrain_uPlane( (v4f){ 0.0f,1.0f,0.0f, wrender.height } ); - - glActiveTexture( GL_TEXTURE2 ); - glBindTexture( GL_TEXTURE_2D, wrender.depthmap ); - shader_terrain_uTexDepth( 2 ); - shader_terrain_uDepthBounds( (v4f){ - wrender.depthbounds[0][0], - wrender.depthbounds[0][2], - 1.0f/ (wrender.depthbounds[1][0]-wrender.depthbounds[0][0]), - 1.0f/ (wrender.depthbounds[1][2]-wrender.depthbounds[0][2])} ); -} - -static void render_lowerdome( m4x3f camera ) -{ - m4x4f projection, full; - pipeline_projection( projection, 0.4f, 1000.0f ); - - m4x3f inverse; - m3x3_transpose( camera, inverse ); - v3_copy((v3f){0.0f,0.0f,0.0f}, inverse[3]); - m4x3_expand( inverse, full ); - m4x4_mul( projection, full, full ); - - m4x3f identity_matrix; - m4x3_identity( identity_matrix ); - - shader_planeinf_use(); - shader_planeinf_uMdl(identity_matrix); - shader_planeinf_uPv(full); - shader_planeinf_uCamera(camera[3]); - shader_planeinf_uPlane( (v4f){0.0f,1.0f,0.0f, water_height()} ); - - submodel_draw( &trender.dome_lower ); -} - -static void render_sky(m4x3f camera) -{ - m4x4f projection, full; - pipeline_projection( projection, 0.4f, 1000.0f ); - - m4x3f inverse; - m3x3_transpose( camera, inverse ); - v3_copy((v3f){0.0f,0.0f,0.0f}, inverse[3]); - m4x3_expand( inverse, full ); - m4x4_mul( projection, full, full ); - - m4x3f identity_matrix; - m4x3_identity( identity_matrix ); - - shader_sky_use(); - shader_sky_uMdl(identity_matrix); - shader_sky_uPv(full); - shader_sky_uTexGarbage(0); - shader_sky_uTime( vg_time ); - - - vg_tex2d_bind( &tex_terrain_noise, 0 ); - - glDepthMask(GL_FALSE); - glDisable(GL_DEPTH_TEST); - - mesh_bind( &trender.skydome ); - submodel_draw( &trender.dome_upper ); - - glEnable(GL_DEPTH_TEST); - glDepthMask(GL_TRUE); -} - -#endif -#endif diff --git a/testaa.c b/testaa.c deleted file mode 100644 index 0f2bd3b..0000000 --- a/testaa.c +++ /dev/null @@ -1,179 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#include "vg/vg_platform.h" -#include "vg/vg_stdint.h" -#include "vg/vg_store.h" -#include "vg/vg_io.h" -#include "vg/vg_m.h" - -#include "highscores.h" - -int main(int argc, const char *argv[]) -{ - vg_info( "Database test\n" ); - - if( !highscores_init( 200000, 100000 ) ) - return 0; - - srand(time(0)); - vg_log( "Inserting test records...\n" ); - for( int i=0; i<5000; i++ ) - { - highscore_record entry; - entry.trackid = vg_randf() * 138.0f; - entry.points = vg_randf() * 10000.0f; - entry.time = vg_randf() * 20000.0f; - entry.playerid = rand() % 800; - entry.datetime = vg_randf() * 100000.0f; - - highscores_push_record( &entry ); - } - - for( int i=0; i<800; i++ ) - { - char rando[10]; - - int l=2+rand()%8; - for( int i=0; imy_data ); -} - -static int yoyo_t_cmp( void *_a, void *_b ) -{ - yoyo_t *a = _a, *b = _b; - return b->my_data - a->my_data; -} - -int main(int argc, const char *argv[]) -{ - yoyo_t *allsorts = malloc( sizeof(yoyo_t) * 10000 ); - - aatree test; - test.base = allsorts; - test.offset = offsetof( yoyo_t, anode ); - test.stride = sizeof( yoyo_t ); - test.p_cmp = yoyo_t_cmp; - - for( int i=0; i<30; i++ ) vg_randf(); - - for( int j=0; j<1000; j++ ) - { - int spam_amt = 100; - aatree_ptr root = AATREE_PTR_NIL; - for( int i=0; imy_data = vg_randf() * 563.0f; - root = aatree_insert( &test, root, i ); - } - - int ln=0, err=0; - int drawting = 1; - aatree_show_counts( &test, root, 0, &ln, &err, yoyo_t_show, drawting ); - -#if 0 - int value = 3; - vg_info( "Ptr of %d: %u\n", value, aatree_find( &test, root, &value ) ); - - for( int i=0; i<20; i++ ) - { - yoyo_t *v = aatree_get_data(&test,aatree_kth( &test, root, i )); - vg_info( "Value of [%d]: %d\n", i, v->my_data ); - } -#endif - if( ln != spam_amt || err != 0 ) - { - vg_error( "ADJAWIUDWAJD\n" ); - break; - } - - aatree_ptr traverser = aatree_kth( &test, root, 0 ); - - while( traverser != AATREE_PTR_NIL ) - { - yoyo_t *v = aatree_get_data( &test, traverser ); - vg_info( "... %d\n", v->my_data ); - - traverser = aatree_next( &test, traverser ); - } - - int orig = spam_amt; - for( int i=0; i