public static Material RestoreMaterialFromData(MaterialRestoreData data, MaterialFactory factory) { Assert.IsNotNull(factory); // no data supplied, return nothing if (data == null) { return(null); } // preserve data consistency of material factor var mat = data.isRestorableMaterial ? factory.GetRestorableMaterial(data.shaderName) : factory.Get(data.shaderName); foreach (var c in data.colorDatas) { mat.SetColor(c.Key, c.Value); } foreach (var v in data.vectorDatas) { mat.SetVector(v.Key, v.Value); } foreach (var f in data.floatDatas) { mat.SetFloat(f.Key, f.Value); } foreach (var so in data.textureScaleOffsets) { var name = so.Key; so.Value.Split(out var s, out var o); mat.SetTextureScale(name, s); mat.SetTextureOffset(name, o); } if (!data.isRestorableMaterial) { return(mat); } var res = mat as RestorableMaterial; Assert.IsNotNull(res); foreach (var t in data.textureNames) { res.SetTexturePath(t.Key, t.Value); } return(res); }
public void Restore(IRestoreData restoreData) { var data = restoreData as PostProcessingRestoreData; // Materials must be RestorableMaterial MaterialFactory factory = MaterialPool.Ensure(gameObject).factory; layers.Clear(); foreach (var materialRestoreData in data.layersData) { var material = RestorableMaterial.RestoreMaterialFromData(materialRestoreData, factory); layers.Add(material); } }
static int RestoreMaterialFromData(IntPtr L) { try { ToLua.CheckArgsCount(L, 2); Nova.MaterialRestoreData arg0 = (Nova.MaterialRestoreData)ToLua.CheckObject <Nova.MaterialRestoreData>(L, 1); Nova.MaterialFactory arg1 = (Nova.MaterialFactory)ToLua.CheckObject(L, 2, typeof(Nova.MaterialFactory)); UnityEngine.Material o = Nova.RestorableMaterial.RestoreMaterialFromData(arg0, arg1); ToLua.Push(L, o); return(1); } catch (Exception e) { return(LuaDLL.toluaL_exception(L, e)); } }
public virtual void Restore(IRestoreData restoreData) { var data = restoreData as CompositeSpriteControllerBaseRestoreData; data.transformRestoreData.Restore(transform); color = data.color; if (spriteRenderer != null) { // Material must be RestorableMaterial or DefaultMaterial if (data.materialRestoreData != null) { MaterialFactory factory = MaterialPoolComponent.Ensure(gameObject).factory; spriteRenderer.material = RestorableMaterial.RestoreMaterialFromData(data.materialRestoreData, factory); } else { spriteRenderer.material = MaterialPoolComponent.Ensure(gameObject).defaultMaterial; } } RenderQueueOverrider.Ensure(gameObject).renderQueue = data.renderQueue; if (data.currentImageName == currentImageName) { return; } if (!string.IsNullOrEmpty(data.currentImageName)) { string[] parts = StringToPoseArray(data.currentImageName); if (parts.Length == 1) { SetImage(data.currentImageName, fade: false); } else { SetPose(parts, fade: false); } } else { ClearImage(fade: false); } }
static int get_factory(IntPtr L) { object o = null; try { o = ToLua.ToObject(L, 1); Nova.MaterialPoolComponent obj = (Nova.MaterialPoolComponent)o; Nova.MaterialFactory ret = obj.factory; ToLua.PushSealed(L, ret); return(1); } catch (Exception e) { return(LuaDLL.toluaL_exception(L, e, o, "attempt to index factory on a nil value")); } }
public void Restore(IRestoreData restoreData) { var data = restoreData as PostProcessingRestoreData; // Materials must be RestorableMaterial MaterialFactory factory = MaterialPoolComponent.Ensure(gameObject).factory; layers.Clear(); foreach (var layerData in data.layersData) { var layer = new List <Material>(); foreach (var materialRestoreData in layerData) { var material = RestorableMaterial.RestoreMaterialFromData(materialRestoreData, factory); layer.Add(material); } layers.Add(layer); } layersEnabledUntil = data.layersEnabledUntil; }