#usda 1.0
(
    customLayerData = {
        dictionary cameraSettings = {
            dictionary Front = {
                double3 position = (0, 0, 50000)
                double radius = 500
            }
            dictionary Perspective = {
                double3 position = (500, 500, 500)
                double3 target = (-0.00000397803842133726, 0.000007956076785831101, -0.00000397803842133726)
            }
            dictionary Right = {
                double3 position = (-50000, 0, 0)
                double radius = 500
            }
            dictionary Top = {
                double3 position = (0, 50000, 0)
                double radius = 500
            }
            string boundCamera = "/OmniverseKit_Persp"
        }
        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)
            bool "rtx:hashed:7351ffd78c5b3d6bf71f42e4d2dd2b35" = 0
            bool "rtx:hashed:95b9b3a228047f919df3074b7014886f" = 0
            float3 "rtx:lightspeed:material:overrideAlbedo" = (0.5, 0.5, 0.5)
            float3 "rtx:lightspeed:material:overrideEmissiveColor" = (0.5, 0.5, 0.5)
            bool "rtx:pathtracing:nrc:canRun" = 0
            float3 "rtx:post:backgroundZeroAlpha:backgroundDefaultColor" = (0, 0, 0)
            float3 "rtx:post:colorcorr:contrast" = (1, 1, 1)
            float3 "rtx:post:colorcorr:gain" = (1, 1, 1)
            float3 "rtx:post:colorcorr:gamma" = (1, 1, 1)
            float3 "rtx:post:colorcorr:offset" = (0, 0, 0)
            float3 "rtx:post:colorcorr:saturation" = (1, 1, 1)
            float3 "rtx:post:colorgrad:blackpoint" = (0, 0, 0)
            float3 "rtx:post:colorgrad:contrast" = (1, 1, 1)
            float3 "rtx:post:colorgrad:gain" = (1, 1, 1)
            float3 "rtx:post:colorgrad:gamma" = (1, 1, 1)
            float3 "rtx:post:colorgrad:lift" = (0, 0, 0)
            float3 "rtx:post:colorgrad:multiply" = (1, 1, 1)
            float3 "rtx:post:colorgrad:offset" = (0, 0, 0)
            float3 "rtx:post:colorgrad:whitepoint" = (1, 1, 1)
            float3 "rtx:post:lensDistortion:lensFocalLengthArray" = (10, 30, 50)
            float3 "rtx:post:lensFlares:anisoFlareFalloffX" = (450, 475, 500)
            float3 "rtx:post:lensFlares:anisoFlareFalloffY" = (10, 10, 10)
            float3 "rtx:post:lensFlares:cutoffPoint" = (2, 2, 2)
            float3 "rtx:post:lensFlares:haloFlareFalloff" = (10, 10, 10)
            float3 "rtx:post:lensFlares:haloFlareRadius" = (75, 75, 75)
            float3 "rtx:post:lensFlares:isotropicFlareFalloff" = (50, 50, 50)
            float3 "rtx:post:tonemap:whitepoint" = (1, 1, 1)
            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)
            int "rtx:shaderDb:cachePermutationIndex" = -1
        }
    }
    defaultPrim = "World"
    endTimeCode = 100
    metersPerUnit = 0.01
    startTimeCode = 0
    timeCodesPerSecond = 24
    upAxis = "Y"
)

