public override void Setup(HierarchyData data) { base.Setup(data); // First time setup if (cubeMaterial == null) { // Cube material might change for hover state, so we always instance it m_CubeRenderer = m_Cube.GetComponent <Renderer>(); cubeMaterial = MaterialUtils.GetMaterialClone(m_CubeRenderer); m_NormalColor = cubeMaterial.color; m_LockRenderer = m_Lock.GetComponent <Renderer>(); m_Lock.hoverStarted += (bh, ed) => { m_HoveringLock = true; }; m_Lock.hoverEnded += (bh, ed) => { m_HoveringLock = false; }; m_Lock.dragEnded += ToggleLock; m_ExpandArrowRenderer = m_ExpandArrow.GetComponent <Renderer>(); m_ExpandArrow.dragEnded += ToggleExpanded; m_Cube.dragStarted += OnDragStarted; m_Cube.dragging += OnDragging; m_Cube.dragEnded += OnDragEnded; m_Cube.hoverStarted += OnHoverStarted; m_Cube.hoverEnded += OnHoverEnded; m_Cube.click += OnClick; m_Cube.getDropObject = GetDropObject; m_Cube.canDrop = CanDrop; m_Cube.receiveDrop = ReceiveDrop; var dropZoneRenderer = m_DropZone.GetComponent <Renderer>(); dropZoneMaterial = MaterialUtils.GetMaterialClone(dropZoneRenderer); var color = dropZoneMaterial.color; m_DropZoneHighlightAlpha = color.a; color.a = 0; dropZoneMaterial.color = color; m_DropZone.dropHoverStarted += OnDropHoverStarted; m_DropZone.dropHoverEnded += OnDropHoverEnded; m_DropZone.canDrop = CanDrop; m_DropZone.receiveDrop = ReceiveDrop; m_DropZone.getDropObject = GetDropObject; } m_CubeTransform = m_Cube.transform; m_DropZoneTransform = m_DropZone.transform; m_Text.text = data.name; // HACK: We need to kick the canvasRenderer to update the mesh properly m_Text.gameObject.SetActive(false); m_Text.gameObject.SetActive(true); hovering = false; }
protected override void Setup() { base.Setup(); m_TextMaterial = Instantiate(m_TextMaterial); m_ExpandArrowMaterial = Instantiate(m_ExpandArrowMaterial); m_BottomDropZoneMaterial = MaterialUtils.GetMaterialClone(m_BottomDropZone.GetComponent <Renderer>()); m_BottomDropZoneStartHeight = m_BottomDropZone.transform.localScale.z; m_TopDropZoneMaterial = MaterialUtils.GetMaterialClone(m_TopDropZone.GetComponent <Renderer>()); var color = m_TopDropZoneMaterial.color; m_DropZoneAlpha = color.a; color.a = 0; m_TopDropZoneMaterial.color = color; m_BottomDropZoneMaterial.color = color; var dropZones = new[] { m_BottomDropZone, m_TopDropZone }; foreach (var dropZone in dropZones) { dropZone.canDrop = CanDrop; dropZone.receiveDrop = RecieveDrop; dropZone.dropHoverStarted += DropHoverStarted; dropZone.dropHoverEnded += DropHoverEnded; } m_BottomDropZone.gameObject.SetActive(false); // Don't block scroll interaction }
public override void Setup(FolderData listData) { base.Setup(listData); // First time setup if (m_CubeRenderer == null) { // Cube material might change for hover state, so we always instance it m_CubeRenderer = m_Cube.GetComponent <Renderer>(); m_NormalColor = m_CubeRenderer.sharedMaterial.color; MaterialUtils.GetMaterialClone(m_CubeRenderer); m_ExpandArrow.dragEnded += ToggleExpanded; m_Cube.dragStarted += SelectFolder; m_Cube.dragEnded += ToggleExpanded; m_Cube.hoverStarted += OnHoverStarted; m_Cube.hoverEnded += OnHoverEnded; } m_CubeTransform = m_Cube.transform; m_Text.text = listData.name; // HACK: We need to kick the canvasRenderer to update the mesh properly m_Text.gameObject.SetActive(false); m_Text.gameObject.SetActive(true); m_ExpandArrow.gameObject.SetActive(listData.children != null); m_Hovering = false; }
public override void Setup(FolderData listData, bool firstTime = true) { base.Setup(listData, firstTime); if (firstTime) { // Cube material might change for hover state, so we always instance it m_CubeRenderer = m_Cube.GetComponent <Renderer>(); m_NormalColor = m_CubeRenderer.sharedMaterial.color; MaterialUtils.GetMaterialClone(m_CubeRenderer); m_ExpandArrow.pointerUp += ToggleExpanded; m_Cube.pointerDown += SelectFolder; m_Cube.pointerUp += ToggleExpanded; m_Cube.hoverStarted += OnHoverStarted; m_Cube.hoverEnded += OnHoverEnded; } m_CubeTransform = m_Cube.transform; m_Text.text = listData.name; m_ExpandArrow.gameObject.SetActive(listData.children != null); m_Hovering = false; }
protected override void ShowHoverState(BaseHandle handle, bool hovering) { base.ShowHoverState(handle, hovering); if (handle is RadialHandle) { handle.GetComponent <MeshFilter>().sharedMesh = hovering ? m_FatRadialHandleMesh : m_RadialHandleMesh; } }
protected virtual void ShowHoverState(BaseHandle handle, bool hovering) { var type = handle.GetType(); float scaleBump; if (m_ScaleBumps.TryGetValue(type, out scaleBump)) { handle.transform.localScale = hovering ? handle.transform.localScale * scaleBump : handle.transform.localScale / scaleBump; } var handleRenderer = handle.GetComponent <Renderer>(); var material = handleRenderer.sharedMaterial; var color = material.color; color.a = hovering ? m_HandleHoverAlpha : m_HandleAlpha; material.color = color; }
public virtual void SetMaterials(Material rowMaterial, Material backingCubeMaterial, Material uiMaterial, Material uiMaskMaterial, Material textMaterial, Material noClipBackingCube, Material[] highlightMaterials, Material[] noClipHighlightMaterials) { m_NoClipBackingCube = noClipBackingCube; m_NoClipHighlightMaterials = noClipHighlightMaterials; m_Cube.GetComponent <Renderer>().sharedMaterial = rowMaterial; var cuboidLayouts = GetComponentsInChildren <CuboidLayout>(true); foreach (var cuboidLayout in cuboidLayouts) { cuboidLayout.SetMaterials(backingCubeMaterial, highlightMaterials); } var workspaceButtons = GetComponentsInChildren <WorkspaceButton>(true); foreach (var button in workspaceButtons) { button.buttonMeshRenderer.sharedMaterials = highlightMaterials; } var graphics = GetComponentsInChildren <Graphic>(true); foreach (var graphic in graphics) { graphic.material = uiMaterial; } // Texts need a specific shader var texts = GetComponentsInChildren <Text>(true); foreach (var text in texts) { text.material = textMaterial; } // Don't clip masks var masks = GetComponentsInChildren <Mask>(true); foreach (var mask in masks) { mask.graphic.material = uiMaskMaterial; } }
public override void Setup(FolderData listData) { base.Setup(listData); // First time setup if (m_CubeRenderer == null) { // Cube material might change, so we always instance it m_CubeRenderer = m_Cube.GetComponent <Renderer>(); m_NormalColor = m_CubeRenderer.sharedMaterial.color; U.Material.GetMaterialClone(m_CubeRenderer); m_ExpandArrow.dragEnded += ToggleExpanded; m_Cube.dragStarted += SelectFolder; m_Cube.hoverStarted += OnHoverStarted; m_Cube.hoverEnded += OnHoverEnded; } m_Text.text = listData.name; m_ExpandArrow.gameObject.SetActive(listData.children != null); m_Hovering = false; }
public override void Setup(HierarchyData data) { base.Setup(data); // First time setup if (cubeMaterial == null) { // Cube material might change for hover state, so we always instance it m_CubeRenderer = m_Cube.GetComponent <Renderer>(); cubeMaterial = MaterialUtils.GetMaterialClone(m_CubeRenderer); m_NormalColor = cubeMaterial.color; m_LockRenderer = m_Lock.GetComponent <Renderer>(); m_Lock.hoverStarted += (bh, ed) => { m_HoveringLock = true; }; m_Lock.hoverEnded += (bh, ed) => { m_HoveringLock = false; }; m_Lock.dragEnded += ToggleLock; m_ExpandArrowRenderer = m_ExpandArrow.GetComponent <Renderer>(); m_ExpandArrow.dragEnded += ToggleExpanded; m_Cube.dragStarted += OnDragStarted; m_Cube.dragging += OnDragging; m_Cube.dragEnded += OnDragEnded; m_Cube.hoverStarted += OnHoverStarted; m_Cube.hoverEnded += OnHoverEnded; m_Cube.click += OnClick; m_Cube.getDropObject = GetDropObject; m_Cube.canDrop = CanDrop; m_Cube.receiveDrop = ReceiveDrop; var dropZoneRenderer = m_DropZone.GetComponent <Renderer>(); dropZoneMaterial = MaterialUtils.GetMaterialClone(dropZoneRenderer); var color = dropZoneMaterial.color; m_DropZoneHighlightAlpha = color.a; color.a = 0; dropZoneMaterial.color = color; m_DropZone.dropHoverStarted += OnDropHoverStarted; m_DropZone.dropHoverEnded += OnDropHoverEnded; m_DropZone.canDrop = CanDrop; m_DropZone.receiveDrop = ReceiveDrop; m_DropZone.getDropObject = GetDropObject; m_NormalTextColor = m_Text.color; } m_CubeTransform = m_Cube.transform; m_DropZoneTransform = m_DropZone.transform; var name = data.name; if (data.gameObject == null) { m_SceneText.text = string.IsNullOrEmpty(name) ? "Untitled" : name; m_SceneIcon.gameObject.SetActive(true); m_SceneText.gameObject.SetActive(true); m_Text.gameObject.SetActive(false); } else { m_Text.text = name; m_SceneIcon.gameObject.SetActive(false); m_SceneText.gameObject.SetActive(false); m_Text.gameObject.SetActive(true); } hovering = false; }
public void SetMaterials(Material textMaterial, Material expandArrowMaterial) { m_Text.material = textMaterial; m_ExpandArrow.GetComponent <Renderer>().sharedMaterial = expandArrowMaterial; }
protected virtual void UpdateHandleTip(BaseHandle handle, HandleEventData eventData, bool active) { var rayOrigin = eventData.rayOrigin; HandleTip handleTip; Renderer handleTipRenderer; if (!m_HandleTips.TryGetValue(rayOrigin, out handleTip)) { handleTipRenderer = m_HandleTip; if (m_HandleTips.Count > 0) { handleTipRenderer = ObjectUtils.Instantiate(handleTipRenderer.gameObject, transform).GetComponent <Renderer>(); } handleTip = new HandleTip { renderer = handleTipRenderer }; m_HandleTips[rayOrigin] = handleTip; } else { handleTipRenderer = handleTip.renderer; } active = active && (handle is LinearHandle || handle is RadialHandle); var handleTipGameObject = handleTipRenderer.gameObject; var wasActive = handleTipGameObject.activeSelf; handleTipGameObject.SetActive(active); var handleTipTransform = handleTipRenderer.transform; if (active) // Reposition handle tip based on current raycast position when hovering or dragging { handleTipRenderer.sharedMaterial = handle.GetComponent <Renderer>().sharedMaterial; var handleTransform = handle.transform; var handleTipPosition = handleTipTransform.position; var distanceFromRayOrigin = Vector3.Distance(handleTipPosition, rayOrigin.position); var linearEventData = eventData as LinearHandle.LinearHandleEventData; var lerp = wasActive ? k_LazyFollow * Time.deltaTime : 1; if (linearEventData != null) { handleTipTransform.position = Vector3.Lerp(handleTipPosition, handleTransform.TransformPoint(new Vector3(0, 0, handleTransform.InverseTransformPoint(linearEventData.raycastHitWorldPosition).z)), lerp); var handleForward = handleTransform.forward; var delta = handleTipPosition - handleTip.lastPosition; if (delta.magnitude > k_MinHandleTipDirectionDelta * distanceFromRayOrigin) { handleTip.direction = Mathf.Sign(Vector3.Dot(delta, handleForward)); handleTip.lastPosition = handleTipPosition; } handleTipTransform.forward = handleForward * handleTip.direction; } var radialEventData = eventData as RadialHandle.RadialHandleEventData; if (radialEventData != null) { var positionOffset = handleTip.positionOffset; if (positionOffset.HasValue) { handleTipTransform.position = handleTransform.TransformPoint(positionOffset.Value); } else { var newLocalPos = handleTransform.InverseTransformPoint(radialEventData.raycastHitWorldPosition); newLocalPos.y = 0; handleTipTransform.position = Vector3.Lerp(handleTipPosition, handleTransform.TransformPoint(newLocalPos.normalized * 0.5f * handleTransform.localScale.x), lerp); } var forward = Vector3.Cross(handleTransform.up, (handleTipPosition - handleTransform.position).normalized); var delta = handleTipPosition - handleTip.lastPosition; if (delta.magnitude > k_MinHandleTipDirectionDelta * distanceFromRayOrigin) { handleTip.direction = Mathf.Sign(Vector3.Dot(delta, forward)); handleTip.lastPosition = handleTipPosition; } if (forward != Vector3.zero) { handleTipTransform.forward = forward * handleTip.direction; } } if (handle.hasDragSource && !handleTip.positionOffset.HasValue) { handleTip.positionOffset = handle.transform.InverseTransformPoint(handleTipTransform.position); } } else if (!handle.hasDragSource) { handleTip.positionOffset = null; } }