@@ -116,6 +116,73 @@ PyObject *py_ue_set_material_scalar_parameter(ue_PyUObject *self, PyObject * arg
116116
117117}
118118
119+ PyObject *py_ue_set_material_static_switch_parameter (ue_PyUObject *self, PyObject * args)
120+ {
121+
122+ ue_py_check (self);
123+
124+ char *switchName = nullptr ;
125+ PyObject *py_bool = nullptr ;
126+ if (!PyArg_ParseTuple (args, " sO:set_material_static_switch_parameter" , &switchName, &py_bool))
127+ {
128+ return NULL ;
129+ }
130+
131+ FName parameterName (UTF8_TO_TCHAR (switchName));
132+
133+ bool switchValue = false ;
134+ if (PyObject_IsTrue (py_bool))
135+ {
136+ switchValue = true ;
137+ }
138+
139+ bool valid = false ;
140+
141+ #if WITH_EDITOR
142+ if (self->ue_object ->IsA <UMaterialInstance>())
143+ {
144+ UMaterialInstance *material_instance = (UMaterialInstance *)self->ue_object ;
145+ valid = true ;
146+ FStaticParameterSet staticParameterSet = material_instance->GetStaticParameters ();
147+
148+ bool isExisting = false ;
149+ for (auto & parameter : staticParameterSet.StaticSwitchParameters )
150+ {
151+ if (parameter.bOverride && parameter.ParameterInfo .Name == parameterName)
152+ {
153+ parameter.Value = switchValue;
154+ isExisting = true ;
155+ break ;
156+ }
157+ }
158+
159+ if (!isExisting)
160+ {
161+ FStaticSwitchParameter SwitchParameter;
162+ SwitchParameter.ParameterInfo .Name = parameterName;
163+ SwitchParameter.Value = switchValue;
164+
165+ SwitchParameter.bOverride = true ;
166+ staticParameterSet.StaticSwitchParameters .Add (SwitchParameter);
167+ }
168+
169+
170+ material_instance->UpdateStaticPermutation (staticParameterSet);
171+
172+ }
173+
174+
175+ #endif
176+
177+ if (!valid)
178+ {
179+ return PyErr_Format (PyExc_Exception, " uobject is not a MaterialInstance" );
180+ }
181+
182+ Py_RETURN_NONE;
183+
184+ }
185+
119186PyObject *py_ue_get_material_scalar_parameter (ue_PyUObject *self, PyObject * args)
120187{
121188
0 commit comments