Example #1
0
        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;
            }
        }
Example #2
0
        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);
 }
Example #8
0
        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;
            }
        }
Example #9
0
 private void CreateStructureToPlace()
 {
     placementHelper = ItemSpawnManager.instance.CreateStructure(controllerReference.inventorySystem.selectedStructureData);
     placementHelper.PrepareForMovement();
     Debug.Log("Creating a structure to palce");
 }
Example #10
0
 void OnEnable()
 {
     placementHelper = (PlacementHelper)target;
 }
Example #11
0
    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);
            }
        }
    }