+class CommonPatchCreator : public PatchCreator
+{
+public:
+ void Patch_undoSave(scene::Node& patch) const
+ {
+ Node_getPatch(patch)->undoSave();
+ }
+ void Patch_resize(scene::Node& patch, std::size_t width, std::size_t height) const
+ {
+ Node_getPatch(patch)->setDims(width, height);
+ }
+ PatchControlMatrix Patch_getControlPoints(scene::Node& node) const
+ {
+ Patch& patch = *Node_getPatch(node);
+ return PatchControlMatrix(patch.getHeight(), patch.getWidth(), patch.getControlPoints().data());
+ }
+ void Patch_controlPointsChanged(scene::Node& patch) const
+ {
+ return Node_getPatch(patch)->controlPointsChanged();
+ }
+ const char* Patch_getShader(scene::Node& patch) const
+ {
+ return Node_getPatch(patch)->GetShader();
+ }
+ void Patch_setShader(scene::Node& patch, const char* shader) const
+ {
+ Node_getPatch(patch)->SetShader(shader);
+ }
+};
+
+class Quake3PatchCreator : public CommonPatchCreator