From: curt Date: Sat, 30 May 1998 01:56:44 +0000 (+0000) Subject: Added material.cxx material.hxx X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=823c662ed43877f1d8dde18b4738f9cfa49d0598;p=flightgear.git Added material.cxx material.hxx --- diff --git a/Scenery/Makefile.am b/Scenery/Makefile.am index b6f236da0..85edaa051 100644 --- a/Scenery/Makefile.am +++ b/Scenery/Makefile.am @@ -3,6 +3,7 @@ libdir = ${exec_prefix}/lib lib_LTLIBRARIES = libScenery.la libScenery_la_SOURCES = \ + material.cxx material.hxx \ obj.cxx obj.hxx \ scenery.cxx scenery.hxx \ texload.c texload.h \ diff --git a/Scenery/material.cxx b/Scenery/material.cxx new file mode 100644 index 000000000..2766b9e32 --- /dev/null +++ b/Scenery/material.cxx @@ -0,0 +1,57 @@ +// material.cxx -- class to handle material properties +// +// Written by Curtis Olson, started May 1998. +// +// Copyright (C) 1998 Curtis L. Olson - curt@me.umn.edu +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License as +// published by the Free Software Foundation; either version 2 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// +// $Id$ +// (Log is kept at end of this file) + + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef HAVE_WINDOWS_H +# include +#endif + +#include +#include + +#include "material.hxx" + + +// Constructor +fgMATERIAL::fgMATERIAL ( void ); + + +// Sorting routines +void fgMATERIAL::init_sort_list( void ); + + +int fgMATERIAL::append_sort_list( fgFRAGMENT *object ); + + +// Destructor +fgMATERIAL::~fgMATERIAL ( void ); + + +// $Log$ +// Revision 1.1 1998/05/30 01:56:45 curt +// Added material.cxx material.hxx +// diff --git a/Scenery/material.hxx b/Scenery/material.hxx new file mode 100644 index 000000000..dcd7433f9 --- /dev/null +++ b/Scenery/material.hxx @@ -0,0 +1,111 @@ +// material.hxx -- class to handle material properties +// +// Written by Curtis Olson, started May 1998. +// +// Copyright (C) 1998 Curtis L. Olson - curt@me.umn.edu +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License as +// published by the Free Software Foundation; either version 2 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// +// $Id$ +// (Log is kept at end of this file) + + +#ifndef _MATERIAL_HXX +#define _MATERIAL_HXX + + +#ifndef __cplusplus +# error This library requires C++ +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef HAVE_WINDOWS_H +# include +#endif + +#include +#include + +#include // STL associative "array" + +#if defined(__CYGWIN32__) +# include // Standard C++ string library +#elif defined(WIN32) +# include // Standard C++ string library +#else +# include // Standard C++ string library +#endif + +#include "tile.hxx" + + +#define FG_MAX_MATERIAL_FRAGS 100 + + +// Material property class +class fgMATERIAL { + +public: + + // material properties + GLfloat ambient[4], diffuse[4], specular[4]; + GLint texture_ptr; + + // transient list of objects with this material type (used for sorting + // by material to reduce GL state changes when rendering the scene + fgFRAGMENT * list[FG_MAX_MATERIAL_FRAGS]; + int list_size; + + // Constructor + fgMATERIAL ( void ); + + // Sorting routines + void init_sort_list( void ); + int append_sort_list( fgFRAGMENT *object ); + + // Destructor + ~fgMATERIAL ( void ); +}; + + +// Material management class +class fgMATERIAL_MGR { + +public: + + // associative array of materials + map < string, fgMATERIAL, less > materials; + + // Constructor + fgMATERIAL_MGR ( void ); + + // Load a library of material properties + int load_lib ( char *file ); + + // Destructor + ~fgMATERIAL_MGR ( void ); +}; + + +#endif // _MATERIAL_HXX + + +// $Log$ +// Revision 1.1 1998/05/30 01:56:45 curt +// Added material.cxx material.hxx +//