コード例 #1
0
        public void SetListItem(UIDynamicListItem dlItem)
        {
            item = dlItem;

            gradientPreview.onClickEvent.AddListener(dlItem.OnAnySubItemClicked);
            copyButton.onClickEvent.AddListener(dlItem.OnAnySubItemClicked);
            deleteButton.onClickEvent.AddListener(dlItem.OnAnySubItemClicked);
        }
コード例 #2
0
ファイル: SkyTool.cs プロジェクト: ubisoft/vrtist
        private void AddGradient(SkySettings sky)
        {
            GradientItem gradientItem = GradientItem.GenerateGradientItem(sky);

            gradientItem.AddListeners(OnDuplicateGradientItem, OnDeleteGradientItem);
            UIDynamicListItem dlItem = gradientList.AddItem(gradientItem.transform);

            dlItem.UseColliderForUI           = false;       // dont use the default global collider, sub-widget will catch UI events and propagate them.
            gradientItem.transform.localScale = Vector3.one; // Items are hidden (scale 0) while they are not added into a list, so activate the item here.
            gradientItem.SetListItem(dlItem);                // link individual elements to their parent list in order to be able to send messages upwards.
        }
コード例 #3
0
ファイル: ProjectItem.cs プロジェクト: ubisoft/vrtist
        public void SetListItem(UIDynamicListItem dlItem, string path)
        {
            item = dlItem;

            Material  mat     = transform.Find("Content").gameObject.GetComponent <MeshRenderer>().material;
            Texture2D texture = Utils.LoadTexture(path, true);

            mat.SetTexture("_EquiRect", texture);
            mat.SetVector("_CamInitWorldPos", Camera.main.transform.position);

            string projectName = Directory.GetParent(path).Name;

            transform.Find("Canvas/Text").gameObject.GetComponent <TextMeshProUGUI>().text = projectName;
        }
コード例 #4
0
        public async void AddPrefab(AssetBankItemData data)
        {
            GunPrefabItem gunItem = GunPrefabItem.Create(data);

            gunItem.AddListener(OnDeletePrefab);
            UIDynamicListItem dlItem = prefabList.AddItem(gunItem.transform);

            dlItem.UseColliderForUI      = false;       // dont use the default global collider, sub-widget will catch UI events and propagate them.
            gunItem.transform.localScale = Vector3.one; // Items are hidden (scale 0) while they are not added into a list, so activate the item here.
            gunItem.SetListItem(dlItem);                // link i

            await AssetBankUtils.LoadPrefab(selectedItem);

            prefabs.Add(data.prefab);
        }
コード例 #5
0
        public void SetListItem(UIDynamicListItem dlItem)
        {
            item = dlItem;

            currentShotLabel.onReleaseEvent.AddListener(dlItem.OnAnySubItemClicked);
            shotEnabledCheckbox.onReleaseEvent.AddListener(dlItem.OnAnySubItemClicked);
            shotNameLabel.onReleaseEvent.AddListener(dlItem.OnAnySubItemClicked);
            cameraNameLabel.onReleaseEvent.AddListener(dlItem.OnAnySubItemClicked);
            startFrameSpinner.onReleaseEvent.AddListener(dlItem.OnAnySubItemClicked);
            startFrameButton.onReleaseEvent.AddListener(dlItem.OnAnySubItemClicked);
            frameRangeLabel.onReleaseEvent.AddListener(dlItem.OnAnySubItemClicked);
            endFrameSpinner.onReleaseEvent.AddListener(dlItem.OnAnySubItemClicked);
            endFrameButton.onReleaseEvent.AddListener(dlItem.OnAnySubItemClicked);
            setCameraButton.onReleaseEvent.AddListener(dlItem.OnAnySubItemClicked);
        }
コード例 #6
0
ファイル: CameraTool.cs プロジェクト: ubisoft/vrtist
        private void OnCameraAdded(GameObject gObject)
        {
            CameraController cameraController = gObject.GetComponent <CameraController>();

            if (null == cameraController)
            {
                return;
            }
            GameObject cameraItemObject = Instantiate(cameraItemPrefab);
            CameraItem cameraItem       = cameraItemObject.GetComponentInChildren <CameraItem>();

            cameraItem.SetCameraObject(gObject);
            UIDynamicListItem item = cameraList.AddItem(cameraItem.transform);

            item.UseColliderForUI = true;
        }
コード例 #7
0
        private void OnLightAdded(GameObject gObject)
        {
            LightController controller = gObject.GetComponent <LightController>();

            if (null == controller)
            {
                return;
            }
            GameObject lightItemObject = Instantiate(lightItemPrefab);
            LightItem  lightItem       = lightItemObject.GetComponentInChildren <LightItem>();

            lightItem.SetLightObject(gObject, controller);
            UIDynamicListItem item = lightList.AddItem(lightItem.transform);

            item.UseColliderForUI = true;
        }
