public override object GetResource(ResourcePtr ptr, Stream stream)
        {
            using (TextReader Reader = new StreamReader(stream))
                using (JsonReader JReader = new JsonTextReader(Reader))
                {
                    MaterialScript ms = Activator.CreateInstance <MaterialScript>();
                    ms.JObject = JObject.Load(JReader);

                    //Validate that we have required shaders
                    if (ms.FragmentShader == null)
                    {
                        throw new WatertightLoadingFailureException(string.Format("Error loading material: {0}, missing $FragmentShader", ptr.ToString()));
                    }
                    if (ms.VertexShader == null)
                    {
                        throw new WatertightLoadingFailureException(string.Format("Error loading material: {0}, missing $VertexShader", ptr.ToString()));
                    }

                    Material Mat = IEngine.Instance.Renderer.MaterialFactory.Create(ms);

                    //Load the shaders
                    Mat._Shaders[Shader.Stage.Fragment] = GetShader(ms.FragmentShader, Shader.Stage.Fragment);
                    Mat._Shaders[Shader.Stage.Vertex]   = GetShader(ms.VertexShader, Shader.Stage.Vertex);

                    Mat.PostLoad();

                    return(Mat);
                }
        }
        public Material Create(MaterialScript Script)
        {
            Material m = Create();

            Script?.ApplyToObject(m);

            return(m);
        }
Пример #3
0
 // Start is called before the first frame update
 void Start()
 {
     materialScript           = transform.GetChild(0).GetComponent <MaterialScript>();
     GameDataManager.saveGame = true;
 }