Example #1
0
        private ushort RayCastNode(out RaycastOutput nodeOutput)
        {
            RaycastInput nodeInput = new RaycastInput(MouseRay, MouseRayLength)
            {
                m_rayRight   = MouseRayRight,
                m_netService =
                {
                    // find road nodes
                    m_itemLayers = ItemClass.Layer.Default | ItemClass.Layer.MetroTunnels,
                    m_service    = ItemClass.Service.Road
                },
                m_ignoreTerrain   = true,
                m_ignoreNodeFlags = NetNode.Flags.Untouchable
            };

            if (!RayCast(nodeInput, out nodeOutput))
            {
                // find train nodes
                nodeInput.m_netService.m_service    = ItemClass.Service.PublicTransport;
                nodeInput.m_netService.m_subService = ItemClass.SubService.PublicTransportTrain;

                if (!RayCast(nodeInput, out nodeOutput))
                {
                    // find metro nodes
                    nodeInput.m_netService.m_subService =
                        ItemClass.SubService.PublicTransportMetro;

                    if (!RayCast(nodeInput, out nodeOutput))
                    {
                        return(0);
                    }
                }
            }
            return(nodeOutput.m_netNode);
        }
Example #2
0
        private ushort RayCastSegment(out RaycastOutput segmentOutput)
        {
            RaycastInput segmentInput = new RaycastInput(MouseRay, MouseRayLength)
            {
                m_netService =
                {
                    // find road segments
                    m_itemLayers = ItemClass.Layer.Default | ItemClass.Layer.MetroTunnels,
                    m_service    = ItemClass.Service.Road
                },
                m_ignoreTerrain      = true,
                m_ignoreSegmentFlags = NetSegment.Flags.Untouchable
            };

            if (!RayCast(segmentInput, out segmentOutput))
            {
                segmentInput.m_netService.m_service    = ItemClass.Service.PublicTransport;
                segmentInput.m_netService.m_subService =
                    ItemClass.SubService.PublicTransportTrain;

                if (!RayCast(segmentInput, out segmentOutput))
                {
                    // find metro segments
                    segmentInput.m_netService.m_subService =
                        ItemClass.SubService.PublicTransportMetro;

                    if (!RayCast(segmentInput, out segmentOutput))
                    {
                        return(0);
                    }
                }
            }
            return(segmentOutput.m_netSegment);
        }
Example #3
0
        bool RayCastSegmentAndNode(out RaycastOutput output)
        {
            RaycastInput input = new RaycastInput(Camera.main.ScreenPointToRay(Input.mousePosition), Camera.main.farClipPlane);

            input.m_netService.m_service = ItemClass.Service.Road;
            input.m_ignoreSegmentFlags   = NetSegment.Flags.None;
            input.m_ignoreNodeFlags      = NetNode.Flags.None;
            input.m_ignoreTerrain        = true;

            return(RayCast(input, out output));
        }
        public static bool RayCastSegmentAndNode(out RaycastOutput output)
        {
            RaycastInput input = new RaycastInput(Camera.main.ScreenPointToRay(Input.mousePosition), Camera.main.farClipPlane);
            input.m_netService.m_service = ItemClass.Service.Road;
            input.m_netService.m_itemLayers = ItemClass.Layer.Default;
            input.m_ignoreSegmentFlags = NetSegment.Flags.None;
            input.m_ignoreNodeFlags = NetNode.Flags.None;
            input.m_ignoreTerrain = true;

            return RayCast(input, out output);
        }
Example #5
0
        bool RaycastRoad(out RaycastOutput raycastOutput)
        {
            RaycastInput raycastInput = new RaycastInput(Camera.main.ScreenPointToRay(Input.mousePosition), Camera.main.farClipPlane);
            raycastInput.m_netService.m_service = ItemClass.Service.Road;
            raycastInput.m_netService.m_itemLayers = ItemClass.Layer.Default | ItemClass.Layer.MetroTunnels;
            raycastInput.m_ignoreSegmentFlags = NetSegment.Flags.None;
            raycastInput.m_ignoreNodeFlags = NetNode.Flags.None;
            raycastInput.m_ignoreTerrain = true;

            return RayCast(raycastInput, out raycastOutput);
        }
Example #6
0
        private static bool RayCastSegmentAndNode(out RaycastOutput output)
        {
            var input = new RaycastInput(Camera.main.ScreenPointToRay(Input.mousePosition), Camera.main.farClipPlane)
            {
                m_netService         = { m_itemLayers = ItemClass.Layer.Default | ItemClass.Layer.MetroTunnels },
                m_ignoreSegmentFlags = NetSegment.Flags.None,
                m_ignoreNodeFlags    = NetNode.Flags.None,
                m_ignoreTerrain      = true,
            };

            return(RayCast(input, out output));
        }
