X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=sixth-3d.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fe3d%2Frenderer%2Fraster%2Fshapes%2Fcomposite%2Ftextcanvas%2FTextCanvas.java;fp=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fe3d%2Frenderer%2Fraster%2Fshapes%2Fcomposite%2Ftextcanvas%2FTextCanvas.java;h=8c3e49f51218b82d7a8b7a66d4b25083648873df;hp=f77f71e79a24f173c11efb7cb83d9f12f8ce6ebf;hb=a2131986d65a769e3d589e4e0370d4af0ce10c38;hpb=ca3c5528af8dda8e30f1d698ef921f6443632f54 diff --git a/src/main/java/eu/svjatoslav/sixth/e3d/renderer/raster/shapes/composite/textcanvas/TextCanvas.java b/src/main/java/eu/svjatoslav/sixth/e3d/renderer/raster/shapes/composite/textcanvas/TextCanvas.java index f77f71e..8c3e49f 100644 --- a/src/main/java/eu/svjatoslav/sixth/e3d/renderer/raster/shapes/composite/textcanvas/TextCanvas.java +++ b/src/main/java/eu/svjatoslav/sixth/e3d/renderer/raster/shapes/composite/textcanvas/TextCanvas.java @@ -19,6 +19,8 @@ import java.io.StringReader; import static eu.svjatoslav.sixth.e3d.renderer.raster.Color.BLACK; import static eu.svjatoslav.sixth.e3d.renderer.raster.Color.WHITE; +import static java.lang.Math.PI; +import static java.lang.Math.abs; public class TextCanvas extends TexturedRectangle { @@ -132,29 +134,26 @@ public class TextCanvas extends TexturedRectangle { @Override public void beforeTransformHook(final TransformsStack transformPipe, final RenderingContext context) { + ensureOptimalRenderMode(context); + } - final double textRelativeSize = context.width - / getRelativityTracker().getDistanceToUser(); + private void ensureOptimalRenderMode(RenderingContext context) { + // if the text is too far away, use texture + final double textRelativeSize = context.width / getRelativityTracker().getDistanceToUser(); if (textRelativeSize < 2d) { - if (renderMode == RenderMode.CHARACTERS) - setRenderMode(RenderMode.TEXTURE); + setRenderMode(RenderMode.TEXTURE); return; } - final double piHalf = Math.PI / 2; - - final double deviation = Math.abs(getRelativityTracker().getAngleXZ() + // if user is looking at the text from the side, use texture + final double piHalf = PI / 2; + final double deviation = abs(getRelativityTracker().getAngleXZ() + piHalf) - + Math.abs(getRelativityTracker().getAngleYZ() + piHalf); + + abs(getRelativityTracker().getAngleYZ() + piHalf); final double maxDeviation = 0.5; - - if (deviation > maxDeviation) { - if (renderMode == RenderMode.CHARACTERS) - setRenderMode(RenderMode.TEXTURE); - } else if (renderMode == RenderMode.TEXTURE) - setRenderMode(RenderMode.CHARACTERS); + setRenderMode(deviation > maxDeviation ? RenderMode.TEXTURE : RenderMode.CHARACTERS); } public void clear() {