/// <summary> /// Returns the mesh managers suitable for a shadow. /// </summary> /// <param name="shadow"> /// The shadow to get mesh manager for. /// </param> /// <returns> /// The <see cref="ShadowMeshManager"/>. /// </returns> private ShadowMeshManager GetMeshManager(SwiftShadow shadow) { ShadowMeshManager meshManager; if (_meshManagers.TryGetValue(shadow.GetMeshManagerHashCode(), out meshManager)) { return(meshManager); } if (shadow.Material == null) { throw new ArgumentNullException("shadow.material"); } if (_meshManagersNew.TryGetValue(shadow.GetMeshManagerHashCode(), out meshManager)) { return(meshManager); } meshManager = new ShadowMeshManager(shadow.Material, shadow.Layer, shadow.IsStatic); if (_isRecalculatingMesh) { _meshManagersNew.Add(meshManager.GetInstanceHashCode(), meshManager); } else { _meshManagers.Add(meshManager.GetInstanceHashCode(), meshManager); } return(meshManager); }
/// <summary> /// Unregisters the shadow. /// </summary> /// <param name="shadow"> /// The shadow to unregister. /// </param> public void UnregisterShadow(SwiftShadow shadow) { ShadowMeshManager meshManager; int shadowHash = shadow.GetMeshManagerHashCode(); if (_meshManagers.TryGetValue(shadowHash, out meshManager)) { meshManager.UnregisterShadow(shadow); } }