コード例 #1
0
ファイル: Part1x1x13.cs プロジェクト: SimonBlasen/UnityML
    public override Connectionpoint[] GetConnectionpoints(PartDirection direction, PartRotation rotation)
    {
        Connectionpoint[] connectionPoints = new Connectionpoint[13];

        Vector3       directionToGoIn    = direction.ToVector3();
        PartDirection holesLookDirection = PartDirection.Down;

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

            case PartRotation.Left:
                holesLookDirection = PartDirection.North;
                break;

            case PartRotation.Up:
                holesLookDirection = PartDirection.East;
                break;

            case PartRotation.Right:
                holesLookDirection = PartDirection.South;
                break;
            }
            break;

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

            case PartRotation.Left:
                holesLookDirection = PartDirection.South;
                break;

            case PartRotation.Up:
                holesLookDirection = PartDirection.East;
                break;

            case PartRotation.Right:
                holesLookDirection = PartDirection.North;
                break;
            }
            break;

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

            case PartRotation.Left:
                holesLookDirection = PartDirection.Up;
                break;

            case PartRotation.Up:
                holesLookDirection = PartDirection.South;
                break;

            case PartRotation.Right:
                holesLookDirection = PartDirection.Down;
                break;
            }
            break;

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

            case PartRotation.Left:
                holesLookDirection = PartDirection.Up;
                break;

            case PartRotation.Up:
                holesLookDirection = PartDirection.West;
                break;

            case PartRotation.Right:
                holesLookDirection = PartDirection.Down;
                break;
            }
            break;

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

            case PartRotation.Left:
                holesLookDirection = PartDirection.Up;
                break;

            case PartRotation.Up:
                holesLookDirection = PartDirection.North;
                break;

            case PartRotation.Right:
                holesLookDirection = PartDirection.Down;
                break;
            }
            break;

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

            case PartRotation.Left:
                holesLookDirection = PartDirection.Up;
                break;

            case PartRotation.Up:
                holesLookDirection = PartDirection.East;
                break;

            case PartRotation.Right:
                holesLookDirection = PartDirection.Down;
                break;
            }
            break;
        }

        for (int i = 0; i < connectionPoints.Length; i++)
        {
            connectionPoints[i] = new ConnectorRoundHole(holesLookDirection, new Vector3(directionToGoIn.x * (i - (((float)amountOfHoles) * 0.5f) + 0.5f), directionToGoIn.y * (i - (((float)amountOfHoles) * 0.5f) + 0.5f), directionToGoIn.z * (i - (((float)amountOfHoles) * 0.5f) + 0.5f)));
        }

        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;
    }
コード例 #2
0
ファイル: PartTurn1x1x2.cs プロジェクト: SimonBlasen/UnityML
    public override Connectionpoint[] GetConnectionpoints(PartDirection direction, PartRotation rotation)
    {
        Connectionpoint[] connectionPoints = new Connectionpoint[2];

        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.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 ConnectorRoundHole(secondHoleDirection, directionVector);
        connectionPoints[1] = new ConnectorRoundHole(firstHoleDirection, new Vector3(0f, 0f, 0f));

        return(connectionPoints);
    }
コード例 #3
0
    public override Connectionpoint[] GetConnectionpoints(PartDirection direction, PartRotation rotation)
    {
        Connectionpoint[] connectionPoints = new Connectionpoint[2];

        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 ConnectorRoundHole(firstHoleDirection, Vector3.zero);
        connectionPoints[1] = new ConnectorRoundHole(firstHoleDirection, directionToGoIn);

        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;
    }
コード例 #4
0
    public override Connectionpoint[] GetConnectionpoints(PartDirection direction, PartRotation rotation)
    {
        int lengthToBack = 5;

        Connectionpoint[] connectionPoints = new Connectionpoint[9 + (lengthToBack - 1) * 9];

        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();
        Vector3 upVector = secondHoleDirection.ToVector3();

        connectionPoints[0] = new ConnectorCrossPower(direction.Opposite(), Vector3.zero);
        connectionPoints[1] = new ConnectorRoundHole(direction.Opposite(), sideVector);
        connectionPoints[2] = new ConnectorRoundHole(direction.Opposite(), -sideVector);
        connectionPoints[3] = new ConnectorRoundHole(direction.Opposite(), upVector);
        connectionPoints[4] = new ConnectorRoundHole(direction.Opposite(), -upVector);
        connectionPoints[5] = new ConnectorSolid(direction, upVector + sideVector);
        connectionPoints[6] = new ConnectorSolid(direction, upVector - sideVector);
        connectionPoints[7] = new ConnectorSolid(direction, -upVector + sideVector);
        connectionPoints[8] = new ConnectorSolid(direction, -upVector - sideVector);

        for (int i = 1; i < lengthToBack; i++)
        {
            connectionPoints[i * 9]     = new ConnectorSolid(direction, upVector + sideVector + directionVector * i);
            connectionPoints[i * 9 + 1] = new ConnectorSolid(direction, upVector - sideVector + directionVector * i);
            connectionPoints[i * 9 + 2] = new ConnectorSolid(direction, -upVector + sideVector + directionVector * i);
            connectionPoints[i * 9 + 3] = new ConnectorSolid(direction, -upVector - sideVector + directionVector * i);
            connectionPoints[i * 9 + 4] = new ConnectorSolid(direction, upVector + directionVector * i);
            connectionPoints[i * 9 + 5] = new ConnectorSolid(direction, -upVector + directionVector * i);
            connectionPoints[i * 9 + 6] = new ConnectorSolid(direction, sideVector + directionVector * i);
            connectionPoints[i * 9 + 7] = new ConnectorSolid(direction, -sideVector + directionVector * i);
            connectionPoints[i * 9 + 8] = new ConnectorSolid(direction, directionVector * i);
        }


        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;
    }
