private void SpawnObject()
    {
        RoadObject newObject = Instantiate(currentObjectGroup.GetRandomObject()).GetComponent <RoadObject>();

        newObject.roadPosition    = GetRandomOffRoadPosition();
        newObject.currentDistance = Random.value;
    }
示例#2
0
        private void pictureBoxGrid_DragDrop(object sender, DragEventArgs e)
        {
            // TODO Abdullah
            RoadObject roadObject     = null;                                                       // Declaration
            Image      draggedImage   = (Image)e.Data.GetData(DataFormats.Bitmap);                  // Get Imaged Draged
            Point      draggedPointer = RoundXY(pictureBoxGrid.PointToClient(new Point(e.X, e.Y))); // Where to draw Image

            if (draggedImage == pictureBox_CrossingA.Image)
            {
                roadObject        = new Crossing(draggedPointer, CrossingType.CrossingWithoutPedestrian, draggedImage);
                roadObject.bitmap = new Bitmap(draggedImage);
                simulator.AddCrossing(roadObject);
                Console.WriteLine("Crossing A was Drawn");
            }
            else if (draggedImage == pictureBox_CrossingB.Image)
            {
                roadObject        = new Crossing(draggedPointer, CrossingType.CrossingWithPedestrian, draggedImage);
                roadObject.bitmap = new Bitmap(draggedImage);
                simulator.AddCrossing(roadObject);
                Console.WriteLine("Crossing B was Drawn");
            }
            else
            {
                MessageBox.Show("Non of the crossings");
                Console.WriteLine("Crossing xyz was Drawn");
            }
            clear();
            drawGrid();
            drawRoadObjects(simulator.RoadObjects);
            render();
        }
示例#3
0
 // Constructor
 public Cell(int x, int y)
 {
     this.topLeftCornerX = x;
     this.topLeftCornerY = y;
     this.roadObject     = null;
     spawntextboxes      = new TextBox[4];
 }
示例#4
0
    // Update is called once per frame
    void Update()
    {
        if (!IsPaused)
        {
            car.IsPaused    = false;
            currentPosition = car.transform.position.z;
            if (currentPosition > distanceChecker)
            {
                Vector3 pos = new Vector3(planes[index].transform.position.x, planes[index].transform.position.y, planes[index].transform.position.z + 120);
                planes[index].transform.position = pos;

                RoadObject road = (RoadObject)planes[index].GetComponent("RoadObject");
                road.RandomObstacle();

                if (index < 3)
                {
                    index++;
                }
                else
                {
                    index = 0;
                }

                distanceChecker += 30;
            }
        }
        else
        {
            car.IsPaused = true;
        }
    }
示例#5
0
 public void ActivateRenderer(RoadObject roadObject)
 {
     this.roadObject = roadObject;
     //center.x = character.position.x;
     roadObject.transform.position = center;
     roadObject.transform.rotation = identityQuaternion;
     roadObject.renderer.enabled   = true;
 }
示例#6
0
 public void AddCrossing(RoadObject ro)
 {
     if (RoadObjects == null)
     {
         RoadObjects = new List <RoadObject>();
     }
     RoadObjects.Add(ro);
 }
示例#7
0
 public void drawMovingObject(List <MovingObject> mo)
 {
     foreach (MovingObject moving in mo)
     {
         RoadObject roadObject = moving.Path.RoadObject;
         roadPiece  rp         = moving.Path;
         int        x          = roadObject.Coordinate.X + rp.coordinate.X + moving.CoordinateInRoadPiece.X;
         int        y          = roadObject.Coordinate.Y + rp.coordinate.Y + moving.CoordinateInRoadPiece.Y;
         g.DrawEllipse(pen, x, y, 4, 4);
     }
 }
示例#8
0
    void InitializeEnviroment()
    {
        List <Vector3> anchors = GetRandomAnchors(radius_anchor_circle, num_anchors);
        List <float>   angles  = GetRandomAngles(num_anchors);

        road = new RoadObject(anchors, angles, true, path_space, BezierPath.ControlMode.Automatic, road_width);
        road.parentObject = gameObject;
        SetRoadPhysicalMaterial(1.0f, 1.0f);
        SetAgentOnRandomAnchor();
        InitializeCarAgentComponent();
    }
示例#9
0
    public void Reposition(RoadObject o)
    {
        var a = GetAngleAtPosition(o.position);

        o.transform.position = Quaternion.AngleAxis(-currentFrameAngle, Vector3.up) * (
            GetOffsetAtPosition(o.position)
            + Quaternion.AngleAxis(a, Vector3.up) * new Vector3(o.x, 0)
            - currentFrameOffset
            );
        o.transform.eulerAngles = new Vector3(0, a - currentFrameAngle + o.rotation, 0);
    }
示例#10
0
 public roadPiece(RoadObject ro, roadPiece[] nexts)
 {
     size                 = new System.Drawing.Point(10, 10);
     RoadObject           = ro;
     Randomizer           = new Random();
     coordinate           = new System.Drawing.Point();
     orientation          = Orientation.Degree0;
     trafficlightRefrence = null;
     NextArray            = nexts;
     Sensor               = null;
 }
示例#11
0
    public static RoadObject Copy(RoadObject road)
    {
        RoadObject new_road = new RoadObject();

        new_road.points     = road.points;
        new_road.isClosed   = road.isClosed;
        new_road.space      = road.space;
        new_road.mode       = road.mode;
        new_road.gameObject = GameObject.Instantiate(road.gameObject);

        return(new_road);
    }
