Example #1
0
		public PathData GetPath(ContentItem item, string remainingUrl)
		{
			int slashIndex = remainingUrl.IndexOf('/');
			
			string action = remainingUrl;
			string arguments = null;
			if(slashIndex > 0)
			{
				action = remainingUrl.Substring(0, slashIndex);
				arguments = remainingUrl.Substring(slashIndex + 1);
			}

			var controllerName = this.controllerName ?? controllerMapper.GetControllerName(item.GetContentType());
			if (string.IsNullOrEmpty(action) || string.Equals(action, "Default.aspx", StringComparison.InvariantCultureIgnoreCase))
				action = "Index";

			foreach (string method in methods)
			{
				if (string.Equals(method, action, StringComparison.InvariantCultureIgnoreCase))
				{
					var pd = new PathData(item) 
					{ 
						IsRewritable = false, 
						Controller = controllerName,
						Action = action,
						Argument = arguments,
						TemplateUrl = string.Format("~/{0}/{1}", controllerName, method, item.ID) // workaround for start pages
					};
					return pd;
				}
			}

			return null;
		}
Example #2
0
    public static PathData FindPath(PathFinderPoint start, PathFinderPoint end)
    {
        var path = pathfinder.FindPath(start, end);
        var pathData = new PathData(path);

        return pathData;
    }
Example #3
0
        public void Page_With_Default_Action(string virtualUrl) {

            // Arrange
            var pathData = new PathData();
            var mapper = new Mock<IControllerMapper>();
            var container = new Mock<IContainer>();

            mapper.Setup(x => x.GetControllerName(typeof(DummyController))).Returns("Dummy");
            container.Setup(x => x.GetInstance<IDocumentSession>()).Returns(_store.OpenSession());
            mapper.Setup(x => x.ControllerHasAction("Dummy", "index")).Returns(true);

            // Act
            IPathData data;
            using (var session = _store.OpenSession()) {

                // create and store a new page
                var pageModel = new StandardPage { Metadata = { Url = "page" } };
                session.Store(pageModel);
                session.SaveChanges();

                var resolver = new PathResolver(session, pathData, mapper.Object, container.Object);
                data = resolver.ResolvePath(new RouteData(), virtualUrl);
            }

            // Assert
            Assert.NotNull(data);
            Assert.AreEqual("index", data.Action);
            Assert.AreEqual("Dummy", data.Controller);
        }
Example #4
0
 public ToolPath CreateToolPath(PathData pd, double inc)
 {
     ToolPath tp;
     Barrel b = pd as Barrel;
     tp = new ToolPath(b.BarrelOutline((int)(1/inc)));
     return tp;
 }
Example #5
0
    public static PathData FindPath(PathFinderPoint start, PathFinderPoint end, Vector2 offset)
    {
        var path = pathfinder.FindPath(start, end);
        var pathData = new PathData(path, offset);

        return pathData;
    }
Example #6
0
 public ToolPath CreateToolPath(PathData pd, double inc)
 {
     ToolPath tp;
     WheelsData rd = (WheelsData)pd;
     tp = new ToolPath(CalculateWheels(rd, inc));
     return tp;
 }
Example #7
0
 public ShapeCollection CreatePaths(PathData pathdata, double inc)
 {
     ShapeCollection pc = new ShapeCollection();
     pc.PatternName = pathdata.Name;
     pc.AddShape(Path(pathdata, inc));
     return pc;
 }
Example #8
0
 public ToolPath CreateToolPath(PathData pd, double inc)
 {
     ToolPath tp;
     BraidData b = pd as BraidData;
     tp = new ToolPath(); //.BarrelOutline((int)(1 / inc)));
     return tp;
 }
Example #9
0
        private string CreateItem(TemplateDefinition template, NameValueCollection request)
        {
            var path = new PathData(navigator.Navigate(request["below"]));
            if (!versionRepository.TryParseVersion(request[PathData.VersionIndexQueryKey], request[PathData.VersionKeyQueryKey], path))
                path.CurrentItem = versions.AddVersion(path.CurrentItem, asPreviousVersion: false);
            var parent = path.CurrentItem;

            ContentItem item = activator.CreateInstance(template.Definition.ItemType, parent);
            item.ZoneName = request["zone"];
            item.TemplateKey = template.Name;

            string beforeVersionKey = request["beforeVersionKey"];
            string beforeSortOrder = request["beforeSortOrder"];
            string before = request["before"];
            if (string.IsNullOrEmpty(beforeSortOrder))
            {
                item.AddTo(parent);
            }
            else
            {
                int index = int.Parse(beforeSortOrder);
                parent.InsertChildBefore(item, index);
            }

            versionRepository.Save(parent);
            return request["returnUrl"].ToUrl().SetQueryParameter(PathData.VersionIndexQueryKey, parent.VersionIndex);
        }
Example #10
0
        public SplineData(EditorItemSelection selectionManager)
            : base(selectionManager)
        {
            splineData = new PathData();

            selectionManager.SelectionChanged += selectionManager_SelectionChanged;
            vertexHelper.PointChanged += vertexHelper_PointChanged;
        }
