Java 类com.badlogic.gdx.math.Vector 实例源码

项目:gdx-cclibs    文件:BSplineSerializer.java   
@Override
public void write(Kryo kryo, Output output, BSpline bSpline) {
    Class<? extends Vector> vectorType = null;
    if (bSpline.controlPoints != null && bSpline.controlPoints.length > 0)
        vectorType = bSpline.controlPoints[0].getClass();
    else if (bSpline.knots != null && bSpline.knots.size > 0)
        vectorType = ((Vector)bSpline.knots.first()).getClass();
    kryo.writeClass(output, vectorType);
    output.writeInt(bSpline.controlPoints != null ? bSpline.controlPoints.length : -1); // -1 for null array
    if (bSpline.controlPoints != null){
        for (int i = 0; i < bSpline.controlPoints.length; i++) {
            kryo.writeObjectOrNull(output, bSpline.controlPoints[i], vectorType);
        }
    }
    kryo.writeObjectOrNull(output, bSpline.knots, Array.class);
    output.writeInt(bSpline.degree, true);
    output.writeBoolean(bSpline.continuous);
    output.writeInt(bSpline.spanCount, true);
}
项目:gdx-cclibs    文件:BSplineSerializer.java   
@Override
public BSpline read(Kryo kryo, Input input, Class<BSpline> type) {
    BSpline bSpline = new BSpline();
    Class<? extends Vector> vectorType = kryo.readClass(input).getType();
    int controlPointsLength = input.readInt();
    if (controlPointsLength >= 0){
        Vector<?>[] controlPoints = (Vector<?>[])java.lang.reflect.Array.newInstance(vectorType, controlPointsLength);
        for (int i = 0; i < controlPointsLength; i++) {
            controlPoints[i] = kryo.readObjectOrNull(input, vectorType); // vector type won't be null if control points had a length
        }
        bSpline.controlPoints = controlPoints;
    }
    bSpline.knots = kryo.readObjectOrNull(input, Array.class);
    bSpline.degree = input.readInt(true);
    bSpline.continuous = input.readBoolean();
    bSpline.spanCount = input.readInt(true);
    return bSpline;
}
项目:gdx-cclibs    文件:CatmullRomSplineSerializer.java   
@Override
public CatmullRomSpline read(Kryo kryo, Input input, Class<CatmullRomSpline> type) {
    CatmullRomSpline catmullRomSpline = new CatmullRomSpline();
    Class<? extends Vector> vectorType = kryo.readClass(input).getType();
    int controlPointsLength = input.readInt();
    if (controlPointsLength >= 0){
        Vector<?>[] controlPoints = (Vector<?>[])java.lang.reflect.Array.newInstance(vectorType, controlPointsLength);
        for (int i = 0; i < controlPointsLength; i++) {
            controlPoints[i] = kryo.readObjectOrNull(input, vectorType); // vector type won't be null if control points had a length
        }
        catmullRomSpline.controlPoints = controlPoints;
    }
    catmullRomSpline.continuous = input.readBoolean();
    catmullRomSpline.spanCount = input.readInt(true);
    return catmullRomSpline;
}
项目:zierfisch    文件:PreciseCatmullRomSpline.java   
private void calculatePrecisionPoints(T[] controlPoints, double maxDistance, Class<T> type) {
    List<Vector<T>> precisionPointsList = new ArrayList<Vector<T>>();
    precisionPointsList.add(controlPoints[1 % spanCount]);
    for (int lastPoint = 1 % spanCount; lastPoint < spanCount + 1; lastPoint++) {
        int nextPoint = lastPoint + 1;
        final T previous = controlPoints[lastPoint];
        final T next = controlPoints[nextPoint];
        final float dstNext = previous.dst(next);

        if (dstNext > maxDistance) {
            int splitLineIntoNumberOfPoints = (int) (dstNext / maxDistance);
            for (int j = 0; j < splitLineIntoNumberOfPoints - 1; j++) {
                T precisionPoint = newVector(type);
                double distanceOnSpan = maxDistance + maxDistance * j;
                valueAt(precisionPoint, lastPoint - 1, (float) distanceOnSpan / dstNext);
                precisionPointsList.add(precisionPoint);
            }
        }
        precisionPointsList.add(next);
    }

    precisionPoints = (T[]) Array.newInstance(type, precisionPointsList.size());
    precisionPoints = precisionPointsList.toArray(precisionPoints);
    precisionPointsCount = precisionPoints.length;
}
项目:gdx-cclibs    文件:CatmullRomSplineSerializer.java   
@Override
public void write(Kryo kryo, Output output, CatmullRomSpline catmullRomSpline) {
    Class<? extends Vector> vectorType = null;
    if (catmullRomSpline.controlPoints != null && catmullRomSpline.controlPoints.length > 0)
        vectorType = catmullRomSpline.controlPoints[0].getClass();
    kryo.writeClass(output, vectorType);
    output.writeInt(catmullRomSpline.controlPoints != null ? catmullRomSpline.controlPoints.length : -1); // -1 for null array
    if (catmullRomSpline.controlPoints != null){
        for (int i = 0; i < catmullRomSpline.controlPoints.length; i++) {
            kryo.writeObjectOrNull(output, catmullRomSpline.controlPoints[i], vectorType);
        }
    }
    output.writeBoolean(catmullRomSpline.continuous);
    output.writeInt(catmullRomSpline.spanCount, true);
}