-
Notifications
You must be signed in to change notification settings - Fork 0
/
PlaceableHighlighter.cs
98 lines (90 loc) · 3 KB
/
PlaceableHighlighter.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
using UnityEngine;
namespace CustomBlocks
{
public class PlaceableHighlighter
{
public static void HighlightAlpha(Placeable placeable)
{
SetAlpha(placeable, 0.85f);
}
public static void LowlightAlpha(Placeable placeable)
{
SetAlpha(placeable, 0.2f);
}
public static void ResetAlpha(Placeable placeable)
{
SetAlpha(placeable, 1f);
}
public static void SetAlpha(Placeable placeable, float value)
{
try
{
placeable.CustomColor.a = value;
placeable.SetColor(placeable.CustomColor);
}
catch (System.Exception e)
{
Debug.LogError("failed to set color on " + placeable + ": " + e);
}
}
public static void HighlightUpdateAll()
{
foreach (Placeable pla in Object.FindObjectsOfType<Placeable>())
{
HighlightUpdateBlock(pla);
}
}
public static void HighlightUpdateBlock(Placeable pla)
{
if (pla.markedForDestruction)
{
return;
}
// highlight only in Place Phase
if (!CustomBlocksMod.InFreePlace())
{
PlaceableHighlighter.ResetAlpha(pla);
}
else
{
// revert to normal scheme if layer highlight is not active
if (!CustomBlocksMod.highlightSelectedLayer)
{
if (CustomBlocksMod.IsCustomBlock(pla.gameObject))
{
PlaceableHighlighter.HighlightAlpha(pla);
}
else
{
PlaceableHighlighter.ResetAlpha(pla);
}
}
else
{
// highlight (as solid) normal blocks if we are not in background mode
if (!CustomBlocksMod.enableCustomBlockMode)
{
if (CustomBlocksMod.IsCustomBlock(pla.gameObject))
{
PlaceableHighlighter.LowlightAlpha(pla);
}
else
{
PlaceableHighlighter.ResetAlpha(pla);
}
}
// highlight mod blocks that are on the current layer
else if (pla.gameObject.GetComponent<CustomBlock>()
&& pla.gameObject.GetComponent<CustomBlock>().layer == SortingLayer.layers[CustomBlocksMod.selectedLayer].name)
{
PlaceableHighlighter.HighlightAlpha(pla);
}
else
{
PlaceableHighlighter.LowlightAlpha(pla);
}
}
}
}
}
}