Exemple #1
0
 internal DeferredMaterial(int pId, InstanciatedTexture pDiffuse, InstanciatedTexture pNormal, InstanciatedTexture pSpecular)
 {
     this.Id = pId;
     this.Diffuse = pDiffuse;
     this.Normal = pNormal;
     this.Specular = pSpecular;
 }
Exemple #2
0
        public static int Load(InstanciatedTexture pDiffuse, InstanciatedTexture pNormal, InstanciatedTexture pSpecular)
        {
            int i = 0;
            bool found = false;

            while (!found && (i < Instance.mMaterials.Count))
            {
                if ((Instance.mMaterials[i].Diffuse == pDiffuse) && (Instance.mMaterials[i].Normal == pNormal) && (Instance.mMaterials[i].Specular == pSpecular))
                {
                    found = true;
                }
                else
                    i++;
            }

            if (found)
            {
                Instance.mMaterials[i].IncreaseCounter();
                return Instance.mMaterials[i].Id;
            }
            else
            {
                int id;
                if (Instance.mMaterials.Count == 0)
                    id = 0;
                else
                    id = Instance.mMaterials[Instance.mMaterials.Count - 1].Id + 1;

                DeferredMaterial newMaterial = new DeferredMaterial(id, pDiffuse, pNormal, pSpecular);
                Instance.mMaterials.Add(id, newMaterial);
                return id;
            }
        }