Skip to content

Instantly share code, notes, and snippets.

@mandarinx
Created November 26, 2014 12:46
Show Gist options
  • Save mandarinx/b8a9e198ee878ea3b1e1 to your computer and use it in GitHub Desktop.
Save mandarinx/b8a9e198ee878ea3b1e1 to your computer and use it in GitHub Desktop.
Unity3D Camera culling mask
// Copyright 2014 Jarrah Technology (http://www.jarrahtechnology.com). All Rights Reserved.
// http://www.jarrahtechnology.com/2014/04/01/Culling-Mask-Tip/
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