diff --git a/base/sources/ts/object.ts b/base/sources/ts/object.ts index 3582f1ce..15af27ac 100644 --- a/base/sources/ts/object.ts +++ b/base/sources/ts/object.ts @@ -10,7 +10,7 @@ type object_t = { visible?: bool; // Skip render, keep updating culled?: bool; // base_object_t was culled last frame is_empty?: bool; - ext?: any; // mesh_object_t | camera_object_t | speaker_object_t + ext?: any; // mesh_object_t | camera_object_t ext_type?: string; }; @@ -75,11 +75,6 @@ function object_remove(raw: object_t) { else if (raw.ext_type == "camera_object_t") { camera_object_remove(raw.ext); } - /// if arm_audio - else if (raw.ext_type == "speaker_object_t") { - speaker_object_remove(raw.ext); - } - /// end else { object_remove_super(raw); } diff --git a/base/sources/ts/scene.ts b/base/sources/ts/scene.ts index 1e660bdd..0fe84c2c 100644 --- a/base/sources/ts/scene.ts +++ b/base/sources/ts/scene.ts @@ -3,9 +3,6 @@ let scene_camera: camera_object_t; let scene_world: world_data_t; let scene_meshes: mesh_object_t[]; let scene_cameras: camera_object_t[]; -/// if arm_audio -let scene_speakers: speaker_object_t[]; -/// end let scene_empties: object_t[]; let scene_embedded: map_t; @@ -21,9 +18,6 @@ function scene_create(format: scene_t): object_t { _scene_uid = _scene_uid_counter++; scene_meshes = []; scene_cameras = []; - /// if arm_audio - scene_speakers = []; - /// end scene_empties = []; scene_embedded = map_create(); _scene_root = object_create(); @@ -52,12 +46,6 @@ function scene_remove() { let o: camera_object_t = scene_cameras[i]; camera_object_remove(o); } - /// if arm_audio - for (let i: i32 = 0; i < scene_speakers.length; ++i) { - let o: speaker_object_t = scene_speakers[i]; - speaker_object_remove(o); - } - /// end for (let i: i32 = 0; i < scene_empties.length; ++i) { let o: object_t = scene_empties[i]; object_remove(o); @@ -122,18 +110,6 @@ function scene_get_camera(name: string): camera_object_t { return null; } -/// if arm_audio -function scene_get_speaker(name: string): speaker_object_t { - for (let i: i32 = 0; i < scene_speakers.length; ++i) { - let s: speaker_object_t = scene_speakers[i]; - if (s.base.name == name) { - return s; - } - } - return null; -} -/// end - function scene_get_empty(name: string): object_t { for (let i: i32 = 0; i < scene_empties.length; ++i) { let e: object_t = scene_empties[i]; @@ -156,14 +132,6 @@ function scene_add_camera_object(data: camera_data_t, parent: object_t = null): return object; } -/// if arm_audio -function scene_add_speaker_object(data: speaker_data_t, parent: object_t = null): speaker_object_t { - let object: speaker_object_t = speaker_object_create(data); - parent != null ? object_set_parent(object.base, parent) : object_set_parent(object.base, _scene_root); - return object; -} -/// end - function scene_traverse_objects(format: scene_t, parent: object_t, objects: obj_t[]) { if (objects == null) { return; @@ -266,12 +234,6 @@ function scene_create_object(o: obj_t, format: scene_t, parent: object_t): objec return scene_create_mesh_object(o, format, parent, mat); } } - /// if arm_audio - else if (o.type == "speaker_object") { - let object: speaker_object_t = scene_add_speaker_object(speaker_data_get_raw_by_name(format.speaker_datas, o.data_ref), parent); - return scene_return_object(object.base, o); - } - /// end else if (o.type == "object") { let object: object_t = scene_add_object(parent); return scene_return_object(object, o); @@ -355,7 +317,7 @@ type scene_t = { shader_datas?: shader_data_t[]; world_datas?: world_data_t[]; world_ref?: string; - speaker_datas?: speaker_data_t[]; + speaker_datas?: any; // TODO: deprecated embedded_datas?: string[]; // Preload for this scene, images only for now }; @@ -478,17 +440,6 @@ type tex_unit_t = { link?: string; }; -type speaker_data_t = { - name?: string; - sound?: string; - muted?: bool; - loop?: bool; - stream?: bool; - volume?: f32; - attenuation?: f32; - play_on_start?: bool; -}; - type world_data_t = { name?: string; color?: i32; @@ -513,7 +464,7 @@ type irradiance_t = { type obj_t = { name?: string; - type?: string; // object, mesh_object, camera_object, speaker_object + type?: string; // object, mesh_object, camera_object data_ref?: string; transform?: f32_array_t; dimensions?: f32_array_t; // Geometry objects diff --git a/base/sources/ts/speaker_object.ts b/base/sources/ts/speaker_object.ts deleted file mode 100644 index 258aa655..00000000 --- a/base/sources/ts/speaker_object.ts +++ /dev/null @@ -1,124 +0,0 @@ - -/// if arm_audio - -type speaker_object_t = { - base?: object_t; - data?: speaker_data_t; - paused?: bool; - sound?: sound_t; - channels?: audio_channel_t[]; - volume?: f32; -}; - -function speaker_object_create(data: speaker_data_t): speaker_object_t { - let raw: speaker_object_t = {}; - raw.paused = false; - raw.channels = []; - raw.base = object_create(false); - raw.base.ext = raw; - raw.base.ext_type = "speaker_object_t"; - raw.data = data; - - array_push(scene_speakers, raw); - - if (data.sound == "") { - return raw; - } - - raw.sound = data_get_sound(data.sound); - sys_notify_on_next_frame(_speaker_object_create_on_init, raw); - return raw; -} - -function _speaker_object_create_on_init(raw: speaker_object_t) { - if (raw.base.visible && raw.data.play_on_start) { - speaker_object_play(raw); - } -} - -function speaker_object_play(raw: speaker_object_t) { - if (raw.sound == null || raw.data.muted) { - return; - } - if (raw.paused) { - for (let i: i32 = 0; i < raw.channels.length; ++i) { - let c: audio_channel_t = raw.channels[i]; - // audio_play(c); - } - raw.paused = false; - return; - } - let channel: audio_channel_t = null; // audio_channel(raw.sound, raw.data.loop, raw.data.stream); - if (channel != null) { - array_push(raw.channels, channel); - if (raw.data.attenuation > 0 && raw.channels.length == 1) { - sys_notify_on_update(speaker_object_update, raw); - } - } -} - -function speaker_object_pause(raw: speaker_object_t) { - for (let i: i32 = 0; i < raw.channels.length; ++i) { - let c: audio_channel_t = raw.channels[i]; - // audio_pause(c); - } - raw.paused = true; -} - -function speaker_object_stop(raw: speaker_object_t) { - for (let i: i32 = 0; i < raw.channels.length; ++i) { - let c: audio_channel_t = raw.channels[i]; - // audio_stop(c); - } - array_splice(raw.channels, 0, raw.channels.length); -} - -function speaker_object_update(raw: speaker_object_t) { - if (raw.paused) { - return; - } - for (let i: i32 = 0; i < raw.channels.length; ++i) { - let c: audio_channel_t = raw.channels[i]; - // if (c.finished) { - // array_remove(raw.channels, c); - // } - } - if (raw.channels.length == 0) { - sys_remove_update(speaker_object_update); - return; - } - - if (raw.data.attenuation > 0) { - let distance: f32 = vec4_dist(mat4_get_loc(scene_camera.base.transform.world), mat4_get_loc(raw.base.transform.world)); - raw.volume = 1.0 / (1.0 + raw.data.attenuation * (distance - 1.0)); - raw.volume *= raw.data.volume; - } - else { - raw.volume = raw.data.volume; - } - - for (let i: i32 = 0; i < raw.channels.length; ++i) { - let c: audio_channel_t = raw.channels[i]; - // c.volume = raw.volume; - } -} - -function speaker_object_remove(raw: speaker_object_t) { - speaker_object_stop(raw); - array_remove(scene_speakers, raw); - object_remove_super(raw.base); -} - -function speaker_data_get_raw_by_name(datas: speaker_data_t[], name: string): speaker_data_t { - if (name == "") { - return datas[0]; - } - for (let i: i32 = 0; i < datas.length; ++i) { - if (datas[i].name == name) { - return datas[i]; - } - } - return null; -} - -/// end diff --git a/base/tools/io_export_arm.py b/base/tools/io_export_arm.py index 66c83468..e536a599 100644 --- a/base/tools/io_export_arm.py +++ b/base/tools/io_export_arm.py @@ -71,7 +71,6 @@ class ArmoryExporter(bpy.types.Operator, ExportHelper): self.output["shader_datas"] = None self.output["world_datas"] = None self.output["world_ref"] = None - self.output["speaker_datas"] = None self.output["embedded_datas"] = None self.write_arm(self.filepath, self.output) diff --git a/paint/sources/util_encode.ts b/paint/sources/util_encode.ts index b547e14b..f4f16fef 100644 --- a/paint/sources/util_encode.ts +++ b/paint/sources/util_encode.ts @@ -22,7 +22,7 @@ function util_encode_scene(raw: scene_t): buffer_t { armpack_encode_null(); armpack_encode_string("world_ref"); armpack_encode_null(); - armpack_encode_string("speaker_datas"); + armpack_encode_string("speaker_datas"); // TODO: deprecated armpack_encode_null(); armpack_encode_string("embedded_datas"); armpack_encode_null();