⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 skidmarkmanager.java

📁 Java 3D API, 一套完整的3d引擎
💻 JAVA
字号:
import com.threed.jpct.*;

/**
 * The SkidMarkManager is responsible for drawing skidmarks when necessary.
 */
public class SkidMarkManager {

   /**
    * The maximum number of skidmarks
    */
   private final static int SKID_MARKS=180;

   /**
    * The delta between the skidmarks
    */
   private final static float SKID_DELTA=3f;

   private SkidMark[] skidmarks=new SkidMark[SKID_MARKS];
   private SimpleVector lastPos=null;
   private int nextMark=0;

   /**
    * Creates a new SkidMarkManager
    * @param world the world
    */
   public SkidMarkManager(World world) {
      for (int i=0; i<SKID_MARKS; i++) {
         skidmarks[i]=new SkidMark();
         world.addObject(skidmarks[i]);
     }
   }


   /**
    * "Creates" a skidmark behind the car. If too many skidmarks are visible, the oldest ones
    * will be removed and replaced with the new ones.
    * @param car the car that causes the skidmarks
    */
   public void createSkidMarks(Car car) {
      SimpleVector curPos=car.getTransformedCenter();
      if (lastPos!=null) {
         SimpleVector deltaPos=curPos.calcSub(lastPos);
         float delta=deltaPos.length();
         if (delta>SKID_DELTA) {
            SimpleVector addy=deltaPos;
            addy.scalarMul(SKID_DELTA/delta);
            SimpleVector sPos=new SimpleVector(lastPos);
            while (delta>SKID_DELTA) {
               sPos.add(addy);
               skidmarks[nextMark].place(-1, car, sPos);
               skidmarks[nextMark+1].place(1, car, sPos);
               nextMark+=2;
               nextMark%=SKID_MARKS;
               delta-=SKID_DELTA;
            }
            lastPos=curPos;
         }
      }
      else {
         lastPos=curPos;
      }
   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -