package com.gebauz.libGDXtest;
import java.io.IOException;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.gebauz.Bauzoid.app.Consts;
import com.gebauz.Bauzoid.app.Game;
import com.gebauz.Bauzoid.gamestates.BaseGameState;
import com.gebauz.Bauzoid.graphics.Font;
import com.gebauz.Bauzoid.graphics.FontUtil;
import com.gebauz.Bauzoid.graphics.model.Geometry;
import com.gebauz.Bauzoid.graphics.model.Model;
import com.gebauz.Bauzoid.graphics.model.ModelUtil;
import com.gebauz.Bauzoid.graphics.model.SimpleGeometry;
import com.gebauz.Bauzoid.graphics.shader.ShaderProgram;
import com.gebauz.Bauzoid.graphics.shader.ShaderUtil;
//import com.gebauz.Bauzoid.graphics.sprite.AnimatedSprite;
//import com.gebauz.Bauzoid.graphics.sprite.Animation;
import com.gebauz.Bauzoid.graphics.sprite.AtlasSprite;
import com.gebauz.Bauzoid.graphics.sprite.AtlasSpriteInstance;
//import com.gebauz.Bauzoid.graphics.sprite.AnimationFrame;
import com.gebauz.Bauzoid.graphics.sprite.SpriteRegion;
import com.gebauz.Bauzoid.graphics.sprite.Sprite;
import com.gebauz.Bauzoid.math.MathUtil;
import com.gebauz.Bauzoid.math.Matrix4;
import com.gebauz.Bauzoid.math.Vector4;
import com.gebauz.Bauzoid.parser.ScanException;
import com.gebauz.Bauzoid.parser.Tokenizer;
public class TestState
extends BaseGameState
{
private Matrix4 mProjection
;
private Matrix4 mView
;
private Matrix4 mModel
;
private Model mTestModel =
null;
//private Font mFont = null;
private AtlasSprite mSpriteAtlas
;
private AtlasSpriteInstance mSprite2
;
private AtlasSpriteInstance mSprite3
;
private float mAngle = 0.0f
;
public TestState
(Game game
)
{
super(game
);
setFading
(false,
false);
}
@
Override
public void init
()
{
try
{
mTestModel = ModelUtil.
createModelFromFile(getGame
().
getGraphics(), Gdx.
files.
internal("data/conifer.model"));
mTestModel.
upload();
}
catch (IOException e
)
{
Gdx.
app.
log("GBZ",
"exception");
}
//mFont = FontUtil.createFontFromFile(getGraphics(), Gdx.files.internal("data/Emulator12.txt"));
{
Texture texture =
new Texture
(Gdx.
files.
internal("data/testsprite2.png"));
SpriteRegion
[] regions =
{
new SpriteRegion
(texture,
0,
20,
62,
62),
new SpriteRegion
(texture,
3,
88,
80,
82)
};
mSpriteAtlas =
new AtlasSprite
(getGraphics
(), texture, regions
);
mSprite2 = mSpriteAtlas.
createSpriteInstance(0);
mSprite3 = mSpriteAtlas.
createSpriteInstance(1);
}
}
@
Override
public void exit
()
{
}
@
Override
public void update
(float deltaTime
)
{
mAngle += 90.0f
* (deltaTime
);
}
@
Override
public void render
()
{
float ratio = getGame
().
getGraphics().
getAspect();
mModel = Matrix4.
createRotationY(mAngle
);
mProjection = Matrix4.
createPerspective(45.0f, ratio, 1.0f, 300.0f
);
float distance = 15.0f + MathUtil.
sin(mAngle
) * 10.0f
;
mView = Matrix4.
createLookAt(0,
5, -distance, 0.0f, 2.0f, 0.0f, 0.0f, 1.0f, 0.0f
);
getGraphics
().
clear(0.0f, 0.3f, 0.5f, 0.0f
);
getRenderStates
().
model = mModel
;
getRenderStates
().
view = mView
;
getRenderStates
().
projection = mProjection
;
if (mTestModel
!=
null)
{
mTestModel.
render();
}
getRenderStates
().
view = Matrix4.
createIdentity();
getRenderStates
().
projection = Matrix4.
createOrtho(0.0f, Gdx.
graphics.
getWidth(), Gdx.
graphics.
getHeight(), 0.0f, 0.0f, 1.0f
);
//mFont.drawText("some test this is\nTEST EMULATOR PINGK\nJUST A TEST!", 20, 20, new Vector4(1.0f, 0.4f, 1.0f, 1.0f), 2.0f);
mSprite2.
x = 200.0f
;
mSprite2.
y = 100.0f
;
mSprite2.
render();
mSprite3.
x = 200.0f
;
mSprite3.
y = 350.0f
;
mSprite3.
angle = mAngle
;
mSprite3.
render();
int error = Gdx.
gl.
glGetError();
if (error
!= GL20.
GL_NO_ERROR)
{
Gdx.
app.
log(Consts.
LOG_TAG,
"gl error: " + error
);
}
}
}