Daniele Bartolini 8 anos atrás
pai
commit
335be8a2ce
1 arquivos alterados com 81 adições e 88 exclusões
  1. 81 88
      tools/level_editor/properties_view.vala

+ 81 - 88
tools/level_editor/properties_view.vala

@@ -20,17 +20,19 @@ namespace Crown
 	public class ComponentView : Gtk.Grid
 	{
 		// Data
-		public Guid _unit_id;
+		public Guid _id;
 		public Guid _component_id;
+		public int _rows;
 
 		public ComponentView()
 		{
 			// Data
-			_unit_id = GUID_ZERO;
+			_id = GUID_ZERO;
 			_component_id = GUID_ZERO;
+			_rows = 0;
 		}
 
-		public void attach_row(uint row, string label, Gtk.Widget w)
+		public void add_row(string label, Gtk.Widget w)
 		{
 			this.row_spacing = 6;
 			this.column_spacing = 12;
@@ -41,8 +43,9 @@ namespace Crown
 
 			PropertyRow r = new PropertyRow(w);
 
-			this.attach(l, 0, (int)row);
-			this.attach(r, 1, (int)row);
+			this.attach(l, 0, (int)_rows);
+			this.attach(r, 1, (int)_rows);
+			++_rows;
 		}
 
 		public virtual void update()
@@ -64,7 +67,7 @@ namespace Crown
 		{
 			// Data
 			_level = level;
-			_unit_id = GUID_ZERO;
+			_id = GUID_ZERO;
 			_component_id = GUID_ZERO;
 
 			// Widgets
@@ -76,10 +79,9 @@ namespace Crown
 			_rotation.value_changed.connect(on_value_changed);
 			_scale.value_changed.connect(on_value_changed);
 
-			uint row = 0;
-			attach_row(row++, "Position", _position);
-			attach_row(row++, "Rotation", _rotation);
-			attach_row(row++, "Scale", _scale);
+			add_row("Position", _position);
+			add_row("Rotation", _rotation);
+			add_row("Scale", _scale);
 		}
 
 		private void on_value_changed()
@@ -93,9 +95,9 @@ namespace Crown
 
 		public override void update()
 		{
-			Vector3 pos    = (Vector3)   _level.get_component_property(_unit_id, _component_id, "data.position");
-			Quaternion rot = (Quaternion)_level.get_component_property(_unit_id, _component_id, "data.rotation");
-			Vector3 scl    = (Vector3)   _level.get_component_property(_unit_id, _component_id, "data.scale");
+			Vector3 pos    = (Vector3)   _level.get_component_property(_id, _component_id, "data.position");
+			Quaternion rot = (Quaternion)_level.get_component_property(_id, _component_id, "data.rotation");
+			Vector3 scl    = (Vector3)   _level.get_component_property(_id, _component_id, "data.scale");
 
 			_position.value = pos;
 			_rotation.value = rot;
@@ -128,19 +130,18 @@ namespace Crown
 			_geometry.sensitive = false;
 			_material.sensitive = false;
 
-			uint row = 0;
-			attach_row(row++, "Mesh", _mesh_resource);
-			attach_row(row++, "Geometry", _geometry);
-			attach_row(row++, "Material", _material);
-			attach_row(row++, "Visible", _visible);
+			add_row("Mesh", _mesh_resource);
+			add_row("Geometry", _geometry);
+			add_row("Material", _material);
+			add_row("Visible", _visible);
 		}
 
 		public override void update()
 		{
-			_mesh_resource.text = (string)_level.get_component_property(_unit_id, _component_id, "data.mesh_resource");
-			_geometry.text      = (string)_level.get_component_property(_unit_id, _component_id, "data.geometry_name");
-			_material.text      = (string)_level.get_component_property(_unit_id, _component_id, "data.material");
-			_visible.active     = (bool)  _level.get_component_property(_unit_id, _component_id, "data.visible");
+			_mesh_resource.text = (string)_level.get_component_property(_id, _component_id, "data.mesh_resource");
+			_geometry.text      = (string)_level.get_component_property(_id, _component_id, "data.geometry_name");
+			_material.text      = (string)_level.get_component_property(_id, _component_id, "data.material");
+			_visible.active     = (bool)  _level.get_component_property(_id, _component_id, "data.visible");
 		}
 	}
 
