aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libjin/common/je_common.h1
-rw-r--r--src/libjin/common/je_string.h15
-rw-r--r--src/libjin/graphics/fonts/je_texture_font.cpp4
-rw-r--r--src/libjin/graphics/fonts/je_ttf.cpp4
-rw-r--r--src/libjin/graphics/je_graphic.cpp16
-rw-r--r--src/libjin/graphics/je_render_target.cpp0
-rw-r--r--src/libjin/graphics/je_render_target.h0
-rw-r--r--src/libjin/graphics/je_shapes.cpp10
-rw-r--r--src/libjin/graphics/shaders/je_shader.cpp11
-rw-r--r--src/libjin/graphics/shaders/je_shader.h14
-rw-r--r--src/libjin/math/je_matrix.h1
-rw-r--r--src/lua/embed/embed.h7
12 files changed, 55 insertions, 28 deletions
diff --git a/src/libjin/common/je_common.h b/src/libjin/common/je_common.h
index 31b67c6..a34268a 100644
--- a/src/libjin/common/je_common.h
+++ b/src/libjin/common/je_common.h
@@ -3,5 +3,6 @@
#include "je_exception.h"
#include "je_array.hpp"
+#include "je_string.h"
#endif \ No newline at end of file
diff --git a/src/libjin/common/je_string.h b/src/libjin/common/je_string.h
index db0cffb..4e46f17 100644
--- a/src/libjin/common/je_string.h
+++ b/src/libjin/common/je_string.h
@@ -24,6 +24,11 @@ namespace JinEngine
{
}
+ inline String(const char* str)
+ : std::string(str)
+ {
+ }
+
inline String& operator = (const String& str)
{
std::string::operator=(str);
@@ -45,11 +50,6 @@ namespace JinEngine
{
}
- inline String(const char* nts)
- : std::string(nts)
- {
- }
-
inline String(const char* buf, size_type bufsize)
: std::string(buf, bufsize)
{
@@ -60,6 +60,11 @@ namespace JinEngine
{
}
+ inline int length() const
+ {
+ return size();
+ }
+
};
}
diff --git a/src/libjin/graphics/fonts/je_texture_font.cpp b/src/libjin/graphics/fonts/je_texture_font.cpp
index 4f2378b..4fd1af1 100644
--- a/src/libjin/graphics/fonts/je_texture_font.cpp
+++ b/src/libjin/graphics/fonts/je_texture_font.cpp
@@ -281,8 +281,8 @@ namespace JinEngine
for (int i = 0; i < glyphinfolist.size(); ++i)
{
const GlyphArrayDrawInfo& info = glyphinfolist[i];
- shader->setVertexPointer(2, GL_INT, sizeof(GlyphVertex), &glyphvertices[info.start].x);
- shader->setUVPointer(2, GL_FLOAT, sizeof(GlyphVertex), &glyphvertices[info.start].u);
+ shader->uploadVertices(2, GL_INT, sizeof(GlyphVertex), &glyphvertices[info.start].x);
+ shader->uploadUV(2, GL_FLOAT, sizeof(GlyphVertex), &glyphvertices[info.start].u);
gl.bindTexture(info.texture);
gl.drawArrays(GL_QUADS, 0, info.count);
gl.bindTexture(0);
diff --git a/src/libjin/graphics/fonts/je_ttf.cpp b/src/libjin/graphics/fonts/je_ttf.cpp
index 40008d3..29bc834 100644
--- a/src/libjin/graphics/fonts/je_ttf.cpp
+++ b/src/libjin/graphics/fonts/je_ttf.cpp
@@ -300,8 +300,8 @@ namespace JinEngine
for (int i = 0; i < glyphinfolist.size(); ++i)
{
const GlyphArrayDrawInfo& info = glyphinfolist[i];
- shader->setVertexPointer(2, GL_INT, sizeof(GlyphVertex), &glyphvertices[info.start].x);
- shader->setUVPointer(2, GL_FLOAT, sizeof(GlyphVertex), &glyphvertices[info.start].u);
+ shader->uploadVertices(2, GL_INT, sizeof(GlyphVertex), &glyphvertices[info.start].x);
+ shader->uploadUV(2, GL_FLOAT, sizeof(GlyphVertex), &glyphvertices[info.start].u);
gl.bindTexture(info.texture);
gl.drawArrays(GL_QUADS, 0, info.count);
gl.bindTexture(0);
diff --git a/src/libjin/graphics/je_graphic.cpp b/src/libjin/graphics/je_graphic.cpp
index ef56ef0..a0c2257 100644
--- a/src/libjin/graphics/je_graphic.cpp
+++ b/src/libjin/graphics/je_graphic.cpp
@@ -55,7 +55,7 @@ namespace JinEngine
void Graphic::render(float x, float y, float sx, float sy, float r, float ox, float oy) const
{
- Math::Matrix modelMatrix = gl.getModelViewMatrix(x, y, sx, sy, r, ox, oy);
+ Math::Matrix modelViewMatrix = gl.getModelViewMatrix(x, y, sx, sy, r, ox, oy);
int w = getWidth(), h = getHeight();
static float vertexCoords[8];
static float textureCoords[8];
@@ -71,10 +71,10 @@ namespace JinEngine
textureCoords[6] = 1; textureCoords[7] = 0;
// Set shader.
Shader* shader = gl.getShader();
- shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
+ shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelViewMatrix);
shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
- shader->setVertexPointer(2, GL_FLOAT, 0, vertexCoords);
- shader->setUVPointer(2, GL_FLOAT, 0, textureCoords);
+ shader->uploadVertices(2, GL_FLOAT, 0, vertexCoords);
+ shader->uploadUV(2, GL_FLOAT, 0, textureCoords);
gl.bindTexture(getGLTexture());
gl.drawArrays(GL_QUADS, 0, 4);
@@ -101,13 +101,13 @@ namespace JinEngine
textureCoords[4] = slx + slw; textureCoords[5] = sly + slh;
textureCoords[6] = slx + slw; textureCoords[7] = sly;
- Math::Matrix modelMatrix = gl.getModelViewMatrix(x, y, sx, sy, r, ax, ay);
+ Math::Matrix modelViewMatrix = gl.getModelViewMatrix(x, y, sx, sy, r, ax, ay);
Shader* shader = gl.getShader();
- shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
+ shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelViewMatrix);
shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
- shader->setVertexPointer(2, GL_FLOAT, 0, vertexCoords);
- shader->setUVPointer(2, GL_FLOAT, 0, textureCoords);
+ shader->uploadVertices(2, GL_FLOAT, 0, vertexCoords);
+ shader->uploadUV(2, GL_FLOAT, 0, textureCoords);
gl.bindTexture(getGLTexture());
gl.drawArrays(GL_QUADS, 0, 4);
diff --git a/src/libjin/graphics/je_render_target.cpp b/src/libjin/graphics/je_render_target.cpp
deleted file mode 100644
index e69de29..0000000
--- a/src/libjin/graphics/je_render_target.cpp
+++ /dev/null
diff --git a/src/libjin/graphics/je_render_target.h b/src/libjin/graphics/je_render_target.h
deleted file mode 100644
index e69de29..0000000
--- a/src/libjin/graphics/je_render_target.h
+++ /dev/null
diff --git a/src/libjin/graphics/je_shapes.cpp b/src/libjin/graphics/je_shapes.cpp
index 02c007d..96a4f76 100644
--- a/src/libjin/graphics/je_shapes.cpp
+++ b/src/libjin/graphics/je_shapes.cpp
@@ -23,7 +23,7 @@ namespace JinEngine
float verts[] = { x + 0.5f , y + 0.5f };
Shader* shader = gl.getShader();
- shader->setVertexPointer(2, GL_FLOAT, 0, verts);
+ shader->uploadVertices(2, GL_FLOAT, 0, verts);
Matrix modelMatrix = gl.getModelViewMatrix();
shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
@@ -34,7 +34,7 @@ namespace JinEngine
void points(int n, GLshort* p)
{
Shader* shader = gl.getShader();
- shader->setVertexPointer(2, GL_SHORT, 0, p);
+ shader->uploadVertices(2, GL_SHORT, 0, p);
Matrix modelMatrix = gl.getModelViewMatrix();
shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
@@ -50,7 +50,7 @@ namespace JinEngine
};
Shader* shader = gl.getShader();
- shader->setVertexPointer(2, GL_FLOAT, 0, verts);
+ shader->uploadVertices(2, GL_FLOAT, 0, verts);
Matrix modelMatrix = gl.getModelViewMatrix();
shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
@@ -101,7 +101,7 @@ namespace JinEngine
Matrix modelMatrix = gl.getModelViewMatrix();
shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
- shader->setVertexPointer(2, GL_FLOAT, 0, p);
+ shader->uploadVertices(2, GL_FLOAT, 0, p);
glDrawArrays(GL_LINE_LOOP, 0, count);
}
@@ -118,7 +118,7 @@ namespace JinEngine
Matrix modelMatrix = gl.getModelViewMatrix();
shader->sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix);
shader->sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
- shader->setVertexPointer(2, GL_FLOAT, 0, p);
+ shader->uploadVertices(2, GL_FLOAT, 0, p);
glDrawArrays(GL_POLYGON, 0, count);
}
diff --git a/src/libjin/graphics/shaders/je_shader.cpp b/src/libjin/graphics/shaders/je_shader.cpp
index b7a4bba..8fbb133 100644
--- a/src/libjin/graphics/shaders/je_shader.cpp
+++ b/src/libjin/graphics/shaders/je_shader.cpp
@@ -252,20 +252,27 @@ if (success == GL_FALSE) \
glUniformMatrix4fv(loc, 1, GL_FALSE, mat4->getElements());
}
- void Shader::setVertexPointer(int n, GLenum type, GLsizei stride, const GLvoid * pointers)
+ void Shader::uploadVertices(int n, GLenum type, GLsizei stride, const GLvoid * pointers)
{
GLint loc = glGetAttribLocation(mPID, SHADER_VERTEX_COORDS);
glEnableVertexAttribArray(0);
glVertexAttribPointer(loc, n, type, GL_FALSE, stride, pointers);
}
- void Shader::setUVPointer(int n, GLenum type, GLsizei stride, const GLvoid * pointers)
+ void Shader::uploadUV(int n, GLenum type, GLsizei stride, const GLvoid * pointers)
{
GLint loc = glGetAttribLocation(mPID, SHADER_TEXTURE_COORDS);
glEnableVertexAttribArray(1);
glVertexAttribPointer(loc, n, type, GL_FALSE, stride, pointers);
}
+ void Shader::uploadAttribute(const String& name, int n, GLenum type, GLsizei stride, const GLvoid * pointers)
+ {
+ GLint loc = glGetAttribLocation(mPID, name);
+ glEnableVertexAttribArray(1);
+ glVertexAttribPointer(loc, n, type, GL_FALSE, stride, pointers);
+ }
+
} // namespace Shaders
} // namespace Graphics
} // namespace JinEngine
diff --git a/src/libjin/graphics/shaders/je_shader.h b/src/libjin/graphics/shaders/je_shader.h
index a92e206..9056d51 100644
--- a/src/libjin/graphics/shaders/je_shader.h
+++ b/src/libjin/graphics/shaders/je_shader.h
@@ -9,6 +9,8 @@
#include "GLee/GLee.h"
+#include "../../common/je_string.h"
+
#include "../je_color.h"
#include "../je_texture.h"
#include "../je_canvas.h"
@@ -130,7 +132,7 @@ namespace JinEngine
/// @param stride Byte offset between consecutive generic vertex attributes.
/// @param pointers Pointer to the first component of the first generic vertex attribute in the array.
///
- void setVertexPointer(int n, GLenum type, GLsizei stride, const GLvoid * pointers);
+ void uploadVertices(int n, GLenum type, GLsizei stride, const GLvoid * pointers);
///
/// Set texture UV coordinates.
@@ -140,8 +142,16 @@ namespace JinEngine
/// @param stride Byte offset between consecutive generic vertex attributes.
/// @param pointers Pointer to the first component of the first generic vertex attribute in the array.
///
- void setUVPointer(int n, GLenum type, GLsizei stride, const GLvoid * pointers);
+ void uploadUV(int n, GLenum type, GLsizei stride, const GLvoid * pointers);
+
+ ///
+ /// Set attribute.
+ ///
+ void uploadAttribute(const String& name, int n, GLenum type, GLsizei stride, const GLvoid * pointers);
+ ///
+ /// Program ID.
+ ///
inline GLuint getGLProgramID() { return mPID; };
protected:
diff --git a/src/libjin/math/je_matrix.h b/src/libjin/math/je_matrix.h
index f35b88b..65f080b 100644
--- a/src/libjin/math/je_matrix.h
+++ b/src/libjin/math/je_matrix.h
@@ -12,6 +12,7 @@ namespace JinEngine
float x, y;
float s, t;
};
+
///
/// This class is the basis for all transformations in LOVE. Althought not
/// really needed for 2D, it contains 4x4 elements to be compatible with
diff --git a/src/lua/embed/embed.h b/src/lua/embed/embed.h
index b5e1334..1928dd5 100644
--- a/src/lua/embed/embed.h
+++ b/src/lua/embed/embed.h
@@ -24,18 +24,21 @@ namespace JinEngine
{ "graphics.lua", graphics_lua },
{ "keyboard.lua", keyboard_lua },
{ "mouse.lua", mouse_lua },
- { "boot.lua", boot_lua },
{ 0, 0 }
};
+ static const jin_Embed bootscript = { "boot.lua", boot_lua };
+
static void run(lua_State* L)
{
for (int i = 0; modules[i].file; ++i)
{
const char* file = modules[i].file, *source = modules[i].source;
if (luax_loadbuffer(L, source, strlen(source), file) == 0)
- lua_call(L, 0, 0);
+ luax_call(L, 0, 0);
}
+ if (luax_loadbuffer(L, bootscript.source, strlen(bootscript.source), bootscript.file) == 0)
+ luax_call(L, 0, 0);
}
} // namespace Embed