Ignore abstract prims (#USDU-3 part 1) (#259)

* Ignore abstract prims when getting paths by type.

* Update bindings binaries

* Update win-10 yamato image
This commit is contained in:
Julien Dubuisson 2021-08-30 15:22:22 -04:00 коммит произвёл GitHub
Родитель 35d97f8c91
Коммит 65402eea52
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
6 изменённых файлов: 29 добавлений и 6 удалений

Просмотреть файл

@ -6,7 +6,7 @@ test_editors:
test_platforms:
- name: win
type: Unity::VM
image: package-ci/win10:stable
image: package-ci/win10:v1.15.0
flavor: b1.large
- name: mac
type: Unity::VM::osx

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Просмотреть файл

@ -311,6 +311,29 @@ namespace USD.NET.Tests
stage.Dispose();
}
[Test]
public static void GetAllPathByType_IgnoreAbstract()
{
var s = UsdStage.CreateInMemory();
var meshToken = new TfToken("Mesh");
var classPrim = s.DefinePrim(new SdfPath("/thisIsAClass"), meshToken);
classPrim.SetSpecifier(SdfSpecifier.SdfSpecifierClass);
var instancePrim = s.DefinePrim(new SdfPath("/inheritedPrim"));
instancePrim.GetInherits().AddInherit(classPrim.GetPath());
var meshPrim = s.DefinePrim(new SdfPath("/meshPrim"), meshToken);
Assert.True(classPrim.IsAbstract());
Assert.AreEqual(meshToken, classPrim.GetTypeName());
Assert.False(instancePrim.IsAbstract());
Assert.AreEqual(meshToken, instancePrim.GetTypeName());
Assert.AreEqual(meshToken, meshPrim.GetTypeName());
var allPaths = s.GetAllPathsByType(meshToken, SdfPath.AbsoluteRootPath());
Assert.AreEqual(2, allPaths.Count);
}
[Test]
public void WritingInvalidPrims_ShouldNotCrash()
{

Просмотреть файл

@ -35,19 +35,19 @@ class string;
%typemap(in, canthrow=1) std::string *
%{ //typemap in
std::string temp;
$1 = &temp;
$1 = &temp;
%}
//C++
%typemap(argout) std::string *
%{
%{
//Typemap argout in c++ file.
//This will convert c++ string to c# string
*$input = SWIG_csharp_string_callback($1->c_str());
%}
%typemap(argout) const std::string *
%{
%{
//argout typemap for const std::string*
%}
@ -94,7 +94,7 @@ class string;
TfType schemaBaseType = TfType::Find<UsdSchemaBase>();
TfType baseType = schemaBaseType.FindDerivedByName(typeName);
if (schemaBaseType == TfType::GetUnknownType()) {
TF_RUNTIME_ERROR("Schema base type is unknown. This should never happen.");
return targets;
@ -123,7 +123,7 @@ class string;
if (curType == TfType::GetUnknownType()) {
continue;
}
if (curType.IsA(baseType)) {
if (curType.IsA(baseType) && !p.IsAbstract()) {
targets.push_back(p.GetPath());
}
}