コード例 #5
0
    public override Connectionpoint[] GetConnectionpoints(PartDirection direction, PartRotation rotation)
    {
        Connectionpoint[] connectionPoints = new Connectionpoint[26];

        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 ConnectorRoundHole(direction.Opposite(), firstHoleDirection.ToVector3() + secondHoleDirection.ToVector3());
        connectionPoints[1] = new ConnectorRoundHole(direction.Opposite(), firstHoleDirection.ToVector3() - secondHoleDirection.ToVector3());
        connectionPoints[2] = new ConnectorRoundHole(direction.Opposite(), -firstHoleDirection.ToVector3() + secondHoleDirection.ToVector3());
        connectionPoints[3] = new ConnectorRoundHole(direction.Opposite(), -firstHoleDirection.ToVector3() - secondHoleDirection.ToVector3());

        connectionPoints[4] = new ConnectorSolid(direction, Vector3.zero);
        connectionPoints[5] = new ConnectorSolid(direction, firstHoleDirection.ToVector3());
        connectionPoints[6] = new ConnectorSolid(direction, -firstHoleDirection.ToVector3());
        connectionPoints[7] = new ConnectorSolid(direction, secondHoleDirection.ToVector3());
        connectionPoints[8] = new ConnectorSolid(direction, -secondHoleDirection.ToVector3());

        connectionPoints[9]  = new ConnectorSolid(direction, directionToGoIn + firstHoleDirection.ToVector3() + secondHoleDirection.ToVector3());
        connectionPoints[10] = new ConnectorSolid(direction, directionToGoIn + firstHoleDirection.ToVector3() - secondHoleDirection.ToVector3());
        connectionPoints[11] = new ConnectorSolid(direction, directionToGoIn - firstHoleDirection.ToVector3() + secondHoleDirection.ToVector3());
        connectionPoints[12] = new ConnectorSolid(direction, directionToGoIn - firstHoleDirection.ToVector3() - secondHoleDirection.ToVector3());
        connectionPoints[13] = new ConnectorSolid(direction, directionToGoIn + Vector3.zero);
        connectionPoints[14] = new ConnectorSolid(direction, directionToGoIn + firstHoleDirection.ToVector3());
        connectionPoints[15] = new ConnectorSolid(direction, directionToGoIn - firstHoleDirection.ToVector3());
        connectionPoints[16] = new ConnectorSolid(direction, directionToGoIn + secondHoleDirection.ToVector3());
        connectionPoints[17] = new ConnectorSolid(direction, directionToGoIn - secondHoleDirection.ToVector3());

        connectionPoints[18] = new ConnectorSolid(direction, 2 * directionToGoIn + firstHoleDirection.ToVector3() + secondHoleDirection.ToVector3());
        connectionPoints[19] = new ConnectorSolid(direction, 2 * directionToGoIn + firstHoleDirection.ToVector3() - secondHoleDirection.ToVector3());
        connectionPoints[20] = new ConnectorSolid(direction, 2 * directionToGoIn - firstHoleDirection.ToVector3() + secondHoleDirection.ToVector3());
        connectionPoints[21] = new ConnectorSolid(direction, 2 * directionToGoIn - firstHoleDirection.ToVector3() - secondHoleDirection.ToVector3());
        connectionPoints[22] = new ConnectorSolid(direction, 2 * directionToGoIn + Vector3.zero);
        connectionPoints[23] = new ConnectorSolid(direction, 2 * directionToGoIn + firstHoleDirection.ToVector3());
        connectionPoints[24] = new ConnectorSolid(direction, 2 * directionToGoIn - firstHoleDirection.ToVector3());
        connectionPoints[25] = new ConnectorSolid(direction, 2 * directionToGoIn + secondHoleDirection.ToVector3());
        connectionPoints[26] = new ConnectorSolid(direction, 2 * directionToGoIn - secondHoleDirection.ToVector3());

        return(connectionPoints);
    }
コード例 #6
0
ファイル: PartTurn1x3x3.cs プロジェクト: SimonBlasen/UnityML
    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);
    }