Example #11
0
        public SplineData(PathData splineData, EditorItemSelection selectionManager)
            : base(selectionManager)
        {
            this.splineData = splineData;

            selectionManager.SelectionChanged += selectionManager_SelectionChanged;
            vertexHelper.PointChanged += vertexHelper_PointChanged;
        }
Example #12
0
 public ToolPath CreateToolPath(PathData pd, double inc)
 {
     BazelyChuck chuck = (pd as BazelyChuck);
     if (chuck.Stages.Count == 1)
         return  new ToolPath(OneStagePath(chuck, inc));
     else
         return new ToolPath(TwoStagePath(chuck, inc));
 }
Example #13
0
        public ToolPath CreateToolPath(PathData pd, double inc)
        {
            ToolPath tp;
            RossData rd = (RossData)pd;
            if (rd.Ex2 == 0)
                tp = new ToolPath(RossCalculate1(rd, inc));
            else
                tp = new ToolPath(RossCalculate2(rd, inc));

            tp.Translate(tp.Extent.Centre);
            return tp;
        }
Example #14
0
 /// <summary>
 /// In this class the second parameter is the number of paths
 /// </summary>
 /// <param name="pathdata"></param>
 /// <param name="increment"></param>
 /// <returns></returns>
 public ShapeCollection CreatePaths(PathData pathdata, double increment)
 {
     ShapeCollection pc = new ShapeCollection();
     pc.PatternName = pathdata.Name;
     if (pathdata.PathType == PatternType.barrel)
     {
         Barrel b = pathdata as Barrel;
         RadialOffsetPath path = b.OutlineAsOffsets((int)(1/increment));
         Polygon poly = CreatePolygonFrom(path, b.ToolPosition);
         (poly.RenderTransform as CompositeTransform).Rotation = b.Phase;
         pc.AddShape(poly);
     }
     return pc;
 }
Example #15
0
        public ShapeCollection CreatePaths(PathData p, double increment)
        {
           
            ShapeCollection pc = new ShapeCollection();
            if (p == null || !(p is LatticeData)) return pc;
            ld = p as LatticeData;
            
            rowHeight = ld.Layout.Height / (ld.Rows - 1);
            colWidth = ld.Layout.Width / (ld.Columns - 1);
            //Shape s = MkPath(0, 0, increment);
            //if (s != null)
            //    pc.AddShape(s);
            if ((ld.Layout.RepeatX == 0) && (ld.Layout.RepeatY == 0))
            {
                pc.AddShape(MkPath(0, 0, increment));
            }
            else if ((ld.Layout.RepeatX == 0) && (ld.Layout.RepeatY > 0))
            {
                for (int indy = -ld.Layout.RepeatY; indy < ld.Layout.RepeatY; indy++)
                {
                    Shape s = MkPath(0, indy, increment);
                    if (s != null)
                        pc.AddShape(s);
                }
            }
            else if ((ld.Layout.RepeatX > 0) && (ld.Layout.RepeatY == 0))
            {
                for (int indx = -ld.Layout.RepeatX; indx < ld.Layout.RepeatX; indx++)
                {
                    Shape s = MkPath(indx, 0, increment);
                    if (s != null)
                        pc.AddShape(s);
                }
            }
            else
            {
                for (int indy = -ld.Layout.RepeatY; indy < ld.Layout.RepeatY; indy++)
                {
                    for (int indx = -ld.Layout.RepeatX; indx < ld.Layout.RepeatX; indx++)
                    {
                        Shape s = MkPath(indx, indy, increment);
                        if (s != null)
                            pc.AddShape(s);
                    }
                }

            }
            return pc;
        }
Example #16
0
        public ShapeCollection CreatePaths(PathData p, double increment)
        {
           
            ShapeCollection pc = new ShapeCollection();
            if (p == null || !(p is LatticeData)) return pc;
            ld = p as LatticeData;
            repeatAngle = 360.0 / ld.Layout.RepeatX;
            colAngle = (repeatAngle - ld.Layout.Margin) / (ld.Columns - 1);

            rowHeight = ld.Layout.Height / (ld.Rows - 1);
            colWidth = ld.Layout.Width / (ld.Columns - 1);
            origin = new Point(ld.Layout.ToolPosition, 0);

            if ((ld.Layout.RepeatX == 0) && (ld.Layout.RepeatY == 0))
            {
                pc.AddShape(MkPath(0, 0, increment));
            }
            else if ((ld.Layout.RepeatX == 0) && (ld.Layout.RepeatY > 0))
            {
                for (int indy = -ld.Layout.RepeatY; indy < ld.Layout.RepeatY; indy++)
                {
                    pc.AddShape(MkPath(0, indy, increment));
                }
            }
            else if ((ld.Layout.RepeatX > 0) && (ld.Layout.RepeatY == 0))
            {
                for (int indx = -ld.Layout.RepeatX; indx < ld.Layout.RepeatX; indx++)
                {
                    pc.AddShape(MkPath(indx, 0, increment));
                }
            }
            else
            {
                for (int indy = -ld.Layout.RepeatY; indy < ld.Layout.RepeatY; indy++)
                {
                    for (int indx = -ld.Layout.RepeatX; indx < ld.Layout.RepeatX; indx++)
                    {
                        pc.AddShape(MkPath(indx, indy, increment));
                    }
                }
            }

            //for (int indx = 0; indx < ld.Layout.RepeatX; indx++)
            //{
            //    pc.AddShape(MkPath(indx,increment));
            //}
            return pc;
        }
