Add loaders for vector classes

This commit is contained in:
Astrash
2022-07-30 11:53:00 +10:00
parent 55e024dab0
commit 50397a4a6b
3 changed files with 70 additions and 1 deletions

View File

@@ -31,10 +31,14 @@ import com.dfsek.terra.api.tectonic.LoaderRegistrar;
import com.dfsek.terra.api.util.Range;
import com.dfsek.terra.api.util.collection.MaterialSet;
import com.dfsek.terra.api.util.collection.ProbabilityCollection;
import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.util.vector.Vector3Int;
import com.dfsek.terra.config.loaders.LinkedHashMapLoader;
import com.dfsek.terra.config.loaders.MaterialSetLoader;
import com.dfsek.terra.config.loaders.ProbabilityCollectionLoader;
import com.dfsek.terra.config.loaders.RangeLoader;
import com.dfsek.terra.config.loaders.Vector3IntLoader;
import com.dfsek.terra.config.loaders.Vector3Loader;
import com.dfsek.terra.config.loaders.VersionLoader;
import com.dfsek.terra.config.loaders.VersionRangeLoader;
@@ -53,7 +57,9 @@ public class GenericLoaders implements LoaderRegistrar {
.registerLoader(Version.class, new VersionLoader())
.registerLoader(MaterialSet.class, new MaterialSetLoader())
.registerLoader(VersionRange.class, new VersionRangeLoader())
.registerLoader(LinkedHashMap.class, new LinkedHashMapLoader());
.registerLoader(LinkedHashMap.class, new LinkedHashMapLoader())
.registerLoader(Vector3.class, new Vector3Loader())
.registerLoader(Vector3Int.class, new Vector3IntLoader());
if(platform != null) {
registry.registerLoader(BaseAddon.class, platform.getAddons())

View File

@@ -0,0 +1,31 @@
package com.dfsek.terra.config.loaders;
import com.dfsek.tectonic.api.depth.DepthTracker;
import com.dfsek.tectonic.api.exception.LoadException;
import com.dfsek.tectonic.api.loader.ConfigLoader;
import com.dfsek.tectonic.api.loader.type.TypeLoader;
import org.jetbrains.annotations.NotNull;
import java.lang.reflect.AnnotatedType;
import java.util.List;
import java.util.Map;
import com.dfsek.terra.api.util.vector.Vector3Int;
public class Vector3IntLoader implements TypeLoader<Vector3Int> {
@SuppressWarnings("unchecked")
@Override
public Vector3Int load(@NotNull AnnotatedType annotatedType, @NotNull Object o, @NotNull ConfigLoader configLoader,
DepthTracker depthTracker) throws LoadException {
if (o instanceof List) {
List<Integer> list = (List<Integer>) o;
return Vector3Int.of(list.get(0), list.get(1), list.get(2));
}
else {
Map<String, Integer> map = (Map<String, Integer>) o;
return Vector3Int.of(map.get("x"), map.get("y"), map.get("z"));
}
}
}

View File

@@ -0,0 +1,32 @@
package com.dfsek.terra.config.loaders;
import com.dfsek.tectonic.api.depth.DepthTracker;
import com.dfsek.tectonic.api.exception.LoadException;
import com.dfsek.tectonic.api.loader.ConfigLoader;
import com.dfsek.tectonic.api.loader.type.TypeLoader;
import org.jetbrains.annotations.NotNull;
import java.lang.reflect.AnnotatedType;
import java.util.List;
import java.util.Map;
import com.dfsek.terra.api.util.vector.Vector3;
public class Vector3Loader implements TypeLoader<Vector3> {
@SuppressWarnings("unchecked")
@Override
public Vector3 load(@NotNull AnnotatedType annotatedType, @NotNull Object o, @NotNull ConfigLoader configLoader,
DepthTracker depthTracker) throws LoadException {
if (o instanceof List) {
List<Double> list = (List<Double>) o;
return Vector3.of(list.get(0), list.get(1), list.get(2));
}
else {
Map<String, Double> map = (Map<String, Double>) o;
return Vector3.of(map.get("x"), map.get("y"), map.get("z"));
}
}
}