Beispiel #1
0
        public override List <WFFul> CalcFulcrumPos(FrameRule clamp)
        {
            var   startPos = -new Vector3(clamp.size1, -clamp.height, clamp.size2) * 0.5f;
            float x_Size   = clamp.size1 / clamp.num1;
            float y_Size   = clamp.size2 / clamp.num2;

            List <WFFul> positions = new List <WFFul>();

            for (int i = 0; i < clamp.num1; i++)
            {
                for (int j = 0; j < clamp.num2; j++)
                {
                    switch (clamp.fulcrumType)
                    {
                    case FulcrumType.upBound:
                        CalcuteUtility.RecordQuadBound(i, j, clamp.num1, clamp.num2, startPos, x_Size, y_Size, positions, clamp.fulcrumType);
                        break;

                    case FulcrumType.downBound:
                        if (!clamp.doubleLayer)
                        {
                            CalcuteUtility.RecordQuadrAngular(i, j, clamp.num1, clamp.num2, startPos, x_Size, y_Size, clamp.height, positions, clamp.fulcrumType);
                        }
                        else
                        {
                            CalcuteUtility.RecordQuadBound(i, j, clamp.num1, clamp.num2, startPos, x_Size, y_Size, positions, clamp.fulcrumType, clamp.height);
                        }
                        break;

                    case FulcrumType.upPoint:
                        CalcuteUtility.RecordQuadPoint(i, j, clamp.num1, clamp.num2, startPos, x_Size, y_Size, positions, clamp.fulcrumType);
                        break;

                    case FulcrumType.downPoint:
                        if (!clamp.doubleLayer)
                        {
                            CalcuteUtility.RecordQuadAngularPoint(i, j, clamp.num1, clamp.num2, startPos, x_Size, y_Size, clamp.height, positions, clamp.fulcrumType);
                        }
                        else
                        {
                            CalcuteUtility.RecordQuadPoint(i, j, clamp.num1, clamp.num2, startPos, x_Size, y_Size, positions, clamp.fulcrumType, clamp.height);
                        }
                        break;

                    default:
                        break;
                    }
                }
            }
            if ((clamp.fulcrumType == FulcrumType.downBound || clamp.fulcrumType == FulcrumType.downPoint) && clamp.doubleLayer)
            {
                foreach (var item in positions)
                {
                    item.AppendPosition(Vector3.down * clamp.height);
                }
            }
            return(positions);
        }