All Downloads are FREE. Search and download functionalities are using the official Maven repository.

se.llbit.chunky.resources.AnimatedTexture Maven / Gradle / Ivy

There is a newer version: 1.4.5
Show newest version
/* Copyright (c) 2015 Jesper Öqvist 
 *
 * This file is part of Chunky.
 *
 * Chunky is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Chunky is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * You should have received a copy of the GNU General Public License
 * along with Chunky.  If not, see .
 */
package se.llbit.chunky.resources;

import java.awt.image.BufferedImage;

import se.llbit.math.Ray;

/**
 * Basic animated texture extension.
 *
 * @author Jesper Öqvist 
 */
public class AnimatedTexture extends Texture {

  protected int numFrames = 1;
  protected int frameHeight = 0;

  public AnimatedTexture(String resourceName) {
    super(resourceName);
    updateNumFrames();
  }

  /**
   * Get color for animation frame.
   */
  public float[] getColor(double u, double v, int frame) {
    int i = frame % numFrames;
    return getColor((int) (u * width - Ray.EPSILON),
        (int) ((1 - v) * frameHeight - Ray.EPSILON + i * frameHeight));
  }

  @Override public void setTexture(BitmapImage newImage) {
    super.setTexture(newImage);
    updateNumFrames();
  }

  private void updateNumFrames() {
    frameHeight = Math.min(height, width);
    numFrames = (int) (frameHeight / (float) width);
    numFrames = Math.max(1, numFrames);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy