[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] |