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;
        }
Example #3
0
 /// <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);
 }
Example #4
0
		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;
        }
Example #7
0
 /// <summary>
 /// Handles the specified error.
 /// </summary>
 /// <param name="error"></param>
 public abstract void HandleError(SerializeError error);
Example #8
0
		/// <summary>
		/// Handles the specified error.
		/// </summary>
		/// <param name="error"></param>
		public abstract void HandleError(SerializeError error);