Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
d_kankyo.h File Reference

Go to the source code of this file.

Classes

struct  LIGHT_INFLUENCE
 
struct  WIND_INFLUENCE
 
struct  WIND_INF_ENTITY
 
struct  EFLIGHT_PROC
 
struct  SND_INFLUENCE
 
struct  DALKMIST_INFLUENCE
 
struct  DUNGEON_LIGHT
 
struct  BOSS_LIGHT
 
struct  GB_WIND_INFLUENCE
 
struct  EF_THUNDER
 
struct  GB_MAPLE_COL_CHANGE
 
struct  LightStatus
 
class  dKy_tevstr_c
 
struct  dKy_pol_arg_struct
 
struct  dKy_color_data_struct
 
struct  dKy_pol_efftbl_struct
 
struct  dKy_pol_effcol_struct
 
struct  dKy_pol_sound_struct
 
class  dScnKy_env_light_c
 

Enumerations

enum  dKy_LIGHT_SIZE { LIGHT_SIZE_S , LIGHT_SIZE_M , LIGHT_SIZE_L , LIGHT_SIZE_LL }
 
enum  dKy_dice_wether_mode {
  DICE_MODE_SUNNY_e , DICE_MODE_CLOUDY_e , DICE_MODE_RAIN_LIGHT_e , DICE_MODE_RAIN_HEAVY_e ,
  DICE_MODE_THUNDER_LIGHT_e , DICE_MODE_THUNDER_HEAVY_e , DICE_MODE_UNK6_e , DICE_MODE_DONE_e = 0xFF
}
 
enum  dKy_dice_wether_state { DICE_STATE_RESET_e , DICE_STATE_INIT_e , DICE_STATE_EXEC_e , DICE_STATE_NEXT_e }
 

Functions

 STATIC_ASSERT (sizeof(dKy_tevstr_c)==0x388)
 
 STATIC_ASSERT (sizeof(dScnKy_env_light_c)==4880)
 
dScnKy_env_light_cdKy_getEnvlight ()
 
void dKy_set_nexttime (f32 nexttime)
 
void dKy_itudemo_se ()
 
BOOL dKy_darkworld_spot_check (char const *stageName, int roomNo)
 Returns TRUE if a given room would be loaded in twilight. This function always behaves as if the player has not cleared any twilights.
 
void dKy_darkworld_Area_set (char const *stageName, int roomNo)
 
void dKy_FiveSenses_fullthrottle_dark ()
 
BOOL dKy_daynight_check ()
 
void dKy_clear_game_init ()
 
void dKy_setLight_init ()
 
u8 dKy_pol_sound_get (const cBgS_PolyInfo *polyinfo_p)
 
void dKy_depth_dist_set (void *process_p)
 
void dKy_instant_rainchg ()
 
void dKy_instant_timechg (f32 time)
 
void dKy_set_vrboxsoracol_ratio (f32 ratio)
 
void dKy_set_vrboxkumocol_ratio (f32 ratio)
 
void dKy_actor_addcol_set (s16 r, s16 g, s16 b, f32 ratio)
 
void dKy_fog_startendz_set (f32 param_0, f32 param_1, f32 ratio)
 
void dKy_vrbox_addcol_set (s16 r, s16 g, s16 b, f32 ratio)
 
void dKy_GxFog_set ()
 
u8 dKy_pol_argument_get (const cBgS_PolyInfo *polyinfo_p)
 
void dKy_Sound_set (cXyz pos, int param_1, fpc_ProcID actor_id, int timer)
 
void dKy_bg_MAxx_proc (void *bg_model_p)
 
void dKy_change_colpat (u8 colpat)
 
int dKy_BossLight_set (cXyz *pos_p, GXColor *color_p, f32 ref_dist, u8 param_3)
 
void dKy_custom_colset (u8 prevGather, u8 curGather, f32 blend)
 
void dKy_setLight ()
 
cXyz dKy_plight_near_pos ()
 
int dKy_BossSpotLight_set (cXyz *pos_p, f32 angle_x, f32 angle_y, f32 cutoff, GXColor *color_p, f32 ref_dist, u8 spot_type, u8 distattn_type)
 
