#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, 0, 0)
            }
            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 = {
            }
        }
        int refinementOverrideImplVersion = 0
        dictionary renderSettings = {
        }
    }
    defaultPrim = "World"
    endTimeCode = 100
    metersPerUnit = 0.01
    startTimeCode = 0
    timeCodesPerSecond = 24
    upAxis = "Y"
)

def Xform "World"
{
    def DistantLight "defaultLight" (
        prepend apiSchemas = ["ShapingAPI"]
    )
    {
        float angle = 1
        float intensity = 3000
        float shaping:cone:angle = 180
        float shaping:cone:softness
        float shaping:focus
        color3f shaping:focusTint
        asset shaping:ies:file
        double3 xformOp:rotateXYZ = (315, 0, 0)
        double3 xformOp:scale = (1, 1, 1)
        double3 xformOp:translate = (0, 0, 0)
        uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
    }

    def GlobalComputeGraph "PushGraph"
    {
        def ComputeGraphSettings "computegraphSettings"
        {
            custom token evaluator:type = "push"
            custom int2 fileFormatVersion = (1, 2)
            custom token flatCacheBacking = "Shared"
            custom token pipelineStage = "pipelineStageSimulation"
        }
    }

    def GlobalComputeGraph "PushGraph"
    {
        def ComputeGraphSettings "computegraphSettings"
        {
            custom token evaluator:type = "push"
            custom int2 fileFormatVersion = (1, 2)
            custom token flatCacheBacking = "Shared"
            custom token pipelineStage = "pipelineStageSimulation"
        }

        def ComputeNode "read_prim"
        {
            custom rel inputs:prim
            prepend rel inputs:prim = </World/Cube>
            custom token node:type = "omni.graph.nodes.ReadPrim"
            custom int node:typeVersion = 1
            custom float3[] outputs:extent
            custom double outputs:size
            custom double3 outputs:xformOp:rotateXYZ
            custom double3 outputs:xformOp:scale
            custom double3 outputs:xformOp:translate
            custom token[] outputs:xformOpOrder

            def Output "outputs_primBundle"
            {
            }

            def ComputeNodeMetaData "metaData"
            {
                custom token AttributeDownstreamConnection____outputs:xformOp:rotateXYZ = "/World/PushGraph/write_prim.inputs:xformOp:rotateXYZ,/World/PushGraph/add.inputs:a"
            }
        }

        def ComputeNode "write_prim"
        {
            custom uint inputs:execIn
            custom float3[] inputs:extent
            custom rel inputs:prim
            prepend rel inputs:prim = </World/Sphere>
            custom double inputs:radius
            custom bool inputs:refinementEnableOverride
            custom int inputs:refinementLevel
            custom double3 inputs:xformOp:rotateXYZ = (0, 0, 0)
            delete double3 inputs:xformOp:rotateXYZ.connect = </World/PushGraph/read_prim.outputs:xformOp:rotateXYZ>
            prepend double3 inputs:xformOp:rotateXYZ.connect = </World/PushGraph/read_prim.outputs:xformOp:rotateXYZ>
            custom double3 inputs:xformOp:scale
            custom double3 inputs:xformOp:translate
            custom token[] inputs:xformOpOrder
            custom token node:type = "omni.graph.nodes.WritePrim"
            custom int node:typeVersion = 1
            custom uint outputs:execOut = 1
        }

        def ComputeNode "add"
        {
            custom double3 __resolved_outputs:sum = (332.6912841796875, -0, 0)
            custom token inputs:a
            prepend token inputs:a.connect = </World/PushGraph/read_prim.outputs:xformOp:rotateXYZ>
            custom token inputs:b
            delete token inputs:b.connect = </World/PushGraph/read_prim.outputs:xformOp:rotateXYZ>
            prepend token inputs:b.connect = </World/PushGraph/constant_vec3d.inputs:value>
            custom token node:type = "omni.graph.nodes.Add"
            custom int node:typeVersion = 1
            custom token outputs:sum

            def ComputeNodeMetaData "metaData"
            {
                custom token AttributeDownstreamConnection____outputs:sum = "/World/Cone.xformOp:rotateXYZ"
            }
        }

        def ComputeNode "copy_attributes_from_bundles"
        {
            custom rel inputs:fullData
            delete rel inputs:fullData = [
                </World/PushGraph/read_prim/outputs_primBundle>,
                </World/Cube>,
            ]
            prepend rel inputs:fullData = </World/Capsule>
            custom token inputs:inputAttrNames = ""
            custom token inputs:outputAttrNames = ""
            custom rel inputs:partialData
            delete rel inputs:partialData = </World/PushGraph/read_prim/outputs_primBundle>
            custom token node:type = "omni.graph.nodes.CopyAttribute"
            custom int node:typeVersion = 1

            def Output "outputs_data"
            {
            }

            def ComputeNodeMetaData "metaData"
            {
                custom token AttributeDownstreamConnection____outputs_data = "/World/PushGraph/remove_attributes_from_bundles.inputs:data"
            }
        }

        def ComputeNode "CylinderWrite"
        {
            custom token inputs:axis
            custom uint inputs:execIn
            custom float3[] inputs:extent
            custom double inputs:height
            custom rel inputs:prim
            prepend rel inputs:prim = </World/Cylinder>
            custom double inputs:radius
            custom bool inputs:refinementEnableOverride
            custom int inputs:refinementLevel
            custom double3 inputs:xformOp:rotateXYZ
            prepend double3 inputs:xformOp:rotateXYZ.connect = </World/PushGraph/extract_attribute.outputs:output>
            custom double3 inputs:xformOp:scale
            custom double3 inputs:xformOp:translate
            custom token[] inputs:xformOpOrder
            custom token node:type = "omni.graph.nodes.WritePrim"
            custom int node:typeVersion = 1
            custom uint outputs:execOut = 1
        }

        def ComputeNode "remove_attributes_from_bundles"
        {
            custom token inputs:attrNamesToRemove = "xformOp:translate xformOp:scale size xformOpOrder extent"
            custom rel inputs:data
            prepend rel inputs:data = </World/PushGraph/copy_attributes_from_bundles/outputs_data>
            custom token node:type = "omni.graph.nodes.RemoveAttribute"
            custom int node:typeVersion = 1

            def Output "outputs_data"
            {
            }

            def ComputeNodeMetaData "metaData"
            {
                custom token AttributeDownstreamConnection____outputs_data = "/World/PushGraph/bundle_inspector.inputs:bundle"
            }
        }

        def ComputeNode "bundle_inspector"
        {
            custom rel inputs:bundle = </World/PushGraph/remove_attributes_from_bundles/outputs_data>
            custom bool inputs:print = 0
            custom token node:type = "omni.graph.nodes.BundleInspector"
            custom int node:typeVersion = 1
            custom int[] outputs:arrayDepths = [0]
            custom uint64 outputs:count = 1
            custom token[] outputs:names = ["xformOp:rotateXYZ"]
            custom token[] outputs:roles = ["none"]
            custom int[] outputs:tupleCounts = [3]
            custom token[] outputs:types = ["double"]
            custom token[] outputs:values = ["(166.067825, -0.000000, 0.000000)"]

            def Output "outputs_bundle"
            {
            }

            def ComputeNodeMetaData "metaData"
            {
                custom token AttributeDownstreamConnection____outputs_bundle = "/World/PushGraph/extract_attribute.inputs:data"
            }
        }

        def ComputeNode "extract_attribute"
        {
            custom double3 __resolved_outputs:output = (166.0678253173828, -0, 0)
            custom token inputs:attrName = "xformOp:rotateXYZ"
            custom rel inputs:data
            prepend rel inputs:data = </World/PushGraph/bundle_inspector/outputs_bundle>
            custom token node:type = "omni.graph.nodes.ExtractAttribute"
            custom int node:typeVersion = 1
            custom token outputs:output

            def ComputeNodeMetaData "metaData"
            {
                custom token AttributeDownstreamConnection____outputs:output = "/World/PushGraph/CylinderWrite.inputs:xformOp:rotateXYZ"
            }
        }

        def ComputeNode "constant_vec3d"
        {
            custom double3 inputs:value = (0, 0, 0)
            custom token node:type = "omni.graph.nodes.ConstantVec3d"
            custom int node:typeVersion = 1

            def ComputeNodeMetaData "metaData"
            {
                custom token AttributeDownstreamConnection____inputs:value = "/World/PushGraph/add.inputs:b"
            }
        }
    }

    def Cube "Cube"
    {
        float3[] extent = [(-50, -50, -50), (50, 50, 50)]
        double size = 100
        double3 xformOp:rotateXYZ = (0, -0, 0)
        double3 xformOp:scale = (1, 0.9999998211860657, 0.9999998211860657)
        double3 xformOp:translate = (0, 0, 0)
        uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
    }

    def Sphere "Sphere"
    {
        float3[] extent = [(-50, -50, -50), (50, 50, 50)]
        double radius = 50
        custom bool refinementEnableOverride = 1
        custom int refinementLevel = 2
        double3 xformOp:rotateXYZ = (0, -0, 0)
        double3 xformOp:scale = (1, 1, 1)
        double3 xformOp:translate = (178.104, 0, 0)
        uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
    }

    def Cone "Cone"
    {
        uniform token axis = "Y"
        float3[] extent = [(-50, -50, -50), (50, 50, 50)]
        double height = 100
        double radius = 50
        custom bool refinementEnableOverride = 1
        custom int refinementLevel = 2
        double3 xformOp:rotateXYZ = (0, 0, 0)
        delete double3 xformOp:rotateXYZ.connect = </World/PushGraph/read_prim.outputs:xformOp:rotateXYZ>
        prepend double3 xformOp:rotateXYZ.connect = </World/PushGraph/add.outputs:sum>
        double3 xformOp:scale = (1, 1, 1)
        double3 xformOp:translate = (-251.908, 0, 0)
        uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
    }

    def Cylinder "Cylinder"
    {
        uniform token axis = "Y"
        float3[] extent = [(-50, -50, -50), (50, 50, 50)]
        double height = 100
        double radius = 50
        custom bool refinementEnableOverride = 1
        custom int refinementLevel = 2
        double3 xformOp:rotateXYZ = (0, -0, 0)
        double3 xformOp:scale = (1, 1, 1)
        double3 xformOp:translate = (0, 0, -276.967)
        uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
    }

    def Capsule "Capsule"
    {
        uniform token axis = "Y"
        float3[] extent = [(-25, -25, -50), (25, 25, 50)]
        double height = 50
        double radius = 25
        custom bool refinementEnableOverride = 1
        custom int refinementLevel = 2
        double3 xformOp:rotateXYZ = (0, -0, 0)
        double3 xformOp:scale = (1, 1.0000003576278687, 1.0000003576278687)
        double3 xformOp:translate = (-19.7621, -1.09693e-13, 211.465)
        uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale"]
    }
}
