69 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package electrosphere.entity.state;
 | |
| 
 | |
| import electrosphere.entity.Entity;
 | |
| import electrosphere.entity.EntityUtils;
 | |
| import electrosphere.main.Globals;
 | |
| import org.joml.Vector3d;
 | |
| import org.joml.Vector3f;
 | |
| 
 | |
| /**
 | |
|  *
 | |
|  * @author amaterasu
 | |
|  */
 | |
| public class ParticleTree {
 | |
|     Entity parent;
 | |
|     boolean hasLife = true;
 | |
|     int maxLife;
 | |
|     int lifeCurrent;
 | |
|     Vector3f destination;
 | |
|     float velocity;
 | |
|     float acceleration;
 | |
|     
 | |
|     public ParticleTree(Entity parent, int maxLife, Vector3f destination, float velocity, float acceleration, boolean hasLife){
 | |
|         this.parent = parent;
 | |
|         this.maxLife = maxLife;
 | |
|         this.destination = destination;
 | |
|         this.velocity = velocity;
 | |
|         this.acceleration = acceleration;
 | |
|         this.hasLife = hasLife;
 | |
|         lifeCurrent = maxLife;
 | |
|     }
 | |
| 
 | |
|     public int getMaxLife() {
 | |
|         return maxLife;
 | |
|     }
 | |
| 
 | |
|     public int getLifeCurrent() {
 | |
|         return lifeCurrent;
 | |
|     }
 | |
| 
 | |
|     public Vector3f getDestination() {
 | |
|         return destination;
 | |
|     }
 | |
| 
 | |
|     public float getVelocity() {
 | |
|         return velocity;
 | |
|     }
 | |
| 
 | |
|     public float getAcceleration() {
 | |
|         return acceleration;
 | |
|     }
 | |
|     
 | |
|     public void simulate(){
 | |
|         Vector3d parentPosition = EntityUtils.getPosition(parent);
 | |
|         parentPosition.add(new Vector3f(destination).mul(velocity));
 | |
|         velocity = velocity - acceleration;
 | |
|         if(velocity < 0){
 | |
|             velocity = 0;
 | |
|             acceleration = 0;
 | |
|         }
 | |
|         if(hasLife){
 | |
|             lifeCurrent--;
 | |
|             if(lifeCurrent <= 0){
 | |
|                 Globals.entityManager.deregisterEntity(parent);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
|     
 | |
| }
 |