void dKy_calc_color_set (GXColorS10 *out_color_p, color_RGB_class *color_a_start_p, color_RGB_class *color_b_start_p, color_RGB_class *color_a_end_p, color_RGB_class *color_b_end_p, f32 color_ratio, f32 blend_ratio, GXColorS10 add_col, f32 scale)
 
void dKy_twilight_camelight_set ()
 
u8 dKy_shadow_mode_check (u8 mode)
 
void dKy_shadow_mode_set (u8 mode)
 
void dKy_shadow_mode_reset (u8 mode)
 
void dKy_Itemgetcol_chg_on ()
 
void dKy_actor_addcol_amb_set (s16 r, s16 g, s16 b, f32 ratio)
 
void dKy_bg_addcol_amb_set (s16 r, s16 g, s16 b, f32 ratio)
 
int dKy_WolfEyeLight_set (cXyz *pos_p, f32 angle_x, f32 angle_y, f32 cutoff, GXColor *color_p, f32 ref_dist, u8 spot_type, u8 distattn_type)
 
BOOL dKy_TeachWind_existence_chk ()
 
u8 dKy_darkworld_stage_check (char const *stageName, int roomNo)
 Returns TRUE if (1) the room is one which can be loaded in twilight, (2) there is nothing currently preventing it from being loaded in twilight, and (3) the player has not cleared the relevant dark level (Faron Twilight, etc.). Otherwise returns FALSE.
 
BOOL dKy_withwarp_capture_check ()
 
bool dKy_darkworld_check ()
 
void dKy_undwater_filter_draw ()
 
BOOL dKy_camera_water_in_status_check ()
 
int dKy_Outdoor_check ()
 
int dKy_getdaytime_hour ()
 
int dKy_getdaytime_minute ()
 
int dKy_get_dayofweek ()
 
int dKy_getDarktime_minute ()
 
int dKy_getDarktime_hour ()
 
void dKy_Sound_init ()
 
void dKy_setLight_nowroom (char room_no)
 
void dKy_setLight_nowroom_actor (dKy_tevstr_c *tevstr_p)
 
void dKy_setLight_again ()
 
void dKy_GxFog_tevstr_set (dKy_tevstr_c *tevstr_p)
 
void dKy_plight_set (LIGHT_INFLUENCE *light_inf_p)
 
void dKy_plight_priority_set (LIGHT_INFLUENCE *light_inf_p)
 
void dKy_efplight_set (LIGHT_INFLUENCE *light_inf_p)
 
void dKy_efplight_cut (LIGHT_INFLUENCE *light_inf_p)
 
void dKy_tevstr_init (dKy_tevstr_c *tevstr_p, s8 room_no, u8 floorCol)
 
SND_INFLUENCEdKy_Sound_get ()
 
void dKy_plight_cut (LIGHT_INFLUENCE *light_inf_p)
 
void dKy_dalkmist_inf_set (DALKMIST_INFLUENCE *dalkmist_inf_p)
 
void dKy_dalkmist_inf_cut (DALKMIST_INFLUENCE *dalkmist_inf_p)
 
int dKy_rain_check ()
 
void dKy_set_allcol_ratio (f32 ratio)
 
void dKy_set_actcol_ratio (f32 ratio)
 
void dKy_set_bgcol_ratio (f32 ratio)
 
void dKy_set_fogcol_ratio (f32 ratio)
 
void dKy_set_vrboxcol_ratio (f32 ratio)
 
f32 dKy_get_parcent (f32 max, f32 min, f32 value)
 
void dKy_setLight_nowroom_grass (char room_no, f32 light_ratio)
 
void dKy_Global_amb_set (dKy_tevstr_c *tevstr_p)
 
u8 dKy_pol_eff_prim_get (const cBgS_PolyInfo *polyinfo_p, GXColor *out_color_p)
 
u8 dKy_pol_eff_env_get (const cBgS_PolyInfo *polyinfo_p, GXColor *out_color_p)
 
u8 dKy_pol_eff_alpha_get (const cBgS_PolyInfo *polyinfo_p)
 
f32 dKy_pol_eff_ratio_get (const cBgS_PolyInfo *polyinfo_p)
 
u8 dKy_pol_eff2_prim_get (const cBgS_PolyInfo *polyinfo_p, GXColor *out_color_p)
 
u8 dKy_pol_eff2_env_get (const cBgS_PolyInfo *polyinfo_p, GXColor *out_color_p)
 
