Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

sheep::ASELoader Class Reference

#include <aseloader.h>

Inheritance diagram for sheep::ASELoader:

sheep::IMeshLoader List of all members.

Public Member Functions

 ASELoader ()
virtual void Load (const std::string &filename, IMeshBuilder &builder, int option_mask=DEFAULT_CONFIGURATION_BIT, ProgressMonitor *progmon=0) throw (LoadingException)

Private Types

typedef std::vector< mesh_data * > mesh_data_vector
enum  symbol {
  END_OF_FILE = 256, IDENTIFIER, STRING, INTEGER,
  DOUBLE, BITMAP, GEOMOBJECT, MAP_DIFFUSE,
  MATERIAL, MATERIAL_AMBIENT, MATERIAL_DIFFUSE, MATERIAL_LIST,
  MATERIAL_NAME, MATERIAL_REF, MATERIAL_SPECULAR, MESH,
  MESH_FACE, MESH_FACE_LIST, MESH_FACENORMAL, MESH_MTLID,
  MESH_NORMALS, MESH_SMOOTHING, MESH_TFACE, MESH_TFACELIST,
  MESH_TVERT, MESH_TVERTLIST, MESH_VERTEX, MESH_VERTEX_LIST,
  MESH_VERTEXNORMAL, NODE_NAME, SUBMATERIAL, WIREFRAME_COLOR,
  UNKNOWN_KEYWORD
}

Private Member Functions

void parse_error ()
int read_char ()
void unread_char (int c)
int look_ahead () const
void next ()
void accept (int token)
std::string accept_string ()
int accept_integer ()
double accept_double ()
void skip_compound ()
void skip_statement ()
void parse_file ()
void parse_geomobject ()
void parse_map_diffuse ()
void parse_material (int material_index, bool is_submaterial=false, int submaterial_index=0)
void parse_material_list ()
void parse_mesh ()
void parse_mesh_face_list ()
void parse_mesh_normals ()
void parse_mesh_tfacelist ()
void parse_mesh_tvertlist ()
void parse_mesh_vertex_list ()
void dispatch_mesh_data ()

Private Attributes

KeywordTable m_keyword_table
std::string m_path
IMeshBuilder::IGeometryBuilderm_geombuilder
IMeshBuilder::IMaterialBuilderm_matbuilder
int m_option_mask
ProgressMonitorm_progmon
 May be 0.

FILE * m_file
int m_line
 Current line number.

look_ahead m_look_ahead
int m_geomobject_index
 This is used to number each *GEOMOBJECT, starting from 0.

std::map< material_key, IMeshBuilder::FeatureIdm_mat_key_to_mat_id
 Material ID for each pair (material_index, submaterial_index).

std::map< int, int > m_submaterial_count
mesh_data_vector m_mesh_data

Member Typedef Documentation

typedef std::vector<mesh_data *> sheep::ASELoader::mesh_data_vector [private]
 

Definition at line 164 of file aseloader.h.


Member Enumeration Documentation

enum sheep::ASELoader::symbol [private]
 

Enumeration values:
END_OF_FILE 
IDENTIFIER 
STRING 
INTEGER 
DOUBLE 
BITMAP  Keywords.
GEOMOBJECT 
MAP_DIFFUSE 
MATERIAL 
MATERIAL_AMBIENT 
MATERIAL_DIFFUSE 
MATERIAL_LIST 
MATERIAL_NAME 
MATERIAL_REF 
MATERIAL_SPECULAR 
MESH 
MESH_FACE 
MESH_FACE_LIST 
MESH_FACENORMAL 
MESH_MTLID 
MESH_NORMALS 
MESH_SMOOTHING 
MESH_TFACE 
MESH_TFACELIST 
MESH_TVERT 
MESH_TVERTLIST 
MESH_VERTEX 
MESH_VERTEX_LIST 
MESH_VERTEXNORMAL 
NODE_NAME 
SUBMATERIAL 
WIREFRAME_COLOR 
UNKNOWN_KEYWORD  Unknown keyword.

Definition at line 64 of file aseloader.h.

Referenced by next().


Constructor & Destructor Documentation

ASELoader::ASELoader  ) 
 

Definition at line 40 of file aseloader.cpp.