@@ -166,17 +167,16 @@ namespace Crown
 			_sprite_resource.sensitive = false;
 			_material.sensitive = false;
 
-			uint row = 0;
-			attach_row(row++, "Sprite", _sprite_resource);
-			attach_row(row++, "Material", _material);
-			attach_row(row++, "Visible", _visible);
+			add_row("Sprite", _sprite_resource);
+			add_row("Material", _material);
+			add_row("Visible", _visible);
 		}
 
 		public override void update()
 		{
-			_sprite_resource.text = (string)_level.get_component_property(_unit_id, _component_id, "data.sprite_resource");
-			_material.text        = (string)_level.get_component_property(_unit_id, _component_id, "data.material");
-			_visible.active       = (bool)  _level.get_component_property(_unit_id, _component_id, "data.visible");
+			_sprite_resource.text = (string)_level.get_component_property(_id, _component_id, "data.sprite_resource");
+			_material.text        = (string)_level.get_component_property(_id, _component_id, "data.material");
+			_visible.active       = (bool)  _level.get_component_property(_id, _component_id, "data.visible");
 		}
 	}
 
@@ -213,17 +213,16 @@ namespace Crown
 			_spot_angle.value_changed.connect(on_value_changed);
 			_color.value_changed.connect(on_value_changed);
 
