Skip to content

Bug with drawing HUD. #38

@unlishema

Description

@unlishema

Everything works great except if you resize the window. When you resize the window, it doesn't update the viewport width and height. This causes an issue when writing a HUD that is resizable based on window size. This isn't a hard fix but I don't know about for fixing in PeasyCam exactly.

Running the following:
OS: Windows 7 Professional 32 bit
Processing Version: 3.5.4
Processing Mode: java

Here is an example showing the issue as well as the fix. It opens with the bug and then if you resize you will see what the bug does. Then just press the "f" to apply or remove the fix.

import peasy.*;

PeasyCam camera;

int w = 0, h = 0;
boolean fixApplied = false;

void setup() {
  size(600, 600, P3D);
  surface.setResizable(true);
  this.camera = new PeasyCam(this, 500);
  registerMethod("pre", this);
}

void pre() {
  // HUD Fix... When fix is applied and width or height has changed
  if (this.fixApplied && (this.w != this.width || this.h != this.height)) {
    this.w = this.width;
    this.h = this.height;
    this.camera.setViewport(0, 0, this.w, this.h);
    this.camera.reset();
  }
}

void draw() {
  background(100);
  fill(255);
  box(10);

  // Draw GUI
  this.camera.beginHUD();

  // Hardcode fix for hud not resizing correctly (old) new way is to set viewport ourselves
  //ortho(0, width, -height, 0, -Float.MAX_VALUE, +Float.MAX_VALUE);

  // Darken Game
  fill(25, 25, 25, 180);
  stroke(0);
  strokeWeight(1.5);
  rectMode(RADIUS);
  rect(width / 2, height / 2, width * 0.375, height * 0.375, max(width, height) / 30);

  // Draw HUD
  textSize(21);
  fill(180, 180, 180);
  text("GUI", width * 0.125 + 20, height * 0.125 + 30);
  // TODO

  this.camera.endHUD();
}

void keyPressed() {
  if (key == 'f')
    this.fixApplied = !this.fixApplied;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions