Beispiel #1
0
    public override Connectionpoint[] GetConnectionpoints(PartDirection direction, PartRotation rotation)
    {
        Connectionpoint[] connectionPoints = new Connectionpoint[2];

        Vector3 directionVector = direction.ToVector3();

        connectionPoints[0] = new ConnectorRoundPin(direction, directionVector);
        connectionPoints[1] = new ConnectorRoundPin(direction.Opposite(), new Vector3(0f, 0f, 0f));

        return(connectionPoints);
    }
Beispiel #2
0
    public override Connectionpoint[] GetConnectionpoints(PartDirection direction, PartRotation rotation)
    {
        Connectionpoint[] connectionPoints = new Connectionpoint[7];

        Vector3       directionVector     = direction.ToVector3();
        Vector3       sideVector          = Vector3.zero;
        PartDirection firstHoleDirection  = PartDirection.Down;
        PartDirection secondHoleDirection = PartDirection.Down;

        switch (direction)
        {
        case PartDirection.Down:
            switch (rotation)
            {
            case PartRotation.Down:
                firstHoleDirection  = PartDirection.West;
                secondHoleDirection = PartDirection.North;
                break;

            case PartRotation.Left:
                firstHoleDirection  = PartDirection.North;
                secondHoleDirection = PartDirection.East;
                break;

            case PartRotation.Up:
                firstHoleDirection  = PartDirection.East;
                secondHoleDirection = PartDirection.South;
                break;

            case PartRotation.Right:
                firstHoleDirection  = PartDirection.South;
                secondHoleDirection = PartDirection.West;
                break;
            }
            break;

        case PartDirection.Up:
            switch (rotation)
            {
            case PartRotation.Down:
                firstHoleDirection  = PartDirection.West;
                secondHoleDirection = PartDirection.North;
                break;

            case PartRotation.Left:
                firstHoleDirection  = PartDirection.South;
                secondHoleDirection = PartDirection.West;
                break;

            case PartRotation.Up:
                firstHoleDirection  = PartDirection.East;
                secondHoleDirection = PartDirection.South;
                break;

            case PartRotation.Right:
                firstHoleDirection  = PartDirection.North;
                secondHoleDirection = PartDirection.East;
                break;
            }
            break;

        case PartDirection.East:
            switch (rotation)
            {
            case PartRotation.Down:
                firstHoleDirection  = PartDirection.North;
                secondHoleDirection = PartDirection.Down;
                break;

            case PartRotation.Left:
                firstHoleDirection  = PartDirection.Up;
                secondHoleDirection = PartDirection.North;
                break;

            case PartRotation.Up:
                firstHoleDirection  = PartDirection.South;
                secondHoleDirection = PartDirection.Up;
                break;

            case PartRotation.Right:
                firstHoleDirection  = PartDirection.Down;
                secondHoleDirection = PartDirection.South;
                break;
            }
            break;

        case PartDirection.South:
            switch (rotation)
            {
            case PartRotation.Down:
                firstHoleDirection  = PartDirection.East;
                secondHoleDirection = PartDirection.Down;
                break;

            case PartRotation.Left:
                firstHoleDirection  = PartDirection.Up;
                secondHoleDirection = PartDirection.East;
                break;

            case PartRotation.Up:
                firstHoleDirection  = PartDirection.West;
                secondHoleDirection = PartDirection.Up;
                break;

            case PartRotation.Right:
                firstHoleDirection  = PartDirection.Down;
                secondHoleDirection = PartDirection.West;
                break;
            }
            break;

        case PartDirection.West:
            switch (rotation)
            {
            case PartRotation.Down:
                firstHoleDirection  = PartDirection.South;
                secondHoleDirection = PartDirection.Down;
                break;

            case PartRotation.Left:
                firstHoleDirection  = PartDirection.Up;
                secondHoleDirection = PartDirection.South;
                break;

            case PartRotation.Up:
                firstHoleDirection  = PartDirection.North;
                secondHoleDirection = PartDirection.Up;
                break;

            case PartRotation.Right:
                firstHoleDirection  = PartDirection.Down;
                secondHoleDirection = PartDirection.North;
                break;
            }
            break;

        case PartDirection.North:
            switch (rotation)
            {
            case PartRotation.Down:
                firstHoleDirection  = PartDirection.West;
                secondHoleDirection = PartDirection.Up;
                break;

            case PartRotation.Left:
                firstHoleDirection  = PartDirection.Up;
                secondHoleDirection = PartDirection.East;
                break;

            case PartRotation.Up:
                firstHoleDirection  = PartDirection.East;
                secondHoleDirection = PartDirection.Down;
                break;

            case PartRotation.Right:
                firstHoleDirection  = PartDirection.Down;
                secondHoleDirection = PartDirection.West;
                break;
            }
            break;
        }

        sideVector = firstHoleDirection.ToVector3();

        connectionPoints[0] = new ConnectorRoundHole(firstHoleDirection, Vector3.zero);
        connectionPoints[1] = new ConnectorRoundHole(secondHoleDirection, directionVector);
        connectionPoints[2] = new ConnectorRoundHole(secondHoleDirection, -1 * directionVector);
        connectionPoints[3] = new ConnectorRoundPin(firstHoleDirection, -1 * directionVector + sideVector);
        connectionPoints[4] = new ConnectorRoundPin(firstHoleDirection.Opposite(), -1 * directionVector - sideVector);
        connectionPoints[5] = new ConnectorRoundPin(firstHoleDirection, directionVector + sideVector);
        connectionPoints[6] = new ConnectorRoundPin(firstHoleDirection.Opposite(), directionVector - sideVector);

        return(connectionPoints);
    }
Beispiel #3
0
    public override Connectionpoint[] GetConnectionpoints(PartDirection direction, PartRotation rotation)
    {
        Connectionpoint[] connectionPoints = new Connectionpoint[3];

        Vector3       directionVector     = direction.ToVector3();
        PartDirection firstHoleDirection  = PartDirection.Down;
        PartDirection secondHoleDirection = PartDirection.Down;

        switch (direction)
        {
        case PartDirection.Down:
            switch (rotation)
            {
            case PartRotation.Down:
                firstHoleDirection  = PartDirection.West;
                secondHoleDirection = PartDirection.North;
                break;

            case PartRotation.Left:
                firstHoleDirection  = PartDirection.North;
                secondHoleDirection = PartDirection.East;
                break;

            case PartRotation.Up:
                firstHoleDirection  = PartDirection.East;
                secondHoleDirection = PartDirection.South;
                break;

            case PartRotation.Right:
                firstHoleDirection  = PartDirection.South;
                secondHoleDirection = PartDirection.West;
                break;
            }
            break;

        case PartDirection.Up:
            switch (rotation)
            {
            case PartRotation.Down:
                firstHoleDirection  = PartDirection.West;
                secondHoleDirection = PartDirection.South;
                break;

            case PartRotation.Left:
                firstHoleDirection  = PartDirection.South;
                secondHoleDirection = PartDirection.East;
                break;

            case PartRotation.Up:
                firstHoleDirection  = PartDirection.East;
                secondHoleDirection = PartDirection.North;
                break;

            case PartRotation.Right:
                firstHoleDirection  = PartDirection.North;
                secondHoleDirection = PartDirection.West;
                break;
            }
            break;

        case PartDirection.East:
            switch (rotation)
            {
            case PartRotation.Down:
                firstHoleDirection  = PartDirection.North;
                secondHoleDirection = PartDirection.Up;
                break;

            case PartRotation.Left:
                firstHoleDirection  = PartDirection.Up;
                secondHoleDirection = PartDirection.South;
                break;

            case PartRotation.Up:
                firstHoleDirection  = PartDirection.South;
                secondHoleDirection = PartDirection.Down;
                break;

            case PartRotation.Right:
                firstHoleDirection  = PartDirection.Down;
                secondHoleDirection = PartDirection.North;
                break;
            }
            break;

        case PartDirection.South:
            switch (rotation)
            {
            case PartRotation.Down:
                firstHoleDirection  = PartDirection.East;
                secondHoleDirection = PartDirection.Up;
                break;

            case PartRotation.Left:
                firstHoleDirection  = PartDirection.Up;
                secondHoleDirection = PartDirection.West;
                break;

            case PartRotation.Up:
                firstHoleDirection  = PartDirection.West;
                secondHoleDirection = PartDirection.Down;
                break;

            case PartRotation.Right:
                firstHoleDirection  = PartDirection.Down;
                secondHoleDirection = PartDirection.East;
                break;
            }
            break;

        case PartDirection.West:
            switch (rotation)
            {
            case PartRotation.Down:
                firstHoleDirection  = PartDirection.South;
                secondHoleDirection = PartDirection.Up;
                break;

            case PartRotation.Left:
                firstHoleDirection  = PartDirection.Up;
                secondHoleDirection = PartDirection.North;
                break;

            case PartRotation.Up:
                firstHoleDirection  = PartDirection.North;
                secondHoleDirection = PartDirection.Down;
                break;

            case PartRotation.Right:
                firstHoleDirection  = PartDirection.Down;
                secondHoleDirection = PartDirection.South;
                break;
            }
            break;

        case PartDirection.North:
            switch (rotation)
            {
            case PartRotation.Down:
                firstHoleDirection  = PartDirection.West;
                secondHoleDirection = PartDirection.Up;
                break;

            case PartRotation.Left:
                firstHoleDirection  = PartDirection.Up;
                secondHoleDirection = PartDirection.East;
                break;

            case PartRotation.Up:
                firstHoleDirection  = PartDirection.East;
                secondHoleDirection = PartDirection.Down;
                break;

            case PartRotation.Right:
                firstHoleDirection  = PartDirection.Down;
                secondHoleDirection = PartDirection.West;
                break;
            }
            break;
        }

        connectionPoints[0] = new ConnectorRoundPin(secondHoleDirection.Opposite(), (-1 * secondHoleDirection.ToVector3()) + directionVector);
        connectionPoints[1] = new ConnectorCrossHole(firstHoleDirection.Opposite(), directionVector);
        connectionPoints[2] = new ConnectorSolid(direction, Vector3.zero);

        return(connectionPoints);
    }
