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()); }
[DllImport("usdi")] public static extern void usdiAttrGetSummary(Attribute attr, ref AttributeSummary dst);