亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? roadunit.java

?? 這是一個Micro3D的學習代碼
?? JAVA
字號:
import javax.microedition.lcdui.game.*;
import javax.microedition.lcdui.*;
import java.io.*;
import java.lang.*;
import com.mascotcapsule.micro3d.v3.*;

/*
  Road unit consist of floor (triangle) and a side border.
  Triangle is simply so we have our road drawn and side is so we do not fall out
  of the road (visible obstacle).
  Side border has a normal vector pointing towards inside of a road.
  It has also two points at the begining and its end (these points basically 
  sets side's borders).
*/
public class RoadUnit
{
  private int mMapPosition = -1;    // this unit position in map array

  public int[] refVertTri;      // reference to triangle array definition
  public int[] refVertSide;     // reference to side border array definition

  public Obstacle triangle;     // road's triangle element (flor object)
  public Obstacle side;         // road's side (border) element

  // normal of side's border towards inside of track, used for colisions
  public Vector3D sideNorm = new Vector3D(0, 0, 0);
  // "begin" corner point of unit's side border
  public Vector3D pointB = new Vector3D(0, 0, 0);
  // "end" corner point of unit's side border
  public Vector3D pointE = new Vector3D(0, 0, 0);

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//                             FUNCTIONS                                     //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

  public int getMapPosition()   { return mMapPosition; }

