From b6312b23debde6f08aae0b86ea1d103f04e3320d Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Fri, 29 Jan 2010 07:38:39 +0100 Subject: [PATCH] further optimizations... multi-cutting --- data/qcsrc/client/Main.qc | 16 ++++++++++++++-- data/qcsrc/client/miscfunctions.qc | 29 ++++++++++++++--------------- 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/data/qcsrc/client/Main.qc b/data/qcsrc/client/Main.qc index 6e5cd4586..280e13934 100644 --- a/data/qcsrc/client/Main.qc +++ b/data/qcsrc/client/Main.qc @@ -603,9 +603,21 @@ void GameCommand(string msg) fixedmakevectors((cutplane.angles = '0 90 0')); cutplane.movedir = v_forward; cutplane.enemy = spawn(); + cutplane.enemy.origin = e.origin + '16 0 8'; + fixedmakevectors((cutplane.enemy.angles = '45 90 0')); + cutplane.enemy.movedir = v_forward; + cutplane.enemy.aiment = spawn(); + cutplane.enemy.aiment.origin = '-64 0 -64'; + cutplane.enemy.enemy = spawn(); + cutplane.enemy.enemy.origin = '64 0 64'; cutplane.aiment = spawn(); - cutplane.enemy.origin = '16 0 8'; - cutplane.aiment.origin = '-16 0 -8'; + cutplane.aiment.origin = e.origin + '-16 -12 0'; + fixedmakevectors((cutplane.aiment.angles = '27 41 9')); + cutplane.aiment.movedir = v_forward; + cutplane.aiment.aiment = spawn(); + cutplane.aiment.aiment.origin = '-64 0 64'; + cutplane.aiment.enemy = spawn(); + cutplane.aiment.enemy.origin = '64 0 -64'; } else { diff --git a/data/qcsrc/client/miscfunctions.qc b/data/qcsrc/client/miscfunctions.qc index 5b3ca5690..377532515 100644 --- a/data/qcsrc/client/miscfunctions.qc +++ b/data/qcsrc/client/miscfunctions.qc @@ -530,14 +530,16 @@ void PolyDrawTriangle_Cut_Recursive(entity cutplanes, entity winding, string tex if(cutplanes.aiment) { cutplanes.aiment.sort_prev = cutplanes; - PolyDrawTriangle_Cut_Recursive(cutplanes.aiment, wf, tex); + if(wf.cnt >= 2) + PolyDrawTriangle_Cut_Recursive(cutplanes.aiment, wf, tex); if(wf != winding) FreeWinding(wf); } if(cutplanes.enemy) { cutplanes.enemy.sort_prev = cutplanes; - PolyDrawTriangle_Cut_Recursive(cutplanes.enemy, wb, tex); + if(wb.cnt >= 2) + PolyDrawTriangle_Cut_Recursive(cutplanes.enemy, wb, tex); if(wb != winding) FreeWinding(wb); } @@ -551,19 +553,16 @@ void PolyDrawTriangle_Cut_Recursive(entity cutplanes, entity winding, string tex R_PolygonVertex(PolyDraw_CutPlaneTransform(cutplanes, p.origin), p.texcoord, '1 1 1', 1); R_EndPolygon(); } - if(winding.cnt >= 2) - { - for(p = winding.sort_next; p != winding; p = p.sort_next) - if(p.winding_cutpoint) - { - edge = Pool_spawn(winding_pool); - edge.classname = "winding"; - edge.origin = p.origin; - edge.movedir = ((p.sort_next == winding) ? winding : p).sort_next.origin; - edge.sort_next = cutplanes.sort_next; - cutplanes.sort_next = edge; - } - } + for(p = winding.sort_next; p != winding; p = p.sort_next) + if(p.winding_cutpoint) + { + edge = Pool_spawn(winding_pool); + edge.classname = "winding"; + edge.origin = p.origin; + edge.movedir = ((p.sort_next == winding) ? winding : p).sort_next.origin; + edge.sort_next = cutplanes.sort_next; + cutplanes.sort_next = edge; + } } } void PolyDrawTriangle_Cut_Finish_Recursive(entity cutplanes, string tex, vector c, float a, float f) -- 2.39.2