Esempio n. 1
0
  private void setTextureRect(
      float x, float y, float w, float h, float sw, float sh, boolean rotated) {
    rect_.set(x, y, w, h);
    rectRotated_ = rotated;

    setContentSize(sw, sh);
    updateTextureCoords(rect_);

    float relativeOffsetX = unflippedOffsetPositionFromCenter_.x;
    float relativeOffsetY = unflippedOffsetPositionFromCenter_.y;

    // issue #732
    if (flipX_) relativeOffsetX = -relativeOffsetX;
    if (flipY_) relativeOffsetY = -relativeOffsetY;

    offsetPosition_.x = relativeOffsetX + (contentSize_.width - rect_.size.width) / 2;
    offsetPosition_.y = relativeOffsetY + (contentSize_.height - rect_.size.height) / 2;

    // rendering using SpriteSheet
    if (usesSpriteSheet_) {
      // update dirty_, don't update recursiveDirty_
      dirty_ = true;
    } else { // self rendering
      // Atlas: Vertex
      float x1 = 0 + offsetPosition_.x;
      float y1 = 0 + offsetPosition_.y;
      float x2 = x1 + w;
      float y2 = y1 + h;

      // Don't update Z.
      vertexes.position(0);
      tmpV[0] = x1;
      tmpV[1] = y2;
      tmpV[2] = 0;
      tmpV[3] = x1;
      tmpV[4] = y1;
      tmpV[5] = 0;
      tmpV[6] = x2;
      tmpV[7] = y2;
      tmpV[8] = 0;
      tmpV[9] = x2;
      tmpV[10] = y1;
      tmpV[11] = 0;
      BufferUtils.copyFloats(tmpV, 0, vertexes, 12);
      //            vertexes.put(x1);
      //            vertexes.put(y2);
      //            vertexes.put(0);
      //            vertexes.put(x1);
      //            vertexes.put(y1);
      //            vertexes.put(0);
      //            vertexes.put(x2);
      //            vertexes.put(y2);
      //            vertexes.put(0);
      //            vertexes.put(x2);
      //            vertexes.put(y1);
      //            vertexes.put(0);
      vertexes.position(0);
    }
  }