base: cleanup
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user