/// <summary> /// Unregisters the shadow in the system. /// </summary> /// <param name="shadow"> /// The shadow to unregister. /// </param> public void UnregisterShadow(SwiftShadow shadow) { SS_ShadowMeshManager meshManager; bool isExists = _meshManagers.TryGetValue(shadow.GetMeshManagerHashCode(), out meshManager); if (isExists) { meshManager.UnregisterShadow(shadow); } }
private void Start() { if (ShadowPrefab == null) { return; } for (int i = 0; i < LightsCount; i++) { SwiftShadow shadow = ((GameObject)Instantiate(ShadowPrefab)).GetComponent <SwiftShadow>(); shadow.LightSourceObject = transform; Color randomColor = new SS_ColorHSV(Random.Range(0f, 360f), 0.8f, 1f).ToColor(); randomColor.a = 0.8f; shadow.Color32 = randomColor; shadow.gameObject.transform.parent = transform; shadow.gameObject.transform.localPosition = Random.onUnitSphere.normalized * BallSize / transform.lossyScale.magnitude; } }
/// <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="SS_ShadowMeshManager"/>. /// </returns> private SS_ShadowMeshManager GetMeshManager(SwiftShadow shadow) { SS_ShadowMeshManager meshManager; bool isExists = _meshManagers.TryGetValue(shadow.GetMeshManagerHashCode(), out meshManager); if (isExists) { return(meshManager); } if (shadow.Material == null) { throw new ArgumentNullException("shadow.Material"); } meshManager = new SS_ShadowMeshManager(shadow.Material, shadow.Layer, shadow.IsStatic); _meshManagers.Add(meshManager.GetInstanceHashCode(), meshManager); if (_isRecalculatingMesh) { _meshManagersNew.Add(meshManager); } return(meshManager); }
/// <summary> /// Registers the shadow in the system. /// </summary> /// <param name="shadow"> /// The shadow to register. /// </param> public void RegisterShadow(SwiftShadow shadow) { GetMeshManager(shadow).RegisterShadow(shadow); }
/// <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="SS_ShadowMeshManager"/>. /// </returns> private SS_ShadowMeshManager GetMeshManager(SwiftShadow shadow) { SS_ShadowMeshManager meshManager; bool isExists = _meshManagers.TryGetValue(shadow.GetMeshManagerHashCode(), out meshManager); if (isExists) { return meshManager; } if (shadow.Material == null) throw new ArgumentNullException("shadow.Material"); meshManager = new SS_ShadowMeshManager(shadow.Material, shadow.Layer, shadow.IsStatic); _meshManagers.Add(meshManager.GetInstanceHashCode(), meshManager); if (_isRecalculatingMesh) { _meshManagersNew.Add(meshManager); } return meshManager; }