MCPcopy Create free account
hub / github.com/NVIDIAGameWorks/Falcor / registerScriptBindings

Method registerScriptBindings

Source/Mogwai/MogwaiScripting.cpp:126–228  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

124 }
125
126 void Renderer::registerScriptBindings(pybind11::module& m)
127 {
128 using namespace pybind11::literals;
129
130 pybind11::class_<Renderer> renderer(m, "Renderer");
131 renderer.def(kRunScript.c_str(), &Renderer::loadScript, "path"_a);
132 renderer.def(kLoadScene.c_str(), &Renderer::loadScene, "path"_a, "buildFlags"_a = SceneBuilder::Flags::Default);
133 renderer.def(kUnloadScene.c_str(), &Renderer::unloadScene);
134 renderer.def(kSaveConfig.c_str(), &Renderer::saveConfig, "path"_a);
135 renderer.def(kAddGraph.c_str(), &Renderer::addGraph, "graph"_a);
136 renderer.def(kSetActiveGraph.c_str(),
137 [](Renderer* pRenderer, const ref<RenderGraph>& pGraph)
138 {
139 pRenderer->setActiveGraph(pGraph);
140 }, "graph"_a);
141 renderer.def(kRemoveGraph.c_str(), pybind11::overload_cast<const std::string&>(&Renderer::removeGraph), "name"_a);
142 renderer.def(kRemoveGraph.c_str(), pybind11::overload_cast<const ref<RenderGraph>&>(&Renderer::removeGraph), "graph"_a);
143 renderer.def(kGetGraph.c_str(), &Renderer::getGraph, "name"_a);
144 renderer.def_property(kSceneUpdateCallback.c_str(), &Renderer::getSceneUpdateCallback, &Renderer::setSceneUpdateCallback);
145
146 auto resizeFrameBuffer = [](Renderer* pRenderer, uint32_t width, uint32_t height) { pRenderer->resizeFrameBuffer(width, height); };
147 renderer.def(kResizeFrameBuffer.c_str(), resizeFrameBuffer);
148 renderer.def("resizeSwapChain", resizeFrameBuffer); // PYTHONDEPRECATED
149
150 auto renderFrame = [](Renderer* pRenderer) { pRenderer->getProgressBar().close(); pRenderer->renderFrame(); };
151 renderer.def(kRenderFrame.c_str(), renderFrame);
152
153 renderer.def_property_readonly(kScene.c_str(), &Renderer::getScene);
154 renderer.def_property_readonly(kActiveGraph.c_str(), &Renderer::getActiveGraph);
155 renderer.def_property_readonly(kClock.c_str(), [] (Renderer* pRenderer) { return &pRenderer->getGlobalClock(); });
156 renderer.def_property_readonly(kProfiler.c_str(), [] (Renderer* pRenderer) { return pRenderer->getDevice()->getProfiler(); });
157
158 auto getUI = [](Renderer* pRenderer) { return pRenderer->isUiEnabled(); };
159 auto setUI = [](Renderer* pRenderer, bool show) { pRenderer->toggleUI(show); };
160 renderer.def_property(kUI.c_str(), getUI, setUI);
161
162 renderer.def_property(kKeyCallback.c_str(), &Renderer::getKeyCallback, &Renderer::setKeyCallback);
163
164 for (auto& pe : mpExtensions)
165 {
166 pe->registerScriptBindings(m);
167 if (auto var = pe->getScriptVar(); !var.empty())
168 {
169 renderer.def_property_readonly(var.c_str(), [&pe] (Renderer* pRenderer) { return pe.get(); });
170 }
171 }
172
173 // Replace the `help` function
174 auto globalHelp = []() { pybind11::print(kGlobalHelp); };
175 m.def("help", globalHelp);
176
177 auto objectHelp = [](pybind11::object o)
178 {
179 auto b = pybind11::module::import("builtins");
180 auto h = b.attr("help");
181 h(o);
182 };
183 m.def("help", objectHelp, "object"_a);

Callers 1

onLoadMethod · 0.95

Calls 15

listClass · 0.85
setActiveGraphMethod · 0.80
renderFrameMethod · 0.80
getProfilerMethod · 0.80
setObjectMethod · 0.80
addOptionsMethod · 0.80
addFilteredAttributesMethod · 0.80
hFunction · 0.50
dictClass · 0.50
resizeFrameBufferMethod · 0.45
closeMethod · 0.45

Tested by

no test coverage detected