def Xform "World"
{
    def OmniGraph "ActionGraph"
    {
        token evaluationMode = "Automatic"
        token evaluator:type = "execution"
        token fabricCacheBacking = "Shared"
        int2 fileFormatVersion = (1, 4)
        token pipelineStage = "pipelineStageSimulation"

        def OmniGraphNode "on_keyboard_input" (
            prepend apiSchemas = ["NodeGraphNodeAPI"]
        )
        {
            custom bool inputs:altIn = 0
            custom bool inputs:ctrlIn = 0
            custom token inputs:keyIn = "A" (
                allowedTokens = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "Apostrophe", "Backslash", "Backspace", "CapsLock", "Comma", "Del", "Down", "End", "Enter", "Equal", "Escape", "F1", "F10", "F11", "F12", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "GraveAccent", "Home", "Insert", "Key0", "Key1", "Key2", "Key3", "Key4", "Key5", "Key6", "Key7", "Key8", "Key9", "Left", "LeftAlt", "LeftBracket", "LeftControl", "LeftShift", "LeftSuper", "Menu", "Minus", "NumLock", "Numpad0", "Numpad1", "Numpad2", "Numpad3", "Numpad4", "Numpad5", "Numpad6", "Numpad7", "Numpad8", "Numpad9", "NumpadAdd", "NumpadDel", "NumpadDivide", "NumpadEnter", "NumpadEqual", "NumpadMultiply", "NumpadSubtract", "PageDown", "PageUp", "Pause", "Period", "PrintScreen", "Right", "RightAlt", "RightBracket", "RightControl", "RightShift", "RightSuper", "ScrollLock", "Semicolon", "Slash", "Space", "Tab", "Up"]
            )
            custom bool inputs:onlyPlayback = 0
            custom bool inputs:shiftIn = 0
            token node:type = "omni.graph.action.OnKeyboardInput"
            int node:typeVersion = 3
            custom bool outputs:isPressed
            custom token outputs:keyOut
            custom uint outputs:pressed (
                customData = {
                    bool isExecution = 1
                }
            )
            custom uint outputs:released (
                customData = {
                    bool isExecution = 1
                }
            )
            uniform token ui:nodegraph:node:expansionState = "open"
            uniform float2 ui:nodegraph:node:pos = (-28.32303, 30.558456)
        }

        def OmniGraphNode "for_loop" (
            prepend apiSchemas = ["NodeGraphNodeAPI"]
        )
        {
            custom uint inputs:breakLoop
            custom uint inputs:execIn
            prepend uint inputs:execIn.connect = [
                </World/ActionGraph/on_keyboard_input.outputs:pressed>,
                </World/ActionGraph/on_impulse_event.outputs:execOut>,
            ]
            custom int inputs:start = 0
            custom int inputs:step = 1
            custom int inputs:stop = 2
            token node:type = "omni.graph.action.ForLoop"
            int node:typeVersion = 1
            custom uint outputs:finished (
                customData = {
                    bool isExecution = 1
                }
            )
            custom int outputs:index
            custom uint outputs:loopBody (
                customData = {
                    bool isExecution = 1
                }
            )
            custom int outputs:value
            custom int state:i = -1
            uniform token ui:nodegraph:node:expansionState = "open"
            uniform float2 ui:nodegraph:node:pos = (310, 94)
        }

        def OmniGraphNode "counter" (
            prepend apiSchemas = ["NodeGraphNodeAPI"]
        )
        {
            custom uint inputs:execIn
            prepend uint inputs:execIn.connect = </World/ActionGraph/for_loop.outputs:loopBody>
            custom token inputs:logLevel = "Info" (
                allowedTokens = ["Info", "Warning", "Error"]
            )
            custom uint inputs:reset
            token node:type = "omni.graph.action.Counter"
            int node:typeVersion = 1
            custom int outputs:count
            custom uint outputs:execOut (
                customData = {
                    bool isExecution = 1
                }
            )
            custom int state:count
            uniform token ui:nodegraph:node:expansionState = "open"
            uniform float2 ui:nodegraph:node:pos = (664.4135, -53.116158)
        }

        def OmniGraphNode "counter_01" (
            prepend apiSchemas = ["NodeGraphNodeAPI"]
        )
        {
            custom uint inputs:execIn
            prepend uint inputs:execIn.connect = </World/ActionGraph/for_loop.outputs:loopBody>
            custom token inputs:logLevel = "Info" (
                allowedTokens = ["Info", "Warning", "Error"]
            )
            custom uint inputs:reset
            token node:type = "omni.graph.action.Counter"
            int node:typeVersion = 1
            custom int outputs:count
            custom uint outputs:execOut (
                customData = {
                    bool isExecution = 1
                }
            )
            custom int state:count
            uniform token ui:nodegraph:node:expansionState = "open"
            uniform float2 ui:nodegraph:node:pos = (660.609, 374.31915)
        }

        def OmniGraphNode "counter_02" (
            prepend apiSchemas = ["NodeGraphNodeAPI"]
        )
        {
            custom uint inputs:execIn
            prepend uint inputs:execIn.connect = </World/ActionGraph/sync_gate.outputs:execOut>
            custom token inputs:logLevel = "Info" (
                allowedTokens = ["Info", "Warning", "Error"]
            )
            custom uint inputs:reset
            token node:type = "omni.graph.action.Counter"
            int node:typeVersion = 1
            custom int outputs:count
            custom uint outputs:execOut (
                customData = {
                    bool isExecution = 1
                }
            )
            custom int state:count
            uniform token ui:nodegraph:node:expansionState = "open"
            uniform float2 ui:nodegraph:node:pos = (1403.963, 203.39139)
        }

        def OmniGraphNode "on_impulse_event" (
            prepend apiSchemas = ["NodeGraphNodeAPI"]
        )
        {
            custom bool inputs:onlyPlayback = 0
            token node:type = "omni.graph.action.OnImpulseEvent"
            int node:typeVersion = 2
            custom uint outputs:execOut (
                customData = {
                    bool isExecution = 1
                }
            )
            custom bool state:enableImpulse
            uniform token ui:nodegraph:node:expansionState = "open"
            uniform float2 ui:nodegraph:node:pos = (10.181118, -137.32922)
        }

        def OmniGraphNode "sync_gate" (
            prepend apiSchemas = ["NodeGraphNodeAPI"]
        )
        {
            custom uint inputs:execIn
            prepend uint inputs:execIn.connect = [
                </World/ActionGraph/counter.outputs:execOut>,
                </World/ActionGraph/counter_01.outputs:execOut>,
            ]
            custom uint64 inputs:syncValue = 0
            prepend uint64 inputs:syncValue.connect = </World/ActionGraph/to_uint64.outputs:converted>
            token node:type = "omni.graph.action.SyncGate"
            int node:typeVersion = 1
            custom uint outputs:execOut (
                customData = {
                    bool isExecution = 1
                }
            )
            custom uint64 outputs:syncValue
            uniform token ui:nodegraph:node:expansionState = "open"
            uniform float2 ui:nodegraph:node:pos = (1065.7456, 144.79875)
        }

        def OmniGraphNode "to_uint64" (
            prepend apiSchemas = ["NodeGraphNodeAPI"]
        )
        {
            custom token inputs:value
            prepend token inputs:value.connect = </World/ActionGraph/for_loop.outputs:index>
            token node:type = "omni.graph.nodes.ToUint64"
            int node:typeVersion = 1
            custom token outputs:converted
            uniform token ui:nodegraph:node:expansionState = "open"
            uniform float2 ui:nodegraph:node:pos = (734.48773, 203.07834)
        }
    }
}