コード例 #8
0
ファイル: Lobby.cs プロジェクト: AnthonyMir/vrtist
        private void LoadProjectItems()
        {
            projects.Clear();
            projectList.Clear();
            List <string> paths = Serialization.SaveManager.Instance.GetProjectThumbnailPaths();

            foreach (string path in paths)
            {
                GameObject item = Instantiate(itemPrefab);
                item.name = Directory.GetParent(path).Name;
                ProjectItem       projectItem = item.GetComponent <ProjectItem>();
                UIDynamicListItem dlItem      = projectList.AddItem(item.transform);
                projectItem.SetListItem(dlItem, path);
                projects.Add(item);
            }

            projectList.ForceUpdate();
            UpdateButtons();
        }
コード例 #9
0
ファイル: UIDynamicList.cs プロジェクト: ubisoft/vrtist
        public void Clear()
        {
            for (int i = items.Count - 1; i >= 0; --i)
            {
                UIDynamicListItem item = items[i];
                if (item != null)
                {
                    //items.RemoveAt(i);
                    GameObject.Destroy(item.gameObject);
                }
            }
            items.Clear(); // ceinture et bretelle.

            nbItemsPerPage    = 1;
            nbItemsInLastPage = 0;
            pagesCount        = 0;
            currentPage       = 0;

            NeedsRebuild = true;
        }
コード例 #10
0
ファイル: PaintGrassTool.cs プロジェクト: ubisoft/vrtist
        private void OnGrassAdded(GameObject gObject)
        {
            GrassController grassController = gObject.GetComponent <GrassController>();

            if (null == grassController)
            {
                return;
            }

            // Grass is added two times. Dont duplicate.
            bool grassFound = false;

            foreach (var it in grassList.GetItems())
            {
                GrassItem gIt = it.Content.GetComponentInChildren <GrassItem>();
                if (gIt != null)
                {
                    if (gIt.grassObject.name == gObject.name)
                    {
                        grassFound = true;
                    }
                }
            }

            if (!grassFound)
            {
                GameObject grassItemObject = Instantiate(grassItemPrefab);
                GrassItem  grassItem       = grassItemObject.GetComponentInChildren <GrassItem>();
                grassItem.SetGrassObject(gObject);
                Transform         t    = grassItem.transform;
                UIDynamicListItem item = grassList.AddItem(t);
                item.UseColliderForUI = true;
            }
            else
            {
                // TODO: Update image of the item, now that the painting is done.
            }
        }
コード例 #11
0
ファイル: UIShotManager.cs プロジェクト: ubisoft/vrtist
        // Update UI: rebuild shots list
        void OnShotManagerChanged()
        {
            shotList.Clear();
            ShotManager sm = ShotManager.Instance;
            int         activeShotCount = 0;

            foreach (Shot shot in sm.shots)
            {
                ShotItem shotItem = ShotItem.GenerateShotItem(shot);
                shotItem.AddListeners(OnUpdateShotName, OnUpdateShotStart, OnUpdateShotEnd, OnUpdateShotColor, OnUpdateShotEnabled, OnSetCamera);
                UIDynamicListItem dlItem = shotList.AddItem(shotItem.transform);
                dlItem.UseColliderForUI       = false;       // dont use the default global collider, sub-widget will catch UI events and propagate them.
                shotItem.transform.localScale = Vector3.one; // Items are hidden (scale 0) while they are not added into a list, so activate the item here.
                shotItem.SetListItem(dlItem);                // link individual elements to their parent list in order to be able to send messages upwards.

                if (shot.enabled)
                {
                    activeShotCount++;
                }
            }
            shotList.CurrentIndex     = sm.ActiveShotIndex;
            activeShotCountLabel.Text = activeShotCount.ToString() + "/" + sm.shots.Count.ToString();
        }
コード例 #12
0
ファイル: UIDynamicList.cs プロジェクト: ubisoft/vrtist
        public void RemoveItem(UIDynamicListItem item)
        {
            for (int i = 0; i < items.Count; ++i)
            {
                if (items[i] == item)
                {
                    items.RemoveAt(i);
                    GameObject.Destroy(item.gameObject);

                    if (nbItemsInLastPage == 1)
                    {
                        pagesCount--;
                        if (currentPage == pagesCount)
                        {
                            currentPage = pagesCount - 1;
                        }
                    }

                    NeedsRebuild = true;
                    return;
                }
            }
        }
コード例 #13
0
ファイル: UIDynamicList.cs プロジェクト: ubisoft/vrtist
        public UIDynamicListItem AddItem(Transform t)
        {
            // full page, add one page
            if (nbItemsInLastPage == nbItemsPerPage)
            {
                pagesCount++;
            }
            if (focusItemOnAdd)
            {
                currentPage = pagesCount == 0 ? 0 : pagesCount - 1;
            }

            GameObject gObj = new GameObject("List Item");

            gObj.SetActive(false);  // gObj may be on another page, so by default not active
            UIDynamicListItem item = gObj.AddComponent <UIDynamicListItem>();

            gObj.tag                     = "UICollider";
            gObj.layer                   = LayerMask.NameToLayer("CameraHidden");
            item.list                    = this;
            item.autoResizeContent       = autoResizeContent;
            item.autoCenterContent       = autoCenterContent;
            item.Width                   = itemWidth;
            item.Height                  = itemHeight;
            item.Depth                   = itemDepth;
            item.Content                 = t;
            gObj.transform.parent        = transform;
            gObj.transform.localPosition = Vector3.zero;
            gObj.transform.localRotation = Quaternion.identity;
            gObj.transform.localScale    = Vector3.one;
            items.Add(item);

            NeedsRebuild = true;

            return(item);
        }
