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

        Vector3 directionVector = direction.ToVector3();

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

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

        Vector3 directionVector = direction.ToVector3();

        connectionPoints[0] = new ConnectorCrossPin(direction, directionVector * 7);
        connectionPoints[1] = new ConnectorCrossPin(direction, directionVector * 6);
        connectionPoints[2] = new ConnectorCrossPin(direction, directionVector * 5);
        connectionPoints[3] = new ConnectorCrossPin(direction, directionVector * 4);
        connectionPoints[4] = new ConnectorCrossPin(direction, directionVector * 3);
        connectionPoints[5] = new ConnectorCrossPin(direction, directionVector * 2);
        connectionPoints[6] = new ConnectorCrossPin(direction, directionVector);
        connectionPoints[7] = new ConnectorCrossPin(direction.Opposite(), new Vector3(0f, 0f, 0f));

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

        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 ConnectorCrossHole(firstHoleDirection, Vector3.zero);
        connectionPoints[1] = new ConnectorCrossHole(secondHoleDirection.Opposite(), -2f * directionToGoIn);
        connectionPoints[2] = new ConnectorCrossPin(secondHoleDirection.Opposite(), secondHoleDirection.Opposite().ToVector3());
        connectionPoints[3] = new ConnectorCrossPin(secondHoleDirection, secondHoleDirection.ToVector3());

        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;
    }