u8 dKy_pol_eff2_alpha_get (const cBgS_PolyInfo *polyinfo_p)
 
f32 dKy_pol_eff2_ratio_get (const cBgS_PolyInfo *polyinfo_p)
 
u8 dKy_pol_efftype_get (const cBgS_PolyInfo *polyinfo_p)
 
u8 dKy_pol_efftype2_get (const cBgS_PolyInfo *polyinfo_p)
 
void dKy_ParticleColor_get_actor (cXyz *param_0, dKy_tevstr_c *tevstr_p, GXColor *param_2, GXColor *param_3, GXColor *param_4, GXColor *param_5, f32 param_6)
 
void dKy_ParticleColor_get_bg (cXyz *param_0, dKy_tevstr_c *tevstr_p, GXColor *param_2, GXColor *param_3, GXColor *param_4, GXColor *param_5, f32 param_6)
 
GXColor dKy_light_influence_col (GXColor *param_0, f32 param_1)
 
void dKy_WaterIn_Light_set ()
 
void dKy_SordFlush_set (cXyz light_pos, int light_type)
 
void dKy_camera_water_in_status_set (u8 status)
 
void dKy_mock_light_every_set (LIGHT_INFLUENCE *light_inf_p)
 
f32 dKy_move_room_ratio (dKy_tevstr_c *tevstr_p, s8 *room_no_p)
 
void dKy_bg1_addcol_amb_set (s16 r, s16 g, s16 b, f32 factor)
 
void dKy_vrbox_addcol_sky0_set (s16 r, s16 g, s16 b, f32 factor)
 
void dKy_vrbox_addcol_kasumi_set (s16 r, s16 g, s16 b, f32 factor)
 
void dKy_addcol_fog_set (s16 r, s16 g, s16 b, f32 factor)
 
cXyz dKy_light_influence_pos (int light_id)
 
BOOL dKy_SunMoon_Light_Check ()
 
void dKy_bgparts_activelight_set (LIGHT_INFLUENCE *light_inf_p, int bgpart_id)
 
void dKy_bgparts_activelight_cut (int bgpart_id)
 
int dKy_Indoor_check ()
 

Variables

dScnKy_env_light_c g_env_light
 

Enumeration Type Documentation

◆ dKy_dice_wether_mode

Enumerator
DICE_MODE_SUNNY_e 
DICE_MODE_CLOUDY_e 
DICE_MODE_RAIN_LIGHT_e 
DICE_MODE_RAIN_HEAVY_e 
DICE_MODE_THUNDER_LIGHT_e 
DICE_MODE_THUNDER_HEAVY_e 
DICE_MODE_UNK6_e 
DICE_MODE_DONE_e 

◆ dKy_dice_wether_state

Enumerator
DICE_STATE_RESET_e 
DICE_STATE_INIT_e 
DICE_STATE_EXEC_e 
DICE_STATE_NEXT_e 

◆ dKy_LIGHT_SIZE

Enumerator
LIGHT_SIZE_S 
LIGHT_SIZE_M 
LIGHT_SIZE_L 
LIGHT_SIZE_LL 

Function Documentation

◆ dKy_actor_addcol_amb_set()

void dKy_actor_addcol_amb_set ( s16  r,
s16  g,
s16  b,
f32  ratio 
)

◆ dKy_actor_addcol_set()

void dKy_actor_addcol_set ( s16  r,
s16  g,
s16  b,
f32  ratio 
)

◆ dKy_addcol_fog_set()

void dKy_addcol_fog_set ( s16  r,
s16  g,
s16  b,
f32  factor 
)

◆ dKy_bg1_addcol_amb_set()

void dKy_bg1_addcol_amb_set ( s16  r,
s16  g,
s16  b,
f32  factor 
)

◆ dKy_bg_addcol_amb_set()

void dKy_bg_addcol_amb_set ( s16  r,
s16  g,
s16  b,
f32  ratio 
)

◆ dKy_bg_MAxx_proc()

void dKy_bg_MAxx_proc ( void bg_model_p)

◆ dKy_bgparts_activelight_cut()

void dKy_bgparts_activelight_cut ( int  bgpart_id)

◆ dKy_bgparts_activelight_set()

void dKy_bgparts_activelight_set ( LIGHT_INFLUENCE light_inf_p,
int  bgpart_id 
)

