#usda 1.0
(
    doc ="""Generated from node description file OgnTutorialOverrideType.ogn
Contains templates for node types found in that file."""
)

def OmniGraph "TestGraph"
{
    token evaluator:type = "push"
    int2 fileFormatVersion = (1, 3)
    token flatCacheBacking = "Shared"
    token pipelineStage = "pipelineStageSimulation"

    def OmniGraphNode "Template_omni_graph_tutorials_OverrideType" (
        docs="""This is a tutorial node. It has an input and output of type float[3], an input and output of type double[3], and a type override specification that lets the node use Carbonite types for the generated data on the float[3] attributes only. Ordinarily all of the types would be defined in a seperate configuration file so that it can be shared for a project. In that case the type definition build flag would also be used so that this information does not have to be embedded in every .ogn file in the project. It is placed directly in the file here solely for instructional purposes.  The compute is just a rotation of components from x->y, y->z, and z->x, for each input type."""
    )
    {
        token node:type = "omni.graph.tutorials.OverrideType"
        int node:typeVersion = 1

        # 2 attributes
        custom double3 inputs:data = (0.0, 0.0, 0.0) (
            docs="""The value to rotate"""
        )
        custom float3 inputs:typedData = (0.0, 0.0, 0.0) (
            docs="""The value to rotate"""
        )

        # 2 attributes
        custom double3 outputs:data (
            docs="""The rotated version of inputs::data"""
        )
        custom float3 outputs:typedData (
            docs="""The rotated version of inputs::typedData"""
        )
    }
}
