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", ""))); }
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); } } }
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(); }
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]; }