◆ dKy_BossLight_set()

int dKy_BossLight_set ( cXyz pos_p,
GXColor color_p,
f32  ref_dist,
u8  param_3 
)

◆ dKy_BossSpotLight_set()

int dKy_BossSpotLight_set ( cXyz pos_p,
f32  angle_x,
f32  angle_y,
f32  cutoff,
GXColor color_p,
f32  ref_dist,
u8  spot_type,
u8  distattn_type 
)

◆ dKy_calc_color_set()

void dKy_calc_color_set ( GXColorS10 out_color_p,
color_RGB_class color_a_start_p,
color_RGB_class color_b_start_p,
color_RGB_class color_a_end_p,
color_RGB_class color_b_end_p,
f32  color_ratio,
f32  blend_ratio,
GXColorS10  add_col,
f32  scale 
)

◆ dKy_camera_water_in_status_check()

BOOL dKy_camera_water_in_status_check ( )

◆ dKy_camera_water_in_status_set()

void dKy_camera_water_in_status_set ( u8  status)

◆ dKy_change_colpat()

void dKy_change_colpat ( u8  colpat)

◆ dKy_clear_game_init()

void dKy_clear_game_init ( )

◆ dKy_custom_colset()

void dKy_custom_colset ( u8  prevGather,
u8  curGather,
f32  blend 
)

◆ dKy_dalkmist_inf_cut()

void dKy_dalkmist_inf_cut ( DALKMIST_INFLUENCE dalkmist_inf_p)

◆ dKy_dalkmist_inf_set()

void dKy_dalkmist_inf_set ( DALKMIST_INFLUENCE dalkmist_inf_p)

◆ dKy_darkworld_Area_set()

void dKy_darkworld_Area_set ( char const stageName,
int  roomNo 
)

◆ dKy_darkworld_check()

bool dKy_darkworld_check ( )

◆ dKy_darkworld_spot_check()

BOOL dKy_darkworld_spot_check ( char const stageName,
int  roomNo 
)

Returns TRUE if a given room would be loaded in twilight. This function always behaves as if the player has not cleared any twilights.

For example, Eldin Field will always return TRUE. Faron Woods on the other hand might return TRUE or FALSE depending on whether or not the player has completed Ordon Day 2.

Parameters
stageNamestage name
roomNoroom number
Returns
BOOL Returns TRUE if a given room would be loaded in twilight. This function always behaves as if the player has not cleared any twilights.

◆ dKy_darkworld_stage_check()

u8 dKy_darkworld_stage_check ( char const stageName,
int  roomNo 
)

Returns TRUE if (1) the room is one which can be loaded in twilight, (2) there is nothing currently preventing it from being loaded in twilight, and (3) the player has not cleared the relevant dark level (Faron Twilight, etc.). Otherwise returns FALSE.

Parameters
stageNamestage name
roomNoroom number
Returns
BOOL Returns TRUE if the room can be loaded as twilight and the player has not already cleared it, else FALSE.

◆ dKy_daynight_check()

BOOL dKy_daynight_check ( )

◆ dKy_depth_dist_set()

void dKy_depth_dist_set ( void process_p)

◆ dKy_efplight_cut()

void dKy_efplight_cut ( LIGHT_INFLUENCE light_inf_p)

◆ dKy_efplight_set()

void dKy_efplight_set ( LIGHT_INFLUENCE light_inf_p)

◆ dKy_FiveSenses_fullthrottle_dark()

void dKy_FiveSenses_fullthrottle_dark ( )

◆ dKy_fog_startendz_set()

void dKy_fog_startendz_set ( f32  param_0,
f32  param_1,
f32  ratio 
)

◆ dKy_get_dayofweek()

int dKy_get_dayofweek ( )

◆ dKy_get_parcent()

f32 dKy_get_parcent ( f32  max,
f32  min,
f32  value 
)

◆ dKy_getDarktime_hour()

int dKy_getDarktime_hour ( )

◆ dKy_getDarktime_minute()

int dKy_getDarktime_minute ( )

◆ dKy_getdaytime_hour()

int dKy_getdaytime_hour ( )

◆ dKy_getdaytime_minute()

int dKy_getdaytime_minute ( )

◆ dKy_getEnvlight()