References BITMAP, GEOMOBJECT, sheep::KeywordTable::Insert(), m_keyword_table, MAP_DIFFUSE, MATERIAL, MATERIAL_AMBIENT, MATERIAL_DIFFUSE, MATERIAL_LIST, MATERIAL_NAME, MATERIAL_REF, MATERIAL_SPECULAR, MESH, MESH_FACE, MESH_FACE_LIST, MESH_FACENORMAL, MESH_MTLID, MESH_NORMALS, MESH_SMOOTHING, MESH_TFACE, MESH_TFACELIST, MESH_TVERT, MESH_TVERTLIST, MESH_VERTEX, MESH_VERTEX_LIST, MESH_VERTEXNORMAL, NODE_NAME, SUBMATERIAL, and WIREFRAME_COLOR.


Member Function Documentation

void ASELoader::accept int  token  )  [private]
 

Definition at line 213 of file aseloader.cpp.

References look_ahead(), next(), and parse_error().

Referenced by parse_geomobject(), parse_map_diffuse(), parse_material(), parse_material_list(), parse_mesh(), parse_mesh_face_list(), parse_mesh_normals(), parse_mesh_tfacelist(), parse_mesh_tvertlist(), parse_mesh_vertex_list(), and skip_compound().

double ASELoader::accept_double  )  [private]
 

Definition at line 241 of file aseloader.cpp.

References DOUBLE, INTEGER, look_ahead(), sheep::ASELoader::look_ahead::m_val_u::m_dbl, sheep::ASELoader::look_ahead::m_val_u::m_int, m_look_ahead, sheep::ASELoader::look_ahead::m_val, next(), and parse_error().

Referenced by parse_geomobject(), parse_material(), parse_mesh_normals(), parse_mesh_tvertlist(), and parse_mesh_vertex_list().

int ASELoader::accept_integer  )  [private]
 

Definition at line 230 of file aseloader.cpp.

References INTEGER, look_ahead(), sheep::ASELoader::look_ahead::m_val_u::m_int, m_look_ahead, sheep::ASELoader::look_ahead::m_val, next(), and parse_error().

Referenced by parse_geomobject(), parse_material(), parse_material_list(), parse_mesh_face_list(), parse_mesh_normals(), and parse_mesh_tfacelist().

string ASELoader::accept_string  )  [private]
 

Definition at line 219 of file aseloader.cpp.

References look_ahead(), m_look_ahead, sheep::ASELoader::look_ahead::m_val_u::m_str, sheep::ASELoader::look_ahead::m_val, next(), parse_error(), and STRING.

Referenced by parse_geomobject(), parse_map_diffuse(), and parse_material().

void ASELoader::dispatch_mesh_data  )  [private]
 

Definition at line 811 of file aseloader.cpp.

References sheep::IMeshBuilder::IGeometryBuilder::AppendFace(), sheep::IMeshBuilder::IGeometryBuilder::AppendNormal(), sheep::IMeshBuilder::IGeometryBuilder::AppendTexCoord(), sheep::IMeshBuilder::IGeometryBuilder::AppendVertex(), sheep::IMeshBuilder::IMaterialBuilder::BeginMaterial(), sheep::IMeshBuilder::IGeometryBuilder::BeginSubMesh(), sheep::IMeshBuilder::IMaterialBuilder::EndMaterial(), sheep::IMeshBuilder::IGeometryBuilder::EndSubMesh(), sheep::ASELoader::mesh_data::m_faces, m_geombuilder, sheep::ASELoader::mesh_data::m_has_wf_color, m_mat_key_to_mat_id, m_matbuilder, sheep::ASELoader::mesh_data::m_material_index, m_mesh_data, sheep::ASELoader::mesh_data::face::m_normal_index, sheep::ASELoader::mesh_data::m_normals, m_submaterial_count, sheep::ASELoader::mesh_data::face::m_submaterial_index, sheep::ASELoader::mesh_data::face::m_texcoord_index, sheep::ASELoader::mesh_data::m_texcoords, sheep::ASELoader::mesh_data::face::m_vertex_index, sheep::ASELoader::mesh_data::m_vertices, sheep::ASELoader::mesh_data::m_wf_b, sheep::ASELoader::mesh_data::m_wf_g, sheep::ASELoader::mesh_data::m_wf_r, sheep::IMeshBuilder::IMaterialBuilder::SetDiffuseColor(), sheep::IMeshBuilder::IGeometryBuilder::SetFaceNormals(), sheep::IMeshBuilder::IGeometryBuilder::SetFaceTexCoords(), and sheep::IMeshBuilder::IGeometryBuilder::SetMaterial().

