Пример #1
0
	protected MaterialInformation GetMaterial(MaterialInformation root_material, int sub_index)
	{
		var m = m_importer.GetSubMaterials(root_material, sub_index).GetEnumerator();
		if(m.MoveNext())
		{
			return m.Current;
		}
		return null;
	}
Пример #2
0
	public IMaterialTemplate ResolveTemplate(GameObject node, MaterialInformation settings)
	{
		MaterialTemplate t = node.GetComponent<MaterialTemplate>();
		if(t == null)
		{
			Debug.LogError(string.Format("No template could be found for node {0}",node.name));
			t = AddDefault(node);
		}
		return t;
	}
Пример #3
0
	protected bool MaterialHasSubmaterials(MaterialInformation settings)
	{
		switch(settings.m_className)
		{
		case "Shell Material":
		case "Multi/Sub-Object":
			return true;
		default:
			return false;
		}
	}
Пример #4
0
	public Material ResolveCachedMaterial(IMaterialTemplate template, MaterialInformation settings)
	{
		if(!m_materialsCache.ContainsKey(template))
		{
			m_materialsCache.Add(template, new Dictionary<ulong, Material>());
		}

		var sd = m_materialsCache[template];
		if(!sd.ContainsKey(settings.m_handle))
		{
			sd.Add(settings.m_handle, template.CreateNewInstance(settings));
		}

		return sd[settings.m_handle];
	}
Пример #5
0
	public Material CreateNewInstance(MaterialInformation settings)
	{
		/* Create the new material object */
		Material material = new Material(m_template);

		/* Set the parameters */
		foreach(var p in m_parameterMapping){

			if(!p.m_sourceName.IsValid() | !p.m_destinationName.IsValid()){
				continue;
			}

			SetGenericMaterialProperty(material, 
			                           p.m_destinationName, 
			                           settings.MaterialProperties.GetProperty(p.m_sourceName));
		}

		return material;
	}
Пример #6
0
        MaterialInformation GetMaterialProperties(IMtl material)
        {
            if (material == null)
            {
                return null;
            }

            MaterialInformation m = new MaterialInformation();
            
            m.m_className = material.ClassName;
            m.m_materialName = material.Name;
            m.m_handle = _gi.Animatable.GetHandleByAnim(material).ToUInt64();

            var prps = EnumerateProperties(material).ToList();

            foreach (var p in EnumerateProperties(material))
            {
                m.MaterialProperties.Add(new MaterialProperty(p.m_parameterName, p.m_internalName, p.GetValue()));
            }

            return m;
        }
Пример #7
0
 public IEnumerable<MaterialInformation> GetSubMaterials(MaterialInformation material, int index)
 {
     var m = ExchangeIsochronous(new MessageMaterialRequest(material.m_handle, index)) as MessageMaterials;
     return m.m_matchingMaterials;
 }