dScnKy_env_light_c * dKy_getEnvlight ( )
inline

◆ dKy_Global_amb_set()

void dKy_Global_amb_set ( dKy_tevstr_c tevstr_p)

◆ dKy_GxFog_set()

void dKy_GxFog_set ( )

◆ dKy_GxFog_tevstr_set()

void dKy_GxFog_tevstr_set ( dKy_tevstr_c tevstr_p)

◆ dKy_Indoor_check()

int dKy_Indoor_check ( )

◆ dKy_instant_rainchg()

void dKy_instant_rainchg ( )

◆ dKy_instant_timechg()

void dKy_instant_timechg ( f32  time)

◆ dKy_Itemgetcol_chg_on()

void dKy_Itemgetcol_chg_on ( )

◆ dKy_itudemo_se()

void dKy_itudemo_se ( )

◆ dKy_light_influence_col()

GXColor dKy_light_influence_col ( GXColor param_0,
f32  param_1 
)

◆ dKy_light_influence_pos()

cXyz dKy_light_influence_pos ( int  light_id)

◆ dKy_mock_light_every_set()

void dKy_mock_light_every_set ( LIGHT_INFLUENCE light_inf_p)

◆ dKy_move_room_ratio()

f32 dKy_move_room_ratio ( dKy_tevstr_c tevstr_p,
s8 room_no_p 
)

◆ dKy_Outdoor_check()

int dKy_Outdoor_check ( )

◆ dKy_ParticleColor_get_actor()

void dKy_ParticleColor_get_actor ( cXyz param_0,
dKy_tevstr_c tevstr_p,
GXColor param_2,
GXColor param_3,
GXColor param_4,
GXColor param_5,
f32  param_6 
)

◆ dKy_ParticleColor_get_bg()

void dKy_ParticleColor_get_bg ( cXyz param_0,
dKy_tevstr_c tevstr_p,
GXColor param_2,
GXColor param_3,
GXColor param_4,
GXColor param_5,
f32  param_6 
)

◆ dKy_plight_cut()

void dKy_plight_cut ( LIGHT_INFLUENCE light_inf_p)

◆ dKy_plight_near_pos()

cXyz dKy_plight_near_pos ( )

◆ dKy_plight_priority_set()

void dKy_plight_priority_set ( LIGHT_INFLUENCE light_inf_p)

◆ dKy_plight_set()

void dKy_plight_set ( LIGHT_INFLUENCE light_inf_p)

◆ dKy_pol_argument_get()

u8 dKy_pol_argument_get ( const cBgS_PolyInfo polyinfo_p)

◆ dKy_pol_eff2_alpha_get()

u8 dKy_pol_eff2_alpha_get ( const cBgS_PolyInfo polyinfo_p)

◆ dKy_pol_eff2_env_get()

u8 dKy_pol_eff2_env_get ( const cBgS_PolyInfo polyinfo_p,
GXColor out_color_p 
)

◆ dKy_pol_eff2_prim_get()

u8 dKy_pol_eff2_prim_get ( const cBgS_PolyInfo polyinfo_p,
GXColor out_color_p 
)

◆ dKy_pol_eff2_ratio_get()

f32 dKy_pol_eff2_ratio_get ( const cBgS_PolyInfo polyinfo_p)

◆ dKy_pol_eff_alpha_get()

u8 dKy_pol_eff_alpha_get ( const cBgS_PolyInfo polyinfo_p)

◆ dKy_pol_eff_env_get()

u8 dKy_pol_eff_env_get ( const cBgS_PolyInfo polyinfo_p,
GXColor out_color_p 
)

◆ dKy_pol_eff_prim_get()

u8 dKy_pol_eff_prim_get ( const cBgS_PolyInfo polyinfo_p,
GXColor out_color_p 
)

◆ dKy_pol_eff_ratio_get()

f32 dKy_pol_eff_ratio_get ( const cBgS_PolyInfo polyinfo_p)

◆ dKy_pol_efftype2_get()

u8 dKy_pol_efftype2_get ( const cBgS_PolyInfo polyinfo_p)

◆ dKy_pol_efftype_get()

u8 dKy_pol_efftype_get ( const cBgS_PolyInfo polyinfo_p)

◆ dKy_pol_sound_get()

u8 dKy_pol_sound_get ( const cBgS_PolyInfo polyinfo_p)

