gt:             new Vector2f[] {
context: package com.agorria.ouroboros.simulation.entity;
  
  import com.agorria.ouroboros.core.Atlas;
  import com.agorria.ouroboros.core.Color;
  import com.agorria.ouroboros.core.Rectangle;
  import com.agorria.ouroboros.core.Utilities;
  import com.agorria.ouroboros.simulation.entity.Animation.AnimationType;
  import com.agorria.ouroboros.simulation.entity.Cannon.CannonType;
  import com.agorria.ouroboros.audio.SoundType;
  import com.agorria.ouroboros.simulation.enviroment.EntityClass;
  import com.agorria.ouroboros.simulation.enviroment.EntityType;
  import org.joml.Vector2f;
  import org.joml.Vector2i;
  
  /**
   * Created on 07/04/2017.
   * @author Ion Agorria
   *
   * Tank unit
   */
  public class Tank extends Unit {
      private static final long serialVersionUID = Utilities.getClassUID(Tank.class);
      private final TankChassis chassis;
      private final TankType type;
  
      public enum TankChassis {
          LightHover(
              EntityClass.AmphibianUnit,                  //Entity class
              EntityClass.AmphibianUnitPlayer,            //Entity player class
              EntityClass.WreckageAmphibianUnit,          //Wreckage class
              Atlas.Sprite20,                             //Sprite atlas
              new Vector2i(0, 1),                         //Sprite
              new Vector2i(1, 1),                         //Player color overlay
              0.5f,                                       //Entity size
              0.7f,                                       //Collision size
              1.0f,                                       //Selection size
              0.4f,                                       //Destruction animation size
              AnimationType.ExplosionMedium,              //Destruction animation
              SoundType.ExplosionSmall,                   //Destruction audio
              50,                                         //Health
              8.0f,                                       //Rotation speed
              6.0f,                                       //Movement speed
              null                                        //Movement animation
          ),
          Light(
              EntityClass.GroundUnit,                     //Entity class
              EntityClass.GroundUnitPlayer,               //Entity player class
              EntityClass.WreckageGroundUnit,             //Wreckage class
              Atlas.Sprite20,                             //Sprite atlas
              new Vector2i(0, 0),                         //Sprite
              new Vector2i(1, 0),                         //Player color overlay
              0.5f,                                       //Entity size
              0.7f,                                       //Collision size
              1.0f,                                       //Selection size
              0.4f,                                       //Destruction animation size
              AnimationType.ExplosionMedium,              //Destruction animation
              SoundType.ExplosionSmall,                   //Destruction audio
              100,                                        //Health
              5.0f,                                       //Rotation speed
              3.0f,                                       //Movement speed
              AnimationType.ThreadsLight                  //Movement animation
          ),
          Medium(
              EntityClass.GroundUnit,                     //Entity class
              EntityClass.GroundUnitPlayer,               //Entity player class
              EntityClass.WreckageGroundUnit,             //Wreckage class
              Atlas.Sprite40,                             //Sprite atlas
              new Vector2i(0, 3),                         //Sprites
              new Vector2i(1, 3),                         //Player color overlay
              1.0f,                                       //Entity size
              0.4f,                                       //Collision size
              0.9f,                                       //Selection size
              0.5f,                                       //Destruction animation size
              AnimationType.ExplosionMedium,              //Destruction animation
              SoundType.ExplosionSmall,                   //Destruction audio
              250,                                        //Health
              3.5f,                                       //Rotation speed
              2.0f,                                       //Movement speed
              AnimationType.ThreadsMedium                 //Movement animation
          ),
          Heavy(
              EntityClass.GroundUnit,                     //Entity class
              EntityClass.GroundUnitPlayer,               //Entity player class
              EntityClass.WreckageGroundUnit,             //Wreckage class
              Atlas.Sprite40,                             //Sprite atlas
              new Vector2i(0, 7),                         //Sprites
              new Vector2i(1, 7),                         //Player color overlay
              0.8f,                                       //Entity size
              0.6f,                                       //Collision size
              1.2f,                                       //Selection size
              0.8f,                                       //Destruction animation size
              AnimationType.ExplosionLarge,               //Destruction animation
              SoundType.ExplosionSmall,                   //Destruction audio
              500,                                        //Health
              1.5f,                                       //Rotation speed
              1.0f,                                       //Movement speed
              null                                        //Movement animation
          ),
          ;
  
          public final EntityClass entityClass;
          public final EntityClass entityPlayerType;
          public final EntityClass wreckageClass;
          public final Atlas atlas;
          public final Vector2i spriteLocation;
          public final Vector2i spritePlayerLocation;
          public final float entitySize;
          public final float collisionSize;
          public final float selectionSize;
          public final float destroyAnimationSize;
          public final AnimationType destroyAnimation;
          public final SoundType destroySoundType;
          public final int health;
          public final float rotationSpeed;
          public final float movementSpeed;
          public final AnimationType movementAnimation;
  
          TankChassis(EntityClass entityClass,
                      EntityClass entityPlayerType,
                      EntityClass wreckageClass,
                      Atlas atlas,
                      Vector2i spriteLocation,
                      Vector2i spritePlayerLocation,
                      float entitySize,
                      float collisionSize,
                      float selectionSize,
                      float destroyAnimationSize,
                      AnimationType destroyAnimation,
                      SoundType destroySoundType,
                      int health,
                      float rotationSpeed,
                      float movementSpeed,
                      AnimationType movementAnimation
          ) {
              this.entityClass = entityClass;
              this.entityPlayerType = entityPlayerType;
              this.wreckageClass = wreckageClass;
              this.atlas = atlas;
              this.spriteLocation = spriteLocation;
              this.spritePlayerLocation = spritePlayerLocation;
              this.entitySize = entitySize;
              this.collisionSize = entitySize * collisionSize;
              this.selectionSize = entitySize * selectionSize;
              this.destroyAnimationSize = destroyAnimationSize;
              this.destroyAnimation = destroyAnimation;
              this.destroySoundType = destroySoundType;
              this.health = health;
              this.rotationSpeed = rotationSpeed;
              this.movementSpeed = movementSpeed;
              this.movementAnimation = movementAnimation;
          }
      }
  
      public enum TankType {
          LightHoverGun(
              "LH-G",
              "Light hover with light gun",
              TankChassis.LightHover,
              0,
              new CannonType[] {
                  CannonBallistic.CannonBallisticType.GunLight,
              },
              new Vector2f[] {
                  new Vector2f(-0.0f, 0f),
              }
          ),
          LightGun(
              "LT-G",
              "Light tank with light gun",
              TankChassis.Light,
              0,
              new CannonType[] {
                  CannonBallistic.CannonBallisticType.GunLight,
              },
              new Vector2f[] {
                  new Vector2f(-0.08f, 0f),
              }
          ),
          LightMissile(
              "LT-M",
              "Light tank with missile launcher",
              TankChassis.Light,
              0,
              new CannonType[] {
                  CannonBallistic.CannonBallisticType.Missile,
              },
              new Vector2f[] {
                  new Vector2f(-0.04f, 0f),
              }
          ),
          MediumMissile(
              "MT-M2",
              "Medium tank with double missile launcher",
              TankChassis.Medium,
              0,
              new CannonType[] {
                  CannonBallistic.CannonBallisticType.MissileDouble,
              },
              new Vector2f[] {
                  new Vector2f(-0.10f, 0f),
              }
          ),
          MediumPlasma(
              "MT-P",
              "Medium tank with plasma cannon",
              TankChassis.Medium,
              0,
              new CannonType[] {
                  CannonBallistic.CannonBallisticType.Plasma,
              },
  