Example usage for org.apache.commons.math3.geometry.euclidean.threed Vector3D getY

List of usage examples for org.apache.commons.math3.geometry.euclidean.threed Vector3D getY

Introduction

In this page you can find the example usage for org.apache.commons.math3.geometry.euclidean.threed Vector3D getY.

Prototype

public double getY() 

Source Link

Document

Get the ordinate of the vector.

Usage

From source file:org.jtrfp.trcl.Camera.java

private RealMatrix applyMatrix() {
    try {/* w  w  w . jav  a 2 s . c  om*/
        Vector3D eyeLoc = getCameraPosition();
        Vector3D aZ = getLookAtVector().negate();
        Vector3D aX = getUpVector().crossProduct(aZ).normalize();
        Vector3D aY = getUpVector();

        rotationMatrix = new Array2DRowRealMatrix(
                new double[][] { new double[] { aX.getX(), aX.getY(), aX.getZ(), 0 },
                        new double[] { aY.getX(), aY.getY(), aY.getZ(), 0 },
                        new double[] { aZ.getX(), aZ.getY(), aZ.getZ(), 0 }, new double[] { 0, 0, 0, 1 } });

        RealMatrix tM = new Array2DRowRealMatrix(new double[][] { new double[] { 1, 0, 0, -eyeLoc.getX() },
                new double[] { 0, 1, 0, -eyeLoc.getY() }, new double[] { 0, 0, 1, -eyeLoc.getZ() },
                new double[] { 0, 0, 0, 1 } });

        return completeMatrix = getProjectionMatrix().multiply(rotationMatrix.multiply(tM));
    } catch (MathArithmeticException e) {
    } //Don't crash.
    return completeMatrix;
}

From source file:org.jtrfp.trcl.core.Renderer.java

public void setSunVector(Vector3D sv) {
    factory.getDeferredProgram().use();//from  w w w. j  av  a 2 s . c o m
    factory.getSunVectorUniform().set((float) sv.getX(), (float) sv.getY(), (float) sv.getZ());
    gpu.defaultProgram();
}

From source file:org.jtrfp.trcl.core.TR.java

public static Vector3D twosComplimentSubtract(Vector3D l, Vector3D r) {
    return new Vector3D(deltaRollover(l.getX() - r.getX()), deltaRollover(l.getY() - r.getY()),
            deltaRollover(l.getZ() - r.getZ()));
}

From source file:org.jtrfp.trcl.DEFObjectPlacer.java

