def __setitem__(self, key, value): if 'material' in key: i = indexListItem(self.LIGHT_SOURCE, value, self.materialSourceVertex) if i >= 0: self.materialSourceVertex = i elif 'enable' in key: val = validBool(value) self.enabled = val elif 'ambient' in key: i = indexListItem(self.LIGHT_SOURCE, value, self.ambientSourceVertex) if i >= 0: self.ambientSourceVertex = i elif 'diffuse' in key: i = indexListItem(self.DIFFUSE_FUNCTION, value, self.diffuseFunction) if i >= 0: self.diffuseFunction = i elif 'attenuation' in key: try: i = indexListItem(self.ATTENUATION, value, self.attenuationFunction) if i >= 0: self.attenuationFunction = i if not self.attenuationEnabled: self.attenuationEnabled = True except ValueError: val = validBool(value) self.attenuationEnabled = val else: raise ValueError(LightChannel.LC_ERROR.format(key))
def setMagFilterStr(self, value): i = indexListItem(self.FILTER, value, self.magfilter) if i > 1: raise ValueError("MagFilter out of range (0-1)") elif i >= 0: self.minfilter = i self.mark_modified()
def setAnisotrophyStr(self, value): invalidI = False try: i = int(value) if i != 1 and i != 2 and i != 4: invalidI = True else: i -= 1 if i > 2: i = 2 except ValueError: i = indexListItem(self.ANISOTROPHY, value, self.max_anisotrophy) if invalidI: raise ValueError("Invalid: '" + value + "', Anisotrophy expects 1|2|4") if i >= 0 and i != self.max_anisotrophy: self.max_anisotrophy = i self.mark_modified()
def setProjectionStr(self, value): i = indexListItem(self.PROJECTION, value, self.projection) if i >= 0: self.projection = i self.mark_modified()
def setMinFilterStr(self, value): value = value.replace('_', '') i = indexListItem(self.FILTER, value, self.minfilter) if i >= 0: self.minfilter = i self.mark_modified()
def setVWrapStr(self, value): i = indexListItem(self.WRAP, value, self.vwrap) if i >= 0: self.vwrap = i self.mark_modified()
def set_comp1_str(self, str): i = indexListItem(self.COMP_STRINGS, str, self.comp1) if i >= 0: self.comp1 = i self.mark_modified()
def setCoordinatesStr(self, value): i = indexListItem(self.COORDINATES, value, self.coordinates) if i >= 0: self.coordinates = i self.mark_modified()
def set_u_wrap_str(self, value): i = indexListItem(self.WRAP, value, self.uwrap) if i >= 0: self.uwrap = i self.mark_modified()
def set_depth_function_str(self, str): i = indexListItem(self.COMP_STRINGS, str, self.depth_function) if i >= 0: self.depth_function = i self.mark_modified()
def set_blend_logic_str(self, str): i = indexListItem(self.BLLOGIC_STRINGS, str, self.blend_logic) if i >= 0: self.blend_logic = i self.mark_modified()
def set_blend_dest_str(self, str): i = indexListItem(self.BLFACTOR_STRINGS, str, self.blend_dest) if i >= 0: self.blend_dest = i self.mark_modified()
def set_blend_src_str(self, str): i = indexListItem(self.BLFACTOR_STRINGS, str, self.blend_source) if i >= 0: self.blend_source = i self.mark_modified()
def set_logic(self, str): i = indexListItem(self.LOGIC_STRINGS, str, self.logic) if i >= 0: self.logic = i self.mark_modified()
def setInputFormStr(self, value): i = indexListItem(self.INPUTFORM, value, self.inputform) if i >= 0: self.inputform = i self.mark_modified()
def setTypeStr(self, value): i = indexListItem(self.TYPE, value, self.type) if i >= 0: self.type = i self.mark_modified()
def set_str(self, key, value): s = self.SETTINGS if key == s[0]: self.set_enabled(validBool(value)) elif key == s[1]: self.set_map_id(validInt(value, 0, 7)) elif key == s[2]: self.set_coord_id(validInt(value, 0, 7)) elif key == s[3]: self.set_tex_swap_sel(validInt(value, 0, 4)) elif key == s[4]: if value == '0': self.set_raster_color(RASTER_ZERO) else: i = indexListItem(RASTER_COLORS, value) if i > 1: i += 3 self.set_raster_color(i) elif key == s[5]: self.set_raster_swap_sel(validInt(value, 0, 4)) elif key in s[6:8]: value = value.replace('constant', '') i = indexListItem(COLOR_CONSTANTS, value) if i > 7: i += 4 self.set_constant_color(i) elif key in s[8:12]: if value == '0': val = COLOR_SEL_NONE elif value == '1': val = COLOR_SEL_ONE elif value in ('0.5', '1/2'): val = COLOR_SEL_HALF else: val = indexListItem(COLOR_SELS, value) if key == s[8]: self.set_color_a(val) elif key == s[9]: self.set_color_b(val) elif key == s[10]: self.set_color_c(val) elif key == s[11]: self.set_color_d(val) elif key == s[12]: self.set_color_bias(indexListItem(BIAS, value)) elif key == s[13]: self.set_color_oper(indexListItem(OPER, value)) elif key == s[14]: self.set_color_clamp(validBool(value)) elif key in (s[15], s[26]): try: val = indexListItem(SCALE, value) except ValueError: f = validFloat(value, 0.5, 4) val = indexListItem(SCALEN, f) if key == s[15]: self.set_color_scale(val) elif key == s[26]: self.set_alpha_scale(val) elif key == s[16]: self.set_color_dest(indexListItem(COLOR_DEST, value)) elif key in s[17:19]: value = value.replace('constant', '') i = indexListItem(ALPHA_CONSTANTS, value) if i > 7: i += 8 self.set_constant_alpha(i) elif key in s[19:23]: if value == '0': val = ALPHA_SEL_NONE else: val = indexListItem(ALPHA_SELS, value) if key == s[19]: self.set_alpha_a(val) elif key == s[20]: self.set_alpha_b(val) elif key == s[21]: self.set_alpha_c(val) elif key == s[22]: self.set_alpha_d(val) elif key == s[23]: self.set_alpha_bias(indexListItem(BIAS, value)) elif key == s[24]: self.set_alpha_oper(indexListItem(OPER, value)) elif key == s[25]: self.set_alpha_clamp(validBool(value)) elif key == s[27]: self.set_alpha_dest(indexListItem(ALPHA_DEST, value)) elif key == s[28]: self.set_ind_stage(validInt(value, 0, 4)) elif key == s[29]: self.set_ind_format(indexListItem(TEX_FORMAT, value)) elif key == s[30]: self.set_ind_alpha(indexListItem(IND_ALPHA, value)) elif key == s[31]: self.set_ind_bias(indexListItem(IND_BIAS, value)) elif key == s[32]: if len(value) < 6: value = 'matrix' + value i = indexListItem(IND_MATRIX, value) if i > 3: i += 1 if i > 7: i += 1 self.set_ind_matrix(i) elif key == s[33]: self.set_s_wrap(indexListItem(WRAP, value)) elif key == s[34]: self.set_t_wrap(indexListItem(WRAP, value)) elif key == s[35]: self.set_ind_use_prev(validBool(value)) elif key == s[36]: self.set_ind_unmodified_lod(validBool(value))
def setMapmodeStr(self, value): i = indexListItem(self.MAPMODE, value, self.map_mode) if i >= 0: self.map_mode = i self.mark_modified()
def set_cull_mode_str(self, cullstr): cullstr = cullstr.replace('cull', '') i = indexListItem(self.CULL_STRINGS, cullstr, self.cullmode) if i >= 0 and self.cullmode != i: self.cullmode = i self.mark_modified()