Well, its [i]a[/i] cube.
-Added CubeComponent to render a cube to the screen -Added it to the title screen
This commit is contained in:
parent
eb5aa59941
commit
ce9e95e5ce
92
src/main/java/ru/windcorp/progressia/test/CubeComponent.java
Normal file
92
src/main/java/ru/windcorp/progressia/test/CubeComponent.java
Normal file
@ -0,0 +1,92 @@
|
||||
package ru.windcorp.progressia.test;
|
||||
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import glm.mat._4.Mat4;
|
||||
import glm.vec._3.Vec3;
|
||||
import glm.vec._4.Vec4;
|
||||
import ru.windcorp.progressia.client.graphics.flat.RenderTarget;
|
||||
import ru.windcorp.progressia.client.graphics.gui.Component;
|
||||
|
||||
public class CubeComponent extends Component {
|
||||
|
||||
private Mat4 transforms[];
|
||||
|
||||
private final double pi2 = Math.PI/2;
|
||||
private final double r3 = Math.sqrt(3);
|
||||
|
||||
private ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
|
||||
|
||||
private int size = 100;
|
||||
|
||||
public CubeComponent(String name) {
|
||||
super(name);
|
||||
transforms = new Mat4[6];
|
||||
setPreferredSize((int) Math.ceil(r3*size),(int) Math.ceil(r3*size));
|
||||
executor.scheduleAtFixedRate(() -> requestReassembly(), 1, 60, TimeUnit.MILLISECONDS);
|
||||
}
|
||||
|
||||
// Notes to me
|
||||
// z axis is through the screen
|
||||
// y is horizontal spin
|
||||
// x is vertical spin
|
||||
|
||||
|
||||
private void computeTransforms()
|
||||
{
|
||||
transforms[0] = new Mat4(1);
|
||||
transforms[1] = new Mat4(1);
|
||||
transforms[2] = new Mat4(1);
|
||||
transforms[3] = new Mat4(1);
|
||||
transforms[4] = new Mat4(1);
|
||||
transforms[5] = new Mat4(1);
|
||||
|
||||
long time = System.currentTimeMillis();
|
||||
|
||||
for (int i=0;i<6;i++)
|
||||
{
|
||||
transforms[i].rotate((float) (time%(1000*6.28) )/ 1000, new Vec3(0,1,0)).rotate((float) (time%(6777*6.28) )/ 6777, new Vec3(1,0,0));
|
||||
}
|
||||
|
||||
transforms[0] = transforms[0].translate(new Vec3(-50,-50,60));
|
||||
transforms[1] = transforms[1].translate(new Vec3(-50,-60,-50)).rotate((float) pi2, new Vec3(1,0,0));
|
||||
transforms[2] = transforms[2].translate(new Vec3(-40,-50,50)).rotate((float) pi2, new Vec3(0,1,0));
|
||||
transforms[3] = transforms[3].translate(new Vec3(-50,-50,-40));
|
||||
transforms[4] = transforms[4].translate(new Vec3(-50,40,-50)).rotate((float) pi2, new Vec3(1,0,0));
|
||||
transforms[5] = transforms[5].translate(new Vec3(60,-50,50)).rotate((float) pi2, new Vec3(0,1,0));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void assembleSelf(RenderTarget target)
|
||||
{
|
||||
computeTransforms();
|
||||
|
||||
int b=0;
|
||||
|
||||
target.pushTransform(new Mat4(1).translate(new Vec3(size,size,0)));
|
||||
|
||||
for (Mat4 tr : transforms)
|
||||
{
|
||||
target.pushTransform(tr);
|
||||
switch (b%3)
|
||||
{
|
||||
case 0:
|
||||
target.fill(0, 0, size, size, new Vec4(255,0,0,255));
|
||||
break;
|
||||
case 1:
|
||||
target.fill(0, 0, size, size, new Vec4(0,255,0,255));
|
||||
break;
|
||||
case 2:
|
||||
target.fill(0, 0, size, size, new Vec4(0,0,255,255));
|
||||
break;
|
||||
}
|
||||
|
||||
b++;
|
||||
target.popTransform();
|
||||
}
|
||||
|
||||
target.popTransform();
|
||||
}
|
||||
}
|
@ -51,6 +51,8 @@ public class LayerTitle extends GUILayer {
|
||||
System.exit(0);
|
||||
}));
|
||||
|
||||
content.addChild(new CubeComponent(name+".Cube"));
|
||||
|
||||
getRoot().addChild(content);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user