/// <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>
    /// 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;
    }
Beispiel #3
0
    public int GetMeshManagerHashCode()
    {
        int layer = _useForceLayer ? _forceLayer : gameObject.layer;

        return(SS_ShadowMeshManager.GetMeshManagerHashCode(_isStatic, _material, layer));
    }