-			uint row = 0;
-			attach_row(row++, "Type", _type);
-			attach_row(row++, "Range", _range);
-			attach_row(row++, "Intensity", _intensity);
-			attach_row(row++, "Spot Angle", _spot_angle);
-			attach_row(row++, "Color", _color);
+			add_row("Type", _type);
+			add_row("Range", _range);
+			add_row("Intensity", _intensity);
+			add_row("Spot Angle", _spot_angle);
+			add_row("Color", _color);
 		}
 
 		private void on_value_changed()
 		{
-			_level.set_light(_unit_id
+			_level.set_light(_id
 				, _component_id
 				, _type.value
 				, _range.value
@@ -235,11 +234,11 @@ namespace Crown
 
 		public override void update()
 		{
-			string type       = (string) _level.get_component_property(_unit_id, _component_id, "data.type");
-			double range      = (double) _level.get_component_property(_unit_id, _component_id, "data.range");
-			double intensity  = (double) _level.get_component_property(_unit_id, _component_id, "data.intensity");
-			double spot_angle = (double) _level.get_component_property(_unit_id, _component_id, "data.spot_angle");
-			Vector3 color     = (Vector3)_level.get_component_property(_unit_id, _component_id, "data.color");
+			string type       = (string) _level.get_component_property(_id, _component_id, "data.type");
+			double range      = (double) _level.get_component_property(_id, _component_id, "data.range");
+			double intensity  = (double) _level.get_component_property(_id, _component_id, "data.intensity");
+			double spot_angle = (double) _level.get_component_property(_id, _component_id, "data.spot_angle");
+			Vector3 color     = (Vector3)_level.get_component_property(_id, _component_id, "data.color");
 
 			_type.value       = type;
 			_range.value      = range;
@@ -278,28 +277,27 @@ namespace Crown
 			_near_range.value_changed.connect(on_value_changed);
 			_far_range.value_changed.connect(on_value_changed);
 
-			uint row = 0;
-			attach_row(row++, "Projection", _projection);
-			attach_row(row++, "FOV", _fov);
-			attach_row(row++, "Near Range", _near_range);
-			attach_row(row++, "Far Range", _far_range);
+			add_row("Projection", _projection);
+			add_row("FOV", _fov);
+			add_row("Near Range", _near_range);
+			add_row("Far Range", _far_range);
 		}
 
 		private void on_value_changed()
 		{
-			_level.set_component_property(_unit_id, _component_id, "data.projection", _projection.value);
-			_level.set_component_property(_unit_id, _component_id, "data.fov",        _fov.value*(Math.PI/180.0));
-			_level.set_component_property(_unit_id, _component_id, "data.near_range", _near_range.value);
-			_level.set_component_property(_unit_id, _component_id, "data.far_range",  _far_range.value);
-			_level.set_component_property(_unit_id, _component_id, "type", "camera");
+			_level.set_component_property(_id, _component_id, "data.projection", _projection.value);
+			_level.set_component_property(_id, _component_id, "data.fov",        _fov.value*(Math.PI/180.0));
+			_level.set_component_property(_id, _component_id, "data.near_range", _near_range.value);
+			_level.set_component_property(_id, _component_id, "data.far_range",  _far_range.value);
+			_level.set_component_property(_id, _component_id, "type", "camera");
 		}
 
 		public override void update()
 		{
-			string type       = (string)_level.get_component_property(_unit_id, _component_id, "data.projection");
-			double fov        = (double)_level.get_component_property(_unit_id, _component_id, "data.fov");
-			double near_range = (double)_level.get_component_property(_unit_id, _component_id, "data.near_range");
-			double far_range  = (double)_level.get_component_property(_unit_id, _component_id, "data.far_range");
+			string type       = (string)_level.get_component_property(_id, _component_id, "data.projection");
+			double fov        = (double)_level.get_component_property(_id, _component_id, "data.fov");
+			double near_range = (double)_level.get_component_property(_id, _component_id, "data.near_range");
+			double far_range  = (double)_level.get_component_property(_id, _component_id, "data.far_range");
 
 			_projection.value = type;
 			_fov.value        = fov*(180.0/Math.PI);
@@ -325,17 +323,16 @@ namespace Crown
 			_script_resource = new Gtk.Entry();
 			_script_resource.sensitive = false;
 
-			uint row = 0;
-			attach_row(row++, "Script", _script_resource);
+			add_row("Script", _script_resource);
 		}
 
 		public override void update()
 		{
-			_script_resource.text = (string)_level.get_component_property(_unit_id, _component_id, "data.script_resource");
+			_script_resource.text = (string)_level.get_component_property(_id, _component_id, "data.script_resource");
 		}
 	}
 
-	public class UnitNameView : ComponentView
+	public class UnitView : ComponentView
 	{
 		// Data
 		Level _level;
@@ -343,7 +340,7 @@ namespace Crown
 		// Widgets
 		private Gtk.Entry _unit_name;
 
-		public UnitNameView(Level level)
+		public UnitView(Level level)
 		{
 			// Data
 			_level = level;
@@ -352,13 +349,12 @@ namespace Crown
 			_unit_name = new Gtk.Entry();
 			_unit_name.sensitive = false;
 
-			uint row = 0;
-			attach_row(row++, "Name", _unit_name);
+			add_row("Name", _unit_name);
 		}
 
 		public override void update()
 		{
-			Value? val = _level.get_property(_unit_id, "prefab");
+			Value? val = _level.get_property(_id, "prefab");
 			_unit_name.text = val == null ? "<none>" : (string)val;
 		}
 	}
@@ -376,8 +372,7 @@ namespace Crown
 		{
 			// Data
 			_level = level;
-			_unit_id = GUID_ZERO;
-			_component_id = GUID_ZERO;
+			_id = GUID_ZERO;
 
 			// Widgets
 			_position = new SpinButtonVector3(Vector3(0, 0, 0), Vector3(-9999.9, -9999.9, -9999.9), Vector3(9999.9, 9999.9, 9999.9));
@@ -386,9 +381,8 @@ namespace Crown
 			_position.value_changed.connect(on_value_changed);
 			_rotation.value_changed.connect(on_value_changed);
 
-			uint row = 0;
-			attach_row(row++, "Position", _position);
-			attach_row(row++, "Rotation", _rotation);
+			add_row("Position", _position);
+			add_row("Rotation", _rotation);
 		}
 
 		private void on_value_changed()
@@ -401,15 +395,15 @@ namespace Crown
 
 		public override void update()
 		{
-			Vector3 pos    = (Vector3)   _level.get_property(_component_id, "position");
-			Quaternion rot = (Quaternion)_level.get_property(_component_id, "rotation");
+			Vector3 pos    = (Vector3)   _level.get_property(_id, "position");
+			Quaternion rot = (Quaternion)_level.get_property(_id, "rotation");
 
 			_position.value = pos;
 			_rotation.value = rot;
 		}
 	}
 
-	public class SoundPropertiesView : ComponentView
+	public class SoundView : ComponentView
 	{
 		// Data
 		Level _level;
@@ -420,7 +414,7 @@ namespace Crown
 		private SpinButtonDouble _volume;
 		private Gtk.CheckButton _loop;
 
-		public SoundPropertiesView(Level level)
+		public SoundView(Level level)
 		{
 			// Data
 			_level = level;
@@ -436,16 +430,15 @@ namespace Crown
 			_volume.value_changed.connect(on_value_changed);
 			_loop.toggled.connect(on_value_changed);
 
-			uint row = 0;
-			attach_row(row++, "Name", _name);
-			attach_row(row++, "Range", _range);
-			attach_row(row++, "Volume", _volume);
-			attach_row(row++, "Loop", _loop);
+			add_row("Name", _name);
+			add_row("Range", _range);
+			add_row("Volume", _volume);
+			add_row("Loop", _loop);
 		}
 
 		private void on_value_changed()
 		{
-			_level.set_sound(_component_id
+			_level.set_sound(_id
 				, _name.text
 				, _range.value
 				, _volume.value
@@ -455,10 +448,10 @@ namespace Crown
 
 		public override void update()
 		{
-			_name.text    = (string)_level.get_property(_component_id, "name");
-			_range.value  = (double)_level.get_property(_component_id, "range");
-			_volume.value = (double)_level.get_property(_component_id, "volume");
-			_loop.active  = (bool)  _level.get_property(_component_id, "loop");
+			_name.text    = (string)_level.get_property(_id, "name");
+			_range.value  = (double)_level.get_property(_id, "range");
+			_volume.value = (double)_level.get_property(_id, "volume");
+			_loop.active  = (bool)  _level.get_property(_id, "loop");
 		}
 	}
 
@@ -498,7 +491,7 @@ namespace Crown
 			_components_vbox.margin_right = 18;
 
 			// Unit
-			add_component_view("Unit",            "name",          0, new UnitNameView(_level));
+			add_component_view("Unit",            "name",            0, new UnitView(_level));
 			add_component_view("Transform",       "transform",       0, new TransformComponentView(_level));
 			add_component_view("Light",           "light",           1, new LightComponentView(_level));
 			add_component_view("Camera",          "camera",          2, new CameraComponentView(_level));
@@ -507,8 +500,8 @@ namespace Crown
 			add_component_view("Script",          "script",          3, new ScriptComponentView(_level));
 
 			// Sound
-			add_component_view("Transform",        "sound_transform",  0, new SoundTransformView(_level));
-			add_component_view("Sound Properties", "sound_properties", 1, new SoundPropertiesView(_level));
+			add_component_view("Transform", "sound_transform",  0, new SoundTransformView(_level));
+			add_component_view("Sound",     "sound_properties", 1, new SoundView(_level));
 
 			_entries.sort((a, b) => { return (a.position < b.position ? -1 : 1); });
 			foreach (var entry in _entries)
@@ -576,13 +569,13 @@ namespace Crown
 				foreach (var entry in _entries)
 				{
 					Gtk.Expander expander = _expanders[entry.type];
-					ComponentView cv = _components[entry.type];
 					expander.hide();
 
 					Guid component_id = GUID_ZERO;
 					if (_level.has_component(id, entry.type, ref component_id) || entry.type == "name")
 					{
-						cv._unit_id = id;
+						ComponentView cv = _components[entry.type];
+						cv._id = id;
 						cv._component_id = component_id;
 						cv.update();
 						expander.show_all();
@@ -601,7 +594,7 @@ namespace Crown
 					if (entry.type == "sound_transform" || entry.type == "sound_properties")
 					{
 						ComponentView cv = _components[entry.type];
-						cv._component_id = id;
+						cv._id = id;
 						cv.update();
 						expander.show_all();
 					}