Referenced by Load().

void ASELoader::Load const std::string &  filename,
IMeshBuilder builder,
int  option_mask = DEFAULT_CONFIGURATION_BIT,
ProgressMonitor progmon = 0
throw (LoadingException) [virtual]
 

Implements sheep::IMeshLoader.

Definition at line 70 of file aseloader.cpp.

References dispatch_mesh_data(), sheep::ProgressMonitor::Done(), sheep::IMeshBuilder::GeometryBuilder(), m_geombuilder, m_geomobject_index, m_mat_key_to_mat_id, m_matbuilder, m_mesh_data, m_option_mask, sheep::IMeshBuilder::MaterialBuilder(), next(), parse_file(), and sheep::ProgressMonitor::StartJob().

int ASELoader::look_ahead  )  const [inline, private]
 

Definition at line 252 of file aseloader.h.

Referenced by accept(), accept_double(), accept_integer(), accept_string(), parse_file(), parse_geomobject(), parse_map_diffuse(), parse_material(), parse_material_list(), parse_mesh(), parse_mesh_face_list(), parse_mesh_normals(), parse_mesh_tfacelist(), parse_mesh_tvertlist(), parse_mesh_vertex_list(), skip_compound(), and skip_statement().

void ASELoader::next  )  [private]
 

Definition at line 120 of file aseloader.cpp.

References DOUBLE, END_OF_FILE, sheep::KeywordTable::GetSymbol(), IDENTIFIER, INTEGER, sheep::ASELoader::look_ahead::m_val_u::m_dbl, sheep::ASELoader::look_ahead::m_val_u::m_int, m_keyword_table, m_look_ahead, sheep::ASELoader::look_ahead::m_val_u::m_str, sheep::ASELoader::look_ahead::m_sym, sheep::ASELoader::look_ahead::m_val, read_char(), STRING, symbol, UNKNOWN_KEYWORD, and unread_char().

Referenced by accept(), accept_double(), accept_integer(), accept_string(), Load(), skip_compound(), and skip_statement().

void ASELoader::parse_error  )  [private]
 

Definition at line 115 of file aseloader.cpp.

Referenced by accept(), accept_double(), accept_integer(), accept_string(), parse_file(), parse_geomobject(), parse_map_diffuse(), parse_material(), parse_material_list(), parse_mesh(), parse_mesh_face_list(), parse_mesh_normals(), parse_mesh_tfacelist(), parse_mesh_tvertlist(), and parse_mesh_vertex_list().

void ASELoader::parse_file  )  [private]
 

Definition at line 290 of file aseloader.cpp.

References END_OF_FILE, GEOMOBJECT, look_ahead(), m_geombuilder, m_geomobject_index, m_matbuilder, MATERIAL_LIST, parse_error(), parse_geomobject(), parse_material_list(), skip_statement(), and UNKNOWN_KEYWORD.

Referenced by Load().

void ASELoader::parse_geomobject  )  [private]
 

Definition at line 315 of file aseloader.cpp.

References accept(), accept_double(), accept_integer(), accept_string(), GEOMOBJECT, look_ahead(), m_mesh_data, MATERIAL_REF, MESH, NODE_NAME, parse_error(), parse_mesh(), skip_statement(), UNKNOWN_KEYWORD, and WIREFRAME_COLOR.

Referenced by parse_file().

void ASELoader::parse_map_diffuse  )  [private]
 

Definition at line 368 of file aseloader.cpp.

References accept(), accept_string(), BITMAP, sheep::IMeshBuilder::IMaterialBuilder::EndMaterial(), look_ahead(), m_matbuilder, m_option_mask, MAP_DIFFUSE, parse_error(), sheep::IMeshBuilder::IMaterialBuilder::SetTexture(), skip_statement(), sheep::TryLoadingImage(), and UNKNOWN_KEYWORD.

Referenced by parse_material().

