Ejemplo n.º 1
0
    private IEnumerator ShadowCaster()
    {
        colliderLayerTilemap.SetTile(Vector3Int.zero, null);
        yield return(null);

        //EditorApplication.ExecuteMenuItem("Tools/Generate Shadow Casters");
        ShadowCaster2DGenerator.GenerateShadowCasters();
        colliderLayerTilemap.SetTile(Vector3Int.zero, wallTile);

        // Костыли чтобы ShadowCaster2D не кидал тени на стены
        int layersCount = SortingLayer.layers.Length - 1;

        int[] layerWithoutWalls = new int[layersCount];

        for (int layerIndex = 0; layerIndex < layersCount; layerIndex++)
        {
            if (SortingLayer.layers[layerIndex].name != "Walls")
            {
                layerWithoutWalls[layerIndex] = SortingLayer.layers[layerIndex].id;
            }
        }

        var shadowCaster2D = colliderLayerTilemap.GetComponentInChildren <ShadowCaster2D>();

        // FieldInfo fieldInfo;
        // fieldInfo = shadowCaster2D.GetType().GetField("m_ApplyToSortingLayers", BindingFlags.Instance | BindingFlags.Instance);
        // fieldInfo.SetValue(shadowCaster2D, layerWithoutWalls);

        shadowCaster2D.GetType().GetField("m_ApplyToSortingLayers", BindingFlags.NonPublic | BindingFlags.Instance)
        .SetValue(shadowCaster2D, layerWithoutWalls);
    }
Ejemplo n.º 2
0
 public static void GenerateTilesAndShadows()
 {
     GlobalInstanceManager.GetAssetManager().SetAndUpdate();
     ShadowCaster2DGenerator.GenerateShadowCasters();
 }
Ejemplo n.º 3
0
 protected virtual void Awake()
 {
     ShadowCaster2DGenerator.GenerateTilemapShadowCasters(m_TilemapCollider, m_SelfShadows);
 }