Daniele Bartolini 9 лет назад
Родитель
Сommit
b0f4987874

+ 4 - 0
samples/core/editors/level_editor/level_editor.lua

@@ -466,6 +466,10 @@ function SoundObject:draw()
 	end
 end
 
+function SoundObject:set_range(range)
+	self._range = range
+end
+
 SelectTool = class(SelectTool)
 
 function SelectTool:init()

+ 7 - 0
tools/api/level_editor_api.vala

@@ -205,6 +205,13 @@ namespace Crown
 				);
 		}
 
+		public string set_sound_range(Guid id, double range)
+		{
+			return @"LevelEditor._objects[\"%s\"]:set_range(%f)".printf(id.to_string()
+				, range
+				);
+		}
+
 		public string set_placeable(PlaceableType type, string name)
 		{
 			return "LevelEditor:set_placeable(\"%s\", \"%s\")".printf((type == PlaceableType.UNIT ? "unit" : "sound"), name);

+ 9 - 0
tools/level_editor/level.vala

@@ -289,6 +289,15 @@ namespace Crown
 			_client.send_script(LevelEditorApi.set_light(unit_id, type, range, intensity, spot_angle, color));
 		}
 
+		public void set_sound(Guid sound_id, double range, double volume, bool loop)
+		{
+			_db.set_property(sound_id, "range", range);
+			_db.set_property(sound_id, "volume", volume);
+			_db.set_property(sound_id, "loop", loop);
+
+			_client.send_script(LevelEditorApi.set_sound_range(sound_id, range));
+		}
+
 		private void send_spawn_units(Guid[] ids)
 		{
 			StringBuilder sb = new StringBuilder();

+ 11 - 17
tools/level_editor/properties_view.vala

@@ -372,14 +372,14 @@ namespace Crown
 
 			// Widgets
 			_name   = new Gtk.Entry();
-			_range  = new SpinButtonDouble(0.0, 0.001, 9999.0);
-			_volume = new SpinButtonDouble(0.0, 0.0,   1.0);
+			_range  = new SpinButtonDouble(0.0, 0.0, 9999.0);
+			_volume = new SpinButtonDouble(0.0, 0.0,    1.0);
 			_loop   = new Gtk.CheckButton();
 			_name.sensitive = false;
 
-			_range.value_changed.connect(on_range_changed);
-			_volume.value_changed.connect(on_volume_changed);
-			_loop.toggled.connect(on_loop_toggled);
+			_range.value_changed.connect(on_value_changed);
+			_volume.value_changed.connect(on_value_changed);
+			_loop.toggled.connect(on_value_changed);
 
 			uint row = 0;
 			attach_row(row++, "Name", _name);
@@ -388,19 +388,13 @@ namespace Crown
 			attach_row(row++, "Loop", _loop);
 		}
 
-		private void on_range_changed()
-		{
-			_level.set_property(_component_id, "range", _range.value);
-		}
-
-		private void on_volume_changed()
-		{
-			_level.set_property(_component_id, "volume", _range.value);
-		}
-
-		private void on_loop_toggled()
+		private void on_value_changed()
 		{
-			_level.set_property(_component_id, "loop", _loop.active);
+			_level.set_sound(_component_id
+				, _range.value
+				, _volume.value
+				, _loop.active
+				);
 		}
 
 		public override void update()