Esempio n. 1
0
    void showPlaceHolders(string id, Transform zeroP, ACityAPIDev.StickerInfo[] stickers)
    {
        if (id != null)
        {
            /*Debug.Log("zeroPpos = " + zeroP.position.x + "    " + zeroP.position.y + "    " + zeroP.position.z);
             * Debug.Log("zeroPori = " + zeroP.eulerAngles.x + "    " + zeroP.eulerAngles.y + "    " + zeroP.eulerAngles.z);*/

            GameObject placeHolderParent;
            placeHolderParent = checkSavedID(id);

            /*if (pcloud == null)
             * {
             *  pcloud = GetComponent<plyreader>().GetPointCloud();
             *  if (pcloud != null)
             *  {
             *      pcloud.transform.position = zeroP.position;
             *      pcloud.transform.rotation = zeroP.rotation;
             *  }
             * }*/
            setTimeForRelocation(PlayerPrefs.GetFloat("TimeForRelocation"));

            if (placeHolderParent == null)                                      // if it's first time we need to generate a new scene
            {
                if (stickers != null)                                           // nothing to do at the empty scene, no objects to create for
                {
                    GameObject scaleParent = new GameObject("CamParent-" + id); // add 'id' into the name
                    scaleParent.transform.position = arCamCoordinates;
                    placeHolderParent = new GameObject(id);
                    placeHolderParent.transform.position = zeroP.position;
                    placeHolderParent.transform.rotation = zeroP.rotation;
                    activeReco = placeHolderParent;

                    for (int j = 0; j < stickers.Length; j++)
                    {
                        // Placeholders
                        for (int i = 0; i < 4; i++)
                        {
                            GameObject go = Instantiate(dot, placeHolderParent.transform);
                            go.transform.position = stickers[j].positions[i];
                            placeHoldersDotsLines.Add(go);
                        }
                        // Lines
                        GameObject   lineHolder = Instantiate(linePrefab);
                        LineRenderer lr         = lineHolder.GetComponent <LineRenderer>();
                        lr.positionCount = 4;
                        lr.SetPositions(stickers[j].positions);
                        lineHolder.transform.SetParent(placeHolderParent.transform);
                        lr.useWorldSpace = false;
                        placeHoldersDotsLines.Add(lineHolder);

                        // VideoPlayer
                        GameObject temp1 = Instantiate(dot, placeHolderParent.transform);
                        temp1.transform.position = stickers[j].positions[0];
                        GameObject temp2 = Instantiate(dot, placeHolderParent.transform);
                        temp2.transform.position = new Vector3(stickers[j].positions[1].x, stickers[j].positions[0].y, stickers[j].positions[1].z);
                        GameObject temp3 = Instantiate(dot, placeHolderParent.transform);
                        temp3.transform.position = stickers[j].positions[2];
                        Vector3    raznp = (stickers[j].positions[0] - stickers[j].positions[2]) / 2;
                        GameObject vp    = Instantiate(videoPref, placeHolderParent.transform);
                        vp.transform.position = temp1.transform.position;
                        vp.transform.SetParent(temp1.transform);
                        temp1.transform.LookAt(temp2.transform);
                        vp.transform.position         = stickers[j].positions[0] - raznp;
                        vp.transform.localEulerAngles = new Vector3(vp.transform.localEulerAngles.x, vp.transform.localEulerAngles.y + 90, vp.transform.localEulerAngles.z);
                        vp.transform.SetParent(placeHolderParent.transform);
                        vp.transform.localEulerAngles = new Vector3(0, vp.transform.localEulerAngles.y, 0);
                        vp.transform.localScale       = (vp.transform.localScale * Vector3.Magnitude(stickers[j].positions[0] - stickers[j].positions[1]));
                        videoDemos.Add(vp);

                        if (stickers[j] != null)                        // if the sticker object is not failed
                        {
                            bool isVideoSticker =
                                stickers[j].sPath != null &&
                                stickers[j].sPath.Contains(".mp4");

                            bool is3dModel = !isVideoSticker &&
                                             (stickers[j].type.ToLower().Contains("3d") || // new 3d object format
                                              stickers[j].sSubType.Contains("3dobject") || // old 3d object format
                                              (stickers[j].sPath != null &&
                                               stickers[j].sPath.Contains("3dobject"))     // oldest 3d object format
                                             );

                            bool is3dModelTransfer =
                                stickers[j].sDescription.ToLower().Contains("transfer") ||
                                stickers[j].subType.ToLower().Contains("transfer");

                            if (isVideoSticker)                         // if it's a video-sticker
                            {
                                GameObject  urlVid = Instantiate(vp, placeHolderParent.transform);
                                VideoPlayer vidos  = urlVid.GetComponentInChildren <VideoPlayer>();
                                vidos.source = VideoSource.Url;
                                vidos.url    = stickers[j].sPath;
//#if PLATFORM_ANDROID                                                    //FixMe: waits AC cert fix
//                                vidos.url = vidos.url.Replace("https://developer.augmented.city",
//                                                               "http://developer.augmented.city");
//#endif
//                                Debug.Log("VID URL = " + vidos.url);
                                videoURLs.Add(urlVid);
                            }
                            else if (is3dModel || is3dModelTransfer)    // 3d object or special navi object
                            {
                                GameObject model      = Instantiate(GetComponent <ModelManager>().ABloader, placeHolderParent.transform);
                                string     bundleName = stickers[j].sText.ToLower();
                                if (stickers[j].type.ToLower().Contains("3d"))      // is it new format
                                {
                                    bundleName = stickers[j].bundleName.ToLower();
                                    if (string.IsNullOrEmpty(bundleName))
                                    {
                                        bundleName = stickers[j].sText.ToLower();  // return back to default bundle name as the 'name'
                                    }
                                }
                                model.GetComponent <AssetLoader>().ABName = bundleName;
                                model.transform.localPosition             = stickers[j].mainPositions; // * acapi.tempScale3d;
                                model.transform.localRotation             = new Quaternion(
                                    stickers[j].orientations.x,
                                    stickers[j].orientations.y,
                                    stickers[j].orientations.z,
                                    stickers[j].orientations.w);

                                if (stickers[j].sTrajectoryPath.Length > 1)
                                {
                                    Trajectory tr = model.GetComponent <Trajectory>();
                                    tr.go          = true;
                                    tr.acapi       = acapi;
                                    tr.sTrajectory = stickers[j].sTrajectoryPath;
                                    tr.sTimePeriod = stickers[j].sTrajectoryPeriod;
                                    tr.sOffset     = stickers[j].sTrajectoryOffset;
                                }

                                //Debug.Log(stickers[j].sTrajectoryPath);

                                // TEMP
                                Mover mover = model.GetComponent <Mover>();
                                mover.setLocked(true);
                                mover.objectId = stickers[j].objectId;

                                if (!stickers[j].vertical ||
                                    bundleName.Contains("nograv"))
                                {
                                    mover.noGravity = true;
                                }

                                if (stickers[j].grounded ||
                                    bundleName.Contains("quar") ||
                                    bundleName.Contains("santa") ||
                                    bundleName.Contains("pavel") ||
                                    bundleName.Contains("gard"))
                                {
                                    mover.landed = true;
                                }


                                /*Debug.Log(j + ". 3dmodel " + stickers[j].sText
                                + " = " + model.transform.localPosition
                                + " model.rot = " + model.transform.localRotation
                                + " stick.ori = " + stickers[j].orientations);*/

                                if (stickers[j].SModel_scale.Length > 0)
                                {
                                    float scale = float.Parse(stickers[j].SModel_scale);
                                    model.transform.localScale = new Vector3(scale, scale, scale);
                                }

                                models.Add(model);                      // store the new just created model
                            }
                            else                                        // other types of objects - info-stickers
                            {
                                GameObject newSticker = null;
                                string     checkType  = stickers[j].sType.ToLower();
                                if (checkType.Contains("food") || checkType.Contains("restaurant"))
                                {
                                    newSticker = Instantiate(stickerFood, placeHolderParent.transform);
                                }
                                else if (checkType.Contains("place"))
                                {
                                    newSticker = Instantiate(stickerPlace, placeHolderParent.transform);
                                }
                                else if (checkType.Contains("shop"))
                                {
                                    newSticker = Instantiate(stickerShop, placeHolderParent.transform);
                                }
                                else
                                {
                                    newSticker = Instantiate(stickerPref, placeHolderParent.transform);
                                }
                                if (newSticker != null)
                                {
                                    newSticker.transform.position = stickers[j].positions[0] - raznp;
                                    StickerController sc = newSticker.GetComponent <StickerController>();
                                    sc.setStickerInfo(stickers[j]);

                                    stickerObjects.Add(newSticker);     // store the new just created info-sticker
                                }
                            }
                        } // if (stickers[j] != null...)

                        Destroy(temp1);
                        Destroy(temp2);
                        Destroy(temp3);
                    } // for (j < stickers.Length)

                    turnOffVideoDemos(videoDemosTurn);
                    turnOffPlaceHolders(toShowPlaceHolders);
                    turnOffStickers(toShowStickers);

                    localizedImage.SetActive(true);
                    placeHolderParent.transform.SetParent(scaleParent.transform);
                    recos.Add(placeHolderParent);  // store processed scene into the cache
                    uim.Located();

                    relocationCompleted = true;
                }
                else
                {
                    Debug.Log("No stickers");
                    CantLocalize();
                }
            }
            else // if (placeHolderParent == null)
            {
                Transform scaleParentTransform = placeHolderParent.transform.root;
                //if (needScaling && lastLocalizedRecoId.Contains(id)) {}
                placeHolderParent.SetActive(true);
                GameObject tempScaler = new GameObject("TempScaler");
                tempScaler.transform.position = arCamCoordinates;
                GameObject tempBiasVector = new GameObject("TempBiasVector");
                tempBiasVector.transform.position    = zeroP.position;
                tempBiasVector.transform.eulerAngles = zeroP.eulerAngles;

                tempBiasVector.transform.SetParent(tempScaler.transform);
                tempScaler.transform.localScale = scaleParentTransform.localScale;

                Translocation(placeHolderParent, tempBiasVector.transform, animationTime);
                Destroy(tempScaler);
                Destroy(tempBiasVector);
            }

            lastLocalizedRecoId = id;
        }
        else // if (id != null)
        {
            CantLocalize();
        }
    }
