void status(TrackEntry entry) {
   TrackEntry from = entry.mixingFrom;
   if (from == null) return;
   status(from);
   status.append(from.animation.name);
   status.append(' ');
   status.append(Math.min(100, (int) (entry.mixTime / entry.mixDuration * 100)));
   status.append("% -> ");
 }
Пример #2
0
  protected void computeInitialGlyphLayout(@NtN Vector2 size) {
    glyphLayout.setText(font, rawText, Color.BLACK, size.x, Align.left, true);
    StringBuilder text = new StringBuilder();
    float minY = 0, maxY = 0;
    for (GlyphLayout.GlyphRun run : glyphLayout.runs) {
      minY = Math.min(run.y, minY);
      maxY = Math.max(run.y, maxY);
      for (BitmapFont.Glyph glyph : run.glyphs) text.append(glyph.toString());
    }

    computedText = text.toString();
    futureRuns = new Array<>(glyphLayout.runs);
    futureRuns.reverse();
    glyphLayout.runs.clear();
  }
Пример #3
0
 @Override
 public String getResultAsString() {
   BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
   try {
     int approxStringLength = connection.getContentLength();
     StringBuilder b;
     if (approxStringLength > 0) b = new StringBuilder(approxStringLength);
     else b = new StringBuilder();
     String line;
     while ((line = reader.readLine()) != null) b.append(line);
     return b.toString();
   } catch (IOException e) {
     return "";
   } finally {
     StreamUtils.closeQuietly(reader);
   }
 }
Пример #4
0
  @Override
  public void render() {
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    fpsStringBuilder.setLength(0);
    getStatus(fpsStringBuilder);
    fpsLabel.setText(fpsStringBuilder);

    if (currentTest != null) currentTest.render();

    stage.act();
    stage.draw();
  }
  public void render() {
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    float delta = Gdx.graphics.getDeltaTime();

    // Draw skeleton origin lines.
    ShapeRenderer shapes = debugRenderer.getShapeRenderer();
    if (state != null) {
      shapes.setColor(Color.DARK_GRAY);
      shapes.begin(ShapeType.Line);
      shapes.line(skeleton.x, -99999, skeleton.x, 99999);
      shapes.line(-99999, skeleton.y, 99999, skeleton.y);
      shapes.end();
    }

    if (skeleton != null) {
      // Reload if skeleton file was modified.
      if (reloadTimer <= 0) {
        lastModifiedCheck -= delta;
        if (lastModifiedCheck < 0) {
          lastModifiedCheck = checkModifiedInterval;
          long time = skeletonFile.lastModified();
          if (time != 0 && lastModified != time) reloadTimer = reloadDelay;
        }
      } else {
        reloadTimer -= delta;
        if (reloadTimer <= 0) {
          loadSkeleton(skeletonFile);
          ui.toast("Reloaded.");
        }
      }

      // Pose and render skeleton.
      state.getData().setDefaultMix(ui.mixSlider.getValue());
      renderer.setPremultipliedAlpha(ui.premultipliedCheckbox.isChecked());

      skeleton.setFlip(ui.flipXCheckbox.isChecked(), ui.flipYCheckbox.isChecked());
      skeleton.setPosition(skeletonX, skeletonY);

      delta = Math.min(delta, 0.032f) * ui.speedSlider.getValue();
      skeleton.update(delta);
      state.update(delta);
      state.apply(skeleton);
      skeleton.updateWorldTransform();

      batch.setColor(Color.WHITE);
      batch.begin();
      renderer.draw(batch, skeleton);
      batch.end();

      debugRenderer.setBones(ui.debugBonesCheckbox.isChecked());
      debugRenderer.setRegionAttachments(ui.debugRegionsCheckbox.isChecked());
      debugRenderer.setBoundingBoxes(ui.debugBoundingBoxesCheckbox.isChecked());
      debugRenderer.setMeshHull(ui.debugMeshHullCheckbox.isChecked());
      debugRenderer.setMeshTriangles(ui.debugMeshTrianglesCheckbox.isChecked());
      debugRenderer.setPaths(ui.debugPathsCheckbox.isChecked());
      debugRenderer.draw(skeleton);
    }

    if (state != null) {
      // AnimationState status.
      status.setLength(0);
      for (int i = 0, n = state.getTracks().size; i < n; i++) {
        TrackEntry entry = state.getTracks().get(i);
        if (entry == null) continue;
        status.append(i);
        status.append(": [LIGHT_GRAY]");
        status(entry);
        status.append("[WHITE]");
        status.append(entry.animation.name);
        status.append('\n');
      }
      ui.statusLabel.setText(status);
    }

    // Render UI.
    ui.render();

    // Draw indicator lines for animation and mix times.
    if (state != null) {
      TrackEntry entry = state.getCurrent(0);
      if (entry != null) {
        shapes.begin(ShapeType.Line);

        float percent = entry.getAnimationTime() / entry.getAnimationEnd();
        float x = ui.window.getRight() + (Gdx.graphics.getWidth() - ui.window.getRight()) * percent;
        shapes.setColor(Color.CYAN);
        shapes.line(x, 0, x, 12);

        percent =
            entry.getMixDuration() == 0
                ? 1
                : Math.min(1, entry.getMixTime() / entry.getMixDuration());
        x = ui.window.getRight() + (Gdx.graphics.getWidth() - ui.window.getRight()) * percent;
        shapes.setColor(Color.RED);
        shapes.line(x, 0, x, 12);

        shapes.end();
      }
    }
  }
Пример #6
0
 protected void getStatus(final StringBuilder stringBuilder) {
   stringBuilder.append("FPS: ").append(Gdx.graphics.getFramesPerSecond());
   if (helpMessage != null) stringBuilder.append("     ").append(helpMessage);
 }