//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ public void UpdateViaManager() { HoverItemHighlightState highState = GetComponent <HoverItemHighlightState>(); HoverItemData itemData = GetComponent <HoverItem>().Data; IItemDataSelectable selData = (itemData as IItemDataSelectable); TryResetSelection(highState, selData); UpdateSelectionProgress(highState, selData); UpdateNearestCursor(highState); UpdateState(selData); }
/*--------------------------------------------------------------------------------------------*/ private HoverItemData TransferData(HoverItemData pDataToFill) { HoverItemData oldData = _Data; HoverItemData newData = pDataToFill; if (oldData == null) { return(newData); } newData.AutoId = oldData.AutoId; newData.IsAncestryEnabled = oldData.IsAncestryEnabled; newData.IsAncestryVisible = oldData.IsAncestryVisible; newData.Id = oldData.Id; newData.Label = oldData.Label; newData.IsEnabled = oldData.IsEnabled; newData.IsVisible = oldData.IsVisible; HoverItemDataSelectable oldSelData = (oldData as HoverItemDataSelectable); HoverItemDataSelectable newSelData = (newData as HoverItemDataSelectable); if (oldSelData == null || newSelData == null) { return(newData); } newSelData.OnSelectedEvent = oldSelData.OnSelectedEvent; newSelData.OnDeselectedEvent = oldSelData.OnDeselectedEvent; //newSelData.OnSelected += oldSelData.OnSelected; //newSelData.OnDeselected += oldSelData.OnDeselected; HoverItemDataSelectableBool oldSelBoolData = (oldData as HoverItemDataSelectableBool); HoverItemDataSelectableBool newSelBoolData = (newData as HoverItemDataSelectableBool); if (oldSelBoolData != null && newSelBoolData != null) { newSelBoolData.Value = oldSelBoolData.Value; newSelBoolData.OnValueChangedEvent = oldSelBoolData.OnValueChangedEvent; //newSelBoolData.OnValueChanged += oldSelBoolData.OnValueChanged; } HoverItemDataSelectableFloat oldSelFloatData = (oldData as HoverItemDataSelectableFloat); HoverItemDataSelectableFloat newSelFloatData = (newData as HoverItemDataSelectableFloat); if (oldSelFloatData != null && newSelFloatData != null) { newSelFloatData.Value = oldSelFloatData.Value; newSelFloatData.OnValueChangedEvent = oldSelFloatData.OnValueChangedEvent; //newSelFloatData.OnValueChanged += oldSelFloatData.OnValueChanged; } return(newData); }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ private void BuildDataIfNeeded() { if (_Data == null) { _Data = gameObject.GetComponent <HoverItemData>(); } if (_Data == null) { _Data = BuildData(_ItemType); } else if (FindDuplicateData()) { _Data = Instantiate(_Data); //handle duplication via Unity editor } }
/*--------------------------------------------------------------------------------------------*/ private void DestroyData(HoverItemData pData, HoverItemData pIgnoreNewData) { gameObject.GetComponents(vDataComponentBuffer); for (int i = 0; i < vDataComponentBuffer.Count; i++) { HoverItemData data = vDataComponentBuffer[i]; if (data == pIgnoreNewData) { continue; } if (data != pData) { Debug.LogWarning("Removed unexpected " + typeof(HoverItemData).Name + ": " + data, this); } DestroyImmediate(data, false); } }
/*--------------------------------------------------------------------------------------------*/ private void UpdateWithLatestItemTypeIfNeeded() { if (_ItemType == vPrevItemType) { return; } HoverItemData newData = BuildData(_ItemType); TransferData(newData); DestroyData(_Data, newData); _Data = newData; if (OnTypeChanged != null) { OnTypeChanged.Invoke(this); } vPrevItemType = _ItemType; }