using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FunctionSync_Material : OneValueSyncObject
{
    Renderer renderer;

    /// <summary>
    /// MeshRender上材质球索引
    /// </summary>
    public int materialIndex = 0;
    Dictionary<string, Material> matDic = new Dictionary<string, Material>();

    private void Start()
    {
        Init();
    }

    public void Init()
    {
        if (!hasInit)
        {
            renderer = GetComponent<Renderer>();
            InitDynamic("Material_" + gameObject.name, CallBack, ValueType.String);
        }
    }
    /// <summary>
    /// 设置材质
    /// </summary>
    /// <param name="ResourcePath">Resource文件下加载路径</param>
    public void SetMaterial(string ResourcePath)
    {
        if(!matDic.ContainsKey(ResourcePath))
        {
            Material m = Resources.Load<Material>(ResourcePath);
            matDic.Add(ResourcePath, m);
        }
        renderer.materials[materialIndex].CopyPropertiesFromMaterial(matDic[ResourcePath]);
        mystring = ResourcePath;
        SendSync();
    }


    /// <summary>
    /// 回调
    /// </summary>
    /// <param name="id"></param>
    public void CallBack(string id, bool isEnterRoom)
    {
        if (!matDic.ContainsKey(mystring))
        {
            Material m = Resources.Load<Material>(mystring);
            matDic.Add(mystring, m);
        }
        renderer.materials[materialIndex].CopyPropertiesFromMaterial(matDic[mystring]);
    }
}