{"id":1000,"date":"2012-01-31T04:25:22","date_gmt":"2012-01-31T04:25:22","guid":{"rendered":"http:\/\/pixelplacement.com\/?p=1000"},"modified":"2021-10-17T23:55:19","modified_gmt":"2021-10-17T23:55:19","slug":"layermasks-simplified","status":"publish","type":"post","link":"https:\/\/www.pixelplacement.com\/site\/2012\/01\/31\/layermasks-simplified\/","title":{"rendered":"LayerMasks simplified"},"content":{"rendered":"<p>I love LayerMasks because of their power and ability to filter things. I hate LayerMasks because I can never remember how to properly create them in code. To end this love\/hate relationship I finally sat down and made a solution that&#8217;s incredibly simple and invaluable for taming LayerMasks. You too can now punch LayerMasks in their confusing face.<!--more--><\/p>\n<pre>\/\/Set a camera to only look at layer 7:\r\nvoid Awake (){\r\n\t\/\/by layer id:\r\n\tcamera.cullingMask = LayerMaskHelper.OnlyIncluding( 7 );\r\n\t\r\n\t\/\/or by layer name:\r\n\tcamera.cullingMask = LayerMaskHelper.OnlyIncluding( LayerMask.NameToLayer(\"UserInterface\") );\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre>\/\/Set a light to affect layers 4, 8 and 11:\r\nvoid Awake (){\r\n\t\/\/LayerMaskHelper doesn't care if you give them in order\r\n\t\/\/by id:\r\n\tlight.cullingMask = LayerMaskHelper.OnlyIncluding( 4, 11, 8 ); \r\n\r\n\t\/\/or by layer names:\r\n\tlight.cullingMask = LayerMaskHelper.OnlyIncluding( LayerMask.NameToLayer(\"Landscape\"), LayerMask.NameToLayer(\"Player\"), LayerMask.NameToLayer(\"Enemies\") ); \r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre>\/\/Set a light to affect everything except for layers 5 and 6:\r\nvoid Awake (){\r\n\t\/\/by layer id:\r\n\tlight.cullingMask = LayerMaskHelper.EverythingBut( 5, 6 );\r\n\r\n\t\/\/or by layer names:\r\n\tlight.cullingMask = LayerMaskHelper.EverythingBut( LayerMask.NameToLayer(\"Landscape\"), LayerMask.NameToLayer(\"Player\") );\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre>\/\/Does this camera's culling mask allow it to look at the target object?:\r\npublic GameObject target;\r\n\t\r\nvoid Update(){\r\n\tbool isTargetLayerInCullingMask = LayerMaskHelper.ContainsLayer( camera.cullingMask, target.layer );\r\n\tstring textReplacement = isTargetLayerInCullingMask ? \"allows\" : \"does not allow\";\r\n\tDebug.Log( \"This camera's culling mask \" + textReplacement + \" it to see the target object.\" );\r\n}\r\n\r\nLayerMaskHelper is now included with my Surge framework:<\/pre>\n<pre><a href=\"http:\/\/surge.pixelplacement.com\/\" class=\"submit submitTheme\" title=\"\" target=\"_blank\">GET IT IN SURGE!<\/a><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>I love LayerMasks because of their power and ability to filter things. I hate LayerMasks because I can never remember how to properly create them in code. To end this love\/hate relationship I finally sat down and made a solution that&#8217;s incredibly simple and invaluable for taming LayerMasks. You too can now punch LayerMasks in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1404,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"_links":{"self":[{"href":"https:\/\/www.pixelplacement.com\/site\/wp-json\/wp\/v2\/posts\/1000"}],"collection":[{"href":"https:\/\/www.pixelplacement.com\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pixelplacement.com\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pixelplacement.com\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pixelplacement.com\/site\/wp-json\/wp\/v2\/comments?post=1000"}],"version-history":[{"count":7,"href":"https:\/\/www.pixelplacement.com\/site\/wp-json\/wp\/v2\/posts\/1000\/revisions"}],"predecessor-version":[{"id":1561,"href":"https:\/\/www.pixelplacement.com\/site\/wp-json\/wp\/v2\/posts\/1000\/revisions\/1561"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pixelplacement.com\/site\/wp-json\/wp\/v2\/media\/1404"}],"wp:attachment":[{"href":"https:\/\/www.pixelplacement.com\/site\/wp-json\/wp\/v2\/media?parent=1000"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pixelplacement.com\/site\/wp-json\/wp\/v2\/categories?post=1000"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pixelplacement.com\/site\/wp-json\/wp\/v2\/tags?post=1000"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}