public static void ApiTest() { UsdStage s = UsdStage.CreateInMemory(); var prim = s.DefinePrim(new SdfPath("/Foo")); s.SetStartTimeCode(1.0); s.SetEndTimeCode(10.0); AssertEqual(1.0, s.GetStartTimeCode()); AssertEqual(10.0, s.GetEndTimeCode()); var defultPrimToken = new TfToken("defaultPrim"); var value = new VtValue(); // Verify initial default prim / built-in metadata states. { AssertFalse(s.HasDefaultPrim()); AssertFalse(s.GetDefaultPrim().IsValid()); // defaultPrim is always valid metadata, it's built-in. AssertTrue(s.HasMetadata(defultPrimToken)); // But it should not yet have an *authored* value. AssertFalse(s.HasAuthoredMetadata(defultPrimToken)); // Even though it's not authored, reading it should succeed. AssertTrue(s.GetMetadata(defultPrimToken, value)); AssertEqual(((TfToken)value).ToString(), ""); } // Set the default prim, which should set the defaultPrim metadata. s.SetDefaultPrim(prim); { // Verify via the Stage API AssertTrue(s.HasDefaultPrim()); AssertTrue(s.GetDefaultPrim().IsValid()); AssertEqual(s.GetDefaultPrim().GetPath(), new SdfPath("/Foo")); // Verify via the metadata API AssertTrue(s.HasMetadata(defultPrimToken)); AssertTrue(s.HasAuthoredMetadata(defultPrimToken)); AssertTrue(s.GetMetadata(defultPrimToken, value)); AssertEqual(((TfToken)value).ToString(), "Foo"); } string str = s.GetRootLayer().ExportToString(); s.ClearDefaultPrim(); { AssertFalse(s.HasDefaultPrim()); AssertFalse(s.GetDefaultPrim().IsValid()); AssertFalse(s.HasAuthoredMetadata(defultPrimToken)); AssertTrue(s.GetMetadata(defultPrimToken, value)); AssertEqual(((TfToken)value).ToString(), ""); } var classPrim = s.CreateClassPrim(new SdfPath("/Foo_class_")); { AssertTrue(classPrim.IsValid()); AssertEqual(classPrim.GetPath(), new SdfPath("/Foo_class_")); } AssertEqual(s.GetFramesPerSecond(), 24.0); s.SetFramesPerSecond(90.0); AssertEqual(s.GetFramesPerSecond(), 90.0); }