Exemple #1
0
 private static void ParseRangeElement(XMLElement element,
                                       Range range)
 {
     if (element == null)
     {
         return;
     }
     range.SetMin(element.GetFloatAttribute("min", 0));
     range.SetMax(element.GetFloatAttribute("max", 0));
     range.SetEnabled("true".Equals(element.GetAttribute("enabled", "")));
 }
Exemple #2
0
        private static void parseValueElement(XMLElement element,
                                              Value value)
        {
            if (element == null)
            {
                return;
            }

            string type = element.GetAttribute("type", "");
            string v    = element.GetAttribute("value", "");

            if (type == null || type.Length == 0)
            {
                if (value is SimpleValue)
                {
                    ((SimpleValue)value).SetValue(Convert.ToSingle(v));
                }
                else if (value is RandomValue)
                {
                    ((RandomValue)value).SetValue(Convert.ToSingle(v));
                }
                else
                {
                    Log.DebugWrite("problems reading element, skipping: "
                                   + element);
                }
            }
            else
            {
                if (type.Equals("simple"))
                {
                    ((SimpleValue)value).SetValue(Convert.ToSingle(v));
                }
                else if (type.Equals("random"))
                {
                    ((RandomValue)value).SetValue(Convert.ToSingle(v));
                }
                else if (type.Equals("linear"))
                {
                    int min = element.GetIntAttribute("min", 0);
                    int max = element.GetIntAttribute("max", 0);

                    bool active = element.GetBoolAttribute("active", false);

                    List <XMLElement> points = element.List("point");

                    List <Vector2f> curve = new List <Vector2f>();
                    for (int i = 0; i < points.Count; i++)
                    {
                        XMLElement point = (XMLElement)points[i];

                        float x = point.GetFloatAttribute("x", 0);
                        float y = point.GetFloatAttribute("y", 0);

                        curve.Add(new Vector2f(x, y));
                    }

                    ((LinearInterpolator)value).SetCurve(curve);
                    ((LinearInterpolator)value).SetMin(min);
                    ((LinearInterpolator)value).SetMax(max);
                    ((LinearInterpolator)value).SetActive(active);
                }
                else
                {
                    Log.DebugWrite("unkown type detected: " + type);
                }
            }
        }