  public RoadUnit(int aType, int aMapPosition,
                  int aPosX, int aPosY, 
                  int aWidth, int aHeight,
                  AffineTrans aCamTrans, AffineTrans aTmpAT)
  {
    mMapPosition = aMapPosition;

    int rotZ = 0;
    int sideOffsetX = 0;
    int sideOffsetY = 0;

    // aPosX, aPosY - coordinates of triangle.
    // Unit's side element has to be moved so it is placed along the triangle side,
    // therefore move it with half of triangle width/height. Since side has its 
    // tickness, it has to be moved also by half of this tickness value.
    // Collision points are placed at both ends of side, and moved also by a vector
    // (half of car's width) so car does not penetrate it the border much on colision.
    switch(aType)
    {
      case 0: // side: short, left; triangle: down-right
        // set reference to proper triangle definition
        refVertTri = RoadDef.mVertTriDnR;
        // set reference to proper side border definition
        refVertSide = RoadDef.mVertSideShort;
        // set initial side border rotation
        rotZ = -1024;
        // offset for the side border position, so it is aligned nicely to the road triangle
        sideOffsetX = -RoadDef.KSize-RoadDef.KSm;
        // definition of points that constitutes sides points used as borders
        // in car-side colision detection
        pointB.x = aPosX - RoadDef.KSize + RoadDef.KCarHalf;
        pointB.y = aPosY + RoadDef.KSize + RoadDef.KCarHalf;
        pointE.x = aPosX - RoadDef.KSize + RoadDef.KCarHalf;
        pointE.y = aPosY - RoadDef.KSize - RoadDef.KCarHalf;
        break;
      case 1: // side: short, right; triangle: up-left
        refVertTri = RoadDef.mVertTriUpL;
        refVertSide = RoadDef.mVertSideShort;
        rotZ = 1024;
        sideOffsetX = RoadDef.KSize+RoadDef.KSm;
        pointB.x = aPosX + RoadDef.KSize - RoadDef.KCarHalf;
        pointB.y = aPosY - RoadDef.KSize - RoadDef.KCarHalf;
        pointE.x = aPosX + RoadDef.KSize - RoadDef.KCarHalf;
        pointE.y = aPosY + RoadDef.KSize + RoadDef.KCarHalf;
        break;
      case 2: // side: short, up; triangle: up-right
        refVertTri = RoadDef.mVertTriUpR;
        refVertSide = RoadDef.mVertSideShort;
        rotZ = -2048;
        sideOffsetY = RoadDef.KSize+RoadDef.KSm;
        pointB.x = aPosX + RoadDef.KSize + RoadDef.KCarHalf;
        pointB.y = aPosY + RoadDef.KSize - RoadDef.KCarHalf;
        pointE.x = aPosX - RoadDef.KSize - RoadDef.KCarHalf;
        pointE.y = aPosY + RoadDef.KSize - RoadDef.KCarHalf;
        break;
      case 3: // side: short, down; triangle: down-left
        refVertTri = RoadDef.mVertTriDnL;
        refVertSide = RoadDef.mVertSideShort;
        rotZ = 0;
        sideOffsetY = -RoadDef.KSize-RoadDef.KSm;
        pointB.x = aPosX - RoadDef.KSize - RoadDef.KCarHalf;
        pointB.y = aPosY - RoadDef.KSize + RoadDef.KCarHalf;
        pointE.x = aPosX + RoadDef.KSize + RoadDef.KCarHalf;
        pointE.y = aPosY - RoadDef.KSize + RoadDef.KCarHalf;
        break;
      case 4: // side: long, right-down; triangle: up-right
        refVertTri = RoadDef.mVertTriUpR;
        refVertSide = RoadDef.mVertSideLong;
        rotZ = 512;
        sideOffsetX = RoadDef.KOff;
        sideOffsetY = -RoadDef.KOff;
        pointB.x = aPosX - RoadDef.KSize - RoadDef.KCarHalf;
        pointB.y = aPosY - RoadDef.KSize;
        pointE.x = aPosX + RoadDef.KSize;
        pointE.y = aPosY + RoadDef.KSize + RoadDef.KCarHalf;
        break;
      case 5: // side: long, up-left; triangle: down-left
        refVertTri = RoadDef.mVertTriDnL;
        refVertSide = RoadDef.mVertSideLong;
        rotZ = -1536;
        sideOffsetX = - RoadDef.KOff;
        sideOffsetY = RoadDef.KOff;
        pointB.x = aPosX + RoadDef.KSize + RoadDef.KCarHalf;
        pointB.y = aPosY + RoadDef.KSize;
        pointE.x = aPosX - RoadDef.KSize;
        pointE.y = aPosY - RoadDef.KSize - RoadDef.KCarHalf;
        break;
      case 6: // side: long, down-left; triangle: up-left
        refVertTri = RoadDef.mVertTriUpL;
        refVertSide = RoadDef.mVertSideLong;
        rotZ = -512;
        sideOffsetX = -RoadDef.KOff;
        sideOffsetY = -RoadDef.KOff;
        pointB.x = aPosX - RoadDef.KSize;
        pointB.y = aPosY + RoadDef.KSize + RoadDef.KCarHalf;
        pointE.x = aPosX + RoadDef.KSize + RoadDef.KCarHalf;
        pointE.y = aPosY - RoadDef.KSize;
        break;
      case 7: // side: long, up-right; triangle: down-right
        refVertTri = RoadDef.mVertTriDnR;
        refVertSide = RoadDef.mVertSideLong;
        rotZ = 1536;
        sideOffsetX = RoadDef.KOff;
        sideOffsetY = RoadDef.KOff;
        pointB.x = aPosX + RoadDef.KSize;
        pointB.y = aPosY - RoadDef.KSize - RoadDef.KCarHalf;
        pointE.x = aPosX - RoadDef.KSize - RoadDef.KCarHalf;
        pointE.y = aPosY + RoadDef.KSize;
        break;
    }
    triangle = new Obstacle( aPosX, aPosY, RoadDef.KDistance, 
                             0, 0, 0, aWidth, aHeight, aCamTrans, aTmpAT);

    side = new Obstacle( aPosX+sideOffsetX, aPosY+sideOffsetY, RoadDef.KDistance,
                         0, 0, rotZ, aWidth, aHeight, aCamTrans, aTmpAT);

    // set vector from pointB to pointE
    sideNorm = new Vector3D( pointE.x - pointB.x, pointE.y - pointB.y, 0);
    // set vector from pointB to pointE(moved down on Z)
    Vector3D tmp = new Vector3D( pointE.x - pointB.x, pointE.y - pointB.y, -10);
    // set vector perpendicular to these
    sideNorm.outerProduct(tmp);
    // normalize it to 1 (1 is 4096 in Mascot Capsule)
    sideNorm.unit();
/*
    System.out.println("Type: "+aType+" TRIPos X: "+aPosX+" Y: "+aPosY+
                       " SIDE X:"+(aPosX+sideOffsetX)+" Y:"+(aPosY+sideOffsetY));
    System.out.println("NormVect X: "+sideNorm.x+" Y: "+sideNorm.y+" Z:"+sideNorm.z);
    System.out.println("BEB X:"+pointB.x+" Y:"+pointB.y+" END X:"+pointE.x+" Y:"+pointE.y);
    System.out.println("// -------------------------------------------- //");
*/
  }

