Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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"));
        }
    }
Exemplo n.º 6
0
        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;
        }