Example #17
0
 Windows.UI.Xaml.Shapes.Polygon Path(PathData pd, 
                                     double inc)
 {
     CompositeTransform ct = new CompositeTransform();
     ct.ScaleX = ct.ScaleY = 1;
     Windows.UI.Xaml.Shapes.Polygon p = new Windows.UI.Xaml.Shapes.Polygon();
     p.Stroke = new SolidColorBrush(Color.FromArgb(255, 255, 0, 0));
     p.RenderTransform = ct;
     if (!(pd is WheelsData))
         return p;
     WheelsData rd = (WheelsData)pd;
     p.Points = CalculateWheels(rd, inc);
     // now centre polygon 
     //CentrePolygon(ref p);
     return p;
 }
Example #18
0
 public ShapeCollection CreatePaths (PathData pathdata, double inc)
 {
     //Debug.WriteLine("BazelyEngine CreatePaths");
     ShapeCollection pc = new ShapeCollection();
     pc.PatternName = pathdata.Name;
     Polygon poly = Path(pathdata, inc);
     try
     {
         pc.AddShape(poly);
     }
     catch (Exception e)
     {
         Debug.WriteLine(e.Message);
     }
     //Debug.WriteLine("End BazelyEngine CreatePaths");
     return pc;
 }
Example #19
0
        public ShapeCollection CreatePaths(PathData pd, double increment)
        {
            bd = pd as BraidData;
            ShapeCollection pc = new ShapeCollection();
            pc.PatternName = pd.Name;
            repeatAngle = 2 * Math.PI / bd.Repeats;
            colAngle = (repeatAngle - rad * bd.Margin) / bd.Perms.Count ;

            rowHeight = bd.Width / (bd.NumStrands - 1);
            colWidth = bd.Length / bd.Perms.Count;
            origin = new Point(bd.ToolPosition, 0);

            for (int indx = 0; indx < bd.Repeats; indx++)
            {
                pc.AddShape(MkPath(indx, increment));
            }
            return pc;
           
        }
Example #20
0
 Windows.UI.Xaml.Shapes.Polygon Path(PathData pd, double inc)
 {
     Windows.UI.Xaml.Shapes.Polygon p = new Windows.UI.Xaml.Shapes.Polygon();
     p.Tag = "Bazley";
     //Debug.WriteLine("BazelyEngine Polygon Created");
     p.Stroke = new SolidColorBrush(Color.FromArgb(255, 255, 0, 0));
     p.RenderTransform = new CompositeTransform();
     if (!(pd is BazelyChuck))
         return p;
     BazelyChuck chuck = (pd as BazelyChuck);
     //Debug.WriteLine("BazelyEngine Calc Points");
     if (chuck.Stages.Count == 1)
         p.Points = OneStagePath(chuck, inc);
     else
         p.Points = TwoStagePath(chuck, inc);
     //Debug.WriteLine("BazelyEngine Points created");
     CentrePolygon(ref p);
     return p;
 }
 /*
  * Initializes a new PathData object as the starting point to fill with PathData information
  */
 public void GenerateNewPathData()
 {
     currentPath = new PathData();
     Debug.Log("Path created in recorder.");
 }
Example #22
0
 void DumpPathData(PathData pathData)
 {
   int count = pathData.Points.Length;
   for (int idx = 0; idx < count; idx++)
   {
     string info = PdfEncoders.Format("{0:X}   {1:####0.000} {2:####0.000}", pathData.Types[idx], pathData.Points[idx].X, pathData.Points[idx].Y);
     Debug.WriteLine(info, "PathData");
   }
 }
 /// <summary>
 /// Public constructor which constructs the GraphicShape using the information
 /// provided with PathData parameter.
 /// </summary>
 /// <param name="pathData">
 /// Contains data about shape body.
 /// </param>
 public GraphicShape(PathData pathData)
 {
     Initialize();
     m_Path   = new GraphicsPath(pathData.Points, pathData.Types);
     m_Bounds = m_Path.GetBounds();
 }
Example #24
0
 /// <summary>
 /// Converts distance on source from absolute to relative position, respecting Clamping
 /// </summary>
 /// <param name="worldUnitDistance">distance in world units from the source start</param>
 /// <returns>
 /// relative distance (TF) in the range 0..1
 /// </returns>
 protected override float AbsoluteToRelative(float worldUnitDistance)
 {
     return(PathData.DistanceToF(worldUnitDistance));
 }
Example #25
0
 public ToolPath CreateToolPath(PathData pd, double inc)
 {
     ToolPath tp;
     LatticeData l = pd as LatticeData;
     tp = new ToolPath(); //.BarrelOutline((int)(1 / inc)));
     return tp;
 }
Example #26
0
 /// <summary>
 /// Converts distance on source from relative to absolute position, respecting Clamping
 /// </summary>
 /// <param name="relativeDistance">relative distance (TF) from the source start</param>
 /// <returns>
 /// distance in world units from the source start
 /// </returns>
 protected override float RelativeToAbsolute(float relativeDistance)
 {
     return(PathData.FToDistance(relativeDistance));
 }