◆ dKy_rain_check()

int dKy_rain_check ( )

◆ dKy_set_actcol_ratio()

void dKy_set_actcol_ratio ( f32  ratio)

◆ dKy_set_allcol_ratio()

void dKy_set_allcol_ratio ( f32  ratio)

◆ dKy_set_bgcol_ratio()

void dKy_set_bgcol_ratio ( f32  ratio)

◆ dKy_set_fogcol_ratio()

void dKy_set_fogcol_ratio ( f32  ratio)

◆ dKy_set_nexttime()

void dKy_set_nexttime ( f32  nexttime)

◆ dKy_set_vrboxcol_ratio()

void dKy_set_vrboxcol_ratio ( f32  ratio)

◆ dKy_set_vrboxkumocol_ratio()

void dKy_set_vrboxkumocol_ratio ( f32  ratio)

◆ dKy_set_vrboxsoracol_ratio()

void dKy_set_vrboxsoracol_ratio ( f32  ratio)

◆ dKy_setLight()

void dKy_setLight ( )

◆ dKy_setLight_again()

void dKy_setLight_again ( )

◆ dKy_setLight_init()

void dKy_setLight_init ( )

◆ dKy_setLight_nowroom()

void dKy_setLight_nowroom ( char  room_no)

◆ dKy_setLight_nowroom_actor()

void dKy_setLight_nowroom_actor ( dKy_tevstr_c tevstr_p)

◆ dKy_setLight_nowroom_grass()

void dKy_setLight_nowroom_grass ( char  room_no,
f32  light_ratio 
)

◆ dKy_shadow_mode_check()

u8 dKy_shadow_mode_check ( u8  mode)

◆ dKy_shadow_mode_reset()

void dKy_shadow_mode_reset ( u8  mode)

◆ dKy_shadow_mode_set()

void dKy_shadow_mode_set ( u8  mode)

◆ dKy_SordFlush_set()

void dKy_SordFlush_set ( cXyz  light_pos,
int  light_type 
)

◆ dKy_Sound_get()

SND_INFLUENCE * dKy_Sound_get ( )

◆ dKy_Sound_init()

void dKy_Sound_init ( )

◆ dKy_Sound_set()

void dKy_Sound_set ( cXyz  pos,
int  param_1,
fpc_ProcID  actor_id,
int  timer 
)

◆ dKy_SunMoon_Light_Check()

BOOL dKy_SunMoon_Light_Check ( )

◆ dKy_TeachWind_existence_chk()

BOOL dKy_TeachWind_existence_chk ( )

◆ dKy_tevstr_init()

void dKy_tevstr_init ( dKy_tevstr_c tevstr_p,
s8  room_no,
u8  floorCol 
)

◆ dKy_twilight_camelight_set()

void dKy_twilight_camelight_set ( )

◆ dKy_undwater_filter_draw()

void dKy_undwater_filter_draw ( )

◆ dKy_vrbox_addcol_kasumi_set()

void dKy_vrbox_addcol_kasumi_set ( s16  r,
s16  g,
s16  b,
f32  factor 
)

◆ dKy_vrbox_addcol_set()

void dKy_vrbox_addcol_set ( s16  r,
s16  g,
s16  b,
f32  ratio 
)

◆ dKy_vrbox_addcol_sky0_set()

void dKy_vrbox_addcol_sky0_set ( s16  r,
s16  g,
s16  b,
f32  factor 
)

◆ dKy_WaterIn_Light_set()

void dKy_WaterIn_Light_set ( )

◆ dKy_withwarp_capture_check()

BOOL dKy_withwarp_capture_check ( )

◆ dKy_WolfEyeLight_set()

int dKy_WolfEyeLight_set ( cXyz pos_p,
f32  angle_x,
f32  angle_y,
f32  cutoff,
GXColor color_p,
f32  ref_dist,
u8  spot_type,
u8  distattn_type 
)

◆ STATIC_ASSERT() [1/2]

STATIC_ASSERT ( sizeof(dKy_tevstr_c = =0x388)

◆ STATIC_ASSERT() [2/2]

STATIC_ASSERT ( sizeof(dScnKy_env_light_c = =4880)

Variable Documentation

◆ g_env_light

dScnKy_env_light_c g_env_light
extern