protected override bool IntegrateChild(AssetManager assets, LayoutTreeNode childNode) { bool orderError = false; switch (childNode.Key) { case "Texture": sprite = new Sprite(assets.GetAnimatedTexture(childNode.Value)); return true; case "Position": if (sprite != null) { sprite.Position = ExtendedConvert.ToVector2(childNode.Value); return true; } else orderError = true; break; case "Rotation": if (sprite != null) { sprite.Rotation = Convert.ToSingle(childNode.Value); return true; } else orderError = true; break; case "Scale": if (sprite != null) { sprite.Scale = ExtendedConvert.ToVector2(childNode.Value); return true; } else orderError = true; break; case "Color": if (sprite != null) { sprite.Color = ExtendedConvert.ToColor(childNode.Value); return true; } else orderError = true; break; case "Anchor": if (sprite != null) { sprite.Anchor = ExtendedConvert.ToEnum<Anchor>(childNode.Value); return true; } else orderError = true; break; case "Animation": if (sprite != null) { AnimationCurveElement animationCurve = null; switch (childNode.Value) { case "PeriodicCurve": animationCurve = new PeriodicAnimationCurveElement(); break; } if (animationCurve != null) { animationCurve.Integrate(assets, childNode); if (animationCurve.AnimationCurve != null) { sprite.PushAnimationCurve(animationCurve.AnimationCurve); return true; } #if DEBUG Console.WriteLine("LayoutEngine WARNING: An animation is missing an element."); return true; #endif } } else orderError = true; break; } if (orderError) { #if DEBUG Console.WriteLine("ContextElement WARNING: Tried to set {0}'s {1} field before the Texture was specified.", LayoutName, childNode.Key); #endif return true; } return false; }