Esempio n. 2
0
    void showPlaceHolders(string id, Transform zeroP, ACityAPIDev.StickerInfo[] stickers) {
        if (id != null)
        {
            Debug.Log("zero = " + zeroP.position.x + "    " + zeroP.position.y + "    " + zeroP.position.z);
            Debug.Log("zeroeulerAngles = " + zeroP.eulerAngles.x + "    " + zeroP.eulerAngles.y + "    " + zeroP.eulerAngles.z);

            GameObject placeHolderParent;
            placeHolderParent = checkSavedID(id);
            if (placeHolderParent == null)
            {
                if (stickers != null)
                {
                    GameObject scaleParent = new GameObject("CamParent-" + id);
                    scaleParent.transform.position = arCamCoordinates;
                    placeHolderParent = new GameObject(id);
                    placeHolderParent.transform.position = zeroP.position;
                    placeHolderParent.transform.rotation = zeroP.rotation;
                    activeReco = placeHolderParent;   

                    for (int j = 0; j < stickers.Length; j++)
                    {
                        //Placeholders
                        for (int i = 0; i < 4; i++)
                        {
                            GameObject go = Instantiate(dot, placeHolderParent.transform);
                            go.transform.position = stickers[j].positions[i];
                            placeHoldersDotsLines.Add(go);
                        }
                        //Lines
                        GameObject lineHolder = Instantiate(linePrefab);
                        LineRenderer lr = lineHolder.GetComponent<LineRenderer>();
                        lr.positionCount = 4;
                        lr.SetPositions(stickers[j].positions);
                        lineHolder.transform.SetParent(placeHolderParent.transform);
                        lr.useWorldSpace = false;
                        placeHoldersDotsLines.Add(lineHolder);

                        //---VideoPlayer
                        GameObject temp1 = Instantiate(dot, placeHolderParent.transform);
                        temp1.transform.position = stickers[j].positions[0];
                        GameObject temp2 = Instantiate(dot, placeHolderParent.transform);
                        temp2.transform.position = new Vector3(stickers[j].positions[1].x, stickers[j].positions[0].y, stickers[j].positions[1].z);
                        GameObject temp3 = Instantiate(dot, placeHolderParent.transform);
                        temp3.transform.position = stickers[j].positions[2];
                        Vector3 raznp = (stickers[j].positions[0] - stickers[j].positions[2]) / 2;
                        GameObject vp = Instantiate(videoPref, placeHolderParent.transform);
                        vp.transform.position = temp1.transform.position;
                        vp.transform.SetParent(temp1.transform);
                        temp1.transform.LookAt(temp2.transform);
                        vp.transform.position = stickers[j].positions[0] - raznp;
                        vp.transform.localEulerAngles = new Vector3(vp.transform.localEulerAngles.x, vp.transform.localEulerAngles.y + 90, vp.transform.localEulerAngles.z);
                        vp.transform.SetParent(placeHolderParent.transform);
                        vp.transform.localEulerAngles = new Vector3(0, vp.transform.localEulerAngles.y, 0);
                        vp.transform.localScale = (vp.transform.localScale * Vector3.Magnitude(stickers[j].positions[0] - stickers[j].positions[1]));
                        videoDemos.Add(vp);

                        if (stickers[j].sPath.Contains("mp4"))
                        {
                            GameObject urlVid = Instantiate(vp, placeHolderParent.transform);
                            VideoPlayer vidos = urlVid.GetComponentInChildren<VideoPlayer>();
                            vidos.source = VideoSource.Url;
                            vidos.url = stickers[j].sPath;
                            videoURLs.Add(urlVid);
                        }
                        else if (stickers[j].sSubType.Contains("3dobject")||stickers[j].sPath.Contains("3dobject")) {
                            GameObject model = Instantiate(GetComponent<ModelManager>().ABloader, placeHolderParent.transform);
                            string bundleName = stickers[j].sText.ToLower();
                            model.GetComponent<AssetLoader>().ABName = bundleName;
                            model.transform.localPosition = stickers[j].mainPositions;// * acapi.tempScale3d;
                            model.transform.localPosition = new Vector3(model.transform.localPosition.x,-model.transform.localPosition.y,model.transform.localPosition.z);
                            model.transform.localRotation = new Quaternion(stickers[j].orientations.x, stickers[j].orientations.y, stickers[j].orientations.z, stickers[j].orientations.w);

                               if (stickers[j].sTrajectoryPath.Length > 1) {
                                   Trajectory tr = model.GetComponent<Trajectory>();
                                   tr.go = true;
                                   tr.acapi = acapi;
                                   tr.sTrajectory = stickers[j].sTrajectoryPath;
                                   tr.sTimePeriod = stickers[j].sTrajectoryPeriod;
                                   tr.sOffset = stickers[j].sTrajectoryOffset;
                               }

                            Debug.Log(stickers[j].sTrajectoryPath);

                            // TEMP
                            Mover mover = model.GetComponent<Mover>();
                            mover.setLocked(true);
                            mover.objectId = stickers[j].objectId;
                            if (bundleName.Contains("quar") || bundleName.Contains("santa") || bundleName.Contains("pavel") || bundleName.Contains("gard"))
                            {
                                mover.landed = true;
                            }

                            Debug.Log(j+". 3dmodel "+ stickers[j].sText + " = " + model.transform.localPosition + " ROT Quaternion = " + model.transform.localRotation + " stickers[j].orientations = " + stickers[j].orientations);
                           
                            if (stickers[j].SModel_scale.Length>0) model.transform.localScale = new Vector3(float.Parse(stickers[j].SModel_scale), float.Parse(stickers[j].SModel_scale), float.Parse(stickers[j].SModel_scale));
                            models.Add(model);
                        }
                        else
                        {
                            GameObject newSticker = null;
                            string checkType = stickers[j].sType.ToLower();
                            if (checkType.Contains("food") || checkType.Contains("restaurant")) newSticker = Instantiate(stickerFood, placeHolderParent.transform);
                            else if (checkType.Contains("place")) newSticker = Instantiate(stickerPlace, placeHolderParent.transform);
                            else if (checkType.Contains("shop")) newSticker = Instantiate(stickerShop, placeHolderParent.transform);
                            else newSticker = Instantiate(stickerPref, placeHolderParent.transform);
                            if (newSticker != null)
                            {
                                newSticker.transform.position = stickers[j].positions[0] - raznp;
                                StickerController sc = newSticker.GetComponent<StickerController>();
                                sc.setStickerInfo(stickers[j]);
                                stickerObjects.Add(newSticker);
                            }
                        }
                        Destroy(temp1); Destroy(temp2);
                        Destroy(temp3);
                        relocationCompleted = true;

                    }

                    turnOffVideoDemos(videoDemosTurn);
                    turnOffPlaceHolders(toShowPlaceHolders);
                    turnOffStickers(toShowStickers);

                    localizedImage.SetActive(true);
                    placeHolderParent.transform.SetParent(scaleParent.transform);
                    recos.Add(placeHolderParent);
                    uim.Located();
                }
                else
                {
                    Debug.Log("No stickers");

                    CantLocalize();
                }
            }
            else
            {
                Transform scaleParentTransform = placeHolderParent.transform.root;
                placeHolderParent.SetActive(true);
                GameObject tempScaler = new GameObject("TempScaler");
                tempScaler.transform.position = arCamCoordinates;
                GameObject tempBiasVector = new GameObject("TempBiasVector");
                tempBiasVector.transform.position = zeroP.position;
                tempBiasVector.transform.eulerAngles = zeroP.eulerAngles;

                tempBiasVector.transform.SetParent(tempScaler.transform);
                tempScaler.transform.localScale = scaleParentTransform.localScale;


                Translocation(placeHolderParent, tempBiasVector.transform, animationTime);
                Destroy(tempScaler); Destroy(tempBiasVector);
            }

            lastLocalizedRecoId = id;
        }
        else
        {
            CantLocalize();
        }
    }