Example #27
0
 /// <summary>
 /// Retrieve the source Orientation/Up-Vector for a given relative position
 /// </summary>
 /// <param name="tf">relative position</param>
 /// <returns>
 /// the Up-Vector
 /// </returns>
 protected override Vector3 GetOrientation(float tf)
 {
     return((Space == Space.World) ? Path.Module.Generator.transform.TransformDirection(PathData.InterpolateUp(tf)) : PathData.InterpolateUp(tf));
 }
		private void InitializePath(MyEnvironmentalParticle particle)
		{
			var pathData = new PathData();
			if(pathData.PathPoints == null)
				pathData.PathPoints = new Vector3D[PathData.PathPointCount+2];

			var gravityDirection = Vector3D.Normalize(MyGravityProviderSystem.CalculateNaturalGravityInPoint(particle.Position));
			pathData.PathPoints[1] = particle.Position - Vector3D.Normalize(MyGravityProviderSystem.CalculateNaturalGravityInPoint(particle.Position)) * MyRandom.Instance.NextFloat()*2.5f;

			for (int index = 2; index < PathData.PathPointCount+1; ++index )
			{
				var pathLength = 5.0f;
				Vector3D randomNormal = Vector3D.Normalize(new Vector3D(MyRandom.Instance.NextFloat(), MyRandom.Instance.NextFloat(), MyRandom.Instance.NextFloat()) * 2.0f - Vector3D.One);
				pathData.PathPoints[index] = pathData.PathPoints[index-1] + randomNormal * (MyRandom.Instance.NextFloat() + 1.0f) * pathLength - gravityDirection / (float)index * pathLength;
			}

			pathData.PathPoints[0] = pathData.PathPoints[1] - gravityDirection;
			pathData.PathPoints[PathData.PathPointCount + 1] = pathData.PathPoints[PathData.PathPointCount] + Vector3D.Normalize(pathData.PathPoints[PathData.PathPointCount] - pathData.PathPoints[PathData.PathPointCount - 1]);

			particle.UserData = pathData;   // TODO: Boxing
		}
