Beispiel #1
0
    /// <summary>
    /// Called during creation mode to set a new POI marker.
    /// </summary>
    /// <param name="PointerTypeID"></param>
    public void OnCreateNewPOI(int PointerTypeID)
    {
        // get info from the info types
        POITypeInfo info = TypeInfos[PointerTypeID];

        uint numPOIOfSameType = 0;

        foreach (POI currPOI in pointsOfInterest)
        {
            if (currPOI.ID == PointerTypeID)
            {
                numPOIOfSameType++;
            }
        }
        if (!(numPOIOfSameType < info.NumberOfPieces))
        {
            Debug.Log("Tried to create too many pois of the same type");
            return;
        }
        numPOIOfSameType++;


        // instantiate the actual poi object in unity space
        POI poiObject = Instantiate(POIPrefab);

        poiObject.transform.SetParent(MapPlane.transform, true);
        poiObject.SetID(info.ID);
        poiObject.SetGPSPosition(GPSPos);
        poiObject.SetName(info.Name + "(" + numPOIOfSameType + ")");
        pointsOfInterest.Add(poiObject);

        if (null != OnMarkerPieceWasCreated)
        {
            OnMarkerPieceWasCreated.Invoke(PointerTypeID, numPOIOfSameType, info.NumberOfPieces);
        }

        // create a pointer pointing toward the poi object
        POIPointer pointer = Instantiate(PointerPrefab);

        pointer.transform.SetParent(this.transform, false);

        pointer.POIName     = poiObject.GetName();
        pointer.UnityTarget = poiObject.transform.localPosition;
        pointer.ID          = poiObject.ID;
        pointer.poiObject   = poiObject;
        Vector2 CurrentPos = MapInfo.instance.GetGPSAsUnityPosition(GPSPos);

        pointer.OnPlayerPositionChanged(CurrentPos);
        pointers.Add(pointer);

        CheckSaveButtonActivation();
    }
Beispiel #2
0
    public void LoadPOIsFromSaveFile(List <POISaveInfo> poiInfos)
    {
        foreach (POI poi in pointsOfInterest)
        {
            Destroy(poi.gameObject);
        }
        pointsOfInterest.Clear();
        foreach (POIPointer pointer in pointers)
        {
            Destroy(pointer.gameObject);
        }
        pointers.Clear();

        foreach (POISaveInfo info in poiInfos)
        {
            // instantiate the actual poi object in unity space
            POI poiObject = Instantiate(POIPrefab);
            poiObject.transform.SetParent(MapPlane.transform, true);
            poiObject.SetID(info.ID);
            poiObject.SetGPSPosition(new Vector2(info.XGPSPos, info.YGPSPos));
            poiObject.SetName(info.Name);
            pointsOfInterest.Add(poiObject);


            // create a pointer pointing toward the poi object
            POIPointer pointer = Instantiate(PointerPrefab);
            pointer.transform.SetParent(this.transform, false);

            pointer.POIName     = poiObject.GetName();
            pointer.UnityTarget = poiObject.transform.localPosition;
            pointer.ID          = poiObject.ID;
            pointer.poiObject   = poiObject;
            Vector2 CurrentPos = MapInfo.instance.GetGPSAsUnityPosition(GPSPos);
            pointer.OnPlayerPositionChanged(CurrentPos);
            pointers.Add(pointer);
        }
    }