コード例 #7
0
    public override Connectionpoint[] GetConnectionpoints(PartDirection direction, PartRotation rotation)
    {
        Connectionpoint[] connectionPoints = new Connectionpoint[7];

        Vector3       directionToGoIn    = direction.ToVector3();
        Vector3       directionUp        = direction.ToVector3();
        PartDirection holesLookDirection = PartDirection.Down;

        switch (direction)
        {
        case PartDirection.Down:
            switch (rotation)
            {
            case PartRotation.Down:
                holesLookDirection = PartDirection.West;
                directionUp        = new Vector3(0, 0, -1);
                break;

            case PartRotation.Left:
                holesLookDirection = PartDirection.North;
                directionUp        = new Vector3(-1, 0, 0);
                break;

            case PartRotation.Up:
                holesLookDirection = PartDirection.East;
                directionUp        = new Vector3(0, 0, 1);
                break;

            case PartRotation.Right:
                holesLookDirection = PartDirection.South;
                directionUp        = new Vector3(1, 0, 0);
                break;
            }
            break;

        case PartDirection.Up:
            switch (rotation)
            {
            case PartRotation.Down:
                holesLookDirection = PartDirection.West;
                directionUp        = new Vector3(0, 0, 1);
                break;

            case PartRotation.Left:
                holesLookDirection = PartDirection.South;
                directionUp        = new Vector3(-1, 0, 0);
                break;

            case PartRotation.Up:
                holesLookDirection = PartDirection.East;
                directionUp        = new Vector3(0, 0, -1);
                break;

            case PartRotation.Right:
                holesLookDirection = PartDirection.North;
                directionUp        = new Vector3(1, 0, 0);
                break;
            }
            break;

        case PartDirection.East:
            switch (rotation)
            {
            case PartRotation.Down:
                holesLookDirection = PartDirection.North;
                directionUp        = new Vector3(0, -1, 0);
                break;

            case PartRotation.Left:
                holesLookDirection = PartDirection.Up;
                directionUp        = new Vector3(0, 0, 1);
                break;

            case PartRotation.Up:
                holesLookDirection = PartDirection.South;
                directionUp        = new Vector3(0, 1, 0);
                break;

            case PartRotation.Right:
                holesLookDirection = PartDirection.Down;
                directionUp        = new Vector3(0, 0, -1);
                break;
            }
            break;

        case PartDirection.South:
            switch (rotation)
            {
            case PartRotation.Down:
                holesLookDirection = PartDirection.East;
                directionUp        = new Vector3(0, -1, 0);
                break;

            case PartRotation.Left:
                holesLookDirection = PartDirection.Up;
                directionUp        = new Vector3(1, 0, 0);
                break;

            case PartRotation.Up:
                holesLookDirection = PartDirection.West;
                directionUp        = new Vector3(0, 1, 0);
                break;

            case PartRotation.Right:
                holesLookDirection = PartDirection.Down;
                directionUp        = new Vector3(-1, 0, 0);
                break;
            }
            break;

        case PartDirection.West:
            switch (rotation)
            {
            case PartRotation.Down:
                holesLookDirection = PartDirection.South;
                directionUp        = new Vector3(0, -1, 0);
                break;

            case PartRotation.Left:
                holesLookDirection = PartDirection.Up;
                directionUp        = new Vector3(0, 0, -1);
                break;

            case PartRotation.Up:
                holesLookDirection = PartDirection.North;
                directionUp        = new Vector3(0, 1, 0);
                break;

            case PartRotation.Right:
                holesLookDirection = PartDirection.Down;
                directionUp        = new Vector3(0, 0, 1);
                break;
            }
            break;

        case PartDirection.North:
            switch (rotation)
            {
            case PartRotation.Down:
                holesLookDirection = PartDirection.West;
                directionUp        = new Vector3(0, -1, 0);
                break;

            case PartRotation.Left:
                holesLookDirection = PartDirection.Up;
                directionUp        = new Vector3(-1, 0, 0);
                break;

            case PartRotation.Up:
                holesLookDirection = PartDirection.East;
                directionUp        = new Vector3(0, 1, 0);
                break;

            case PartRotation.Right:
                holesLookDirection = PartDirection.Down;
                directionUp        = new Vector3(1, 0, 0);
                break;
            }
            break;
        }

        connectionPoints[0] = new ConnectorRoundHole(holesLookDirection, directionUp * 2);
        connectionPoints[1] = new ConnectorRoundHole(holesLookDirection, directionUp);
        connectionPoints[2] = new ConnectorRoundHole(holesLookDirection, Vector3.zero);
        connectionPoints[3] = new ConnectorRoundHole(holesLookDirection, directionToGoIn);
        connectionPoints[4] = new ConnectorRoundHole(holesLookDirection, directionToGoIn * 2);
        connectionPoints[5] = new ConnectorRoundHole(holesLookDirection, directionToGoIn * 3);
        connectionPoints[6] = new ConnectorRoundHole(holesLookDirection, directionToGoIn * 4);


        return(connectionPoints);
    }