コード例 #14
0
ファイル: UIDynamicList.cs プロジェクト: ubisoft/vrtist
        // reposition every item depending on the itemWidth/Height, width/height, margin, and current page.
        private void UpdateItemPositions()
        {
            // Filter items
            List <UIDynamicListItem> filteredItems;

            if (null != filter && filter.Length > 0)
            {
                filteredItems = new List <UIDynamicListItem>();
                foreach (var item in items)
                {
                    if (MatchFilter(item))
                    {
                        filteredItems.Add(item);
                    }
                    else
                    {
                        // Be sure to hide items that don't match the filter
                        item.gameObject.SetActive(false);
                    }
                }
            }
            else
            {
                filteredItems = items;
            }

            //
            // Update items layout variables
            //
            innerTotalHeight = height - 2 * margin;
            innerTotalWidth  = width - 2 * margin;
            maxNbItemCols    = Mathf.FloorToInt(innerTotalWidth / itemWidth);
            if (maxNbItemCols * itemWidth + (maxNbItemCols - 1) * margin > innerTotalWidth) // add margins and check if it fits
            {
                maxNbItemCols--;
            }
            maxNbItemRows = Mathf.FloorToInt(innerTotalHeight / itemHeight);
            if (maxNbItemRows * itemHeight + (maxNbItemRows - 1) * margin > innerTotalHeight) // add margins and check if it fits
            {
                maxNbItemRows--;
            }
            itemVMargin    = maxNbItemRows > 1 ? ((innerTotalHeight - ((float)maxNbItemRows * itemHeight)) / (maxNbItemRows - 1)) : 0.0f;
            itemHMargin    = maxNbItemCols > 1 ? ((innerTotalWidth - ((float)maxNbItemCols * itemWidth)) / (maxNbItemCols - 1)) : 0.0f;
            nbItemsPerPage = maxNbItemCols * maxNbItemRows;

            pagesCount = ((filteredItems.Count > 0) && (nbItemsPerPage > 0)) ? (filteredItems.Count - 1) / nbItemsPerPage + 1 : 0;

            nbItemsInLastPage = pagesCount == 0 ? 0 : Math.Min(filteredItems.Count - nbItemsPerPage * (pagesCount - 1), nbItemsPerPage);

            float itemWidth2  = (float)itemWidth / 2.0f;
            float itemHeight2 = (float)itemHeight / 2.0f;

            //
            // Update items visibility, position, scale and collider.
            //
            for (int i = 0; i < filteredItems.Count; ++i)
            {
                UIDynamicListItem item = filteredItems[i];
                if (nbItemsPerPage > 0)
                {
                    bool isInCurrentPage = ((i / nbItemsPerPage) == currentPage);
                    item.gameObject.SetActive(isInCurrentPage);
                    if (isInCurrentPage)
                    {
                        int idxInCurrentPage = i % nbItemsPerPage;
                        int row = idxInCurrentPage / maxNbItemCols;
                        int col = idxInCurrentPage % maxNbItemCols;
                        if (autoCenterContent) // TODO: always place pivot top-left, and let UIDynamicItem auto-center its content.
                        {
                            item.transform.localPosition = new Vector3(
                                col == 0 ? margin + itemWidth2 : margin + itemWidth2 + col * (itemWidth + itemHMargin),
                                row == 0 ? -margin - itemHeight2 : -margin - itemHeight2 - row * (itemHeight + itemVMargin),
                                0.0f);
                        }
                        else
                        {
                            item.transform.localPosition = new Vector3(
                                col == 0 ? margin : margin + col * (itemWidth + itemHMargin),
                                row == 0 ? -margin : -margin - row * (itemHeight + itemVMargin),
                                0.0f);
                        }
                        item.transform.localRotation = Quaternion.identity;
                        item.Width  = itemWidth;
                        item.Height = itemHeight;
                        item.Depth  = itemDepth;
                        item.AdaptContent();
                    }
                }
                else
                {
                    item.gameObject.SetActive(false);
                }
            }
        }
コード例 #15
0
ファイル: UIDynamicList.cs プロジェクト: ubisoft/vrtist
        private bool MatchFilter(UIDynamicListItem item)
        {
            string name = item.Content.name.ToLower();

            return(name.Contains(filter));
        }
コード例 #16
0
 public void SetListItem(UIDynamicListItem listItem)
 {
     dlItem = listItem;
     deleteButton.onClickEvent.AddListener(dlItem.OnAnySubItemClicked);
 }