Exemple #3
0
        private static void ElementToEmitter(XMLElement element,
                                             ConfigEmitter emitter)
        {
            emitter.SetImageName(element.GetAttribute("img", ""));
            emitter.name = element.GetAttribute("name", "");
            string renderType = element.GetAttribute("renderType", "");

            emitter.usePoints = Particle.INHERIT_POINTS;
            if (renderType.Equals("quads"))
            {
                emitter.usePoints = Particle.USE_QUADS;
            }
            if (renderType.Equals("points"))
            {
                emitter.usePoints = Particle.USE_POINTS;
            }

            string useOriented = element.GetAttribute("useOriented", "");

            if (useOriented != null)
            {
                emitter.useOriented = "true".Equals(useOriented);
            }

            string useAdditive = element.GetAttribute("useAdditive", "");

            if (useAdditive != null)
            {
                emitter.useAdditive = "true".Equals(useAdditive);
            }

            ParseRangeElement(GetFirstNamedElement(element, "spawnInterval"),
                              emitter.spawnInterval);
            ParseRangeElement(GetFirstNamedElement(element, "spawnCount"),
                              emitter.spawnCount);
            ParseRangeElement(GetFirstNamedElement(element, "initialLife"),
                              emitter.initialLife);
            ParseRangeElement(GetFirstNamedElement(element, "initialSize"),
                              emitter.initialSize);
            ParseRangeElement(GetFirstNamedElement(element, "xOffset"),
                              emitter.xOffset);
            ParseRangeElement(GetFirstNamedElement(element, "yOffset"),
                              emitter.yOffset);
            ParseRangeElement(GetFirstNamedElement(element, "initialDistance"),
                              emitter.initialDistance);
            ParseRangeElement(GetFirstNamedElement(element, "speed"), emitter.speed);
            ParseRangeElement(GetFirstNamedElement(element, "length"),
                              emitter.length);
            ParseRangeElement(GetFirstNamedElement(element, "emitCount"),
                              emitter.emitCount);

            parseValueElement(GetFirstNamedElement(element, "spread"),
                              emitter.spread);
            parseValueElement(GetFirstNamedElement(element, "angularOffset"),
                              emitter.angularOffset);
            parseValueElement(GetFirstNamedElement(element, "growthFactor"),
                              emitter.growthFactor);
            parseValueElement(GetFirstNamedElement(element, "gravityFactor"),
                              emitter.gravityFactor);
            parseValueElement(GetFirstNamedElement(element, "windFactor"),
                              emitter.windFactor);
            parseValueElement(GetFirstNamedElement(element, "startAlpha"),
                              emitter.startAlpha);
            parseValueElement(GetFirstNamedElement(element, "endAlpha"),
                              emitter.endAlpha);
            parseValueElement(GetFirstNamedElement(element, "alpha"), emitter.alpha);
            parseValueElement(GetFirstNamedElement(element, "size"), emitter.size);
            parseValueElement(GetFirstNamedElement(element, "velocity"),
                              emitter.velocity);
            parseValueElement(GetFirstNamedElement(element, "scaleY"),
                              emitter.scaleY);

            XMLElement        color = GetFirstNamedElement(element, "color");
            List <XMLElement> steps = color.List("step");

            emitter.colors.Clear();
            for (int i = 0; i < steps.Count; i++)
            {
                XMLElement step   = (XMLElement)steps[i];
                float      offset = step.GetFloatAttribute("offset", 0);
                float      r      = step.GetFloatAttribute("r", 0);
                float      g      = step.GetFloatAttribute("g", 0);
                float      b      = step.GetFloatAttribute("b", 0);

                emitter.AddColorPoint(offset, new LColor(r, g, b, 1));
            }

            emitter.Replay();
        }
Exemple #4
0
        public LTextureList(Stream ins0)
        {
            this.imageList  = new Dictionary <string, ImageData>(10);
            this.autoExpand = false;
            this.visible    = true;

            int index = 0;

            string x = "x", y = "y", w = "w", h = "h";
            string scale = "scale", src = "src", maskName = "mask", empty = "empty";
            string name = "name", filterName = "filter", n = "nearest", l = "linear";

            XMLDocument       doc    = XMLParser.Parse(ins0);
            List <XMLElement> images = doc.GetRoot().Find("image");

            if (images.Count > 0)
            {
                IEnumerator <XMLElement> it = images.GetEnumerator();
                for (; it.MoveNext();)
                {
                    XMLElement ele = it.Current;
                    if (ele != null)
                    {
                        ImageData data = new ImageData();
                        data.x     = ele.GetIntAttribute(x, 0);
                        data.y     = ele.GetIntAttribute(y, 0);
                        data.w     = ele.GetIntAttribute(w, 0);
                        data.h     = ele.GetIntAttribute(h, 0);
                        data.scale = ele.GetFloatAttribute(scale, 0);
                        data.xref  = ele.GetAttribute(src, empty);
                        XMLElement mask = ele.GetChildrenByName(maskName);
                        if (mask != null)
                        {
                            int r = mask.GetIntAttribute("r", 0);
                            int g = mask.GetIntAttribute("g", 0);
                            int b = mask.GetIntAttribute("b", 0);
                            int a = mask.GetIntAttribute("a", 0);
                            data.mask = new LColor(r, g, b, a);
                        }
                        else
                        {
                            data.mask = null;
                        }
                        string filter = ele.GetAttribute(filterName, n);
                        if (filter.Equals(n))
                        {
                            data.scaleType = 0;
                        }
                        if (filter.Equals(l))
                        {
                            data.scaleType = 1;
                        }
                        data.index = index;
                        XMLElement parent = ele.GetParent();
                        if (parent != null)
                        {
                            CollectionUtils.Put(imageList, parent.GetAttribute(name, empty), data);
                            index++;
                        }
                    }
                }
            }
            this.count  = imageList.Count;
            this.values = new LTextureObject[count];
        }