public void SetListItem(UIDynamicListItem dlItem) { item = dlItem; gradientPreview.onClickEvent.AddListener(dlItem.OnAnySubItemClicked); copyButton.onClickEvent.AddListener(dlItem.OnAnySubItemClicked); deleteButton.onClickEvent.AddListener(dlItem.OnAnySubItemClicked); }
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. }
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; }
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); }
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); }
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; }
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; }
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(); }
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; }
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. } }
// 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(); }
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; } } }
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); }
// 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); } } }
private bool MatchFilter(UIDynamicListItem item) { string name = item.Content.name.ToLower(); return(name.Contains(filter)); }
public void SetListItem(UIDynamicListItem listItem) { dlItem = listItem; deleteButton.onClickEvent.AddListener(dlItem.OnAnySubItemClicked); }