public override void OnValidatedEndDrag(PointerEventData eventData) { if (uvDragPlane != null && ModeManager.Instance.PrimaryMode == ModeManager.PrimaryModes.Textures && ModeManager.Instance.SecondaryMode == ModeManager.SecondaryModes.Editing) { uvDragPlane = null; if (SurfaceBatchingManager.BatchingEnabled) { SurfaceBatchingManager.Instance.MergeAllBatches(); } alignmentGroup.Clear(); } else { return; } InspectorPanel.Instance.RefreshAllInspectors(); }
public override void OnValidatedBeginDrag(PointerEventData eventData) { if (ModeManager.Instance.PrimaryMode == ModeManager.PrimaryModes.Textures && ModeManager.Instance.SecondaryMode == ModeManager.SecondaryModes.Editing) { Vector2 startingUVs; var destinationIsLayered = ParentSide.NativeObject.HasLayeredTransparentSide(LevelEntity_Level.Instance.Level); var destinationDataSource = DataSource; if (destinationIsLayered && (Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(KeyCode.RightAlt))) { destinationDataSource = LevelEntity_Side.DataSources.Transparent; startingUVs = new Vector2(ParentSide.NativeObject.Transparent.X, ParentSide.NativeObject.Transparent.Y); } else { switch (destinationDataSource) { case LevelEntity_Side.DataSources.Primary: startingUVs = new Vector2(ParentSide.NativeObject.Primary.X, ParentSide.NativeObject.Primary.Y); break; case LevelEntity_Side.DataSources.Secondary: startingUVs = new Vector2(ParentSide.NativeObject.Secondary.X, ParentSide.NativeObject.Secondary.Y); break; case LevelEntity_Side.DataSources.Transparent: startingUVs = new Vector2(ParentSide.NativeObject.Transparent.X, ParentSide.NativeObject.Transparent.Y); break; default: return; } } var startingPosition = eventData.pointerPressRaycast.worldPosition; var surfaceWorldNormal = eventData.pointerCurrentRaycast.worldNormal; var textureWorldUp = Vector3.up; uvDragPlane = new UVPlanarDrag(startingUVs, startingPosition, surfaceWorldNormal, textureWorldUp); if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl)) { alignmentGroup.Clear(); CollectSimilarContiguousAdjacentSurfaces(ParentSide, destinationDataSource); for (var i = 0; i < alignmentGroup.Count; i++) { CollectSimilarContiguousAdjacentSurfaces(alignmentGroup[i].DestinationSide, alignmentGroup[i].DestinationDataSource); } } } else { return; } InspectorPanel.Instance.RefreshAllInspectors(); }