001package com.fs.starfarer.api.util; 002 003import org.lwjgl.util.vector.Vector2f; 004 005import com.fs.starfarer.api.util.WarpingSpriteRendererUtil.MutatingValue; 006 007public class MutatingVertexUtil { 008 public MutatingValue theta; 009 public MutatingValue radius; 010 public Vector2f vector = new Vector2f(); 011 012 public MutatingVertexUtil(float minRadius, float maxRadius, float rate, float angleRate) { 013 theta = new MutatingValue(-360f * ((float) Math.random() * 3f + 1f), 360f * ((float) Math.random() * 3f + 1f), angleRate); 014 radius = new MutatingValue(minRadius, maxRadius, rate); 015 } 016 017 public void advance(float amount) { 018 theta.advance(amount); 019 radius.advance(amount); 020 021 vector = Misc.getUnitVectorAtDegreeAngle(theta.getValue()); 022 vector.scale(radius.getValue()); 023 } 024 025 Object writeReplace() { 026 theta.setMax((int)theta.getMax()); 027 theta.setMin((int)theta.getMin()); 028 theta.setRate((int)theta.getRate()); 029 theta.setValue((int)theta.getValue()); 030 031 radius.setMax((int)radius.getMax()); 032 radius.setMin((int)radius.getMin()); 033 radius.setRate((int)radius.getRate()); 034 radius.setValue((int)radius.getValue()); 035 return this; 036 } 037 }