immediate mode fixes
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Fri, 9 Jul 2021 03:51:19 +0000 (22:51 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Fri, 9 Jul 2021 03:51:19 +0000 (22:51 -0500)
bin/onyx
modules/immediate_mode/immediate_renderer.onyx
src/onyxutils.c

index 93271ecc3c300e6e775c12c824c43e7e29473d84..a0ce0b3f2ce665d1fa3d8b719a717020dafa42c2 100755 (executable)
Binary files a/bin/onyx and b/bin/onyx differ
index 517f23c0039bf89aaf90d267acaa3e5efb4064c9..7eff08ad05b34acd43ab22f8ce5dcdfcb5573d53 100644 (file)
@@ -295,7 +295,7 @@ Immediate_Renderer :: struct {
         gl.useProgram(active_shader.program);
     }
 
-    push_scissor :: (use ir: ^Immediate_Renderer, x: f32, y: f32, w: f32, h: f32, intersect_previous := true) {
+    push_scissor :: (use ir: ^Immediate_Renderer, x: f32, y: f32, w: f32, h: f32) {
         if vertex_count > 0 do ir->flush();
 
         if !gl.isEnabled(gl.SCISSOR_TEST) {
@@ -313,7 +313,7 @@ Immediate_Renderer :: struct {
 
         array.push(^scissor_stack, .{ new_x0, new_y0, new_w, new_h });
 
-        gl.scissor(~~new_x0, window_height - ~~new_y0 - ~~new_h, ~~new_w, ~~new_h);
+        gl.scissor(~~new_x0, window_height - ~~new_y1, ~~new_w, ~~new_h);
     }
 
     pop_scissor :: (use ir: ^Immediate_Renderer) {
@@ -324,7 +324,7 @@ Immediate_Renderer :: struct {
         if scissor_stack.count > 0 {
             s := scissor_stack[scissor_stack.count - 1];
 
-            gl.scissor(~~s.x, ~~s.y, ~~s.w, ~~s.h);
+            gl.scissor(~~s.x, window_height - ~~s.y - ~~s.h, ~~s.w, ~~s.h);
 
         } else {
             ir->scissor_disable();
index 01b96e681d561ad17be40aa51a7f034b38b97ccf..6cad0d13a4964a52f30a26b6d4b7d5e67e3ff561 100644 (file)
@@ -1446,7 +1446,11 @@ b32 fill_in_arguments(Arguments* args, AstNode* provider, char** err_msg) {
                 return 0;
             }
 
-            assert(idx < bh_arr_length(args->values));
+            // assert(idx < bh_arr_length(args->values));
+            if (idx >= bh_arr_length(args->values)) {
+                token_toggle_end(named_value->token);
+                return 0;
+            }
 
             if (args->values[idx] != NULL && args->values[idx] != named_value->value) {
                 if (err_msg) *err_msg = bh_aprintf(global_scratch_allocator, "Multiple values given for parameter named '%s'.", named_value->token->text);