09bf5409ab
PiperOrigin-RevId: 757784741 Change-Id: Iacef6ef78c8e95ce51c5546562ad5b679f460deb
121 lines
3.5 KiB
C++
121 lines
3.5 KiB
C++
// 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 <boost/python.hpp>
|
|
#include <string>
|
|
|
|
#include "./siteAPI.h"
|
|
#include "pxr/base/tf/pyAnnotatedBoolResult.h"
|
|
#include "pxr/base/tf/pyContainerConversions.h"
|
|
#include "pxr/base/tf/pyResultConversions.h"
|
|
#include "pxr/base/tf/pyUtils.h"
|
|
#include "pxr/base/tf/wrapTypeHelpers.h"
|
|
#include "pxr/usd/sdf/primSpec.h"
|
|
#include "pxr/usd/usd/pyConversions.h"
|
|
#include "pxr/usd/usd/schemaBase.h"
|
|
|
|
using namespace boost::python;
|
|
|
|
PXR_NAMESPACE_USING_DIRECTIVE
|
|
|
|
namespace {
|
|
|
|
#define WRAP_CUSTOM \
|
|
template <class Cls> \
|
|
static void _CustomWrapCode(Cls &_class)
|
|
|
|
// fwd decl.
|
|
WRAP_CUSTOM;
|
|
|
|
static std::string _Repr(const MjcPhysicsSiteAPI &self) {
|
|
std::string primRepr = TfPyRepr(self.GetPrim());
|
|
return TfStringPrintf("MjcPhysics.SiteAPI(%s)", primRepr.c_str());
|
|
}
|
|
|
|
struct MjcPhysicsSiteAPI_CanApplyResult
|
|
: public TfPyAnnotatedBoolResult<std::string> {
|
|
MjcPhysicsSiteAPI_CanApplyResult(bool val, std::string const &msg)
|
|
: TfPyAnnotatedBoolResult<std::string>(val, msg) {}
|
|
};
|
|
|
|
static MjcPhysicsSiteAPI_CanApplyResult _WrapCanApply(const UsdPrim &prim) {
|
|
std::string whyNot;
|
|
bool result = MjcPhysicsSiteAPI::CanApply(prim, &whyNot);
|
|
return MjcPhysicsSiteAPI_CanApplyResult(result, whyNot);
|
|
}
|
|
|
|
} // anonymous namespace
|
|
|
|
void wrapMjcPhysicsSiteAPI() {
|
|
typedef MjcPhysicsSiteAPI This;
|
|
|
|
MjcPhysicsSiteAPI_CanApplyResult::Wrap<MjcPhysicsSiteAPI_CanApplyResult>(
|
|
"_CanApplyResult", "whyNot");
|
|
|
|
class_<This, bases<UsdAPISchemaBase> > cls("SiteAPI");
|
|
|
|
cls.def(init<UsdPrim>(arg("prim")))
|
|
.def(init<UsdSchemaBase const &>(arg("schemaObj")))
|
|
.def(TfTypePythonClass())
|
|
|
|
.def("Get", &This::Get, (arg("stage"), arg("path")))
|
|
.staticmethod("Get")
|
|
|
|
.def("CanApply", &_WrapCanApply, (arg("prim")))
|
|
.staticmethod("CanApply")
|
|
|
|
.def("Apply", &This::Apply, (arg("prim")))
|
|
.staticmethod("Apply")
|
|
|
|
.def("GetSchemaAttributeNames", &This::GetSchemaAttributeNames,
|
|
arg("includeInherited") = true,
|
|
return_value_policy<TfPySequenceToList>())
|
|
.staticmethod("GetSchemaAttributeNames")
|
|
|
|
.def("_GetStaticTfType", (TfType const &(*)())TfType::Find<This>,
|
|
return_value_policy<return_by_value>())
|
|
.staticmethod("_GetStaticTfType")
|
|
|
|
.def(!self)
|
|
|
|
.def("__repr__", ::_Repr);
|
|
|
|
_CustomWrapCode(cls);
|
|
}
|
|
|
|
// ===================================================================== //
|
|
// Feel free to add custom code below this line, it will be preserved by
|
|
// the code generator. The entry point for your custom code should look
|
|
// minimally like the following:
|
|
//
|
|
// WRAP_CUSTOM {
|
|
// _class
|
|
// .def("MyCustomMethod", ...)
|
|
// ;
|
|
// }
|
|
//
|
|
// Of course any other ancillary or support code may be provided.
|
|
//
|
|
// Just remember to wrap code in the appropriate delimiters:
|
|
// 'namespace {', '}'.
|
|
//
|
|
// ===================================================================== //
|
|
// --(BEGIN CUSTOM CODE)--
|
|
|
|
namespace {
|
|
|
|
WRAP_CUSTOM {}
|
|
|
|
} // namespace
|