コード例 #1
0
        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));
        }
コード例 #2
0
        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
            });
        }