Exemple #1
0
 def from_gas_section(cls, section: Section):
     assert section.has_t_n_header()
     type_name, n = section.get_t_n_header()
     assert type_name in ['point', 'spot', 'directional']
     assert n.startswith('light_')
     light: Light = PointLight() if type_name == 'point' else SpotLight(
     ) if type_name == 'spot' else DirectionalLight()
     light.id = Hex.parse(n[6:])
     light.active = section.get_attr_value('active')
     light.affects_actors = section.get_attr_value('affects_actors')
     light.affects_items = section.get_attr_value('affects_items')
     light.affects_terrain = section.get_attr_value('affects_terrain')
     light.color = Color(section.get_attr_value('color'))
     light.draw_shadow = section.get_attr_value('draw_shadow')
     light.inner_radius = section.get_attr_value('inner_radius')
     light.intensity = section.get_attr_value('intensity')
     light.occlude_geometry = section.get_attr_value('occlude_geometry')
     light.on_timer = section.get_attr_value('on_timer')
     light.outer_radius = section.get_attr_value('outer_radius')
     if type_name in ['point', 'spot']:
         light.position = PosDir.from_gas_section(
             section.get_section('position'))
     if type_name in ['directional', 'spot']:
         light.direction = PosDir.from_gas_section(
             section.get_section('direction'))
     return light
Exemple #2
0
 def load_profiles(cls, parent_section: Section,
                   name) -> SingleProfile | ProfileVariants | None:
     profiles_section = parent_section.get_section(name)
     if profiles_section is None:
         return None
     profile_attr = profiles_section.get_attr('profile')
     if profile_attr is not None:
         profile_name = profile_attr.value
         return SingleProfile(profile_name)
     perlin_name = profiles_section.get_attr_value('perlin').strip()
     tx = profiles_section.get_attr_value('tx').strip()
     variant_a = cls.load_profiles(profiles_section, 'a')
     variant_b = cls.load_profiles(profiles_section, 'b')
     return ProfileVariants(variant_a, variant_b, perlin_name, tx)