Android Open Source - RollOverSphere---a-simple-libgdx-game Sphere Mesh From Project Back to project page RollOverSphere---a-simple-libgdx-game .
License The source code is released under:
MIT License
If you think the Android project RollOverSphere---a-simple-libgdx-game listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code package com.igorcrevar.rolloverchuck.mesh;
/ * w w w . j a v a 2 s . c o m * /
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Mesh;
import com.badlogic.gdx.graphics.VertexAttribute;
import com.badlogic.gdx.graphics.glutils.ShaderProgram;
import com.igorcrevar.rolloverchuck.GameData;
public class SphereMesh implements IMesh {
private Mesh mesh;
public SphereMesh(GameData gameData){
mesh = getMesh(20, 20, gameData.Chuck_r, true);
}
@Override
public void draw(ShaderProgram shaderProgram) {
mesh.render(shaderProgram, GL20.GL_TRIANGLES);
}
@Override
public void dispose() {
mesh.dispose();
}
private Mesh getMesh(int rings, int sectors, float radius, boolean color) {
float ringFactor = 1.0f / (rings - 1);
float sectorFactor = 1.0f / (sectors - 1);
int verticesNum = rings * sectors;
verticesNum *= (!color ? 5 : 7);
float vertices[] = new float [verticesNum];
int vIndex = 0;
for (int r = 0; r < rings; r++) {
for (int s = 0; s < sectors; s++) {
float sf = s * sectorFactor;
float rf = r * ringFactor;
float x = (float )(Math.cos(Math.PI * 2.0f * sf) * Math.sin(Math.PI * rf));
float y = (float )Math.sin(-Math.PI / 2.0f + Math.PI * rf);
float z = (float )(Math.sin(Math.PI * 2.0f * sf) * Math.sin(Math.PI * rf));
vertices[vIndex++] = x * radius;
vertices[vIndex++] = y * radius;
vertices[vIndex++] = z * radius;
if (!color) {
vertices[vIndex++] = s * sectorFactor;
vertices[vIndex++] = r * ringFactor;
}
else {
float factor = (sf + rf) / 2.0f * 4.0f;
float colorFloat = Color.toFloatBits(255, 245, (int )(factor * 40.0f) + 20, 255);
vertices[vIndex++] = colorFloat;
vertices[vIndex++] = x;
vertices[vIndex++] = y;
vertices[vIndex++] = z;
}
}
}
int indicesNum = (rings - 1) * (sectors - 1) * 6;
short [] indices = new short [indicesNum];
int iIndex = 0;
for (int r = 0; r < rings - 1; r++) {
for (int s = 0; s < sectors - 1; s++) {
int curRow = r * sectors;
int nextRow = (r+1) * sectors;
indices[iIndex++] = (short )(curRow + s);
indices[iIndex++] = (short )(nextRow + s);
indices[iIndex++] = (short )(nextRow + (s+1));
indices[iIndex++] = (short )(curRow + s);
indices[iIndex++] = (short )(nextRow + (s+1));
indices[iIndex++] = (short )(curRow + (s+1));
}
}
// populate normals
//com.igorcrevar.rolloverchuck.utils.GameHelper.populateNormals(vertices, indices, 7, 0, 4);
// final create libgdx mesh
Mesh newMesh = new Mesh(true, verticesNum, indicesNum, VertexAttribute.Position(), VertexAttribute.Color(), VertexAttribute.Normal());
newMesh.setIndices(indices);
newMesh.setVertices(vertices);
return newMesh;
}
}
Java Source Code List com.google.example.games.basegameutils.GameHelperUtils.java com.google.example.games.basegameutils.GameHelper.java com.igorcrevar.rolloverchuck.DesktopRunner.java com.igorcrevar.rolloverchuck.GameConsts.java com.igorcrevar.rolloverchuck.GameData.java com.igorcrevar.rolloverchuck.GameListener.java com.igorcrevar.rolloverchuck.GameManager.java com.igorcrevar.rolloverchuck.GameType.java com.igorcrevar.rolloverchuck.IActivityRequestHandler.java com.igorcrevar.rolloverchuck.ISceneManager.java com.igorcrevar.rolloverchuck.IScene.java com.igorcrevar.rolloverchuck.mesh.CubeMeshWithNormals.java com.igorcrevar.rolloverchuck.mesh.CubeMesh.java com.igorcrevar.rolloverchuck.mesh.FieldMesh.java com.igorcrevar.rolloverchuck.mesh.IMesh.java com.igorcrevar.rolloverchuck.mesh.SphereMesh.java com.igorcrevar.rolloverchuck.objects.BoxObject.java com.igorcrevar.rolloverchuck.objects.ChuckObject.java com.igorcrevar.rolloverchuck.objects.ChuckSpriteObject.java com.igorcrevar.rolloverchuck.objects.EndGameButtonsObject.java com.igorcrevar.rolloverchuck.objects.FieldObject.java com.igorcrevar.rolloverchuck.objects.GameButton.java com.igorcrevar.rolloverchuck.objects.IntroSceneButtonsObject.java com.igorcrevar.rolloverchuck.objects.MainWallObject.java com.igorcrevar.rolloverchuck.objects.StarsObject.java com.igorcrevar.rolloverchuck.objects.TextButton.java com.igorcrevar.rolloverchuck.objects.TrailObject.java com.igorcrevar.rolloverchuck.objects.boxes.BoxManager.java com.igorcrevar.rolloverchuck.objects.boxes.BoxRegionManager.java com.igorcrevar.rolloverchuck.objects.boxes.BoxRegion.java com.igorcrevar.rolloverchuck.objects.boxes.BoxTypeFactory.java com.igorcrevar.rolloverchuck.objects.boxes.IBoxRegion.java com.igorcrevar.rolloverchuck.objects.boxes.IBoxType.java com.igorcrevar.rolloverchuck.physics.CollisionSolver.java com.igorcrevar.rolloverchuck.physics.ICollisionIterationHandler.java com.igorcrevar.rolloverchuck.physics.SphereMoving.java com.igorcrevar.rolloverchuck.points.PlayerPoint.java com.igorcrevar.rolloverchuck.points.PointsManager.java com.igorcrevar.rolloverchuck.scenes.GameLoadingScene.java com.igorcrevar.rolloverchuck.scenes.GameScene.java com.igorcrevar.rolloverchuck.scenes.IntroScene.java com.igorcrevar.rolloverchuck.scenes.GameMode.ArcadeGameMode.java com.igorcrevar.rolloverchuck.scenes.GameMode.IGameMode.java com.igorcrevar.rolloverchuck.scenes.GameMode.StressFreeGameMode.java com.igorcrevar.rolloverchuck.utils.CollisionHelper.java com.igorcrevar.rolloverchuck.utils.GameHelper.java com.igorcrevar.rolloverchuck.utils.IMyFontDrawerFont.java com.igorcrevar.rolloverchuck.utils.Mathf.java com.igorcrevar.rolloverchuck.utils.MyFontDrawerBatch.java com.igorcrevar.rolloverchuck.utils.MyFontDrawerDefaultFont.java com.igorcrevar.rolloverchuck.utils.MyFontDrawer.java com.igorcrevar.rolloverchuck.utils.ShaderAssetLoader.java com.wayilookatgames.rolloverball.MainActivity.java