| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- /*
- * Copyright (c) 2012-2026 Daniele Bartolini et al.
- * SPDX-License-Identifier: GPL-3.0-or-later
- */
- namespace Crown
- {
- public struct Sound
- {
- public Database _db;
- public Guid _id;
- public Sound(Database db, Guid id)
- {
- _db = db;
- _id = id;
- }
- public void create(string name, Vector3 pos, Quaternion rot, Vector3 scl, double range, double volume, bool loop)
- {
- _db.create(_id, OBJECT_TYPE_SOUND_SOURCE);
- _db.set_resource(_id, "name", name);
- set_local_position(pos);
- set_local_rotation(rot);
- set_local_scale(scl);
- set_range(range);
- set_volume(volume);
- set_loop(loop);
- set_group("music");
- }
- public Vector3 local_position()
- {
- return _db.get_vector3(_id, "position");
- }
- public Quaternion local_rotation()
- {
- return _db.get_quaternion(_id, "rotation");
- }
- public Vector3 local_scale()
- {
- return Vector3(1.0, 1.0, 1.0);
- }
- public void set_local_position(Vector3 position)
- {
- _db.set_vector3(_id, "position", position);
- }
- public void set_local_rotation(Quaternion rotation)
- {
- _db.set_quaternion(_id, "rotation", rotation);
- }
- public void set_local_scale(Vector3 scale)
- {
- // Do nothing.
- }
- public double range()
- {
- return _db.get_double(_id, "range");
- }
- public void set_range(double range)
- {
- _db.set_double(_id, "range", range);
- }
- public double volume()
- {
- return _db.get_double(_id, "volume");
- }
- public void set_volume(double volume)
- {
- _db.set_double(_id, "volume", volume);
- }
- public bool loop()
- {
- return _db.get_bool(_id, "loop");
- }
- public void set_loop(bool loop)
- {
- _db.set_bool(_id, "loop", loop);
- }
- public void set_group(string group)
- {
- _db.set_string(_id, "group", group);
- }
- public static int generate_spawn_sound_commands(StringBuilder sb, Guid?[] object_ids, Database db)
- {
- int i = 0;
- for (; i < object_ids.length; ++i) {
- if (db.object_type(object_ids[i]) != OBJECT_TYPE_SOUND_SOURCE)
- break;
- Guid id = object_ids[i];
- sb.append("editor_nv, editor_nq, editor_nm = Device.temp_count()");
- string s = LevelEditorApi.spawn_sound(id
- , db.get_resource (id, "name")
- , db.get_vector3 (id, "position")
- , db.get_quaternion(id, "rotation")
- , db.get_double (id, "range")
- , db.get_double (id, "volume")
- , db.get_bool (id, "loop")
- );
- sb.append(s);
- sb.append("Device.set_temp_count(editor_nv, editor_nq, editor_nm)");
- }
- return i;
- }
- public static int generate_destroy_commands(StringBuilder sb, Guid?[] object_ids, Database db)
- {
- int i = 0;
- for (; i < object_ids.length; ++i) {
- if (db.object_type(object_ids[i]) != OBJECT_TYPE_SOUND_SOURCE)
- break;
- sb.append(LevelEditorApi.destroy(object_ids[i]));
- }
- return i;
- }
- public static int generate_change_sound_commands(StringBuilder sb, Guid?[] object_ids, Database db)
- {
- int i = 0;
- for (; i < object_ids.length; ++i) {
- if (db.object_type(object_ids[i]) != OBJECT_TYPE_SOUND_SOURCE)
- break;
- Guid id = object_ids[i];
- Sound sound = Sound(db, id);
- sb.append("editor_nv, editor_nq, editor_nm = Device.temp_count()");
- sb.append(LevelEditorApi.move_object(id
- , sound.local_position()
- , sound.local_rotation()
- , sound.local_scale()
- ));
- sb.append(LevelEditorApi.set_sound_range(id, sound.range()));
- sb.append("Device.set_temp_count(editor_nv, editor_nq, editor_nm)");
- }
- return i;
- }
- }
- } /* namespace Crown */
|