public override void HandleError(SerializeError error) { AssignFieldError fieldError = error as AssignFieldError; if (fieldError != null && fieldError.TargetObject is JointInfo) { RigidBody target = fieldError.FieldValue as RigidBody; JointInfo joint = fieldError.TargetObject as JointInfo; bool other = false; FieldInfo field = null; if (fieldError.FieldName == "colA") { field = fieldError.TargetObjectType.Fields.FirstOrDefault(f => f.Name == "parentBody"); } else if (fieldError.FieldName == "colB") { field = fieldError.TargetObjectType.Fields.FirstOrDefault(f => f.Name == "otherBody"); other = true; } if (field != null) { if (other) { IList<JointInfo> jointList = jointsField.GetValue(target) as IList<JointInfo>; jointList.Remove(joint); } field.SetValue(fieldError.TargetObject, fieldError.FieldValue); fieldError.AssignSuccess = true; } } return; }
public override void HandleError(SerializeError error) { ResolveTypeError resolveTypeError = error as ResolveTypeError; if (resolveTypeError != null && resolveTypeError.TypeId.EndsWith("ProfileRenderer")) { resolveTypeError.ResolvedType = typeof(ProfileRenderer); } return; }
/// <summary> /// Attempts to handle a serialization error dynamically by invoking available <see cref="SerializeErrorHandler">SerializeErrorHandlers</see>. /// </summary> /// <param name="error"></param> /// <returns>Returns true, if the error has been handled successfully.</returns> protected static bool HandleSerializeError(SerializeError error) { if (error.Handled) { return(true); } if (serializeHandlerCache.Count == 0) { IEnumerable <Type> handlerTypes = DualityApp.GetAvailDualityTypes(typeof(SerializeErrorHandler)); foreach (Type handlerType in handlerTypes) { if (handlerType.IsAbstract) { continue; } try { SerializeErrorHandler handler = handlerType.CreateInstanceOf() as SerializeErrorHandler; if (handler != null) { serializeHandlerCache.Add(handler); } } catch (Exception) {} } serializeHandlerCache.StableSort((a, b) => b.Priority - a.Priority); } foreach (SerializeErrorHandler handler in serializeHandlerCache) { try { handler.HandleError(error); if (error.Handled) { return(true); } } catch (Exception e) { Log.Core.WriteError("An error occurred while trying to perform a serialization fallback: {0}", Log.Exception(e)); } } return(false); }
public override void HandleError(SerializeError error) { AssignFieldError fieldError = error as AssignFieldError; if (fieldError != null && fieldError.TargetObjectType.Type == typeof(Sound)) { Sound targetObject = fieldError.TargetObject as Sound; if (targetObject != null) { // ContentRef<AudioData> audioData --> List<ContentRef<AudioData>> audioData if (fieldError.FieldName == "audioData" && fieldError.FieldValue is ContentRef<AudioData>) { targetObject.MainData = (ContentRef<AudioData>)fieldError.FieldValue; fieldError.AssignSuccess = true; } } } return; }
public override void HandleError(SerializeError error) { ResolveTypeError resolveTypeError = error as ResolveTypeError; if (resolveTypeError != null) { string fixedTypeId = resolveTypeError.TypeId; if (fixedTypeId.EndsWith("Duality.VertexFormat.VertexC1P3")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.VertexC1P3); else if (fixedTypeId.EndsWith("Duality.VertexFormat.VertexC1P3T2")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.VertexC1P3T2); else if (fixedTypeId.EndsWith("Duality.VertexFormat.VertexC1P3T4A1")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.VertexC1P3T4A1); else if (fixedTypeId.EndsWith("Duality.VertexFormat.IVertexData")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.IVertexData); else if (fixedTypeId.EndsWith("Duality.ColorFormat.ColorHsva")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.ColorHsva); else if (fixedTypeId.EndsWith("Duality.ColorFormat.ColorRgba")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.ColorRgba); else if (fixedTypeId.EndsWith("Duality.ColorFormat.IColorData")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.IColorData); else if (fixedTypeId.EndsWith("Duality.VisibilityFlag")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.VisibilityFlag); else if (fixedTypeId.EndsWith("Duality.VertexMode")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.VertexMode); else if (fixedTypeId.EndsWith("Duality.RenderMatrix")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.RenderMatrix); else if (fixedTypeId.EndsWith("Duality.PerspectiveMode")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.PerspectiveMode); else if (fixedTypeId.EndsWith("Duality.DashPattern")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.DashPattern); else if (fixedTypeId.EndsWith("Duality.ClearFlag")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.ClearFlag); else if (fixedTypeId.EndsWith("Duality.BlendMode")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.BlendMode); else if (fixedTypeId.EndsWith("Duality.Canvas")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.Canvas); else if (fixedTypeId.EndsWith("Duality.CanvasState")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.CanvasState); else if (fixedTypeId.EndsWith("Duality.CanvasBuffer")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.CanvasBuffer); else if (fixedTypeId.EndsWith("Duality.DrawDevice")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.DrawDevice); else if (fixedTypeId.EndsWith("Duality.IDrawDevice")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.IDrawDevice); else if (fixedTypeId.EndsWith("Duality.Profiling.Profile")) resolveTypeError.ResolvedType = typeof(Duality.Profile); else if (fixedTypeId.EndsWith("Duality.Profiling.ProfileCounter")) resolveTypeError.ResolvedType = typeof(Duality.ProfileCounter); else if (fixedTypeId.EndsWith("Duality.Profiling.ReportCounterData")) resolveTypeError.ResolvedType = typeof(Duality.ProfileReportCounterData); else if (fixedTypeId.EndsWith("Duality.Profiling.ReportOptions")) resolveTypeError.ResolvedType = typeof(Duality.ProfileReportOptions); else if (fixedTypeId.EndsWith("Duality.Profiling.StatCounter")) resolveTypeError.ResolvedType = typeof(Duality.StatCounter); else if (fixedTypeId.EndsWith("Duality.Profiling.TimeCounter")) resolveTypeError.ResolvedType = typeof(Duality.TimeCounter); else if (fixedTypeId.Contains("Duality.FormattedText") && !fixedTypeId.Contains("Duality.Drawing.FormattedText")) { resolveTypeError.ResolvedType = ReflectionHelper.ResolveType( fixedTypeId.Replace("Duality.FormattedText", "Duality.Drawing.FormattedText"), false); } } return; }
public override void HandleError(SerializeError error) { ResolveTypeError resolveTypeError = error as ResolveTypeError; if (resolveTypeError != null) { string fixedTypeId = resolveTypeError.TypeId.Replace('+', '.'); if (fixedTypeId.EndsWith("Duality.Resources.Texture.SizeMode")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.TextureSizeMode); else if (fixedTypeId.EndsWith("Duality.Resources.BatchInfo")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.BatchInfo); else if (fixedTypeId.EndsWith("Duality.Resources.BatchInfo.DirtyFlag")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.BatchInfo).GetNestedType("DirtyFlag", ReflectionHelper.BindAll); else if (fixedTypeId.EndsWith("Duality.Drawing.DefaultRendererVisibilityStrategy")) resolveTypeError.ResolvedType = typeof(Duality.Components.DefaultRendererVisibilityStrategy); else if (fixedTypeId.EndsWith("Duality.Resources.Pixmap.Layer")) resolveTypeError.ResolvedType = typeof(Duality.Drawing.PixelData); } return; }
/// <summary> /// Handles the specified error. /// </summary> /// <param name="error"></param> public abstract void HandleError(SerializeError error);
/// <summary> /// Handles the specified error. /// </summary> /// <param name="error"></param> public abstract void HandleError(SerializeError error);