private void handleEditInstanceBtnClick() { if (inspectView.SelectedGameObjects.Count > 0) { var selectedObject = inspectView.SelectedGameObjects[0]; var dialog = new InputDialog("Edit Object", WorldObjectSerializer.Serialize(selectedObject).ToString(Formatting.Indented)); if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { inspectView.Deselect(); selectedObject.DisconnectFromWorld(); selectedObject.Destroy(); var newObject = WorldObjectSerializer.Deserialize(JObject.Parse(dialog.ResultText)); newObject.ConnectToWorld(); inspectView.SelectGameObject(newObject); } } else if (inspectView.SelectedWorldLink != null) { var SelectedWorldLink = inspectView.SelectedWorldLink; var dialog = new InputDialog("Edit Object", JToken.FromObject(SelectedWorldLink, SerializationUtils.Serializer).ToString(Formatting.Indented)); if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { inspectView.Deselect(); var newWorldLink = SerializationUtils.Serializer.Deserialize <WorldLink>(new JTokenReader(JToken.Parse(dialog.ResultText))); SimulationGame.World.UpdateWorldLink(SelectedWorldLink, newWorldLink); } } }
protected static void Deserialize(ref JObject jObject, WorldPart worldPart) { SerializationUtils.SetFromObject(jObject, worldPart, worldPartType, serializeableProperties); // Deserialize Ambient Objects JArray ambientObjects = (JArray)jObject.GetValue("AmbientObjects"); foreach (var ambientObject in ambientObjects) { worldPart.AddAmbientObject((AmbientObject)WorldObjectSerializer.Deserialize((JObject)ambientObject)); } // Deserialize Hitable Objects JArray containedObjects = (JArray)jObject.GetValue("ContainedObjects"); foreach (var containedObject in containedObjects) { worldPart.AddContainedObject((HitableObject)WorldObjectSerializer.Deserialize((JObject)containedObject)); } }