diff options
author | Stijn Buys <ingar@osirion.org> | 2008-05-03 21:04:02 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2008-05-03 21:04:02 +0000 |
commit | 82293065b52f5a4e5c4ccde5eade4ebae18014ca (patch) | |
tree | 254f1fa3259f03f033b3d1fd225742a12de167b1 /src | |
parent | 5388c37bdc040ba50d21ec16a01f399d20592a90 (diff) |
liibmodel
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 33 | ||||
-rw-r--r-- | src/core/Makefile.am | 8 | ||||
-rw-r--r-- | src/core/entity.h | 13 | ||||
-rw-r--r-- | src/core/gameinterface.cc | 8 | ||||
-rw-r--r-- | src/model/Makefile.am | 9 | ||||
-rw-r--r-- | src/model/light.cc | 27 | ||||
-rw-r--r-- | src/model/light.h | 63 | ||||
-rw-r--r-- | src/model/model.cc (renamed from src/core/model.cc) | 154 | ||||
-rw-r--r-- | src/model/model.h (renamed from src/core/model.h) | 103 | ||||
-rw-r--r-- | src/model/vertexarray.cc | 144 | ||||
-rw-r--r-- | src/model/vertexarray.h | 57 | ||||
-rw-r--r-- | src/render/draw.cc | 18 | ||||
-rw-r--r-- | src/render/render.cc | 8 | ||||
-rw-r--r-- | src/render/render.h | 4 |
14 files changed, 358 insertions, 291 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 74a31e3..19ad3be 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -4,33 +4,34 @@ SUFFIXES = .rc .rc.o: windres $< -o $@ -SUBDIRS = math sys filesystem core server render client game +SUBDIRS = sys math filesystem model core render server client game noinst_HEADERS = config.h bin_PROGRAMS = osiriond osirion # dedicated server osiriond_SOURCES = osiriond.cc EXTRA_osiriond_SOURCES = osiriond-res.rc -osiriond_DEPENDENCIES = $(ICON_SERVER) $(top_builddir)/src/game/libgame.la \ - $(top_builddir)/src/sys/libsys.la $(top_builddir)/src/math/libmath.la \ - $(top_builddir)/src/filesystem/libfilesystem.la $(top_builddir)/src/core/libcore.la \ - $(top_builddir)/src/server/libserver.la +osiriond_DEPENDENCIES = $(ICON_SERVER) $(top_builddir)/src/core/libcore.la \ + $(top_builddir)/src/model/libmodel.la $(top_builddir)/src/filesystem/libfilesystem.la \ + $(top_builddir)/src/game/libgame.la $(top_builddir)/src/math/libmath.la \ + $(top_builddir)/src/server/libserver.la $(top_builddir)/src/sys/libsys.la osiriond_LDADD = $(top_builddir)/src/game/libgame.la \ - $(top_builddir)/src/sys/libsys.la $(top_builddir)/src/math/libmath.la \ - $(top_builddir)/src/filesystem/libfilesystem.la $(top_builddir)/src/core/libcore.la \ - $(top_builddir)/src/server/libserver.la $(HOST_LIBS) $(ICON_SERVER) + $(top_builddir)/src/core/libcore.la $(top_builddir)/src/filesystem/libfilesystem.la \ + $(top_builddir)/src/model/libmodel.la $(top_builddir)/src/math/libmath.la \ + $(top_builddir)/src/server/libserver.la $(top_builddir)/src/sys/libsys.la $(HOST_LIBS) $(ICON_SERVER) # client osirion_SOURCES = osirion.cc EXTRA_osirion_SOURCES = osirion-res.rc -osirion_DEPENDENCIES = $(ICON_CLIENT) $(top_builddir)/src/game/libgame.la \ - $(top_builddir)/src/sys/libsys.la $(top_builddir)/src/math/libmath.la \ - $(top_builddir)/src/filesystem/libfilesystem.la $(top_builddir)/src/core/libcore.la \ - $(top_builddir)/src/render/librender.la $(top_builddir)/src/client/libclient.la +osirion_DEPENDENCIES = $(ICON_CLIENT) $(top_builddir)/src/client/libclient.la \ + $(top_builddir)/src/core/libcore.la $(top_builddir)/src/filesystem/libfilesystem.la \ + $(top_builddir)/src/game/libgame.la $(top_builddir)/src/math/libmath.la $(ICON_CLIENT) \ + $(top_builddir)/src/model/libmodel.la $(top_builddir)/src/render/librender.la \ + $(top_builddir)/src/sys/libsys.la osirion_CFLAGS = $(LIBSDL_CFLAGS) $(GL_CFLAGS) $(GLUT_CFLAGS) osirion_LDADD = $(top_builddir)/src/game/libgame.la \ - $(top_builddir)/src/sys/libsys.la $(top_builddir)/src/math/libmath.la \ - $(top_builddir)/src/filesystem/libfilesystem.la $(top_builddir)/src/core/libcore.la \ - $(top_builddir)/src/render/librender.la $(top_builddir)/src/client/libclient.la $(GL_LIBS) $(HOST_LIBS) \ - $(ICON_CLIENT) + $(top_builddir)/src/client/libclient.la $(top_builddir)/src/core/libcore.la \ + $(top_builddir)/src/model/libmodel.la $(top_builddir)/src/filesystem/libfilesystem.la \ + $(top_builddir)/src/math/libmath.la $(top_builddir)/src/render/librender.la \ + $(top_builddir)/src/sys/libsys.la $(GL_LIBS) $(HOST_LIBS) $(ICON_CLIENT) osirion_LDFLAGS = $(LIBSDL_LIBS) diff --git a/src/core/Makefile.am b/src/core/Makefile.am index e9091f2..33b4c44 100644 --- a/src/core/Makefile.am +++ b/src/core/Makefile.am @@ -2,11 +2,11 @@ METASOURCES = AUTO INCLUDES = -I$(top_srcdir)/src libcore_la_SOURCES = application.cc commandbuffer.cc core.cc cvar.cc entity.cc \ - func.cc gameconnection.cc gameinterface.cc gameserver.cc model.cc module.cc \ - netclient.cc netconnection.cc netserver.cc player.cc + func.cc gameconnection.cc gameinterface.cc gameserver.cc module.cc netclient.cc \ + netconnection.cc netserver.cc player.cc libcore_la_LDFLAGS = -avoid-version -no-undefined -libcore_la_LIBADD = $(top_builddir)/src/math/libmath.la \ - $(top_builddir)/src/sys/libsys.la $(top_builddir)/src/filesystem/libfilesystem.la +libcore_la_LIBADD = $(top_builddir)/src/filesystem/libfilesystem.la \ + $(top_builddir)/src/math/libmath.la $(top_builddir)/src/sys/libsys.la $(top_builddir)/src/model/libmodel.la noinst_LTLIBRARIES = libcore.la noinst_HEADERS = application.h commandbuffer.h core.h cvar.h entity.h func.h \ diff --git a/src/core/entity.h b/src/core/entity.h index 7e6493a..ba86c53 100644 --- a/src/core/entity.h +++ b/src/core/entity.h @@ -7,16 +7,19 @@ #ifndef __INCLUDED_CORE_ENTITY_H__ #define __INCLUDED_CORE_ENTITY_H__ +#include "model/model.h" +#include "math/axis.h" +#include "math/mathlib.h" + namespace core { + class Entity; class EntityControlable; + } -#include "core/model.h" #include "core/player.h" -#include "math/axis.h" -#include "math/mathlib.h" #include <iostream> #include <string> @@ -77,7 +80,7 @@ public: inline std::string const & modelname() { return entity_modelname; } /// pointer to the model, is used client-side - inline Model * model() { return entity_model; } + inline model::Model * model() { return entity_model; } /// dirty flag inline bool dirty() const { return entity_dirty; } @@ -145,7 +148,7 @@ public: float entity_radius; std::string entity_name; std::string entity_modelname; - Model *entity_model; + model::Model *entity_model; Shape entity_shape; math::Color entity_color; unsigned int entity_moduletypeid; diff --git a/src/core/gameinterface.cc b/src/core/gameinterface.cc index a739eb2..5789592 100644 --- a/src/core/gameinterface.cc +++ b/src/core/gameinterface.cc @@ -7,20 +7,20 @@ #include <stdlib.h> #include <iostream> -#include "sys/sys.h" #include "core/application.h" #include "core/cvar.h" #include "core/func.h" #include "core/gameinterface.h" -#include "core/model.h" #include "core/player.h" +#include "model/model.h" +#include "sys/sys.h" namespace core { void func_list_model(std::string const &args) { - Model::list(); + model::Model::list(); } Player GameInterface::game_localplayer; @@ -90,7 +90,7 @@ void GameInterface::clear() } // remove all models - Model::clear(); + model::Model::clear(); } diff --git a/src/model/Makefile.am b/src/model/Makefile.am new file mode 100644 index 0000000..1490bfc --- /dev/null +++ b/src/model/Makefile.am @@ -0,0 +1,9 @@ +METASOURCES = AUTO + +libmodel_la_SOURCES = light.cc model.cc vertexarray.cc +libmodel_la_LDFLAGS = -avoid-version -no-undefined -lm + +noinst_LTLIBRARIES = libmodel.la +noinst_HEADERS = light.h model.h vertexarray.h + +INCLUDES = -I$(top_srcdir)/src diff --git a/src/model/light.cc b/src/model/light.cc new file mode 100644 index 0000000..83a0cb8 --- /dev/null +++ b/src/model/light.cc @@ -0,0 +1,27 @@ +/* + model/light.cc + This file is part of the Osirion project and is distributed under + the terms of the GNU General Public License version 2 +*/ + +#include "model/light.h" + +namespace model { + +Light::Light(math::Vector3f const & location, math::Color const & color, bool strobe) : + light_location(location), + light_color(color) +{ + light_strobe = strobe; + light_radius = 1.0f; + light_frequency = 1.0f; + light_offset = 0.0f; + light_time = 0.5f; + light_flare = 0; + render_texture = 0; +} + +Light::~Light() +{} + +} diff --git a/src/model/light.h b/src/model/light.h new file mode 100644 index 0000000..e202d21 --- /dev/null +++ b/src/model/light.h @@ -0,0 +1,63 @@ +/* + model/light.h + This file is part of the Osirion project and is distributed under + the terms of the GNU General Public License version 2 +*/ + +#ifndef __INCLUDED_MODEL_LIGHT_H__ +#define __INCLUDED_MODEL_LIGHT_H__ + +#include "math/vector3f.h" +#include "math/color.h" + +namespace model { + +/// an exterior light +class Light +{ +public: + Light(math::Vector3f const & location, math::Color const & color, bool strobe=false); + ~Light(); + + inline math::Vector3f const & location() const { return light_location; } + + inline math::Color const & color() const { return light_color; }; + + /// true if this is a strobe light + inline bool strobe() const { return light_strobe; } + + /// size if the light, default is 1.0f + inline float radius() const { return light_radius; } + + /// strobe time offset, in seconds + inline float offset() const { return light_offset; } + + /// frequency in strobes per second + inline float frequency() const { return light_frequency; } + + /// fraction a strobe light will be on, default is 0.5f + inline float time() const { return light_time; } + + /// flare texture number + inline size_t flare() const { return light_flare; } + + /// render texture number + inline size_t texture() const { return render_texture; } + + math::Vector3f light_location; + math::Color light_color; + bool light_strobe; + float light_radius; + float light_frequency; + float light_offset; + float light_time; + + size_t light_flare; + + size_t render_texture; +}; + +} + +#endif // __INCLUDED_MODEL_LIGHT_H__ + diff --git a/src/core/model.cc b/src/model/model.cc index c6f5dde..b3c8b03 100644 --- a/src/core/model.cc +++ b/src/model/model.cc @@ -12,148 +12,15 @@ #include <vector> #include <list> -#include "core/cvar.h" -#include "core/model.h" +#include "model/model.h" #include "filesystem/filesystem.h" -namespace core +namespace model { const float MAX_BOUNDS = 16384; const float delta = 10e-10; -/* ---------- core::VertexArray ------------------------------------ */ - -VertexArray *VertexArray::vertex_instance = 0 ; - -VertexArray::VertexArray(size_t size) -{ - vertex_instance = this; - vertex_size = size * 1024*1024; // megabytes - vertex_size = vertex_size / sizeof(float); // sizeof float - vertex_size = vertex_size / 4; // 4 arrays - - vertex_vertex = (float *) malloc(vertex_size * sizeof(float)); - vertex_color = (float *) malloc(vertex_size * sizeof(float)); - vertex_normal = (float *) malloc(vertex_size * sizeof(float)); - vertex_texture = (float *) malloc(vertex_size * sizeof(float)); - - con_print << "Initializing vertex array..." << std::endl; - con_debug << " " << size << " Mb allocated" << std::endl; - - clear(); -} - -VertexArray::~VertexArray() -{ - free(vertex_vertex); - free(vertex_normal); - free(vertex_color); - free(vertex_texture); - - vertex_instance = 0 ; -} - -void VertexArray::clear() -{ - vertex_index = 0; - - memset(vertex_vertex, 0, sizeof(vertex_vertex)); - memset(vertex_color, 0, sizeof(vertex_color)); - memset(vertex_normal, 0, sizeof(vertex_normal)); - memset(vertex_texture, 0, sizeof(vertex_normal)); - - add_sphere(); -} - -void VertexArray::add_sphere() -{ - // load sphere vertices into the VertexArray - - // build sin/cos table - float *sintable; - float *costable; - - sintable = new float[SPHERESEGMENTS]; - costable = new float[SPHERESEGMENTS]; - float d = 2 * M_PI / (SPHERESEGMENTS-1); - - for (int i=0; i < SPHERESEGMENTS; i++) { - sintable[i] = sin( d * (float) i ); - costable[i] = cos ( d * (float) i ); - } - - // draw body - math::Color white(1.0f, 1.0f, 1.0f); - math::Vector3f v; - math::Vector3f n; - - int count; - - for (int j=0; j < SPHERESEGMENTS-1; j++) { - float r = sintable[j]; - float r1 = sintable[j+1]; - - // glBegin - v = math::Vector3f(r, 0, costable[j]); - n = v; - n.normalize(); - //normal(n); - //vertex(v); - add_vertex(v, n, white); - - v = math::Vector3f(r1, 0, costable[j+1]); - n = v; - n.normalize(); - //normal(n); - //vertex(v); - add_vertex(v, n, white); - - count =2; - - for (int i = SPHERESEGMENTS-1; i >= 0; i--) { - v = math::Vector3f(r*costable[i], r*sintable[i], costable[j]); - n = v; - n.normalize(); - //normal(n); - //vertex(v); - add_vertex(v, n, white); - - v = math::Vector3f(r1*costable[i], r1*sintable[i], costable[j+1]); - n = v; - n.normalize(); - //normal(n); - //vertex(v); - add_vertex(v, n, white); - count +=2; - } - // glEnd - - } - - delete[] sintable; - delete[] costable; -} - -void VertexArray::add_vertex(math::Vector3f const &v, math::Vector3f const &n, math::Color const &color) { - if (vertex_index + 3 >= vertex_size) { - con_warn << "VertexArray overflow!" << std::endl; - return; - } - - for (int i = 0; i < 3; i ++) { - vertex_vertex[vertex_index+i] = v[i]; - vertex_normal[vertex_index+i] = n[i]; - } - - vertex_color[vertex_index] = color.r; - vertex_color[vertex_index+1] = color.g; - vertex_color[vertex_index+2] = color.b; - - vertex_index += 3; -} - - /* ---------- core::Triangle --------------------------------------- */ Triangle::Triangle(math::Vector3f const &v0, math::Vector3f const &v1, math::Vector3f const &v2, math::Vector3f const &n, math::Color *color, bool detail) : triangle_v0(v0), @@ -174,23 +41,6 @@ Triangle::~Triangle() { } -/* ---------- core::Light ------------------------------------------ */ - -Light::Light(math::Vector3f const & location, math::Color const & color, bool strobe) : - light_location(location), - light_color(color) -{ - light_strobe = strobe; - light_radius = 1.0f; - light_frequency = 1.0f; - light_offset = 0.0f; - light_time = 0.5f; - light_flare = 0; - render_texture = 0; -} - -Light::~Light() -{} /* ---------- core::Engine ------------------------------------------ */ diff --git a/src/core/model.h b/src/model/model.h index e9b3de4..95f84cc 100644 --- a/src/core/model.h +++ b/src/model/model.h @@ -1,16 +1,11 @@ /* - render/model.h + model/model.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ -#ifndef __INCLUDED_CORE_MODEL_H__ -#define __INCLUDED_CORE_MODEL_H__ - -namespace core -{ -class Model; -} +#ifndef __INCLUDED_MODEL_MODEL_H__ +#define __INCLUDED_MODEL_MODEL_H__ #include <vector> #include <map> @@ -18,52 +13,12 @@ class Model; #include "math/mathlib.h" #include "math/plane3f.h" -#include "core/entity.h" +#include "model/light.h" +#include "model/vertexarray.h" -namespace core +namespace model { -/// global vertex array - -const int SPHERESEGMENTS=33; - -class VertexArray -{ -public: - /// Create a new VertexArray with size in Mb - VertexArray(size_t size); - ~VertexArray(); - - void clear(); - - void add_vertex(math::Vector3f const &v, math::Vector3f const &n, math::Color const &color); - - - inline float *vertex() { return vertex_vertex; } - inline float *color() { return vertex_color; } - inline float *normal() { return vertex_normal; } - inline float *texture() { return vertex_texture; } - - inline size_t size() const { return vertex_size; } - inline size_t index() const { return vertex_index; } - - static inline VertexArray *instance() { return vertex_instance; } - -private: - /// model vertices - float *vertex_vertex; - float *vertex_color; - float *vertex_normal; - float *vertex_texture; - - size_t vertex_index; - size_t vertex_size; - - void add_sphere(); - - static VertexArray *vertex_instance; -}; - /// a model triangle class Triangle { @@ -108,50 +63,6 @@ public: math::Vector3f engine_location; }; -/// an exterior light -class Light -{ -public: - Light(math::Vector3f const & location, math::Color const & color, bool strobe=false); - ~Light(); - - inline math::Vector3f const & location() const { return light_location; } - - inline math::Color const & color() const { return light_color; }; - - /// true if this is a strobe light - inline bool strobe() const { return light_strobe; } - - /// size if the light, default is 1.0f - inline float radius() const { return light_radius; } - - /// strobe time offset, in seconds - inline float offset() const { return light_offset; } - - /// frequency in strobes per second - inline float frequency() const { return light_frequency; } - - /// fraction a strobe light will be on, default is 0.5f - inline float time() const { return light_time; } - - /// flare texture number - inline size_t flare() const { return light_flare; } - - /// render texture number - inline size_t texture() const { return render_texture; } - - math::Vector3f light_location; - math::Color light_color; - bool light_strobe; - float light_radius; - float light_frequency; - float light_offset; - float light_time; - - size_t light_flare; - - size_t render_texture; -}; /// a 3D model contains a list of faces @@ -255,5 +166,5 @@ private: } -#endif // __INCLUDED_RENDER_MODEL_H__ +#endif // __INCLUDED_MODEL_MODEL_H__ diff --git a/src/model/vertexarray.cc b/src/model/vertexarray.cc new file mode 100644 index 0000000..420e816 --- /dev/null +++ b/src/model/vertexarray.cc @@ -0,0 +1,144 @@ + +/* + model/vertexarray.cc + This file is part of the Osirion project and is distributed under + the terms of the GNU General Public License version 2 +*/ + +#include "math/mathlib.h" +#include "model/vertexarray.h" +#include "sys/sys.h" + +namespace model { + +VertexArray *VertexArray::vertex_instance = 0 ; + +VertexArray::VertexArray(size_t size) +{ + vertex_instance = this; + vertex_size = size * 1024*1024; // megabytes + vertex_size = vertex_size / sizeof(float); // sizeof float + vertex_size = vertex_size / 4; // 4 arrays + + vertex_vertex = (float *) malloc(vertex_size * sizeof(float)); + vertex_color = (float *) malloc(vertex_size * sizeof(float)); + vertex_normal = (float *) malloc(vertex_size * sizeof(float)); + vertex_texture = (float *) malloc(vertex_size * sizeof(float)); + + con_print << "Initializing vertex array..." << std::endl; + con_debug << " " << size << " Mb allocated" << std::endl; + + clear(); +} + +VertexArray::~VertexArray() +{ + free(vertex_vertex); + free(vertex_normal); + free(vertex_color); + free(vertex_texture); + + vertex_instance = 0 ; +} + +void VertexArray::clear() +{ + vertex_index = 0; + + memset(vertex_vertex, 0, sizeof(vertex_vertex)); + memset(vertex_color, 0, sizeof(vertex_color)); + memset(vertex_normal, 0, sizeof(vertex_normal)); + memset(vertex_texture, 0, sizeof(vertex_normal)); + + add_sphere(); +} + +void VertexArray::add_sphere() +{ + // load sphere vertices into the VertexArray + + // build sin/cos table + float *sintable; + float *costable; + + sintable = new float[SPHERESEGMENTS]; + costable = new float[SPHERESEGMENTS]; + float d = 2 * M_PI / (SPHERESEGMENTS-1); + + for (int i=0; i < SPHERESEGMENTS; i++) { + sintable[i] = sin( d * (float) i ); + costable[i] = cos ( d * (float) i ); + } + + // draw body + math::Color white(1.0f, 1.0f, 1.0f); + math::Vector3f v; + math::Vector3f n; + + int count; + + for (int j=0; j < SPHERESEGMENTS-1; j++) { + float r = sintable[j]; + float r1 = sintable[j+1]; + + // glBegin + v = math::Vector3f(r, 0, costable[j]); + n = v; + n.normalize(); + //normal(n); + //vertex(v); + add_vertex(v, n, white); + + v = math::Vector3f(r1, 0, costable[j+1]); + n = v; + n.normalize(); + //normal(n); + //vertex(v); + add_vertex(v, n, white); + + count =2; + + for (int i = SPHERESEGMENTS-1; i >= 0; i--) { + v = math::Vector3f(r*costable[i], r*sintable[i], costable[j]); + n = v; + n.normalize(); + //normal(n); + //vertex(v); + add_vertex(v, n, white); + + v = math::Vector3f(r1*costable[i], r1*sintable[i], costable[j+1]); + n = v; + n.normalize(); + //normal(n); + //vertex(v); + add_vertex(v, n, white); + count +=2; + } + // glEnd + + } + + delete[] sintable; + delete[] costable; +} + +void VertexArray::add_vertex(math::Vector3f const &v, math::Vector3f const &n, math::Color const &color) { + if (vertex_index + 3 >= vertex_size) { + con_warn << "VertexArray overflow!" << std::endl; + return; + } + + for (int i = 0; i < 3; i ++) { + vertex_vertex[vertex_index+i] = v[i]; + vertex_normal[vertex_index+i] = n[i]; + } + + vertex_color[vertex_index] = color.r; + vertex_color[vertex_index+1] = color.g; + vertex_color[vertex_index+2] = color.b; + + vertex_index += 3; +} + +} + diff --git a/src/model/vertexarray.h b/src/model/vertexarray.h new file mode 100644 index 0000000..6145659 --- /dev/null +++ b/src/model/vertexarray.h @@ -0,0 +1,57 @@ +/* + model/vertexarray.h + This file is part of the Osirion project and is distributed under + the terms of the GNU General Public License version 2 +*/ + +#ifndef __INCLUDED_MODEL_VERTEXARRAY_H__ +#define __INCLUDED_MODEL_VERTEXARRAY_H__ + +#include "math/color.h" +#include "math/vector3f.h" + +namespace model { + +const int SPHERESEGMENTS=33; + +/// global vertex array +class VertexArray +{ +public: + /// create a new VertexArray with size in Mb + VertexArray(size_t size); + ~VertexArray(); + + void clear(); + + void add_vertex(math::Vector3f const &v, math::Vector3f const &n, math::Color const &color); + + + inline float *vertex() { return vertex_vertex; } + inline float *color() { return vertex_color; } + inline float *normal() { return vertex_normal; } + inline float *texture() { return vertex_texture; } + + inline size_t size() const { return vertex_size; } + inline size_t index() const { return vertex_index; } + + static inline VertexArray *instance() { return vertex_instance; } + +private: + /// model vertices + float *vertex_vertex; + float *vertex_color; + float *vertex_normal; + float *vertex_texture; + + size_t vertex_index; + size_t vertex_size; + + void add_sphere(); + + static VertexArray *vertex_instance; +}; + +} + +#endif // __INCLUDED_MODEL_VERTEXARRAY_H__ diff --git a/src/render/draw.cc b/src/render/draw.cc index 2938442..5627ac6 100644 --- a/src/render/draw.cc +++ b/src/render/draw.cc @@ -8,7 +8,7 @@ #include <iomanip> #include "core/core.h" -#include "core/model.h" +#include "model/model.h" #include "render/render.h" #include "render/textures.h" #include "render/draw.h" @@ -67,10 +67,10 @@ void draw_sphere(math::Color const & color, float radius) gl::color(color); size_t index = 0; - size_t count = (core::SPHERESEGMENTS+1)*2; + size_t count = (model::SPHERESEGMENTS+1)*2; // draw body - for (int j=0; j < core::SPHERESEGMENTS-1; j++) { + for (int j=0; j < model::SPHERESEGMENTS-1; j++) { glDrawArrays(gl::QuadStrip, index, count); index += count; Stats::quads += count/2-1; @@ -186,13 +186,13 @@ void draw_model_evertex(core::Entity *entity) void draw_model_engines(core::EntityControlable *entity) { - core::Model *model = entity->model(); + model::Model *model = entity->model(); if (model->model_engine.size() && entity->thrust()) { gl::color(1.0f, 0.0f ,0.0f, 1.0f); gl::begin(gl::Lines); - for (std::list<core::Engine *>::iterator eit = model->model_engine.begin(); eit != model->model_engine.end(); eit++) { + for (std::list<model::Engine *>::iterator eit = model->model_engine.begin(); eit != model->model_engine.end(); eit++) { math::Vector3f const & v = (*eit)->location(); gl::vertex(v); gl::vertex(v.x - 0.0625f*entity->thrust(), v.y, v.z); @@ -260,13 +260,13 @@ void pass_visibility() // load entity models if necessary if (!entity->model() && entity->modelname().size()) { - entity->entity_model = core::Model::get(entity->modelname()); + entity->entity_model = model::Model::get(entity->modelname()); if (!entity->model()) { entity->entity_modelname.clear(); } else { - for (std::list<core::Light *>::iterator lit = entity->model()->model_light.begin(); lit != entity->model()->model_light.end(); lit++) { - core::Light *light = (*lit); + for (std::list<model::Light *>::iterator lit = entity->model()->model_light.begin(); lit != entity->model()->model_light.end(); lit++) { + model::Light *light = (*lit); // load flare texture std::stringstream flarename; @@ -408,7 +408,7 @@ void draw_pass_model_lights() if (test_drawfx_distance(entity) && (entity->model()->model_light.size())) { - for (std::list<core::Light *>::iterator lit = entity->model()->model_light.begin(); lit != entity->model()->model_light.end(); lit++) { + for (std::list<model::Light *>::iterator lit = entity->model()->model_light.begin(); lit != entity->model()->model_light.end(); lit++) { // strobe frequency float t = 1.0f; if ((*lit)->strobe()) diff --git a/src/render/render.cc b/src/render/render.cc index 589dce3..8c4f0fb 100644 --- a/src/render/render.cc +++ b/src/render/render.cc @@ -26,7 +26,9 @@ core::Cvar *r_radius = 0; core::Cvar *r_wireframe = 0; core::Cvar * r_arraysize = 0; -core::VertexArray *vertexarray = 0; +using model::VertexArray; + +VertexArray *vertexarray = 0; bool texture(const char *filename, size_t id) { @@ -72,7 +74,7 @@ void init() if (mb > 256) mb = 256; (*r_arraysize) = (float) mb; - vertexarray = new core::VertexArray(mb); + vertexarray = new VertexArray(mb); r_radius = core::Cvar::get("r_radius", "0", core::Cvar::Archive); r_radius->set_info("[bool] render entity radius"); @@ -95,7 +97,7 @@ void shutdown() } // clear models - core::Model::clear(); + model::Model::clear(); // clear vertex array delete vertexarray; diff --git a/src/render/render.h b/src/render/render.h index ce638bb..0bde634 100644 --- a/src/render/render.h +++ b/src/render/render.h @@ -9,7 +9,7 @@ #include "GL/gl.h" #include "core/cvar.h" -#include "core/model.h" +#include "model/model.h" namespace render { @@ -25,7 +25,7 @@ namespace render { extern core::Cvar *r_wireframe; extern core::Cvar *r_arraysize; - extern core::VertexArray *vertexarray; + extern model::VertexArray *vertexarray; } #include "render/draw.h" |