A better way of manipulating the culling mask. Taken from http://www.gamasutra.com/blogs/CharlesCordingley/20141124/230710/Unity3D_Culling_Mask_Tip.php
using UnityEngine; | |
public static class CameraExtensions { | |
public static void LayerCullingShow(this Camera cam, int layerMask) { | |
cam.cullingMask |= layerMask; | |
} | |
public static void LayerCullingShow(this Camera cam, string layer) { | |
LayerCullingShow(cam, 1 << LayerMask.NameToLayer(layer)); | |
} | |
public static void LayerCullingHide(this Camera cam, int layerMask) { | |
cam.cullingMask &= ~layerMask; | |
} | |
public static void LayerCullingHide(this Camera cam, string layer) { | |
LayerCullingHide(cam, 1 << LayerMask.NameToLayer(layer)); | |
} | |
public static void LayerCullingToggle(this Camera cam, int layerMask) { | |
cam.cullingMask ^= layerMask; | |
} | |
public static void LayerCullingToggle(this Camera cam, string layer) { | |
LayerCullingToggle(cam, 1 << LayerMask.NameToLayer(layer)); | |
} | |
public static bool LayerCullingIncludes(this Camera cam, int layerMask) { | |
return (cam.cullingMask & layerMask) > 0; | |
} | |
public static bool LayerCullingIncludes(this Camera cam, string layer) { | |
return LayerCullingIncludes(cam, 1 << LayerMask.NameToLayer(layer)); | |
} | |
public static void LayerCullingToggle(this Camera cam, int layerMask, bool isOn) { | |
bool included = LayerCullingIncludes(cam, layerMask); | |
if (isOn && !included) { | |
LayerCullingShow(cam, layerMask); | |
} else if (!isOn && included) { | |
LayerCullingHide(cam, layerMask); | |
} | |
} | |
public static void LayerCullingToggle(this Camera cam, string layer, bool isOn) { | |
LayerCullingToggle(cam, 1 << LayerMask.NameToLayer(layer), isOn); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment