[Python-ogre-commit] SF.net SVN: python-ogre: [395] trunk/python-ogre
Brought to you by:
andy_miller,
roman_yakovenko
From: <and...@us...> - 2007-09-28 01:48:44
|
Revision: 395 http://python-ogre.svn.sourceforge.net/python-ogre/?rev=395&view=rev Author: andy_miller Date: 2007-09-27 18:48:44 -0700 (Thu, 27 Sep 2007) Log Message: ----------- Plib updates Media updates for ogreode/media Modified Paths: -------------- trunk/python-ogre/PythonOgreConfig_nt.py trunk/python-ogre/ThirdParty/quickgui/QuickGUIExportDLL.h trunk/python-ogre/ThirdParty/quickgui/QuickGUIHorizontalScrollBar.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUILabel.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUIList.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUIList.h trunk/python-ogre/ThirdParty/quickgui/QuickGUIManager.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUIManager.h trunk/python-ogre/ThirdParty/quickgui/QuickGUIScrollPane.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUIScrollPane.h trunk/python-ogre/ThirdParty/quickgui/QuickGUIText.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUITitleBar.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUIVerticalScrollBar.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUIWidget.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUIWidget.h trunk/python-ogre/code_generators/cleanIncrementalbuild.bat trunk/python-ogre/code_generators/plib/customization_data.py trunk/python-ogre/code_generators/plib/generate_code.py trunk/python-ogre/code_generators/plib/hand_made_wrappers.py trunk/python-ogre/code_generators/plib/python_plib.h trunk/python-ogre/demos/ogreode/resources.cfg trunk/python-ogre/environment.py trunk/python-ogre/packages_2.5/ogre/__init__.py trunk/python-ogre/packages_2.5/ogre/gui/CEGUI/__init__.py trunk/python-ogre/packages_2.5/ogre/gui/QuickGUI/__init__.py trunk/python-ogre/packages_2.5/ogre/gui/betagui/__init__.py trunk/python-ogre/packages_2.5/ogre/io/OIS/__init__.py trunk/python-ogre/packages_2.5/ogre/physics/NxOgre/__init__.py trunk/python-ogre/packages_2.5/ogre/physics/OgreNewt/__init__.py trunk/python-ogre/packages_2.5/ogre/physics/PhysX/__init__.py trunk/python-ogre/packages_2.5/ogre/renderer/OGRE/__init__.py trunk/python-ogre/packages_2.5/ogre/renderer/OGRE/sf_OIS.py Added Paths: ----------- trunk/python-ogre/ThirdParty/plib/Makefile.am trunk/python-ogre/ThirdParty/plib/Makefile.in trunk/python-ogre/ThirdParty/plib/pcx.h trunk/python-ogre/ThirdParty/plib/sg.cxx trunk/python-ogre/ThirdParty/plib/sg.dsp trunk/python-ogre/ThirdParty/plib/sg.h trunk/python-ogre/ThirdParty/plib/sg.vcproj trunk/python-ogre/ThirdParty/plib/sg.vcproj.JNPR.amiller.user trunk/python-ogre/ThirdParty/plib/sgIsect.cxx trunk/python-ogre/ThirdParty/plib/sgPerlinNoise.cxx trunk/python-ogre/ThirdParty/plib/sgd.cxx trunk/python-ogre/ThirdParty/plib/sgdIsect.cxx trunk/python-ogre/ThirdParty/plib/ssg.cxx trunk/python-ogre/ThirdParty/plib/ssg.dsp trunk/python-ogre/ThirdParty/plib/ssg.h trunk/python-ogre/ThirdParty/plib/ssg.vcproj trunk/python-ogre/ThirdParty/plib/ssg.vcproj.JNPR.amiller.user trunk/python-ogre/ThirdParty/plib/ssg3ds.h trunk/python-ogre/ThirdParty/plib/ssgAnimTransform.cxx trunk/python-ogre/ThirdParty/plib/ssgAnimation.cxx trunk/python-ogre/ThirdParty/plib/ssgAxisTransform.cxx trunk/python-ogre/ThirdParty/plib/ssgBase.cxx trunk/python-ogre/ThirdParty/plib/ssgBaseTransform.cxx trunk/python-ogre/ThirdParty/plib/ssgBranch.cxx trunk/python-ogre/ThirdParty/plib/ssgContext.cxx trunk/python-ogre/ThirdParty/plib/ssgCutout.cxx trunk/python-ogre/ThirdParty/plib/ssgDList.cxx trunk/python-ogre/ThirdParty/plib/ssgEntity.cxx trunk/python-ogre/ThirdParty/plib/ssgIO.cxx trunk/python-ogre/ThirdParty/plib/ssgInvisible.cxx trunk/python-ogre/ThirdParty/plib/ssgIsect.cxx trunk/python-ogre/ThirdParty/plib/ssgKeyFlier.h trunk/python-ogre/ThirdParty/plib/ssgLeaf.cxx trunk/python-ogre/ThirdParty/plib/ssgList.cxx trunk/python-ogre/ThirdParty/plib/ssgLoad.cxx trunk/python-ogre/ThirdParty/plib/ssgLoad3ds.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadAC.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadASC.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadASE.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadATG.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadBMP.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadDOF.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadDXF.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadFLT.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadIV.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadM.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadMD2.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadMDL.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadMDL.h trunk/python-ogre/ThirdParty/plib/ssgLoadMDL_BGLTexture.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadOBJ.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadOFF.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadPCX.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadPNG.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadSGI.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadSSG.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadStrip.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadTGA.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadTRI.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadTexture.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadVRML.h trunk/python-ogre/ThirdParty/plib/ssgLoadVRML1.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadX.cxx trunk/python-ogre/ThirdParty/plib/ssgLoadXPlaneObj.cxx trunk/python-ogre/ThirdParty/plib/ssgLoaderWriterStuff.cxx trunk/python-ogre/ThirdParty/plib/ssgLoaderWriterStuff.h trunk/python-ogre/ThirdParty/plib/ssgLocal.h trunk/python-ogre/ThirdParty/plib/ssgMSFSPalette.h trunk/python-ogre/ThirdParty/plib/ssgOptimiser.cxx trunk/python-ogre/ThirdParty/plib/ssgParser.cxx trunk/python-ogre/ThirdParty/plib/ssgParser.h trunk/python-ogre/ThirdParty/plib/ssgRangeSelector.cxx trunk/python-ogre/ThirdParty/plib/ssgRoot.cxx trunk/python-ogre/ThirdParty/plib/ssgSave3ds.cxx trunk/python-ogre/ThirdParty/plib/ssgSaveAC.cxx trunk/python-ogre/ThirdParty/plib/ssgSaveASC.cxx trunk/python-ogre/ThirdParty/plib/ssgSaveASE.cxx trunk/python-ogre/ThirdParty/plib/ssgSaveATG.cxx trunk/python-ogre/ThirdParty/plib/ssgSaveDXF.cxx trunk/python-ogre/ThirdParty/plib/ssgSaveFLT.cxx trunk/python-ogre/ThirdParty/plib/ssgSaveIV.cxx trunk/python-ogre/ThirdParty/plib/ssgSaveM.cxx trunk/python-ogre/ThirdParty/plib/ssgSaveOBJ.cxx trunk/python-ogre/ThirdParty/plib/ssgSaveOFF.cxx trunk/python-ogre/ThirdParty/plib/ssgSaveQHI.cxx trunk/python-ogre/ThirdParty/plib/ssgSaveTRI.cxx trunk/python-ogre/ThirdParty/plib/ssgSaveVRML1.cxx trunk/python-ogre/ThirdParty/plib/ssgSaveX.cxx trunk/python-ogre/ThirdParty/plib/ssgSelector.cxx trunk/python-ogre/ThirdParty/plib/ssgSimpleList.cxx trunk/python-ogre/ThirdParty/plib/ssgSimpleState.cxx trunk/python-ogre/ThirdParty/plib/ssgState.cxx trunk/python-ogre/ThirdParty/plib/ssgStateSelector.cxx trunk/python-ogre/ThirdParty/plib/ssgStateTables.cxx trunk/python-ogre/ThirdParty/plib/ssgStatistics.cxx trunk/python-ogre/ThirdParty/plib/ssgStats.cxx trunk/python-ogre/ThirdParty/plib/ssgTexTrans.cxx trunk/python-ogre/ThirdParty/plib/ssgTexture.cxx trunk/python-ogre/ThirdParty/plib/ssgTransform.cxx trunk/python-ogre/ThirdParty/plib/ssgTween.cxx trunk/python-ogre/ThirdParty/plib/ssgTweenController.cxx trunk/python-ogre/ThirdParty/plib/ssgVTable.cxx trunk/python-ogre/ThirdParty/plib/ssgVertSplitter.cxx trunk/python-ogre/ThirdParty/plib/ssgVertSplitter.h trunk/python-ogre/ThirdParty/plib/ssgVtxArray.cxx trunk/python-ogre/ThirdParty/plib/ssgVtxTable.cxx trunk/python-ogre/ThirdParty/plib/ssgconf.h trunk/python-ogre/demos/ogreode/media/ trunk/python-ogre/demos/ogreode/media/OgreMeshUpgrade.log trunk/python-ogre/demos/ogreode/media/Terrain01.raw trunk/python-ogre/demos/ogreode/media/Terrain02.raw trunk/python-ogre/demos/ogreode/media/Terrain03.raw trunk/python-ogre/demos/ogreode/media/Terrain04.raw trunk/python-ogre/demos/ogreode/media/Terrain05.raw trunk/python-ogre/demos/ogreode/media/autoterraintexture.cg trunk/python-ogre/demos/ogreode/media/jeep.ogreode trunk/python-ogre/demos/ogreode/media/landscape.cfg trunk/python-ogre/demos/ogreode/media/landscape1.cfg trunk/python-ogre/demos/ogreode/media/landscape2.cfg trunk/python-ogre/demos/ogreode/media/landscape3.cfg trunk/python-ogre/demos/ogreode/media/landscape4.cfg trunk/python-ogre/demos/ogreode/media/landscape5.cfg trunk/python-ogre/demos/ogreode/media/materials/ trunk/python-ogre/demos/ogreode/media/materials/scripts/ trunk/python-ogre/demos/ogreode/media/materials/scripts/apache_body.material trunk/python-ogre/demos/ogreode/media/materials/scripts/autoterraintexture.material trunk/python-ogre/demos/ogreode/media/materials/scripts/ball.material trunk/python-ogre/demos/ogreode/media/materials/scripts/capsule.material trunk/python-ogre/demos/ogreode/media/materials/scripts/crate.material trunk/python-ogre/demos/ogreode/media/materials/scripts/door.material trunk/python-ogre/demos/ogreode/media/materials/scripts/gun.material trunk/python-ogre/demos/ogreode/media/materials/scripts/jeep_body.material trunk/python-ogre/demos/ogreode/media/materials/scripts/jeep_wheell.material trunk/python-ogre/demos/ogreode/media/materials/scripts/jeep_wheelr.material trunk/python-ogre/demos/ogreode/media/materials/scripts/kk3d.material trunk/python-ogre/demos/ogreode/media/materials/scripts/landscape.material trunk/python-ogre/demos/ogreode/media/materials/scripts/main_rotor.material trunk/python-ogre/demos/ogreode/media/materials/scripts/plane.material trunk/python-ogre/demos/ogreode/media/materials/scripts/racingcircuit.material trunk/python-ogre/demos/ogreode/media/materials/scripts/scooby_body.material trunk/python-ogre/demos/ogreode/media/materials/scripts/scooby_wheel.material trunk/python-ogre/demos/ogreode/media/materials/scripts/tail_rotor.material trunk/python-ogre/demos/ogreode/media/materials/scripts/target.material trunk/python-ogre/demos/ogreode/media/materials/scripts/zombie.material trunk/python-ogre/demos/ogreode/media/materials/textures/ trunk/python-ogre/demos/ogreode/media/materials/textures/apache.png trunk/python-ogre/demos/ogreode/media/materials/textures/ball.png trunk/python-ogre/demos/ogreode/media/materials/textures/barrelside.tga trunk/python-ogre/demos/ogreode/media/materials/textures/bigflame.png trunk/python-ogre/demos/ogreode/media/materials/textures/black.png trunk/python-ogre/demos/ogreode/media/materials/textures/capsule.png trunk/python-ogre/demos/ogreode/media/materials/textures/chasis.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/chasis_a.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/concrete.tga trunk/python-ogre/demos/ogreode/media/materials/textures/crate.png trunk/python-ogre/demos/ogreode/media/materials/textures/curb.tga trunk/python-ogre/demos/ogreode/media/materials/textures/desert07_BK.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/desert07_DN.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/desert07_FR.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/desert07_LF.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/desert07_RT.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/desert07_UP.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/devimg1.tga trunk/python-ogre/demos/ogreode/media/materials/textures/door.png trunk/python-ogre/demos/ogreode/media/materials/textures/drpetter1.tga trunk/python-ogre/demos/ogreode/media/materials/textures/explosion.png trunk/python-ogre/demos/ogreode/media/materials/textures/fence.tga trunk/python-ogre/demos/ogreode/media/materials/textures/flare.png trunk/python-ogre/demos/ogreode/media/materials/textures/flaretrail.png trunk/python-ogre/demos/ogreode/media/materials/textures/forest.tga trunk/python-ogre/demos/ogreode/media/materials/textures/grass.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/grass.tga trunk/python-ogre/demos/ogreode/media/materials/textures/gun.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/jeep_terrain.png trunk/python-ogre/demos/ogreode/media/materials/textures/jeep_wheel.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/red_jeep.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/rocks.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/ruedas.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/sand.tga trunk/python-ogre/demos/ogreode/media/materials/textures/skybox_bk.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/skybox_dn.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/skybox_fr.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/skybox_lf.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/skybox_rt.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/skybox_up.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/smoke.png trunk/python-ogre/demos/ogreode/media/materials/textures/soil_wall.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/streak.png trunk/python-ogre/demos/ogreode/media/materials/textures/target.png trunk/python-ogre/demos/ogreode/media/materials/textures/tarmac2.tga trunk/python-ogre/demos/ogreode/media/materials/textures/tarmac2finish.tga trunk/python-ogre/demos/ogreode/media/materials/textures/tarmac2stage.tga trunk/python-ogre/demos/ogreode/media/materials/textures/tiled_floor.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/ventanas.jpg trunk/python-ogre/demos/ogreode/media/materials/textures/zombie.jpg trunk/python-ogre/demos/ogreode/media/models/ trunk/python-ogre/demos/ogreode/media/models/apache_body.mesh trunk/python-ogre/demos/ogreode/media/models/ball.mesh trunk/python-ogre/demos/ogreode/media/models/capsule.mesh trunk/python-ogre/demos/ogreode/media/models/crate.mesh trunk/python-ogre/demos/ogreode/media/models/door.mesh trunk/python-ogre/demos/ogreode/media/models/gun.mesh trunk/python-ogre/demos/ogreode/media/models/jeep_body.mesh trunk/python-ogre/demos/ogreode/media/models/jeep_wheell.mesh trunk/python-ogre/demos/ogreode/media/models/jeep_wheelr.mesh trunk/python-ogre/demos/ogreode/media/models/landscape.mesh trunk/python-ogre/demos/ogreode/media/models/main_rotor.mesh trunk/python-ogre/demos/ogreode/media/models/plane.mesh trunk/python-ogre/demos/ogreode/media/models/racingcircuit.mesh trunk/python-ogre/demos/ogreode/media/models/scooby_body.mesh trunk/python-ogre/demos/ogreode/media/models/scooby_wheell.mesh trunk/python-ogre/demos/ogreode/media/models/scooby_wheelr.mesh trunk/python-ogre/demos/ogreode/media/models/tail_rotor.mesh trunk/python-ogre/demos/ogreode/media/models/zombie_small.mesh trunk/python-ogre/demos/ogreode/media/myExplosion.particle trunk/python-ogre/demos/ogreode/media/ninja.ogreode trunk/python-ogre/demos/ogreode/media/ogreodedemos.overlay trunk/python-ogre/demos/ogreode/media/ogreodedemos.particle trunk/python-ogre/demos/ogreode/media/robot.ogreode trunk/python-ogre/demos/ogreode/media/simplescenes.ogreode trunk/python-ogre/demos/ogreode/media/subaru.ogreode trunk/python-ogre/demos/ogreode/media/zombie.ogreode trunk/python-ogre/demos/ogreode/media/zombie_auto.ogreode trunk/python-ogre/demos/ogreode/media/zombie_small.skeleton trunk/python-ogre/packages_2.5/ogre/addons/plib/ trunk/python-ogre/packages_2.5/ogre/addons/plib/__init__.py trunk/python-ogre/packages_2.5/ogre/gui/navi/ trunk/python-ogre/packages_2.5/ogre/gui/navi/__init__.py Removed Paths: ------------- trunk/python-ogre/ThirdParty/quickgui/QuickGUIEventArgs.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUIPrerequisites.h trunk/python-ogre/ThirdParty/quickgui/QuickGUITextCursor.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUITextCursor.h trunk/python-ogre/ThirdParty/quickgui/QuickGUITrackBar.cpp trunk/python-ogre/ThirdParty/quickgui/QuickGUITrackBar.h Modified: trunk/python-ogre/PythonOgreConfig_nt.py =================================================================== --- trunk/python-ogre/PythonOgreConfig_nt.py 2007-09-23 14:36:43 UTC (rev 394) +++ trunk/python-ogre/PythonOgreConfig_nt.py 2007-09-28 01:48:44 UTC (rev 395) @@ -109,7 +109,7 @@ PATH_INCLUDE_OgreOdeLoader= os.path.join( PATH_OgreOde,'loader/include') PATH_INCLUDE_FMOD = os.path.join(PATH_FMOD, 'api/inc') PATH_INCLUDE_Ogre_CEGUIRenderer = os.path.join( PATH_Ogre, 'samples/Common/CEGUIRenderer/include') -PATH_INCLUDE_quickgui = os.path.join(PATH_quickgui,'QuickGUI','include') +PATH_INCLUDE_quickgui = PATH_quickgui PATH_INCLUDE_NxOgre= os.path.join(PATH_NxOgre, 'include') PATH_INCLUDE_Bullet= os.path.join(PATH_Bullet, 'src') PATH_INCLUDE_freetype= os.path.join(PATH_INCLUDE_quickgui,'FreeType2.3.5') Added: trunk/python-ogre/ThirdParty/plib/Makefile.am =================================================================== --- trunk/python-ogre/ThirdParty/plib/Makefile.am (rev 0) +++ trunk/python-ogre/ThirdParty/plib/Makefile.am 2007-09-28 01:48:44 UTC (rev 395) @@ -0,0 +1,16 @@ +if BUILD_SG + +lib_LIBRARIES = libplibsg.a + +include_HEADERS = sg.h + +libplibsg_a_SOURCES = sg.cxx sgd.cxx \ + sgIsect.cxx sgdIsect.cxx \ + sgPerlinNoise.cxx + +INCLUDES = -I$(top_srcdir)/src/util + +endif + +EXTRA_DIST = sg.dsp + Added: trunk/python-ogre/ThirdParty/plib/Makefile.in =================================================================== --- trunk/python-ogre/ThirdParty/plib/Makefile.in (rev 0) +++ trunk/python-ogre/ThirdParty/plib/Makefile.in 2007-09-28 01:48:44 UTC (rev 395) @@ -0,0 +1,486 @@ +# Makefile.in generated by automake 1.8.3 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +SOURCES = $(libplibsg_a_SOURCES) + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_triplet = @host@ +subdir = src/sg +DIST_COMMON = $(am__include_HEADERS_DIST) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(mkdir_p) +CONFIG_CLEAN_FILES = +AR = ar +ARFLAGS = cru +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" +libLIBRARIES_INSTALL = $(INSTALL_DATA) +LIBRARIES = $(lib_LIBRARIES) +libplibsg_a_AR = $(AR) $(ARFLAGS) +libplibsg_a_LIBADD = +am__libplibsg_a_SOURCES_DIST = sg.cxx sgd.cxx sgIsect.cxx sgdIsect.cxx \ + sgPerlinNoise.cxx +@BUILD_SG_TRUE@am_libplibsg_a_OBJECTS = sg.$(OBJEXT) sgd.$(OBJEXT) \ +@BUILD_SG_TRUE@ sgIsect.$(OBJEXT) sgdIsect.$(OBJEXT) \ +@BUILD_SG_TRUE@ sgPerlinNoise.$(OBJEXT) +libplibsg_a_OBJECTS = $(am_libplibsg_a_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/sg.Po ./$(DEPDIR)/sgIsect.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/sgPerlinNoise.Po ./$(DEPDIR)/sgd.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/sgdIsect.Po +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +SOURCES = $(libplibsg_a_SOURCES) +DIST_SOURCES = $(am__libplibsg_a_SOURCES_DIST) +am__include_HEADERS_DIST = sg.h +includeHEADERS_INSTALL = $(INSTALL_HEADER) +HEADERS = $(include_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_FNT_FALSE = @BUILD_FNT_FALSE@ +BUILD_FNT_TRUE = @BUILD_FNT_TRUE@ +BUILD_JS_FALSE = @BUILD_JS_FALSE@ +BUILD_JS_TRUE = @BUILD_JS_TRUE@ +BUILD_NET_FALSE = @BUILD_NET_FALSE@ +BUILD_NET_TRUE = @BUILD_NET_TRUE@ +BUILD_PSL_FALSE = @BUILD_PSL_FALSE@ +BUILD_PSL_TRUE = @BUILD_PSL_TRUE@ +BUILD_PUAUX_FALSE = @BUILD_PUAUX_FALSE@ +BUILD_PUAUX_TRUE = @BUILD_PUAUX_TRUE@ +BUILD_PUI_FALSE = @BUILD_PUI_FALSE@ +BUILD_PUI_TRUE = @BUILD_PUI_TRUE@ +BUILD_PW_FALSE = @BUILD_PW_FALSE@ +BUILD_PW_TRUE = @BUILD_PW_TRUE@ +BUILD_SG_FALSE = @BUILD_SG_FALSE@ +BUILD_SG_TRUE = @BUILD_SG_TRUE@ +BUILD_SL_FALSE = @BUILD_SL_FALSE@ +BUILD_SL_TRUE = @BUILD_SL_TRUE@ +BUILD_SSGAUX_FALSE = @BUILD_SSGAUX_FALSE@ +BUILD_SSGAUX_TRUE = @BUILD_SSGAUX_TRUE@ +BUILD_SSG_FALSE = @BUILD_SSG_FALSE@ +BUILD_SSG_TRUE = @BUILD_SSG_TRUE@ +BUILD_UL_FALSE = @BUILD_UL_FALSE@ +BUILD_UL_TRUE = @BUILD_UL_TRUE@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +X_CFLAGS = @X_CFLAGS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_LIBS = @X_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +@BUILD_SG_TRUE@lib_LIBRARIES = libplibsg.a +@BUILD_SG_TRUE@include_HEADERS = sg.h +@BUILD_SG_TRUE@libplibsg_a_SOURCES = sg.cxx sgd.cxx \ +@BUILD_SG_TRUE@ sgIsect.cxx sgdIsect.cxx \ +@BUILD_SG_TRUE@ sgPerlinNoise.cxx + +@BUILD_SG_TRUE@INCLUDES = -I$(top_srcdir)/src/util +EXTRA_DIST = sg.dsp +all: all-am + +.SUFFIXES: +.SUFFIXES: .cxx .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/sg/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/sg/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-libLIBRARIES: $(lib_LIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + @$(POST_INSTALL) + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + p="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \ + $(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \ + else :; fi; \ + done + +uninstall-libLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + p="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLIBRARIES: + -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) +libplibsg.a: $(libplibsg_a_OBJECTS) $(libplibsg_a_DEPENDENCIES) + -rm -f libplibsg.a + $(libplibsg_a_AR) libplibsg.a $(libplibsg_a_OBJECTS) $(libplibsg_a_LIBADD) + $(RANLIB) libplibsg.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sg.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sgIsect.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sgPerlinNoise.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sgd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sgdIsect.Po@am__quote@ + +.cxx.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cxx.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +uninstall-info-am: +install-includeHEADERS: $(include_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)" + @list='$(include_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \ + $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \ + done + +uninstall-includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(include_HEADERS)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \ + rm -f "$(DESTDIR)$(includedir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-includeHEADERS + +install-exec-am: install-libLIBRARIES + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-includeHEADERS uninstall-info-am \ + uninstall-libLIBRARIES + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am \ + install-includeHEADERS install-info install-info-am \ + install-libLIBRARIES install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-includeHEADERS uninstall-info-am \ + uninstall-libLIBRARIES + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: Added: trunk/python-ogre/ThirdParty/plib/pcx.h =================================================================== --- trunk/python-ogre/ThirdParty/plib/pcx.h (rev 0) +++ trunk/python-ogre/ThirdParty/plib/pcx.h 2007-09-28 01:48:44 UTC (rev 395) @@ -0,0 +1,86 @@ +// Loading of the PCX texture file format +// +// This file is used for both PLIB and for BoB. +// +// Written by Wolfram Kuss in december 2003 +// +// This file is published as public domain + + +struct pcxHeaderType + { + char manufacturer; // always 10 + char version; // usually 5 + char encoding; // 1 = RLE + char bitsPerPixel; // number of bits to represent a pixel + short x, y; // upper left coordinates + short xmax, ymax; + short hDPI, vDPI; // DPI + char egaPalette[48]; // obsolete + char reserved; // unused, always 0 + char nColorPlanes; // number of color planes. not implemented yet? + short bytesPerLine; // bytes per scan line. not implemented yet? todo kludge + short paletteInfo; // colored or grey scale. not implemented yet? + short hScreenSize, cScreenSize; + char padding[54]; // reserved, always 0 + }; + + +#define READ_BYTE (buffer[0]); buffer++; +#define READ_SHORT ((((unsigned long)buffer[0])<<8) + buffer[1]); buffer += 2; +#define READ_LONG ((((unsigned long)buffer[0])<<24) + (((unsigned long)buffer[1])<<16) + (((unsigned long)buffer[2])<<8) + buffer[3]); buffer += 4; + + +// It is bad style to have a function inside a header file, but this way there is only one file +// I need to "synchronise" between PLIB and BoB. + +static int ReadPCXBody(UByte*& buffer, pcxHeaderType *ppcxHeader, UByte * pBody) +// returns TRUE on success. +// reads from buffer (which will normally just hold the file contents, but in memory, +// writes to pBody, which must have been allocated +{ + unsigned short x,y; + + if ((ppcxHeader->bitsPerPixel != 8) // unsupported pcx + || (ppcxHeader->encoding>1) // invalid PCX + // || (pcxHeader.nColorPlanes != 1) // unsupported pcx + || (ppcxHeader->manufacturer != 10)) // invalid pcx + return (FALSE); + + unsigned short width = ppcxHeader->xmax-ppcxHeader->x+1; + + x=0; y=0; // upper left coordinates + for(;;) + { + UByte color = READ_BYTE; + if ((color &0xC0) != 0xC0) // uncompressed? + { + *pBody++ = color; + x++; + if (x >= width) + { x=0; y++; // next line + if(y > ppcxHeader->ymax-ppcxHeader->y) + break; + } + } + else + { + UByte counter, length = color & 0x3F; // number of times next byte repeated + color = READ_BYTE; + for (counter=0; counter<length; counter++) + { + *pBody++ = color; + x++; + if (x >= width) + { x=0; y++; // next line + counter=length; + if(y > ppcxHeader->ymax-ppcxHeader->y) + break; // breaks for (counter=0; counte... + } + } + if(y > ppcxHeader->ymax-ppcxHeader->y) + break; // breaks for(;;) + } + } + return TRUE; +} Added: trunk/python-ogre/ThirdParty/plib/sg.cxx =================================================================== --- trunk/python-ogre/ThirdParty/plib/sg.cxx (rev 0) +++ trunk/python-ogre/ThirdParty/plib/sg.cxx 2007-09-28 01:48:44 UTC (rev 395) @@ -0,0 +1,2063 @@ +/* + PLIB - A Suite of Portable Game Libraries + Copyright (C) 1998,2002 Steve Baker + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + For further information visit http://plib.sourceforge.net + + $Id: sg.cxx,v 1.44 2004/08/05 01:07:09 puggles Exp $ +*/ + + +#include "sg.h" + +sgVec3 _sgGravity = { 0.0f, 0.0f, -9.8f } ; + +void sgVectorProductVec3 ( sgVec3 dst, const sgVec3 a, const sgVec3 b ) +{ + dst[0] = a[1] * b[2] - a[2] * b[1] ; + dst[1] = a[2] * b[0] - a[0] * b[2] ; + dst[2] = a[0] * b[1] - a[1] * b[0] ; +} + +inline SGfloat _sgClampToUnity ( const SGfloat x ) +{ + if ( x > SG_ONE ) return SG_ONE ; + if ( x < -SG_ONE ) return -SG_ONE ; + return x ; +} + +int sgCompare3DSqdDist( const sgVec3 v1, const sgVec3 v2, const SGfloat sqd_dist ) +{ + sgVec3 tmp ; + + sgSubVec3 ( tmp, v2, v1 ) ; + + SGfloat sqdist = tmp[0] * tmp[0] + tmp[1] * tmp[1] + tmp[2] * tmp[2] ; + + if ( sqdist > sqd_dist ) return 1 ; + if ( sqdist < sqd_dist ) return -1 ; + return 0 ; +} + +void sgMakeRotMat4( sgMat4 mat, const SGfloat angle, const sgVec3 axis ) +{ + sgVec3 ax ; + sgNormalizeVec3 ( ax, axis ) ; + + SGfloat temp_angle = angle * SG_DEGREES_TO_RADIANS ; + SGfloat s = (SGfloat) sin ( temp_angle ) ; + SGfloat c = (SGfloat) cos ( temp_angle ) ; + SGfloat t = SG_ONE - c ; + + mat[0][0] = t * ax[0] * ax[0] + c ; + mat[0][1] = t * ax[0] * ax[1] + s * ax[2] ; + mat[0][2] = t * ax[0] * ax[2] - s * ax[1] ; + mat[0][3] = SG_ZERO ; + + mat[1][0] = t * ax[1] * ax[0] - s * ax[2] ; + mat[1][1] = t * ax[1] * ax[1] + c ; + mat[1][2] = t * ax[1] * ax[2] + s * ax[0] ; + mat[1][3] = SG_ZERO ; + + mat[2][0] = t * ax[2] * ax[0] + s * ax[1] ; + mat[2][1] = t * ax[2] * ax[1] - s * ax[0] ; + mat[2][2] = t * ax[2] * ax[2] + c ; + mat[2][3] = SG_ZERO ; + + mat[3][0] = SG_ZERO ; + mat[3][1] = SG_ZERO ; + mat[3][2] = SG_ZERO ; + mat[3][3] = SG_ONE ; +} + + + + +void sgMakePickMatrix( sgMat4 mat, sgFloat x, sgFloat y, + sgFloat width, sgFloat height, sgVec4 viewport ) +{ + sgFloat sx = viewport[2] / width ; + sgFloat sy = viewport[3] / height ; + sgFloat tx = ( viewport[2] + SG_TWO * (viewport[0] - x) ) / width ; + sgFloat ty = ( viewport[3] + SG_TWO * (viewport[1] - y) ) / height ; + + mat[0][0] = sx ; + mat[0][1] = SG_ZERO ; + mat[0][2] = SG_ZERO ; + mat[0][3] = SG_ZERO ; + + mat[1][0] = SG_ZERO ; + mat[1][1] = sy ; + mat[1][2] = SG_ZERO ; + mat[1][3] = SG_ZERO ; + + mat[2][0] = SG_ZERO ; + mat[2][1] = SG_ZERO ; + mat[2][2] = SG_ONE ; + mat[2][3] = SG_ZERO ; + + mat[3][0] = tx ; + mat[3][1] = ty ; + mat[3][2] = SG_ZERO ; + mat[3][3] = SG_ONE ; +} + + + +void sgMakeLookAtMat4 ( sgMat4 dst, const sgVec3 eye, + const sgVec3 center, + const sgVec3 up ) +{ + // Caveats: + // 1) In order to compute the line of sight, the eye point must not be equal + // to the center point. + // 2) The up vector must not be parallel to the line of sight from the eye + // to the center point. + + /* Compute the direction vectors */ + sgVec3 x,y,z; + + /* Y vector = center - eye */ + sgSubVec3 ( y, center, eye ) ; + + /* Z vector = up */ + sgCopyVec3 ( z, up ) ; + + /* X vector = Y cross Z */ + sgVectorProductVec3 ( x, y, z ) ; + + /* Recompute Z = X cross Y */ + sgVectorProductVec3 ( z, x, y ) ; + + /* Normalize everything */ + sgNormaliseVec3 ( x ) ; + sgNormaliseVec3 ( y ) ; + sgNormaliseVec3 ( z ) ; + + /* Build the matrix */ + sgSetVec4 ( dst[0], x[0], x[1], x[2], SG_ZERO ) ; + sgSetVec4 ( dst[1], y[0], y[1], y[2], SG_ZERO ) ; + sgSetVec4 ( dst[2], z[0], z[1], z[2], SG_ZERO ) ; + sgSetVec4 ( dst[3], eye[0], eye[1], eye[2], SG_ONE ) ; +} + +// -dw- inconsistent linkage! + +float sgTriArea( sgVec3 p0, sgVec3 p1, sgVec3 p2 ) +{ + /* + From comp.graph.algorithms FAQ + + 2A(P) = abs(N.(sum_{i=0}^{n-1}(v_i x v_{i+1}))) + This is an optimized version for a triangle + but easily extended for planar polygon's with more sides + by passing in the number of sides and the vv array + sgTriArea( int nsides, float **vv ) + and changing the normal calculation and the for loop appropriately + sgMakeNormal( norm, vv[0], vv[1], vv[2] ) + for( int i=0; i<n; i++ ) + */ + + sgVec3 sum; + sgZeroVec3( sum ); + + sgVec3 norm; + sgMakeNormal( norm, p0, p1, p2 ); + + float *vv[3]; + vv[0] = p0; + vv[1] = p1; + vv[2] = p2; + + for( int i=0; i<3; i++ ) + { + int ii = (i+1) % 3; + + sum[0] += (vv[i][1] * vv[ii][2] - vv[i][2] * vv[ii][1]) ; + sum[1] += (vv[i][2] * vv[ii][0] - vv[i][0] * vv[ii][2]) ; + sum[2] += (vv[i][0] * vv[ii][1] - vv[i][1] * vv[ii][0]) ; + } + + float area = sgAbs ( sgScalarProductVec3 ( norm, sum ) ) ; + + return area / 2.0f ; +} + +/***************************************************\ +* functions to get the angle between two vectors * +\***************************************************/ + +SGfloat sgAngleBetweenVec3 ( sgVec3 v1, sgVec3 v2 ) +{ + sgVec3 nv1, nv2 ; + + sgNormalizeVec3 ( nv1, v1 ) ; + sgNormalizeVec3 ( nv2, v2 ) ; + return sgAngleBetweenNormalizedVec3 ( nv1, nv2 ) ; +} + +SGfloat sgAngleBetweenNormalizedVec3 (sgVec3 first, sgVec3 second, sgVec3 normal) +{ + // result is in the range 0..360 degrees + // + // Attention: first and second have to be normalized + // the normal is needed to decide between for example 0.123 + // looking "from one side" and -0.123 looking fomr the other + + SGfloat myCos, abs1, abs2, SProduct, deltaAngle, myNorm; + + if((normal[0]==0) && (normal[1]==0) && (normal[2]==0)) + { + ulSetError ( UL_WARNING, "sgGetAngleBetweenVectors: Normal is zero."); + return 0.0 ; + } + + sgVec3 temp; + + sgVectorProductVec3( temp, first, second); + + myNorm = sgLengthVec3 ( temp ); + + if ( (sgScalarProductVec3(temp, normal))<0 ) + myNorm = -myNorm; + + if ( myNorm < -0.99999 ) + deltaAngle = -SG_PI*0.5; + else + if ( myNorm > 0.99999 ) + deltaAngle = SG_PI*0.5; + else + deltaAngle = (SGfloat)asin((double)myNorm); + + // deltaAngle is in the range -SG_PI*0.5 to +SG_PI*0.5 here + // However, the correct result could also be + // deltaAngleS := pi - deltaAngle + // Please note that: + // cos(deltaAngleS)=cos(pi-deltaAngle)=-cos(deltaAngle) + // So, the question is whether + or - cos(deltaAngle) + // is sgScalarProductVec3(first, second) + + if ( deltaAngle < 0 ) + deltaAngle = deltaAngle + 2*SG_PI; // unnessecary? + + SProduct = sgScalarProductVec3(first, second); + myCos = (SGfloat) cos(deltaAngle); + + abs1 = SProduct - myCos; + abs2 = SProduct + myCos; + + if ( abs1 < 0 ) abs1 = -abs1 ; + if ( abs2 < 0 ) abs2 = -abs2 ; + + assert( (abs1 < 0.1) || (abs2 < 0.1) ) ; + + if ( abs2 < abs1 ) + { + // deltaAngleS is the correct result + + if ( deltaAngle <= SG_PI ) + deltaAngle = SG_PI - deltaAngle ; + else + deltaAngle = 3*SG_PI - deltaAngle ; + } + + assert ( deltaAngle >= 0.0 ) ; + assert ( deltaAngle <= 2.0*SG_PI ) ; + + return deltaAngle * SG_RADIANS_TO_DEGREES ; +} + + +SGfloat sgAngleBetweenVec3 ( sgVec3 v1, sgVec3 v2, sgVec3 normal ) +{ + // nornmal has to be normalized. + sgVec3 nv1, nv2 ; + + sgNormalizeVec3 ( nv1, v1 ) ; + sgNormalizeVec3 ( nv2, v2 ) ; + return sgAngleBetweenNormalizedVec3 ( nv1, nv2, normal ) ; +} + + +/*********************\ +* sgBox routines * +\*********************/ + + +void sgBox::extend ( const sgVec3 v ) +{ + if ( isEmpty () ) + { + sgCopyVec3 ( min, v ) ; + sgCopyVec3 ( max, v ) ; + } + else + { + if ( v[0] < min[0] ) min[0] = v[0] ; + if ( v[1] < min[1] ) min[1] = v[1] ; + if ( v[2] < min[2] ) min[2] = v[2] ; + if ( v[0] > max[0] ) max[0] = v[0] ; + if ( v[1] > max[1] ) max[1] = v[1] ; + if ( v[2] > max[2] ) max[2] = v[2] ; + } +} + + +void sgBox::extend ( const sgBox *b ) +{ + if ( b -> isEmpty () ) + return ; + + if ( isEmpty () ) + { + sgCopyVec3 ( min, b->getMin() ) ; + sgCopyVec3 ( max, b->getMax() ) ; + } + else + { + extend ( b->getMin() ) ; + extend ( b->getMax() ) ; + } +} + + +void sgBox::extend ( const sgSphere *s ) +{ + if ( s -> isEmpty () ) + return ; + + /* + In essence, this extends around a box around the sphere - which + is still a perfect solution because both boxes are axially aligned. + */ + + sgVec3 x ; + + sgSetVec3 ( x, s->getCenter()[0]+s->getRadius(), + s->getCenter()[1]+s->getRadius(), + s->getCenter()[2]+s->getRadius() ) ; + extend ( x ) ; + + sgSetVec3 ( x, s->getCenter()[0]-s->getRadius(), + s->getCenter()[1]-s->getRadius(), + s->getCenter()[2]-s->getRadius() ) ; + extend ( x ) ; +} + + +int sgBox::intersects ( const sgVec4 plane ) const +{ + /* + Save multiplies by not redoing Ax+By+Cz+D for each point. + */ + + SGfloat Ax_min = plane[0] * min[0] ; + SGfloat By_min = plane[1] * min[1] ; + SGfloat Cz_min_plus_D = plane[2] * min[2] + plane[3] ; + + SGfloat Ax_max = plane[0] * max[0] ; + SGfloat By_max = plane[1] * max[1] ; + SGfloat Cz_max_plus_D = plane[2] * max[2] + plane[3] ; + + /* + Count the number of vertices on the positive side of the plane. + */ + + int count = ( Ax_min + By_min + Cz_min_plus_D > SG_ZERO ) + + ( Ax_min + By_min + Cz_max_plus_D > SG_ZERO ) + + ( Ax_min + By_max + Cz_min_plus_D > SG_ZERO ) + + ( Ax_min + By_max + Cz_max_plus_D > SG_ZERO ) + + ( Ax_max + By_min + Cz_min_plus_D > SG_ZERO ) + + ( Ax_max + By_min + Cz_max_plus_D > SG_ZERO ) + + ( Ax_max + By_max + Cz_min_plus_D > SG_ZERO ) + + ( Ax_max + By_max + Cz_max_plus_D > SG_ZERO ) ; + + /* + The plane intersects the box unless all 8 are positive + or none of them are positive. + */ + + return count != 0 && count != 8 ; +} + + + +/**********************\ +* sgSphere routines * +\**********************/ + +void sgSphere::extend ( const sgVec3 v ) +{ + if ( isEmpty () ) + { + sgCopyVec3 ( center, v ) ; + radius = SG_ZERO ; + return ; + } + + SGfloat d = sgDistanceVec3 ( center, v ) ; + + if ( d <= radius ) /* Point is already inside sphere */ + return ; + + SGfloat new_radius = (radius + d) / SG_TWO ; /* Grow radius */ + + SGfloat ratio = (new_radius - radius) / d ; + + center[0] += (v[0]-center[0]) * ratio ; /* Move center */ + center[1] += (v[1]-center[1]) * ratio ; + center[2] += (v[2]-center[2]) * ratio ; + + radius = new_radius ; +} + + +void sgSphere::extend ( const sgBox *b ) +{ + if ( b -> isEmpty () ) + return ; + + if ( isEmpty() ) + { + sgAddVec3 ( center, b->getMin(), b->getMax() ) ; + sgScaleVec3 ( center, SG_HALF ) ; + radius = sgDistanceVec3 ( center, b->getMax() ) ; + return ; + } + + /* + I can't think of a faster way to get an + utterly minimal sphere. + + The tighter algorithm:- enclose each + of eight vertices of the box in turn - it + looks like being pretty costly. + [8 sqrt()'s] + + The looser algorithm:- enclose the box + with an empty sphere and then do a + sphere-extend-sphere. This algorithm + does well for close-to-cube boxes, but + makes very poor spheres for long, thin + boxes. + [2 sqrt()'s] + */ + +#ifdef DONT_REALLY_NEED_A_TIGHT_SPHERE_EXTEND_BOX + + /* LOOSER/FASTER sphere-around-sphere-around-box */ + sgSphere s ; + s.empty () ; + s.enclose ( b ) ; /* Fast because s is empty */ + enclose ( s ) ; + +#else + + /* TIGHTER/EXPENSIVE sphere-around-eight-points */ + sgVec3 x ; + extend ( b->getMin() ) ; + sgSetVec3 ( x, b->getMin()[0],b->getMin()[1],b->getMax()[2] ) ; extend ( x ) ; + sgSetVec3 ( x, b->getMin()[0],b->getMax()[1],b->getMin()[2] ) ; extend ( x ) ; + sgSetVec3 ( x, b->getMin()[0],b->getMax()[1],b->getMax()[2] ) ; extend ( x ) ; + sgSetVec3 ( x, b->getMax()[0],b->getMin()[1],b->getMin()[2] ) ; extend ( x ) ; + sgSetVec3 ( x, b->getMax()[0],b->getMin()[1],b->getMax()[2] ) ; extend ( x ) ; + sgSetVec3 ( x, b->getMax()[0],b->getMax()[1],b->getMin()[2] ) ; extend ( x ) ; + extend ( b->getMax() ) ; +#endif +} + + +void sgSphere::extend ( const sgSphere *s ) +{ + if ( s->isEmpty () ) + return ; + + if ( isEmpty () ) + { + sgCopyVec3 ( center, s->getCenter() ) ; + radius = s->getRadius() ; + return ; + } + + /* + d == The distance between the sphere centers + */ + + SGfloat d = sgDistanceVec3 ( center, s->getCenter() ) ; + + if ( d + s->getRadius() <= radius ) /* New sphere is already inside this one */ + return ; + + if ( d + radius <= s->getRadius() ) /* New sphere completely contains this one */ + { + sgCopyVec3 ( center, s->getCenter() ) ; + radius = s->getRadius() ; + return ; + } + + /* + Build a new sphere that completely contains the other two: + + The center point lies halfway along the line between + the furthest points on the edges of the two spheres. + Computing those two points is ugly - so we'll use similar + triangles + */ + + SGfloat new_radius = (radius + d + s->getRadius() ) / SG_TWO ; + + SGfloat ratio = ( new_radius - radius ) / d ; + + center[0] += ( s->getCenter()[0] - center[0] ) * ratio ; + center[1] += ( s->getCenter()[1] - center[1] ) * ratio ; + center[2] += ( s->getCenter()[2] - center[2] ) * ratio ; + radius = new_radius ; +} + + +int sgSphere::intersects ( const sgBox *b ) const +{ + sgVec3 closest ; + + if ( b->getMin()[0] > center[0] ) closest[0] = b->getMin()[0] ; else + if ( b->getMax()[0] < center[0] ) closest[0] = b->getMax()[0] ; else + closest[0] = center[0] ; + + if ( b->getMin()[1] > center[1] ) closest[1] = b->getMin()[1] ; else + if ( b->getMax()[1] < center[1] ) closest[1] = b->getMax()[1] ; else + closest[1] = center[1] ; + + if ( b->getMin()[2] > center[2] ) closest[2] = b->getMin()[2] ; else + if ( b->getMax()[2] < center[2] ) closest[2] = b->getMax()[2] ; else + closest[2] = center[2] ; + + return sgCompare3DSqdDist ( closest, center, sgSquare ( radius ) ) <= 0 ; +} + + +/************************\ +* sgFrustum routines * +\************************/ + +void sgFrustum::update () +{ + if ( fabs ( ffar - nnear ) < 0.1 ) + { + ulSetError ( UL_WARNING, "sgFrustum: Can't support depth of view <0.1 units."); + return ; + } + + if ( hfov != SG_ZERO && vfov != SG_ZERO ) + { + if ( fabs ( hfov ) < 0.1 || fabs ( vfov ) < 0.1 ) + { + ulSetError ( UL_WARNING, ortho ? + "sgFrustum: Can't support width or height <0.1 units." : + "sgFrustum: Can't support fields of view narrower than 0.1 degrees." ) ; + return ; + } + + if ( ortho ) + { + right = SG_HALF * hfov ; + top = SG_HALF * vfov ; + } + else + { + right = nnear * (SGfloat) tan ( hfov * SG_DEGREES_TO_RADIANS / SG_TWO ) ; + top = nnear * (SGfloat) tan ( vfov * SG_DEGREES_TO_RADIANS / SG_TWO ) ; + } + + left = -right ; + bot = -top ; + } + + + /* Compute the projection matrix */ + + SGfloat width = right - left ; + SGfloat height = top - bot ; + SGfloat depth = ffar - nnear ; + + if ( ortho ) + { + /* orthographic */ + + mat[0][0] = SG_TWO / width ; + mat[0][1] = SG_ZERO ; + mat[0][2] = SG_ZERO ; + mat[0][3] = SG_ZERO ; + + mat[1][0] = SG_ZERO ; + mat[1][1] = SG_TWO / height ; + mat[1][2] = SG_ZERO ; + mat[1][3] = SG_ZERO ; + + mat[2][0] = SG_ZERO ; + mat[2][1] = SG_ZERO ; + mat[2][2] = -SG_TWO / depth ; + mat[2][3] = SG_ZERO ; + + mat[3][0] = -( left + right ) / width ; + mat[3][1] = -( bot + top ) / height ; + mat[3][2] = -( nnear + ffar ) / depth ; + mat[3][3] = SG_ONE ; + } + else + { + /* perspective */ + + mat[0][0] = SG_TWO * nnear / width ; + mat[0][1] = SG_ZERO ; + mat[0][2] = SG_ZERO ; + mat[0][3] = SG_ZERO ; + + mat[1][0] = SG_ZERO ; + mat[1][1] = SG_TWO * nnear / height ; + mat[1][2] = SG_ZERO ; + mat[1][3] = SG_ZERO ; + + mat[2][0] = ( right + left ) / width ; + mat[2][1] = ( top + bot ) / height ; + mat[2][2] = -( ffar + nnear ) / depth ; + mat[2][3] = -SG_ONE ; + + mat[3][0] = SG_ZERO ; + mat[3][1] = SG_ZERO ; + mat[3][2] = -SG_TWO * nnear * ffar / depth ; + mat[3][3] = SG_ZERO ; + } + + + /* + * The clip planes are derived from the projection matrix. + * + * After projection (in clip coordinates), the clip planes are simply: + * + * left: ( 1, 0, 0, 1 ) + * right: ( -1, 0, 0, 1 ) + * bottom: ( 0, 1, 0, 1 ) + * top: ( 0, -1, 0, 1 ) + * near: ( 0, 0, 1, 1 ) + * far: ( 0, 0, -1, 1 ) + * + * These can easily be transformed *backwards* by + * multiplying by the transposed projection matrix, i.e: + * + * ( A ) ( A') + * ( B ) = mat^T ( B') + * ( C ) ( C') + * ( D ) ( D') + * + * where (A',B',C',D') represents a plane in clip coordinates, + * and (A,B,C,D) is the same plane expressed in eye coordinates. + */ + + sgSetVec4( plane[ SG_LEFT_PLANE ], SG_ONE, SG_ZERO, SG_ZERO, SG_ONE ); + sgSetVec4( plane[ SG_RIGHT_PLANE ], -SG_ONE, SG_ZERO, SG_ZERO, SG_ONE ); + sgSetVec4( plane[ SG_BOT_PLANE ], SG_ZERO, SG_ONE, SG_ZERO, SG_ONE ); + sgSetVec4( plane[ SG_TOP_PLANE ], SG_ZERO, -SG_ONE, SG_ZERO, SG_ONE ); + sgSetVec4( plane[ SG_NEAR_PLANE ], SG_ZERO, SG_ZERO, SG_ONE, SG_ONE ); + sgSetVec4( plane[ SG_FAR_PLANE ], SG_ZERO, SG_ZERO, -SG_ONE, SG_ONE ); + + for ( int i = 0 ; i < 6 ; i++ ) + { + sgVec4 tmp ; + + for ( int j = 0 ; j < 4 ; j++ ) + tmp[j] = sgScalarProductVec4 ( plane[i], mat[j] ) ; + + sgScaleVec4 ( plane[i], tmp, SG_ONE / sgLengthVec3 ( tmp ) ) ; + } +} + + + +#define OC_LEFT_SHIFT 0 +#define OC_RIGHT_SHIFT 1 +#define OC_TOP_SHIFT 2 +#define OC_BOT_SHIFT 3 +#define OC_NEAR_SHIFT 4 +#define OC_FAR_SHIFT 5 + +#define OC_ALL_ON_SCREEN 0x3F +#define OC_OFF_TRF ((1<<OC_TOP_SHIFT)|(1<<OC_RIGHT_SHIFT)|(1<<OC_FAR_SHIFT)) +#define OC_OFF_BLN ((1<<OC_BOT_SHIFT)|(1<<OC_LEFT_SHIFT)|(1<<OC_NEAR_SHIFT)) + +int sgFrustum::getOutcode ( const sgVec3 pt ) const +{ + /* Transform the point by the Frustum's transform. */ + + sgVec4 tmp ; + + tmp [ 0 ] = pt [ 0 ] ; + tmp [ 1 ] = pt [ 1 ] ; + tmp [ 2 ] = pt [ 2 ] ; + tmp [ 3 ] = SG_ONE ; + + sgXformPnt4 ( tmp, tmp, mat ) ; + + /* + No need to divide by the 'w' component since we are only checking for + results in the range 0..1 + */ + + return (( tmp[0] <= tmp[3] ) << OC_RIGHT_SHIFT ) | + (( tmp[0] >= -tmp[3] ) << OC_LEFT_SHIFT ) | + (( tmp[1] <= tmp[3] ) << OC_TOP_SHIFT ) | + (( tmp[1] >= -tmp[3] ) << OC_BOT_SHIFT ) | + (( tmp[2] <= tmp[3] ) << OC_FAR_SHIFT ) | + (( tmp[2] >= -tmp[3] ) << OC_NEAR_SHIFT ) ; +} + +int sgFrustum::contains ( const sgVec3 pt ) const +{ + return getOutcode ( pt ) == OC_ALL_ON_SCREEN ; +} + + +int sgFrustum::contains ( const sgSphere *s ) const +{ + + const SGfloat *center = s->getCenter() ; + const SGfloat radius = s->getRadius() ; + + /* + Lop off half the database (roughly) with a quick near-plane test - and + lop off a lot more with a quick far-plane test + */ + + if ( -center[2] + radius < nnear || -center[2] - radius > ffar ) + return SG_OUTSIDE ; + + /* + OK, so the sphere lies between near and far. + + Measure the distance of the center point from the four sides of the frustum, + if it's outside by more than the radius then it's history. + + It's tempting to do a quick test to see if the center point is + onscreen using sgFrustumContainsPt - but that takes a matrix transform + which is 16 multiplies and 12 adds - versus this test which does the + whole task using only 12 multiplies and 8 adds. + */ + + /* + A few operations are saved by observing that certain values in the plane + equations are zero or one. These are specific to orthographic and perspective + projections respectively. + */ + + SGfloat sp1, sp2, sp3, sp4 ; + + if ( ortho ) + { + /* + left: ( 1, 0, 0, x ) + right: ( -1, 0, 0, x ) + bottom: ( 0, 1, 0, x ) + top: ( 0, -1, 0, x ) + */ + sp1 = plane[ SG_LEFT_PLANE ][3] + center[0] ; + sp2 = plane[ SG_RIGHT_PLANE ][3] - center[0] ; + sp3 = plane[ SG_BOT_PLANE ][3] + center[1] ; + sp4 = plane[ SG_TOP_PLANE ][3] - center[1] ; + } + else + { + /* + left: ( x, 0, x, 0 ) + right: ( x, 0, x, 0 ) + bottom: ( 0, x, x, 0 ) + top: ( 0, x, x, 0 ) + */ + sp1 = plane[ SG_LEFT_PLANE ][0] * center[0] + plane[ SG_LEFT_PLANE ][2] * center[2] ; + sp2 = plane[ SG_RIGHT_PLANE ][0] * center[0] + plane[ SG_RIGHT_PLANE ][2] * center[2] ; + sp3 = plane[ SG_BOT_PLANE ][1] * center[1] + plane[ SG_BOT_PLANE ][2] * center[2] ; + sp4 = plane[ SG_TOP_PLANE ][1] * center[1] + plane[ SG_TOP_PLANE ][2] * center[2] ; + } + + /* + Note: in the general case, we would have to do: + + sp1 = sgScalarProductVec3 ( left_plane, center ) + left_plane[3] ; + sp2 = sgScalarProductVec3 ( right_plane, center ) + right_plane[3] ; + ... + sp6 = sgScalarProductVec3 ( far_plane, center ) + far_plane[3] ; + */ + + + if ( -sp1 > radius || -sp2 > radius || -sp3 > radius || -sp4 > radius ) + return SG_OUTSIDE ; + + /* + If it's inside by more than the radius then it's *completely* inside + and we can save time elsewhere if we know that for sure. + */ + + if ( sp1 >= radius && sp2 >= radius && sp3 >= r... [truncated message content] |