Beispiel #4
0
    public override Connectionpoint[] GetConnectionpoints(PartDirection direction, PartRotation rotation)
    {
        Connectionpoint[] connectionPoints = new Connectionpoint[3];

        Vector3       directionToGoIn     = direction.ToVector3();
        PartDirection firstHoleDirection  = PartDirection.Down;
        PartDirection secondHoleDirection = PartDirection.Down;

        switch (direction)
        {
        case PartDirection.Down:
            switch (rotation)
            {
            case PartRotation.Down:
                firstHoleDirection  = PartDirection.West;
                secondHoleDirection = PartDirection.North;
                break;

            case PartRotation.Left:
                firstHoleDirection  = PartDirection.North;
                secondHoleDirection = PartDirection.East;
                break;

            case PartRotation.Up:
                firstHoleDirection  = PartDirection.East;
                secondHoleDirection = PartDirection.South;
                break;

            case PartRotation.Right:
                firstHoleDirection  = PartDirection.South;
                secondHoleDirection = PartDirection.West;
                break;
            }
            break;

        case PartDirection.Up:
            switch (rotation)
            {
            case PartRotation.Down:
                firstHoleDirection  = PartDirection.West;
                secondHoleDirection = PartDirection.North;
                break;

            case PartRotation.Left:
                firstHoleDirection  = PartDirection.South;
                secondHoleDirection = PartDirection.West;
                break;

            case PartRotation.Up:
                firstHoleDirection  = PartDirection.East;
                secondHoleDirection = PartDirection.South;
                break;

            case PartRotation.Right:
                firstHoleDirection  = PartDirection.North;
                secondHoleDirection = PartDirection.East;
                break;
            }
            break;

        case PartDirection.East:
            switch (rotation)
            {
            case PartRotation.Down:
                firstHoleDirection  = PartDirection.North;
                secondHoleDirection = PartDirection.Down;
                break;

            case PartRotation.Left:
                firstHoleDirection  = PartDirection.Up;
                secondHoleDirection = PartDirection.North;
                break;

            case PartRotation.Up:
                firstHoleDirection  = PartDirection.South;
                secondHoleDirection = PartDirection.Up;
                break;

            case PartRotation.Right:
                firstHoleDirection  = PartDirection.Down;
                secondHoleDirection = PartDirection.South;
                break;
            }
            break;

        case PartDirection.South:
            switch (rotation)
            {
            case PartRotation.Down:
                firstHoleDirection  = PartDirection.East;
                secondHoleDirection = PartDirection.Down;
                break;

            case PartRotation.Left:
                firstHoleDirection  = PartDirection.Up;
                secondHoleDirection = PartDirection.East;
                break;

            case PartRotation.Up:
                firstHoleDirection  = PartDirection.West;
                secondHoleDirection = PartDirection.Up;
                break;

            case PartRotation.Right:
                firstHoleDirection  = PartDirection.Down;
                secondHoleDirection = PartDirection.West;
                break;
            }
            break;

        case PartDirection.West:
            switch (rotation)
            {
            case PartRotation.Down:
                firstHoleDirection  = PartDirection.South;
                secondHoleDirection = PartDirection.Down;
                break;

            case PartRotation.Left:
                firstHoleDirection  = PartDirection.Up;
                secondHoleDirection = PartDirection.South;
                break;

            case PartRotation.Up:
                firstHoleDirection  = PartDirection.North;
                secondHoleDirection = PartDirection.Up;
                break;

            case PartRotation.Right:
                firstHoleDirection  = PartDirection.Down;
                secondHoleDirection = PartDirection.North;
                break;
            }
            break;

        case PartDirection.North:
            switch (rotation)
            {
            case PartRotation.Down:
                firstHoleDirection  = PartDirection.West;
                secondHoleDirection = PartDirection.Up;
                break;

            case PartRotation.Left:
                firstHoleDirection  = PartDirection.Up;
                secondHoleDirection = PartDirection.East;
                break;

            case PartRotation.Up:
                firstHoleDirection  = PartDirection.East;
                secondHoleDirection = PartDirection.Down;
                break;

            case PartRotation.Right:
                firstHoleDirection  = PartDirection.Down;
                secondHoleDirection = PartDirection.West;
                break;
            }
            break;
        }

        connectionPoints[0] = new ConnectorRoundPin(secondHoleDirection.Opposite(), Vector3.zero);
        connectionPoints[1] = new ConnectorRoundPin(secondHoleDirection.Opposite(), directionToGoIn * 2);
        connectionPoints[2] = new ConnectorRoundPin(secondHoleDirection.Opposite(), directionToGoIn * -2);

        return(connectionPoints);

        //ConnectionpointInfos[] infos = new ConnectionpointInfos[10];
        //for (int i = 0; i < infos.Length; i++)
        //{
        //    infos[i] = new ConnectionpointInfos();
        //    infos[i].connectorType = ConnectorType.ROUND_HOLE;
        //    infos[i].size = new Vector3(1f, 1f, 1f);
        //    if (i < 5)
        //    {
        //        infos[i].direction = PartDirection.East;
        //        infos[i].relativePosition = new Vector3(-1f, 0.5f, 0.5f + i - 2.5f);
        //    }
        //    else
        //    {
        //        infos[i].direction = PartDirection.West;
        //        infos[i].relativePosition = new Vector3(1f, 0.5f, 0.5f + i - 7.5f);
        //    }
        //}
        //
        //return infos;
    }