Example #7
0
        bool RaycastRoad(out RaycastOutput raycastOutput)
        {
            RaycastInput raycastInput = new RaycastInput(Camera.main.ScreenPointToRay(Input.mousePosition), Camera.main.farClipPlane);

            raycastInput.m_netService.m_service    = ItemClass.Service.Road;
            raycastInput.m_netService.m_itemLayers = ItemClass.Layer.Default | ItemClass.Layer.MetroTunnels;
            raycastInput.m_ignoreSegmentFlags      = NetSegment.Flags.None;
            raycastInput.m_ignoreNodeFlags         = NetNode.Flags.None;
            raycastInput.m_ignoreTerrain           = true;

            return(RayCast(raycastInput, out raycastOutput));
        }
Example #8
0
        bool RaycastProp(out RaycastOutput raycastOutput)
        {
            RaycastInput raycastInput = new RaycastInput(Camera.main.ScreenPointToRay(Input.mousePosition), Camera.main.farClipPlane);

            raycastInput.m_propService.m_service     = ItemClass.Service.None;
            raycastInput.m_buildingService.m_service = ItemClass.Service.Beautification;
            raycastInput.m_netService.m_subService   = ItemClass.SubService.None;
            raycastInput.m_netService.m_itemLayers   = ItemClass.Layer.None;
            raycastInput.m_ignorePropFlags           = PropInstance.Flags.None;
            raycastInput.m_ignoreBuildingFlags       = Building.Flags.None;
            raycastInput.m_ignoreTerrain             = true;

            return(RayCast(raycastInput, out raycastOutput));
        }
Example #9
0
    // Raycasting tools

    public static void RaycastTo(ObjectType type, out RaycastOutput output)
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        ToolBase.RaycastInput input = new ToolBase.RaycastInput(ray, Camera.main.farClipPlane);
        input.m_ignoreSegmentFlags       = type.IsFlagSet(ObjectType.NetSegment) ? NetSegment.Flags.None : NetSegment.Flags.All;
        input.m_ignoreNodeFlags          = type.IsFlagSet(ObjectType.NetNode) ? NetNode.Flags.None : NetNode.Flags.All;
        input.m_ignoreParkFlags          = type.IsFlagSet(ObjectType.ParkDistrict) ? DistrictPark.Flags.None : DistrictPark.Flags.All;
        input.m_ignorePropFlags          = type.IsFlagSet(ObjectType.Prop) ? PropInstance.Flags.None : PropInstance.Flags.All;
        input.m_ignoreTreeFlags          = type.IsFlagSet(ObjectType.Tree) ? TreeInstance.Flags.None : TreeInstance.Flags.All;
        input.m_ignoreCitizenFlags       = type.IsFlagSet(ObjectType.Citizen) ? CitizenInstance.Flags.None : CitizenInstance.Flags.All;
        input.m_ignoreVehicleFlags       = type.IsFlagSet(ObjectType.Vehicle) ? Vehicle.Flags.Deleted : Vehicle.Flags.Created;
        input.m_ignoreBuildingFlags      = type.IsFlagSet(ObjectType.Building) ? Building.Flags.None : Building.Flags.All;
        input.m_ignoreDisasterFlags      = type.IsFlagSet(ObjectType.Disaster) ? DisasterData.Flags.None : DisasterData.Flags.All;
        input.m_ignoreTransportFlags     = type.IsFlagSet(ObjectType.TransportLine) ? TransportLine.Flags.None : TransportLine.Flags.All;
        input.m_ignoreParkedVehicleFlags = type.IsFlagSet(ObjectType.ParkedVehicle) ? VehicleParked.Flags.None : VehicleParked.Flags.All;
        input.m_ignoreDistrictFlags      = type.IsFlagSet(ObjectType.District) ? District.Flags.None : District.Flags.All;
        input.m_ignoreTerrain            = !type.IsFlagSet(ObjectType.Position);

        RayCast(input, out ToolBase.RaycastOutput outputx);

        output = outputx;
    }
 public bool DoRayCast(RaycastInput input, out RaycastOutput output)
 {
     return(RayCast(input, out output));
 }
Example #11
0
 public static new bool RayCast(RaycastInput input, out RaycastOutput output) => ToolBase.RayCast(input, out output);
 public static bool TerrainRaycast(RaycastInput raycastInput, out RaycastOutput raycastOutput)
 {
     return(ToolBase.RayCast(raycastInput, out raycastOutput));
 }
Example #13
0
 /// <summary>
 /// Access ToolBase.RayCast protected method.
 /// </summary>
 /// <param name="input">Input raycast</param>
 /// <param name="output">Output raycast</param>
 /// <returns></returns>
 public static bool BaseRayCast(RaycastInput input, out RaycastOutput output) => RayCast(input, out output);