From bae81b79d776400ad1bbd09f26ac60112ff2c109 Mon Sep 17 00:00:00 2001 From: Kp Date: Thu, 19 Nov 2015 03:23:34 +0000 Subject: [PATCH] Defer computing cloak_end_time --- similar/main/object.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/similar/main/object.cpp b/similar/main/object.cpp index 7341945cf..2e9d86db8 100644 --- a/similar/main/object.cpp +++ b/similar/main/object.cpp @@ -224,14 +224,13 @@ int Linear_tmap_polygon_objects = 1; #define CLOAK_FADEOUT_DURATION_ROBOT F1_0 //do special cloaked render -static void draw_cloaked_object(const vcobjptr_t obj, const g3s_lrgb light, glow_values_t glow, const fix64 cloak_start_time, const fix64 cloak_end_time, const fix Cloak_fadein_duration, const fix Cloak_fadeout_duration) +static void draw_cloaked_object(const vcobjptr_t obj, const g3s_lrgb light, glow_values_t glow, const fix64 cloak_start_time, const fix total_cloaked_time, const fix Cloak_fadein_duration, const fix Cloak_fadeout_duration) { - fix cloak_delta_time,total_cloaked_time; + fix cloak_delta_time; fix light_scale=F1_0; int cloak_value=0; int fading=0; //if true, fading, else cloaking - total_cloaked_time = cloak_end_time-cloak_start_time; cloak_delta_time = GameTime64 - cloak_start_time; if (cloak_delta_time < Cloak_fadein_duration/2) { @@ -252,7 +251,7 @@ static void draw_cloaked_object(const vcobjptr_t obj, const g3s_lrgb light, glow cloak_value = f2i(fixdiv(cloak_delta_time - Cloak_fadein_duration/2,Cloak_fadein_duration/2) * CLOAKED_FADE_LEVEL); #endif - } else if (GameTime64 < cloak_end_time-Cloak_fadeout_duration) { + } else if (GameTime64 < (cloak_start_time + total_cloaked_time) -Cloak_fadeout_duration) { static int cloak_delta=0,cloak_dir=1; static fix cloak_timer=0; @@ -272,7 +271,7 @@ static void draw_cloaked_object(const vcobjptr_t obj, const g3s_lrgb light, glow cloak_value = CLOAKED_FADE_LEVEL - cloak_delta; - } else if (GameTime64 < cloak_end_time-Cloak_fadeout_duration/2) { + } else if (GameTime64 < (cloak_start_time + total_cloaked_time) -Cloak_fadeout_duration/2) { #if defined(DXX_BUILD_DESCENT_I) cloak_value = f2i((total_cloaked_time - Cloak_fadeout_duration/2 - cloak_delta_time) * CLOAKED_FADE_LEVEL); @@ -423,19 +422,19 @@ static void draw_polygon_object(const vobjptridx_t obj) bm_ptrs); } else { - std::pair cloak_duration; + std::pair cloak_duration; std::pair cloak_fade; if (obj->type==OBJ_PLAYER && (obj->ctype.player_info.powerup_flags & PLAYER_FLAGS_CLOAKED)) { auto &cloak_time = obj->ctype.player_info.cloak_time; - cloak_duration = {cloak_time, cloak_time + CLOAK_TIME_MAX}; + cloak_duration = {cloak_time, CLOAK_TIME_MAX}; cloak_fade = {CLOAK_FADEIN_DURATION_PLAYER, CLOAK_FADEOUT_DURATION_PLAYER}; } else if ((obj->type == OBJ_ROBOT) && (obj->ctype.ai_info.CLOAKED)) { if (Robot_info[get_robot_id(obj)].boss_flag) - cloak_duration = {Boss_cloak_start_time, (Boss_cloak_start_time + Boss_cloak_duration)}; + cloak_duration = {Boss_cloak_start_time, Boss_cloak_duration}; else - cloak_duration = {GameTime64-F1_0*10, GameTime64+F1_0*10}; + cloak_duration = {GameTime64-F1_0*10, F1_0 * 20}; cloak_fade = {CLOAK_FADEIN_DURATION_ROBOT, CLOAK_FADEOUT_DURATION_ROBOT}; } else { alternate_textures alt_textures;