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%2FGalaxy.java;h=13ba6b0bb464ebc2592c1f628f49fa17fb4a5f90;hp=dcfc611d07f142488fe49b17a05631338aeafcc7;hb=59baa428fb2d9e7f0fe5423f4cea47f2d6245914;hpb=03447008b8ee26a6463d2cd03005dc26464863db diff --git a/src/main/java/eu/svjatoslav/sixth/e3d/renderer/raster/shapes/composite/Galaxy.java b/src/main/java/eu/svjatoslav/sixth/e3d/renderer/raster/shapes/composite/Galaxy.java index dcfc611..13ba6b0 100755 --- a/src/main/java/eu/svjatoslav/sixth/e3d/renderer/raster/shapes/composite/Galaxy.java +++ b/src/main/java/eu/svjatoslav/sixth/e3d/renderer/raster/shapes/composite/Galaxy.java @@ -1,5 +1,5 @@ /* - * Sixth 3D engine. Copyright ©2012-2016, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu + * Sixth 3D engine. Copyright ©2012-2019, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu * * This program is free software; you can redistribute it and/or * modify it under the terms of version 3 of the GNU Lesser General Public License @@ -10,28 +10,25 @@ package eu.svjatoslav.sixth.e3d.renderer.raster.shapes.composite; import eu.svjatoslav.sixth.e3d.geometry.Point3D; -import eu.svjatoslav.sixth.e3d.geometry.Transform; +import eu.svjatoslav.sixth.e3d.math.Transform; import eu.svjatoslav.sixth.e3d.renderer.raster.Color; -import eu.svjatoslav.sixth.e3d.renderer.raster.shapes.basic.ForwardOrientedTexture; import eu.svjatoslav.sixth.e3d.renderer.raster.shapes.basic.GlowingPoint; import eu.svjatoslav.sixth.e3d.renderer.raster.shapes.composite.base.AbstractCompositeShape; -import eu.svjatoslav.sixth.e3d.renderer.raster.texture.Texture; +import java.util.ArrayList; +import java.util.List; import java.util.Random; -import java.util.Vector; public class Galaxy extends AbstractCompositeShape { - private Vector textures; + private static List colors; public Galaxy(final int size, final int tailCount, final int starsCount, Transform transform) { super(transform); - Point3D location = new Point3D(); - - createReusableTextures(); + ensureColorsAreInitialized(); final double angle1 = Math.random() * 10; final double angle2 = Math.random() * 10; @@ -67,32 +64,28 @@ public class Galaxy extends AbstractCompositeShape { final double y1 = (y * angleCos2) + (z1 * angleSin2); final double z2 = (z1 * angleCos2) - (y * angleSin2); - final Point3D point3d = new Point3D(x1 + location.x, y1 - + location.y, z2 + location.z); - - addStar(point3d); + addStar(new Point3D(x1, y1, z2)); } } - public void addStar(final Point3D point3d) { - - final Texture texture = textures.get((int) (Math.random() * textures - .size())); - - addShape(new ForwardOrientedTexture(point3d, 10, texture)); + private void addStar(final Point3D starLocation) { + addShape( + new GlowingPoint(starLocation, 10, + colors.get((int) (Math.random() * colors.size())))); } - public void createReusableTextures() { - textures = new Vector<>(); - - for (int i = 0; i < 30; i++) { - final GlowingPoint glowingPoint = new GlowingPoint(null, 1, - new Color(Math.random() + 0.5, Math.random() + 0.5, - Math.random() + 0.5, 255)); + private synchronized void ensureColorsAreInitialized() { + if (colors != null) return; - textures.add(glowingPoint.texture); + colors = new ArrayList<>(); - } + for (int i = 0; i < 30; i++) + colors.add( + new Color( + Math.random() + 0.5, + Math.random() + 0.5, + Math.random() + 0.5, + 255)); } }