Esempio n. 1
0
 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;
 }