Example #29
0
    public bool FindPath(int startX, int startY, int targetX, int targetY, out PathData path)
    {
        //float startTime = Time.realtimeSinceStartup;

        int onOpenList = 0,
            parentXval = 0,
            parentYval = 0,
            a = 0, b = 0, m = 0, u = 0, v = 0,
            temp = 0, numberOfOpenListItems = 0,
            addedGCost = 0, tempGcost = 0,
            tempx, pathX, pathY,
            newOpenListItemID = 0,
            mapWidth = settings.xCount,
            mapHeight = settings.yCount;
        bool corner = false;
        bool found = false;
        int[] openList = new int[settings.xCount * settings.yCount + 2];
        int[,] whichList = new int[settings.xCount + 1, settings.yCount + 1];
        int[] openX = new int[settings.xCount * settings.yCount + 2];
        int[] openY = new int[settings.xCount * settings.yCount + 2];
        int[,] parentX = new int[settings.xCount + 1, settings.yCount + 1];
        int[,] parentY = new int[settings.xCount + 1, settings.yCount + 1];
        int[] Fcost = new int[settings.xCount * settings.yCount + 2];
        int[,] Gcost = new int[settings.xCount + 1, settings.yCount + 1];
        int[] Hcost = new int[settings.xCount * settings.yCount + 2];
        int pathLength = 0;
        int pathLocation = 0;
        int onClosedList = 10;

        path = new PathData();
        path.data = null;
        path.length = 0;
        path.found = false;

        if (startX >= mapWidth || startX < 0) return false;
        else if (startY >= mapHeight || startY < 0) return false;
        else if (targetX >= mapWidth || targetX < 0) return false;
        else if (targetY >= mapHeight || targetY < 0) return false;

        if (startX == targetX && startY == targetY && pathLocation > 0) return false;
        if (startX == targetX && startY == targetY && pathLocation == 0) return false;

        if (!GetWalkability(targetX, targetY)) return false;

        if (onClosedList > 1000000)
        {
            for (int x = 0; x < mapWidth; x++)
                for (int y = 0; y < mapHeight; y++)	whichList[x, y] = 0;
            onClosedList = 10;
        }
        onClosedList = onClosedList + 2;
        onOpenList = onClosedList - 1;
        pathLength = 0;
        pathLocation = 0;
        Gcost[startX, startY] = 0;

        numberOfOpenListItems = 1;
        openList[1] = 1;
        openX[1] = startX ; openY[1] = startY;

        do
        {
            if (numberOfOpenListItems != 0)
            {
                parentXval = openX[openList[1]];
                parentYval = openY[openList[1]];
                whichList[parentXval, parentYval] = onClosedList;

                numberOfOpenListItems = numberOfOpenListItems - 1;

                openList[1] = openList[numberOfOpenListItems + 1];
                v = 1;

                do
                {
                    u = v;
                    if (2 * u + 1 <= numberOfOpenListItems)
                    {
                        if (Fcost[openList[u]] >= Fcost[openList[2 * u]]) v = 2 * u;
                        if (Fcost[openList[v]] >= Fcost[openList[2 * u + 1]]) v = 2 * u + 1;
                    }
                    else
                    {
                        if (2 * u <= numberOfOpenListItems)
                            if (Fcost[openList[u]] >= Fcost[openList[2 * u]]) v = 2 * u;
                    }

                    if (u != v)
                    {
                        temp = openList[u];
                        openList[u] = openList[v];
                        openList[v] = temp;
                    }
                    else break;

                } while (true);

                for (b = parentYval - 1; b <= parentYval + 1; b++)
                {
                    for (a = parentXval - 1; a <= parentXval + 1; a++)
                    {

                        if (a != -1 && b != -1 && a != mapWidth && b != mapHeight)
                        {

                            if (whichList[a, b] != onClosedList)
                            {

                                if (GetWalkability(a, b))
                                {

                                    corner = true;
                                    if (a == parentXval - 1)
                                    {
                                        if (b == parentYval - 1)
                                        {
                                            if (!GetWalkability(parentXval - 1, parentYval) ||
                                                !GetWalkability(parentXval, parentYval - 1))
                                                corner = false;
                                        }
                                        else if (b == parentYval + 1)
                                        {
                                            if (!GetWalkability(parentXval, parentYval + 1) ||
                                                !GetWalkability(parentXval - 1, parentYval))
                                                corner = false;
                                        }
                                    }
                                    else if (a == parentXval + 1)
                                    {
                                        if (b == parentYval - 1)
                                        {
                                            if (!GetWalkability(parentXval, parentYval - 1) ||
                                                !GetWalkability(parentXval + 1, parentYval))
                                                corner = false;
                                        }
                                        else if (b == parentYval + 1)
                                        {
                                            if (!GetWalkability(parentXval + 1, parentYval) ||
                                                !GetWalkability(parentXval, parentYval + 1))
                                                corner = false;
                                        }
                                    }

                                    if (corner == true)
                                    {

                                        if (whichList[a,b] != onOpenList)
                                        {

                                            newOpenListItemID = newOpenListItemID + 1;
                                            m = numberOfOpenListItems + 1;
                                            openList[m] = newOpenListItemID;
                                            openX[newOpenListItemID] = a;
                                            openY[newOpenListItemID] = b;

                                            if (Mathf.Abs(a - parentXval) == 1 && Mathf.Abs(b - parentYval) == 1) addedGCost = 14;
                                            else addedGCost = 10;
                                            Gcost[a, b] = Gcost[parentXval, parentYval] + addedGCost;

                                            Hcost[openList[m]] = 10 * (Mathf.Abs(a - targetX) + Mathf.Abs(b - targetY));
                                            Fcost[openList[m]] = Gcost[a, b] + Hcost[openList[m]];
                                            parentX[a, b] = parentXval;
                                            parentY[a, b] = parentYval;

                                            while (m != 1)
                                            {
                                                if (Fcost[openList[m]] <= Fcost[openList[m / 2]])
                                                {
                                                    temp = openList[m / 2];
                                                    openList[m / 2] = openList[m];
                                                    openList[m] = temp;
                                                    m = m / 2;
                                                }	else break;
                                            }
                                            numberOfOpenListItems = numberOfOpenListItems + 1;

                                            whichList[a, b] = onOpenList;
                                        } else
                                        {

                                            if (Mathf.Abs(a-parentXval) == 1 && Mathf.Abs(b - parentYval) == 1) addedGCost = 14;
                                            else addedGCost = 10;
                                            tempGcost = Gcost[parentXval, parentYval] + addedGCost;

                                            if (tempGcost < Gcost[a, b])
                                            {
                                                parentX[a, b] = parentXval;
                                                parentY[a, b] = parentYval;
                                                Gcost[a, b] = tempGcost;

                                                for (int x = 1; x <= numberOfOpenListItems; x++)
                                                {
                                                    if (openX[openList[x]] == a && openY[openList[x]] == b) //item found
                                                    {
                                                        Fcost[openList[x]] = Gcost[a, b] + Hcost[openList[x]];
                                                        m = x;
                                                        while (m != 1)
                                                        {
                                                            if (Fcost[openList[m]] < Fcost[openList[m / 2]])
                                                            {
                                                                temp = openList[m / 2];
                                                                openList[m / 2] = openList[m];
                                                                openList[m] = temp;
                                                                m = m / 2;
                                                            }
                                                            else
                                                                break;
                                                        }
                                                        break;
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

            } else { found = false; break; }

            if (whichList[targetX, targetY] == onOpenList) { found = true; break; }

            }
            while (true);

            if (found)
            {
                path.found = true;
                pathX = targetX; pathY = targetY;
                do
                {
                    tempx = parentX[pathX, pathY];
                    pathY = parentY[pathX, pathY];
                    pathX = tempx;
                    pathLength = pathLength + 1;
                }
                while (pathX != startX || pathY != startY);

                path.length = pathLength + 1;
                path.data = new PATile[pathLength + 1];
                path.data[0] = GetTile(startX, startY);
                pathX = targetX ; pathY = targetY;
                int ind = pathLength;

                do
                {
                    path.data[ind] = GetTile(pathX, pathY);
                    ind--;

                    tempx = parentX[pathX,pathY];
                    pathY = parentY[pathX,pathY];
                    pathX = tempx;
                }
                while (pathX != startX || pathY != startY);
            }
            return found;
    }
Example #30
0
 public void UpdateData(PathData path)
 {
     ShapeLayer.UpdateShape(path.Data);
     ShapeLayer.UpdateFillMode(path == null ? false : path.IsNonzeroFillRule);
 }
 /*
  * Add a pathData element to the records
  */
 public void AddPathRecord(PathData pathData)
 {
     pathRecords.Add(pathData);
 }
Example #32
0
        private async Task DeleteAsync(MusicDb db, PathData pd)
        {
            db.ChangeTracker.AutoDetectChangesEnabled = false;
            taskItem = await db.TaskItems.FindAsync(taskId);

            IEnumerable <MusicFile> musicFileList = null;
            string path = "";

            if (pd.GetFullOpusPath() != null)
            {
                path          = pd.IsCollections ? pd.OpusPath : $"{pd.ArtistPath}\\{pd.OpusPath}";
                musicFileList = db.MusicFiles
                                .Where(f => (f.DiskRoot.ToLower() == pd.DiskRoot.ToLower()) &&
                                       (f.StylePath.ToLower() == pd.StylePath.ToLower()) &&
                                       (f.OpusPath.ToLower() == path.ToLower()))
                                .OrderBy(f => f.File)
                ;
            }
            else
            {
                if (pd.IsCollections)
                {
                    musicFileList = db.MusicFiles
                                    .Where(f => (f.DiskRoot.ToLower() == pd.DiskRoot.ToLower()) &&
                                           (f.StylePath.ToLower() == pd.StylePath.ToLower()) &&
                                           f.Musician.ToLower() == "collections")
                                    .OrderBy(f => f.File)
                    ;
                }
                else
                {
                    musicFileList = db.MusicFiles
                                    .Where(f => (f.DiskRoot.ToLower() == pd.DiskRoot.ToLower()) &&
                                           (f.StylePath.ToLower() == pd.StylePath.ToLower()) &&
                                           f.OpusPath.StartsWith(pd.ArtistPath))
                                    .OrderBy(f => f.File)
                    ;
                }
            }

            log.Information($"Deleting {musicFileList.Count()} music files");
            var dc = new DeleteContext(taskItem);

            foreach (var mf in musicFileList)
            {
                db.Delete(mf, dc);
            }
            taskItem.Status     = Music.Core.TaskStatus.Finished;
            taskItem.FinishedAt = DateTimeOffset.Now;
            await db.SaveChangesAsync();

            if (dc.DeletedArtistId.HasValue)
            {
                await this.playManager.SendArtistDeleted(dc.DeletedArtistId.Value);
            }
            else if (dc.ModifiedArtistId.HasValue)
            {
                var shouldSend = true;
                var artist     = await db.Artists.FindAsync(dc.ModifiedArtistId.Value);

                if (artist != null)
                {
                    shouldSend = artist.Type != ArtistType.Various;
                }
                if (shouldSend)
                {
                    await this.playManager.SendArtistNewOrModified(dc.ModifiedArtistId.Value);
                }
            }
            //if (dc.DeletedArtistId.HasValue || dc.ModifiedArtistId.HasValue)
            //{
            //    var shouldSend = true;
            //    var id = dc.ModifiedArtistId ?? 0;
            //    if (id > 0)
            //    {
            //        var artist = await db.Artists.FindAsync(id);
            //        shouldSend = artist.Type != ArtistType.Various;
            //    }
            //    if (shouldSend)
            //    {
            //        if (dc.DeletedArtistId.HasValue)
            //        {
            //            await this.playManager.SendArtistDeleted(dc.DeletedArtistId.Value);
            //        }
            //        else if (dc.ModifiedArtistId.HasValue)
            //        {
            //            await this.playManager.SendArtistNewOrModified(dc.ModifiedArtistId.Value);
            //        }
            //    }
            //}
            // send artist modified/deleted - info is in dc
        }
 /*
  * Sets the current path to determine which PathData to currently be adding data to
  */
 public void SetCurrentPath(PathData path)
 {
     currentPath = path;
 }
        private static void Reroute(Route r, AncientPortal closest, AncientPortal destination)
        {
            Sim target = r.Follower.Target as Sim;
            Vector3 currentStartPoint = r.GetCurrentStartPoint();
            float distanceRemaining = r.GetDistanceRemaining();

            Common.StringBuilder msg = new Common.StringBuilder();

            msg.Append("AncientPortal Reroute: " + target.FullName);

            Route routeToPortal = target.CreateRoute();
            routeToPortal.SetOption(Route.RouteOption.EnableSubwayPlanning, false);
            routeToPortal.SetOption2(Route.RouteOption2.EnableHoverTrainPlanning, false);
            routeToPortal.SetOption(Route.RouteOption.EnablePlanningAsCar, r.GetOption(Route.RouteOption.EnablePlanningAsCar));
            routeToPortal.SetOption(Route.RouteOption.PlanUsingStroller, r.GetOption(Route.RouteOption.PlanUsingStroller));
            routeToPortal.SetOption(Route.RouteOption.ReplanUsingStroller, r.GetOption(Route.RouteOption.ReplanUsingStroller));
            routeToPortal.SetOption(Route.RouteOption.BeginAsStroller, r.GetOption(Route.RouteOption.BeginAsStroller));

            Vector3 slotPosition = closest.GetSlotPosition(closest.GetRoutingSlots()[0]);
            Vector3 slotFoward = closest.GetForwardOfSlot(closest.GetRoutingSlots()[0]);

            Vector3 farPosition = new Vector3(slotPosition);
            farPosition.x -= slotFoward.x / 4f;
            farPosition.y -= slotFoward.y / 4f;

            RoutePlanResult result = routeToPortal.PlanToPoint(farPosition);

            msg.Append(Common.NewLine + "Result: " + result);

            if (result.Succeeded())
            {
                msg.Append(Common.NewLine + "D" + Common.NewLine + Routes.RouteToString(routeToPortal));

                Route portalRoute = target.CreateRoute();
                portalRoute.SetOption(Route.RouteOption.EnableSubwayPlanning, false);
                portalRoute.SetOption2(Route.RouteOption2.EnableHoverTrainPlanning, false);
                portalRoute.SetOption(Route.RouteOption.EnablePlanningAsCar, r.GetOption(Route.RouteOption.EnablePlanningAsCar));
                portalRoute.SetOption(Route.RouteOption.PlanUsingStroller, r.GetOption(Route.RouteOption.PlanUsingStroller));
                portalRoute.SetOption(Route.RouteOption.ReplanUsingStroller, r.GetOption(Route.RouteOption.ReplanUsingStroller));
                portalRoute.SetOption(Route.RouteOption.BeginAsStroller, r.GetOption(Route.RouteOption.BeginAsStroller));

                result = portalRoute.PlanToPointFromPoint(slotPosition, farPosition);

                msg.Append(Common.NewLine + "Result: " + result);

                if (result.Succeeded())
                {
                    PathData portalData = new PathData();
                    portalData.PathType = PathType.PortalPath;
                    portalData.ObjectId = closest.ObjectId;
                    portalData.PortalStartPos = slotPosition;

                    portalRoute.SetPathData(ref portalData);

                    msg.Append(Common.NewLine + "A" + Common.NewLine + Routes.RouteToString(portalRoute));

                    slotPosition = destination.GetSlotPosition(destination.GetRoutingSlots()[0]);

                    r.SetOption(Route.RouteOption.EnableSubwayPlanning, false);
                    if (!r.ReplanFromPoint(slotPosition).Succeeded())
                    {
                        r.ReplanFromPoint(currentStartPoint);
                    }
                    else if ((routeToPortal.GetDistanceRemaining() + r.GetDistanceRemaining()) < (distanceRemaining + SimRoutingComponent.kDistanceMustSaveInOrderToUseSubway))
                    {
                        AncientPortalComponent.AddTargetPortal(target, destination);

                        msg.Append(Common.NewLine + "B" + Common.NewLine + Routes.RouteToString(r));

                        r.InsertRouteSubPathsAtIndex(0x0, portalRoute);
                        r.InsertRouteSubPathsAtIndex(0x0, routeToPortal);

                        msg.Append(Common.NewLine + "C" + Common.NewLine + Routes.RouteToString(r));

                        r.SetOption(Route.RouteOption.EnableSubwayPlanning, true);
                    }
                    else
                    {
                        r.ReplanFromPoint(currentStartPoint);
                    }
                }
            }

            Common.DebugNotify(msg, target);
            Common.DebugWriteLog(msg);
        }
Example #35
0
        public void Instance_GetsTemplateUrl_FromDefinition_WhenDefined()
        {
            PathData path = item.FindPath(PathData.DefaultAction);

            Assert.That(path.TemplateUrl, Is.EqualTo("~/My/Template.ascx"));
        }
Example #36
0
        private void OptionSelected()
        {
            pathData        = new PathData(webService.Context);
            webService.Data = pathData;
            string message = "<html>";

            if (pathData.Funcio == "favicon.ico")
            {
                return;
            }
            if (pathData.Funcio != "stop" && pathData.Funcio != "veuretauler" && pathData.Funcio != "marcarcasella" && pathData.Funcio != "reset")
            {
                throw new BadFunctionException();
            }
            if ((pathData.Jugador == null || pathData.Columna == default(int) || pathData.Fila == default(int)) && pathData.Funcio == "marcarcasella")
            {
                throw new ParametersException();
            }

            if (pathData.Funcio == "stop")
            {
                webService.Stop();
            }
            else
            {
                if (pathData.Funcio == "veuretauler")
                {
                    message += VeureTauler();
                }
                else if (pathData.Funcio == "marcarcasella")
                {
                    message = "<head><meta charset=\"UTF-8\"><title>Marcar Casella</title></head><body>";

                    if (Convert.ToChar(pathData.Jugador) != 'x' && Convert.ToChar(pathData.Jugador) != 'o')
                    {
                        throw new JugadorException();
                    }
                    else if (pathData.Fila > 3 || pathData.Fila < 1)
                    {
                        throw new FilaIncorrecteException();
                    }
                    else if (pathData.Columna > 3 || pathData.Columna < 1)
                    {
                        throw new ColumnaIncorrecteException();
                    }
                    else
                    {
                        if (tresEnRatlla.PartidaAcabada)
                        {
                            message += "La partida ja esta acabada";
                        }
                        else
                        {
                            if (tresEnRatlla.SeguentJugador == Convert.ToChar(pathData.Jugador))
                            {
                                bool canviat = tresEnRatlla.MarcarCasella(pathData.Fila - 1, pathData.Columna - 1, Convert.ToChar(pathData.Jugador));
                                if (!canviat)
                                {
                                    message += "La casella ja està marcada";
                                }
                                else
                                {
                                    message += VeureTauler();
                                    if (tresEnRatlla.Guanyador != '-')
                                    {
                                        message += "<p style=\"font-size:30px\">El guanyador és: " + tresEnRatlla.Guanyador + "</p>";
                                        VeureTauler();
                                    }
                                }
                            }
                            else
                            {
                                message += "Aquest no es el teu torn";
                            }
                        }
                        message += "</body>";
                    }
                }
                else if (pathData.Funcio == "reset")
                {
                    tresEnRatlla.Reset();
                    message += "<script>alert(\"Tauler reiniciat!!!\");</script>";
                    message += VeureTauler();
                }
                message           += "</html>";
                webService.Message = message;
            }
        }
Example #37
0
		private void UpdateItemFromTopEditor(PathData path)
		{
			var editor = FindTopEditor(Parent);
			var draftOfTopEditor = path.CurrentPage.FindPartVersion(editor.CurrentItem);
			editor.UpdateObject(new Edit.Workflow.CommandContext(editor.Definition, draftOfTopEditor, Interfaces.Editing, Context.User));
		}
Example #38
0
 /// <summary>
 /// Retrieve the source position for a given relative position (TF)
 /// </summary>
 /// <param name="tf">relative position</param>
 /// <returns>
 /// a world position
 /// </returns>
 protected override Vector3 GetInterpolatedSourcePosition(float tf)
 {
     return((Space == Space.World) ? Path.Module.Generator.transform.TransformPoint(PathData.InterpolatePosition(tf)) : PathData.InterpolatePosition(tf));
 }
Example #39
0
 private static PathData UseItemIfAvailable(ContentItem item, PathData data)
 {
     if (item != null)
     {
         data.CurrentPage = data.CurrentItem;
         data.CurrentItem = item;
     }
     return data;
 }
Example #40
0
 /// <exception cref="System.IO.IOException"/>
 protected internal override InputStream GetInputStream(PathData item)
 {
     return(base.GetInputStream(item));
 }
 /// <summary>
 /// Returns HTML for the navigation bar.
 /// </summary>
 private static string GenerateNavigationInfo(PathData currentPath, List<PathData> relatedPaths)
 {
     var names = new List<string>();
       var links = new List<string>();
       if (currentPath.FractalScale == 0)
       {
     // Dungeon and raid instances have their paths separated from each other.
     // So paths have data only for one instance.
     foreach (var path in relatedPaths)
     {
       if (path == null)
       {
     ErrorHandler.ShowWarningMessage("A path is not defined.");
     continue;
       }
       names.Add(path.NavigationName);
       links.Add(path.Filename);
     }
       }
       else
       {
     // All fractal paths are mixed together so they require a different implementation.
     // There are 100 paths so obviously not everything can be included in the small navigation bar.
     // NOTE: relatedPaths indexing starts from 0 while scales start from 1.
     var startingScale = currentPath.FractalScale - Constants.FractalNavPathCount / 2;
     if (startingScale + Constants.FractalNavPathCount >= relatedPaths.Count)
       startingScale = relatedPaths.Count - Constants.FractalNavPathCount;
     if (startingScale < 1)
       startingScale = 1;
     for (var index = startingScale - 1; index < startingScale + Constants.FractalNavPathCount; index++)
     {
       if (currentPath.FractalScale == index + 1 || index >= relatedPaths.Count)
     continue;
       if (relatedPaths[index] == null)
       {
     ErrorHandler.ShowWarningMessage("Scale " + index + 1 + " is not defined.");
     continue;
       }
       names.Add("Scale " + relatedPaths[index].FractalScale + ": " + relatedPaths[index].NavigationName);
       links.Add(relatedPaths[index].Filename);
     }
       }
       return string.Join("|", names) + Constants.ForcedLineEnding + string.Join("|", links) + Constants.ForcedLineEnding;
 }
 private void saveNewPathData(PathData data)
 {
     WarningSystem.addWarning("Attempt to Save Pathdata", "Shouldn't be called in render", Code.Error);
     /*
     XmlSerializer serializer = new XmlSerializer(typeof(PathData));
     //string exeFolder = System.IO.Path.GetDirectoryName(Application.ExecutablePath);
       		TextWriter textWriter = new StreamWriter(activeProject.projectFolderPath + "\\paths\\" + data.pathName + ".xml");
       		serializer.Serialize(textWriter, data);
       		textWriter.Close();
       		*/
 }
		public ThreadContext()
		{
    		currentPath = PathData.Empty;
			items = new Hashtable();
    		url = "http://localhost/";
		}
Example #44
0
 /// <summary>Applies the current content item and controller to the route data.</summary>
 public static RouteData ApplyCurrentPath(RouteData data, string controllerName, string actionName, PathData path)
 {
     data.Values[ContentRoute.ControllerKey] = controllerName;
     data.Values[ContentRoute.ActionKey]     = actionName;
     return(data.ApplyCurrentPath(path));
 }