mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-17 22:31:52 +00:00
Add rotate color sampler
This commit is contained in:
+4
@@ -5,6 +5,8 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
|
|||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.image.config.ImageLoader;
|
import com.dfsek.terra.addons.image.config.ImageLoader;
|
||||||
|
import com.dfsek.terra.addons.image.config.sampler.RotateColorSamplerTemplate;
|
||||||
|
import com.dfsek.terra.addons.image.config.sampler.ConstantColorSamplerTemplate;
|
||||||
import com.dfsek.terra.addons.image.config.sampler.SingleColorSamplerTemplate;
|
import com.dfsek.terra.addons.image.config.sampler.SingleColorSamplerTemplate;
|
||||||
import com.dfsek.terra.addons.image.config.sampler.TileColorSamplerTemplate;
|
import com.dfsek.terra.addons.image.config.sampler.TileColorSamplerTemplate;
|
||||||
import com.dfsek.terra.addons.image.image.Image;
|
import com.dfsek.terra.addons.image.image.Image;
|
||||||
@@ -44,6 +46,8 @@ public class ImageLibraryAddon implements AddonInitializer {
|
|||||||
COLOR_PICKER_REGISTRY_KEY);
|
COLOR_PICKER_REGISTRY_KEY);
|
||||||
colorSamplerRegistry.register(addon.key("SINGLE"), SingleColorSamplerTemplate::new);
|
colorSamplerRegistry.register(addon.key("SINGLE"), SingleColorSamplerTemplate::new);
|
||||||
colorSamplerRegistry.register(addon.key("TILED"), TileColorSamplerTemplate::new);
|
colorSamplerRegistry.register(addon.key("TILED"), TileColorSamplerTemplate::new);
|
||||||
|
colorSamplerRegistry.register(addon.key("COLOR"), ConstantColorSamplerTemplate::new);
|
||||||
|
colorSamplerRegistry.register(addon.key("ROTATE"), RotateColorSamplerTemplate::new);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
package com.dfsek.terra.addons.image.config.sampler;
|
||||||
|
|
||||||
|
import com.dfsek.tectonic.api.config.template.annotations.Value;
|
||||||
|
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
|
||||||
|
|
||||||
|
import com.dfsek.terra.addons.image.sampler.ColorSampler;
|
||||||
|
|
||||||
|
|
||||||
|
public class ConstantColorSamplerTemplate implements ObjectTemplate<ColorSampler> {
|
||||||
|
|
||||||
|
@Value("color")
|
||||||
|
private int color;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ColorSampler get() {
|
||||||
|
return ((x, z) -> color);
|
||||||
|
}
|
||||||
|
}
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
package com.dfsek.terra.addons.image.config.sampler;
|
||||||
|
|
||||||
|
import com.dfsek.tectonic.api.config.template.annotations.Value;
|
||||||
|
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
|
||||||
|
import net.jafama.FastMath;
|
||||||
|
|
||||||
|
import com.dfsek.terra.addons.image.sampler.ColorSampler;
|
||||||
|
import com.dfsek.terra.addons.image.sampler.RotateColorSampler;
|
||||||
|
|
||||||
|
|
||||||
|
public class RotateColorSamplerTemplate implements ObjectTemplate<ColorSampler> {
|
||||||
|
|
||||||
|
@Value("image")
|
||||||
|
private ColorSampler sampler;
|
||||||
|
|
||||||
|
@Value("angle")
|
||||||
|
private double angle;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ColorSampler get() {
|
||||||
|
return new RotateColorSampler(sampler, FastMath.toRadians(angle));
|
||||||
|
}
|
||||||
|
}
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
package com.dfsek.terra.addons.image.sampler;
|
||||||
|
|
||||||
|
import net.jafama.FastMath;
|
||||||
|
|
||||||
|
|
||||||
|
public class RotateColorSampler implements ColorSampler {
|
||||||
|
|
||||||
|
private final ColorSampler sampler;
|
||||||
|
|
||||||
|
private final double radians;
|
||||||
|
|
||||||
|
public RotateColorSampler(ColorSampler sampler, double radians) {
|
||||||
|
this.sampler = sampler;
|
||||||
|
this.radians = radians;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer apply(int x, int z) {
|
||||||
|
return sampler.apply(
|
||||||
|
(int) (x * FastMath.cos(radians) - z * FastMath.sin(radians)),
|
||||||
|
(int) (z * FastMath.cos(radians) + x * FastMath.sin(radians))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user