public override List <NodeLayer> HookAddLayersToNode(List <NodeLayer> layers, Node node) { List <NodeLayer> nodeLayers = new List <NodeLayer>(); if (parentElement.GetType() == typeof(CrossroadRoad)) { if (node.BorderWidthType(typeof(Intersection))) { //nodeLayers.Add(new NodeLayer(0, "Premetives/Surface", "Sidewalk")); if (parentElement.parentElement.GetType() != typeof(BackgroundStreet)) { nodeLayers.Add(new NodeLayer(0, "Main", "ControllQuad")); } } else { NodeLayer layer = new NodeLayer(getPrefabNuber(), "Additions/SafetyZone", "End"); layer.direction = GetParentByClass(typeof(Crossroad)).rct.GetDirection(node.crd); layer.InvertDirection(); nodeLayers.Add(layer); if (parentElement.parentElement.GetType() != typeof(BackgroundStreet)) { nodeLayers.Add(new NodeLayer(0, "Main", "ControllQuad")); } } } else { nodeLayers = layers; } return(base.HookAddLayersToNode(nodeLayers, node)); }
public override List <NodeLayer> HookAddLayersToNode(List <NodeLayer> layers, Node node) { NodeLayer door = new NodeLayer(getPrefabNuber(), "Premetives/Portal", name); if (isExit) { door.direction = parentElement.rct.GetDirection(node.crd); } else { RCT dirRCT = Brother.parentElement.rct.Clone(); dirRCT.Grow(); door.direction = dirRCT.GetDirection(node.crd); door.InvertDirection(); } door.hasMesh = false; NodeLayer wall = node.Layers.Find(x => x.direction == door.direction && (x.name == "InnerWall" || x.name == "OuterWall")); node.Layers.Remove(wall); if (IsOpened() && isExit) { node.UnlinkNode(Brother.childNodes[0]); Brother.childNodes[0].UnlinkNode(node); node.LinkNode(Brother.childNodes[0], 1 + monoPortal.ExtraWeight); Brother.childNodes[0].LinkNode(node, 1 + monoPortal.ExtraWeight); } return(new List <NodeLayer>() { door }); }