public override void HandleError(SerializeError error)
        {
            AssignFieldError assignFieldError = error as AssignFieldError;
            ResolveTypeError resolveTypeError = error as ResolveTypeError;

            // BatchInfo uniforms and textures were moved to a nested ShaderParameters
            if (assignFieldError != null)
            {
                BatchInfo batchInfo = assignFieldError.TargetObject as BatchInfo;
                if (batchInfo != null)
                {
                    if (assignFieldError.FieldName == "uniforms")
                    {
                        Dictionary <string, float[]> uniforms = assignFieldError.FieldValue as Dictionary <string, float[]>;
                        if (uniforms != null)
                        {
                            foreach (var pair in uniforms)
                            {
                                batchInfo.SetArray(pair.Key, pair.Value);
                            }
                            assignFieldError.AssignSuccess = true;
                        }
                    }
                    else if (assignFieldError.FieldName == "textures")
                    {
                        Dictionary <string, ContentRef <Texture> > textures = assignFieldError.FieldValue as Dictionary <string, ContentRef <Texture> >;
                        if (textures != null)
                        {
                            foreach (var pair in textures)
                            {
                                ContentRef <Texture> texRef = pair.Value;
                                texRef.EnsureLoaded();
                                batchInfo.SetTexture(pair.Key, texRef);
                            }
                            assignFieldError.AssignSuccess = true;
                        }
                    }
                }
            }

            return;
        }
        public override void HandleError(SerializeError error)
        {
            AssignFieldError fieldError = error as AssignFieldError;

            if (fieldError != null && fieldError.TargetObjectType.Type.AsType() == 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)
        {
            AssignFieldError assignFieldError = error as AssignFieldError;

            if (assignFieldError == null)
            {
                return;
            }

            // RigidBody."continous" was renamed to "useCCD"
            RigidBody body = assignFieldError.TargetObject as RigidBody;

            if (body != null && assignFieldError.FieldName == "continous")
            {
                body.ContinousCollision        = (bool)assignFieldError.FieldValue;
                assignFieldError.AssignSuccess = true;
            }

            return;
        }
Example #4
0
        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)
                    {
                        FieldInfo         jointsField = typeof(RigidBody).GetField("joints", BindingFlags.Instance | BindingFlags.NonPublic);
                        IList <JointInfo> jointList   = jointsField.GetValue(target) as IList <JointInfo>;
                        jointList.Remove(joint);
                    }

                    field.SetValue(fieldError.TargetObject, fieldError.FieldValue);
                    fieldError.AssignSuccess = true;
                }
            }

            return;
        }