public ColliderShape CreateShape(IServiceRegistry services)
        {
            object unmanagedArray;

            switch (HeightStickArraySource.HeightType)
            {
            case HeightfieldTypes.Float:
            {
                unmanagedArray = CreateHeights <float>(HeightStickArraySource);
                break;
            }

            case HeightfieldTypes.Short:
            {
                unmanagedArray = CreateHeights <short>(HeightStickArraySource);
                break;
            }

            case HeightfieldTypes.Byte:
            {
                unmanagedArray = CreateHeights <byte>(HeightStickArraySource);
                break;
            }

            default:
                return(null);
            }

            if (unmanagedArray == null)
            {
                return(null);
            }

            var shape = new HeightfieldColliderShape
                        (
                HeightStickArraySource.HeightStickSize.X,
                HeightStickArraySource.HeightStickSize.Y,
                HeightStickArraySource.HeightType,
                unmanagedArray,
                HeightStickArraySource.HeightScale,
                HeightStickArraySource.HeightRange.X,
                HeightStickArraySource.HeightRange.Y,
                FlipQuadEdges
                        )
            {
                LocalOffset   = LocalOffset + new Vector3(0, GetCenteringOffset(), 0),
                LocalRotation = LocalRotation,
                Description   = this
            };

            return(shape);
        }
예제 #2
0
 private HeightfieldDebugPrimitive(HeightfieldColliderShape heightfieldColliderShape)
 {
     heightfield = heightfieldColliderShape;
 }