Пример #1
0
    public void AddSidewalk(Block block)
    {
        Sidewalk s = new Sidewalk(block);

        s.name     = "sidewalk";
        s.material = MaterialManager.Instance.Get("mat_sidewalk");
        _sidewalks.Add(s);
    }
Пример #2
0
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        // Button to generate the mesh again
        if (GUILayout.Button("Regenerate Mesh"))
        {
            Sidewalk sidewalk = target as Sidewalk;
            sidewalk.CalculateVertices();
            sidewalk.CreateMesh();
        }
    }
Пример #3
0
 public Way(string name, Node[] nodes, int?lanes, RoadType roadType, Sidewalk sidewalk, int?layer, CrossingType crossing, Surface surface, bool oneWay)
 {
     Name     = name;
     Nodes    = nodes;
     Lanes    = lanes;
     RoadType = roadType;
     Sidewalk = sidewalk;
     OneWay   = oneWay;
     Layer    = layer;
     Crossing = crossing;
     Surface  = surface;
 }
Пример #4
0
	// Use this for initialization
	void Start () 
	{
		_theGrid = new GridOfGame();
		_theGrid.new_level( level );
		List< GameObject > _theHouses = new List<GameObject>() {
			_theHousePrefab_1,
			_theHousePrefab_2,
			_theHousePrefab_3,
			_theHousePrefab_4,
			_theHousePrefab_5,
			_theHousePrefab_6,
			_theHousePrefab_7,
			_theHousePrefab_8,
			_theHousePrefab_9,
			_theHousePrefab_10
		};
		_theSidewalk = new Sidewalk( _theGrid, _theSidewalkPrefab, _theHouses );
		_theSidewalk.new_level();
	}
Пример #5
0
    public void GenerateSegment()
    {
        int   rand        = Random.Range(0, ObjectsDB.instance.allHouses.Length);
        House housePrefab = ObjectsDB.instance.allHouses[rand];

        GameObject houseLeft = Instantiate(housePrefab.gameObject, houseZoneLeft.transform);

        houseLeft.GetComponent <House>().GenerateHouse();


        GameObject houseRight = Instantiate(houseLeft, houseZoneRight.transform);

        PairObjects(houseLeft, houseRight);


        if (Random.Range(0, 100) > 50)
        {
            SetDifferenceInZone(houseLeft);
            Debug.Log("Difference on the left of " + TrackManager.instance.totalSegmentCount + " tile");
        }
        else
        {
            SetDifferenceInZone(houseRight);
            Debug.Log("Difference on the right of " + TrackManager.instance.totalSegmentCount + " tile");
        }


        rand = Random.Range(0, ObjectsDB.instance.allSidewalks.Length);
        Sidewalk   sidewalkPrefab = ObjectsDB.instance.allSidewalks[rand];
        GameObject sidewalkLeft   = Instantiate(sidewalkPrefab.gameObject, sidewalkZoneLeft.transform);
        GameObject sidewalkRight  = Instantiate(sidewalkPrefab.gameObject, sidewalkZoneRight.transform);

        if (withWater)
        {
            rand = Random.Range(0, ObjectsDB.instance.allWater.Length);
            Water      waterPrefab = ObjectsDB.instance.allWater[rand];
            GameObject water       = Instantiate(waterPrefab.gameObject, waterZone.transform);
        }
        if (gameObject.GetComponentInChildren <MeshesCombiner>().isActiveAndEnabled)
        {
            gameObject.GetComponentInChildren <MeshesCombiner>().CombineMeshes();
        }
    }
Пример #6
0
 void Awake()
 {
     building = GetComponentInChildren <BuildingContainer>();
     manager  = FindObjectOfType <SceneManagerState>();
     sidewalk = GetComponentInChildren <Sidewalk>();
 }
Пример #7
0
    /// <summary>
    /// Gets all the points that will form a sidewalk
    /// </summary>
    /// <param name="startIntersection"></param>
    /// <param name="roadSegment"></param>
    /// <param name="checks"></param>
    /// <param name="parent"></param>
    private Sidewalk CreateSidewalk(Intersection startIntersection, RoadSegment roadSegment, HashSet <SidewalkCheckHelper> checks, GameObject parent)
    {
        Intersection current     = startIntersection;
        Intersection next        = roadSegment.GetOtherSide(startIntersection);
        RoadSegment  nextSegment = null;

        GameObject go = new GameObject();

        go.name = "Sidewalk Mesh";
        Sidewalk sidewalk = go.AddComponent <Sidewalk>();

        sidewalk.OriginalVertices.Add(roadSegment.GetVertexWorldPosition(startIntersection, false));
        SidewalkCheckHelper check = new SidewalkCheckHelper();

        while (next != startIntersection)
        {
            int nextIndex = (next.Roads.IndexOf(roadSegment) + 1) % (next.Roads.Count);
            nextSegment = next.Roads[nextIndex];

            check.Intersection = next;
            check.Road         = nextSegment;

            checks.Add(check);

            if (next.Roads.Count == 1)
            {
                sidewalk.OriginalVertices.Add(nextSegment.GetVertexWorldPosition(next, true));
                sidewalk.OriginalVertices.Add(nextSegment.GetVertexWorldPosition(next, false));
            }
            else if (!(Mathf.Approximately(roadSegment.GetVertexWorldPosition(next, true).x, nextSegment.GetVertexWorldPosition(next, false).x) &&
                       Mathf.Approximately(roadSegment.GetVertexWorldPosition(next, true).z, nextSegment.GetVertexWorldPosition(next, false).z)))
            {
                sidewalk.OriginalVertices.Add(roadSegment.GetVertexWorldPosition(next, true));
                sidewalk.OriginalVertices.Add(nextSegment.GetVertexWorldPosition(next, false));
            }
            else
            {
                sidewalk.OriginalVertices.Add(nextSegment.GetVertexWorldPosition(next, false));
            }

            current     = next;
            next        = nextSegment.GetOtherSide(next);
            roadSegment = nextSegment;
        }

        if (nextSegment != null &&
            !(Mathf.Approximately(sidewalk.OriginalVertices[0].x, nextSegment.GetVertexWorldPosition(next, true).x) &&
              Mathf.Approximately(sidewalk.OriginalVertices[0].z, nextSegment.GetVertexWorldPosition(next, true).z)))
        {
            sidewalk.OriginalVertices.Add(nextSegment.GetVertexWorldPosition(next, true));
        }


        Vector3 sum = Vector3.zero;

        for (int i = 0; i < sidewalk.OriginalVertices.Count; i++)
        {
            sum += sidewalk.OriginalVertices[i];
        }

        go.transform.position     = sum / sidewalk.OriginalVertices.Count;
        sidewalk.SidewalkMaterial = city.SidewalkMaterial;
        sidewalk.InnerMaterial    = city.InnerBlockMaterial;
        sidewalk.FixMeshOffset();
        sidewalk.FindDirection();
        sidewalk.CalculateVertices();
        sidewalk.CreateMesh();
        go.transform.parent = parent.transform;
        go.isStatic         = true;
        return(sidewalk);
    }