private void OnDragDragging(PointerEventData data) { if (ThisEnteredDropItem == null) { FloatObjectInMainCamera(data); ParentItemSnap = null; } else { ItemSnap currentNearestItemSnap = NearestItemSnap(data); if (currentNearestItemSnap == null) { FloatObjectInMainCamera(data); ParentItemSnap = null; } else { if (ParentItemSnap != currentNearestItemSnap) { ParentItemSnap = currentNearestItemSnap; } Ray ray = ParentItemSnap.Snap(GetComponent <Item>(), data); SetTargetPositionRotation(ray.origin, ray.direction); } } }
private void OnPointerUpInstantiate(PointerEventData data) { #if LOG Debug.Log("OnPointerUpAttachedHighlighted " + this.name); #endif VisualizationUI plannerUI = FindObjectOfType <VisualizationUI>(); Item instantiatedItem = plannerUI.InstantiateSelectedItem(data); ItemDrag instantiatedItemDrag = instantiatedItem.GetComponent <ItemDrag>(); ItemDrop itemDrop = GetComponent <ItemDrop>(); if (itemDrop != null) { instantiatedItemDrag.ThisEnteredDropItem = itemDrop; instantiatedItemDrag.ParentItemDrop = itemDrop; ItemSnap itemSnap = instantiatedItemDrag.NearestItemSnap(data); instantiatedItemDrag.ParentItemSnap = itemSnap; Ray ray = itemSnap.Snap(instantiatedItem, data); instantiatedItemDrag.SetTargetPositionRotation(ray.origin, ray.direction); //set to outline and normal to get rid of quirk where instantied shader isn't immediately properly lit instantiatedItem.SetShaderOutline(_itemSettings.InstantiateOutlineColor); instantiatedItem.SetShaderNormal(); instantiatedItem.State = ItemState.NoInstantiate; //TODO this should always be able to attach, why are we checking? if (itemDrop.CanAttach(instantiatedItem.TagArray)) { SetShaderOutline(_itemSettings.InstantiateOutlineColor); } else { SetShaderNormal(); State = ItemState.NoInstantiate; } } ItemColor itemColor = GetComponent <ItemColor>(); if (itemColor != null) { Item item = GetComponent <Item>(); item.SetBlendMaterial(instantiatedItem.MaterialArray[0].mainTexture); SetShaderNormal(); State = ItemState.NoInstantiate; StartCoroutine(instantiatedItem.DestroyItemCoroutine()); } }