Error with set texture when I increment my array index

I am running into an issue when I try to set a texture to a PShape from an array in my project, and then increment the index to the array.

This is my Array reference mndImg[imgChsr]
I have a key press that just basically says imgChsr ++; It modulos and wraps just fine.

It works when I am just drawing an image. I can step through all my images no problem.
image(mndImg[imgChsr], 0, 0, mndImg[imgChsr].width*, mndImg[imgChsr].height*imgScl);

but when I try to set a texture like this.

It works when my object is created but then when I hit my key to increment imgChsr it seems to slam the value to -2, i get the error ArrayIndexOutOfBoundsException: -2

As I said, I know the imgChsr works because when just doing it with an image, I can go through all the images no problem. It seems to be specific to incrementing the index in the setTexture call.

Thanks in advance for any insight!


Hello, I have boiled this down further to the following code.

What I have pasted here will crash as is.

PShape plane;
/* Global Image Array ///////////////////////////*/
int numImgs = 3;
PImage[] mndImg = new PImage[numImgs];
int imageChooser = 0;

void setup() {
  size(800, 800, P3D);
  //Image Loads -- IMAGE ARRAY Fill-up////////////////////////
  mndImg[0] = loadImage("Outer_Large_Fan.png");
  mndImg[1] = loadImage("Mid_Medium_1.png");
  mndImg[2] = loadImage("Mid_Medium_2.png");

  plane = createShape(RECT, 0, 0, 100, 100);
}//END SETUP//////////////////////////////////////////////////////

void draw() {
      //image(mndImg[imageChooser], 0, 0);
      println("ImageChooser = ",imageChooser);
}//END DRAW///////////////////////////////////////////////////////

//KEY PRESSES///////////////////////////////////////////////////
void keyPressed () {
  if (keyPressed) {
 // Choose Texture for Plane Object /////////////////////
   if (key == 'k')  {
     imageChooser ++;
     imageChooser = imageChooser % numImgs;
     println("image chooser is now ", imageChooser);

IF I comment the plane out, and comment the image call in it works.  
 ```  //plane.setTexture(mndImg[imageChooser]);
      image(mndImg[imageChooser], 0, 0);

If I go back to using the plane AND comment out the noStroke(); in setup it works!

      //image(mndImg[imageChooser], 0, 0);

I really don’t want these stroked and I tried putting noStroke(); in draw instead and it has no effect. I get a stroked plane…

Any thoughts? Is this just a bug? Is there a fix I could use?

thank you!

Also I tried using

but that only works between
beginShape(); endShape();

also tried adding

not working, guess I will just try hand building the rect by hand instead.