Beispiel #1
0
        public static AssetRef[] usdiGetReferencingAssets(Schema schema)
        {
            var ret     = new List <AssetRef>();
            var summary = new AttributeSummary();

            var n = usdiPrimGetNumAttributes(schema);

            for (int ai = 0; ai < n; ++ai)
            {
                var attr = usdiPrimGetAttribute(schema, ai);
                usdiAttrGetSummary(attr, ref summary);

                if (summary.type == AttributeType.Asset)
                {
                    var data = new AttributeData();
                    usdiAttrReadSample(attr, ref data, defaultTime, true);
                    ret.Add(new AssetRef
                    {
                        name = S(usdiAttrGetName(attr)),
                        path = S(data.data)
                    });
                }
                else if (summary.type == AttributeType.AssetArray)
                {
                    var data = new AttributeData();
                    usdiAttrReadSample(attr, ref data, defaultTime, true);

                    var tmp = new IntPtr[data.num_elements];
                    data.data = GetArrayPtr(tmp);
                    usdiAttrReadSample(attr, ref data, defaultTime, true);

                    var e = new AssetRef();
                    e.name  = S(usdiAttrGetName(attr));
                    e.paths = new string[data.num_elements];
                    for (int ei = 0; ei < data.num_elements; ++ei)
                    {
                        e.paths[ei] = S(tmp[ei]);
                    }

                    ret.Add(e);
                }
            }

            return(ret.ToArray());
        }
Beispiel #2
0
 [DllImport("usdi")] public static extern void      usdiAttrGetSummary(Attribute attr, ref AttributeSummary dst);