X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fnetradiant.git;a=blobdiff_plain;f=include%2Fimodel.h;h=d047e90abbdad80e16297aa085a904e61234c618;hp=65d88678ec11d8b44722d3672808e81498b6746e;hb=8b22a94541ec912f1722878eb054dc82ed909e04;hpb=830125fad042fad35dc029b6eb57c8156ad7e176 diff --git a/include/imodel.h b/include/imodel.h index 65d88678..d047e90a 100644 --- a/include/imodel.h +++ b/include/imodel.h @@ -1,6 +1,6 @@ /* - Copyright (C) 1999-2007 id Software, Inc. and contributors. - For a list of contributors, see the accompanying CONTRIBUTORS file. + Copyright (C) 2001-2006, William Joseph. + All Rights Reserved. This file is part of GtkRadiant. @@ -19,88 +19,32 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef _IMODEL_H_ -#define _IMODEL_H_ +#if !defined( INCLUDED_IMODEL_H ) +#define INCLUDED_IMODEL_H -#define MODEL_MAJOR "model" +#include "generic/constant.h" -/*! - loads model from model file name specified, - fills model struct with pointers to model interfaces - - name is a relative path, we'll use VFS to extract a basepath to add to get the absolute path. - */ -typedef void ( *PFN_LOADMODEL )( entity_interfaces_t *model, const char *name ); - -struct _QERPlugModelTable +namespace scene { - int m_nSize; - PFN_LOADMODEL m_pfnLoadModel; -}; - - -//forward declare entity_t -struct entity_s; -typedef struct entity_s entity_t; - -// any module relying on imodel will need to link against the mathlib -#include "mathlib.h" - -// state flags -#define DRAW_GL_FILL 0x0001 -#define DRAW_GL_LIGHTING 0x0010 -#define DRAW_GL_TEXTURE_2D 0x0100 -#define DRAW_GL_BLEND 0x1000 +class Node; +} -// predefined state combinations -#define DRAW_GL_WIRE 0x0000 -#define DRAW_GL_FLAT 0x0001 -#define DRAW_GL_SOLID 0x0011 -#define DRAW_GL_TEXTURED 0x0111 +class ArchiveFile; -// mode -#define DRAW_WIRE 0 -#define DRAW_SOLID 1 -#define DRAW_TEXTURED 2 - -// render flags -#define DRAW_RF_NONE 0x0000 -#define DRAW_RF_SEL_OUTLINE 0x0001 -#define DRAW_RF_SEL_FILL 0x0010 -#define DRAW_RF_XY 0x0011 -#define DRAW_RF_CAM 0x0100 - -class IRender +class ModelLoader { public: -virtual ~IRender() { } -virtual void IncRef() = 0; // increments the reference counter for this object -virtual void DecRef() = 0; // decrements the reference counter for this object, deletes the object if reference count is zero -virtual void Draw( int state, int rflags ) const = 0; // render the object - state = the opengl state -virtual const aabb_t *GetAABB() const = 0; +INTEGER_CONSTANT( Version, 1 ); +STRING_CONSTANT( Name, "model" ); +virtual scene::Node& loadModel( ArchiveFile& file ) = 0; }; -class ISelect -{ -public: -virtual ~ISelect() { } -virtual void IncRef() = 0; // increments the reference counter for this object -virtual void DecRef() = 0; // decrements the reference counter for this object, deletes the object if reference count is zero -virtual bool TestRay( const ray_t *ray, vec_t *dist ) const = 0; // test ray intersection, return bool true if intersects, and store distance to closest point of intersection -//virtual bool TestBox(const aabb_t *aabb) const = 0; // test aabb intersection, return bool true if touching or intersecting -}; +template +class Modules; +typedef Modules ModelModules; -class IEdit -{ -public: -virtual ~IEdit() { } -virtual void IncRef() = 0; // increments the reference counter for this object -virtual void DecRef() = 0; // decrements the reference counter for this object, deletes the object if reference count is zero -virtual void Translate( const vec3_t translation ) = 0; -virtual void Rotate( const vec3_t pivot, const vec3_t rotation ) = 0; -virtual const vec_t *GetTranslation() const = 0; -virtual const vec_t *GetRotation() const = 0; -virtual void OnKeyValueChanged( entity_t *e, const char *key, const char* value ) = 0; -}; +template +class ModulesRef; +typedef ModulesRef ModelModulesRef; #endif /* _IMODEL_H_ */