private void ReadData(Model model, XElement xSource) { XElement xArray = xSource.Element(parent.ns + "float_array"); if (xArray == null) { return; } Model.SourceData source = new Model.SourceData(); source.name = (string)xArray.Attribute("id"); source.data = xArray.Value.Split(" \t\n".ToArray(), StringSplitOptions.RemoveEmptyEntries).Select((s) => float.Parse(s)).ToArray(); model.dataList.Add(source); }
private void ReadAccessor(Model model, XElement xSource) { XElement accessor = xSource.Element(parent.ns + "technique_common"); if (accessor == null) { return; } accessor = accessor.Element(parent.ns + "accessor"); if (accessor == null) { return; } string dataName = ((string)accessor.Attribute("source")).Substring(1); Model.SourceData dataItem = model.dataList.FirstOrDefault((d) => d.name == dataName); if (dataItem == null) { return; } Model.SourceAccessor source = new Model.SourceAccessor(); source.name = (string)xSource.Attribute("id"); source.count = (int)accessor.Attribute("count"); int offset = (accessor.Attribute("offset") == null)?0:(int)accessor.Attribute("offset"); int stride = (accessor.Attribute("stride") == null)?1:(int)accessor.Attribute("stride"); foreach (XElement param in accessor.Elements(parent.ns + "param")) { if (param.Attribute("name") != null) { Model.SourceDataRef sourceRef = new Model.SourceDataRef(); sourceRef.data = dataItem; sourceRef.offset = offset; sourceRef.stride = stride; source.dataRefs.Add(sourceRef); } offset++; } model.accessorList.Add(source); }