void HandleMouseDown(object sender, MouseButtonEventArgs e) { _pad.Canvas.Focus(); var p = e.GetPosition(_pad.Canvas); p = PlacementHelper.RoundToGrid(p); var factory = _pad.ItemFactory; if (factory.SelectedForCreation != null && factory.SelectedForCreation.GetInterface( nameof(IBoundedSketchItemModel)) != null) { var cm = factory.CreateConnectableSketchItem(factory.SelectedForCreation, p, _pad); if (cm != null) { _pad.TakeSnapshot(); _pad.SketchItems.Add(cm); } //_pad.UpdateLayout(); e.Handled = true; } }
public static ConnectorDocking ComputeDocking(Rect r, double relativePosition, ref Point p) { if (p.Y == r.Top || p.Y == r.Bottom) { p.X = PlacementHelper.RoundToGrid(r.Left + relativePosition * r.Width); if (p.Y == r.Bottom) { return(ConnectorDocking.Bottom); } return(ConnectorDocking.Top); } if (p.X == r.Left || p.X == r.Right) { p.Y = PlacementHelper.RoundToGrid(r.Top + relativePosition * r.Height); if (p.X == r.Right) { return(ConnectorDocking.Right); } return(ConnectorDocking.Left); } throw new InvalidOperationException("point is not on the border of rectangle"); }
public static TransformData ConvertTransform(TransformData transformData, CustomSpawnedObjectData customData, float jumpSpeed, float secondEquivalentOfBeat, float3 lineOffset) { if (customData.NoteJumpSpeed == null) { transformData.Speed = jumpSpeed; } else { transformData.Speed = (float)customData.NoteJumpSpeed; } if (customData.Scale.w != 0) { transformData.Scale = new float4x4 { c0 = new float4(customData.Scale.x * lineOffset.x, 0, 0, 0), c1 = new float4(0, customData.Scale.y * lineOffset.y, 0, 0), c2 = new float4(0, 0, PlacementHelper.ConvertDurationToZScale(customData.Scale.z, jumpSpeed, secondEquivalentOfBeat), 0), c3 = new float4(0, 0, 0, 1) }; } if (customData.LocalRotation.w != 0) { transformData.LocalRotation = Quaternion.Euler(customData.LocalRotation.xyz); } if (customData.WorldRotation != 0) { transformData.WorldRotation = customData.WorldRotation; } if (customData.Position.w != 0) { transformData.Position = PlacementHelper.GetVanillaPosition(customData.Position.x, customData.Position.y, lineOffset); } return(transformData); }
public override void Run() { // Login VapiAuthHelper = new VapiAuthenticationHelper(); SessionStubConfiguration = VapiAuthHelper.LoginByUsernameAndPassword( Server, UserName, Password); // Get a placement spec VMTypes.PlacementSpec vmPlacementSpec = PlacementHelper.GetPlacementSpecForCluster( VapiAuthHelper.StubFactory, SessionStubConfiguration, DatacenterName, ClusterName, VmFolderName, DatastoreName); // Get a standard network backing string standardNetworkBacking = NetworkHelper.GetStandardNetworkBacking( VapiAuthHelper.StubFactory, SessionStubConfiguration, DatacenterName, StandardPortgroupName); // Create the vm CreateVm(vmPlacementSpec, standardNetworkBacking); }
public void beginPlacing(GameObject placePrefab_, string id_) { if (placing) { return; } placing = true; ready = false; // shift = (Input.GetKeyDown("shift")); GameState.getInstance().pathMan.recalculateNow = false; placeObject = Instantiate(placePrefab_) as GameObject; placeObject.networkView.enabled = false; placeObject.GetComponent <Tower>().enabled = false; placeObject.GetComponent <PathingObstacle>().enabled = false; GameState.getInstance().pathMan.recalculateNow = true; helper = placeObject.AddComponent <PlacementHelper>(); helper.man = this; helper.validMaterial = validMaterial; helper.invalidMaterial = invalidMaterial; placeObject.layer = 2; id = id_; }
Transform ComputeResizeTransformation(Point p) { p = PlacementHelper.RoundToGrid(p); var rect = _origialRect; var rot = _ui._model.Geometry.Transform as RotateTransform; var angle = 0.0; if (rot != null) { angle = rot.Angle; } switch (_direction) { case RelativePosition.N: { var delta = _start - p; //var len = delta.Length; //angle = Vector.AngleBetween(delta, _horizontalLine)-angle; //var deltaY = Math.Sin(angle) * len; var scaleY = (delta.Y + _origialRect.Height) / _origialRect.Height; //var scaleY = ( deltaY + _origialRect.Height) / _origialRect.Height; var sf = new ScaleTransform(1, scaleY); rect.Transform(sf.Value); var transY = _origialRect.Top - rect.Top - delta.Y; //var transY = _origialRect.Top - rect.Top - deltaY; var tg = new TransformGroup(); tg.Children.Add(sf); tg.Children.Add(new TranslateTransform(0, -delta.Y)); return(tg); } case RelativePosition.NE: { var delta = _start - p; var scaleY = (delta.Y + _origialRect.Height) / _origialRect.Height; var scaleX = (-delta.X + _origialRect.Width) / _origialRect.Width; var sf = new ScaleTransform(scaleX, scaleY); rect.Transform(sf.Value); var trans = _origialRect.TopLeft - rect.TopLeft; var tg = new TransformGroup(); tg.Children.Add(sf); tg.Children.Add(new TranslateTransform(0, -delta.Y)); return(tg); } case RelativePosition.E: { var delta = p - _start; var scaleX = (delta.X + _origialRect.Width) / _origialRect.Width; var sf = new ScaleTransform(scaleX, 1); //rect.Transform(sf.Value); //var trans = _origialRect.TopLeft - rect.TopLeft; var tg = new TransformGroup(); tg.Children.Add(sf); //tg.Children.Add(new TranslateTransform(trans.X, 0)); return(tg); } case RelativePosition.SE: { var delta = p - _start; var scaleY = (delta.Y + _origialRect.Height) / _origialRect.Height; var scaleX = (delta.X + _origialRect.Width) / _origialRect.Width; var sf = new ScaleTransform(scaleX, scaleY); //rect.Transform(sf.Value); //var trans = _origialRect.TopLeft - rect.TopLeft; var tg = new TransformGroup(); tg.Children.Add(sf); //tg.Children.Add(new TranslateTransform(trans.X, trans.Y)); return(tg); } case RelativePosition.S: { var delta = p - _start; var scaleY = (delta.Y + _origialRect.Height) / _origialRect.Height; var sf = new ScaleTransform(1, scaleY); //rect.Transform(sf.Value); //var trans = _origialRect.TopLeft - rect.TopLeft; var tg = new TransformGroup(); tg.Children.Add(sf); //tg.Children.Add(new TranslateTransform(0, trans.Y)); return(tg); } case RelativePosition.SW: { var delta = p - _start; var scaleY = (delta.Y + _origialRect.Height) / _origialRect.Height; var scaleX = (-delta.X + _origialRect.Width) / _origialRect.Width; var sf = new ScaleTransform(scaleX, scaleY); //rect.Transform(sf.Value); //var trans = _origialRect.TopLeft - rect.TopLeft; var tg = new TransformGroup(); tg.Children.Add(sf); tg.Children.Add(new TranslateTransform(delta.X, 0)); return(tg); } case RelativePosition.W: { var delta = p - _start; var scaleX = (-delta.X + _origialRect.Width) / _origialRect.Width; var sf = new ScaleTransform(scaleX, 1); //rect.Transform(sf.Value); //var trans = _origialRect.TopLeft - rect.TopLeft; var tg = new TransformGroup(); tg.Children.Add(sf); tg.Children.Add(new TranslateTransform(delta.X, 0)); return(tg); } case RelativePosition.NW: { var delta = p - _start; var scaleY = (-delta.Y + _origialRect.Height) / _origialRect.Height; var scaleX = (-delta.X + _origialRect.Width) / _origialRect.Width; var sf = new ScaleTransform(scaleX, scaleY); rect.Transform(sf.Value); //var trans = _origialRect.TopLeft - rect.TopLeft; var tg = new TransformGroup(); tg.Children.Add(sf); tg.Children.Add(new TranslateTransform(delta.X, delta.Y)); return(tg); } default: return(null); } //return null; }
protected override void OnLoad(System.EventArgs e) { base.OnLoad(e); Bounds = PlacementHelper.Arrange(Size, Owner.Bounds, ContentAlignment.MiddleCenter); }
void HandleMouseDown(object sender, MouseButtonEventArgs e) { e.Handled = true; Point moveDown = e.GetPosition(_pad.Canvas); var factory = _pad.ItemFactory; ISketchItemUI sketchItemUI = _pad.GetItemAtPoint(moveDown); if (sketchItemUI != null) { Point endPointHint = PlacementHelper.RoundToGrid(moveDown);// e.GetPosition(sketchItemUI.Shape); if (sketchItemUI.Model is ConnectableBase) { var to = sketchItemUI.Model as ConnectableBase; var connectorModel = factory.CreateConnector( factory.SelectedForCreation, _from, to, _selector.Start , endPointHint, _pad); _pad.SketchItems.Add(connectorModel); } _pad.EndEdit(); } else { _pad.Canvas.ContextMenu = new ContextMenu(); var selectedForCreation = factory.SelectedForCreation; var factoryList = factory.GetConnectableFactories( selectedForCreation ).OrderByDescending((x) => x.LastCalled); foreach (var fac in factoryList) { _pad.Canvas.ContextMenu.Items.Add(new MenuItem() { Icon = new BitmapImage { ImageBitmap = fac.Bitmap }, Header = new Label() { Content = fac.Name }, ToolTip = fac.ToolTip, Command = new DelegateCommand(() => { double dx = 0; double dy = 0; var angle = Vector.AngleBetween(new Vector(1, 0), new Vector(_selector.Start.X - moveDown.X, _selector.Start.Y - moveDown.Y)); if (angle < 0) { angle += 360.0; } var connectable = fac.CreateConnectableItem(moveDown, _pad); if (angle >= 0 && angle < 45) { dy = -GetDefaultHeight(connectable) / 2; dx = -GetDefaultWidth(connectable); } else if (angle >= 45 && angle < 135) { dx = -GetDefaultWidth(connectable) / 2; dy = -GetDefaultHeight(connectable); } else if (angle >= 135 && angle < 225) { dy = -GetDefaultHeight(connectable) / 2; } else { dx = -GetDefaultWidth(connectable) / 2; } connectable.Move(new TranslateTransform(dx, dy)); if (connectable != null) { _pad.SketchItems.Add(connectable); var connector = factory.CreateConnector( selectedForCreation, _from, connectable , _selector.Start , moveDown, _pad); _pad.SketchItems.Add(connector); _pad.EndEdit(); } }) } ); } _pad.Canvas.ContextMenu.IsOpen = true; } }
private void CreateStructureToPlace() { placementHelper = ItemSpawnManager.instance.CreateStructure(controllerReference.inventorySystem.selectedStructureData); placementHelper.PrepareForMovement(); Debug.Log("Creating a structure to palce"); }
void OnEnable() { placementHelper = (PlacementHelper)target; }
public void FixRoad() { foreach (var position in fixRoadCandidates) { List <Direction> neighbourDirections = PlacementHelper.FindNeighbour(position, roadDictionary.Keys); Quaternion rotation = Quaternion.identity; if (neighbourDirections.Count == 1) { Destroy(roadDictionary[position]); if (neighbourDirections.Contains(Direction.Down)) { rotation = Quaternion.Euler(0, 90, 0); } else if (neighbourDirections.Contains(Direction.Left)) { rotation = Quaternion.Euler(0, 180, 0); } else if (neighbourDirections.Contains(Direction.Up)) { rotation = Quaternion.Euler(0, -90, 0); } roadDictionary[position] = Instantiate(roadEnd, position, rotation, transform); } else if (neighbourDirections.Count == 2) { if ( neighbourDirections.Contains(Direction.Up) && neighbourDirections.Contains(Direction.Down) || neighbourDirections.Contains(Direction.Right) && neighbourDirections.Contains(Direction.Left) ) { continue; } Destroy(roadDictionary[position]); if (neighbourDirections.Contains(Direction.Up) && neighbourDirections.Contains(Direction.Right)) { rotation = Quaternion.Euler(0, 90, 0); } else if (neighbourDirections.Contains(Direction.Right) && neighbourDirections.Contains(Direction.Down)) { rotation = Quaternion.Euler(0, 180, 0); } else if (neighbourDirections.Contains(Direction.Down) && neighbourDirections.Contains(Direction.Left)) { rotation = Quaternion.Euler(0, -90, 0); } roadDictionary[position] = Instantiate(roadCorner, position, rotation, transform); } else if (neighbourDirections.Count == 3) { Destroy(roadDictionary[position]); if (neighbourDirections.Contains(Direction.Right) && neighbourDirections.Contains(Direction.Down) && neighbourDirections.Contains(Direction.Left) ) { rotation = Quaternion.Euler(0, 90, 0); } else if (neighbourDirections.Contains(Direction.Down) && neighbourDirections.Contains(Direction.Left) && neighbourDirections.Contains(Direction.Up)) { rotation = Quaternion.Euler(0, 180, 0); } else if (neighbourDirections.Contains(Direction.Left) && neighbourDirections.Contains(Direction.Up) && neighbourDirections.Contains(Direction.Right)) { rotation = Quaternion.Euler(0, -90, 0); } roadDictionary[position] = Instantiate(road3way, position, rotation, transform); } else { Destroy(roadDictionary[position]); roadDictionary[position] = Instantiate(road4way, position, rotation, transform); } } }