Package examples

Source Code of examples.DrawUsingSpriteExample

package examples;

import static dwlab.platform.Functions.*;
import dwlab.base.service.Align;
import dwlab.base.Project;
import dwlab.base.service.Vector;
import dwlab.platform.LWJGL;
import dwlab.shapes.sprites.Camera;
import dwlab.shapes.sprites.Sprite;
import dwlab.visualizers.Color;
import dwlab.visualizers.Visualizer;

public class DrawUsingSpriteExample extends Project {
  public static void main(String[] argv) {
    LWJGL.init();
    main();
  }
 
  public static void main() {
    ( new DrawUsingSpriteExample() ).act();
  }
 
 
  int flowersQuantity = 12;
  double flowerCircleDiameter = 9;
  double flowerDiameter = 1.8;

  Sprite flowers[] = new Sprite[ flowersQuantity ];
  Visualizer flowerVisualizer = new Visualizer(){
    int circlesQuantity = 30;
    int circlesPer360 = 7;
    double amplitude = 0.15;

   
    @Override
    public void drawUsingSprite( Sprite sprite, Sprite spriteShape, Color drawingColor ) {
      double spriteDiameter = sprite.getDiameter();
      double circleDiameter = Camera.current.distFieldToScreen( Math.PI * 2d * spriteDiameter / circlesQuantity ) * 1.5;
      for( int n = 0; n <= circlesQuantity; n++ ) {
        double angle = Math.PI * 2d * n / circlesQuantity;
        double angles = sprite.angle + angle;
        double distance = spriteDiameter * ( 1.0 + amplitude * Math.sin( Math.PI * 2d * ( time + 1d * n / circlesQuantity * circlesPer360 ) ) );
        Vector vector = new Vector();
        Camera.current.fieldToScreen( sprite.getX() + distance * Math.cos( angles ), sprite.getY() + distance * Math.sin( angles ), vector );
        drawOval( vector.x - 0.5 * circleDiameter, vector.y - 0.5 * circleDiameter, circleDiameter, circleDiameter );
      }
    }
  };

 
  @Override
  public void init() {
    for( int n = 0; n < flowersQuantity; n++ ) {
      flowers[ n ] = new Sprite();
      flowers[ n ].setDiameter( flowerDiameter );
    }
  }
 

  @Override
  public void logic() {
    for( int n = 0; n < flowersQuantity; n++ ) {
      double angle = Math.PI * ( n * 2d / flowersQuantity + 0.25 * time );
      flowers[ n ].setCoords( Math.cos( angle ) * flowerCircleDiameter, Math.sin( angle ) * flowerCircleDiameter );
      flowers[ n ].angle = Math.PI * 0.5  * time;
    }
  }

 
  @Override
  public void render() {
    for( int n = 0; n < flowersQuantity; n++ ) {
      flowers[ n ].drawUsingVisualizer( flowerVisualizer );
    }
    printText( "DrawUsingSprite example", Align.TO_CENTER, Align.TO_BOTTOM );
  }
}
TOP

Related Classes of examples.DrawUsingSpriteExample

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.