  public void updateCamPosition(AffineTrans aCamTrans, AffineTrans tmpAT)
  {
    triangle.updateCamPosition(aCamTrans, tmpAT);
    side.updateCamPosition(aCamTrans, tmpAT);
  }

  // check based on its position, if this unit is visible on the screen
  public boolean isVisible(int aCurrX, int aCurrY, int aOut)
  {
    int diffX = aCurrX - triangle.move.m03;
    int diffY = aCurrY - triangle.move.m13;
    if( diffX > aOut )
      return false;
    if( diffX < -aOut )
       return false;
    if( diffY > aOut )
        return false;
    if(diffY < -aOut )
      return false;
    return true;
  }

}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产乱码久久久久久图片 | 99国产精品久久久久久久久久 | 不卡在线视频中文字幕| 久久久久久9999| 奇米精品一区二区三区在线观看一 | 亚洲欧美另类小说视频| 色综合 综合色| 亚洲大片在线观看| 欧美一区二区美女| 国产激情视频一区二区在线观看| wwww国产精品欧美| 成人精品免费看| 亚洲已满18点击进入久久| 欧美日韩午夜在线| 国产一区二区不卡在线| 亚洲女同女同女同女同女同69| 欧洲一区二区av| 久久精品国产亚洲高清剧情介绍| 国产片一区二区三区| 欧美性一区二区| 国产在线一区观看| 一区二区三区欧美| 欧美一区二区在线播放| 日本aⅴ亚洲精品中文乱码| 欧美成人一区二区三区片免费| 丁香亚洲综合激情啪啪综合| 亚洲人成影院在线观看| 欧美一区二区三区精品| 懂色中文一区二区在线播放| 夜夜亚洲天天久久| 国产日韩欧美精品一区| 欧美性受极品xxxx喷水| 日本福利一区二区| 免费观看日韩av| 国产精品久久久久久久裸模| 在线播放一区二区三区| 成人免费视频视频在线观看免费 | 激情亚洲综合在线| 亚洲欧美日韩国产另类专区| 久久影院午夜片一区| 在线视频中文字幕一区二区| 国产一区二区调教| 午夜精品久久久久久久久久久| 8x8x8国产精品| 国产精品99久久久| 午夜av一区二区三区| 欧美国产一区视频在线观看| 日韩欧美亚洲国产另类| 欧美在线观看视频在线| 菠萝蜜视频在线观看一区| 美女视频免费一区| 香蕉乱码成人久久天堂爱免费| 国产精品免费人成网站| 日韩免费看网站| 欧美挠脚心视频网站| 97成人超碰视| 成人白浆超碰人人人人| 国产成人在线观看| 久久69国产一区二区蜜臀| 婷婷一区二区三区| 亚洲综合在线观看视频| 亚洲男人都懂的| 日韩伦理免费电影| 国产精品美女久久福利网站| 久久综合九色综合欧美98| 欧美va亚洲va香蕉在线| 欧美一二区视频| 欧美一级高清片在线观看| 欧美在线看片a免费观看| 色偷偷88欧美精品久久久| a4yy欧美一区二区三区| 97久久超碰国产精品电影| av不卡一区二区三区| av在线不卡免费看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 亚洲电影你懂得| 亚洲一区中文日韩| 亚洲自拍偷拍网站| 亚洲成人av中文| 香蕉加勒比综合久久| 午夜精品一区二区三区三上悠亚| 亚洲人精品午夜| 亚洲综合久久av| 日韩av在线发布| 美女国产一区二区三区| 国产在线国偷精品免费看| 国产精品一线二线三线精华| 国产不卡视频一区| 99视频超级精品| 欧美性高清videossexo| 日韩一区二区三区高清免费看看| 欧美一区二区三区人| 国产午夜亚洲精品理论片色戒 | 91激情在线视频| 欧美日本一区二区在线观看| 日韩精品专区在线影院观看| 2021中文字幕一区亚洲| 18涩涩午夜精品.www| 一区二区不卡在线播放| 蜜臀av一区二区| 福利一区二区在线| 在线观看欧美黄色| 精品国产免费一区二区三区香蕉| 国产精品色在线观看| 亚洲综合在线五月| 国产麻豆精品theporn| 91亚洲精品久久久蜜桃网站 | 色婷婷av一区二区三区大白胸| 欧美亚洲日本国产| 日韩无一区二区| 国产精品视频观看| 亚洲3atv精品一区二区三区| 国产又粗又猛又爽又黄91精品| 99这里只有精品| 日韩一区二区不卡| 亚洲婷婷在线视频| 精品一区二区影视| 91九色最新地址| 久久久www免费人成精品| 亚洲一区中文在线| 成人精品亚洲人成在线| 91精品国产91久久久久久最新毛片| 国产午夜亚洲精品理论片色戒| 亚洲第一成人在线| 成人激情午夜影院| 欧美电影免费观看高清完整版在 | 老司机精品视频一区二区三区| 不卡一二三区首页| 欧美成人vr18sexvr| 亚洲综合一区二区三区| 国产福利一区二区三区视频在线| 欧美日韩国产高清一区二区| 欧美国产丝袜视频| 捆绑紧缚一区二区三区视频| 色八戒一区二区三区| 中文字幕av不卡| 久久精品免费观看| 欧美日韩免费一区二区三区视频| 国产精品伦一区二区三级视频| 蜜臀av性久久久久蜜臀av麻豆| 色综合久久88色综合天天 | 色综合久久天天| 国产人伦精品一区二区| 麻豆一区二区三| 91精品国产麻豆国产自产在线| 亚洲天堂中文字幕| 成人国产一区二区三区精品| 精品日韩欧美在线| 日韩精品色哟哟| 欧美日韩不卡视频| 亚洲成人1区2区| 91高清视频在线| 亚洲卡通欧美制服中文| 99这里都是精品| 国产精品久久久久aaaa| 国产91富婆露脸刺激对白| 久久人人爽爽爽人久久久| 男男gaygay亚洲| 91精品在线免费观看| 视频一区二区中文字幕| 精品视频在线免费看| 亚洲已满18点击进入久久| 欧洲亚洲国产日韩| 亚洲丶国产丶欧美一区二区三区| 欧洲一区二区三区免费视频| 一区二区视频在线看| 91福利精品视频| 亚洲国产精品久久人人爱蜜臀 | 日韩一区二区三区免费观看| 日韩高清不卡在线| 69p69国产精品| 老汉av免费一区二区三区| 欧美成人一区二区| 国产精品一区二区不卡| 国产精品无遮挡| 97精品久久久午夜一区二区三区| 亚洲精品久久久久久国产精华液| 色先锋aa成人| 首页欧美精品中文字幕| 日韩欧美一级在线播放| 国产精品资源站在线| 亚洲国产精品黑人久久久| 91免费看`日韩一区二区| 亚洲成年人影院| 精品福利视频一区二区三区| 成人自拍视频在线| 一区二区国产视频| 欧美电影免费观看高清完整版在| 国产乱淫av一区二区三区| 欧美激情一区不卡| 在线观看av不卡| 另类小说色综合网站| 国产精品免费丝袜| 欧美性大战xxxxx久久久| 裸体一区二区三区| 日本一区二区三区高清不卡 | 日本中文一区二区三区| 久久精品一区二区三区不卡 | 免费观看久久久4p| 国产精品久99|