// Copyright 2025 DeepMind Technologies Limited
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#include <mujoco/experimental/usd/mjcPhysics/tokens.h>

PXR_NAMESPACE_OPEN_SCOPE

MjcPhysicsTokensType::MjcPhysicsTokensType()
    : affine("affine", TfToken::Immortal),
      auto_("auto", TfToken::Immortal),
      cg("cg", TfToken::Immortal),
      convex("convex", TfToken::Immortal),
      degree("degree", TfToken::Immortal),
      dense("dense", TfToken::Immortal),
      elliptic("elliptic", TfToken::Immortal),
      euler("euler", TfToken::Immortal),
      exact("exact", TfToken::Immortal),
      false_("false", TfToken::Immortal),
      filter("filter", TfToken::Immortal),
      filterexact("filterexact", TfToken::Immortal),
      fixed("fixed", TfToken::Immortal),
      implicit("implicit", TfToken::Immortal),
      implicitfast("implicitfast", TfToken::Immortal),
      integrator("integrator", TfToken::Immortal),
      legacy("legacy", TfToken::Immortal),
      mjcAct("mjc:act", TfToken::Immortal),
      mjcActDim("mjc:actDim", TfToken::Immortal),
      mjcActEarly("mjc:actEarly", TfToken::Immortal),
      mjcActLimited("mjc:actLimited", TfToken::Immortal),
      mjcActRangeMax("mjc:actRange:max", TfToken::Immortal),
      mjcActRangeMin("mjc:actRange:min", TfToken::Immortal),
      mjcActuatorfrclimited("mjc:actuatorfrclimited", TfToken::Immortal),
      mjcActuatorfrcrangeMax("mjc:actuatorfrcrange:max", TfToken::Immortal),
      mjcActuatorfrcrangeMin("mjc:actuatorfrcrange:min", TfToken::Immortal),
      mjcActuatorgravcomp("mjc:actuatorgravcomp", TfToken::Immortal),
      mjcArmature("mjc:armature", TfToken::Immortal),
      mjcBiasPrm("mjc:biasPrm", TfToken::Immortal),
      mjcBiasType("mjc:biasType", TfToken::Immortal),
      mjcCoef0("mjc:coef0", TfToken::Immortal),
      mjcCoef1("mjc:coef1", TfToken::Immortal),
      mjcCoef2("mjc:coef2", TfToken::Immortal),
      mjcCoef3("mjc:coef3", TfToken::Immortal),
      mjcCoef4("mjc:coef4", TfToken::Immortal),
      mjcCompilerAlignFree("mjc:compiler:alignFree", TfToken::Immortal),
      mjcCompilerAngle("mjc:compiler:angle", TfToken::Immortal),
      mjcCompilerAutoLimits("mjc:compiler:autoLimits", TfToken::Immortal),
      mjcCompilerBalanceInertia("mjc:compiler:balanceInertia",
                                TfToken::Immortal),
      mjcCompilerBoundInertia("mjc:compiler:boundInertia", TfToken::Immortal),
      mjcCompilerBoundMass("mjc:compiler:boundMass", TfToken::Immortal),
      mjcCompilerFitAABB("mjc:compiler:fitAABB", TfToken::Immortal),
      mjcCompilerFuseStatic("mjc:compiler:fuseStatic", TfToken::Immortal),
      mjcCompilerInertiaFromGeom("mjc:compiler:inertiaFromGeom",
                                 TfToken::Immortal),
      mjcCompilerInertiaGroupRangeMax("mjc:compiler:inertiaGroupRange:max",
                                      TfToken::Immortal),
      mjcCompilerInertiaGroupRangeMin("mjc:compiler:inertiaGroupRange:min",
                                      TfToken::Immortal),
      mjcCompilerSaveInertial("mjc:compiler:saveInertial", TfToken::Immortal),
      mjcCompilerSetTotalMass("mjc:compiler:setTotalMass", TfToken::Immortal),
      mjcCompilerUseThread("mjc:compiler:useThread", TfToken::Immortal),
      mjcCondim("mjc:condim", TfToken::Immortal),
      mjcCrankLength("mjc:crankLength", TfToken::Immortal),
      mjcCtrl("mjc:ctrl", TfToken::Immortal),
      mjcCtrlLimited("mjc:ctrlLimited", TfToken::Immortal),
      mjcCtrlRangeMax("mjc:ctrlRange:max", TfToken::Immortal),
      mjcCtrlRangeMin("mjc:ctrlRange:min", TfToken::Immortal),
      mjcDamping("mjc:damping", TfToken::Immortal),
      mjcDynPrm("mjc:dynPrm", TfToken::Immortal),
      mjcDynType("mjc:dynType", TfToken::Immortal),
      mjcFlagActuation("mjc:flag:actuation", TfToken::Immortal),
      mjcFlagAutoreset("mjc:flag:autoreset", TfToken::Immortal),
      mjcFlagClampctrl("mjc:flag:clampctrl", TfToken::Immortal),
      mjcFlagConstraint("mjc:flag:constraint", TfToken::Immortal),
      mjcFlagContact("mjc:flag:contact", TfToken::Immortal),
      mjcFlagDamper("mjc:flag:damper", TfToken::Immortal),
      mjcFlagEnergy("mjc:flag:energy", TfToken::Immortal),
      mjcFlagEquality("mjc:flag:equality", TfToken::Immortal),
      mjcFlagEulerdamp("mjc:flag:eulerdamp", TfToken::Immortal),
      mjcFlagFilterparent("mjc:flag:filterparent", TfToken::Immortal),
      mjcFlagFrictionloss("mjc:flag:frictionloss", TfToken::Immortal),
      mjcFlagFwdinv("mjc:flag:fwdinv", TfToken::Immortal),
      mjcFlagGravity("mjc:flag:gravity", TfToken::Immortal),
      mjcFlagInvdiscrete("mjc:flag:invdiscrete", TfToken::Immortal),
      mjcFlagIsland("mjc:flag:island", TfToken::Immortal),
      mjcFlagLimit("mjc:flag:limit", TfToken::Immortal),
      mjcFlagMidphase("mjc:flag:midphase", TfToken::Immortal),
      mjcFlagMulticcd("mjc:flag:multiccd", TfToken::Immortal),
      mjcFlagNativeccd("mjc:flag:nativeccd", TfToken::Immortal),
      mjcFlagOverride("mjc:flag:override", TfToken::Immortal),
      mjcFlagRefsafe("mjc:flag:refsafe", TfToken::Immortal),
      mjcFlagSensor("mjc:flag:sensor", TfToken::Immortal),
      mjcFlagSpring("mjc:flag:spring", TfToken::Immortal),
      mjcFlagWarmstart("mjc:flag:warmstart", TfToken::Immortal),
      mjcForceLimited("mjc:forceLimited", TfToken::Immortal),
      mjcForceRangeMax("mjc:forceRange:max", TfToken::Immortal),
      mjcForceRangeMin("mjc:forceRange:min", TfToken::Immortal),
      mjcFrictionloss("mjc:frictionloss", TfToken::Immortal),
      mjcGainPrm("mjc:gainPrm", TfToken::Immortal),
      mjcGainType("mjc:gainType", TfToken::Immortal),
      mjcGap("mjc:gap", TfToken::Immortal),
      mjcGear("mjc:gear", TfToken::Immortal),
      mjcGroup("mjc:group", TfToken::Immortal),
      mjcInertia("mjc:inertia", TfToken::Immortal),
      mjcInheritRange("mjc:inheritRange", TfToken::Immortal),
      mjcJointInParent("mjc:jointInParent", TfToken::Immortal),
      mjcLengthRangeMax("mjc:lengthRange:max", TfToken::Immortal),
      mjcLengthRangeMin("mjc:lengthRange:min", TfToken::Immortal),
      mjcLimited("mjc:limited", TfToken::Immortal),
      mjcMargin("mjc:margin", TfToken::Immortal),
      mjcMaxhullvert("mjc:maxhullvert", TfToken::Immortal),
      mjcMpos("mjc:mpos", TfToken::Immortal),
      mjcMquat("mjc:mquat", TfToken::Immortal),
      mjcOptionActuatorgroupdisable("mjc:option:actuatorgroupdisable",
                                    TfToken::Immortal),
      mjcOptionCcd_iterations("mjc:option:ccd_iterations", TfToken::Immortal),
      mjcOptionCcd_tolerance("mjc:option:ccd_tolerance", TfToken::Immortal),
      mjcOptionCone("mjc:option:cone", TfToken::Immortal),
      mjcOptionDensity("mjc:option:density", TfToken::Immortal),
      mjcOptionImpratio("mjc:option:impratio", TfToken::Immortal),
      mjcOptionIntegrator("mjc:option:integrator", TfToken::Immortal),
      mjcOptionIterations("mjc:option:iterations", TfToken::Immortal),
      mjcOptionJacobian("mjc:option:jacobian", TfToken::Immortal),
      mjcOptionLs_iterations("mjc:option:ls_iterations", TfToken::Immortal),
      mjcOptionLs_tolerance("mjc:option:ls_tolerance", TfToken::Immortal),
      mjcOptionMagnetic("mjc:option:magnetic", TfToken::Immortal),
      mjcOptionNoslip_iterations("mjc:option:noslip_iterations",
                                 TfToken::Immortal),
      mjcOptionNoslip_tolerance("mjc:option:noslip_tolerance",
                                TfToken::Immortal),
      mjcOptionO_friction("mjc:option:o_friction", TfToken::Immortal),
      mjcOptionO_margin("mjc:option:o_margin", TfToken::Immortal),
      mjcOptionO_solimp("mjc:option:o_solimp", TfToken::Immortal),
      mjcOptionO_solref("mjc:option:o_solref", TfToken::Immortal),
      mjcOptionSdf_initpoints("mjc:option:sdf_initpoints", TfToken::Immortal),
      mjcOptionSdf_iterations("mjc:option:sdf_iterations", TfToken::Immortal),
      mjcOptionSolver("mjc:option:solver", TfToken::Immortal),
      mjcOptionTimestep("mjc:option:timestep", TfToken::Immortal),
      mjcOptionTolerance("mjc:option:tolerance", TfToken::Immortal),
      mjcOptionViscosity("mjc:option:viscosity", TfToken::Immortal),
      mjcOptionWind("mjc:option:wind", TfToken::Immortal),
      mjcPath("mjc:path", TfToken::Immortal),
      mjcPathCoef("mjc:path:coef", TfToken::Immortal),
      mjcPathDivisors("mjc:path:divisors", TfToken::Immortal),
      mjcPathIndices("mjc:path:indices", TfToken::Immortal),
      mjcPathSegments("mjc:path:segments", TfToken::Immortal),
      mjcPriority("mjc:priority", TfToken::Immortal),
      mjcQpos("mjc:qpos", TfToken::Immortal),
      mjcQvel("mjc:qvel", TfToken::Immortal),
      mjcRangeMax("mjc:range:max", TfToken::Immortal),
      mjcRangeMin("mjc:range:min", TfToken::Immortal),
      mjcRef("mjc:ref", TfToken::Immortal),
      mjcRefSite("mjc:refSite", TfToken::Immortal),
      mjcRgba("mjc:rgba", TfToken::Immortal),
      mjcRollingfriction("mjc:rollingfriction", TfToken::Immortal),
      mjcShellinertia("mjc:shellinertia", TfToken::Immortal),
      mjcSideSites("mjc:sideSites", TfToken::Immortal),
      mjcSideSitesIndices("mjc:sideSites:indices", TfToken::Immortal),
      mjcSliderSite("mjc:sliderSite", TfToken::Immortal),
      mjcSolimp("mjc:solimp", TfToken::Immortal),
      mjcSolimpfriction("mjc:solimpfriction", TfToken::Immortal),
      mjcSolimplimit("mjc:solimplimit", TfToken::Immortal),
      mjcSolmix("mjc:solmix", TfToken::Immortal),
      mjcSolref("mjc:solref", TfToken::Immortal),
      mjcSolreffriction("mjc:solreffriction", TfToken::Immortal),
      mjcSolreflimit("mjc:solreflimit", TfToken::Immortal),
      mjcSpringdamper("mjc:springdamper", TfToken::Immortal),
      mjcSpringlength("mjc:springlength", TfToken::Immortal),
      mjcSpringref("mjc:springref", TfToken::Immortal),
      mjcStiffness("mjc:stiffness", TfToken::Immortal),
      mjcTarget("mjc:target", TfToken::Immortal),
      mjcTorqueScale("mjc:torqueScale", TfToken::Immortal),
      mjcTorsionalfriction("mjc:torsionalfriction", TfToken::Immortal),
      mjcType("mjc:type", TfToken::Immortal),
      mjcWidth("mjc:width", TfToken::Immortal),
      muscle("muscle", TfToken::Immortal),
      newton("newton", TfToken::Immortal),
      none("none", TfToken::Immortal),
      pgs("pgs", TfToken::Immortal),
      pyramidal("pyramidal", TfToken::Immortal),
      radian("radian", TfToken::Immortal),
      rk4("rk4", TfToken::Immortal),
      shell("shell", TfToken::Immortal),
      sparse("sparse", TfToken::Immortal),
      spatial("spatial", TfToken::Immortal),
      true_("true", TfToken::Immortal),
      user("user", TfToken::Immortal),
      MjcActuator("MjcActuator", TfToken::Immortal),
      MjcCollisionAPI("MjcCollisionAPI", TfToken::Immortal),
      MjcEqualityAPI("MjcEqualityAPI", TfToken::Immortal),
      MjcEqualityConnectAPI("MjcEqualityConnectAPI", TfToken::Immortal),
      MjcEqualityJointAPI("MjcEqualityJointAPI", TfToken::Immortal),
      MjcEqualityWeldAPI("MjcEqualityWeldAPI", TfToken::Immortal),
      MjcImageableAPI("MjcImageableAPI", TfToken::Immortal),
      MjcJointAPI("MjcJointAPI", TfToken::Immortal),
      MjcKeyframe("MjcKeyframe", TfToken::Immortal),
      MjcMaterialAPI("MjcMaterialAPI", TfToken::Immortal),
      MjcMeshCollisionAPI("MjcMeshCollisionAPI", TfToken::Immortal),
      MjcSceneAPI("MjcSceneAPI", TfToken::Immortal),
      MjcSiteAPI("MjcSiteAPI", TfToken::Immortal),
      MjcTendon("MjcTendon", TfToken::Immortal),
      allTokens({affine,
                 auto_,
                 cg,
                 convex,
                 degree,
                 dense,
                 elliptic,
                 euler,
                 exact,
                 false_,
                 filter,
                 filterexact,
                 fixed,
                 implicit,
                 implicitfast,
                 integrator,
                 legacy,
                 mjcAct,
                 mjcActDim,
                 mjcActEarly,
                 mjcActLimited,
                 mjcActRangeMax,
                 mjcActRangeMin,
                 mjcActuatorfrclimited,
                 mjcActuatorfrcrangeMax,
                 mjcActuatorfrcrangeMin,
                 mjcActuatorgravcomp,
                 mjcArmature,
                 mjcBiasPrm,
                 mjcBiasType,
                 mjcCoef0,
                 mjcCoef1,
                 mjcCoef2,
                 mjcCoef3,
                 mjcCoef4,
                 mjcCompilerAlignFree,
                 mjcCompilerAngle,
                 mjcCompilerAutoLimits,
                 mjcCompilerBalanceInertia,
                 mjcCompilerBoundInertia,
                 mjcCompilerBoundMass,
                 mjcCompilerFitAABB,
                 mjcCompilerFuseStatic,
                 mjcCompilerInertiaFromGeom,
                 mjcCompilerInertiaGroupRangeMax,
                 mjcCompilerInertiaGroupRangeMin,
                 mjcCompilerSaveInertial,
                 mjcCompilerSetTotalMass,
                 mjcCompilerUseThread,
                 mjcCondim,
                 mjcCrankLength,
                 mjcCtrl,
                 mjcCtrlLimited,
                 mjcCtrlRangeMax,
                 mjcCtrlRangeMin,
                 mjcDamping,
                 mjcDynPrm,
                 mjcDynType,
                 mjcFlagActuation,
                 mjcFlagAutoreset,
                 mjcFlagClampctrl,
                 mjcFlagConstraint,
                 mjcFlagContact,
                 mjcFlagDamper,
                 mjcFlagEnergy,
                 mjcFlagEquality,
                 mjcFlagEulerdamp,
                 mjcFlagFilterparent,
                 mjcFlagFrictionloss,
                 mjcFlagFwdinv,
                 mjcFlagGravity,
                 mjcFlagInvdiscrete,
                 mjcFlagIsland,
                 mjcFlagLimit,
                 mjcFlagMidphase,
                 mjcFlagMulticcd,
                 mjcFlagNativeccd,
                 mjcFlagOverride,
                 mjcFlagRefsafe,
                 mjcFlagSensor,
                 mjcFlagSpring,
                 mjcFlagWarmstart,
                 mjcForceLimited,
                 mjcForceRangeMax,
                 mjcForceRangeMin,
                 mjcFrictionloss,
                 mjcGainPrm,
                 mjcGainType,
                 mjcGap,
                 mjcGear,
                 mjcGroup,
                 mjcInertia,
                 mjcInheritRange,
                 mjcJointInParent,
                 mjcLengthRangeMax,
                 mjcLengthRangeMin,
                 mjcLimited,
                 mjcMargin,
                 mjcMaxhullvert,
                 mjcMpos,
                 mjcMquat,
                 mjcOptionActuatorgroupdisable,
                 mjcOptionCcd_iterations,
                 mjcOptionCcd_tolerance,
                 mjcOptionCone,
                 mjcOptionDensity,
                 mjcOptionImpratio,
                 mjcOptionIntegrator,
                 mjcOptionIterations,
                 mjcOptionJacobian,
                 mjcOptionLs_iterations,
                 mjcOptionLs_tolerance,
                 mjcOptionMagnetic,
                 mjcOptionNoslip_iterations,
                 mjcOptionNoslip_tolerance,
                 mjcOptionO_friction,
                 mjcOptionO_margin,
                 mjcOptionO_solimp,
                 mjcOptionO_solref,
                 mjcOptionSdf_initpoints,
                 mjcOptionSdf_iterations,
                 mjcOptionSolver,
                 mjcOptionTimestep,
                 mjcOptionTolerance,
                 mjcOptionViscosity,
                 mjcOptionWind,
                 mjcPath,
                 mjcPathCoef,
                 mjcPathDivisors,
                 mjcPathIndices,
                 mjcPathSegments,
                 mjcPriority,
                 mjcQpos,
                 mjcQvel,
                 mjcRangeMax,
                 mjcRangeMin,
                 mjcRef,
                 mjcRefSite,
                 mjcRgba,
                 mjcRollingfriction,
                 mjcShellinertia,
                 mjcSideSites,
                 mjcSideSitesIndices,
                 mjcSliderSite,
                 mjcSolimp,
                 mjcSolimpfriction,
                 mjcSolimplimit,
                 mjcSolmix,
                 mjcSolref,
                 mjcSolreffriction,
                 mjcSolreflimit,
                 mjcSpringdamper,
                 mjcSpringlength,
                 mjcSpringref,
                 mjcStiffness,
                 mjcTarget,
                 mjcTorqueScale,
                 mjcTorsionalfriction,
                 mjcType,
                 mjcWidth,
                 muscle,
                 newton,
                 none,
                 pgs,
                 pyramidal,
                 radian,
                 rk4,
                 shell,
                 sparse,
                 spatial,
                 true_,
                 user,
                 MjcActuator,
                 MjcCollisionAPI,
                 MjcEqualityAPI,
                 MjcEqualityConnectAPI,
                 MjcEqualityJointAPI,
                 MjcEqualityWeldAPI,
                 MjcImageableAPI,
                 MjcJointAPI,
                 MjcKeyframe,
                 MjcMaterialAPI,
                 MjcMeshCollisionAPI,
                 MjcSceneAPI,
                 MjcSiteAPI,
                 MjcTendon}) {}

TfStaticData<MjcPhysicsTokensType> MjcPhysicsTokens;

PXR_NAMESPACE_CLOSE_SCOPE
