base: cleanup

This commit is contained in:
luboslenco
2026-03-02 13:09:20 +01:00
parent e8e1e88555
commit a5d668ef92
5 changed files with 4 additions and 183 deletions
+1 -6
View File
@@ -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);
}
+2 -51
View File
@@ -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<string, gpu_texture_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
-124
View File
@@ -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
-1
View File
@@ -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)
+1 -1
View File
@@ -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();