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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? bttalker.java

?? 這是一個(gè)Micro3D的學(xué)習(xí)代碼
?? JAVA
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
    }

    length = (buf[0] << 8 & 0xFF) | (buf[1] & 0xFF);
    length = length - 2;
    if (length < 0) {
      System.out.println("Dropped adj len=" + length);
      return;
    }

    byte tmp[] = new byte[length];
    for (int i=0; i < length; i++) {
      tmp[i] = buf[i+2];
    }
    synchronized (receiveDataStack) {
      receiveDataStack.addElement(tmp);
      receiveDataStack.notify();
    }
    tmp = null;
  }

  // Read a single byte, blocks if data not available
  private byte read()
  {
    byte rc;
    while (true)
    {
      if (receiveBuf != null)
      {
        rc = receiveBuf[receiveIndex++];
        if (receiveIndex >= receiveBuf.length) {
          receiveBuf = null;
        }
        return rc;
      }
      synchronized (receiveDataStack) {
        while (receiveDataStack.size() == 0 )
        {
          try {
            receiveDataStack.wait();
          }
          catch (InterruptedException e) {}
        }
        receiveBuf = (byte []) receiveDataStack.elementAt(0);
        receiveDataStack.removeElementAt(0);
        receiveIndex = 0;
      }
    }
  }

  public void remoteSendHello()
  {
    if( observer.getState() != observer.CONNECT )
      return;
    byte buf[] = new byte[1];
    buf[0] = BTCMD_SAY_HELLO;
    System.out.println("Sending: Hello message");
    sendDataStack.addElement(buf);
    sendDataIfNecessary();
    buf = null;
    }

  public void remoteStart3DWorld()
  {
    if( observer.getState() != observer.CONNECT )
      return;
    byte buf[] = new byte[1];
    buf[0] = BTCMD_START_3D_WORLD;
    System.out.println("Sending: start 3D world");
    sendDataStack.addElement(buf);
    sendDataIfNecessary();
    buf = null;
    }

  public void remoteSendReady()
  {
    if( observer.getState() != observer.CONNECT )
      return;
    byte buf[] = new byte[1];
    buf[0] = BTCMD_READY_FOR_PLAY;
    System.out.println("Sending: ready for play");
    sendDataStack.addElement(buf);
    sendDataIfNecessary();
    amIReady = true;
    // in case avatar build itself up already
    if(avatarReady)
    {
      System.out.println("avatar already ready");
      observer.startMultiRace();
    }
    buf = null;
    System.gc();
  }

  private static byte mBufPosTab[] = new byte[29];
  public void remoteUpdateSpeedAndPos(Vector3D aMyCarPos, int aAngZ,
                                      Vector3D aMyCarSpeedVect,
                                      boolean aSignalColision)
  {
    if( observer.getState() != observer.CONNECT )
      return;
    if(aSignalColision)
      mBufPosTab[0] = BTCMD_COLISION_SIGNAL;
    else
      mBufPosTab[0] = BTCMD_UPDATE_SPEED_AND_POS;

    int a, b, c, d, tmp = 0, iter = 0;
    iter++;
    for( int i=0; i<5; ++i)
    {
      switch(i) {
        case 0 : tmp = aMyCarPos.x;        break;
        case 1 : tmp = aMyCarPos.y;        break;
        case 2 : tmp = aAngZ;              break;
        case 3 : tmp = aMyCarSpeedVect.x;  break;
        case 4 : tmp = aMyCarSpeedVect.y;  break;
      }
      a = (tmp & 0xFF000000);
      b = (tmp & 0x00FF0000);
      c = (tmp & 0x0000FF00);
      d = (tmp & 0x000000FF);
      a = (a >> 24);
      b = (b >> 16);
      c = (c >> 8);
      mBufPosTab[iter] = (byte)a; iter++;
      mBufPosTab[iter] = (byte)b; iter++;
      mBufPosTab[iter] = (byte)c; iter++;
      mBufPosTab[iter] = (byte)d; iter++;
    }
    write(mBufPosTab, 0, 21);
    sendTransmitBuf();
  }

  public void remoteSendColisionConfirm(Vector3D aMyCarPos, int aAngZ,
                                        Vector3D aMyCarSpeedVect,
                                        Vector3D aAvatarSpeedVect)
  {
    if( observer.getState() != observer.CONNECT )
      return;
    int a, b, c, d, tmp = 0, iter = 0;
    mBufPosTab[0] = BTCMD_COLISION_CONFIRM;
    iter++;
    for( int i=0; i<7; ++i)
    {
      switch(i) {
        case 0 : tmp = aMyCarPos.x;        break;
        case 1 : tmp = aMyCarPos.y;        break;
        case 2 : tmp = aAngZ;              break;
        case 3 : tmp = aMyCarSpeedVect.x;  break;
        case 4 : tmp = aMyCarSpeedVect.y;  break;
        case 5 : tmp = aAvatarSpeedVect.x; break;
        case 6 : tmp = aAvatarSpeedVect.y; break;
      }
      a = (tmp & 0xFF000000);
      b = (tmp & 0x00FF0000);
      c = (tmp & 0x0000FF00);
      d = (tmp & 0x000000FF);
      a = (a >> 24);
      b = (b >> 16);
      c = (c >> 8);
      mBufPosTab[iter] = (byte)a; iter++;
      mBufPosTab[iter] = (byte)b; iter++;
      mBufPosTab[iter] = (byte)c; iter++;
      mBufPosTab[iter] = (byte)d; iter++;
    }
    write(mBufPosTab, 0, 29);
    sendTransmitBuf();
  }

  public void remoteSendColisionNone(Vector3D aMyCarPos, int aAngZ, Vector3D aMyCarSpeedVect)
  {
    if( observer.getState() != observer.CONNECT )
      return;
    int a, b, c, d, tmp = 0, iter = 0;
    mBufPosTab[0] = BTCMD_COLISION_NONE;
    iter++;
    for( int i=0; i<5; ++i)
    {
      switch(i) {
        case 0 : tmp = aMyCarPos.x;        break;
        case 1 : tmp = aMyCarPos.y;        break;
        case 2 : tmp = aAngZ;              break;
        case 3 : tmp = aMyCarSpeedVect.x;  break;
        case 4 : tmp = aMyCarSpeedVect.y;  break;
      }
      a = (tmp & 0xFF000000);
      b = (tmp & 0x00FF0000);
      c = (tmp & 0x0000FF00);
      d = (tmp & 0x000000FF);
      a = (a >> 24);
      b = (b >> 16);
      c = (c >> 8);
      mBufPosTab[iter] = (byte)a; iter++;
      mBufPosTab[iter] = (byte)b; iter++;
      mBufPosTab[iter] = (byte)c; iter++;
      mBufPosTab[iter] = (byte)d; iter++;
    }
    write(mBufPosTab, 0, 21);
    sendTransmitBuf();
  }

  private void sendDataIfNecessary()
  {
    byte tmp[];
    if( observer.getState() == observer.CONNECT )
    {
      try {
        // Send Drawing messages to peer
        while (sendDataStack.size() > 0)
        {
          tmp = (byte []) sendDataStack.elementAt(0);
          write(tmp, 0, tmp.length);
          sendDataStack.removeElementAt(0);
          tmp = null;
        }
        flush();
      }
      catch (Exception e) {
        System.out.println("ERROR BTTalker::sendDataIfNecessary(): " + e);
      }
    }
  }

  public void write(byte buf[], int offset, int length)
  {
    synchronized (transmitBuffer)
    {
      for (int i = 0; i < length; i++)
      {
        transmitBuffer[transmitIndex++] = buf[offset+i];
        if( transmitIndex >= transmitBuffer.length )
          sendTransmitBuf();
      }
    }
  }

  public void flush()
  {
    synchronized (transmitBuffer)
    {
      // If there is data to send, then send it!
      if (transmitIndex > 2)
        sendTransmitBuf();
    }
  }

  private void sendTransmitBuf()
  {
    if(conn == null)
      return;
    try {
      synchronized (transmitBuffer)
      {
        // Store the length in the first two bytes of the array
        transmitBuffer[0] = (byte) (transmitIndex >> 8 & 0xFF);
        transmitBuffer[1] = (byte) (transmitIndex & 0xFF);
        conn.send(transmitBuffer);
        transmitIndex = 2;
      }
    }
    catch (IOException e) {
      System.out.println("ERROR: conn.send: " + e);
    }
  }

  public void stopBeingActive()
  {
    sendDataStack.removeAllElements();
    mBtReceiver = null;
    mBtReader = null;
    System.gc();
  }

}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人av电影免费在线观看| 91蜜桃在线免费视频| 国产91丝袜在线18| 色噜噜狠狠一区二区三区果冻| 欧美日韩国产bt| 亚洲国产高清不卡| 色美美综合视频| 久久久99精品久久| 日韩成人伦理电影在线观看| 成人激情文学综合网| 7777精品伊人久久久大香线蕉| 日本一区二区高清| 精品亚洲porn| 日韩欧美高清dvd碟片| 国产精品灌醉下药二区| 美女性感视频久久| 欧美日韩一区精品| 亚洲午夜免费电影| eeuss国产一区二区三区| 久久免费美女视频| 国内一区二区在线| 日韩写真欧美这视频| 亚洲福利一区二区| 日本道色综合久久| 1000部国产精品成人观看| 国产成人一区在线| 久久亚洲精精品中文字幕早川悠里| 石原莉奈在线亚洲三区| jlzzjlzz亚洲女人18| 中文av字幕一区| 国产一区二区电影| 久久久久国产精品人| 国产美女精品一区二区三区| 欧美r级在线观看| 全国精品久久少妇| 日韩欧美在线影院| 精品中文av资源站在线观看| 91精品国产免费久久综合| 日本中文在线一区| 精品国产成人系列| 久久精品久久综合| 日韩美女天天操| 日韩电影在线观看网站| 4438x成人网最大色成网站| 老司机免费视频一区二区三区| 91精品国产高清一区二区三区| 欧美一区二区免费| 69堂成人精品免费视频| 日韩二区三区四区| 久久久久久久久久久电影| 成人小视频免费在线观看| 国产精品久久久久久福利一牛影视 | 精品国一区二区三区| 麻豆精品视频在线| 国产日韩精品一区二区三区在线| 国产精品资源在线看| 国产午夜久久久久| 成人av网站在线| 亚洲综合久久久| 欧美不卡123| 国产宾馆实践打屁股91| 中文字幕中文乱码欧美一区二区| 欧美中文字幕一区| 免费成人av在线| 国产欧美精品区一区二区三区 | 亚洲成人免费电影| 精品女同一区二区| 91猫先生在线| 麻豆精品视频在线观看| 中文字幕一区三区| 欧美裸体一区二区三区| 国产酒店精品激情| 亚洲制服丝袜av| 久久久久久电影| 欧美亚洲尤物久久| 国产精品亚洲一区二区三区妖精| 亚洲特黄一级片| 欧美一三区三区四区免费在线看| 国产一二三精品| 亚洲成人免费视| 91福利区一区二区三区| 狠狠色狠狠色综合日日91app| 中文字幕欧美日韩一区| 日韩免费观看高清完整版在线观看| 另类小说图片综合网| 亚洲在线中文字幕| 国产精品国产三级国产aⅴ中文 | 亚洲一区二区三区在线| 国产亚洲福利社区一区| 91 com成人网| 91蜜桃视频在线| 精品系列免费在线观看| 亚洲一区自拍偷拍| 精品少妇一区二区三区免费观看 | 久久影院视频免费| 91国偷自产一区二区三区成为亚洲经典| 视频一区二区不卡| 亚洲国产精品天堂| 亚洲欧美日韩国产手机在线| 久久久久国产精品麻豆ai换脸| 欧美一区二区在线不卡| 欧美日韩中文字幕一区| 91黄色激情网站| 99久久精品国产毛片| 成人黄页在线观看| 国产精品中文字幕一区二区三区| 热久久免费视频| 日本欧美肥老太交大片| 亚洲成人高清在线| 亚洲午夜av在线| 亚洲资源中文字幕| 911精品产国品一二三产区| 欧美羞羞免费网站| 91久久精品日日躁夜夜躁欧美| 成人黄色免费短视频| 成人福利在线看| bt欧美亚洲午夜电影天堂| hitomi一区二区三区精品| 成人综合婷婷国产精品久久蜜臀| 韩国毛片一区二区三区| 国产老肥熟一区二区三区| 国产精品羞羞答答xxdd| 成人免费观看男女羞羞视频| 国产黄色精品视频| 成人丝袜高跟foot| 亚洲欧洲色图综合| 中文字幕日韩欧美一区二区三区| 国产精品美女www爽爽爽| 国产精品久久久久久久久免费丝袜| 中文字幕亚洲区| 五月综合激情日本mⅴ| 青娱乐精品在线视频| 国产原创一区二区三区| 国产精品一区二区免费不卡 | 精品国产乱码久久久久久浪潮| 精品久久一区二区| 国产日韩三级在线| 亚洲人成精品久久久久久| 亚洲影院理伦片| 欧美一级高清大全免费观看| 97久久人人超碰| 91在线观看视频| 欧美日韩国产影片| 久久综合国产精品| 亚洲免费在线看| 婷婷成人激情在线网| 国产一区91精品张津瑜| 色噜噜久久综合| 欧美精品一区二区三区蜜臀| 国产精品乱码人人做人人爱| 亚洲国产一区二区三区青草影视 | 亚洲欧洲国产日韩| 亚洲一区二区中文在线| 国产在线国偷精品免费看| 97se亚洲国产综合自在线观| 9191精品国产综合久久久久久| 久久中文娱乐网| 亚洲国产综合色| 国产精品自拍在线| 欧美高清视频www夜色资源网| 久久久精品免费观看| 亚洲午夜精品网| 久久久久久电影| 一区二区三区免费看视频| 午夜免费欧美电影| 大胆欧美人体老妇| 91精品国产色综合久久不卡电影| 国产精品每日更新在线播放网址| 免费在线观看精品| 91麻豆成人久久精品二区三区| 欧美变态口味重另类| 一区二区三区中文字幕电影 | 国产成人精品一区二区三区网站观看| 欧美午夜在线一二页| 欧美国产日本视频| 免费精品99久久国产综合精品| av资源网一区| 久久久亚洲综合| 麻豆成人免费电影| 欧美日韩一级片在线观看| 亚洲欧美乱综合| 成人免费观看男女羞羞视频| 久久精品一区八戒影视| 欧美精品一区二区三区很污很色的 | 亚洲成人免费影院| 激情综合色丁香一区二区| 色www精品视频在线观看| 日本一区二区三区久久久久久久久不 | 国产精品久久看| 国产一区二区精品在线观看| 欧美一级久久久| 香蕉加勒比综合久久| 色悠悠亚洲一区二区| 国产精品毛片大码女人| 粉嫩一区二区三区性色av| 美女视频免费一区| 欧美一级在线免费| 洋洋成人永久网站入口| 国产91精品露脸国语对白| 久久理论电影网|