コード例 #1
0
ファイル: CreatePlane2D.cs プロジェクト: bonsai-rx/physics
 public IObservable <Plane2D> Process(IObservable <Body> source)
 {
     return(source.Select(body =>
     {
         var plane = new Plane2D(body.World);
         plane.Attach(body);
         return plane;
     }));
 }
コード例 #2
0
    private void FinalizeMap()
    {
        plane       = new Plane2D(mapData.Width, mapData.Height);
        filter.mesh = plane.Mesh;

        GenerateMapCollision();
        BuildMapTexture();
        ApplyMapTexture();
    }
コード例 #3
0
	private void FinalizeMap()
	{
		plane = new Plane2D(mapData.Width, mapData.Height);
		filter.mesh = plane.Mesh;

		GenerateMapCollision();
		BuildMapTexture();
		ApplyMapTexture();
	}
コード例 #4
0
ファイル: PathFinder.cs プロジェクト: Sipaha/MateriaTD
    public IntVec2[] FindPath(IntVec2 from, IntVec2 to, bool[,] pathMap, IntVec2[] moveDirections)
    {
        openNodes.Clear();
        closedNodes.Clear();

        Node searchNode = new Node();
        searchNode.point = from;
        bool endReached = false;

        Plane2D directPath = new Plane2D(from, to);

        openNodes.Add(searchNode, 0);

        while (openNodes.Size > 0)
        {
            searchNode = openNodes.Pop();

            if (searchNode.point.Equals(to)) {
                endReached = true;
                break;
            }

            IntVec2 p = searchNode.point;

            foreach (IntVec2 direction in moveDirections)
            {
                IntVec2 newPos = p + direction;
                if (newPos.X >= 0 && newPos.X < pathMap.GetLength(0) &&
                    newPos.Y >= 0 && newPos.Y < pathMap.GetLength(1) &&
                    pathMap[newPos.X, newPos.Y] && !closedNodes.Contains(newPos))
                {
                    AddOpenNode(searchNode, newPos, to, directPath);
                }
            }
            closedNodes.Add(searchNode.point);
        }

        if (endReached)
        {
            IntVec2[] path = new IntVec2[searchNode.steps + 1];
            for (int i = searchNode.steps; i >= 0; i--)
            {
                path[i] = searchNode.point;
                searchNode = searchNode.from;
            }

            return path;
        }

        return null;
    }
コード例 #5
0
ファイル: PathFinder.cs プロジェクト: Sipaha/MateriaTD
    private void AddOpenNode(Node from, IntVec2 newPoint, IntVec2 finish, Plane2D directPath)
    {
        Node node = new Node();
        node.point = newPoint;
        node.steps = from.steps + 1;
        node.from = from;

        float distanceToDirectPath = 0.001f * Mathf.Abs (directPath.distanceTo (newPoint));
        float nodeValue = 100 * (newPoint.SubDistance(finish) + node.steps) + distanceToDirectPath;

        Node replacedNode;

        if (openNodes.Add(node, nodeValue, out replacedNode))
        {
            if (replacedNode != null)
            {
                closedNodes.Add(replacedNode.point);
            }
        }
        else
        {
            closedNodes.Add(node.point);
        }
    }