void ASELoader::parse_material int  material_index,
bool  is_submaterial = false,
int  submaterial_index = 0
[private]
 

Definition at line 429 of file aseloader.cpp.

References accept(), accept_double(), accept_integer(), accept_string(), sheep::IMeshBuilder::IMaterialBuilder::BeginMaterial(), sheep::IMeshBuilder::IMaterialBuilder::EndMaterial(), look_ahead(), m_mat_key_to_mat_id, m_matbuilder, m_submaterial_count, MAP_DIFFUSE, MATERIAL_AMBIENT, MATERIAL_DIFFUSE, MATERIAL_NAME, MATERIAL_SPECULAR, parse_error(), parse_map_diffuse(), sheep::Real, sheep::IMeshBuilder::IMaterialBuilder::SetAmbientColor(), sheep::IMeshBuilder::IMaterialBuilder::SetDiffuseColor(), sheep::IMeshBuilder::IMaterialBuilder::SetSpecularColor(), skip_statement(), SUBMATERIAL, and UNKNOWN_KEYWORD.

Referenced by parse_material_list().

void ASELoader::parse_material_list  )  [private]
 

Definition at line 531 of file aseloader.cpp.

References accept(), accept_integer(), look_ahead(), MATERIAL, MATERIAL_LIST, parse_error(), parse_material(), sheep::ProgressMonitor::SetJobProgress(), skip_statement(), and UNKNOWN_KEYWORD.

Referenced by parse_file().

void ASELoader::parse_mesh  )  [private]
 

Definition at line 560 of file aseloader.cpp.

References accept(), look_ahead(), MESH, MESH_FACE_LIST, MESH_NORMALS, MESH_TFACELIST, MESH_TVERTLIST, MESH_VERTEX_LIST, parse_error(), parse_mesh_face_list(), parse_mesh_normals(), parse_mesh_tfacelist(), parse_mesh_tvertlist(), parse_mesh_vertex_list(), sheep::ProgressMonitor::SetJobProgress(), skip_statement(), and UNKNOWN_KEYWORD.

Referenced by parse_geomobject().

void ASELoader::parse_mesh_face_list  )  [private]
 

Definition at line 597 of file aseloader.cpp.

References accept(), accept_integer(), IDENTIFIER, INTEGER, look_ahead(), m_mesh_data, sheep::ASELoader::mesh_data::face::m_normal_index, sheep::ASELoader::mesh_data::face::m_sg, sheep::ASELoader::mesh_data::face::m_submaterial_index, sheep::ASELoader::mesh_data::face::m_texcoord_index, sheep::ASELoader::mesh_data::face::m_vertex_index, MESH_FACE, MESH_FACE_LIST, MESH_MTLID, MESH_SMOOTHING, parse_error(), skip_statement(), and UNKNOWN_KEYWORD.

Referenced by parse_mesh().

void ASELoader::parse_mesh_normals  )  [private]
 

Definition at line 668 of file aseloader.cpp.

References accept(), accept_double(), accept_integer(), DOUBLE, INTEGER, look_ahead(), m_mesh_data, sheep::ASELoader::mesh_data::face::m_normal_index, sheep::Vector3::m_x, sheep::Vector3::m_y, sheep::Vector3::m_z, MESH_FACENORMAL, MESH_NORMALS, MESH_VERTEXNORMAL, sheep::Vector3::Normalize(), parse_error(), skip_statement(), and UNKNOWN_KEYWORD.

Referenced by parse_mesh().

void ASELoader::parse_mesh_tfacelist  )  [private]
 

Definition at line 715 of file aseloader.cpp.

References accept(), accept_integer(), look_ahead(), m_mesh_data, sheep::ASELoader::mesh_data::face::m_texcoord_index, MESH_TFACE, MESH_TFACELIST, parse_error(), skip_statement(), and UNKNOWN_KEYWORD.

Referenced by parse_mesh().

void ASELoader::parse_mesh_tvertlist  )  [private]
 

Definition at line 745 of file aseloader.cpp.

References accept(), accept_double(), DOUBLE, INTEGER, look_ahead(), m_mesh_data, sheep::Vector2::m_x, sheep::Vector2::m_y, MESH_TVERT, MESH_TVERTLIST, parse_error(), skip_statement(), and UNKNOWN_KEYWORD.