@Override
public void placeObjects(RenderableSpacePartitioningGrid target, Vector3D positionOffset) {
    final List<EnemyDefinition> defs = def.getEnemyDefinitions();
    final List<EnemyPlacement> places = def.getEnemyPlacements();
    final Model[] models = new Model[defs.size()];
    //final TR tr = world.getTr();
    final LoadingProgressReporter[] defReporters = rootReporter.generateSubReporters(defs.size());
    final LoadingProgressReporter[] placementReporters = rootReporter.generateSubReporters(places.size());
    for (int i = 0; i < defs.size(); i++) {
        defReporters[i].complete();/*from   w w w .  ja  va2  s .  c  o  m*/
        final int index = i;//???
        final EnemyDefinition def = defs.get(index);
        try {
            models[index] = tr.getResourceManager().getBINModel(def.getComplexModelFile(),
                    tr.getGlobalPaletteVL(), null, tr.gpu.get().getGl());
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (models[index] == null)
            System.out.println(
                    "Failed to get a model from BIN " + def.getComplexModelFile() + " at index " + index);
        final Reporter reporter = tr.getReporter();
        reporter.report("org.jtrfp.trcl.DEFObjectPlacer.def." + defs.get(i).getDescription().replace('.', ' ')
                + ".complexModelFile", defs.get(i).getComplexModelFile());
        reporter.report("org.jtrfp.trcl.DEFObjectPlacer.def." + defs.get(i).getDescription().replace('.', ' ')
                + ".logic", defs.get(i).getLogic());
        reporter.report("org.jtrfp.trcl.DEFObjectPlacer.def." + defs.get(i).getDescription().replace('.', ' ')
                + ".simpleModelFile", defs.get(i).getSimpleModel());
    } //end for(i:defs)
    int placementReporterIndex = 0;
    for (EnemyPlacement pl : places) {
        placementReporters[placementReporterIndex++].complete();
        Model model = models[pl.getDefIndex()];
        if (model != null) {
            final EnemyDefinition def = defs.get(pl.getDefIndex());
            final DEFObject obj = new DEFObject(tr, model, def, pl);
            if (defList != null)
                defList.add(obj);
            if (def.isShowOnBriefing() && !enemyPlacementMap.containsKey(def)) {
                enemyPlacementMap.put(def, obj);
            } //end 
            //USING  z,x coords
            final double[] objPos = obj.getPosition();
            objPos[0] = TR.legacy2Modern(pl.getLocationOnMap().getZ()) + positionOffset.getX();
            objPos[1] = (TR.legacy2Modern(pl.getLocationOnMap().getY()) / TR.mapWidth) * 16.
                    * tr.getWorld().sizeY + positionOffset.getY();
            objPos[2] = TR.legacy2Modern(pl.getLocationOnMap().getX()) + positionOffset.getZ();
            obj.notifyPositionChange();

            if (def.getLogic() == EnemyLogic.groundStaticRuin) {
                //Spawn a second, powerup-free model using the simplemodel
                Model simpleModel = null;
                try {
                    simpleModel = tr.getResourceManager().getBINModel(def.getSimpleModel(),
                            tr.getGlobalPaletteVL(), null, tr.gpu.get().getGl());
                } catch (Exception e) {
                    e.printStackTrace();
                }
                EnemyDefinition ed = new EnemyDefinition();
                ed.setLogic(EnemyLogic.groundDumb);
                ed.setDescription("auto-generated enemy rubble def");
                ed.setPowerupProbability(0);
                EnemyPlacement simplePlacement = pl.clone();
                final DEFObject ruin = new DEFObject(tr, simpleModel, ed, simplePlacement);
                ruin.setVisible(false);
                ruin.setIsRuin(true);
                obj.setRuinObject(ruin);
                ruin.setPosition(obj.getPosition());
                try {
                    ruin.setDirection(new ObjectDirection(pl.getRoll(), pl.getPitch(), pl.getYaw() + 65536));
                } catch (MathArithmeticException e) {
                    e.printStackTrace();
                }
                target.add(ruin);
            } //end if(groundStaticRuin)
            if (pl.getRoll() != 0 || pl.getPitch() != 0 || pl.getYaw() != 0)//Only set if not 0,0,0
                try {
                    obj.setDirection(new ObjectDirection(pl.getRoll(), pl.getPitch(), pl.getYaw() + 65536));
                } catch (MathArithmeticException e) {
                    e.printStackTrace();
                }
            if (headingOverride != null) {
                final double[] headingArray = obj.getHeadingArray();
                headingArray[0] = headingOverride.getX();
                headingArray[1] = headingOverride.getY();
                headingArray[2] = headingOverride.getZ();
            } //end if(headingOverride)
            target.add(obj);
        } //end if(model!=null)
        else {
            System.out.println("Skipping triangle list at index " + pl.getDefIndex());
        }
    } //end for(places)
    for (EnemyDefinition ed : enemyPlacementMap.keySet()) {
        enemyIntros.add(new EnemyIntro(enemyPlacementMap.get(ed), ed.getDescription()));
    }
}

From source file:org.jtrfp.trcl.LineSegment.java

public static Triangle[] buildTriPipe(Vector3D start, Vector3D end, TextureDescription texture, int thickness,
        Triangle[] dest, int destOffset) {
    Rotation rot = new Rotation(Vector3D.PLUS_K, end.subtract(start).normalize());
    final double len = start.distance(end);
    // Start// ww  w . j a  v a2s.  c o m
    Vector3D sbl = new Vector3D(-thickness, -thickness, 0);// bottom left
    Vector3D sbr = new Vector3D(thickness, -thickness, 0);// bottom right
    Vector3D stp = new Vector3D(0, thickness, 0);
    // End
    Vector3D ebl = new Vector3D(-thickness, -thickness, len);
    Vector3D ebr = new Vector3D(thickness, -thickness, len);
    Vector3D etp = new Vector3D(0, thickness, len);

    Vector3D cl = new Vector3D(-1, 1, 0).normalize();
    Vector3D cr = new Vector3D(1, 1, 0).normalize();
    Vector3D cb = new Vector3D(0, -1, 0);

    cl = rot.applyTo(cl);
    cr = rot.applyTo(cr);
    cb = rot.applyTo(cb);

    sbl = rot.applyTo(sbl).add(start);
    sbr = rot.applyTo(sbr).add(start);
    stp = rot.applyTo(stp).add(start);

    ebl = rot.applyTo(ebl).add(start);
    ebr = rot.applyTo(ebr).add(start);
    etp = rot.applyTo(etp).add(start);

    final double u[] = { 0, 1, 1, 0 };
    final double v[] = { 1, 1, 0, 0 };
    // TOP LEFT
    Triangle.quad2Triangles(new double[] { sbl.getX(), stp.getX(), etp.getX(), ebl.getX() },
            new double[] { sbl.getY(), stp.getY(), etp.getY(), ebl.getY() },
            new double[] { sbl.getZ(), stp.getZ(), etp.getZ(), ebl.getZ() }, u, v, texture, RenderMode.STATIC,
            false, cl, dest, destOffset, "LineSegment.topLeft");
    // TOP RIGHT
    Triangle.quad2Triangles(new double[] { sbr.getX(), stp.getX(), etp.getX(), ebr.getX() },
            new double[] { sbr.getY(), stp.getY(), etp.getY(), ebr.getY() },
            new double[] { sbr.getZ(), stp.getZ(), etp.getZ(), ebr.getZ() }, u, v, texture, RenderMode.STATIC,
            false, cr, dest, destOffset + 2, "LineSegment.topRight");
    // BOTTOM
    Triangle.quad2Triangles(new double[] { sbl.getX(), sbr.getX(), ebr.getX(), ebl.getX() },
            new double[] { sbl.getY(), sbr.getY(), ebr.getY(), ebl.getY() },
            new double[] { sbr.getZ(), sbr.getZ(), ebr.getZ(), ebl.getZ() }, u, v, texture, RenderMode.STATIC,
            false, cb, dest, destOffset + 4, "LineSegment.bottom");
    return dest;
}

From source file:org.jtrfp.trcl.obj.Explosion.java

public Explosion(TR tr, ExplosionType type) {
    super(tr, type.getMillisPerFrame(), type.getAnimationFiles().length);
    final Vector3D origin = type.getOrigin();
    this.setModelOffset(origin.getX() * type.getBillboardSize().getWidth() * -.5,
            origin.getY() * type.getBillboardSize().getHeight() * -.5, origin.getZ());
    this.type = type;
    setBillboardSize(type.getBillboardSize());
    if (type.isRandomRotate())
        setRotation(2 * Math.PI * Math.random());
    String[] aniFiles = type.getAnimationFiles();
    Texture[] frames = new Texture[aniFiles.length];
    try {/*from   ww  w .  java2 s . c  o  m*/
        for (int i = 0; i < aniFiles.length; i++) {
            frames[i] = frame(aniFiles[i]);
        }
    } //end try{}
    catch (Exception e) {
        e.printStackTrace();
    }
    setTexture(new AnimatedTexture(getSequencer(), frames), true);
}

From source file:org.jtrfp.trcl.obj.ExplosionSystem.java

public Explosion triggerExplosion(Vector3D loc, ExplosionType type) {
    if (!isNewExplosionFeasible(loc, type))
        return null;
    indices[type.ordinal()]++;//from   w  w w. j av  a2  s  . c  om
    indices[type.ordinal()] %= MAX_EXPLOSIONS_PER_POOL;
    Explosion result = allExplosions[type.ordinal()][indices[type.ordinal()]];
    result.destroy();
    result.reset();
    result.setPosition(loc.getX(), loc.getY(), loc.getZ());
    result.notifyPositionChange();
    final SmokeSystem sf = tr.getResourceManager().getSmokeSystem();
    final int NUM_PUFFS = 1;

    for (int i = 0; i < NUM_PUFFS; i++) {
        sf.triggerSmoke(loc.add(new Vector3D(Math.random() * 10000 - 5000, Math.random() * 10000 - 5000,
                Math.random() * 10000 - 5000)), SmokeType.Puff);
    } //end for(i)

    add(result);
    return result;
}

From source file:org.jtrfp.trcl.obj.TunnelSegment.java

private static Model createModel(Segment s, double segLen, TextureDescription[] tunnelTexturePalette,
        double endX, double endY, final TR tr) {
    Model mainModel = new Model(true, tr);
    mainModel.setDebugName("tunnelSegment main.");
    final int numPolys = s.getNumPolygons();
    double startWidth = getStartWidth(s);
    double startHeight = getStartHeight(s);
    double endWidth = getEndWidth(s);
    double endHeight = getEndHeight(s);
    final FlickerLightType lightType = s.getFlickerLightType();
    // TODO: Cleanup.
    final double startAngle1 = ((double) s.getStartAngle1() / 65535.) * 2. * Math.PI;
    final double startAngle2 = ((double) s.getStartAngle2() / 65535.) * 2. * Math.PI;
    final double startAngle = startAngle1;
    final double endAngle1 = ((double) s.getEndAngle1() / 65535.) * 2. * Math.PI;
    final double endAngle2 = ((double) s.getEndAngle2() / 65535.) * 2. * Math.PI;
    double endAngle = endAngle1;
    final double dAngleStart = (startAngle2 - startAngle1) / (double) numPolys;
    final double dAngleEnd = (endAngle2 - endAngle1) / (double) numPolys;
    final double startX = 0;
    final double startY = 0;
    final double zStart = 0;
    final double zEnd = segLen;
    final int numPolygonsMinusOne = s.getNumPolygons() - 1;
    final int lightPoly = s.getLightPolygon();
    final boolean hasLight = lightPoly != -1;
    if (hasLight) {
        mainModel.setAnimateUV(true);//from   w w  w.j av  a  2 s.c  o  m
        mainModel.setSmoothAnimation(false);
        if (lightType == FlickerLightType.noLight) {
            //Do nothing.
        } else if (lightType == FlickerLightType.off1p5Sec) {
            mainModel.setController(new Controller() {
                private final int off = (int) (Math.random() * 2000);

                @Override
                public double getCurrentFrame() {
                    return (off + System.currentTimeMillis() % 2000) > 1500 ? 1 : 0;
                }

                @Override
                public void setDebugMode(boolean b) {
                    //Not implemented.
                }
            });
        } else if (lightType == FlickerLightType.on1p5Sec) {
            mainModel.setController(new Controller() {
                private final int off = (int) (Math.random() * 2000);

                @Override
                public double getCurrentFrame() {
                    return (off + System.currentTimeMillis() % 2000) < 1500 ? 1 : 0;
                }

                @Override
                public void setDebugMode(boolean b) {
                    //Not implemented.
                }
            });
        } else if (lightType == FlickerLightType.on1Sec) {
            mainModel.setController(new Controller() {
                private final int off = (int) (Math.random() * 2000);

                @Override
                public double getCurrentFrame() {
                    return (off + System.currentTimeMillis() % 2000) > 1000 ? 1 : 0;
                }

                @Override
                public void setDebugMode(boolean b) {
                    //Not implemented.
                }
            });
        }
    } //end (has light)
    final double[] noLightU = new double[] { 1, 1, 0, 0 };
    final double[] noLightV = new double[] { 0, 1, 1, 0 };
    final double[] lightOffU = new double[] { 1, 1, .5, .5 };
    final double[] lightOffV = new double[] { .5, 1, 1, .5 };
    final double[] lightOnU = new double[] { .5, .5, 0, 0 };
    final double[] lightOnV = new double[] { .5, 1, 1, .5 };

    double rotPeriod = (1000. * 32768.) / (double) s.getRotationSpeed();
    final boolean reverseDirection = rotPeriod < 0;
    if (reverseDirection)
        rotPeriod *= -1;
    final int numFramesIfRotating = 30;
    final int numFramesIfStatic = 2;
    final boolean isRotating = !Double.isInfinite(rotPeriod);
    int numAnimFrames = isRotating ? numFramesIfRotating : numFramesIfStatic;
    if (isRotating)
        mainModel.setFrameDelayInMillis((int) (rotPeriod / (numAnimFrames)));
    final double animationDeltaRadians = isRotating
            ? ((reverseDirection ? 1 : -1) * (2 * Math.PI) / (double) numAnimFrames)
            : 0;
    //FRAME LOOP
    for (int frameIndex = 0; frameIndex < numAnimFrames; frameIndex++) {
        final Model m = new Model(false, tr);
        m.setDebugName("TunnelSegment frame " + frameIndex + " of " + numAnimFrames);
        final double frameAngleDeltaRadians = animationDeltaRadians * (double) frameIndex;
        double frameStartAngle = startAngle + frameAngleDeltaRadians;
        double frameEndAngle = endAngle + frameAngleDeltaRadians;
        final double frameStartAngle1 = startAngle1 + frameAngleDeltaRadians;
        final double frameStartAngle2 = startAngle2 + frameAngleDeltaRadians;
        final double frameEndAngle1 = endAngle + frameAngleDeltaRadians;
        double[] thisU = noLightU, thisV = noLightV;//Changeable u/v references, default to noLight
        // Poly quads
        for (int pi = 0; pi < numPolygonsMinusOne; pi++) {
            Vector3D p0 = segPoint(frameStartAngle, zStart, startWidth, startHeight, startX, startY);
            Vector3D p1 = segPoint(frameEndAngle, zEnd, endWidth, endHeight, endX, endY);
            Vector3D p2 = segPoint(frameEndAngle + dAngleEnd, zEnd, endWidth, endHeight, endX, endY);
            Vector3D p3 = segPoint(frameStartAngle + dAngleStart, zStart, startWidth, startHeight, startX,
                    startY);

            TextureDescription tex = tunnelTexturePalette[s.getPolyTextureIndices().get(pi)];

            if (pi == lightPoly && lightType != FlickerLightType.noLight) {
                if (frameIndex == 0) {
                    thisU = lightOnU;
                    thisV = lightOnV;
                } else {
                    thisU = lightOffU;
                    thisV = lightOffV;
                }
                /*try {
                            
                    final int flickerThresh = flt == FlickerLightType.off1p5Sec ? (int) (-.3 * (double) Integer.MAX_VALUE)
                       : flt == FlickerLightType.on1p5Sec ? (int) (.4 * (double) Integer.MAX_VALUE)
                          : flt == FlickerLightType.on1Sec ? (int) (.25 * (double) Integer.MAX_VALUE)
                             : Integer.MAX_VALUE;
                        
                    m.addTickableAnimator(new Tickable() {
                   @Override
                   public void tick() {
                       if (flickerRandom.transfer(Math.abs((int) System
                          .currentTimeMillis())) > flickerThresh)
                      st.setFrame(1);
                       else
                      st.setFrame(0);
                   }
                           
                    });
                } catch (Exception e) {
                    e.printStackTrace();
                }*/
            } else {
                thisU = noLightU;
                thisV = noLightV;
            } // No light

            m.addTriangles(Triangle.quad2Triangles(new double[] { p3.getX(), p2.getX(), p1.getX(), p0.getX() },
                    new double[] { p3.getY(), p2.getY(), p1.getY(), p0.getY() },
                    new double[] { p3.getZ(), p2.getZ(), p1.getZ(), p0.getZ() }, thisU, thisV, tex,
                    RenderMode.DYNAMIC,
                    new Vector3D[] {
                            new Vector3D(Math.cos(frameStartAngle + dAngleStart),
                                    -Math.sin(frameStartAngle + dAngleStart), 0),
                            new Vector3D(Math.cos(frameEndAngle + dAngleEnd),
                                    -Math.sin(frameEndAngle + dAngleEnd), 0),
                            new Vector3D(Math.cos(frameEndAngle), -Math.sin(frameEndAngle), 0),
                            new Vector3D(Math.cos(frameStartAngle), -Math.sin(frameStartAngle), 0) },
                    0));
            frameStartAngle += dAngleStart;
            frameEndAngle += dAngleEnd;
        } // for(polygons)
        if (s.isCutout()) {
            // The slice quad
            // INWARD
            Vector3D p0 = segPoint(frameStartAngle, zStart, startWidth, startHeight, startX, startY);
            Vector3D p1 = segPoint(frameEndAngle, zEnd, endWidth, endHeight, endX, endY);
            Vector3D p2 = segPoint(frameEndAngle1, zEnd, 0, 0, endX, endY);
            Vector3D p3 = segPoint(frameStartAngle1, zStart, 0, 0, startX, startY);
            m.addTriangles(Triangle.quad2Triangles(new double[] { p3.getX(), p2.getX(), p1.getX(), p0.getX() },
                    new double[] { p3.getY(), p2.getY(), p1.getY(), p0.getY() },
                    new double[] { p3.getZ(), p2.getZ(), p1.getZ(), p0.getZ() },

                    new double[] { 1, 1, 0, 0 }, new double[] { 0, 1, 1, 0 },
                    tunnelTexturePalette[s.getPolyTextureIndices().get(numPolygonsMinusOne)],
                    RenderMode.DYNAMIC,
                    new Vector3D[] {
                            new Vector3D(Math.cos(frameStartAngle + dAngleStart),
                                    -Math.sin(frameStartAngle + dAngleStart), 0),
                            new Vector3D(Math.cos(frameEndAngle + dAngleEnd),
                                    -Math.sin(frameEndAngle + dAngleEnd), 0),
                            new Vector3D(Math.cos(frameEndAngle), -Math.sin(frameEndAngle), 0),
                            new Vector3D(Math.cos(frameStartAngle), -Math.sin(frameStartAngle), 0) },
                    0));
            // OUTWARD
            p3 = segPoint(frameStartAngle1, zStart, startWidth, startHeight, startX, startY);
            p2 = segPoint(frameEndAngle1, zEnd, endWidth, endHeight, endX, endY);
            p1 = segPoint(frameEndAngle1, zEnd, 0, 0, endX, endY);
            p0 = segPoint(frameStartAngle1, zStart, 0, 0, startX, startY);
            m.addTriangles(Triangle.quad2Triangles(new double[] { p3.getX(), p2.getX(), p1.getX(), p0.getX() },
                    new double[] { p3.getY(), p2.getY(), p1.getY(), p0.getY() },
                    new double[] { p3.getZ(), p2.getZ(), p1.getZ(), p0.getZ() },

                    new double[] { 1, 1, 0, 0 }, new double[] { 0, 1, 1, 0 },
                    tunnelTexturePalette[s.getPolyTextureIndices().get(numPolygonsMinusOne)],
                    RenderMode.DYNAMIC,
                    new Vector3D[] {
                            new Vector3D(Math.cos(frameStartAngle + dAngleStart),
                                    -Math.sin(frameStartAngle + dAngleStart), 0),
                            new Vector3D(Math.cos(frameEndAngle + dAngleEnd),
                                    -Math.sin(frameEndAngle + dAngleEnd), 0),
                            new Vector3D(Math.cos(frameEndAngle), -Math.sin(frameEndAngle), 0),
                            new Vector3D(Math.cos(frameStartAngle), -Math.sin(frameStartAngle), 0) },
                    0));
        } else {
            // The slice quad
            Vector3D p0 = segPoint(frameStartAngle, zStart, startWidth, startHeight, startX, startY);
            Vector3D p1 = segPoint(frameEndAngle, zEnd, endWidth, endHeight, endX, endY);
            Vector3D p2 = segPoint(frameEndAngle1, zEnd, endWidth, endHeight, endX, endY);
            Vector3D p3 = segPoint(frameStartAngle1, zStart, startWidth, startHeight, startX, startY);
            m.addTriangles(Triangle.quad2Triangles(new double[] { p3.getX(), p2.getX(), p1.getX(), p0.getX() },
                    new double[] { p3.getY(), p2.getY(), p1.getY(), p0.getY() },
                    new double[] { p3.getZ(), p2.getZ(), p1.getZ(), p0.getZ() },

                    new double[] { 1, 1, 0, 0 }, new double[] { 0, 1, 1, 0 },
                    tunnelTexturePalette[s.getPolyTextureIndices().get(numPolygonsMinusOne)],
                    RenderMode.DYNAMIC,
                    new Vector3D[] {
                            new Vector3D(Math.cos(frameStartAngle + dAngleStart),
                                    -Math.sin(frameStartAngle + dAngleStart), 0),
                            new Vector3D(Math.cos(frameEndAngle + dAngleEnd),
                                    -Math.sin(frameEndAngle + dAngleEnd), 0),
                            new Vector3D(Math.cos(frameEndAngle), -Math.sin(frameEndAngle), 0),
                            new Vector3D(Math.cos(frameStartAngle), -Math.sin(frameStartAngle), 0) },
                    0));
        } //end !cutout
          //if(numAnimFrames!=1)//Push frame if animated.
        mainModel.addFrame(m);
    } //end for(frames)
    return mainModel;
}

From source file:org.jtrfp.trcl.obj.WorldObject.java

protected void attemptLoop() {
    if (LOOP) {/*w w  w.ja va2 s. c  om*/
        final Vector3D camPos = tr.mainRenderer.get().getCamera().getCameraPosition();
        double delta = position[0] - camPos.getX();
        if (delta > TR.mapWidth / 2.) {
            position[0] -= TR.mapWidth;
            needToRecalcMatrix = true;
        } else if (delta < -TR.mapWidth / 2.) {
            position[0] += TR.mapWidth;
            needToRecalcMatrix = true;
        }
        delta = position[1] - camPos.getY();
        if (delta > TR.mapWidth / 2.) {
            position[1] -= TR.mapWidth;
            needToRecalcMatrix = true;
        } else if (delta < -TR.mapWidth / 2.) {
            position[1] += TR.mapWidth;
            needToRecalcMatrix = true;
        }
        delta = position[2] - camPos.getZ();
        if (delta > TR.mapWidth / 2.) {
            position[2] -= TR.mapWidth;
            needToRecalcMatrix = true;
        } else if (delta < -TR.mapWidth / 2.) {
            position[2] += TR.mapWidth;
            needToRecalcMatrix = true;
        }
    } //end if(LOOP)
}

From source file:org.jtrfp.trcl.obj.WorldObject.java

/**
 * @param heading//from www  .j a  v  a  2s  . c  o m
 *            the heading to set
 */
public synchronized void setHeading(Vector3D nHeading) {
    heading[0] = nHeading.getX();
    heading[1] = nHeading.getY();
    heading[2] = nHeading.getZ();
    needToRecalcMatrix = true;
}