internal void Init(int instanceIndex, IntPtr nativeInstance, IIndoorMapMaterial material, IndoorMapsApiInternal internalAPI) { InstanceIndex = instanceIndex; NativeInstance = nativeInstance; Material = material; m_internalAPI = internalAPI; OnRenderStateUpdated(); }
public List <IIndoorMapMaterial> GetAllInstancesOfMaterial(IIndoorMapMaterial material) { if (m_instantiatedMaterials.ContainsKey(material)) { return(m_instantiatedMaterials[material]); } return(new List <IIndoorMapMaterial>()); }
public void OnStreamedTextureReceived(IIndoorMapMaterial requestingMaterial, string textureKey, Texture texture) { var materialInstances = m_materialRepository.GetAllInstancesOfMaterial(requestingMaterial); foreach (var materialInstance in materialInstances) { if (materialInstance.OnStreamingTextureReceived != null) { materialInstance.OnStreamingTextureReceived(textureKey, texture); } } }
public IIndoorMapMaterial InstantiateMaterial(IIndoorMapMaterial templateMaterial) { var newMaterialInstance = templateMaterial.CreateCopy(); // Each renderable should have its own copy of the material for per-renderable state (like colouring to work) // For per-material state, however, we need to share the material. // CreateMaterial is more like CreateMaterialTemplate Debug.Assert(m_instantiatedMaterials.ContainsKey(templateMaterial)); m_instantiatedMaterials[templateMaterial].Add(newMaterialInstance); return(newMaterialInstance); }
public void IssueTextureRequestsForMaterial(IIndoorMapMaterial material, IndoorMaterialDescriptor descriptor) { string texturePath; var key = "DiffuseTexturePath"; if (descriptor.Strings.TryGetValue(key, out texturePath)) { m_textureStreamingService.RequestTextureForMaterial(material, descriptor.IndoorMapName, key, texturePath, false); } var cubeMapKey = "CubeMapTexturePath"; string cubeMapTexturePath; if (descriptor.Strings.TryGetValue(cubeMapKey, out cubeMapTexturePath)) { if (!string.IsNullOrEmpty(cubeMapTexturePath)) { m_textureStreamingService.RequestTextureForMaterial(material, descriptor.IndoorMapName, cubeMapKey, cubeMapTexturePath, true); } } }
public void IssueTextureRequestsForMaterial(IIndoorMapMaterial material, IndoorMaterialDescriptor descriptor) { // do nothing, we won't bother with a texture for these materials - see DefaultIndoorMaterialFactory for an example where textures do get loaded }
public void DeleteMaterial(IIndoorMapMaterial material) { m_instantiatedMaterials.Remove(material); }