Referenced by parse_mesh().

void ASELoader::parse_mesh_vertex_list  )  [private]
 

Definition at line 779 of file aseloader.cpp.

References accept(), accept_double(), INTEGER, look_ahead(), m_mesh_data, sheep::Vector3::m_x, sheep::Vector3::m_y, sheep::Vector3::m_z, MESH_VERTEX, MESH_VERTEX_LIST, parse_error(), skip_statement(), and UNKNOWN_KEYWORD.

Referenced by parse_mesh().

int ASELoader::read_char  )  [inline, private]
 

Definition at line 226 of file aseloader.h.

Referenced by next().

void ASELoader::skip_compound  )  [private]
 

Definition at line 258 of file aseloader.cpp.

References accept(), look_ahead(), and next().

Referenced by skip_statement().

void ASELoader::skip_statement  )  [private]
 

Definition at line 274 of file aseloader.cpp.

References sheep::KeywordTable::IsKeyword(), look_ahead(), m_keyword_table, next(), and skip_compound().

Referenced by parse_file(), parse_geomobject(), parse_map_diffuse(), parse_material(), parse_material_list(), parse_mesh(), parse_mesh_face_list(), parse_mesh_normals(), parse_mesh_tfacelist(), parse_mesh_tvertlist(), and parse_mesh_vertex_list().

void ASELoader::unread_char int  c  )  [inline, private]
 

Definition at line 238 of file aseloader.h.

Referenced by next().


Member Data Documentation

FILE* sheep::ASELoader::m_file [private]
 

Definition at line 101 of file aseloader.h.

IMeshBuilder::IGeometryBuilder* sheep::ASELoader::m_geombuilder [private]
 

Definition at line 94 of file aseloader.h.

Referenced by dispatch_mesh_data(), Load(), and parse_file().

int sheep::ASELoader::m_geomobject_index [private]
 

This is used to number each *GEOMOBJECT, starting from 0.

Definition at line 105 of file aseloader.h.

Referenced by Load(), and parse_file().

KeywordTable sheep::ASELoader::m_keyword_table [private]
 

Definition at line 90 of file aseloader.h.

Referenced by ASELoader(), next(), and skip_statement().

int sheep::ASELoader::m_line [private]
 

Current line number.

Definition at line 102 of file aseloader.h.

look_ahead sheep::ASELoader::m_look_ahead [private]
 

Definition at line 103 of file aseloader.h.

Referenced by accept_double(), accept_integer(), accept_string(), and next().

std::map<material_key, IMeshBuilder::FeatureId> sheep::ASELoader::m_mat_key_to_mat_id [private]
 

Material ID for each pair (material_index, submaterial_index).

Definition at line 125 of file aseloader.h.

Referenced by dispatch_mesh_data(), Load(), and parse_material().

IMeshBuilder::IMaterialBuilder* sheep::ASELoader::m_matbuilder [private]
 

Definition at line 95 of file aseloader.h.

Referenced by dispatch_mesh_data(), Load(), parse_file(), parse_map_diffuse(), and parse_material().

mesh_data_vector sheep::ASELoader::m_mesh_data [private]
 

Definition at line 166 of file aseloader.h.

Referenced by dispatch_mesh_data(), Load(), parse_geomobject(), parse_mesh_face_list(), parse_mesh_normals(), parse_mesh_tfacelist(), parse_mesh_tvertlist(), and parse_mesh_vertex_list().

int sheep::ASELoader::m_option_mask [private]
 

Definition at line 97 of file aseloader.h.

Referenced by Load(), and parse_map_diffuse().

std::string sheep::ASELoader::m_path [private]
 

Definition at line 92 of file aseloader.h.

ProgressMonitor* sheep::ASELoader::m_progmon [private]
 

May be 0.

Definition at line 99 of file aseloader.h.

std::map<int, int> sheep::ASELoader::m_submaterial_count [private]
 

This map associates to each material index the number of submaterials for the corresponding material.

Definition at line 129 of file aseloader.h.

Referenced by dispatch_mesh_data(), and parse_material().


The documentation for this class was generated from the following files:
Generated on Tue May 11 01:31:54 2004 for toxic by doxygen 1.3.6