//gets the layer value that the object is currently standing on, 1, 2, 4, 8, Public Static intGetagentlayer (navmeshagent agent) {Navmeshhit hit; BOOLreach = Navmesh.sampleposition (Agent.transform.position, outHit , Agent.radius, Agent.walkablemask); returnHit.mask; } //NAV layer name-to-layer index (several), 0, 1, 2, 3, 4 Public Static intAgentlayernametoindex (stringname) { returnnavmesh.getnavmeshlayerfromname (name); } //NAV layer name-to-layer values, 1, 2, 4, 8, Public Static intAgentlayernametovalue (stringname) { intIDX =navmesh.getnavmeshlayerfromname (name); return(int) Mathf.pow (2, IDX); } //checks if an object layer is open Public Static BOOLIsnavmeshlayeropen (navmeshagent agent,stringlayername) { intLayervalue =Navmesh.getnavmeshlayerfromname (LayerName); if(Layervalue = =-1) return true; intret = Agent.walkablemask & (0x1<<layervalue); returnRET >0?true:false; } //open a navigation layer Public Static voidEnablenavmeshlayer (navmeshagent agent,stringlayername) { if(Agent = =NULL) return; intLayervalue =Navmesh.getnavmeshlayerfromname (LayerName); if(Layervalue = =-1) return; intMask = Agent.walkablemask |0x1<<Layervalue; Agent.walkablemask=mask;; } //close a navigation layer Public Static voidDisablenavmeshlayer (navmeshagent agent,stringlayername) { if(Agent = =NULL) return; intLayervalue =Navmesh.getnavmeshlayerfromname (LayerName); if(Layervalue = =-1) return; intMask = agent.walkablemask & ~ (0x1<<layervalue); Agent.walkablemask=mask;; }
Navmesh the conversion between the name, layer index, and layer value