public SBMusicPlaylistObject(FileRead fr = null, long curPos = 0, uint length = 0) { if (fr != null) { _sound_structure = new SoundStructure(fr); _segments = fr.read_uint32(); for (int i = 0; i < _segments; i++) { _segment_ids.Add(fr.read_uint32()); } _unk_double_1 = fr.read_double(); _unk_field64_1 = fr.read_uint64(); _tempo = fr.read_float(); _time_sig1 = fr.read_one_byte(); _time_sig2 = fr.read_one_byte(); _unk_field8_1 = fr.read_one_byte(); _unk_field32_1 = fr.read_uint32(); _transition_count = fr.read_uint32(); for (int i = 0; i < _transition_count; i++) { _transitions.Add(new MusicPlaylistObject_Transition(fr)); } _playlist_elements_count = fr.read_uint32(); uint element_count = (length - (uint)(fr.getPosition() - curPos)) / MusicPlaylistObject_PlaylistElement.SIZE; for (int i = 0; i < element_count; i++) { _playlist_elements.Add(new MusicPlaylistObject_PlaylistElement(fr)); } } }
public SBSoundObject(FileRead fr = null, long curPos = 0, uint length = 0) { if (fr != null) { _unk_field32_1 = fr.read_uint32(); _include_type = fr.read_uint32(); if (_include_type != SOUND_EMBEDED && _include_type != SOUND_STREAMED && _include_type != SOUND_PREFETCHED) { Console.WriteLine("SBSoundObject : Invalid include type"); _isSet = false; return; } _audio_id = fr.read_uint32(); _source_id = fr.read_uint32(); if (_include_type == SOUND_EMBEDED) { _offset = fr.read_uint32(); _size = fr.read_uint32(); } _sound_type = fr.read_one_byte(); if (_sound_type != SOUND_TYPE_SFX && _sound_type != SOUND_TYPE_VOICE) { Console.WriteLine("SBSoundObject : Invalid sound type"); _isSet = false; return; } _sound_structure = fr._file.ReadBytes((int)(length - (uint)(fr.getPosition() - curPos))); } }
public SBMusicTrackObject(FileRead fr = null, long curPos = 0, uint length = 0) { if (fr != null) { _unk_field32_1 = fr.read_uint32(); _unk_field32_2 = fr.read_uint32(); _unk_field32_3 = fr.read_uint32(); _id1 = fr.read_uint32(); if (_id1 > 0) { _id2 = fr.read_uint32(); _unk_field32_4 = fr.read_uint32(); _unk_field32_5 = fr.read_uint32(); _unk_field8_1 = fr.read_one_byte(); _id3 = fr.read_uint32(); _unk_field64_1 = fr.read_uint64(); _unk_field64_2 = fr.read_uint64(); _unk_field64_3 = fr.read_uint64(); _time_length = fr.read_double(); } uint remaining = (length - (uint)(fr.getPosition() - curPos)); if (remaining > 0) { _unk_data = fr._file.ReadBytes((int)remaining); } } }
public SBObject(FileRead fr = null) { if (fr != null) { _type = fr.read_one_byte(); _length = fr.read_uint32(); long curPos = fr.getPosition(); _id = fr.read_uint32(); if (_type == TYPE_SOUND) { _obj_so = new SBSoundObject(fr, curPos, _length); _current_obj = "SoundObject"; } else if (_type == TYPE_MUSIC_SEGMENT) { _obj_mso = new SBMusicSegmentObject(fr, curPos, _length); _current_obj = "MusicSegment"; } else if (_type == TYPE_MUSIC_TRACK) { _obj_mto = new SBMusicTrackObject(fr, curPos, _length); _current_obj = "MusicTrack"; } else if (_type == TYPE_MUSIC_PLAYLIST) { _obj_mpo = new SBMusicPlaylistObject(fr, curPos, _length); _current_obj = "MusicPlaylist"; } else { _obj_bytes = fr._file.ReadBytes((int)(_length - 4)); _current_obj = "String"; } if (fr.getPosition() - curPos != _length) { Console.WriteLine("SBOjbect : Invalid Object"); _isSet = false; return; } } }
public SBHeader(FileRead fr = null) { if (fr != null) { _head = fr.read_header(); if (_head != HEAD) { Console.WriteLine("Invalid head, program is down"); Environment.Exit(0); } _length = fr.read_uint32(); long curPos = fr.getPosition(); _version = fr.read_uint32(); if (_version != VERSION) { Console.Write("Invalid version"); Environment.Exit(0); } _id = fr.read_uint32(); _unk_field32_1 = fr.read_uint32(); _unk_field32_2 = fr.read_uint32(); uint remaining = _length - (uint)(fr.getPosition() - curPos); if (remaining > 0) { _unk_data = fr._file.ReadBytes((int)remaining); } else { _unk_data = null; } } }
public SBData(FileRead fr = null) { _data = new List <WEM>(); if (fr != null) { _head = fr.read_header(); if (_head != HEAD) { _head = ""; fr.seekPosition(-4, 1); _isSet = false; return; } _length = fr.read_uint32(); _offset = (uint)fr.getPosition(); } }
public SBMusicSegmentObject(FileRead fr = null, long curPos = 0, uint length = 0) { if (fr != null) { _sound_structure = new SoundStructure(fr); _children = fr.read_uint32(); for (int i = 0; i < _children; i++) { _child_ids.Add(fr.read_uint32()); } _unk_double_1 = fr.read_double(); _unk_field64_1 = fr.read_uint64(); _tempo = fr.read_float(); _time_sig1 = fr.read_one_byte(); _time_sig2 = fr.read_one_byte(); _unk_field32_1 = fr.read_uint32(); _unk_field8_1 = fr.read_one_byte(); _time_length = fr.read_double(); _unk_field32_2 = fr.read_uint32(); _unk_field32_3 = fr.read_uint32(); _unk_field64_2 = fr.read_uint64(); _unk_field32_4 = fr.read_uint32(); _unk_field32_5 = fr.read_uint32(); _time_length_next = fr.read_double(); _unk_field32_6 = fr.read_uint32(); uint remaining = (length - (uint)(fr.getPosition() - curPos)); if (remaining > 0) { _unk_data = fr._file.ReadBytes((int)remaining); } else { _unk_data = null; } } }
public SoundStructure(FileRead fr = null) { if (fr != null) { long pos = fr.getPosition(); _effects_override = fr.read_bool(); _effects_count = fr.read_one_byte(); if (_effects_count > 0) { _effects_bitmask = fr.read_one_byte(); for (int i = 0; i < _effects_count; i++) { _effects.Add(new SoundStructure_Effect(fr)); } } _output_bus_id = fr.read_uint32(); _parent_id = fr.read_uint32(); _override_playback_priority = fr.read_bool(); _offset_priority = fr.read_bool(); _additional_parameters_count = fr.read_one_byte(); if (_additional_parameters_count > 0) { for (int i = 0; i < _additional_parameters_count; i++) { _additional_parameters.Add(new SoundStructure_Additional(fr)); } foreach (SoundStructure_Additional sa in _additional_parameters) { if (sa._type == 0x07) { sa._value_u = fr.read_uint32(); } else { sa._value_f = fr.read_float(); } } } _unk_field8_1 = fr.read_one_byte(); _has_positioning = fr.read_bool(); if (_has_positioning) { _positioning_type = fr.read_one_byte(); if (_positioning_type == 0x2D) { _enable_panner = fr.read_bool(); } else if (_positioning_type == 0x3D) { _position_source = fr.read_uint32(); _attenuation_id = fr.read_uint32(); _enable_spatialization = fr.read_bool(); if (_position_source == 0x02) { _play_type = fr.read_uint32(); _do_loop = fr.read_bool(); _transition_time = fr.read_uint32(); _follow_listener_orientation = fr.read_bool(); } else if (_position_source == 0x03) { _update_at_each_frame = fr.read_bool(); } } else if (_positioning_type == 0x01) { _unk_field16_1 = fr.read_uint16(); } else { _unk_field32_1 = fr.read_uint32(); _unk_field32_2 = fr.read_uint32(); } } _override_game_auxiliary_sends = fr.read_bool(); _use_game_auxiliary_sends = fr.read_bool(); _override_user_auxiliary_sends = fr.read_bool(); _user_auxiliary_sends_exists = fr.read_bool(); if (_user_auxiliary_sends_exists) { _auxiliary_bus_id0 = fr.read_uint32(); _auxiliary_bus_id1 = fr.read_uint32(); _auxiliary_bus_id2 = fr.read_uint32(); _auxiliary_bus_id3 = fr.read_uint32(); } _unk_field8_2 = fr.read_bool(); if (_unk_field8_2) { _priority_equal = fr.read_one_byte(); _limit_reached = fr.read_one_byte(); _limit_sound_instances = fr.read_uint16(); } _how_to_limit_sound_instances = fr.read_one_byte(); _virtual_voice_behavior = fr.read_one_byte(); _override_playback_limit = fr.read_bool(); _override_virtual_voice = fr.read_bool(); _state_groups_count = fr.read_uint32(); if (_state_groups_count > 0) { for (int i = 0; i < _state_groups_count; i++) { _state_groups.Add(new SoundStructure_StateGroup(fr)); } } _rtpc_count = fr.read_uint16(); if (_rtpc_count > 0) { for (int i = 0; i < _rtpc_count; i++) { _rtpcs.Add(new SoundStructure_RTPC(fr)); } } _unk_field32_3 = fr.read_uint32(); if (_unk_field32_3 > 0) { _unk_data = fr.read_uchar(0x3F); } else { _unk_data = ""; } } }