Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }