#usda 1.0
(
    customLayerData = {
        dictionary cameraSettings = {
            dictionary Front = {
                double3 position = (0, 0, 50000)
                double radius = 500
            }
            dictionary Perspective = {
                double3 position = (500.0000000000001, 500.0000000000001, 499.9999999999998)
                double3 target = (-0.000003978038478180679, 0.000007956076728987682, -0.0000039780385918675165)
            }
            dictionary Right = {
                double3 position = (-50000, 0, -1.1102230246251565e-11)
                double radius = 500
            }
            dictionary Top = {
                double3 position = (-4.329780281177466e-12, 50000, 1.1102230246251565e-11)
                double radius = 500
            }
            string boundCamera = "/OmniverseKit_Persp"
        }
        dictionary omni_layer = {
            dictionary muteness = {
            }
        }
        dictionary renderSettings = {
            float3 "rtx:debugView:pixelDebug:textColor" = (0, 1e18, 0)
            float3 "rtx:dynamicDiffuseGI:probeCounts" = (6, 6, 6)
            float3 "rtx:dynamicDiffuseGI:probeGridOrigin" = (-210, -250, -10)
            float3 "rtx:dynamicDiffuseGI:volumeSize" = (600, 440, 300)
            float3 "rtx:fog:fogColor" = (0.75, 0.75, 0.75)
            float3 "rtx:raytracing:inscattering:singleScatteringAlbedo" = (0.9, 0.9, 0.9)
            float3 "rtx:raytracing:inscattering:transmittanceColor" = (0.5, 0.5, 0.5)
            float3 "rtx:sceneDb:ambientLightColor" = (0.1, 0.1, 0.1)
        }
    }
    defaultPrim = "World"
    endTimeCode = 100
    metersPerUnit = 0.01
    startTimeCode = 0
    timeCodesPerSecond = 24
    upAxis = "Y"
)

def Xform "World"
{
    def Mesh "Cube"
    {
        int[] faceVertexCounts = [4, 4, 4, 4, 4, 4]
        int[] faceVertexIndices = [0, 1, 3, 2, 0, 4, 5, 1, 1, 5, 6, 3, 2, 3, 6, 7, 0, 2, 7, 4, 4, 7, 6, 5]
        normal3f[] normals = [(0, -1, 0), (0, -1, 0), (0, -1, 0), (0, -1, 0), (0, 0, -1), (0, 0, -1), (0, 0, -1), (0, 0, -1), (1, 0, 0), (1, 0, 0), (1, 0, 0), (1, 0, 0), (0, 0, 1), (0, 0, 1), (0, 0, 1), (0, 0, 1), (-1, 0, 0), (-1, 0, 0), (-1, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 1, 0), (0, 1, 0), (0, 1, 0)] (
            interpolation = "faceVarying"
        )
        point3f[] points = [(-50, -50, -50), (50, -50, -50), (-50, -50, 50), (50, -50, 50), (-50, 50, -50), (50, 50, -50), (50, 50, 50), (-50, 50, 50)]
        float2[] primvars:st = [(1, 0), (0, 0), (0, 1), (1, 1), (1, 0), (1, 1), (0, 1), (0, 0), (1, 0), (0, 0), (0, 1), (1, 1), (1, 0), (0, 0), (0, 1), (1, 1), (1, 0), (1, 1), (0, 1), (0, 0), (1, 0), (1, 1), (0, 1), (0, 0)] (
            interpolation = "faceVarying"
        )
        uniform token subdivisionScheme = "none"
        double3 xformOp:rotateXYZ = (0, 0, 0)
        double3 xformOp:scale = (1, 1, 1)
        double3 xformOp:translate = (0, 0, 0)
        uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
    }

    def OmniGraph "PushGraph"
    {
        token evaluator:type = "push"
        token fabricCacheBacking = "Shared"
        int2 fileFormatVersion = (1, 5)
        token pipelineStage = "pipelineStageSimulation"

        def OmniGraphNode "test_node_exercise_datamodel_features_01" (
            prepend apiSchemas = ["NodeGraphNodeAPI"]
        )
        {
            custom bool inputs:arrayShouldMatch = 0
            custom token inputs:attrib = "points"
            custom int inputs:bundleArraysThatShouldDiffer = 0
            custom bool inputs:bundleShouldMatch = 1
            custom point3f[] inputs:mutArray = []
            prepend point3f[] inputs:mutArray.connect = </World/PushGraph/extract_bundle_01.outputs:points>
            custom bool inputs:mutateArray = 0
            custom rel inputs:mutBundle = </World/PushGraph/read_prims/outputs_primsBundle>
            custom point3f[] inputs:refArray = []
            custom rel inputs:refBundle = </World/PushGraph/read_prim_into_bundle/outputs_primBundle>
            token node:type = "omni.graph.test.TestDataModel"
            int node:typeVersion = 1
            custom point3f[] outputs:array = []
            uniform token ui:nodegraph:node:expansionState = "open"
            uniform float2 ui:nodegraph:node:pos = (798.93054, 35.40151)

            def Output "outputs_bundle"
            {
            }
        }

        def OmniGraphNode "test_node_exercise_datamodel_features_02" (
            prepend apiSchemas = ["NodeGraphNodeAPI"]
        )
        {
            custom bool inputs:arrayShouldMatch = 1
            custom token inputs:attrib = ""
            custom int inputs:bundleArraysThatShouldDiffer = 1
            custom bool inputs:bundleShouldMatch = 0
            custom point3f[] inputs:mutArray = []
            prepend point3f[] inputs:mutArray.connect = </World/PushGraph/test_node_exercise_datamodel_features_01.outputs:array>
            custom bool inputs:mutateArray = 1
            custom rel inputs:mutBundle = </World/PushGraph/test_node_exercise_datamodel_features_01/outputs_bundle>
            custom point3f[] inputs:refArray = []
            prepend point3f[] inputs:refArray.connect = </World/PushGraph/extract_bundle_01.outputs:points>
            custom rel inputs:refBundle = </World/PushGraph/read_prim_into_bundle/outputs_primBundle>
            token node:type = "omni.graph.test.TestDataModel"
            int node:typeVersion = 1
            custom point3f[] outputs:array = [(-50, -50, -50), (50, -50, -50), (-50, -50, 50), (50, -50, 50), (-50, 50, -50), (50, 50, -50), (50, 50, 50), (-50, 50, 50)]
            uniform token ui:nodegraph:node:expansionState = "open"
            uniform float2 ui:nodegraph:node:pos = (1216.343, 504.63733)

            def Output "outputs_bundle"
            {
            }
        }

        def OmniGraphNode "test_node_exercise_datamodel_features_03" (
            prepend apiSchemas = ["NodeGraphNodeAPI"]
        )
        {
            custom bool inputs:arrayShouldMatch = 0
            custom token inputs:attrib = ""
            custom int inputs:bundleArraysThatShouldDiffer = 0
            custom bool inputs:bundleShouldMatch = 1
            custom point3f[] inputs:mutArray = []
            prepend point3f[] inputs:mutArray.connect = </World/PushGraph/test_node_exercise_datamodel_features_02.outputs:array>
            custom bool inputs:mutateArray = 0
            custom rel inputs:mutBundle = </World/PushGraph/test_node_exercise_datamodel_features_02/outputs_bundle>
            custom point3f[] inputs:refArray = []
            prepend point3f[] inputs:refArray.connect = </World/PushGraph/test_node_exercise_datamodel_features_01.outputs:array>
            custom rel inputs:refBundle = </World/PushGraph/test_node_exercise_datamodel_features_02/outputs_bundle>
            token node:type = "omni.graph.test.TestDataModel"
            int node:typeVersion = 1
            custom point3f[] outputs:array = []
            uniform token ui:nodegraph:node:expansionState = "open"
            uniform float2 ui:nodegraph:node:pos = (1630.563, 242.6192)

            def Output "outputs_bundle"
            {
            }
        }

        def OmniGraphNode "read_prims" (
            prepend apiSchemas = ["NodeGraphNodeAPI"]
        )
        {
            custom string inputs:attrNamesToImport = "*"
            custom bool inputs:computeBoundingBox = 0
            custom string inputs:pathPattern = ""
            custom rel inputs:prims
            prepend rel inputs:prims = </World/Cube>
            custom string inputs:typePattern = "*"
            custom timecode inputs:usdTimecode = -1
            token node:type = "omni.graph.nodes.ReadPrims"
            int node:typeVersion = 1
            custom string state:attrNamesToImport
            custom bool state:computeBoundingBox = 0
            custom string state:pathPattern
            custom uint64[] state:primPath = []
            custom string state:typePattern
            custom timecode state:usdTimecode = -1
            uniform token ui:nodegraph:node:expansionState = "open"
            uniform float2 ui:nodegraph:node:pos = (-585.3621, 223.36116)

            def Output "outputs_primsBundle"
            {
            }
        }

        def OmniGraphNode "extract_prim" (
            prepend apiSchemas = ["NodeGraphNodeAPI"]
        )
        {
            custom string inputs:primPath = "/World/Cube"
            custom rel inputs:prims
            prepend rel inputs:prims = </World/PushGraph/read_prims/outputs_primsBundle>
            token node:type = "omni.graph.nodes.ExtractPrim"
            int node:typeVersion = 1
            uniform token ui:nodegraph:node:expansionState = "open"
            uniform float2 ui:nodegraph:node:pos = (-222.911, -93.08474)

            def Output "outputs_primBundle"
            {
            }
        }

        def OmniGraphNode "extract_bundle_01" (
            prepend apiSchemas = ["NodeGraphNodeAPI"]
        )
        {
            custom rel inputs:bundle
            prepend rel inputs:bundle = </World/PushGraph/extract_prim/outputs_primBundle>
            token node:type = "omni.graph.nodes.ExtractBundle"
            int node:typeVersion = 3
            custom int[] outputs:faceVertexCounts
            custom int[] outputs:faceVertexIndices
            custom normal3f[] outputs:normals
            custom point3f[] outputs:points
            custom float2[] outputs:primvars:st
            custom token outputs:sourcePrimPath
            custom token outputs:sourcePrimType
            custom token outputs:subdivisionScheme
            custom matrix4d outputs:worldMatrix
            custom double3 outputs:xformOp:rotateXYZ
            custom double3 outputs:xformOp:scale
            custom double3 outputs:xformOp:translate
            custom token[] outputs:xformOpOrder
            uniform token ui:nodegraph:node:expansionState = "open"
            uniform float2 ui:nodegraph:node:pos = (62.313892, -138.03423)

            def Output "outputs_passThrough"
            {
            }
        }
    }
}

