omni/kit/KitUpdateOrder.h
File members: omni/kit/KitUpdateOrder.h
// Copyright (c) 2019-2023, NVIDIA CORPORATION. All rights reserved.
//
// NVIDIA CORPORATION and its licensors retain all intellectual property
// and proprietary rights in and to this software, related documentation
// and any modifications thereto. Any use, reproduction, disclosure or
// distribution of this software and related documentation without an express
// license agreement from NVIDIA CORPORATION is strictly prohibited.
//
#pragma once
#include "../../carb/events/IEvents.h"
namespace omni
{
namespace kit
{
namespace update
{
enum PreUpdateOrdering : int32_t
{
    eTelmetryInitialize = -50,
    eFabricBeginFrame = -20,
    eUnspecifiedPreUpdateOrder = carb::events::kDefaultOrder
};
enum UpdateOrdering : int32_t
{
    eCheckForHydraRenderComplete = -100,
    eUsdTimelineStateRefresh = -90,
    ePythonAsyncFutureBeginUpdate = -50,
    ePythonExecBeginUpdate = -45,
    eOmniClientUpdate = -30,
    eUsdTimelineUpdate = -20,
    eUsdContextUpdate = -10,
    eUnspecifiedUpdateOrder = carb::events::kDefaultOrder,
    eUIRendering = 15,
    eFabricFlush = 20,
    eHydraRendering = 30,
    ePythonAsyncFutureEndUpdate = 50,
    ePythonExecEndUpdate = 100,
};
/*
 * IApp.next_update_async() is the original model of python scripting kit, a preferred
 * approach is either App.pre_update_async() and/or App.post_update_async(). Both can be used inside
 * a single app tick, pseudo python code:
 *       While true:
 *           await omni.kit.app.get_app().pre_update_async()
 *           # Do a bunch of python scripting things before USD Update or hydra rendering is scheduled
 *           await omni.kit.app.get_app().post_update_async()
 *           # Do a bunch of python scripting things after USD Update & hydra rendering has been scheduled
 *
 * Alternatively use either just pre_update_async() or post_update_async() in python depending on whether you want your
 * script to execute before USDUpdate or after.
 */
enum PostUpdateOrdering : int32_t
{
    eReleasePrevFrameGpuResources = -50,
    ePythonAsyncFuturePostUpdate = -25,
    ePythonExecPostUpdate = -10,
    eUnspecifiedPostUpdateOrder = carb::events::kDefaultOrder,
    eKitAppFactoryUpdate = eUnspecifiedPostUpdateOrder,
    eKitAppOSUpdate = eUnspecifiedPostUpdateOrder,
    eKitInternalUpdate = 100
};
#pragma push_macro("min")
#undef min
enum KitUsdStageEventOrdering : int32_t
{
    eKitUsdFileStageEvent = std::numeric_limits<carb::events::Order>::min() + 1,
    eKitUnspecifiedUsdStageEventOrder = carb::events::kDefaultOrder,
};
#pragma pop_macro("min")
enum IUsdStageEventOrdering : int32_t
{
    eIUsdStageUpdateAnimationGraph = 0,
    eIUsdStageUpdatePinocchioPrePhysics = 8,
    eIUsdStageUpdateTensorPrePhysics = 9,
    eIUsdStageUpdateForceFieldsPrePhysics = 9,
    eIUsdStageUpdatePhysicsVehicle = 9,
    eIUsdStageUpdatePhysicsCCT = 9,
    eIUsdStageUpdatePhysicsCameraPrePhysics = 9,
    eIUsdStageUpdatePhysics = 10,
    eIUsdStageUpdateFabricPostPhysics = 11,
    eIUsdStageUpdateVehiclePostPhysics = 12,
    eIUsdStageUpdateForceFieldsPostPhysics = 12,
    eIUsdStageUpdatePhysicsCameraPostPhysics = 12,
    eIUsdStageUpdatePhysicsUI = 12,
    eIUsdStageUpdatePinocchioPostPhysics = 13,
    eIUsdStageUpdateOmnigraph = 100,
    eIUsdStageUpdatePhysxFC = 102,
    eIUsdStageUpdateDebugDraw = 1000,
    eIUsdStageUpdateLast = 2000
};
} // namespace update
} // namespace kit
} // namespace omni