public void Cleanup() { resultMaterial.Dispose(); resultMaterial = null; material = null; ResourceObjectInterface.funcAddShader = funcOldAddShader; ResourceObjectInterface.actDelShader = actOldDelShader; ResourceObjectInterface.funcGetResource = funcOldGetResource; dictTextures.Clear(); }
public ResourceObject Parse(ByteBuffer bb) { Schema.Material _material = Schema.Material.GetRootAsMaterial(bb); ResourceObjectMaterial result = new ResourceObjectMaterial(_material.Shader); UnityEngine.Material material = result.Unity3dObject as UnityEngine.Material; material.name = _material.Name; for (int i = 0; i < _material.PropertiesLength; i++) { Schema.ShaderProperty p = _material.GetProperties(i); switch (p.Type) { case ShaderPropertyType.Float: case ShaderPropertyType.Range: { Schema.ShaderPropertyFloat f = p.GetValue <Schema.ShaderPropertyFloat>(fObj); material.SetFloat(p.Names, f.Value); } break; case ShaderPropertyType.Color: { Schema.ShaderPropertyColor c = p.GetValue <Schema.ShaderPropertyColor>(cObj); material.SetColor(p.Names, new UnityEngine.Color(c.Color.R, c.Color.G, c.Color.B, c.Color.A)); } break; case ShaderPropertyType.Vector: { Schema.ShaderPropertyVector v = p.GetValue <Schema.ShaderPropertyVector>(vObj); material.SetVector(p.Names, new Vector4(v.Vector.X, v.Vector.Y, v.Vector.Z, v.Vector.W)); } break; case ShaderPropertyType.TexEnv: { Schema.ShaderPropertyTexture t = p.GetValue <Schema.ShaderPropertyTexture>(tObj); material.SetTextureOffset(p.Names, new Vector2(t.Offset.X, t.Offset.Y)); material.SetTextureScale(p.Names, new Vector2(t.Scale.X, t.Scale.Y)); result.AddTexture(t.Name, p.Names); } break; } } return(result); }
public void Init() { funcOldAddShader = ResourceObjectInterface.funcAddShader; actOldDelShader = ResourceObjectInterface.actDelShader; funcOldGetResource = ResourceObjectInterface.funcGetResource; ResourceObjectInterface.funcAddShader = AddShader; ResourceObjectInterface.actDelShader = DelShader; ResourceObjectInterface.funcGetResource = GetResource; Context context = Context.Unknown; ByteBuffer bb = TestData.LoadResource("Suit_Metal_Dragon_Male.doub", out context); Assert.IsNotNull(bb); Assert.AreNotEqual(context, Context.Unknown); MaterialUnserializer unserializer = UnserializerFactory.Instance.Create(context) as MaterialUnserializer; resultMaterial = unserializer.Parse(bb) as ResourceObjectMaterial; resultMaterial.OnDependencesFinished(); material = Schema.Material.GetRootAsMaterial(bb); }