示例#12
0
    private void DisplayRoads(bool reset)
    {
        if (reset)
        {
            roadObjects.Clear();
        }

        foreach (Town town in GameController.World.towns)
        {
            foreach (Road road in town.roads)
            {
                if (!roadObjects.ContainsKey(road))
                {
                    RoadObject roadObject = InstantiateOnMap(PrefabManager.Road, town.Tile.position, roadsParent);
                    roadObject.Init(road);

                    roadObjects.Add(road, roadObject);
                }
            }
        }
    }
示例#13
0
        /**
         *
         */
        private RoadObject GetCoordinatesById(XmlNodeList nodeTags, List <long> nodeTagIds, XmlNode wayTag, int vehicleType, int roadType)
        {
            //ids for coordinate pairing from way tag
            var locationIDs     = LoaderUtils.GetWayTagIDs(wayTag);
            var latLngObjects   = new LatLngObject[locationIDs.Count];
            var numOfFoundedIDs = 0;

            for (var k = 0; k < nodeTags.Count; k++)
            {
                //cached id from node tag
                var id = nodeTagIds[k];
                int locationIndex;
                if ((locationIndex = locationIDs.IndexOf(id)) != -1)
                {
                    var nodeTag = nodeTags[k];
                    var lat     = float.Parse(nodeTag.Attributes["lat"].Value);
                    var lon     = float.Parse(nodeTag.Attributes["lon"].Value);
                    latLngObjects[locationIndex] = new LatLngObject(lat, lon);
                    ++numOfFoundedIDs;
                }

                //pokud všechny souřadnice byly spárovány s IDčkama od budovy
                if (locationIDs.Count == numOfFoundedIDs)
                {
                    break;
                }
            }

            var roadObject = new RoadObject
            {
                LatLngCoordinates = latLngObjects.ToList(),
                RoadType          = roadType,
                VehicleType       = vehicleType
            };

            return(roadObject);
        }
示例#14
0
 void Start()
 {
     ro = GetComponent <RoadObject>();
     gameObject.AddComponent <AudioSource>();
 }
示例#15
0
 public void AddConnection(RoadObject next)
 {
     throw new System.NotImplementedException();
 }
示例#16
0
        /**
         * Vytvoření 3D objektu vozidla na dané cestě
         */
        public void RenderObjectsOnRoad(RoadObject roadObject, Vector3 middleMapPoint)
        {
            MiddleMapPoint = middleMapPoint;
            //do not add road created only from one point
            if (roadObject.XyzCoordinates.Count() < 2)
            {
                return;
            }

            //pokud je objekt tramvaj a pokud se objekt pohybuje jen na draze mensi nez jedna(X a zaroven Z), tak ho nepridavat
            var startCoordinate = roadObject.XyzCoordinates[0];
            var lastCoordinate  = roadObject.XyzCoordinates[roadObject.XyzCoordinates.Length - 1];

            if (roadObject.VehicleType == RoadUtils.VehicleTram && Math.Abs(startCoordinate.x - lastCoordinate.x) < 1 &&
                Math.Abs(startCoordinate.z - lastCoordinate.z) < 1)
            {
                return;
            }

            //velikost objektu vozidel
            var vehicleScale = 0.018f;

            //nastavení vozidla do prvního úseku
            //pro pohyb mezi všemi úseky až do konce cesty
            roadObject.CurrentIndexPosition = 0;
            RoadObjects.Add(roadObject);

            //nastavení daného vozidla na začátek jednoho z úseků cesty (vozidlo se v jednom úseku pohybuje v rozmezí 0-1)
            //pro pohyb v jednom konkrétním úseku cesty
            Path.Add(0f);

            var carTypeRandom = 0;

            //random number for selecting vehicle type
            if (roadObject.VehicleType == RoadUtils.VehicleCar)
            {
                //0 -- 2 (3 type of cars)
                carTypeRandom = Random.Next(0, 3);
            }
            //tram (1 type of tram)
            else if (roadObject.VehicleType == RoadUtils.VehicleTram)
            {
                carTypeRandom = 3;
            }

            GameObject car;

            switch (carTypeRandom)
            {
            //cars
            case 0:
                car = Instantiate(BlueCarPrefab);
                break;

            case 1:
                car = Instantiate(GreenCarPrefab);
                break;

            case 2:
                car = Instantiate(BlueTruckPrefab);
                break;

            //trams
            case 3:
                car = Instantiate(TramPrefab);
                break;

            //default
            default:
                car = Instantiate(BlueTruckPrefab);
                break;
            }

            car.transform.localScale = new Vector3(vehicleScale, vehicleScale, vehicleScale);
            car.name = "car_" + (++NameIndex);
            Cars.Add(car);
        }
示例#17
0
 public void AddConnection(RoadObject next)
 {
     connections.Add(next);
 }
示例#18
0
 /* get & set cell y pos - java note*/
 public void SetRoadObject(RoadObject o)
 {
     this.roadObject = o;
 }
示例#19
0
    private void SpawnOncomingCar()
    {
        RoadObject newCar = Instantiate(oncomingCarPrefab).GetComponent <RoadObject>();

        newCar.roadPosition = Random.Range(-0.75f, -0.25f);
    }
示例#20
0
    private void SpawnSameDirectionCar()
    {
        RoadObject newCar = Instantiate(sameDirectionCarPrefab).GetComponent <RoadObject>();

        newCar.roadPosition = Random.Range(0.25f, 0.75f);
    }
示例#21
0
    private void SpawnDeer()
    {
        RoadObject newDear = Instantiate(deerPrefabs[Random.Range(0, deerPrefabs.Length)]).GetComponent <RoadObject>();

        newDear.roadPosition = Random.value >= 0.5f ? -1.5f : 1.5f;
    }