@@ -48,6 +48,73 @@ PyObject *py_ue_set_material_scalar_parameter(ue_PyUObject *self, PyObject * arg
4848
4949}
5050
51+ PyObject *py_ue_set_material_static_switch_parameter (ue_PyUObject *self, PyObject * args)
52+ {
53+
54+ ue_py_check (self);
55+
56+ char *switchName = nullptr ;
57+ PyObject *py_bool = nullptr ;
58+ if (!PyArg_ParseTuple (args, " sO:set_material_static_switch_parameter" , &switchName, &py_bool))
59+ {
60+ return NULL ;
61+ }
62+
63+ FName parameterName (UTF8_TO_TCHAR (switchName));
64+
65+ bool switchValue = false ;
66+ if (PyObject_IsTrue (py_bool))
67+ {
68+ switchValue = true ;
69+ }
70+
71+ bool valid = false ;
72+
73+ #if WITH_EDITOR
74+ if (self->ue_object ->IsA <UMaterialInstance>())
75+ {
76+ UMaterialInstance *material_instance = (UMaterialInstance *)self->ue_object ;
77+ valid = true ;
78+ FStaticParameterSet staticParameterSet = material_instance->GetStaticParameters ();
79+
80+ bool isExisting = false ;
81+ for (auto & parameter : staticParameterSet.StaticSwitchParameters )
82+ {
83+ if (parameter.bOverride && parameter.ParameterInfo .Name == parameterName)
84+ {
85+ parameter.Value = switchValue;
86+ isExisting = true ;
87+ break ;
88+ }
89+ }
90+
91+ if (!isExisting)
92+ {
93+ FStaticSwitchParameter SwitchParameter;
94+ SwitchParameter.ParameterInfo .Name = parameterName;
95+ SwitchParameter.Value = switchValue;
96+
97+ SwitchParameter.bOverride = true ;
98+ staticParameterSet.StaticSwitchParameters .Add (SwitchParameter);
99+ }
100+
101+
102+ material_instance->UpdateStaticPermutation (staticParameterSet);
103+
104+ }
105+
106+
107+ #endif
108+
109+ if (!valid)
110+ {
111+ return PyErr_Format (PyExc_Exception, " uobject is not a MaterialInstance" );
112+ }
113+
114+ Py_RETURN_NONE;
115+
116+ }
117+
51118PyObject *py_ue_get_material_scalar_parameter (ue_PyUObject *self, PyObject * args)
52119{
53120
0 commit comments