/// <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);
        }
    }
Beispiel #2
0
    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;
    }
    /// <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);
        }
    }
 /// <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);
 }