So i got this every Lateupdate:
transform.parent.gameObject.layer = hit.transform.gameObject.layer;
if(transform.parent.gameObject.layer == 10)
shadowProjector.ignoreLayers = ~((1 << 10) + (1 << 21) + (1 << 9));
else if(transform.parent.gameObject.layer == 11)
shadowProjector.ignoreLayers = ~((1 << 11) + (1 << 21) + (1 << 22) + (1 << 9));
else if(transform.parent.gameObject.layer == 12)
shadowProjector.ignoreLayers = ~((1 << 12) + (1 << 22) + (1 << 23) + (1 << 9));
else if(transform.parent.gameObject.layer == 13)
shadowProjector.ignoreLayers = ~((1 << 13) + (1 << 23) + (1 << 24) + (1 << 9));
else if(transform.parent.gameObject.layer == 14)
shadowProjector.ignoreLayers = ~((1 << 14) + (1 << 24) + (1 << 25) + (1 << 9));
else if(transform.parent.gameObject.layer == 15)
shadowProjector.ignoreLayers = ~((1 << 15) + (1 << 25) + (1 << 26) + (1 << 9));
else if(transform.parent.gameObject.layer == 16)
shadowProjector.ignoreLayers = ~((1 << 16) + (1 << 26) + (1 << 27) + (1 << 9));
else if(transform.parent.gameObject.layer == 17)
shadowProjector.ignoreLayers = ~((1 << 17) + (1 << 27) + (1 << 28) + (1 << 9));
else if(transform.parent.gameObject.layer == 18)
shadowProjector.ignoreLayers = ~((1 << 18) + (1 << 28) + (1 << 29) + (1 << 9));
else if(transform.parent.gameObject.layer == 19)
shadowProjector.ignoreLayers = ~((1 << 19) + (1 << 29) + (1 << 30) + (1 << 9));
else if(transform.parent.gameObject.layer == 20)
shadowProjector.ignoreLayers = ~((1 << 20) + (1 << 30) + (1 << 9));
else if(transform.parent.gameObject.layer == 21)
shadowProjector.ignoreLayers = ~((1 << 21) + (1 << 10) + (1 << 11) + (1 << 9));
else if(transform.parent.gameObject.layer == 22)
shadowProjector.ignoreLayers = ~((1 << 22) + (1 << 11) + (1 << 12) + (1 << 9));
else if(transform.parent.gameObject.layer == 23)
shadowProjector.ignoreLayers = ~((1 << 23) + (1 << 12) + (1 << 13) + (1 << 9));
else if(transform.parent.gameObject.layer == 24)
shadowProjector.ignoreLayers = ~((1 << 24) + (1 << 13) + (1 << 14) + (1 << 9));
else if(transform.parent.gameObject.layer == 25)
shadowProjector.ignoreLayers = ~((1 << 25) + (1 << 14) + (1 << 15) + (1 << 9));
else if(transform.parent.gameObject.layer == 26)
shadowProjector.ignoreLayers = ~((1 << 26) + (1 << 15) + (1 << 16) + (1 << 9));
else if(transform.parent.gameObject.layer == 27)
shadowProjector.ignoreLayers = ~((1 << 27) + (1 << 16) + (1 << 17) + (1 << 9));
else if(transform.parent.gameObject.layer == 28)
shadowProjector.ignoreLayers = ~((1 << 28) + (1 << 17) + (1 << 18) + (1 << 9));
else if(transform.parent.gameObject.layer == 29)
shadowProjector.ignoreLayers = ~((1 << 29) + (1 << 18) + (1 << 19) + (1 << 9));
else if(transform.parent.gameObject.layer == 30)
shadowProjector.ignoreLayers = ~((1 << 30) + (1 << 19) + (1 << 20) + (1 << 9));
Seems to me that I can convert the if else statements to a dictionary type thing because it would be WAY more efficient to have a direct reference from a transform.parent.gameObject.layer to a shadowProjector.ignoreLayers value instead of doing if elses.
So could i initialize the dictionary in the Awake() function and then replace all the if elses with one line: shadowProjector.ignoreLayers = CurrentDict(“transform.parent.gameObject.layer”);
If i were to use a dictionary though, would it go from int to int?
Can i store ~((1 << 10) + (1 << 21) + (1 << 9)) as an int?
It’s much more readable for me to leave it in that format where i can clearly see where the bits are being shifted instead of simplifying to an integer value.
And is dictionary even the best approach or should i use Enums or a fixed size array or something else? What’s the most efficient structure for this?