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        }