Renderer/src/main/java/electrosphere/data/utils/DataFormatUtil.java
2025-05-25 15:16:50 -04:00

67 lines
1.9 KiB
Java

package electrosphere.data.utils;
import java.util.Arrays;
import java.util.List;
import org.joml.Quaterniond;
import org.joml.Vector3d;
import electrosphere.mem.VectorPool;
/**
* Converts data structures between formats saved to disk vs formats used in engine
*/
public class DataFormatUtil {
/**
* Gets the rotation in quaterniond form
* @param values The list of raw float values
* @return The quaterniond containing those values or an identity quaterniond if no such values exist
*/
public static Quaterniond getDoubleListAsQuaternion(List<Double> values){
if(values == null){
return new Quaterniond();
}
if(values.size() > 0){
return new Quaterniond(values.get(0),values.get(1),values.get(2),values.get(3));
} else {
return new Quaterniond();
}
}
/**
* Gets a quaterniond as a list of doubles
* @param quat The quaternion
* @return The list of doubles
*/
public static List<Double> getQuatAsDoubleList(Quaterniond quat){
return Arrays.asList((Double)quat.x,(Double)quat.y,(Double)quat.z,(Double)quat.w);
}
/**
* Gets the vector in vector3d form
* @param values The list of raw float values
* @return The vector containing those values or an identity vector if no such values exist
*/
public static Vector3d getDoubleListAsVector(List<Double> values){
if(values == null){
return VectorPool.getD();
}
if(values.size() > 0){
return VectorPool.getD(values.get(0),values.get(1),values.get(2));
} else {
return VectorPool.getD();
}
}
/**
* Gets a vector as a list of doubles
* @param vec The vector
* @return The list of doubles
*/
public static List<Double> getVectorAsDoubleList(Vector3d vec){
return Arrays.asList((Double)vec.x,(Double)vec.y,(Double)vec.z);
}
}