mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-19 20:24:49 +00:00
Tools directory for ticket #1
This commit is contained in:
parent
ecfd936095
commit
8337cad7ee
|
|
@ -0,0 +1,85 @@
|
|||
//Microsoft Developer Studio generated resource script.
|
||||
//
|
||||
#define IDI_ICON1 103
|
||||
#define IDI_ICON2 107
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 108
|
||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||
#define _APS_NEXT_CONTROL_VALUE 1000
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "windows.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDI_ICON1 ICON DISCARDABLE "torque.ico"
|
||||
IDI_ICON2 ICON DISCARDABLE "torque.ico"
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#include ""windows.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
||||
BIN
Tools/dae2dts/buildFiles/VisualStudio 2005/projects/torque.ico
Normal file
BIN
Tools/dae2dts/buildFiles/VisualStudio 2005/projects/torque.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
|
|
@ -0,0 +1,85 @@
|
|||
//Microsoft Developer Studio generated resource script.
|
||||
//
|
||||
#define IDI_ICON1 103
|
||||
#define IDI_ICON2 107
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 108
|
||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||
#define _APS_NEXT_CONTROL_VALUE 1000
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "windows.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDI_ICON1 ICON DISCARDABLE "torque.ico"
|
||||
IDI_ICON2 ICON DISCARDABLE "torque.ico"
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#include ""windows.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
||||
BIN
Tools/dae2dts/buildFiles/VisualStudio 2008/projects/torque.ico
Normal file
BIN
Tools/dae2dts/buildFiles/VisualStudio 2008/projects/torque.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
13
Tools/dae2dts/buildFiles/config/project.conf
Normal file
13
Tools/dae2dts/buildFiles/config/project.conf
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
|
||||
// Configure tool
|
||||
Torque3D::$sharedConfig = false;
|
||||
|
||||
Torque3D::beginConfig( "win32", "dae2dts" );
|
||||
|
||||
addProjectDefine("DAE2DTS_TOOL");
|
||||
setProjectSubSystem(1); // console app
|
||||
|
||||
Torque3D::endConfig();
|
||||
|
||||
?>
|
||||
12
Tools/dae2dts/buildFiles/config/projectCode.conf
Normal file
12
Tools/dae2dts/buildFiles/config/projectCode.conf
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<?php
|
||||
|
||||
// This file is used to add your project specific code to the Torque 3D Game Engine
|
||||
|
||||
// by default we add the project's source folders recursively
|
||||
addSrcDir('../source', true);
|
||||
|
||||
// Here is an example of how to include your project specific code
|
||||
// In this case all the code in the "custom" folder in your project's source directory would be added
|
||||
// addSrcDir('../source/custom');
|
||||
|
||||
?>
|
||||
1
Tools/dae2dts/game/readme.txt
Normal file
1
Tools/dae2dts/game/readme.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
Executable directory
|
||||
13
Tools/dae2dts/generateProjects.bat
Normal file
13
Tools/dae2dts/generateProjects.bat
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
@echo off
|
||||
|
||||
SET TORQUEDIR=%2
|
||||
|
||||
IF NOT DEFINED TORQUEDIR SET TORQUEDIR=..\..
|
||||
|
||||
@%TORQUEDIR%\engine\bin\php\php %TORQUEDIR%\Tools\projectGenerator\projectGenerator.php buildFiles/config/project.conf %TORQUEDIR%
|
||||
@echo ...
|
||||
@echo ...
|
||||
@echo ...
|
||||
@echo REMEMBER: Restart Visual Studio if you are running it to be sure the new
|
||||
@echo project file(s) are loaded! See docs for more info!
|
||||
@IF X%1 == X pause
|
||||
226
Tools/dae2dts/source/main.cpp
Normal file
226
Tools/dae2dts/source/main.cpp
Normal file
|
|
@ -0,0 +1,226 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "platform/platform.h"
|
||||
#include "platform/platformVolume.h"
|
||||
#include "app/mainLoop.h"
|
||||
#include "T3D/gameFunctions.h"
|
||||
#include "core/stream/fileStream.h"
|
||||
#include "core/resourceManager.h"
|
||||
#include "ts/tsShape.h"
|
||||
#include "ts/tsShapeConstruct.h"
|
||||
|
||||
#ifdef TORQUE_OS_WIN32
|
||||
#include "platformWin32/platformWin32.h"
|
||||
#include "platformWin32/winConsole.h"
|
||||
#endif
|
||||
|
||||
|
||||
extern TSShape* loadColladaShape( const Torque::Path &path );
|
||||
|
||||
|
||||
/** Print the usage string */
|
||||
void printUsage()
|
||||
{
|
||||
Con::printf(
|
||||
"DAE-2-DTS Converter v%s (c) GarageGames, LLC.\n\n"
|
||||
"dae2dts [options] daeFilename\n\n"
|
||||
"--config cfgFilename Set the conversion configuration filename.\n"
|
||||
"--output dtsFilename Set the output DTS filename.\n"
|
||||
"--dsq If set, all sequences in the shape will be saved\n"
|
||||
" to DSQ files instead of being embedded in the DTS\n"
|
||||
" file.\n"
|
||||
"--dsq-only Same as --dsq, but no DTS file will be saved (handy for\n"
|
||||
" animation only input files).\n"
|
||||
"--compat If set, write to DTS v24 for compatibility with\n"
|
||||
" ShowToolPro (no support for vertex colors, 2nd UV\n"
|
||||
" set, autobillboards etc)\n"
|
||||
"--diffuse If set, the diffuse texture will be used as the\n"
|
||||
" material name (instead of the COLLADA <material> name)\n"
|
||||
"--materials If set, generate a materials.cs script in the output \n"
|
||||
" folder to define Materials used in the shape.\n"
|
||||
"--verbose If set, output progress information\n\n"
|
||||
"Exits with zero on success, non-zero on failure\n\n",
|
||||
TORQUE_APP_VERSION_STRING );
|
||||
}
|
||||
|
||||
Torque::Path makeFullPath( const char* path )
|
||||
{
|
||||
char tempBuf[1024];
|
||||
Platform::makeFullPathName( path, tempBuf, sizeof(tempBuf), Platform::getCurrentDirectory() );
|
||||
return Torque::Path( String( tempBuf ) );
|
||||
}
|
||||
|
||||
S32 TorqueMain( S32 argc, const char **argv )
|
||||
{
|
||||
S32 failed = 0;
|
||||
|
||||
// Initialize the subsystems.
|
||||
StandardMainLoop::init();
|
||||
Con::setVariable( "Con::Prompt", "" );
|
||||
WindowsConsole->enable( true );
|
||||
|
||||
// install all drives for now until we have everything using the volume stuff
|
||||
Platform::FS::InstallFileSystems();
|
||||
Platform::FS::MountDefaults();
|
||||
|
||||
bool compatMode = false;
|
||||
bool diffuseNames = false;
|
||||
bool verbose = false;
|
||||
bool saveDTS = true;
|
||||
bool saveDSQ = false;
|
||||
bool genMaterials = false;
|
||||
Torque::Path cfgPath, srcPath, destPath;
|
||||
|
||||
// Parse arguments
|
||||
S32 i;
|
||||
for ( i = 1; i < argc-1; i++ )
|
||||
{
|
||||
if ( dStrEqual( argv[i], "--config" ) )
|
||||
cfgPath = makeFullPath( argv[++i] );
|
||||
else if ( dStrEqual( argv[i], "--output" ) )
|
||||
destPath = makeFullPath( argv[++i] );
|
||||
else if ( dStrEqual( argv[i], "--dsq" ) )
|
||||
saveDSQ = true;
|
||||
else if ( dStrEqual( argv[i], "--dsq-only" ) )
|
||||
{
|
||||
saveDTS = false;
|
||||
saveDSQ = true;
|
||||
}
|
||||
else if ( dStrEqual( argv[i], "--compat" ) )
|
||||
compatMode = true;
|
||||
else if ( dStrEqual( argv[i], "--diffuse" ) )
|
||||
diffuseNames = true;
|
||||
else if ( dStrEqual( argv[i], "--materials" ) )
|
||||
genMaterials = true;
|
||||
else if ( dStrEqual( argv[i], "--verbose" ) )
|
||||
verbose = true;
|
||||
}
|
||||
|
||||
if ( ( i >= argc ) || ( !dStrEndsWith(argv[i], ".dae") && !dStrEndsWith(argv[i], ".kmz" ) ) )
|
||||
{
|
||||
Con::errorf( "Error: no DAE file specified.\n" );
|
||||
printUsage();
|
||||
return -1;
|
||||
}
|
||||
|
||||
srcPath = makeFullPath( argv[i] );
|
||||
if ( destPath.isEmpty() )
|
||||
{
|
||||
destPath = srcPath;
|
||||
destPath.setExtension( "dts" );
|
||||
}
|
||||
|
||||
if ( !cfgPath.isEmpty() )
|
||||
Con::printf( "Configuration files not yet supported.\n" );
|
||||
|
||||
// Define script callbacks
|
||||
if ( verbose )
|
||||
Con::evaluate( "function UpdateTSShapeLoadProgress(%progress, %msg) { echo(%msg); }" );
|
||||
else
|
||||
Con::evaluate( "function UpdateTSShapeLoadProgress(%progress, %msg) { }" );
|
||||
|
||||
if ( verbose )
|
||||
Con::printf( "Parsing configuration file...\n" );
|
||||
|
||||
// Set import options
|
||||
ColladaUtils::getOptions().reset();
|
||||
ColladaUtils::getOptions().forceUpdateMaterials = genMaterials;
|
||||
ColladaUtils::getOptions().useDiffuseNames = diffuseNames;
|
||||
|
||||
if ( verbose )
|
||||
Con::printf( "Reading dae file...\n" );
|
||||
|
||||
// Attempt to load the DAE file
|
||||
Resource<TSShape> shape = ResourceManager::get().load( srcPath );
|
||||
if ( !shape )
|
||||
{
|
||||
Con::errorf( "Failed to convert DAE file: %s\n", srcPath.getFullPath() );
|
||||
failed = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( compatMode && !shape->canWriteOldFormat() )
|
||||
{
|
||||
Con::errorf( "Warning: Attempting to save to DTS v24 but the shape "
|
||||
"contains v26 features. Resulting DTS file may not be valid." );
|
||||
}
|
||||
|
||||
FileStream outStream;
|
||||
|
||||
if ( saveDSQ )
|
||||
{
|
||||
Torque::Path dsqPath( destPath );
|
||||
dsqPath.setExtension( "dsq" );
|
||||
|
||||
for ( S32 i = 0; i < shape->sequences.size(); i++ )
|
||||
{
|
||||
const String& seqName = shape->getName( shape->sequences[i].nameIndex );
|
||||
if ( verbose )
|
||||
Con::printf( "Writing DSQ file for sequence '%s'...\n", seqName.c_str() );
|
||||
|
||||
dsqPath.setFileName( destPath.getFileName() + "_" + seqName );
|
||||
|
||||
if ( outStream.open( dsqPath, Torque::FS::File::Write ) )
|
||||
{
|
||||
shape->exportSequence( &outStream, shape->sequences[i], compatMode );
|
||||
outStream.close();
|
||||
}
|
||||
else
|
||||
{
|
||||
Con::errorf( "Failed to save sequence to %s\n", dsqPath.getFullPath().c_str() );
|
||||
failed = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( saveDTS )
|
||||
{
|
||||
if ( verbose )
|
||||
Con::printf( "Writing DTS file...\n" );
|
||||
|
||||
if ( outStream.open( destPath, Torque::FS::File::Write ) )
|
||||
{
|
||||
if ( saveDSQ )
|
||||
shape->sequences.setSize(0);
|
||||
|
||||
shape->write( &outStream, compatMode );
|
||||
outStream.close();
|
||||
}
|
||||
else
|
||||
{
|
||||
Con::errorf( "Failed to save shape to %s\n", destPath.getFullPath().c_str() );
|
||||
failed = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Clean everything up.
|
||||
StandardMainLoop::shutdown();
|
||||
|
||||
// Do we need to restart?
|
||||
if( StandardMainLoop::requiresRestart() )
|
||||
Platform::restartInstance();
|
||||
|
||||
return failed;
|
||||
}
|
||||
214
Tools/dae2dts/source/torqueConfig.h
Normal file
214
Tools/dae2dts/source/torqueConfig.h
Normal file
|
|
@ -0,0 +1,214 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifndef _TORQUECONFIG_H_
|
||||
#define _TORQUECONFIG_H_
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//Hi, and welcome to the Torque Config file.
|
||||
//
|
||||
//This file is a central reference for the various configuration flags that
|
||||
//you'll be using when controlling what sort of a Torque build you have. In
|
||||
//general, the information here is global for your entire codebase, applying
|
||||
//not only to your game proper, but also to all of your tools.
|
||||
|
||||
/// Since we can build different engine "products" out of the same
|
||||
/// base engine source we need a way to differentiate which product
|
||||
/// this particular game is using.
|
||||
///
|
||||
/// TGE 0001
|
||||
/// TGEA 0002
|
||||
/// TGB 0003
|
||||
/// TGEA 360 0004
|
||||
/// TGE WII 0005
|
||||
/// Torque 3D 0006
|
||||
///
|
||||
#define TORQUE_ENGINE_PRODUCT 0006
|
||||
|
||||
/// What's the name of your application? Used in a variety of places.
|
||||
#define TORQUE_APP_NAME "dae2dts"
|
||||
|
||||
/// What version of the application specific source code is this?
|
||||
///
|
||||
/// Version number is major * 1000 + minor * 100 + revision * 10.
|
||||
#define TORQUE_APP_VERSION 1000
|
||||
|
||||
/// Human readable application version string.
|
||||
#define TORQUE_APP_VERSION_STRING "1.0.0"
|
||||
|
||||
/// Define me if you want to enable multithreading support.
|
||||
#ifndef TORQUE_MULTITHREAD
|
||||
#define TORQUE_MULTITHREAD
|
||||
#endif
|
||||
|
||||
/// Define me if you want to disable Torque memory manager.
|
||||
#ifndef TORQUE_DISABLE_MEMORY_MANAGER
|
||||
#define TORQUE_DISABLE_MEMORY_MANAGER
|
||||
#endif
|
||||
|
||||
/// Define me if you don't want Torque to compile dso's
|
||||
#define TORQUE_NO_DSO_GENERATION
|
||||
|
||||
// Define me if this build is a tools build
|
||||
|
||||
#ifndef TORQUE_PLAYER
|
||||
# define TORQUE_TOOLS
|
||||
#else
|
||||
# undef TORQUE_TOOLS
|
||||
#endif
|
||||
|
||||
/// Define me if you want to enable the profiler.
|
||||
/// See also the TORQUE_SHIPPING block below
|
||||
//#define TORQUE_ENABLE_PROFILER
|
||||
|
||||
/// Define me to enable debug mode; enables a great number of additional
|
||||
/// sanity checks, as well as making AssertFatal and AssertWarn do something.
|
||||
/// This is usually defined by the build target.
|
||||
//#define TORQUE_DEBUG
|
||||
|
||||
/// Define me if this is a shipping build; if defined I will instruct Torque
|
||||
/// to batten down some hatches and generally be more "final game" oriented.
|
||||
/// Notably this disables a liberal resource manager file searching, and
|
||||
/// console help strings.
|
||||
//#define TORQUE_SHIPPING
|
||||
|
||||
/// Define me to enable a variety of network debugging aids.
|
||||
///
|
||||
/// - NetConnection packet logging.
|
||||
/// - DebugChecksum guards to detect mismatched pack/unpacks.
|
||||
/// - Detection of invalid destination ghosts.
|
||||
///
|
||||
//#define TORQUE_DEBUG_NET
|
||||
|
||||
/// Define me to enable detailed console logging of net moves.
|
||||
//#define TORQUE_DEBUG_NET_MOVES
|
||||
|
||||
/// Enable this define to change the default Net::MaxPacketDataSize
|
||||
/// Do this at your own risk since it has the potential to cause packets
|
||||
/// to be split up by old routers and Torque does not have a mechanism to
|
||||
/// stitch split packets back together. Using this define can be very useful
|
||||
/// in controlled network hardware environments (like a LAN) or for singleplayer
|
||||
/// games (like BArricade and its large paths)
|
||||
//#define MAXPACKETSIZE 1500
|
||||
|
||||
/// Modify me to enable metric gathering code in the renderers.
|
||||
///
|
||||
/// 0 does nothing; higher numbers enable higher levels of metric gathering.
|
||||
//#define TORQUE_GATHER_METRICS 0
|
||||
|
||||
/// Define me if you want to enable debug guards in the memory manager.
|
||||
///
|
||||
/// Debug guards are known values placed before and after every block of
|
||||
/// allocated memory. They are checked periodically by Memory::validate(),
|
||||
/// and if they are modified (indicating an access to memory the app doesn't
|
||||
/// "own"), an error is flagged (ie, you'll see a crash in the memory
|
||||
/// manager's validate code). Using this and a debugger, you can track down
|
||||
/// memory corruption issues quickly.
|
||||
//#define TORQUE_DEBUG_GUARD
|
||||
|
||||
/// Define me if you want to enable instanced-static behavior
|
||||
//#define TORQUE_ENABLE_THREAD_STATICS
|
||||
|
||||
/// Define me if you want to gather static-usage metrics
|
||||
//#define TORQUE_ENABLE_THREAD_STATIC_METRICS
|
||||
|
||||
/// Define me if you want to enable debug guards on the FrameAllocator.
|
||||
///
|
||||
/// This is similar to the above memory manager guards, but applies only to the
|
||||
/// fast FrameAllocator temporary pool memory allocations. The guards are only
|
||||
/// checked when the FrameAllocator frees memory (when it's water mark changes).
|
||||
/// This is most useful for detecting buffer overruns when using FrameTemp<> .
|
||||
/// A buffer overrun in the FrameAllocator is unlikely to cause a crash, but may
|
||||
/// still result in unexpected behavior, if other FrameTemp's are stomped.
|
||||
//#define FRAMEALLOCATOR_DEBUG_GUARD
|
||||
|
||||
/// This #define is used by the FrameAllocator to set the size of the frame.
|
||||
///
|
||||
/// It was previously set to 3MB but I've increased it to 16MB due to the
|
||||
/// FrameAllocator being used as temporary storage for bitmaps in the D3D9
|
||||
/// texture manager.
|
||||
#define TORQUE_FRAME_SIZE 16 << 20
|
||||
|
||||
// Finally, we define some dependent #defines. This enables some subsidiary
|
||||
// functionality to get automatically turned on in certain configurations.
|
||||
|
||||
#ifdef TORQUE_DEBUG
|
||||
|
||||
#define TORQUE_GATHER_METRICS 0
|
||||
#define TORQUE_ENABLE_PROFILE_PATH
|
||||
#ifndef TORQUE_DEBUG_GUARD
|
||||
#define TORQUE_DEBUG_GUARD
|
||||
#endif
|
||||
#ifndef TORQUE_NET_STATS
|
||||
#define TORQUE_NET_STATS
|
||||
#endif
|
||||
|
||||
// Enables the C++ assert macros AssertFatal, AssertWarn, etc.
|
||||
#define TORQUE_ENABLE_ASSERTS
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef TORQUE_RELEASE
|
||||
// If it's not DEBUG, it's a RELEASE build, put appropriate things here.
|
||||
#endif
|
||||
|
||||
#ifdef TORQUE_SHIPPING
|
||||
|
||||
// TORQUE_SHIPPING flags here.
|
||||
|
||||
#else
|
||||
|
||||
// Enable the profiler by default, if we're not doing a shipping build.
|
||||
#define TORQUE_ENABLE_PROFILER
|
||||
|
||||
// Enable the TorqueScript assert() instruction if not shipping.
|
||||
#define TORQUE_ENABLE_SCRIPTASSERTS
|
||||
|
||||
// We also enable GFX debug events for use in Pix and other graphics
|
||||
// debugging tools.
|
||||
#define TORQUE_ENABLE_GFXDEBUGEVENTS
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef TORQUE_TOOLS
|
||||
# define TORQUE_INSTANCE_EXCLUSION "TorqueToolsTest"
|
||||
#else
|
||||
# define TORQUE_INSTANCE_EXCLUSION "TorqueTest"
|
||||
#endif
|
||||
|
||||
// Someday, it might make sense to do some pragma magic here so we error
|
||||
// on inconsistent flags.
|
||||
|
||||
// The Xbox360 has it's own profiling tools, the Torque Profiler should not be used
|
||||
#ifdef TORQUE_OS_XENON
|
||||
# ifdef TORQUE_ENABLE_PROFILER
|
||||
# undef TORQUE_ENABLE_PROFILER
|
||||
# endif
|
||||
#
|
||||
# ifdef TORQUE_ENABLE_PROFILE_PATH
|
||||
# undef TORQUE_ENABLE_PROFILE_PATH
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#endif // _TORQUECONFIG_H_
|
||||
|
||||
BIN
Tools/map2dif/map2dif_plus_tgea.exe
Normal file
BIN
Tools/map2dif/map2dif_plus_tgea.exe
Normal file
Binary file not shown.
4
Tools/projectGenerator/.gitignore
vendored
Normal file
4
Tools/projectGenerator/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
#############
|
||||
## Torque
|
||||
#############
|
||||
templates_c/
|
||||
217
Tools/projectGenerator/btargets/targets.inc
Normal file
217
Tools/projectGenerator/btargets/targets.inc
Normal file
|
|
@ -0,0 +1,217 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
///////////////////////////// VS9 Xenon /////////////////////////////
|
||||
|
||||
$c = BuildTarget::add( 'VS9 Xenon', // Name
|
||||
'buildFiles/VisualStudio 2008 (XDK)', // Solution output directory
|
||||
'projects/', // Project output directory (relative to solution)
|
||||
'../../source/', // Base directory
|
||||
'vc2k8_360_proj.tpl', // App Project Template
|
||||
'vc2k8_360_proj.tpl', // Shared App Project Template
|
||||
'vc2k8_360_lib_proj.tpl', // Lib Project Template
|
||||
'vc2k8_360_dll_proj.tpl', // Shared Lib Project Template
|
||||
'', // ActiveX Project Template (not supported on 360)
|
||||
'.vcproj' ); // File ext to write the project to
|
||||
|
||||
// Solution template and extension
|
||||
$c->setSolutionInfo( 'vc2k8_360_sln.tpl', '', '.sln' );
|
||||
|
||||
$c->setFileExtensions( 'c', 'cc', 'h', 'cpp', 'inl', 'm', 'mm' );
|
||||
|
||||
$c->setPlatforms( "360" );
|
||||
|
||||
$c->setDontCompilePatterns( "#/platformPOSIX.*#", "#/platformMac.*#", "#/platformWin32.*#", "#\.mac\.#", "#\.win32\.#", "#/mac/#", "#/win32/#", "#\.mm$#", "#\.m$#" );
|
||||
|
||||
///////////////////////////// VS9 PS3 /////////////////////////////
|
||||
|
||||
$c = BuildTarget::add( 'VS9 PS3', // Name
|
||||
'buildFiles/VisualStudio 2008 (PS3)', // Solution output directory
|
||||
'projects/', // Project output directory (relative to solution)
|
||||
'../../source/', // Base directory
|
||||
'vc2k8_ps3_proj.tpl', // App Project Template
|
||||
'vc2k8_ps3_proj.tpl', // Shared App Project Template
|
||||
'vc2k8_ps3_lib_proj.tpl', // Lib Project Template
|
||||
'vc2k8_ps3_dll_proj.tpl', // Shared Lib Project Template
|
||||
'', // ActiveX Project Template (not supported on ps3)
|
||||
'.vcproj' ); // File ext to write the project to
|
||||
|
||||
// Solution template and extension
|
||||
$c->setSolutionInfo( 'vc2k8_ps3_sln.tpl', '', '.sln' );
|
||||
|
||||
$c->setFileExtensions( 'c', 'cc', 'h', 'cpp', 'inl', 'm', 'mm' );
|
||||
|
||||
$c->setPlatforms( "ps3" );
|
||||
|
||||
$c->setDontCompilePatterns( "#/platformXbox.*#", "#/platformWin32.*#", "#\.mac\.#", "#\.win\.#", "#\.win32\.#", "#/mac/#", "#/win32/#", "#\.mm$#", "#\.m$#" );
|
||||
|
||||
|
||||
///////////////////////////// VS9 /////////////////////////////
|
||||
|
||||
$c = BuildTarget::add( 'VS9', // Name
|
||||
'buildFiles/VisualStudio 2008', // Solution output directory
|
||||
'projects/', // Project output directory (relative to solution)
|
||||
'../../source/', // Base directory
|
||||
'vc2k8_proj.tpl', // App Project Template
|
||||
'vc2k8_shared.tpl', // Shared App Project Template
|
||||
'vc2k8_lib_proj.tpl', // Lib Project Template
|
||||
'vc2k8_dll_proj.tpl', // Shared Lib Project Template
|
||||
'vc2k8_activex_proj.tpl', // ActiveX Control
|
||||
'.vcproj' ); // File ext to write the project to
|
||||
|
||||
// Solution template and extension
|
||||
$c->setSolutionInfo( 'vc2k8_sln.tpl', 'vc2k8_proj_user.tpl', '.sln' );
|
||||
|
||||
$c->setFileExtensions( 'c', 'cc', 'h', 'cpp', 'inl', 'asm', 'rc', 'm', 'mm', 'cs' );
|
||||
|
||||
$c->setPlatforms( "win", "win32" );
|
||||
|
||||
$c->setDotNetInfo('vc2k8_csproj.tpl');
|
||||
|
||||
$c->setDontCompilePatterns( "#/platformPOSIX.*#", "#/platformMac.*#", "#\.mac\.#", "#/mac/#", "#\.mm$#", "#\.m$#" );
|
||||
|
||||
|
||||
///////////////////////////// VS2010 /////////////////////////////
|
||||
|
||||
$c = BuildTarget::add( 'VS2010', // Name
|
||||
'buildFiles/VisualStudio 2010', // Solution output directory
|
||||
'projects/', // Project output directory (relative to solution)
|
||||
'../../source/', // Base directory
|
||||
'vc2010_proj.tpl', // App Project Template
|
||||
'vc2010_shared.tpl', // Shared App Project Template
|
||||
'vc2010_lib_proj.tpl', // Lib Project Template
|
||||
'vc2010_dll_proj.tpl', // Shared Lib Project Template
|
||||
'vc2010_activex_proj.tpl', // ActiveX Control
|
||||
'.vcxproj' ); // File ext to write the project to
|
||||
|
||||
// Solution template and extension
|
||||
$c->setSolutionInfo( 'vc2010_sln.tpl', '', '.sln', 'vc2010_filter.tpl' );
|
||||
|
||||
$c->setFileExtensions( 'c', 'cc', 'h', 'cpp', 'inl', 'asm', 'rc', 'm', 'mm', 'cs' );
|
||||
$c->setSourceFileExtensions( 'c', 'cc', 'cpp' );
|
||||
|
||||
$c->setPlatforms( "win", "win32" );
|
||||
|
||||
$c->setDotNetInfo('vc2010_csproj.tpl');
|
||||
|
||||
$c->setDontCompilePatterns( "#/platformPOSIX.*#", "#/platformMac.*#", "#\.mac\.#", "#/mac/#", "#\.mm$#", "#\.m$#" );
|
||||
|
||||
/////////////////////////// XCode /////////////////////////////
|
||||
|
||||
$c = BuildTarget::add( 'Xcode', // Name
|
||||
'buildFiles/Xcode', // Solution output directory
|
||||
'', // Project output directory (relative to solution)
|
||||
'../../source/', // Base directory
|
||||
'xcode.tpl', // App Project Template
|
||||
'xcodeSharedApp.tpl', // Shared App Project Template
|
||||
'xcodeLib.tpl', // Lib Project Template
|
||||
'xcodeSharedLib.tpl', // Shared Lib Project Template
|
||||
'xcodeSafariPlugin.tpl', // Safari Plugin
|
||||
'.xcodeproj/project.pbxproj' ); // File ext to write the project to
|
||||
|
||||
$c->setDelimiters( '[', ']' ); // What delimeters does this template use?
|
||||
|
||||
$c->setFileExtensions( 'c', 'cc', 'h', 'cpp', 'inl', 'm', 'mm' );
|
||||
|
||||
$c->setPlatforms( "mac" );
|
||||
|
||||
$c->setDontCompilePatterns( "*\.h*", "*win32*", "*\.win\.*", "#/platformWin32/#", "/D3D.*/", "*dsound*" );
|
||||
|
||||
|
||||
///////////////////////////// Make //////////////////////////////
|
||||
|
||||
$c = BuildTarget::add( 'Make', // Name
|
||||
'buildFiles/Make', // Solution Output directory
|
||||
'', // Project Output directory (relative to solution)
|
||||
'../../source/', // Base directory
|
||||
'makeApp.tpl', // App Project Template
|
||||
'makeAppShared.tpl', // Shared App Project Template
|
||||
'makeLib.tpl', // Lib Project Template
|
||||
'makeSo.tpl', // Shared Lib Project Template
|
||||
'', // NP Plugin
|
||||
'' ); // File ext to write the project to
|
||||
|
||||
$c->setSolutionInfo( 'makeSolution.tpl', '', '' );
|
||||
|
||||
$c->setFileExtensions( 'c', 'cc', 'h', 'cpp', 'inl', 'asm' );
|
||||
|
||||
$c->setPlatforms( "linux" );
|
||||
|
||||
$c->setDontCompilePatterns( "*\.h*", "*win32*", "*\.win\.*", "/D3D.*/", "*dsound*", "#/mac/#", "#\.mm$#", "#\.m$#", "*\.dedicated\.*" );
|
||||
|
||||
|
||||
///////////////////////////// Make Dedicated ////////////////////
|
||||
|
||||
$c = BuildTarget::add( 'Make Dedicated', // Name
|
||||
'buildFiles/Make_Ded', // Output directory
|
||||
'', // Project Output directory (relative to solution)
|
||||
'../../source/', // Base directory
|
||||
'makeApp.tpl', // App Project Template
|
||||
'makeAppShared.tpl', // Shared App Project Template
|
||||
'makeLib.tpl', // Lib Project Template
|
||||
'makeSo.tpl', // Shared Lib Project Template
|
||||
'', // NP Plugin
|
||||
'' ); // File ext to write the project to
|
||||
|
||||
$c->setSolutionInfo( 'makeSolution.tpl', '', '' );
|
||||
|
||||
$c->setFileExtensions( 'c', 'cc', 'h', 'cpp', 'inl', 'asm' );
|
||||
|
||||
$c->setPlatforms( "linux_dedicated" );
|
||||
|
||||
$c->setDontCompilePatterns( "*\.h*", "*win32*", "*\.win\.*", "/D3D.*/", "#/gl/#", "#/mac/#", "#\.mm$#", "#\.m$#", "*\.client\.*" );
|
||||
|
||||
|
||||
///////////////////////////// Build /////////////////////////////
|
||||
|
||||
// 'buildManifest_'.$name.'_'.Generator::$platform.'.txt',
|
||||
|
||||
$c = BuildTarget::add( 'build', // Name
|
||||
'buildFiles', // Solution output directory
|
||||
'projects/', // Project output directory (relative to solution)
|
||||
'../source/', // Base directory
|
||||
'buildManifest.tpl', // App Project Template
|
||||
'buildManifest.tpl', // Shared Project Template
|
||||
'', // Lib Project Template
|
||||
'', // Shared Lib Project Template
|
||||
'', // ActiveX Project Template
|
||||
'.txt' );
|
||||
|
||||
$c->setFileExtensions( 'c', 'cc', 'h', 'cpp', 'inl', 'asm', 'm', 'mm' );
|
||||
|
||||
// NO PLATFORMS - SO ALL OR NONE?
|
||||
$c->setPlatforms("");
|
||||
|
||||
////////////////////
|
||||
|
||||
function generateAppConfigOutputs( $name )
|
||||
{
|
||||
return BuildTarget::getInstances();
|
||||
}
|
||||
|
||||
function generateLibConfigOutputs( $name )
|
||||
{
|
||||
return BuildTarget::getInstances();
|
||||
}
|
||||
|
||||
?>
|
||||
180
Tools/projectGenerator/classes/ActiveXWebPlugin.php
Normal file
180
Tools/projectGenerator/classes/ActiveXWebPlugin.php
Normal file
|
|
@ -0,0 +1,180 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class ActiveXWebPlugin
|
||||
{
|
||||
// GUID
|
||||
var $REGISTRY_APPID_RESOURCEID = "";
|
||||
var $WEBGAME_UUID = "";
|
||||
var $IWEBGAMECTRL_UUID = "";
|
||||
var $WEBGAMELIB_UUID = "";
|
||||
|
||||
var $WEBGAME_PLUGINNAME = "";
|
||||
var $WEBGAME_CTRLNAME = "";
|
||||
|
||||
var $PLUGIN_DLL = "";
|
||||
var $PLUGIN_VERSION = "";
|
||||
|
||||
var $FOLDER = "";
|
||||
var $GAMEFOLDER = "";
|
||||
|
||||
function ActiveXWebPlugin()
|
||||
{
|
||||
// Setup our GUID
|
||||
|
||||
//$this->REGISTRY_APPID_RESOURCEID = ActiveXWebPlugin::generateUUID();
|
||||
//$this->WEBGAME_UUID = ActiveXWebPlugin::generateUUID();
|
||||
//$this->IWEBGAMECTRL_UUID = ActiveXWebPlugin::generateUUID();
|
||||
//$this->WEBGAMELIB_UUID = ActiveXWebPlugin::generateUUID();
|
||||
|
||||
$rootPhpBuildDir = getcwd();
|
||||
$this->FOLDER = $rootPhpBuildDir."\\web\\source\\activex\\";
|
||||
$this->GAMEFOLDER = $rootPhpBuildDir."\\game\\";
|
||||
|
||||
$this->PLUGIN_DLL = WebDeploymentWindows::$axPluginName.".dll";
|
||||
$this->PLUGIN_VERSION = WebDeploymentWindows::$version;
|
||||
|
||||
|
||||
$this->REGISTRY_APPID_RESOURCEID = WebDeploymentWindows::$axAppUUID;
|
||||
$this->WEBGAME_UUID = WebDeploymentWindows::$axWebGameUUID;
|
||||
$this->IWEBGAMECTRL_UUID = WebDeploymentWindows::$axWebGameCtrlUUID;
|
||||
$this->WEBGAMELIB_UUID = WebDeploymentWindows::$axWebGameLibUUID;
|
||||
|
||||
|
||||
$this->WEBGAME_PLUGINNAME = str_replace(" ", "", WebDeploymentWindows::$axPluginName);
|
||||
$this->WEBGAME_CTRLNAME = "IEWebGameCtrl";//str_replace(" ", "", WebDeploymentWindows::$axPluginName)."Ctrl";
|
||||
}
|
||||
|
||||
function process($project)
|
||||
{
|
||||
$html = 'file://'.getcwd().'/game/web/sample.html';
|
||||
$html = str_replace("\\", "/", $html);
|
||||
|
||||
// if the someone is clever enough to change the default location of IE, they are assumed to be
|
||||
// clever enough to edit the debug command :)
|
||||
|
||||
$IEExe = "C:\\Program Files\\Internet Explorer\\iexplore.exe";
|
||||
if (file_exists("C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe"))
|
||||
$IEExe = "C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe";
|
||||
|
||||
$project->commandRelease = $IEExe;
|
||||
$project->commandDebug = $IEExe;
|
||||
$project->commandOptimized = $IEExe;
|
||||
|
||||
$project->argsRelease = $html;
|
||||
$project->argsDebug = $html;
|
||||
$project->argsOptimized = $html;
|
||||
|
||||
$this->processTemplates();
|
||||
}
|
||||
|
||||
function readTemplate($filename)
|
||||
{
|
||||
$filename = realpath( dirname( $_SERVER[ 'PHP_SELF' ] ) ). "/templates/web/".$filename;
|
||||
$fh = fopen($filename, 'r');
|
||||
$data = fread($fh, filesize($filename));
|
||||
fclose($fh);
|
||||
return $data;
|
||||
}
|
||||
|
||||
function writeFile($filename, $data)
|
||||
{
|
||||
$filename = $this->FOLDER . $filename;
|
||||
$fh = fopen($filename, 'w');
|
||||
fwrite($fh, $data);
|
||||
fclose($fh);
|
||||
}
|
||||
|
||||
function writeGameFile($filename, $data)
|
||||
{
|
||||
$filename = $this->GAMEFOLDER . $filename;
|
||||
$fh = fopen($filename, 'w');
|
||||
fwrite($fh, $data);
|
||||
fclose($fh);
|
||||
}
|
||||
|
||||
function processTemplates()
|
||||
{
|
||||
// Make sure these come first so timestamp is oldest (for autogeneration)
|
||||
$gen = $this->readTemplate("activex_IEWebGamePlugin_i_h.tpl");
|
||||
$this->writeFile("IEWebGamePlugin_i.h", $gen);
|
||||
$gen = $this->readTemplate("activex_IEWebGamePlugin_i_c.tpl");
|
||||
$this->writeFile("IEWebGamePlugin_i.c", $gen);
|
||||
|
||||
// WebGame.idl
|
||||
$idl = $this->readTemplate("activex_IEWebGamePlugin_idl.tpl");
|
||||
$idl = str_replace("__WEBGAME_UUID__", $this->WEBGAME_UUID, $idl);
|
||||
$idl = str_replace("__IWEBGAMECTRL_UUID__", $this->IWEBGAMECTRL_UUID, $idl);
|
||||
$idl = str_replace("__WEBGAMELIB_UUID__", $this->WEBGAMELIB_UUID, $idl);
|
||||
$idl = str_replace("__WEBGAME_PLUGINNAME__", $this->WEBGAME_PLUGINNAME, $idl);
|
||||
$this->writeFile("IEWebGamePlugin.idl", $idl);
|
||||
|
||||
// dllmain.h
|
||||
$dllmain = $this->readTemplate("activex_dllmain_h.tpl");
|
||||
$dllmain = str_replace("__WEBGAME_PLUGINNAME__", $this->WEBGAME_PLUGINNAME, $dllmain);
|
||||
$dllmain = str_replace("__REGISTRY_APPID_RESOURCEID__", $this->REGISTRY_APPID_RESOURCEID, $dllmain);
|
||||
$this->writeFile("dllmain.h", $dllmain);
|
||||
|
||||
//WebGameCtrl.rgs
|
||||
$regs = $this->readTemplate("activex_IEWebGameCtrl_rgs.tpl");
|
||||
$regs = str_replace("__WEBGAME_UUID__", $this->WEBGAME_UUID, $regs);
|
||||
$regs = str_replace("__WEBGAMELIB_UUID__", $this->WEBGAMELIB_UUID, $regs);
|
||||
$regs = str_replace("__WEBGAME_PLUGINNAME__", $this->WEBGAME_PLUGINNAME, $regs);
|
||||
$regs = str_replace("__WEBGAME_CTRLNAME__", $this->WEBGAME_CTRLNAME, $regs);
|
||||
$this->writeFile("IEWebGameCtrl.rgs", $regs);
|
||||
|
||||
//WebGamePlugin.rgs
|
||||
$regs = $this->readTemplate("activex_IEWebGamePlugin_rgs.tpl");
|
||||
$regs = str_replace("__WEBGAME_PLUGINNAME__", $this->WEBGAME_PLUGINNAME, $regs);
|
||||
$regs = str_replace("__WEBGAME_CTRLNAME__", $this->WEBGAME_CTRLNAME, $regs);
|
||||
$this->writeFile("IEWebGamePlugin.rgs", $regs);
|
||||
|
||||
|
||||
//WebGameCtrl.rc
|
||||
$rc = $this->readTemplate("activex_IEWebGamePlugin_rc.tpl");
|
||||
$rc = str_replace("__PLUGIN_DLL__", $this->PLUGIN_DLL, $rc);
|
||||
$rc = str_replace("__WEBGAME_PLUGINNAME__", $this->WEBGAME_PLUGINNAME, $rc);
|
||||
|
||||
//versioning
|
||||
|
||||
$rc = str_replace("__PLUGIN_VERSION_STRING__", $this->PLUGIN_VERSION, $rc);
|
||||
$cd = str_replace(".", "," , $this->PLUGIN_VERSION);
|
||||
$rc = str_replace("__PLUGIN_VERSION_COMMA_DELIMITED__", $cd, $rc);
|
||||
|
||||
$this->writeFile("IEWebGamePlugin.rc", $rc);
|
||||
|
||||
// handle the sample HTML (and whatever else) that is shared between plugins
|
||||
WebPlugin::processActiveXPlugin($this);
|
||||
|
||||
}
|
||||
|
||||
static function generateUUID()
|
||||
{
|
||||
$command = realpath( dirname( $_SERVER[ 'PHP_SELF' ] ) )."\\..\\..\\Engine\\bin\\uuidgen\\uuidgen.exe -c";
|
||||
exec($command, $output);
|
||||
return $output[0];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
208
Tools/projectGenerator/classes/BuildTarget.php
Normal file
208
Tools/projectGenerator/classes/BuildTarget.php
Normal file
|
|
@ -0,0 +1,208 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class BuildTarget
|
||||
{
|
||||
private static $instances = array();
|
||||
|
||||
public $name;
|
||||
public $output_dir;
|
||||
public $project_dir;
|
||||
public $project_rel_path;
|
||||
public $base_dir;
|
||||
public $template_app;
|
||||
public $template_shared_app;
|
||||
public $template_lib;
|
||||
public $template_shared_lib;
|
||||
public $template_activex;
|
||||
public $template_sln;
|
||||
public $template_user;
|
||||
public $template_csproj;
|
||||
public $solution_ext;
|
||||
public $output_ext;
|
||||
public $file_exts;
|
||||
public $reject_patternss;
|
||||
public $dont_compile_patterns;
|
||||
public $source_file_exts;
|
||||
public $platforms;
|
||||
public $ldelim;
|
||||
public $rdelim;
|
||||
|
||||
|
||||
static function add( $name, $out, $project, $base, $template_app, $template_shared_app, $template_lib, $template_shared_lib, $template_activex, $out_ext )
|
||||
{
|
||||
$c = new BuildTarget( $name, $out, $project, $base, $template_app, $template_shared_app, $template_lib, $template_shared_lib, $template_activex, $out_ext );
|
||||
|
||||
self::$instances[ $name ] = $c;
|
||||
|
||||
return $c;
|
||||
}
|
||||
|
||||
static function getInstances()
|
||||
{
|
||||
return self::$instances;
|
||||
}
|
||||
|
||||
function BuildTarget( $name, $out, $project, $base, $template_app, $template_shared_app, $template_lib, $template_shared_lib, $template_activex, $out_ext )
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->output_dir = $out;
|
||||
$this->project_dir = $project;
|
||||
$this->output_ext = $out_ext;
|
||||
$this->base_dir = $base;
|
||||
$this->template_app = $template_app;
|
||||
$this->template_shared_app = $template_shared_app;
|
||||
$this->template_lib = $template_lib;
|
||||
$this->template_shared_lib = $template_shared_lib;
|
||||
$this->template_activex = $template_activex;
|
||||
$this->template_csproj = "";
|
||||
$this->template_user = "";
|
||||
|
||||
// The template for a filters file used by VS2010.
|
||||
$this->template_filter = "";
|
||||
|
||||
$p = explode( '/', $project );
|
||||
$o = array();
|
||||
|
||||
for( $i = 0; $i < sizeof( $p ); $i++ )
|
||||
{
|
||||
// Skip meaningless . or empty terms.
|
||||
if( $p[ $i ] == '' || $p[ $i ] == '.' )
|
||||
continue;
|
||||
|
||||
array_push( $o, '..' );
|
||||
}
|
||||
|
||||
$this->project_rel_path = implode( '/', $o );
|
||||
|
||||
if (strlen($this->project_rel_path) > 0)
|
||||
$this->project_rel_path = $this->project_rel_path . "/";
|
||||
}
|
||||
|
||||
function setDelimiters( $l, $r )
|
||||
{
|
||||
$this->ldelim = $l;
|
||||
$this->rdelim = $r;
|
||||
}
|
||||
|
||||
function setSolutionInfo( $template_sln, $template_user, $output_ext, $template_filter = "" )
|
||||
{
|
||||
$this->template_sln = $template_sln;
|
||||
$this->solution_ext = $output_ext;
|
||||
$this->template_user = $template_user;
|
||||
$this->template_filter = $template_filter;
|
||||
}
|
||||
|
||||
function setDotNetInfo($template_csprog)
|
||||
{
|
||||
$this->template_csproj = $template_csprog;
|
||||
}
|
||||
|
||||
function setFileExtensions()
|
||||
{
|
||||
$args = func_get_args();
|
||||
$count = func_num_args();
|
||||
|
||||
$this->file_exts = $args;
|
||||
}
|
||||
|
||||
function setSourceFileExtensions()
|
||||
{
|
||||
$args = func_get_args();
|
||||
$count = func_num_args();
|
||||
|
||||
$this->source_file_exts = $args;
|
||||
}
|
||||
|
||||
function setRejectPatterns()
|
||||
{
|
||||
$args = func_get_args();
|
||||
|
||||
$this->reject_patterns = $args;
|
||||
}
|
||||
|
||||
function setDontCompilePatterns()
|
||||
{
|
||||
$args = func_get_args();
|
||||
|
||||
$this->dont_compile_patterns = $args;
|
||||
}
|
||||
|
||||
function setPlatforms()
|
||||
{
|
||||
$args = func_get_args();
|
||||
|
||||
$this->platforms = $args;
|
||||
}
|
||||
|
||||
function supportsPlatform( $platform )
|
||||
{
|
||||
if( isset( $this->platforms ) )
|
||||
foreach( $this->platforms as $rule )
|
||||
if( strcmp( $rule, $platform ) == 0 )
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function ruleReject( $file )
|
||||
{
|
||||
if( isset( $this->reject_patterns ) )
|
||||
foreach( $this->reject_patterns as $rule )
|
||||
if( preg_match( $rule, $file ) )
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function allowedFileExt( $file )
|
||||
{
|
||||
foreach( $this->file_exts as $ext )
|
||||
{
|
||||
$ext = ".{$ext}";
|
||||
$extLen = strlen( $ext );
|
||||
$possibleMatch = substr( $file, -$extLen, $extLen );
|
||||
|
||||
if( $possibleMatch == $ext )
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function isSourceFile( $file )
|
||||
{
|
||||
foreach( $this->source_file_exts as $ext )
|
||||
{
|
||||
$ext = ".{$ext}";
|
||||
$extLen = strlen( $ext );
|
||||
$possibleMatch = substr( $file, -$extLen, $extLen );
|
||||
if( $possibleMatch == $ext )
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
133
Tools/projectGenerator/classes/FileUtil.php
Normal file
133
Tools/projectGenerator/classes/FileUtil.php
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class FileUtil
|
||||
{
|
||||
// Turn foo/../bar/../baz/ into baz/
|
||||
static function collapsePath( $p )
|
||||
{
|
||||
$p = explode( '/', $p );
|
||||
$o = array();
|
||||
|
||||
for( $i = 0; $i < sizeof( $p ); $i++ )
|
||||
{
|
||||
// Skip meaningless . or empty terms.
|
||||
if( $p[ $i ] == '' || $p[ $i ] == '.' )
|
||||
continue;
|
||||
|
||||
// Consider if we can pop something off the list.
|
||||
if( $p[ $i ] == '..' && $i > 0 && $o[ sizeof( $o ) - 1 ] != '..' )
|
||||
{
|
||||
array_pop( $o );
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
array_push( $o, $p[ $i ] );
|
||||
}
|
||||
|
||||
return implode( '/', $o );
|
||||
}
|
||||
|
||||
// We apply some cleanup to the file list, specifically to remove
|
||||
// any groupings with no siblings.
|
||||
static function trimFileList( &$list )
|
||||
{
|
||||
// Consider each child...
|
||||
foreach( $list as $k => $v )
|
||||
{
|
||||
// Only consider folders...
|
||||
if( !is_array( $v ) )
|
||||
continue;
|
||||
|
||||
// If child has only one child, then collapse it
|
||||
reset( $v );
|
||||
|
||||
if( count( $v ) == 1 && is_array( current( $v ) ) )
|
||||
{
|
||||
//echo("Trying to collapse $k\n");
|
||||
|
||||
$list[ $k ] = current( $v );
|
||||
|
||||
// Reset our walk through the list...
|
||||
reset( $list );
|
||||
}
|
||||
}
|
||||
|
||||
// Now recurse on all children.
|
||||
foreach( $list as $k => $v )
|
||||
{
|
||||
// Only consider folders...
|
||||
if( !is_array( $v ) )
|
||||
continue;
|
||||
|
||||
FileUtil::trimFileList( &$list[ $k ] );
|
||||
}
|
||||
}
|
||||
|
||||
static function prepareOutputDir( $outdir )
|
||||
{
|
||||
if( !file_exists( $outdir ) )
|
||||
{
|
||||
echo( " Directory " . $outdir . " doesn't exist, attempting to create it.\n" );
|
||||
|
||||
if( !mkdir_r( $outdir, 0777 ) )
|
||||
{
|
||||
echo( " Couldn't create directory.\n" );
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if( !chdir( $outdir ) )
|
||||
{
|
||||
echo( "Couldn't change directory\n" );
|
||||
|
||||
return false;;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static function normalizeSlashes( $path )
|
||||
{
|
||||
return str_replace( '\\', '/', $path );
|
||||
}
|
||||
|
||||
static function isAbsolutePath( $path )
|
||||
{
|
||||
// This looks complex, but its really fairly simple.
|
||||
//
|
||||
// We're detecting existing absolute paths in the include
|
||||
// by converting it to absolute, normalizing the slashes,
|
||||
// and comparing the results.
|
||||
//
|
||||
// If we get an absolute path we just don't prepend the
|
||||
// project relative path part.
|
||||
//
|
||||
$orgPath = FileUtil::normalizeSlashes( $path );
|
||||
$absPath = FileUtil::normalizeSlashes( realpath( $path ) );
|
||||
return strcasecmp( $orgPath, $absPath ) == 0;
|
||||
}
|
||||
}
|
||||
?>
|
||||
612
Tools/projectGenerator/classes/Generator.php
Normal file
612
Tools/projectGenerator/classes/Generator.php
Normal file
|
|
@ -0,0 +1,612 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
///
|
||||
/// Static Generator class
|
||||
///
|
||||
require_once( "FileUtil.php" );
|
||||
require_once( "Solution.php" );
|
||||
require_once( "Project.php" );
|
||||
require_once( "BuildTarget.php" );
|
||||
require_once( "Torque3D.php");
|
||||
require_once( "WindowsRegistry.php");
|
||||
require_once( "WebPlugin.php");
|
||||
require_once( "ActiveXWebPlugin.php");
|
||||
require_once( "NPWebPlugin.php");
|
||||
require_once( "SafariWebPlugin.php");
|
||||
|
||||
|
||||
class Generator
|
||||
{
|
||||
public static $app_name;
|
||||
public static $paths = array();
|
||||
public static $prefs = array();
|
||||
public static $config_projects = array();
|
||||
public static $app_lib_includes = array(); // An accumulative list of includes that are needed by libs and subsequently needed by the application
|
||||
public static $platform = 'win32';
|
||||
public static $solutions = array();
|
||||
public static $libGuard = array(); // protect against libraries included multiple times across modules
|
||||
public static $absPath = NULL;
|
||||
public static $gameProjectName = NULL;
|
||||
public static $toolBuild = true;
|
||||
public static $watermarkBuild = false;
|
||||
public static $purchaseScnBuild = false;
|
||||
public static $demoBuild = false;
|
||||
public static $objectLimitBuild = false;
|
||||
public static $timeOutBuild = false;
|
||||
public static $useDLLRuntime = false;
|
||||
|
||||
private static $solution_cur;
|
||||
private static $project_cur;
|
||||
private static $module_cur;
|
||||
|
||||
static function init( $torqueRoot )
|
||||
{
|
||||
// If the torque root is absolute then store and use it.
|
||||
if ( realpath( $torqueRoot ) == $torqueRoot ||
|
||||
realpath( $torqueRoot ) == str_replace("/", "\\", $torqueRoot) )
|
||||
{
|
||||
self::$absPath = str_replace( "\\", "/", $torqueRoot );
|
||||
$torqueRoot = self::$absPath;
|
||||
}
|
||||
|
||||
if ( self::$absPath )
|
||||
{
|
||||
self::$paths[ 'engineLib' ] = '../../../Engine/lib/';
|
||||
self::$paths[ 'engineSrc' ] = '../../../Engine/source/';
|
||||
self::$paths[ 'engineBin' ] = '../../../Engine/bin/';
|
||||
}
|
||||
else
|
||||
{
|
||||
self::$paths[ 'engineLib' ] = $torqueRoot . '/../Engine/lib/';
|
||||
self::$paths[ 'engineSrc' ] = $torqueRoot . '/../Engine/source/';
|
||||
self::$paths[ 'engineBin' ] = $torqueRoot . '/../Engine/bin/';
|
||||
}
|
||||
|
||||
self::$paths[ 'modules' ] = $torqueRoot . '/Tools/projectGenerator/modules/';
|
||||
self::$paths[ 'libs' ] = $torqueRoot . '/Tools/projectGenerator/libs/';
|
||||
self::$platform = 'win32';
|
||||
}
|
||||
|
||||
static function setGameProjectName($name)
|
||||
{
|
||||
self::$gameProjectName = $name;
|
||||
}
|
||||
|
||||
static function getGameProjectName()
|
||||
{
|
||||
return self::$gameProjectName;
|
||||
}
|
||||
|
||||
static function setToolBuild($tb)
|
||||
{
|
||||
self::$toolBuild = $tb;
|
||||
}
|
||||
|
||||
static function getToolBuild()
|
||||
{
|
||||
return self::$toolBuild;
|
||||
}
|
||||
|
||||
static function setWatermarkBuild($wb)
|
||||
{
|
||||
self::$watermarkBuild = $wb;
|
||||
}
|
||||
|
||||
static function getWatermarkBuild()
|
||||
{
|
||||
return self::$watermarkBuild;
|
||||
}
|
||||
|
||||
static function setPurchaseScreenBuild($psb)
|
||||
{
|
||||
self::$purchaseScnBuild = $psb;
|
||||
}
|
||||
|
||||
static function getPurchaseScreenBuild()
|
||||
{
|
||||
return self::$purchaseScnBuild;
|
||||
}
|
||||
|
||||
static function setDemoBuild($db)
|
||||
{
|
||||
self::$demoBuild = $db;
|
||||
}
|
||||
|
||||
static function getDemoBuild()
|
||||
{
|
||||
return self::$demoBuild;
|
||||
}
|
||||
|
||||
static function setObjectLimitBuild($olb)
|
||||
{
|
||||
self::$objectLimitBuild = $olb;
|
||||
}
|
||||
|
||||
static function getObjectLimitBuild()
|
||||
{
|
||||
return self::$objectLimitBuild;
|
||||
}
|
||||
|
||||
static function setTimeOutBuild($tob)
|
||||
{
|
||||
self::$timeOutBuild = $tob;
|
||||
}
|
||||
|
||||
static function getTimeOutBuild()
|
||||
{
|
||||
return self::$timeOutBuild;
|
||||
}
|
||||
|
||||
static function isApp()
|
||||
{
|
||||
return self::$project_cur->isApp();
|
||||
}
|
||||
|
||||
|
||||
static function getGeneratorLibsPath()
|
||||
{
|
||||
return self::$paths[ 'libs' ];
|
||||
}
|
||||
|
||||
static function getGeneratorModulesPath()
|
||||
{
|
||||
return self::$paths['modules'];
|
||||
}
|
||||
|
||||
static function getEngineSrcDir()
|
||||
{
|
||||
return self::$paths['engineSrc'];
|
||||
}
|
||||
|
||||
static function getLibSrcDir()
|
||||
{
|
||||
return self::$paths['engineLib'];
|
||||
}
|
||||
|
||||
static function getEngineBinDir()
|
||||
{
|
||||
return self::$paths['engineBin'];
|
||||
}
|
||||
|
||||
static function addSrcDirRecursive($basePath, $dirPath)
|
||||
{
|
||||
$ignore = array( '.', '..', '.svn', '_svn', 'CVS' );
|
||||
$absPath = realpath($argv[1])."/buildFiles/";
|
||||
|
||||
array_push( self::$project_cur->dir_list, $basePath.'/'.$dirPath );
|
||||
|
||||
$dirHandle = opendir( $absPath.$basePath.'/'.$dirPath);
|
||||
|
||||
while( $file = readdir( $dirHandle ) )
|
||||
{
|
||||
if( !in_array( $file, $ignore ) )
|
||||
{
|
||||
if( is_dir( $absPath.$basePath.'/'.$dirPath.'/'.$file ) )
|
||||
self::addSrcDirRecursive( $basePath, "$dirPath/$file");
|
||||
}
|
||||
}
|
||||
|
||||
closedir( $dirHandle );
|
||||
|
||||
}
|
||||
|
||||
static function addSrcDir( $dir, $recurse = false )
|
||||
{
|
||||
if (!$recurse)
|
||||
array_push( self::$project_cur->dir_list, $dir );
|
||||
else
|
||||
{
|
||||
self::addSrcDirRecursive($dir, "");
|
||||
}
|
||||
}
|
||||
|
||||
static function addSrcFile( $file )
|
||||
{
|
||||
array_push( self::$project_cur->dir_list, $file );
|
||||
}
|
||||
|
||||
static function addIncludePath( $path )
|
||||
{
|
||||
array_push( self::$project_cur->includes, $path );
|
||||
}
|
||||
|
||||
static function addProjectDefine( $d, $v )
|
||||
{
|
||||
if (!$v)
|
||||
array_push( self::$project_cur->defines, $d );
|
||||
else
|
||||
array_push( self::$project_cur->defines, $d."=".$v );
|
||||
}
|
||||
|
||||
static function disableProjectWarning( $warning )
|
||||
{
|
||||
array_push( self::$project_cur->disabledWarnings, $warning );
|
||||
}
|
||||
|
||||
static function addProjectDefines( $args_array )
|
||||
{
|
||||
self::$project_cur->defines = array_merge( self::$project_cur->defines, $args_array );
|
||||
}
|
||||
|
||||
static function addProjectLibDir( $dir )
|
||||
{
|
||||
array_push( self::$project_cur->lib_dirs, $dir );
|
||||
}
|
||||
|
||||
static function addProjectLibInput( $lib )
|
||||
{
|
||||
array_push( self::$project_cur->libs, $lib );
|
||||
}
|
||||
|
||||
static function includeLib( $lib )
|
||||
{
|
||||
foreach( self::$libGuard as $libName )
|
||||
if( $libName == $lib )
|
||||
return;
|
||||
|
||||
array_push( self::$libGuard, $lib );
|
||||
|
||||
// if currently in a project, delay the include
|
||||
if (Generator::inProjectConfig())
|
||||
{
|
||||
array_push( self::$project_cur->lib_includes, $lib );
|
||||
return;
|
||||
}
|
||||
|
||||
// otherwise include it immediately
|
||||
require( Generator::getGeneratorLibsPath() . $lib . '.conf' );
|
||||
}
|
||||
|
||||
static function addProjectDependency( $pd )
|
||||
{
|
||||
array_push( self::$project_cur->dependencies, $pd );
|
||||
}
|
||||
|
||||
static function removeProjectDependency( $pd )
|
||||
{
|
||||
foreach (self::$project_cur->dependencies as $key => $value)
|
||||
{
|
||||
if ($value == $pd)
|
||||
{
|
||||
unset(self::$project_cur->dependencies[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
self::$project_cur->dependencies = array_values(self::$project_cur->dependencies);
|
||||
}
|
||||
|
||||
|
||||
static function addProjectReference( $refName, $version = "")
|
||||
{
|
||||
self::$project_cur->addReference( $refName, $version );
|
||||
}
|
||||
|
||||
static function setProjectGUID( $guid )
|
||||
{
|
||||
self::$project_cur->guid = $guid;
|
||||
}
|
||||
|
||||
static function setProjectModuleDefinitionFile ( $mdef )
|
||||
{
|
||||
self::$project_cur->moduleDefinitionFile = $mdef;
|
||||
}
|
||||
|
||||
static function beginModule( $name )
|
||||
{
|
||||
if( !self::$module_cur )
|
||||
self::$module_cur = $name;
|
||||
else
|
||||
echo( "Generator::beginModule() - already in module!" );
|
||||
}
|
||||
|
||||
static function endModule()
|
||||
{
|
||||
if( self::$module_cur )
|
||||
self::$module_cur = null;
|
||||
else
|
||||
trigger_error( "Generator::endModule() - no active module!", E_USER_ERROR );
|
||||
}
|
||||
|
||||
static function inProjectConfig()
|
||||
{
|
||||
return self::$project_cur != null;
|
||||
}
|
||||
|
||||
static function setProjectSubSystem( $subSystem )
|
||||
{
|
||||
self::$project_cur->setSubSystem( $subSystem );
|
||||
}
|
||||
|
||||
static function beginProjectConfig( $name, $type, $guid, $game_dir, $output_name )
|
||||
{
|
||||
if( !self::$project_cur )
|
||||
{
|
||||
echo( " - begin project: " . $name . "=" . $guid . "\n" );
|
||||
|
||||
self::$project_cur = new Project( $name, $type, $guid, $game_dir, $output_name );
|
||||
|
||||
self::$config_projects[ $name ] = self::$project_cur;
|
||||
}
|
||||
else
|
||||
trigger_error( "Generator::beginProjectConfig() - a project is already open!", E_USER_ERROR );
|
||||
}
|
||||
|
||||
static function endProjectConfig( $type )
|
||||
{
|
||||
//echo( "PT: " .$type. ":".self::$project_cur->type . "\n");
|
||||
|
||||
if( self::$project_cur )
|
||||
{
|
||||
if( self::$project_cur->type == $type )
|
||||
{
|
||||
echo( " - end project " . self::$project_cur->name . "\n" );
|
||||
|
||||
// Set project outputs
|
||||
self::$project_cur->outputs = BuildTarget::getInstances();
|
||||
|
||||
// Allow project to optimize and validate state, etc
|
||||
self::$project_cur->validate();
|
||||
|
||||
// Bit of flummery from original code, not sure what it is supposed to do -- neo
|
||||
if( $type == Project::$TYPE_LIB )
|
||||
{
|
||||
// Merge lib includes to global lib include array
|
||||
self::$app_lib_includes = array_merge( self::$app_lib_includes, self::$project_cur->includes );
|
||||
}
|
||||
else if ( $type == Project::$TYPE_SHARED_LIB )
|
||||
{
|
||||
// Merge lib includes into app include list
|
||||
self::$app_lib_includes = array_merge( self::$app_lib_includes, self::$project_cur->includes );
|
||||
}
|
||||
else if ( $type == Project::$TYPE_ACTIVEX )
|
||||
{
|
||||
// Merge lib includes into app include list
|
||||
self::$app_lib_includes = array_merge( self::$app_lib_includes, self::$project_cur->includes );
|
||||
}
|
||||
else if ( $type == Project::$TYPE_SAFARI )
|
||||
{
|
||||
// Merge lib includes into app include list
|
||||
self::$app_lib_includes = array_merge( self::$app_lib_includes, self::$project_cur->includes );
|
||||
}
|
||||
else if ( $type == Project::$TYPE_SHARED_APP )
|
||||
{
|
||||
// Merge lib includes into app include list
|
||||
self::$app_lib_includes = array_merge( self::$app_lib_includes, self::$project_cur->includes );
|
||||
}
|
||||
else if ( $type == Project::$TYPE_APP )
|
||||
{
|
||||
// Merge lib includes into app include list
|
||||
self::$project_cur->addIncludes( self::$app_lib_includes );
|
||||
}
|
||||
|
||||
// Clear out sucker
|
||||
$p = self::$project_cur;
|
||||
self::$project_cur = null;
|
||||
|
||||
// Now include any libraries included in the modules
|
||||
foreach( $p->lib_includes as $libName )
|
||||
require( Generator::getGeneratorLibsPath() . $libName . '.conf' );
|
||||
|
||||
}
|
||||
else
|
||||
trigger_error( "Generator::endProjectConfig() - closing type mismatch!", E_USER_ERROR );
|
||||
}
|
||||
else
|
||||
trigger_error( "Generator::endProjectConfig() - no currently open project!", E_USER_ERROR );
|
||||
}
|
||||
|
||||
static function beginActiveXConfig( $lib_name, $guid = '', $game_dir = 'game', $output_name = '' )
|
||||
{
|
||||
self::beginProjectConfig( $lib_name, Project::$TYPE_ACTIVEX, $guid, $game_dir, $output_name );
|
||||
|
||||
// Handle ActiveX specific setup (including ATL template processing, etc)
|
||||
$activex = new ActiveXWebPlugin();
|
||||
$activex->process(self::$project_cur);
|
||||
}
|
||||
|
||||
static function endActiveXConfig()
|
||||
{
|
||||
self::endProjectConfig( Project::$TYPE_ACTIVEX );
|
||||
}
|
||||
|
||||
static function beginSafariConfig( $lib_name, $guid = '', $game_dir = 'game', $output_name = '' )
|
||||
{
|
||||
self::beginProjectConfig( $lib_name, Project::$TYPE_SAFARI, $guid, $game_dir, $output_name );
|
||||
|
||||
// Handle Safari specific setup
|
||||
$safari = new SafariWebPlugin();
|
||||
$safari->process(self::$project_cur);
|
||||
}
|
||||
|
||||
static function endSafariConfig()
|
||||
{
|
||||
self::endProjectConfig( Project::$TYPE_SAFARI );
|
||||
}
|
||||
|
||||
|
||||
static function beginNPPluginConfig( $lib_name, $guid = '', $game_dir = 'game', $output_name = '' )
|
||||
{
|
||||
self::beginProjectConfig( $lib_name, Project::$TYPE_SHARED_LIB, $guid, $game_dir, $output_name );
|
||||
self::$project_cur->setUniformOutputFile();
|
||||
|
||||
// Handle NP specific setup (resource template processing, etc)
|
||||
$NP = new NPWebPlugin();
|
||||
$NP->process(self::$project_cur);
|
||||
}
|
||||
|
||||
static function endNPPluginConfig()
|
||||
{
|
||||
self::endProjectConfig( Project::$TYPE_SHARED_LIB );
|
||||
}
|
||||
|
||||
|
||||
static function beginSharedLibConfig( $lib_name, $guid = '', $game_dir = 'game', $output_name = '' )
|
||||
{
|
||||
self::beginProjectConfig( $lib_name, Project::$TYPE_SHARED_LIB, $guid, $game_dir, $output_name );
|
||||
}
|
||||
|
||||
static function endSharedLibConfig()
|
||||
{
|
||||
self::endProjectConfig( Project::$TYPE_SHARED_LIB );
|
||||
}
|
||||
|
||||
static function beginCSProjectConfig( $lib_name, $guid = '', $game_dir = 'game', $output_name = '' )
|
||||
{
|
||||
self::beginProjectConfig( $lib_name, Project::$TYPE_CSPROJECT, $guid, $game_dir, $output_name );
|
||||
}
|
||||
|
||||
static function endCSProjectConfig()
|
||||
{
|
||||
self::endProjectConfig( Project::$TYPE_CSPROJECT );
|
||||
}
|
||||
|
||||
|
||||
static function beginLibConfig( $lib_name, $guid = '', $game_dir = 'game', $output_name = '' )
|
||||
{
|
||||
self::beginProjectConfig( $lib_name, Project::$TYPE_LIB, $guid, $game_dir, $output_name );
|
||||
}
|
||||
|
||||
static function endLibConfig()
|
||||
{
|
||||
self::endProjectConfig( Project::$TYPE_LIB );
|
||||
}
|
||||
|
||||
static function beginSharedAppConfig( $app_name, $guid = '', $game_dir = 'game', $output_name = '' )
|
||||
{
|
||||
self::beginProjectConfig( $app_name, Project::$TYPE_SHARED_APP, $guid, $game_dir, $output_name );
|
||||
}
|
||||
|
||||
static function endSharedAppConfig()
|
||||
{
|
||||
self::endProjectConfig( Project::$TYPE_SHARED_APP);
|
||||
}
|
||||
|
||||
|
||||
static function beginAppConfig( $app_name, $guid = '', $game_dir = 'game', $output_name = '' )
|
||||
{
|
||||
self::beginProjectConfig( $app_name, Project::$TYPE_APP, $guid, $game_dir, $output_name );
|
||||
}
|
||||
|
||||
static function endAppConfig()
|
||||
{
|
||||
self::endProjectConfig( Project::$TYPE_APP );
|
||||
}
|
||||
|
||||
static function lookupProjectByName( $pname )
|
||||
{
|
||||
foreach( self::$config_projects as $projName => $proj )
|
||||
if( $projName == $pname )
|
||||
return $proj;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// We encapsulate the meat of the project generator in generateProjects()
|
||||
// so that more complex .config files can generate more than one run of projects
|
||||
// without having to run a second instance of php
|
||||
static function generateProjects( $tpl )
|
||||
{
|
||||
// Alright, for each project scan and generate the file list.
|
||||
$projectFiles = array ();
|
||||
$rootPhpBuildDir = getcwd();
|
||||
|
||||
foreach( self::$config_projects as $projName => $proj )
|
||||
{
|
||||
echo( " - Processing project '$projName'...\n" );
|
||||
|
||||
$proj->generate( $tpl, self::$platform, $rootPhpBuildDir );
|
||||
}
|
||||
|
||||
echo( "PROJECTS DONE\n\n" );
|
||||
|
||||
chdir( $rootPhpBuildDir );
|
||||
}
|
||||
|
||||
/////////////////////// SOLUTIONS /////////////////////////
|
||||
|
||||
static function beginSolution( $name, $guid )
|
||||
{
|
||||
if( !self::$solution_cur )
|
||||
{
|
||||
self::$solution_cur = new Solution( $name, $guid );
|
||||
self::$solutions[ $name ] = self::$solution_cur;
|
||||
}
|
||||
else
|
||||
trigger_error( "Generator::beginSolution() - tried to start $name but already in the ".self::$solution_cur->name." solution!", E_USER_ERROR );
|
||||
}
|
||||
|
||||
static function addSolutionProjectRef( $pname )
|
||||
{
|
||||
if( isset( self::$solution_cur ) )
|
||||
self::$solution_cur->addProjectRef( $pname );
|
||||
else
|
||||
trigger_error( "Generator::addSolutionProjectRef(): no such project - " . $pname . "\n", E_USER_ERROR );
|
||||
}
|
||||
|
||||
static function addSolutionProjectRefExt( $pname, $ppath, $pguid )
|
||||
{
|
||||
if( isset( self::$solution_cur ) )
|
||||
self::$solution_cur->addSolutionProjectRefExt( $pname, $ppath, $pguid );
|
||||
else
|
||||
trigger_error( "Generator::addSolutionProjectRefExt(): no such project - " . $pname . "\n", E_USER_ERROR );
|
||||
}
|
||||
|
||||
static function endSolution()
|
||||
{
|
||||
if( isset( self::$solution_cur ) )
|
||||
{
|
||||
self::$solution_cur->setOutputs( BuildTarget::getInstances() );
|
||||
|
||||
self::$solution_cur = null;
|
||||
}
|
||||
else
|
||||
trigger_error( "Generator::endSolution(): no active solution!\n", E_USER_ERROR );
|
||||
}
|
||||
|
||||
static function generateSolutions( $tpl )
|
||||
{
|
||||
echo( "GENERATING SOLUTIONS\n\n" );
|
||||
|
||||
$rootPhpBuildDir = getcwd();
|
||||
|
||||
// Process all solutions
|
||||
foreach( self::$solutions as $sname => $solution )
|
||||
{
|
||||
echo( " - Generating solution: " . $sname . "\n" );
|
||||
|
||||
chdir( $rootPhpBuildDir );
|
||||
|
||||
$solution->generate( $tpl, self::$platform, $rootPhpBuildDir );
|
||||
}
|
||||
|
||||
chdir( $rootPhpBuildDir );
|
||||
}
|
||||
|
||||
static function setDLLRuntime( $val )
|
||||
{
|
||||
self::$useDLLRuntime = $val;
|
||||
}
|
||||
}
|
||||
?>
|
||||
182
Tools/projectGenerator/classes/NPWebPlugin.php
Normal file
182
Tools/projectGenerator/classes/NPWebPlugin.php
Normal file
|
|
@ -0,0 +1,182 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class NPWebPlugin
|
||||
{
|
||||
var $FOLDER = "";
|
||||
var $GAMEFOLDER = "";
|
||||
var $PLUGINNAME = "";
|
||||
|
||||
var $COMPANY = "";
|
||||
var $COMPANYKEY = "";
|
||||
var $PLUGIN = "";
|
||||
var $PRODUCTNAME = "";
|
||||
var $VERSION = "";
|
||||
var $MIMETYPE = "";
|
||||
var $DESCRIPTION = "";
|
||||
|
||||
function NPWebPlugin()
|
||||
{
|
||||
$rootPhpBuildDir = getcwd();
|
||||
|
||||
$this->FOLDER = $rootPhpBuildDir."\\web\\source\\npplugin\\windows\\";
|
||||
$this->GAMEFOLDER = $rootPhpBuildDir."\\game\\";
|
||||
|
||||
$this->PLUGINNAME = WebDeploymentWindows::$npPluginName;
|
||||
|
||||
$this->COMPANY = WebDeploymentWindows::$company;
|
||||
$this->COMPANYKEY = WebDeploymentWindows::$companyKey;
|
||||
$this->PLUGIN = WebDeploymentWindows::$plugin;
|
||||
$this->PRODUCTNAME = WebDeploymentWindows::$productName;
|
||||
$this->VERSION = WebDeploymentWindows::$version;
|
||||
$this->MIMETYPE = WebDeploymentWindows::$mimeType;
|
||||
$this->DESCRIPTION = WebDeploymentWindows::$description." ".$this->VERSION;
|
||||
}
|
||||
|
||||
function process($project)
|
||||
{
|
||||
$windowsRegistry = new WindowsRegistry();
|
||||
|
||||
$MozillaVersion = $windowsRegistry->ReadValue('HKEY_LOCAL_MACHINE\\SOFTWARE\\Mozilla\\Mozilla Firefox', 'CurrentVersion', TRUE);
|
||||
$MozillaExe = $windowsRegistry->ReadValue('HKEY_LOCAL_MACHINE\\SOFTWARE\\Mozilla\\Mozilla Firefox\\'.$MozillaVersion.'\\Main', 'PathToExe', TRUE);
|
||||
|
||||
// FireFox registry settings
|
||||
$MozillaKey = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\MozillaPlugins\\@';
|
||||
|
||||
$html = 'file://'.getcwd().'/game/web/sample.html';
|
||||
$html = str_replace("\\", "/", $html);
|
||||
$html = str_replace(" ", "%20", $html);
|
||||
|
||||
$project->commandRelease = $MozillaExe;
|
||||
$project->commandDebug = $MozillaExe;
|
||||
$project->commandOptimized = $MozillaExe;
|
||||
|
||||
$project->argsRelease = $html;
|
||||
$project->argsDebug = $html;
|
||||
$project->argsOptimized = $html;
|
||||
|
||||
//$windowsRegistry->WriteValue($MozillaKey.$this->COMPANYKEY.'/'.$this->PLUGIN, 'Path', $this->GAMEFOLDER.$this->PLUGINNAME.'.dll');
|
||||
//$windowsRegistry->WriteValue($MozillaKey.$this->COMPANYKEY.'/'.$this->PLUGIN, 'ProductName', $this->PRODUCTNAME);
|
||||
//$windowsRegistry->WriteValue($MozillaKey.$this->COMPANYKEY.'/'.$this->PLUGIN, 'Vendor', $this->COMPANY);
|
||||
//$windowsRegistry->WriteValue($MozillaKey.$this->COMPANYKEY.'/'.$this->PLUGIN, 'Version', $this->VERSION);
|
||||
//$windowsRegistry->WriteValue($MozillaKey.$this->COMPANYKEY.'/'.$this->PLUGIN.'\\MimeTypes\\application/'.$this->MIMETYPE, 'Description', $this->DESCRIPTION);
|
||||
|
||||
unset($windowsRegistry);
|
||||
|
||||
$this->processTemplates();
|
||||
|
||||
setProjectModuleDefinitionFile('../../../web/source/npplugin/windows/npWebGamePlugin.def');
|
||||
|
||||
/// Prefs
|
||||
addProjectDefine( 'TORQUE_SHADERGEN' );
|
||||
addProjectDefine( 'TORQUE_SHARED' );
|
||||
addProjectDefine( 'TORQUE_WEBDEPLOY' );
|
||||
|
||||
// Firefox
|
||||
addProjectDefine( 'FIREFOXPLUGIN_EXPORTS' );
|
||||
addProjectDefine( 'MOZILLA_STRICT_API' );
|
||||
addProjectDefine( 'XP_WIN' );
|
||||
|
||||
addProjectDefine( 'WIN32' );
|
||||
addProjectDefine( '_WINDOWS' );
|
||||
addProjectDefine( '_USRDLL' );
|
||||
|
||||
addSrcDir( '../web/source/common' );
|
||||
addSrcDir( '../web/source/npplugin' );
|
||||
addSrcDir( '../web/source/npplugin/windows' );
|
||||
|
||||
// Additional includes
|
||||
addIncludePath( "../../web/source/npplugin/windows" );
|
||||
|
||||
addProjectLibDir( getAppLibSrcDir() . 'SDL/win32' );
|
||||
addProjectLibDir( getAppLibSrcDir() . 'unicode' );
|
||||
// addProjectLibDir( getAppLibSrcDir() . 'mozilla/lib' );
|
||||
|
||||
addProjectLibInput('COMCTL32.LIB');
|
||||
addProjectLibInput('COMDLG32.LIB');
|
||||
addProjectLibInput('USER32.LIB');
|
||||
addProjectLibInput('ADVAPI32.LIB');
|
||||
addProjectLibInput('GDI32.LIB');
|
||||
addProjectLibInput('WINMM.LIB');
|
||||
addProjectLibInput('WSOCK32.LIB');
|
||||
addProjectLibInput('vfw32.lib');
|
||||
addProjectLibInput('Imm32.lib');
|
||||
addProjectLibInput('UnicoWS.lib');
|
||||
addProjectLibInput('opengl32.lib');
|
||||
addProjectLibInput('glu32.lib');
|
||||
addProjectLibInput('ole32.lib');
|
||||
addProjectLibInput('shell32.lib');
|
||||
addProjectLibInput('oleaut32.lib');
|
||||
addProjectLibInput('version.lib');
|
||||
|
||||
}
|
||||
|
||||
function readTemplate($filename)
|
||||
{
|
||||
$filename = realpath( dirname( $_SERVER[ 'PHP_SELF' ] ) ). "/templates/web/".$filename;
|
||||
$fh = fopen($filename, 'r');
|
||||
$data = fread($fh, filesize($filename));
|
||||
fclose($fh);
|
||||
return $data;
|
||||
}
|
||||
|
||||
function writeFile($filename, $data)
|
||||
{
|
||||
$filename = $this->FOLDER . $filename;
|
||||
$fh = fopen($filename, 'w');
|
||||
fwrite($fh, $data);
|
||||
fclose($fh);
|
||||
}
|
||||
|
||||
function writeGameFile($filename, $data)
|
||||
{
|
||||
$filename = $this->GAMEFOLDER . $filename;
|
||||
$fh = fopen($filename, 'w');
|
||||
fwrite($fh, $data);
|
||||
fclose($fh);
|
||||
}
|
||||
|
||||
function processTemplates()
|
||||
{
|
||||
|
||||
$data = $this->readTemplate("firefox_rc.tpl");
|
||||
$cd = str_replace(".", "," , $this->VERSION);
|
||||
$data = str_replace("__PRODUCTVERSION__", $cd, $data);
|
||||
$data = str_replace("__FILEDESCRIPTION__", $this->DESCRIPTION, $data);
|
||||
$data = str_replace("__INTERNALNAME__", $this->PRODUCTNAME, $data);
|
||||
$data = str_replace("__MIMETYPE__", "application/".$this->MIMETYPE, $data);
|
||||
$data = str_replace("__ORIGINALFILENAME__", $this->PLUGINNAME.'.dll', $data);
|
||||
$data = str_replace("__PRODUCTNAME__", $this->PRODUCTNAME, $data);
|
||||
$data = str_replace("__COMPANY__", $this->COMPANY, $data);
|
||||
$data = str_replace("__COMPANYKEY__", $this->COMPANYKEY, $data);
|
||||
$data = str_replace("__PLUGIN__", $this->PLUGIN, $data);
|
||||
$this->writeFile('NPWebGamePlugin.rc', $data);
|
||||
|
||||
// handle the sample HTML (and whatever else) that is shared between plugins
|
||||
WebPlugin::processNPPlugin($this);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
614
Tools/projectGenerator/classes/Project.php
Normal file
614
Tools/projectGenerator/classes/Project.php
Normal file
|
|
@ -0,0 +1,614 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
///
|
||||
/// Project info
|
||||
///
|
||||
class Project
|
||||
{
|
||||
public static $TYPE_APP = 'app';
|
||||
public static $TYPE_SHARED_APP = 'sharedapp';
|
||||
public static $TYPE_LIB = 'lib';
|
||||
public static $TYPE_SHARED_LIB = 'shared';
|
||||
public static $TYPE_ACTIVEX = 'activex';
|
||||
public static $TYPE_SAFARI = 'safari';
|
||||
public static $TYPE_CSPROJECT = 'csproj';
|
||||
|
||||
public $name; // Project name
|
||||
public $guid; // Project GUID
|
||||
public $type; // Application or Library?
|
||||
public $dir_list; // What directories are we checking in?
|
||||
public $outputs; // List of outputs we want to generate.
|
||||
public $game_dir; // Base product path
|
||||
public $defines; // Preprocessor directives
|
||||
public $disabledWarnings; // Additional warnings to disable
|
||||
public $includes; // Additional include paths
|
||||
public $libs; // Additional libraries to link against
|
||||
public $lib_dirs; // Additional library search paths
|
||||
public $lib_includes; // libs to include (generated by modules)
|
||||
public $additionalExePath; // Additional section to inject into executable path
|
||||
public $dependencies; // Projects this project depends on
|
||||
public $references; // for managed projects, references to required assemblies
|
||||
public $moduleDefinitionFile; // definition file to control shared library exports on windows
|
||||
public $projectFileExt;
|
||||
|
||||
public $commandDebug = "";
|
||||
public $commandOptimized = "";
|
||||
public $commandRelease = "";
|
||||
|
||||
public $argsDebug = "";
|
||||
public $argsOptimized = "";
|
||||
public $argsRelease = "";
|
||||
|
||||
public $projSubSystem = 2; // support for Windows/Console/Assembly linker subsystem (1 - Console, 2 - Windows, 3 - Assembly)
|
||||
|
||||
private static $xUID = 1; // used for unique file IDs for Xcode projects
|
||||
|
||||
public $uniformOutputFile = 0; // debug/release builds use same filename (necessary for np plugin)
|
||||
|
||||
// $additionalExePath, $lib_dirs, $libs, all appear to be unused. [pauls 11/9/2007]
|
||||
public function Project( $name, $type, $guid = '', $game_dir = 'game', $output_name = '' )
|
||||
{
|
||||
if (strlen($output_name) == 0)
|
||||
$output_name = $name;
|
||||
|
||||
$this->name = $name;
|
||||
$this->outputName = $output_name;
|
||||
$this->guid = $guid;
|
||||
$this->type = $type;
|
||||
$this->game_dir = $game_dir;
|
||||
$this->dir_list = array();
|
||||
$this->defines = array();
|
||||
$this->includes = array();
|
||||
$this->libs = array();
|
||||
$this->lib_dirs = array();
|
||||
$this->lib_includes = array();
|
||||
$this->outputs = array();
|
||||
$this->dependencies = array();
|
||||
$this->disabledWarnings = array();
|
||||
$this->references = array();
|
||||
}
|
||||
|
||||
public function isApp()
|
||||
{
|
||||
return $this->type == self::$TYPE_APP;
|
||||
}
|
||||
|
||||
public function isSharedApp()
|
||||
{
|
||||
return $this->type == self::$TYPE_SHARED_APP;
|
||||
}
|
||||
|
||||
public function isLib()
|
||||
{
|
||||
return $this->type == self::$TYPE_LIB;
|
||||
}
|
||||
|
||||
public function isSharedLib()
|
||||
{
|
||||
return $this->type == self::$TYPE_SHARED_LIB;
|
||||
}
|
||||
|
||||
public function isCSProject()
|
||||
{
|
||||
return $this->type == self::$TYPE_CSPROJECT;
|
||||
}
|
||||
|
||||
public function isActiveX()
|
||||
{
|
||||
return $this->type == self::$TYPE_ACTIVEX;
|
||||
}
|
||||
|
||||
public function isSafari()
|
||||
{
|
||||
return $this->type == self::$TYPE_SAFARI;
|
||||
}
|
||||
|
||||
public function setUniformOutputFile()
|
||||
{
|
||||
return $this->uniformOutputFile = 1;
|
||||
}
|
||||
|
||||
public function setSubSystem( $subSystem )
|
||||
{
|
||||
$this->projSubSystem = $subSystem;
|
||||
}
|
||||
|
||||
public function validate()
|
||||
{
|
||||
// Sort the path list
|
||||
sort( $this->dir_list );
|
||||
|
||||
// Make sure we don't have any duplicate paths
|
||||
$this->dir_list = array_unique( $this->dir_list );
|
||||
}
|
||||
|
||||
public function addReference($refName, $version = "")
|
||||
{
|
||||
$this->references[$refName] = $version;
|
||||
}
|
||||
|
||||
public function addIncludes( $includes )
|
||||
{
|
||||
$this->includes = array_merge( $includes, $this->includes );
|
||||
}
|
||||
|
||||
public function validateDependencies()
|
||||
{
|
||||
$pguids = array();
|
||||
|
||||
foreach( $this->dependencies as $pname )
|
||||
{
|
||||
$p = Generator::lookupProjectByName( $pname );
|
||||
|
||||
if( $p )
|
||||
array_push( $pguids, $p->guid );
|
||||
else
|
||||
trigger_error( "Project dependency not found: " .$pname, E_USER_ERROR );
|
||||
}
|
||||
// todo: change to dependencyGuids
|
||||
$this->dependencies = $pguids;
|
||||
}
|
||||
|
||||
private function generateXUID()
|
||||
{
|
||||
return sprintf( "%023X", Project::$xUID++ );
|
||||
}
|
||||
|
||||
private function createFileEntry( $output, $curPath, $curFile )
|
||||
{
|
||||
// See if we need to reject it based on our rules..
|
||||
if( $output->ruleReject( $curFile ) )
|
||||
return null;
|
||||
|
||||
// Get the extension - is it one of our allowed values?
|
||||
if( !$output->allowedFileExt( $curFile ) )
|
||||
return null;
|
||||
|
||||
// Cool - note in the list!
|
||||
$newEntry = new stdClass();
|
||||
$newEntry->name = $curFile;
|
||||
$newEntry->path = FileUtil::collapsePath( $curPath . "/" . $curFile );
|
||||
|
||||
if ( !FileUtil::isAbsolutePath( $newEntry->path ) )
|
||||
{
|
||||
// This could be consolidated into a single OR statement but it is easier to
|
||||
// read as two separate if's
|
||||
if ( !Generator::$absPath )
|
||||
$newEntry->path = $output->project_rel_path . $newEntry->path;
|
||||
|
||||
if ( Generator::$absPath && !stristr($newEntry->path, Generator::$absPath) )
|
||||
$newEntry->path = $output->project_rel_path . $newEntry->path;
|
||||
}
|
||||
|
||||
// Store a project-unique ID here for Xcode projects
|
||||
// It will be appended by a single char in the templates.
|
||||
$newEntry->hash = Project::generateXUID();
|
||||
|
||||
return $newEntry;
|
||||
}
|
||||
|
||||
function generateFileList( &$projectFiles, $outputName, &$output )
|
||||
{
|
||||
$projName = $this->name;
|
||||
$projectFiles[ $projName ] = array();
|
||||
|
||||
foreach( $this->dir_list as $dir )
|
||||
{
|
||||
$dir = FileUtil::normalizeSlashes( $dir );
|
||||
|
||||
// Build the path.
|
||||
if ( FileUtil::isAbsolutePath( $dir ) )
|
||||
$curPath = $dir;
|
||||
else
|
||||
$curPath = FileUtil::collapsePath( $output->base_dir . $dir );
|
||||
$pathWalk = &$projectFiles[ $projName ];
|
||||
|
||||
if ( Generator::$absPath )
|
||||
{
|
||||
if ( stristr($curPath, getEngineSrcDir()) || stristr($curPath, getLibSrcDir()) )
|
||||
$curPath = Generator::$absPath . "/". str_replace("../", "", $curPath);
|
||||
}
|
||||
|
||||
// Check if its a file or a directory.
|
||||
// If its a file just add it directly and build a containng filter/folder structure,
|
||||
// for it else if a dir add all files in it.
|
||||
if( is_file( $curPath ) )
|
||||
{
|
||||
// Get the file name
|
||||
$curFile = basename( $curPath );
|
||||
$curPath = dirname( $curPath );
|
||||
|
||||
//echo( "FILE: " . $curFile . " PATH: " . $curPath . "\n" );
|
||||
}
|
||||
|
||||
if( is_dir( $curPath ) )
|
||||
{
|
||||
//echo( "DIR: " . $curPath . "\n" );
|
||||
|
||||
// Get the array we'll be adding things to...
|
||||
$pathParts = explode( '/', FileUtil::collapsePath( $dir ) );
|
||||
|
||||
foreach( $pathParts as $part )
|
||||
{
|
||||
// Skip parts that are relative paths - only want meaningful directories.
|
||||
if( $part == '..' )
|
||||
continue;
|
||||
|
||||
if( !is_array( $pathWalk[ $part ] ) )
|
||||
$pathWalk[ $part ] = array();
|
||||
|
||||
$pathWalk = &$pathWalk[ $part ];
|
||||
}
|
||||
|
||||
// Open directory.
|
||||
//echo( "SCANNING: " . $curPath . "\n");
|
||||
|
||||
$dirHdl = opendir( $curPath );
|
||||
|
||||
if( !$dirHdl )
|
||||
{
|
||||
echo( "Path " . $curPath . " not found, giving up.\n" );
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Iterate over all the files in the path if not a single file spec.
|
||||
if( !$curFile )
|
||||
{
|
||||
while( $curFile = readdir( $dirHdl ) )
|
||||
{
|
||||
// Skip out if it's an uninteresting dir...
|
||||
if( $curFile == '.' || $curFile == '..' || $curFile == '.svn' || $curFile == 'CVS' )
|
||||
continue;
|
||||
|
||||
$newEntry = $this->createFileEntry( $output, $curPath, $curFile );
|
||||
|
||||
if( $newEntry )
|
||||
$pathWalk[] = $newEntry;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$newEntry = $this->createFileEntry( $output, $curPath, $curFile );
|
||||
|
||||
if( $newEntry )
|
||||
$pathWalk = $newEntry;
|
||||
|
||||
$curFile = '';
|
||||
}
|
||||
|
||||
// Clean up after ourselves!
|
||||
closedir( $dirHdl );
|
||||
}
|
||||
}
|
||||
|
||||
FileUtil::trimFileList( &$projectFiles );
|
||||
|
||||
// Uncomment me to see the structure the file lister is returning.
|
||||
//print_r($projectFiles);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private function setTemplateParams( $tpl, $output, &$projectFiles )
|
||||
{
|
||||
// Set the template delimiters
|
||||
$tpl->left_delimiter = $output->ldelim ? $output->ldelim : '{';
|
||||
$tpl->right_delimiter = $output->rdelim ? $output->rdelim : '}';
|
||||
|
||||
// Evaluate template into a file.
|
||||
$tpl->assign_by_ref( 'projSettings', $this );
|
||||
$tpl->assign_by_ref( 'projOutput', $output );
|
||||
$tpl->assign_by_ref( 'fileArray', $projectFiles );
|
||||
$tpl->assign_by_ref( 'projName', $this->name );
|
||||
$tpl->assign_by_ref( 'projOutName', $this->outputName );
|
||||
$tpl->assign_by_ref( 'gameFolder', $this->game_dir );
|
||||
$tpl->assign_by_ref( 'GUID', $this->guid );
|
||||
$tpl->assign_by_ref( 'projDefines', $this->defines );
|
||||
$tpl->assign_by_ref( 'projDisabledWarnings', $this->disabledWarnings );
|
||||
$tpl->assign_by_ref( 'projIncludes', $this->includes );
|
||||
$tpl->assign_by_ref( 'projLibs', $this->libs );
|
||||
$tpl->assign_by_ref( 'projLibDirs', $this->lib_dirs );
|
||||
$tpl->assign_by_ref( 'projDepend', $this->dependencies );
|
||||
$tpl->assign_by_ref( 'gameProjectName', getGameProjectName() );
|
||||
$tpl->assign_by_ref( 'projModuleDefinitionFile', $this->moduleDefinitionFile );
|
||||
$tpl->assign_by_ref( 'projSubSystem', $this->projSubSystem );
|
||||
|
||||
if (Generator::$useDLLRuntime)
|
||||
{
|
||||
// /MD and /MDd
|
||||
$tpl->assign( 'projRuntimeRelease', 2 );
|
||||
$tpl->assign( 'projRuntimeDebug', 3 );
|
||||
}
|
||||
else
|
||||
{
|
||||
// /MT and /MTd
|
||||
$tpl->assign( 'projRuntimeRelease', 0 );
|
||||
$tpl->assign( 'projRuntimeDebug', 1 );
|
||||
}
|
||||
|
||||
if (!$this->commandDebug && ( $this->isSharedLib() || $this->isSharedApp() ))
|
||||
{
|
||||
|
||||
$command = "$(TargetDir)\\".$this->outputName;
|
||||
$tpl->assign( 'commandDebug' , $command."_DEBUG.exe");
|
||||
$tpl->assign( 'commandRelease' , $command.".exe");
|
||||
$tpl->assign( 'commandOptimized' , $command."_OPTIMIZEDDEBUG.exe");
|
||||
}
|
||||
else
|
||||
{
|
||||
$tpl->assign_by_ref( 'commandDebug' , $this->commandDebug);
|
||||
$tpl->assign_by_ref( 'commandRelease' , $this->commandRelease);
|
||||
$tpl->assign_by_ref( 'commandOptimized' , $this->commandOptimized);
|
||||
}
|
||||
|
||||
$tpl->assign_by_ref( 'argsDebug' , $this->argsDebug);
|
||||
$tpl->assign_by_ref( 'argsRelease' , $this->argsRelease);
|
||||
$tpl->assign_by_ref( 'argsOptimized' , $this->argsOptimized);
|
||||
|
||||
$ptypes = array();
|
||||
$projectDepends = array();
|
||||
|
||||
foreach ($this->dependencies as $pname)
|
||||
{
|
||||
$p = Generator::lookupProjectByName( $pname );
|
||||
$projectDepends[$pname] = $p;
|
||||
|
||||
if ( $p )
|
||||
$ptypes[$pname] = $p->isSharedLib() || $p->isSafari();
|
||||
}
|
||||
|
||||
$tpl->assign_by_ref( 'projTypes', $ptypes );
|
||||
$tpl->assign_by_ref( 'projectDepends', $projectDepends );
|
||||
|
||||
// Assign some handy paths for the template to reference
|
||||
$tpl->assign( 'projectOffset', $output->project_rel_path );
|
||||
|
||||
if ( Generator::$absPath )
|
||||
$tpl->assign( 'srcDir', Generator::$absPath . "/". str_replace("../", "", getAppEngineSrcDir()) );
|
||||
else
|
||||
$tpl->assign( 'srcDir', $output->project_rel_path . getAppEngineSrcDir() );
|
||||
|
||||
if ( Generator::$absPath )
|
||||
$tpl->assign( 'libDir', Generator::$absPath . "/". str_replace("../", "", getAppLibSrcDir()) );
|
||||
else
|
||||
$tpl->assign( 'libDir', $output->project_rel_path . getAppLibSrcDir() );
|
||||
|
||||
if ( Generator::$absPath )
|
||||
$tpl->assign( 'binDir', Generator::$absPath . "/". str_replace("../", "", getAppEngineBinDir()) );
|
||||
else
|
||||
$tpl->assign( 'binDir', $output->project_rel_path . getAppEngineBinDir() );
|
||||
|
||||
$tpl->assign( 'uniformOutputFile', $this->uniformOutputFile);
|
||||
}
|
||||
|
||||
|
||||
private function conditionDirectories( $output, &$projectFiles )
|
||||
{
|
||||
foreach ($this->includes as &$include)
|
||||
{
|
||||
if ( !FileUtil::isAbsolutePath( $include ) )
|
||||
$include = $output->project_rel_path . $include;
|
||||
}
|
||||
|
||||
foreach ($this->lib_dirs as &$libDirs)
|
||||
{
|
||||
if ( !FileUtil::isAbsolutePath( $libDirs ) )
|
||||
$libDirs = $output->project_rel_path . $libDirs;
|
||||
}
|
||||
|
||||
if ( Generator::$absPath )
|
||||
{
|
||||
foreach ($this->includes as &$include)
|
||||
{
|
||||
if ( stristr($include, getEngineSrcDir()) || stristr($include, getLibSrcDir()) )
|
||||
$include = Generator::$absPath . "/". str_replace("../", "", $include);
|
||||
}
|
||||
|
||||
foreach ($this->lib_dirs as &$libDirs)
|
||||
{
|
||||
if ( stristr($libDirs, getEngineSrcDir()) || stristr($libDirs, getLibSrcDir()) )
|
||||
$libDirs = Generator::$absPath . "/". str_replace("../", "", $libDirs);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function generate( $tpl, $platform, $base_dir )
|
||||
{
|
||||
// Alright, for each project scan and generate the file list.
|
||||
$projectFiles = array ();
|
||||
$rootPhpBuildDir = getcwd();
|
||||
|
||||
// Iterate over this project's outputs.
|
||||
foreach( $this->outputs as $outputName => $output )
|
||||
{
|
||||
$saved_includes = $this->includes;
|
||||
$saved_lib_dirs = $this->lib_dirs;
|
||||
|
||||
//print_r( $output );
|
||||
|
||||
// Supported platform?
|
||||
if( !$output->supportsPlatform( $platform ) )
|
||||
{
|
||||
//echo( " # Skipping output: '$outputName'.\n" );
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
// Get to the right working directory (first go back to root, then to relative)
|
||||
chdir( $base_dir );
|
||||
|
||||
//echo( " - Changing CWD to " . $output->output_dir . "\n" );
|
||||
// echo(" (From: " . getcwd() . ")\n");
|
||||
|
||||
if( !FileUtil::prepareOutputDir( $output->output_dir ) )
|
||||
continue;
|
||||
|
||||
//echo( " - Scanning directory for output '.$outputName.'...\n" );
|
||||
|
||||
if( !$this->generateFileList( $projectFiles, $outputName, $output ) )
|
||||
{
|
||||
echo( "File list generation failed. Giving up on this project.\n" );
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
// Do any special work on the include/lib directories that we need
|
||||
$this->conditionDirectories( $output, $projectFiles[ $this->name ] );
|
||||
|
||||
$this->projectFileExt = $output->output_ext;
|
||||
|
||||
if ( $this->isCSProject() )
|
||||
$this->projectFileExt = ".csproj"; // always csproj C# project under VS/MonoDevelop
|
||||
|
||||
$outfile = $output->project_dir . $this->name . $this->projectFileExt;
|
||||
|
||||
echo( " o Writing project file " . $outfile . "\n" );
|
||||
|
||||
$this->setTemplateParams( $tpl, $output, $projectFiles[ $this->name ] );
|
||||
// To put a bandaid on the tools/player output dir problem
|
||||
// CodeReview: This should be in the template. -- BJG, 3/13/2007
|
||||
// Moved into templates -- neo
|
||||
|
||||
// Write file
|
||||
$outdir = dirname( $outfile );
|
||||
|
||||
if( !file_exists( $outdir ) )
|
||||
mkdir_r( $outdir, 0777 );
|
||||
|
||||
if( $hdl = fopen( $outfile, 'w' ) )
|
||||
{
|
||||
if ($this->isApp())
|
||||
$template = $output->template_app;
|
||||
else if ($this->isLib())
|
||||
$template = $output->template_lib;
|
||||
else if ($this->isSharedLib())
|
||||
$template = $output->template_shared_lib;
|
||||
else if ($this->isSharedApp())
|
||||
$template = $output->template_shared_app;
|
||||
else if ($this->isActiveX())
|
||||
$template = $output->template_activex;
|
||||
else if ($this->isSafari())
|
||||
$template = $output->template_activex; //rename template?
|
||||
else if ($this->isCSProject())
|
||||
$template = $output->template_csproj;
|
||||
|
||||
fputs( $hdl, $tpl->fetch( $template ) );
|
||||
|
||||
fclose( $hdl );
|
||||
}
|
||||
else
|
||||
trigger_error( "Could not write output file: " . $output->outputFile, E_USER_ERROR );
|
||||
|
||||
if ($output->template_user)
|
||||
{
|
||||
|
||||
$outfile = $output->project_dir . $this->name . $this->projectFileExt .'.'.getenv("COMPUTERNAME").'.'.getenv("USERNAME").'.user';
|
||||
|
||||
if( !file_exists( $outfile ) )
|
||||
{
|
||||
if( $hdl = fopen( $outfile, 'w' ) )
|
||||
{
|
||||
$template = $output->template_user;
|
||||
fputs( $hdl, $tpl->fetch( $template ) );
|
||||
fclose( $hdl );
|
||||
}
|
||||
else
|
||||
trigger_error( "Could not write output file: " . $outfile, E_USER_ERROR );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Build the .filters file used by VS2010.
|
||||
if ( $output->template_filter )
|
||||
{
|
||||
$filterData = new FilterData();
|
||||
array_walk( $projectFiles[ $this->name ], array($filterData, 'callback'), '' );
|
||||
|
||||
$tpl->assign_by_ref('Folders', $filterData->folders);
|
||||
$tpl->assign_by_ref('SrcFiles', $filterData->srcFiles);
|
||||
$tpl->assign_by_ref('IncFiles', $filterData->incFiles);
|
||||
$tpl->assign_by_ref('OtherFiles', $filterData->otherFiles);
|
||||
$tpl->register_function( 'gen_uuid', 'gen_uuid' );
|
||||
|
||||
$outfile = $output->project_dir . $this->name . $this->projectFileExt . '.filters';
|
||||
if ( $hdl = fopen( $outfile, 'w' ) )
|
||||
{
|
||||
fputs( $hdl, $tpl->fetch( $output->template_filter ) );
|
||||
fclose( $hdl );
|
||||
}
|
||||
}
|
||||
|
||||
$this->includes = $saved_includes;
|
||||
$this->lib_dirs = $saved_lib_dirs;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class FilterData
|
||||
{
|
||||
public $folders = array();
|
||||
public $srcFiles = array();
|
||||
public $incFiles = array();
|
||||
public $otherFiles = array();
|
||||
|
||||
public function callback( $value, $key, $dir )
|
||||
{
|
||||
if ( is_array( $value ) )
|
||||
{
|
||||
if ( $dir != '' )
|
||||
$dirpath = $dir . '\\' . $key;
|
||||
else
|
||||
$dirpath = $key;
|
||||
|
||||
array_push( $this->folders, $dirpath );
|
||||
array_walk( $value, array($this, 'callback'), $dirpath );
|
||||
return;
|
||||
}
|
||||
|
||||
$path = str_replace( '/', '\\', $value->path );
|
||||
|
||||
$ext = strrchr( $path, '.' );
|
||||
if ( $ext == FALSE )
|
||||
return;
|
||||
|
||||
if ( strcasecmp( $ext, '.c' ) == 0 ||
|
||||
strcasecmp( $ext, '.cpp' ) == 0 ||
|
||||
strcasecmp( $ext, '.cc' ) == 0 )
|
||||
$this->srcFiles[$path] = $dir;
|
||||
|
||||
else if ( strcasecmp( $ext, '.h' ) == 0 ||
|
||||
strcasecmp( $ext, '.hpp' ) == 0 ||
|
||||
strcasecmp( $ext, '.inl' ) == 0 )
|
||||
$this->incFiles[$path] = $dir;
|
||||
|
||||
else
|
||||
$this->otherFiles[$path] = $dir;
|
||||
|
||||
}
|
||||
|
||||
} // class FilterData
|
||||
|
||||
?>
|
||||
111
Tools/projectGenerator/classes/SafariWebPlugin.php
Normal file
111
Tools/projectGenerator/classes/SafariWebPlugin.php
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class SafariWebPlugin
|
||||
{
|
||||
var $FOLDER = "";
|
||||
var $GAMEFOLDER = "";
|
||||
var $PLUGINNAME = "";
|
||||
var $MIMETYPE = "";
|
||||
var $DESCRIPTION = "";
|
||||
var $IDENTIFIER = "";
|
||||
var $BUNDLE = "";
|
||||
var $VERSION = "";
|
||||
|
||||
function SafariWebPlugin()
|
||||
{
|
||||
$rootPhpBuildDir = getcwd();
|
||||
|
||||
$this->FOLDER = $rootPhpBuildDir."/web/source/npplugin/mac/";
|
||||
$this->GAMEFOLDER = $rootPhpBuildDir."/game/";
|
||||
|
||||
$this->PLUGINNAME = WebDeploymentOSX::$safariPluginName;
|
||||
$this->MIMETYPE = WebDeploymentOSX::$mimeType;
|
||||
|
||||
$this->VERSION = WebDeploymentOSX::$version;
|
||||
|
||||
$this->DESCRIPTION = WebDeploymentOSX::$description." ".$this->VERSION ;
|
||||
|
||||
$this->BUNDLE = WebDeploymentOSX::$safariPluginName;
|
||||
$this->IDENTIFIER = WebDeploymentOSX::$identifier;
|
||||
}
|
||||
|
||||
function process($project)
|
||||
{
|
||||
|
||||
$this->processTemplates();
|
||||
|
||||
|
||||
}
|
||||
|
||||
function readTemplate($filename)
|
||||
{
|
||||
$filename = realpath( dirname( $_SERVER[ 'PHP_SELF' ] ) ). "/templates/web/".$filename;
|
||||
$fh = fopen($filename, 'r');
|
||||
$data = fread($fh, filesize($filename));
|
||||
fclose($fh);
|
||||
return $data;
|
||||
}
|
||||
|
||||
function writeFile($filename, $data)
|
||||
{
|
||||
$filename = $this->FOLDER . $filename;
|
||||
|
||||
echo($filename);
|
||||
|
||||
$fh = fopen($filename, 'w');
|
||||
fwrite($fh, $data);
|
||||
fclose($fh);
|
||||
}
|
||||
|
||||
function writeGameFile($filename, $data)
|
||||
{
|
||||
$filename = $this->GAMEFOLDER . $filename;
|
||||
$fh = fopen($filename, 'w');
|
||||
fwrite($fh, $data);
|
||||
fclose($fh);
|
||||
}
|
||||
|
||||
function processTemplates()
|
||||
{
|
||||
|
||||
$data = $this->readTemplate("safari_Info_plist.tpl");
|
||||
$data = str_replace("__CFBundleExecutable__", $this->BUNDLE, $data);
|
||||
$data = str_replace("__CFBundleIdentifier__", $this->IDENTIFIER, $data);
|
||||
$data = str_replace("__WebPluginDescription__", $this->DESCRIPTION, $data);
|
||||
$data = str_replace("__WebPluginMIMEType__", "application/".$this->MIMETYPE, $data);
|
||||
$data = str_replace("__WebPluginName__", $this->PLUGINNAME, $data);
|
||||
|
||||
$data = str_replace("__GameName__", getGameProjectName(), $data);
|
||||
|
||||
//TODO: handled by Toolbox
|
||||
$data = str_replace("__GameInstallPath__", $this->GAMEFOLDER, $data);
|
||||
|
||||
$this->writeFile('Info.plist', $data);
|
||||
|
||||
WebPlugin::processNPPlugin($this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
159
Tools/projectGenerator/classes/Solution.php
Normal file
159
Tools/projectGenerator/classes/Solution.php
Normal file
|
|
@ -0,0 +1,159 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
//
|
||||
// Solution info container
|
||||
//
|
||||
class Solution
|
||||
{
|
||||
public $name;
|
||||
public $guid;
|
||||
public $project_refs = array();
|
||||
public $project_extRefs = array();
|
||||
public $outputs = array();
|
||||
|
||||
public function Solution( $name, $guid, $outputs = null )
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->guid = $guid;
|
||||
|
||||
$this->setOutputs( $outputs );
|
||||
}
|
||||
|
||||
public function addProjectRef( $pname )
|
||||
{
|
||||
array_push( $this->project_refs, $pname );
|
||||
}
|
||||
|
||||
public function addSolutionProjectRefExt( $pname, $ppath, $pguid )
|
||||
{
|
||||
$v = array();
|
||||
$v[0] = $ppath;
|
||||
$v[1] = $pguid;
|
||||
// This is the project GUID for a C# project
|
||||
// TODO: Add support for C++ projects if need to add them
|
||||
// as an external project, to date this hasn't been necessary
|
||||
$v[2] = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}";
|
||||
$this->project_extRefs[$pname] = $v;
|
||||
}
|
||||
|
||||
public function setOutputs( $outputs )
|
||||
{
|
||||
if( isset( $outputs ) )
|
||||
$this->outputs = array_merge( $this->outputs, $outputs );
|
||||
}
|
||||
|
||||
public function generate( $tpl, $platform, $root_dir )
|
||||
{
|
||||
// Project container for templates
|
||||
$projects = array();
|
||||
$refs = array();
|
||||
|
||||
// make sure that startup project is the first in the solution
|
||||
|
||||
if (getGameProjectName())
|
||||
array_push( $refs, getGameProjectName() );
|
||||
|
||||
foreach( $this->project_refs as $pname )
|
||||
{
|
||||
if (getGameProjectName() && $pname == getGameProjectName())
|
||||
continue;
|
||||
|
||||
array_push( $refs, $pname );
|
||||
}
|
||||
|
||||
// Look up each project ref and add its info to the list
|
||||
foreach( $refs as $pname )
|
||||
{
|
||||
$project = Generator::lookupProjectByName( $pname );
|
||||
|
||||
if( isset( $project ) )
|
||||
{
|
||||
echo( " - project ref: " . $pname . " = " . $project->guid . "\n" );
|
||||
|
||||
array_push( $projects, $project );
|
||||
|
||||
// Let the project update any dependencies
|
||||
$project->validateDependencies();
|
||||
}
|
||||
else
|
||||
trigger_error( "Solution::generate() - project ref not found: " . $pname . "\n", E_USER_ERROR );
|
||||
}
|
||||
|
||||
// No use going forward if there were no projects for this solution is there?
|
||||
// (Would we ever want to generate an empty solution at all?)
|
||||
if( count( $projects ) == 0 )
|
||||
{
|
||||
echo( "Solution::generate() - no project refs found for solution: " . $this->name . "\n" );
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
//
|
||||
//sort( $projects );
|
||||
|
||||
// Set smarty params that dont change during loop once here
|
||||
$tpl->assign_by_ref( "solution_guid", $this->guid );
|
||||
$tpl->assign_by_ref( "projects", $projects );
|
||||
$tpl->assign_by_ref( "projectExtRefs", $this->project_extRefs );
|
||||
|
||||
// Generate a solution file for all outputs for this solution
|
||||
foreach( $this->outputs as $output )
|
||||
{
|
||||
// Supported platform?
|
||||
if( !$output->supportsPlatform( $platform ) )
|
||||
{
|
||||
//echo( " # Skipping output: '$outputName'.\n" );
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
// Reset to base dir
|
||||
chdir( $root_dir );
|
||||
|
||||
// Then offset
|
||||
if( !FileUtil::prepareOutputDir( $output->output_dir ) || !$output->template_sln )
|
||||
continue;
|
||||
|
||||
$outfile = $this->name . $output->solution_ext;
|
||||
|
||||
echo( " - Writing solution file: " . $output->output_dir . "/" . $outfile );
|
||||
|
||||
// Project filenames are <projectname>.<outputext> where ext is set per output.
|
||||
// The template builds each project output using the project name and this ext.
|
||||
$tpl->assign_by_ref( "project_ext", $output->output_ext );
|
||||
|
||||
if( $f = fopen( $outfile, 'w' ) )
|
||||
{
|
||||
fputs( $f, $tpl->fetch( $output->template_sln ) );
|
||||
|
||||
fclose( $f );
|
||||
|
||||
echo( " - success " . "\n" );
|
||||
}
|
||||
else
|
||||
trigger_error( "\nCould not write output file: " . $outfile, E_USER_ERROR );
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
267
Tools/projectGenerator/classes/Torque3D.php
Normal file
267
Tools/projectGenerator/classes/Torque3D.php
Normal file
|
|
@ -0,0 +1,267 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
// This class wraps up some project generator specific stuff for the Torque 3D project itself
|
||||
// simplifying the per project setup, while still allowing the engine to have modules plugged in
|
||||
|
||||
class Torque3D
|
||||
{
|
||||
static $sharedConfig = true;
|
||||
static $projectName = "";
|
||||
|
||||
static function includeDefaultLibs()
|
||||
{
|
||||
// Libs
|
||||
includeLib( 'mng' );
|
||||
includeLib( 'png' );
|
||||
includeLib( 'ungif' );
|
||||
includeLib( 'zlib' );
|
||||
includeLib( 'jpeg' );
|
||||
includeLib( 'tinyxml' );
|
||||
includeLib( 'opcode' );
|
||||
includeLib( 'squish' );
|
||||
includeLib( 'collada_dom' );
|
||||
includeLib( 'pcre' );
|
||||
includeLib( 'convexDecomp' );
|
||||
|
||||
// Use FMOD on consoles
|
||||
if ( Generator::$platform != "360" && Generator::$platform != "ps3" )
|
||||
{
|
||||
includeLib( 'libvorbis' );
|
||||
includeLib( 'libogg' );
|
||||
includeLib( 'libtheora' );
|
||||
}
|
||||
}
|
||||
|
||||
static function beginConfig( $platform, $projectName )
|
||||
{
|
||||
|
||||
setPlatform( $platform );
|
||||
|
||||
beginProject( $projectName, self::$sharedConfig );
|
||||
|
||||
self::includeDefaultLibs();
|
||||
|
||||
$ext = "DLL";
|
||||
if ( Generator::$platform == "mac" )
|
||||
$ext = "Bundle";
|
||||
|
||||
|
||||
//some platforms will not want a shared config
|
||||
if ( Generator::$platform == "360" || Generator::$platform == "ps3" )
|
||||
self::$sharedConfig = false;
|
||||
|
||||
//begin either a shared lib config, or a static app config
|
||||
if ( self::$sharedConfig )
|
||||
beginSharedLibConfig( getGameProjectName().' '.$ext, '{C0FCDFF9-E125-412E-87BC-2D89DB971CAB}', 'game', getGameProjectName() );
|
||||
else
|
||||
beginAppConfig( getGameProjectName(), '{C0FCDFF9-E125-412E-87BC-2D89DB971CAB}', 'game', getGameProjectName() );
|
||||
|
||||
/// Prefs
|
||||
addProjectDefine( 'TORQUE_SHADERGEN' );
|
||||
addProjectDefine( 'TORQUE_UNICODE' );
|
||||
|
||||
if ( self::$sharedConfig )
|
||||
addProjectDefine( 'TORQUE_SHARED' );
|
||||
|
||||
/// For OPCODE
|
||||
addProjectDefine( 'BAN_OPCODE_AUTOLINK' );
|
||||
addProjectDefine( 'ICE_NO_DLL' );
|
||||
addProjectDefine( 'TORQUE_OPCODE' );
|
||||
|
||||
// For libTomCrypt
|
||||
addProjectDefine( 'LTC_NO_PROTOTYPES' );
|
||||
|
||||
// Additional includes
|
||||
addIncludePath( "../../game/shaders" );
|
||||
|
||||
addLibIncludePath( "lmng" );
|
||||
addLibIncludePath( "lpng" );
|
||||
addLibIncludePath( "ljpeg" );
|
||||
addLibIncludePath( "lungif" );
|
||||
addLibIncludePath( "zlib" );
|
||||
addLibIncludePath( "tinyxml" );
|
||||
addLibIncludePath( "opcode" );
|
||||
addLibIncludePath( "squish" );
|
||||
addLibIncludePath( 'convexDecomp' );
|
||||
|
||||
if ( Generator::$platform != "360" && Generator::$platform != "ps3" )
|
||||
{
|
||||
addLibIncludePath( "libvorbis/include" );
|
||||
addLibIncludePath( "libogg/include" );
|
||||
addLibIncludePath( "libtheora/include" );
|
||||
}
|
||||
|
||||
// Modules
|
||||
includeModule( 'core' );
|
||||
includeModule( 'dsound' );
|
||||
//includeModule( 'fmod'); // FMOD support removed until made as a 3rd party library
|
||||
includeModule( 'T3D' );
|
||||
includeModule( 'advancedLighting' );
|
||||
includeModule( 'basicLighting' );
|
||||
includeModule( 'collada' );
|
||||
|
||||
if ( Generator::$platform != "360" && Generator::$platform != "ps3" )
|
||||
{
|
||||
includeModule( 'vorbis' );
|
||||
includeModule( 'theora' );
|
||||
}
|
||||
|
||||
if(Generator::$platform == "mac" || Generator::$platform == "win32")
|
||||
includeModule( 'openal' );
|
||||
|
||||
|
||||
// Dependencies
|
||||
|
||||
addProjectDependency( 'lmng' );
|
||||
addProjectDependency( 'lpng' );
|
||||
addProjectDependency( 'lungif' );
|
||||
addProjectDependency( 'ljpeg' );
|
||||
addProjectDependency( 'zlib' );
|
||||
addProjectDependency( 'tinyxml' );
|
||||
addProjectDependency( 'opcode' );
|
||||
addProjectDependency( 'squish' );
|
||||
addProjectDependency( 'collada_dom' );
|
||||
addProjectDependency( 'pcre' );
|
||||
addProjectDependency( 'convexDecomp' );
|
||||
|
||||
if ( Generator::$platform != "360" && Generator::$platform != "ps3" )
|
||||
{
|
||||
addProjectDependency( 'libvorbis' );
|
||||
addProjectDependency( 'libogg' );
|
||||
addProjectDependency( 'libtheora' );
|
||||
}
|
||||
|
||||
if ( Generator::$platform == "mac" )
|
||||
{
|
||||
addProjectDefine( '__MACOSX__' );
|
||||
addProjectDefine( 'LTM_DESC' );
|
||||
}
|
||||
|
||||
if (Generator::$platform == "win32")
|
||||
{
|
||||
setProjectModuleDefinitionFile('../../' . getLibSrcDir() . 'Torque3D/msvc/torque3d.def');
|
||||
|
||||
addProjectDefine( 'UNICODE' );
|
||||
addProjectDefine( 'INITGUID' );
|
||||
addProjectDefine( '_CRT_SECURE_NO_DEPRECATE' );
|
||||
|
||||
|
||||
addProjectLibInput('COMCTL32.LIB');
|
||||
addProjectLibInput('COMDLG32.LIB');
|
||||
addProjectLibInput('USER32.LIB');
|
||||
addProjectLibInput('ADVAPI32.LIB');
|
||||
addProjectLibInput('GDI32.LIB');
|
||||
addProjectLibInput('WINMM.LIB');
|
||||
addProjectLibInput('WSOCK32.LIB');
|
||||
addProjectLibInput('vfw32.lib');
|
||||
addProjectLibInput('Imm32.lib');
|
||||
addProjectLibInput('d3d9.lib');
|
||||
addProjectLibInput('d3dx9.lib');
|
||||
addProjectLibInput('DxErr.lib');
|
||||
addProjectLibInput('ole32.lib');
|
||||
addProjectLibInput('shell32.lib');
|
||||
addProjectLibInput('oleaut32.lib');
|
||||
addProjectLibInput('version.lib');
|
||||
}
|
||||
|
||||
// Include project specific sources in the project/buildFiles/config/projectCode.conf
|
||||
$projectCode = realpath($argv[1])."/buildFiles/config/projectCode.conf";
|
||||
echo( "\n - Loading project code configuration from ".$projectCode."\n");
|
||||
include $projectCode;
|
||||
}
|
||||
|
||||
static function endConfig()
|
||||
{
|
||||
//end shared/static config
|
||||
if ( self::$sharedConfig )
|
||||
endSharedLibConfig();
|
||||
else
|
||||
endAppConfig();
|
||||
|
||||
//add the shared application only if this is a shared config
|
||||
if ( self::$sharedConfig )
|
||||
{
|
||||
/////// Application Config
|
||||
beginSharedAppConfig( getGameProjectName(), '{CDECDFF9-E125-523F-87BC-2D89DB971CAB}' );
|
||||
|
||||
addProjectDefine( 'TORQUE_SHARED' );
|
||||
|
||||
addEngineSrcDir( 'main' );
|
||||
|
||||
if (Generator::$platform == "win32")
|
||||
{
|
||||
addProjectDefine( 'WIN32' );
|
||||
addProjectDependency( getGameProjectName() . ' DLL' );
|
||||
}
|
||||
|
||||
if (Generator::$platform == "mac")
|
||||
{
|
||||
addProjectDefine( '__MACOSX__' );
|
||||
addProjectDependency( getGameProjectName() . ' Bundle' );
|
||||
addProjectDependency( getGameProjectName() . ' Plugin' );
|
||||
}
|
||||
|
||||
endSharedAppConfig();
|
||||
}
|
||||
|
||||
// Add solution references for Visual Studio projects
|
||||
if (Generator::$platform == "win32" || Generator::$platform == "360" || Generator::$platform == "ps3")
|
||||
{
|
||||
if ( !self::$sharedConfig )
|
||||
beginSolutionConfig( getGameProjectName(), '{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}' );
|
||||
|
||||
addSolutionProjectRef( getGameProjectName() );
|
||||
if ( self::$sharedConfig )
|
||||
addSolutionProjectRef( getGameProjectName() . ' DLL' );
|
||||
|
||||
addSolutionProjectRef( 'collada_dom' );
|
||||
addSolutionProjectRef( 'ljpeg' );
|
||||
addSolutionProjectRef( 'lmng' );
|
||||
addSolutionProjectRef( 'lpng' );
|
||||
addSolutionProjectRef( 'lungif' );
|
||||
addSolutionProjectRef( 'opcode' );
|
||||
addSolutionProjectRef( 'pcre' );
|
||||
addSolutionProjectRef( 'squish' );
|
||||
addSolutionProjectRef( 'tinyxml' );
|
||||
addSolutionProjectRef( 'zlib' );
|
||||
addSolutionProjectRef( 'convexDecomp' );
|
||||
|
||||
if (Generator::$platform == "win32")
|
||||
{
|
||||
addSolutionProjectRef( 'libogg' );
|
||||
addSolutionProjectRef( 'libvorbis' );
|
||||
addSolutionProjectRef( 'libtheora' );
|
||||
}
|
||||
|
||||
if ( !self::$sharedConfig )
|
||||
endSolutionConfig();
|
||||
}
|
||||
|
||||
endProject(self::$sharedConfig);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
85
Tools/projectGenerator/classes/WebPlugin.php
Normal file
85
Tools/projectGenerator/classes/WebPlugin.php
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
// settings/logic shared by plugins
|
||||
|
||||
class WebPlugin
|
||||
{
|
||||
static $SAMPLE_HTML = "";
|
||||
static $GAME_FOLDER = "";
|
||||
|
||||
static function readTemplate()
|
||||
{
|
||||
$filename = realpath( dirname( $_SERVER[ 'PHP_SELF' ] ) ). "/templates/web/sample_html.tpl";
|
||||
$fh = fopen($filename, 'r');
|
||||
$data = fread($fh, filesize($filename));
|
||||
fclose($fh);
|
||||
|
||||
if (!$data)
|
||||
trigger_error( "WebPlugin::readTemplate() - cannot read HTML template!", E_USER_ERROR );
|
||||
|
||||
self::$SAMPLE_HTML = $data;
|
||||
}
|
||||
|
||||
static function processNPPlugin($np)
|
||||
{
|
||||
|
||||
if (!self::$SAMPLE_HTML)
|
||||
self::readTemplate();
|
||||
|
||||
$rootPhpBuildDir = getcwd();
|
||||
self::$GAME_FOLDER = $rootPhpBuildDir."/game/";
|
||||
|
||||
self::$SAMPLE_HTML = str_replace("__MIMETYPE__", $np->MIMETYPE, self::$SAMPLE_HTML);
|
||||
|
||||
}
|
||||
|
||||
static function processActiveXPlugin($ax)
|
||||
{
|
||||
if (!self::$SAMPLE_HTML)
|
||||
self::readTemplate();
|
||||
|
||||
$rootPhpBuildDir = getcwd();
|
||||
self::$GAME_FOLDER = $rootPhpBuildDir."/game/";
|
||||
|
||||
$projID = $ax->WEBGAME_PLUGINNAME.'.'.$ax->WEBGAME_CTRLNAME.'.'.'1';
|
||||
|
||||
self::$SAMPLE_HTML = str_replace("__PROJID__", $projID, self::$SAMPLE_HTML);
|
||||
self::$SAMPLE_HTML = str_replace("__CLSID__", $ax->WEBGAMELIB_UUID, self::$SAMPLE_HTML);
|
||||
|
||||
}
|
||||
|
||||
static function writeSampleHtml()
|
||||
{
|
||||
// no plugins defined
|
||||
if (!self::$SAMPLE_HTML)
|
||||
return;
|
||||
|
||||
$filename = self::$GAME_FOLDER . "web/sample.html";
|
||||
$fh = fopen($filename, 'w');
|
||||
fwrite($fh, self::$SAMPLE_HTML);
|
||||
fclose($fh);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
453
Tools/projectGenerator/classes/WindowsRegistry.php
Normal file
453
Tools/projectGenerator/classes/WindowsRegistry.php
Normal file
|
|
@ -0,0 +1,453 @@
|
|||
<?php
|
||||
/*
|
||||
* b3rtWindowsRegistry 1.0
|
||||
* ===========
|
||||
* Class for reading from and writing to the Windows registry
|
||||
*
|
||||
* Copyright (c) 2008, H. Poort
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * The name the copyright holder may not be used to endorse or promote
|
||||
* products derived from this software without specific prior written
|
||||
* permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY H. Poort "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL H. Poort BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
class WindowsRegistry
|
||||
{
|
||||
private $RegistryObject;
|
||||
|
||||
const HKEY_CLASSES_ROOT = 0x80000000;
|
||||
const HKEY_CURRENT_USER = 0x80000001;
|
||||
const HKEY_LOCAL_MACHINE = 0x80000002;
|
||||
const HKEY_USERS = 0x80000003;
|
||||
const HKEY_CURRENT_CONFIG = 0x80000005;
|
||||
|
||||
const REG_NONE = 0;
|
||||
const REG_SZ = 1;
|
||||
const REG_EXPAND_SZ = 2;
|
||||
const REG_BINARY = 3;
|
||||
const REG_DWORD = 4;
|
||||
const REG_MULTI_SZ = 7;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
/*$this->WbemLocator = new COM('WbemScripting.SWbemLocator');
|
||||
$this->WbemServices = $this->WbemLocator->ConnectServer('.', '/root/default');
|
||||
$this->WbemServices->Security_->ImpersonationLevel = 0x3;
|
||||
$this->RegObject = $this->WbemServices->Get('StdRegProv');*/
|
||||
|
||||
// Get the WMI StdRegProv class
|
||||
try
|
||||
{
|
||||
$this->RegistryObject = new COM('WINMGMTS:{impersonationLevel=impersonate}!//./root/default:StdRegProv');
|
||||
}
|
||||
catch (Exception $ex)
|
||||
{
|
||||
$this->RegistryObject = NULL;
|
||||
throw new Exception('Could not get a connection to the registry.');
|
||||
}
|
||||
}
|
||||
|
||||
public function __destruct()
|
||||
{
|
||||
unset($this->RegistryObject);
|
||||
}
|
||||
|
||||
public function ReadValue($keyPath, $valueName, $asString = FALSE)
|
||||
{
|
||||
$hKeyId = 0;
|
||||
$subKey = '';
|
||||
if (!$this->SplitKeyPath($keyPath, $hKeyId, $subKey))
|
||||
return NULL;
|
||||
|
||||
$valueType = $this->GetValueType($hKeyId, $subKey, $valueName);
|
||||
if (-1 == $valueType)
|
||||
return NULL;
|
||||
|
||||
switch ($valueType)
|
||||
{
|
||||
case self::REG_NONE: // No support for REG_NONE
|
||||
return NULL;
|
||||
case self::REG_SZ:
|
||||
return $this->GetStringValue($hKeyId, $subKey, $valueName);
|
||||
case self::REG_EXPAND_SZ:
|
||||
return $this->GetExpandedStringValue($hKeyId, $subKey, $valueName);
|
||||
case self::REG_BINARY:
|
||||
return $this->GetBinaryValue($hKeyId, $subKey, $valueName, $asString);
|
||||
case self::REG_DWORD:
|
||||
return $this->GetDWORDValue($hKeyId, $subKey, $valueName, $asString);
|
||||
case self::REG_MULTI_SZ:
|
||||
return $this->GetMultiStringValue($hKeyId, $subKey, $valueName, $asString);
|
||||
}
|
||||
}
|
||||
|
||||
public function WriteValue($keyPath, $valueName, $valueContents, $forceType = -1)
|
||||
{
|
||||
$hKeyId = 0;
|
||||
$subKey = '';
|
||||
if (!$this->SplitKeyPath($keyPath, $hKeyId, $subKey))
|
||||
return FALSE;
|
||||
|
||||
if (!$this->CreateKey($keyPath))
|
||||
return FALSE;
|
||||
|
||||
if (-1 != $forceType)
|
||||
$valueType = $forceType;
|
||||
else
|
||||
$valueType = $this->GetValueType($hKeyId, $subKey, $valueName);
|
||||
|
||||
if (self::REG_NONE == $valueType) // No support for REG_NONE
|
||||
return FALSE;
|
||||
|
||||
if (-1 == $valueType) // valueType unknown
|
||||
{
|
||||
if (is_string($valueContents))
|
||||
$valueType = self::REG_SZ;
|
||||
else if (is_int($valueContents))
|
||||
$valueType = self::REG_DWORD;
|
||||
else if (is_array($valueContents) && count($valueContents))
|
||||
{
|
||||
if (is_string($valueContents[0]))
|
||||
$valueType = self::REG_MULTI_SZ;
|
||||
else if (is_int($valueContents[0]))
|
||||
$valueType = self::REG_BINARY;
|
||||
}
|
||||
}
|
||||
if (-1 == $valueType) // valueType still unknown, leave
|
||||
return FALSE;
|
||||
|
||||
$result = -1;
|
||||
|
||||
if ((self::REG_SZ == $valueType) || (self::REG_EXPAND_SZ == $valueType))
|
||||
{
|
||||
//if (!is_string($valueContents))
|
||||
// $valueContents = strval($valueContents);
|
||||
|
||||
if (self::REG_SZ == $valueType)
|
||||
$result = $this->RegistryObject->SetStringValue($hKeyId, $subKey, $valueName, $valueContents);
|
||||
else
|
||||
$result = $this->RegistryObject->SetExpandedStringValue($hKeyId, $subKey, $valueName, $valueContents);
|
||||
}
|
||||
else if (self::REG_DWORD == $valueType)
|
||||
{
|
||||
//if (!is_int($valueContents))
|
||||
// $valueContents = intval($valueContents);
|
||||
|
||||
$result = $this->RegistryObject->SetDWORDValue($hKeyId, $subKey, $valueName, $valueContents);
|
||||
}
|
||||
else if (self::REG_MULTI_SZ == $valueType)
|
||||
{
|
||||
if (!is_array($valueContents) || !is_string($valueContents[0]))
|
||||
return FALSE;
|
||||
|
||||
$result = $this->RegistryObject->SetMultiStringValue($hKeyId, $subKey, $valueName, $valueContents);
|
||||
}
|
||||
else if (self::REG_BINARY == $valueType)
|
||||
{
|
||||
if (!is_array($valueContents) || !is_int($valueContents[0]))
|
||||
return FALSE;
|
||||
|
||||
$result = $this->RegistryObject->SetBinaryValue($hKeyId, $subKey, $valueName, $valueContents);
|
||||
}
|
||||
|
||||
return (0 == $result);
|
||||
}
|
||||
|
||||
public function DeleteValue($keyPath, $valueName)
|
||||
{
|
||||
$hKeyId = 0;
|
||||
$subKey = '';
|
||||
if (!$this->SplitKeyPath($keyPath, $hKeyId, $subKey))
|
||||
return FALSE;
|
||||
|
||||
return ($this->RegistryObject->DeleteValue($hKeyId, $subKey, $valueName) == 0);
|
||||
}
|
||||
|
||||
public function GetValueNames($keyPath, $includeTypes = FALSE)
|
||||
{
|
||||
$hKeyId = 0;
|
||||
$subKey = '';
|
||||
if (!$this->SplitKeyPath($keyPath, $hKeyId, $subKey))
|
||||
return FALSE;
|
||||
|
||||
$valueList = array();
|
||||
if (!$this->EnumValues($hKeyId, $subKey, $valueList))
|
||||
return NULL;
|
||||
|
||||
if (!$includeTypes)
|
||||
{
|
||||
$valueNames = array();
|
||||
for ($i = 0, $cnt = count($valueList); $i < $cnt; $i++)
|
||||
$valueNames[] = $valueList[$i][0];
|
||||
return $valueNames;
|
||||
}
|
||||
else
|
||||
return $valueList;
|
||||
}
|
||||
|
||||
public function CreateKey($keyPath)
|
||||
{
|
||||
$hKeyId = 0;
|
||||
$subKey = '';
|
||||
if (!$this->SplitKeyPath($keyPath, $hKeyId, $subKey))
|
||||
return FALSE;
|
||||
|
||||
return ($this->RegistryObject->CreateKey($hKeyId, $subKey) == 0);
|
||||
}
|
||||
|
||||
public function DeleteKey($keyPath, $deleteSubkeys = FALSE)
|
||||
{
|
||||
$hKeyId = 0;
|
||||
$subKey = '';
|
||||
if (!$this->SplitKeyPath($keyPath, $hKeyId, $subKey))
|
||||
return FALSE;
|
||||
|
||||
if (!$deleteSubkeys)
|
||||
return ($this->RegistryObject->DeleteKey($hKeyId, $subKey) == 0);
|
||||
else
|
||||
{
|
||||
if (!function_exists('deleteSubKeysRecursive'))
|
||||
{
|
||||
function deleteSubKeysRecursive(&$thisRef, $hKeyId, $subKey)
|
||||
{
|
||||
$mapHkeysToString = array(
|
||||
WindowsRegistry::HKEY_CLASSES_ROOT => 'HKEY_CLASSES_ROOT',
|
||||
WindowsRegistry::HKEY_CURRENT_USER => 'HKEY_CURRENT_USER',
|
||||
WindowsRegistry::HKEY_LOCAL_MACHINE => 'HKEY_LOCAL_MACHINE',
|
||||
WindowsRegistry::HKEY_USERS => 'HKEY_USERS',
|
||||
WindowsRegistry::HKEY_CURRENT_CONFIG => 'HKEY_CURRENT_CONFIG');
|
||||
|
||||
if (!isset($mapHkeysToString[$hKeyId]))
|
||||
return FALSE;
|
||||
|
||||
$subKeys = $thisRef->GetSubKeys($mapHkeysToString[$hKeyId] . '\\' . $subKey);
|
||||
if ($subKeys)
|
||||
{
|
||||
for ($i = 0, $cnt = count($subKeys); $i < $cnt; $i++)
|
||||
{
|
||||
if (!deleteSubKeysRecursive($thisRef, $hKeyId, $subKey . '\\' . $subKeys[$i]))
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
return ($thisRef->DeleteKey($mapHkeysToString[$hKeyId] . '\\' . $subKey));
|
||||
}
|
||||
}
|
||||
|
||||
return deleteSubKeysRecursive($this, $hKeyId, $subKey);
|
||||
}
|
||||
}
|
||||
|
||||
public function GetSubKeys($keyPath)
|
||||
{
|
||||
$hKeyId = 0;
|
||||
$subKey = '';
|
||||
if (!$this->SplitKeyPath($keyPath, $hKeyId, $subKey))
|
||||
return FALSE;
|
||||
|
||||
$keyList = array();
|
||||
if (!$this->EnumKeys($hKeyId, $subKey, $keyList))
|
||||
return NULL;
|
||||
|
||||
return $keyList;
|
||||
}
|
||||
|
||||
public function KeyExists($keyPath)
|
||||
{
|
||||
$hKeyId = 0;
|
||||
$subKey = '';
|
||||
if (!$this->SplitKeyPath($keyPath, $hKeyId, $subKey))
|
||||
return FALSE;
|
||||
|
||||
return ($this->RegistryObject->EnumValues($hKeyId, $subKey, new VARIANT(), new VARIANT()) == 0);
|
||||
}
|
||||
|
||||
// PRIVATE FUNCTIONS
|
||||
// ================================
|
||||
private function SplitKeyPath($keyPath, &$hKeyIdResult, &$subKeyResult)
|
||||
{
|
||||
$hKeyIdResult = 0;
|
||||
$subKeyResult = 'foo';
|
||||
|
||||
$splitPath = explode('\\', $keyPath, 2);
|
||||
|
||||
if (FALSE === $splitPath)
|
||||
return FALSE;
|
||||
else if (count($splitPath) == 1)
|
||||
$splitPath[1] = '';
|
||||
|
||||
$subKeyResult = $splitPath[1];
|
||||
|
||||
switch ($splitPath[0])
|
||||
{
|
||||
case 'HKEY_CLASSES_ROOT':
|
||||
$hKeyIdResult = self::HKEY_CLASSES_ROOT;
|
||||
break;
|
||||
case 'HKEY_CURRENT_USER':
|
||||
$hKeyIdResult = self::HKEY_CURRENT_USER;
|
||||
break;
|
||||
case 'HKEY_LOCAL_MACHINE':
|
||||
$hKeyIdResult = self::HKEY_LOCAL_MACHINE;
|
||||
break;
|
||||
case 'HKEY_USERS':
|
||||
$hKeyIdResult = self::HKEY_USERS;
|
||||
break;
|
||||
case 'HKEY_CURRENT_CONFIG':
|
||||
$hKeyIdResult = self::HKEY_CURRENT_CONFIG;
|
||||
break;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
private function EnumKeys($hKeyId, $subKey, &$keyList)
|
||||
{
|
||||
$keyNames = new VARIANT();
|
||||
if ($this->RegistryObject->EnumKey($hKeyId, $subKey, $keyNames) != 0)
|
||||
return FALSE;
|
||||
|
||||
$keyList = array();
|
||||
|
||||
if (variant_get_type($keyNames) == (VT_VARIANT | VT_ARRAY))
|
||||
{
|
||||
for ($i = 0, $cnt = count($keyNames); $i < $cnt; $i++)
|
||||
$keyList[] = strval($keyNames[$i]);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
private function EnumValues($hKeyId, $subKey, &$valueList)
|
||||
{
|
||||
$valueNames = new VARIANT();
|
||||
$valueTypes = new VARIANT();
|
||||
|
||||
if ($this->RegistryObject->EnumValues($hKeyId, $subKey, $valueNames, $valueTypes) != 0)
|
||||
return FALSE;
|
||||
|
||||
$valueList = array();
|
||||
|
||||
if (variant_get_type($valueNames) == (VT_VARIANT | VT_ARRAY))
|
||||
{
|
||||
for ($i = 0, $cnt = count($valueNames); $i < $cnt; $i++)
|
||||
$valueList[] = array(strval($valueNames[$i]), intval($valueTypes[$i]));
|
||||
}
|
||||
else // Handle a bug in StdRegProv's EnumValues (http://groups.google.com/group/microsoft.public.win32.programmer.wmi/browse_thread/thread/d74c0ca865887e6b)
|
||||
{
|
||||
if ($this->GetStringValue($hKeyId, $subKey, '') != NULL)
|
||||
$valueList[] = array('', self::REG_SZ);
|
||||
else if ($this->GetDWORDValue($hKeyId, $subKey, '') != NULL)
|
||||
$valueList[] = array('', self::REG_DWORD);
|
||||
else if ($this->GetExpandedStringValue($hKeyId, $subKey, '') != NULL)
|
||||
$valueList[] = array('', self::REG_EXPAND_SZ);
|
||||
else if ($this->GetBinaryValue($hKeyId, $subKey, '') != NULL)
|
||||
$valueList[] = array('', self::REG_BINARY);
|
||||
else if ($this->GetMultiStringValue($hKeyId, $subKey, '') != NULL)
|
||||
$valueList[] = array('', self::REG_MULTI_SZ);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
private function GetValueType($hKeyId, $subKey, $valueName)
|
||||
{
|
||||
$valueList = array();
|
||||
if (!$this->EnumValues($hKeyId, $subKey, $valueList))
|
||||
return -1;
|
||||
|
||||
for ($i = 0, $cnt = count($valueList); $i < $cnt; $i++)
|
||||
{
|
||||
if ($valueList[$i][0] == $valueName)
|
||||
return $valueList[$i][1];
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
private function GetStringValue($hKeyId, $subKey, $valueName)
|
||||
{
|
||||
$stringValue = new VARIANT();
|
||||
return (($this->RegistryObject->GetStringValue($hKeyId, $subKey, $valueName, $stringValue) == 0) ?
|
||||
strval($stringValue) : NULL);
|
||||
}
|
||||
|
||||
private function GetExpandedStringValue($hKeyId, $subKey, $valueName)
|
||||
{
|
||||
$expandStringValue = new VARIANT();
|
||||
return ((0 == $this->RegistryObject->GetExpandedStringValue($hKeyId, $subKey, $valueName, $expandStringValue)) ?
|
||||
strval($expandStringValue) : NULL);
|
||||
}
|
||||
|
||||
private function GetBinaryValue($hKeyId, $subKey, $valueName, $asString = FALSE)
|
||||
{
|
||||
$binaryValue = new VARIANT();
|
||||
if ($this->RegistryObject->GetBinaryValue($hKeyId, $subKey, $valueName, $binaryValue) != 0)
|
||||
return NULL;
|
||||
|
||||
if ($asString)
|
||||
{
|
||||
$result = '';
|
||||
for ($i = 0, $cnt = count($binaryValue); $i < $cnt; $i++)
|
||||
$result .= dechex($binaryValue[$i]) . ((($cnt - 1) != $i) ? ' ' : '');
|
||||
}
|
||||
else
|
||||
{
|
||||
$result = array();
|
||||
for ($i = 0, $cnt = count($binaryValue); $i < $cnt; $i++)
|
||||
$result .= intval($binaryValue[$i]);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function GetDWORDValue($hKeyId, $subKey, $valueName, $asString = FALSE)
|
||||
{
|
||||
$dwordValue = new VARIANT();
|
||||
return (($this->RegistryObject->GetDWORDValue($hKeyId, $subKey, $valueName, $dwordValue) == 0) ?
|
||||
($asString ? strval($dwordValue) : intval($dwordValue)) : NULL);
|
||||
}
|
||||
|
||||
private function GetMultiStringValue($hKeyId, $subKey, $valueName, $asString = FALSE)
|
||||
{
|
||||
$multiStringValue = new VARIANT();
|
||||
if ($this->RegistryObject->GetMultiStringValue($hKeyId, $subKey, $valueName, $multiStringValue) != 0)
|
||||
return NULL;
|
||||
|
||||
if ($asString)
|
||||
{
|
||||
$result = '';
|
||||
for ($i = 0, $cnt = count($multiStringValue); $i < $cnt; $i++)
|
||||
$result .= strval($multiStringValue[$i]) . ((($cnt - 1) != $i) ? "\n" : '');
|
||||
}
|
||||
else
|
||||
{
|
||||
$result = array();
|
||||
for ($i = 0, $cnt = count($multiStringValue); $i < $cnt; $i++)
|
||||
$result[] = strval($multiStringValue[$i]);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
?>
|
||||
895
Tools/projectGenerator/classes/plist/CFBinaryPropertyList.php
Normal file
895
Tools/projectGenerator/classes/plist/CFBinaryPropertyList.php
Normal file
|
|
@ -0,0 +1,895 @@
|
|||
<?php
|
||||
/**
|
||||
* CFPropertyList
|
||||
* {@link http://developer.apple.com/documentation/Darwin/Reference/ManPages/man5/plist.5.html Property Lists}
|
||||
* @author Rodney Rehm <rodney.rehm@medialize.de>
|
||||
* @author Christian Kruse <cjk@wwwtech.de>
|
||||
* @package plist
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
* Facility for reading and writing binary PropertyLists. Ported from {@link http://www.opensource.apple.com/source/CF/CF-476.15/CFBinaryPList.c CFBinaryPList.c}.
|
||||
* @author Rodney Rehm <rodney.rehm@medialize.de>
|
||||
* @author Christian Kruse <cjk@wwwtech.de>
|
||||
* @package plist
|
||||
* @example example-read-02.php Read a Binary PropertyList
|
||||
* @example example-read-03.php Read a PropertyList without knowing the type
|
||||
*/
|
||||
abstract class CFBinaryPropertyList {
|
||||
/**
|
||||
* Table containing uniqued objects
|
||||
* @var array
|
||||
*/
|
||||
protected $uniqueTable = Array();
|
||||
|
||||
/**
|
||||
* Number of objects in file
|
||||
* @var integer
|
||||
*/
|
||||
protected $countObjects = 0;
|
||||
|
||||
/**
|
||||
* The length of all strings in the file (byte length, not character length)
|
||||
* @var integer
|
||||
*/
|
||||
protected $stringSize = 0;
|
||||
|
||||
/**
|
||||
* The length of all ints in file (byte length)
|
||||
* @var integer
|
||||
*/
|
||||
protected $intSize = 0;
|
||||
|
||||
/**
|
||||
* The length of misc objects (i.e. not integer and not string) in file
|
||||
* @var integer
|
||||
*/
|
||||
protected $miscSize = 0;
|
||||
|
||||
/**
|
||||
* Number of object references in file (needed to calculate reference byte length)
|
||||
* @var integer
|
||||
*/
|
||||
protected $objectRefs = 0;
|
||||
|
||||
/**
|
||||
* Number of objects written during save phase; needed to calculate the size of the object table
|
||||
* @var integer
|
||||
*/
|
||||
protected $writtenObjectCount = 0;
|
||||
|
||||
/**
|
||||
* Table containing all objects in the file
|
||||
*/
|
||||
protected $objectTable = Array();
|
||||
|
||||
/**
|
||||
* The size of object references
|
||||
*/
|
||||
protected $objectRefSize = 0;
|
||||
|
||||
/**
|
||||
* The „offsets” (i.e. the different entries) in the file
|
||||
*/
|
||||
protected $offsets = Array();
|
||||
|
||||
/**
|
||||
* Read a „null type” (filler byte, true, false, 0 byte)
|
||||
* @param $length The byte itself
|
||||
* @return the byte value (e.g. CFBoolean(true), CFBoolean(false), 0 or 15)
|
||||
* @throws PListException on encountering an unknown null type
|
||||
*/
|
||||
protected function readBinaryNullType($length) {
|
||||
switch($length) {
|
||||
case 0: return 0; // null type
|
||||
case 8: return new CFBoolean(false);
|
||||
case 9: return new CFBoolean(true);
|
||||
case 15: return 15; // fill type
|
||||
}
|
||||
|
||||
throw new PListException("unknown null type: $length");
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an 64 bit integer using bcmath or gmp
|
||||
* @param int $hi The higher word
|
||||
* @param int $lo The lower word
|
||||
* @return mixed The integer (as int if possible, as string if not possible)
|
||||
* @throws PListException if neither gmp nor bc available
|
||||
*/
|
||||
protected static function make64Int($hi,$lo) {
|
||||
// on x64, we can just use int
|
||||
if(PHP_INT_SIZE > 4) return (((int)$hi)<<32) | ((int)$lo);
|
||||
|
||||
// lower word has to be unsigned since we don't use bitwise or, we use bcadd/gmp_add
|
||||
$lo = sprintf("%u", $lo);
|
||||
|
||||
// use GMP or bcmath if possible
|
||||
if(function_exists("gmp_mul")) return gmp_strval(gmp_add(gmp_mul($hi, "4294967296"), $lo));
|
||||
|
||||
if(function_exists("bcmul")) return bcadd(bcmul($hi,"4294967296"), $lo);
|
||||
|
||||
throw new PListException("either gmp or bc has to be installed!");
|
||||
}
|
||||
|
||||
/**
|
||||
* Read an integer value
|
||||
* @param string $fname The filename of the file we're reading from
|
||||
* @param ressource $fd The file descriptor we're reading from
|
||||
* @param integer $length The length (in bytes) of the integer value, coded as „set bit $length to 1”
|
||||
* @return CFNumber The integer value
|
||||
* @throws PListException if integer val is invalid
|
||||
* @throws IOException if read error occurs
|
||||
*/
|
||||
protected function readBinaryInt($fname,$fd,$length) {
|
||||
if($length > 3) throw new PListException("Integer greater than 8 bytes: $length");
|
||||
|
||||
$nbytes = 1 << $length;
|
||||
|
||||
$val = null;
|
||||
if(strlen($buff = fread($fd, $nbytes)) != $nbytes) throw IOException::readError($fname);
|
||||
switch($length) {
|
||||
case 0:
|
||||
$val = unpack("C", $buff);
|
||||
$val = $val[1];
|
||||
break;
|
||||
case 1:
|
||||
$val = unpack("n", $buff);
|
||||
$val = $val[1];
|
||||
break;
|
||||
case 2:
|
||||
$val = unpack("N", $buff);
|
||||
$val = $val[1];
|
||||
break;
|
||||
case 3:
|
||||
$words = unpack("Nhighword/Nlowword",$buff);
|
||||
//$val = $words['highword'] << 32 | $words['lowword'];
|
||||
$val = self::make64Int($words['highword'],$words['lowword']);
|
||||
break;
|
||||
}
|
||||
|
||||
return new CFNumber($val);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read a real value
|
||||
* @param string $fname The filename of the file we're reading from
|
||||
* @param ressource $fd The file descriptor we're reading from
|
||||
* @param integer $length The length (in bytes) of the integer value, coded as „set bit $length to 1”
|
||||
* @return CFNumber The real value
|
||||
* @throws PListException if real val is invalid
|
||||
* @throws IOException if read error occurs
|
||||
*/
|
||||
protected function readBinaryReal($fname,$fd,$length) {
|
||||
if($length > 3) throw new PListException("Real greater than 8 bytes: $length");
|
||||
|
||||
$nbytes = 1 << $length;
|
||||
$val = null;
|
||||
if(strlen($buff = fread($fd, $nbytes)) != $nbytes) throw IOException::readError($fname);
|
||||
|
||||
switch($length) {
|
||||
case 0: // 1 byte float? must be an error
|
||||
case 1: // 2 byte float? must be an error
|
||||
$x = $length + 1;
|
||||
throw new PListException("got {$x} byte float, must be an error!");
|
||||
case 2:
|
||||
$val = unpack("f", strrev($buff));
|
||||
$val = $val[1];
|
||||
break;
|
||||
case 3:
|
||||
$val = unpack("d", strrev($buff));
|
||||
$val = $val[1];
|
||||
break;
|
||||
}
|
||||
|
||||
return new CFNumber($val);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read a date value
|
||||
* @param string $fname The filename of the file we're reading from
|
||||
* @param ressource $fd The file descriptor we're reading from
|
||||
* @param integer $length The length (in bytes) of the integer value, coded as „set bit $length to 1”
|
||||
* @return CFDate The date value
|
||||
* @throws PListException if date val is invalid
|
||||
* @throws IOException if read error occurs
|
||||
*/
|
||||
protected function readBinaryDate($fname,$fd,$length) {
|
||||
if($length > 3) throw new PListException("Date greater than 8 bytes: $length");
|
||||
|
||||
$nbytes = 1 << $length;
|
||||
$val = null;
|
||||
if(strlen($buff = fread($fd, $nbytes)) != $nbytes) throw IOException::readError($fname);
|
||||
|
||||
switch($length) {
|
||||
case 0: // 1 byte CFDate is an error
|
||||
case 1: // 2 byte CFDate is an error
|
||||
$x = $length + 1;
|
||||
throw new PListException("{$x} byte CFdate, error");
|
||||
|
||||
case 2:
|
||||
$val = unpack("f", strrev($buff));
|
||||
$val = $val[1];
|
||||
break;
|
||||
case 3:
|
||||
$val = unpack("d", strrev($buff));
|
||||
$val = $val[1];
|
||||
break;
|
||||
}
|
||||
|
||||
return new CFDate($val,CFDate::TIMESTAMP_APPLE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read a data value
|
||||
* @param string $fname The filename of the file we're reading from
|
||||
* @param ressource $fd The file descriptor we're reading from
|
||||
* @param integer $length The length (in bytes) of the integer value, coded as „set bit $length to 1”
|
||||
* @return CFData The data value
|
||||
* @throws IOException if read error occurs
|
||||
*/
|
||||
protected function readBinaryData($fname,$fd,$length) {
|
||||
if(strlen($buff = fread($fd, $length)) != $length) throw IOException::readError($fname);
|
||||
return new CFData($buff,false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read a string value, usually coded as utf8
|
||||
* @param string $fname The filename of the file we're reading from
|
||||
* @param ressource $fd The file descriptor we're reading from
|
||||
* @param integer $length The length (in bytes) of the string value
|
||||
* @return CFString The string value, utf8 encoded
|
||||
* @throws IOException if read error occurs
|
||||
*/
|
||||
protected function readBinaryString($fname,$fd,$length) {
|
||||
if(strlen($buff = fread($fd, $length)) != $length) throw IOException::readError($fname);
|
||||
|
||||
if(!isset($this->uniqueTable[$buff])) $this->uniqueTable[$buff] = true;
|
||||
return new CFString($buff);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert the given string from one charset to another.
|
||||
* Trying to use MBString, Iconv, Recode - in that particular order.
|
||||
* @param string $string the string to convert
|
||||
* @param string $fromCharset the charset the given string is currently encoded in
|
||||
* @param string $toCharset the charset to convert to, defaults to UTF-8
|
||||
* @return string the converted string
|
||||
* @throws PListException on neither MBString, Iconv, Recode being available
|
||||
*/
|
||||
public static function convertCharset($string, $fromCharset, $toCharset='UTF-8') {
|
||||
if(function_exists('mb_convert_encoding')) return mb_convert_encoding($string, $toCharset, $fromCharset);
|
||||
if(function_exists('iconv')) return iconv($fromCharset, $toCharset, $string);
|
||||
if(function_exists('recode_string')) return recode_string($fromCharset .'..'. $toCharset, $string);
|
||||
|
||||
throw new PListException('neither iconv nor mbstring supported. how are we supposed to work on strings here?');
|
||||
}
|
||||
|
||||
/**
|
||||
* Count characters considering character set
|
||||
* Trying to use MBString, Iconv - in that particular order.
|
||||
* @param string $string the string to convert
|
||||
* @param string $charset the charset the given string is currently encoded in
|
||||
* @return integer The number of characters in that string
|
||||
* @throws PListException on neither MBString, Iconv being available
|
||||
*/
|
||||
public static function charsetStrlen($string,$charset="UTF-8") {
|
||||
if(function_exists('mb_strlen')) return mb_strlen($string, $charset);
|
||||
if(function_exists('iconv_strlen')) return iconv($string,$charset);
|
||||
|
||||
throw new PListException('neither iconv nor mbstring supported. how are we supposed to work on strings here?');
|
||||
}
|
||||
|
||||
/**
|
||||
* Read a unicode string value, coded as UTF-16BE
|
||||
* @param string $fname The filename of the file we're reading from
|
||||
* @param ressource $fd The file descriptor we're reading from
|
||||
* @param integer $length The length (in bytes) of the string value
|
||||
* @return CFString The string value, utf8 encoded
|
||||
* @throws IOException if read error occurs
|
||||
*/
|
||||
protected function readBinaryUnicodeString($fname,$fd,$length) {
|
||||
if(strlen($buff = fread($fd, 2*$length)) != 2*$length) throw IOException::readError($fname);
|
||||
|
||||
if(!isset($this->uniqueTable[$buff])) $this->uniqueTable[$buf] = true;
|
||||
return new CFString(self::convertCharset($buff,"UTF-8", "UTF-16BE"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Read an array value, including contained objects
|
||||
* @param string $fname The filename of the file we're reading from
|
||||
* @param ressource $fd The file descriptor we're reading from
|
||||
* @param integer $length The number of contained objects
|
||||
* @return CFArray The array value, including the objects
|
||||
* @throws IOException if read error occurs
|
||||
*/
|
||||
protected function readBinaryArray($fname,$fd,$length) {
|
||||
$ary = new CFArray();
|
||||
|
||||
// first: read object refs
|
||||
if($length != 0) {
|
||||
if(strlen($buff = fread($fd, $length * $this->objectRefSize)) != $length * $this->objectRefSize) throw IOException::readError($fname);
|
||||
$objects = unpack($this->objectRefSize == 1 ? "C*" : "n*", $buff);
|
||||
|
||||
// now: read objects
|
||||
for($i=0;$i<$length;++$i) {
|
||||
$object = $this->readBinaryObjectAt($fname,$fd,$objects[$i+1]+1,$this->objectRefSize);
|
||||
$ary->add($object);
|
||||
}
|
||||
}
|
||||
|
||||
return $ary;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read a dictionary value, including contained objects
|
||||
* @param string $fname The filename of the file we're reading from
|
||||
* @param ressource $fd The file descriptor we're reading from
|
||||
* @param integer $length The number of contained objects
|
||||
* @return CFDictionary The dictionary value, including the objects
|
||||
* @throws IOException if read error occurs
|
||||
*/
|
||||
protected function readBinaryDict($fname,$fd,$length) {
|
||||
$dict = new CFDictionary();
|
||||
|
||||
// first: read keys
|
||||
if($length != 0) {
|
||||
if(strlen($buff = fread($fd, $length * $this->objectRefSize)) != $length * $this->objectRefSize) throw IOException::readError($fname);
|
||||
$keys = unpack(($this->objectRefSize == 1 ? "C*" : "n*"), $buff);
|
||||
|
||||
// second: read object refs
|
||||
if(strlen($buff = fread($fd, $length * $this->objectRefSize)) != $length * $this->objectRefSize) throw IOException::readError($fname);
|
||||
$objects = unpack(($this->objectRefSize == 1 ? "C*" : "n*"), $buff);
|
||||
|
||||
// read real keys and objects
|
||||
for($i=0;$i<$length;++$i) {
|
||||
$key = $this->readBinaryObjectAt($fname,$fd,$keys[$i+1]+1);
|
||||
$object = $this->readBinaryObjectAt($fname,$fd,$objects[$i+1]+1);
|
||||
$dict->add($key->getValue(),$object);
|
||||
}
|
||||
}
|
||||
|
||||
return $dict;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read an object type byte, decode it and delegate to the correct reader function
|
||||
* @param string $fname The filename of the file we're reading from
|
||||
* @param ressource $fd The file descriptor we're reading from
|
||||
* @return mixed The value of the delegate reader, so any of the CFType subclasses
|
||||
* @throws IOException if read error occurs
|
||||
*/
|
||||
function readBinaryObject($fname,$fd) {
|
||||
// first: read the marker byte
|
||||
if(strlen($buff = fread($fd,1)) != 1) throw IOException::readError($fname);
|
||||
|
||||
$object_length = unpack("C*", $buff);
|
||||
$object_length = $object_length[1] & 0xF;
|
||||
$buff = unpack("H*", $buff);
|
||||
$buff = $buff[1];
|
||||
|
||||
$object_type = substr($buff, 0, 1);
|
||||
if($object_type != "0" && $object_length == 15) {
|
||||
$object_length = $this->readBinaryObject($fname,$fd,$this->objectRefSize);
|
||||
$object_length = $object_length->getValue();
|
||||
}
|
||||
|
||||
$retval = null;
|
||||
switch($object_type) {
|
||||
case '0': // null, false, true, fillbyte
|
||||
$retval = $this->readBinaryNullType($object_length);
|
||||
break;
|
||||
case '1': // integer
|
||||
$retval = $this->readBinaryInt($fname,$fd,$object_length);
|
||||
break;
|
||||
case '2': // real
|
||||
$retval = $this->readBinaryReal($fname,$fd,$object_length);
|
||||
break;
|
||||
case '3': // date
|
||||
$retval = $this->readBinaryDate($fname,$fd,$object_length);
|
||||
break;
|
||||
case '4': // data
|
||||
$retval = $this->readBinaryData($fname,$fd,$object_length);
|
||||
break;
|
||||
case '5': // byte string, usually utf8 encoded
|
||||
$retval = $this->readBinaryString($fname,$fd,$object_length);
|
||||
break;
|
||||
case '6': // unicode string (utf16be)
|
||||
$retval = $this->readBinaryUnicodeString($fname,$fd,$object_length);
|
||||
break;
|
||||
case 'a': // array
|
||||
$retval = $this->readBinaryArray($fname,$fd,$object_length);
|
||||
break;
|
||||
case 'd': // dictionary
|
||||
$retval = $this->readBinaryDict($fname,$fd,$object_length);
|
||||
break;
|
||||
}
|
||||
|
||||
return $retval;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read an object type byte at position $pos, decode it and delegate to the correct reader function
|
||||
* @param string $fname The filename of the file we're reading from
|
||||
* @param ressource $fd The file descriptor we're reading from
|
||||
* @param integer $pos The table position in the offsets table
|
||||
* @return mixed The value of the delegate reader, so any of the CFType subclasses
|
||||
*/
|
||||
function readBinaryObjectAt($fname,$fd,$pos) {
|
||||
$position = $this->offsets[$pos];
|
||||
fseek($fd,$position,SEEK_SET);
|
||||
return $this->readBinaryObject($fname,$fd);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read a binary plist file
|
||||
* @param string $file The file to read
|
||||
* @return void
|
||||
* @throws IOException if read error occurs
|
||||
*/
|
||||
function readBinary($file) {
|
||||
$this->uniqueTable = Array();
|
||||
$this->countObjects = 0;
|
||||
$this->stringSize = 0;
|
||||
$this->intSize = 0;
|
||||
$this->miscSize = 0;
|
||||
$this->objectRefs = 0;
|
||||
|
||||
$this->writtenObjectCount = 0;
|
||||
$this->objectTable = Array();
|
||||
$this->objectRefSize = 0;
|
||||
|
||||
$this->offsets = Array();
|
||||
|
||||
$fd = fopen($file,"rb");
|
||||
|
||||
// first, we read the trailer: 32 byte from the end
|
||||
fseek($fd,-32,SEEK_END);
|
||||
$buff = fread($fd,32);
|
||||
|
||||
$infos = unpack("x6/Coffset_size/Cobject_ref_size/x4/Nnumber_of_objects/x4/Ntop_object/x4/Ntable_offset",$buff);
|
||||
|
||||
// after that, get the offset table
|
||||
fseek($fd,$infos['table_offset'], SEEK_SET);
|
||||
$coded_offset_table = fread($fd,$infos['number_of_objects'] * $infos['offset_size']);
|
||||
if(strlen($coded_offset_table) != $infos['number_of_objects'] * $infos['offset_size']) throw IOException::readError($file);
|
||||
$this->countObjects = $infos['number_of_objects'];
|
||||
|
||||
// decode offset table
|
||||
$formats = Array("","C*","n*","(H6)*","N*");
|
||||
$this->offsets = unpack($formats[$infos['offset_size']],$coded_offset_table);
|
||||
if($infos['offset_size'] == 3) {
|
||||
foreach($this->offsets as $k => $v) $this->offsets[$k] = hexdec($v);
|
||||
}
|
||||
|
||||
$this->uniqueTable = Array();
|
||||
$this->objectRefSize = $infos['object_ref_size'];
|
||||
|
||||
$top = $this->readBinaryObjectAt($file,$fd,$infos['top_object']+1);
|
||||
$this->add($top);
|
||||
|
||||
fclose($fd);
|
||||
}
|
||||
|
||||
/**
|
||||
* calculate the bytes needed for a size integer value
|
||||
* @param integer $int The integer value to calculate
|
||||
* @return integer The number of bytes needed
|
||||
*/
|
||||
public static function bytesSizeInt($int) {
|
||||
$nbytes = 0;
|
||||
|
||||
if($int > 0xE) $nbytes += 2; // 2 size-bytes
|
||||
if($int > 0xFF) $nbytes += 1; // 3 size-bytes
|
||||
if($int > 0xFFFF) $nbytes += 2; // 5 size-bytes
|
||||
|
||||
return $nbytes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate the byte needed for a „normal” integer value
|
||||
* @param integer $int The integer value
|
||||
* @return integer The number of bytes needed + 1 (because of the „marker byte”)
|
||||
*/
|
||||
public static function bytesInt($int) {
|
||||
$nbytes = 1;
|
||||
|
||||
if($int > 0xFF) $nbytes += 1; // 2 byte integer
|
||||
if($int > 0xFFFF) $nbytes += 2; // 4 byte integer
|
||||
if($int > 0xFFFFFFFF) $nbytes += 4; // 8 byte integer
|
||||
if($int < 0) $nbytes += 7; // 8 byte integer (since it is signed)
|
||||
|
||||
return $nbytes + 1; // one „marker” byte
|
||||
}
|
||||
|
||||
/**
|
||||
* „pack” a value (i.e. write the binary representation as big endian to a string) with the specified size
|
||||
* @param integer $nbytes The number of bytes to pack
|
||||
* @param integer $int the integer value to pack
|
||||
* @return string The packed value as string
|
||||
*/
|
||||
public static function packItWithSize($nbytes,$int) {
|
||||
$formats = Array("C", "n", "N", "N");
|
||||
$format = $formats[$nbytes-1];
|
||||
$ret = '';
|
||||
|
||||
if($nbytes == 3) return substr(pack($format, $int), -3);
|
||||
return pack($format, $int);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate the bytes needed to save the number of objects
|
||||
* @param integer $count_objects The number of objects
|
||||
* @return integer The number of bytes
|
||||
*/
|
||||
public static function bytesNeeded($count_objects) {
|
||||
$nbytes = 0;
|
||||
|
||||
while($count_objects >= 1) {
|
||||
$nbytes++;
|
||||
$count_objects /= 256;
|
||||
}
|
||||
|
||||
return $nbytes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Code an integer to byte representation
|
||||
* @param integer $int The integer value
|
||||
* @return string The packed byte value
|
||||
*/
|
||||
public static function intBytes($int) {
|
||||
$intbytes = "";
|
||||
|
||||
if($int > 0xFFFF) $intbytes = "\x12".pack("N", $int); // 4 byte integer
|
||||
elseif($int > 0xFF) $intbytes = "\x11".pack("n", $int); // 2 byte integer
|
||||
else $intbytes = "\x10".pack("C", $int); // 8 byte integer
|
||||
|
||||
return $intbytes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Code an type byte, consisting of the type marker and the length of the type
|
||||
* @param string $type The type byte value (i.e. "d" for dictionaries)
|
||||
* @param integer $type_len The length of the type
|
||||
* @return string The packed type byte value
|
||||
*/
|
||||
public static function typeBytes($type,$type_len) {
|
||||
$optional_int = "";
|
||||
|
||||
if($type_len < 15) $type .= sprintf("%x", $type_len);
|
||||
else {
|
||||
$type .= "f";
|
||||
$optional_int = self::intBytes($type_len);
|
||||
}
|
||||
|
||||
return pack("H*", $type).$optional_int;
|
||||
}
|
||||
|
||||
/**
|
||||
* Count number of objects and create a unique table for strings
|
||||
* @param $value The value to count and unique
|
||||
* @return void
|
||||
*/
|
||||
protected function uniqueAndCountValues($value) {
|
||||
// no uniquing for other types than CFString and CFData
|
||||
if($value instanceof CFNumber) {
|
||||
$val = $value->getValue();
|
||||
if(intval($val) == $val && !is_float($val) && strpos($val,'.') === false) $this->intSize += self::bytesInt($val);
|
||||
else $this->miscSize += 9; // 9 bytes (8 + marker byte) for real
|
||||
$this->countObjects++;
|
||||
return;
|
||||
}
|
||||
elseif($value instanceof CFDate) {
|
||||
$this->miscSize += 9; // since date in plist is real, we need 9 byte (8 + marker byte)
|
||||
$this->countObjects++;
|
||||
return;
|
||||
}
|
||||
elseif($value instanceof CFBoolean) {
|
||||
$this->countObjects++;
|
||||
$this->miscSize += 1;
|
||||
return;
|
||||
}
|
||||
elseif($value instanceof CFArray) {
|
||||
$cnt = 0;
|
||||
foreach($value as $v) {
|
||||
++$cnt;
|
||||
$this->uniqueAndCountValues($v);
|
||||
$this->objectRefs++; // each array member is a ref
|
||||
}
|
||||
|
||||
$this->countObjects++;
|
||||
$this->intSize += self::bytesSizeInt($cnt);
|
||||
$this->miscSize++; // marker byte for array
|
||||
return;
|
||||
}
|
||||
elseif($value instanceof CFDictionary) {
|
||||
$cnt = 0;
|
||||
foreach($value as $k => $v) {
|
||||
++$cnt;
|
||||
if(!isset($this->uniqueTable[$k])) {
|
||||
$this->uniqueTable[$k] = 0;
|
||||
$this->stringSize += strlen($k) + 1;
|
||||
$this->intSize += self::bytesSizeInt(strlen($k));
|
||||
}
|
||||
|
||||
$this->objectRefs += 2; // both, key and value, are refs
|
||||
$this->uniqueTable[$k]++;
|
||||
$this->uniqueAndCountValues($v);
|
||||
}
|
||||
|
||||
$this->countObjects++;
|
||||
$this->miscSize++; // marker byte for dict
|
||||
$this->intSize += self::bytesSizeInt($cnt);
|
||||
return;
|
||||
}
|
||||
elseif($value instanceOf CFData) {
|
||||
$val = $value->getValue();
|
||||
$this->intSize += self::bytesSizeInt(strlen($val));
|
||||
$this->miscSize += strlen($val) + 1;
|
||||
$this->countObjects++;
|
||||
return;
|
||||
}
|
||||
else $val = $value->getValue();
|
||||
|
||||
if(!isset($this->uniqueTable[$val])) {
|
||||
$this->uniqueTable[$val] = 0;
|
||||
$this->stringSize += strlen($val) + 1;
|
||||
$this->intSize += self::bytesSizeInt(strlen($val));
|
||||
}
|
||||
$this->uniqueTable[$val]++;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert CFPropertyList to binary format; since we have to count our objects we simply unique CFDictionary and CFArray
|
||||
* @return string The binary plist content
|
||||
*/
|
||||
public function toBinary() {
|
||||
$this->uniqueTable = Array();
|
||||
$this->countObjects = 0;
|
||||
$this->stringSize = 0;
|
||||
$this->intSize = 0;
|
||||
$this->miscSize = 0;
|
||||
$this->objectRefs = 0;
|
||||
|
||||
$this->writtenObjectCount = 0;
|
||||
$this->objectTable = Array();
|
||||
$this->objectRefSize = 0;
|
||||
|
||||
$this->offsets = Array();
|
||||
|
||||
$binary_str = "bplist00";
|
||||
$value = $this->getValue();
|
||||
$this->uniqueAndCountValues($value);
|
||||
|
||||
$this->countObjects += count($this->uniqueTable);
|
||||
$this->objectRefSize = self::bytesNeeded($this->countObjects);
|
||||
$file_size = $this->stringSize + $this->intSize + $this->miscSize + $this->objectRefs * $this->objectRefSize + 40;
|
||||
$offset_size = self::bytesNeeded($file_size);
|
||||
$table_offset = $file_size - 32;
|
||||
|
||||
$this->objectTable = Array();
|
||||
$this->writtenObjectCount = 0;
|
||||
$this->uniqueTable = Array(); // we needed it to calculate several values
|
||||
$this->getValue()->toBinary($this);
|
||||
|
||||
$object_offset = 8;
|
||||
$offsets = Array();
|
||||
|
||||
for($i=0;$i<count($this->objectTable);++$i) {
|
||||
$binary_str .= $this->objectTable[$i];
|
||||
$offsets[$i] = $object_offset;
|
||||
$object_offset += strlen($this->objectTable[$i]);
|
||||
}
|
||||
|
||||
for($i=0;$i<count($offsets);++$i) {
|
||||
$binary_str .= self::packItWithSize($offset_size, $offsets[$i]);
|
||||
}
|
||||
|
||||
|
||||
$binary_str .= pack("x6CC", $offset_size, $this->objectRefSize);
|
||||
$binary_str .= pack("x4N", $this->countObjects);
|
||||
$binary_str .= pack("x4N", 0);
|
||||
$binary_str .= pack("x4N", $table_offset);
|
||||
|
||||
return $binary_str;
|
||||
}
|
||||
|
||||
/**
|
||||
* Uniques and transforms a string value to binary format and adds it to the object table
|
||||
* @param string $val The string value
|
||||
* @return integer The position in the object table
|
||||
*/
|
||||
public function stringToBinary($val) {
|
||||
$saved_object_count = -1;
|
||||
|
||||
if(!isset($this->uniqueTable[$val])) {
|
||||
$saved_object_count = $this->writtenObjectCount++;
|
||||
$this->uniqueTable[$val] = $saved_object_count;
|
||||
$utf16 = false;
|
||||
|
||||
for($i=0;$i<strlen($val);++$i) {
|
||||
if(ord($val{$i}) > 128) {
|
||||
$utf16 = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if($utf16) {
|
||||
$bdata = self::typeBytes("6", mb_strlen($val,'UTF-8')); // 6 is 0110, unicode string (utf16be)
|
||||
$val = self::convertCharset($val, 'UTF-8', 'UTF-16BE');
|
||||
$this->objectTable[$saved_object_count] = $bdata.$val;
|
||||
}
|
||||
else {
|
||||
$bdata = self::typeBytes("5", strlen($val)); // 5 is 0101 which is an ASCII string (seems to be ASCII encoded)
|
||||
$this->objectTable[$saved_object_count] = $bdata.$val;
|
||||
}
|
||||
}
|
||||
else $saved_object_count = $this->uniqueTable[$val];
|
||||
|
||||
return $saved_object_count;
|
||||
}
|
||||
|
||||
/**
|
||||
* Codes an integer to binary format
|
||||
* @param integer $value The integer value
|
||||
* @return string the coded integer
|
||||
*/
|
||||
protected function intToBinary($value) {
|
||||
$nbytes = 0;
|
||||
if($value > 0xFF) $nbytes = 1; // 1 byte integer
|
||||
if($value > 0xFFFF) $nbytes += 1; // 4 byte integer
|
||||
if($value > 0xFFFFFFFF) $nbytes += 1; // 8 byte integer
|
||||
if($value < 0) $nbytes = 3; // 8 byte integer, since signed
|
||||
|
||||
$bdata = self::typeBytes("1", $nbytes); // 1 is 0001, type indicator for integer
|
||||
$buff = "";
|
||||
|
||||
if($nbytes < 3) {
|
||||
if($nbytes == 0) $fmt = "C";
|
||||
elseif($nbytes == 1) $fmt = "n";
|
||||
else $fmt = "N";
|
||||
|
||||
$buff = pack($fmt, $value);
|
||||
}
|
||||
else {
|
||||
if(PHP_INT_SIZE > 4) {
|
||||
// 64 bit signed integer; we need the higher and the lower 32 bit of the value
|
||||
$high_word = $value >> 32;
|
||||
$low_word = $value & 0xFFFFFFFF;
|
||||
}
|
||||
else {
|
||||
// since PHP can only handle 32bit signed, we can only get 32bit signed values at this point - values above 0x7FFFFFFF are
|
||||
// floats. So we ignore the existance of 64bit on non-64bit-machines
|
||||
if($value < 0) $high_word = 0xFFFFFFFF;
|
||||
else $high_word = 0;
|
||||
$low_word = $value;
|
||||
}
|
||||
$buff = pack("N", $high_word).pack("N", $low_word);
|
||||
}
|
||||
|
||||
return $bdata.$buff;
|
||||
}
|
||||
|
||||
/**
|
||||
* Codes a real value to binary format
|
||||
* @param float $val The real value
|
||||
* @return string The coded real
|
||||
*/
|
||||
protected function realToBinary($val) {
|
||||
$bdata = self::typeBytes("2", 3); // 2 is 0010, type indicator for reals
|
||||
return $bdata.strrev(pack("d", (float)$val));
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a numeric value to binary and adds it to the object table
|
||||
* @param numeric $value The numeric value
|
||||
* @return integer The position in the object table
|
||||
*/
|
||||
public function numToBinary($value) {
|
||||
$saved_object_count = $this->writtenObjectCount++;
|
||||
|
||||
$val = "";
|
||||
if(intval($value) == $value && !is_float($value) && strpos($value,'.') === false) $val = $this->intToBinary($value);
|
||||
else $val = $this->realToBinary($value);
|
||||
|
||||
$this->objectTable[$saved_object_count] = $val;
|
||||
return $saved_object_count;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert date value (apple format) to binary and adds it to the object table
|
||||
* @param integer $value The date value
|
||||
* @return integer The position of the coded value in the object table
|
||||
*/
|
||||
public function dateToBinary($val) {
|
||||
$saved_object_count = $this->writtenObjectCount++;
|
||||
|
||||
$hour = gmdate("H",$val);
|
||||
$min = gmdate("i",$val);
|
||||
$sec = gmdate("s",$val);
|
||||
$mday = gmdate("j",$val);
|
||||
$mon = gmdate("n",$val);
|
||||
$year = gmdate("Y",$val);
|
||||
|
||||
$val = gmmktime($hour,$min,$sec,$mon,$mday,$year) - CFDate::DATE_DIFF_APPLE_UNIX; // CFDate is a real, number of seconds since 01/01/2001 00:00:00 GMT
|
||||
|
||||
$bdata = self::typeBytes("3", 3); // 3 is 0011, type indicator for date
|
||||
$this->objectTable[$saved_object_count] = $bdata.strrev(pack("d", $val));
|
||||
|
||||
return $saved_object_count;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a bool value to binary and add it to the object table
|
||||
* @param bool $val The boolean value
|
||||
* @return integer The position in the object table
|
||||
*/
|
||||
public function boolToBinary($val) {
|
||||
$saved_object_count = $this->writtenObjectCount++;
|
||||
$this->objectTable[$saved_object_count] = $val ? "\x9" : "\x8"; // 0x9 is 1001, type indicator for true; 0x8 is 1000, type indicator for false
|
||||
return $saved_object_count;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert data value to binary format and add it to the object table
|
||||
* @param string $val The data value
|
||||
* @return integer The position in the object table
|
||||
*/
|
||||
public function dataToBinary($val) {
|
||||
$saved_object_count = $this->writtenObjectCount++;
|
||||
|
||||
$bdata = self::typeBytes("4", strlen($val)); // a is 1000, type indicator for data
|
||||
$this->objectTable[$saved_object_count] = $bdata.$val;
|
||||
|
||||
return $saved_object_count;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert array to binary format and add it to the object table
|
||||
* @param CFArray $val The array to convert
|
||||
* @return integer The position in the object table
|
||||
*/
|
||||
public function arrayToBinary($val) {
|
||||
$saved_object_count = $this->writtenObjectCount++;
|
||||
|
||||
$bdata = self::typeBytes("a", count($val->getValue())); // a is 1010, type indicator for arrays
|
||||
|
||||
foreach($val as $v) {
|
||||
$bval = $v->toBinary($this);
|
||||
$bdata .= self::packItWithSize($this->objectRefSize, $bval);
|
||||
}
|
||||
|
||||
$this->objectTable[$saved_object_count] = $bdata;
|
||||
return $saved_object_count;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert dictionary to binary format and add it to the object table
|
||||
* @param CFDictionary $val The dict to convert
|
||||
* @return integer The position in the object table
|
||||
*/
|
||||
public function dictToBinary($val) {
|
||||
$saved_object_count = $this->writtenObjectCount++;
|
||||
$bdata = self::typeBytes("d", count($val->getValue())); // d=1101, type indicator for dictionary
|
||||
|
||||
foreach($val as $k => $v) {
|
||||
$str = new CFString($k);
|
||||
$key = $str->toBinary($this);
|
||||
$bdata .= self::packItWithSize($this->objectRefSize, $key);
|
||||
}
|
||||
|
||||
foreach($val as $k => $v) {
|
||||
$bval = $v->toBinary($this);
|
||||
$bdata .= self::packItWithSize($this->objectRefSize, $bval);
|
||||
}
|
||||
|
||||
$this->objectTable[$saved_object_count] = $bdata;
|
||||
return $saved_object_count;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
524
Tools/projectGenerator/classes/plist/CFPropertyList.php
Normal file
524
Tools/projectGenerator/classes/plist/CFPropertyList.php
Normal file
|
|
@ -0,0 +1,524 @@
|
|||
<?php
|
||||
/**
|
||||
* CFPropertyList
|
||||
* {@link http://developer.apple.com/documentation/Darwin/Reference/ManPages/man5/plist.5.html Property Lists}
|
||||
* @author Rodney Rehm <rodney.rehm@medialize.de>
|
||||
* @author Christian Kruse <cjk@wwwtech.de>
|
||||
* @package plist
|
||||
* @version $Id$
|
||||
* @example example-read-01.php Read an XML PropertyList
|
||||
* @example example-read-02.php Read a Binary PropertyList
|
||||
* @example example-read-03.php Read a PropertyList without knowing the type
|
||||
* @example example-create-01.php Using the CFPropertyList API
|
||||
* @example example-create-02.php Using CFPropertyList::guess()
|
||||
* @example example-create-03.php Using CFPropertyList::guess() with {@link CFDate} and {@link CFData}
|
||||
*/
|
||||
|
||||
/**
|
||||
* Require IOException, PListException, CFType and CFBinaryPropertyList
|
||||
*/
|
||||
$plistDirectory = dirname(__FILE__);
|
||||
require_once($plistDirectory.'/IOException.php');
|
||||
require_once($plistDirectory.'/PListException.php');
|
||||
require_once($plistDirectory.'/CFType.php');
|
||||
require_once($plistDirectory.'/CFBinaryPropertyList.php');
|
||||
|
||||
/**
|
||||
* Property List
|
||||
* Interface for handling reading, editing and saving Property Lists as defined by Apple.
|
||||
* @author Rodney Rehm <rodney.rehm@medialize.de>
|
||||
* @author Christian Kruse <cjk@wwwtech.de>
|
||||
* @package plist
|
||||
* @example example-read-01.php Read an XML PropertyList
|
||||
* @example example-read-02.php Read a Binary PropertyList
|
||||
* @example example-read-03.php Read a PropertyList without knowing the type
|
||||
* @example example-create-01.php Using the CFPropertyList API
|
||||
* @example example-create-02.php Using CFPropertyList::guess()
|
||||
* @example example-create-03.php Using CFPropertyList::guess() with {@link CFDate} and {@link CFData}
|
||||
*/
|
||||
class CFPropertyList extends CFBinaryPropertyList implements Iterator {
|
||||
/**
|
||||
* Format constant for binary format
|
||||
* @var integer
|
||||
*/
|
||||
const FORMAT_BINARY = 1;
|
||||
|
||||
/**
|
||||
* Format constant for xml format
|
||||
* @var integer
|
||||
*/
|
||||
const FORMAT_XML = 2;
|
||||
|
||||
/**
|
||||
* Format constant for automatic format recognizing
|
||||
* @var integer
|
||||
*/
|
||||
const FORMAT_AUTO = 0;
|
||||
|
||||
/**
|
||||
* Path of PropertyList
|
||||
* @var string
|
||||
*/
|
||||
protected $file = null;
|
||||
|
||||
/**
|
||||
* Path of PropertyList
|
||||
* @var integer
|
||||
*/
|
||||
protected $format = null;
|
||||
|
||||
/**
|
||||
* CFType nodes
|
||||
* @var array
|
||||
*/
|
||||
protected $value = array();
|
||||
|
||||
/**
|
||||
* Position of iterator {@link http://php.net/manual/en/class.iterator.php}
|
||||
* @var integer
|
||||
*/
|
||||
protected $iteratorPosition = 0;
|
||||
|
||||
/**
|
||||
* List of Keys for numerical iterator access {@link http://php.net/manual/en/class.iterator.php}
|
||||
* @var array
|
||||
*/
|
||||
protected $iteratorKeys = null;
|
||||
|
||||
/**
|
||||
* List of NodeNames to ClassNames for resolving plist-files
|
||||
* @var array
|
||||
*/
|
||||
protected static $types = array(
|
||||
'string' => 'CFString',
|
||||
'real' => 'CFNumber',
|
||||
'integer' => 'CFNumber',
|
||||
'date' => 'CFDate',
|
||||
'true' => 'CFBoolean',
|
||||
'false' => 'CFBoolean',
|
||||
'data' => 'CFData',
|
||||
'array' => 'CFArray',
|
||||
'dict' => 'CFDictionary'
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
* Create new CFPropertyList.
|
||||
* If a path to a PropertyList is specified, it is loaded automatically.
|
||||
* @param string $file Path of PropertyList
|
||||
* @param integer $format he format of the property list, see {@link FORMAT_XML}, {@link FORMAT_BINARY} and {@link FORMAT_AUTO}, defaults to {@link FORMAT_AUTO}
|
||||
* @throws IOException if file could not be read by {@link load()}
|
||||
* @uses $file for storing the current file, if specified
|
||||
* @uses load() for loading the plist-file
|
||||
*/
|
||||
public function __construct($file=null,$format=self::FORMAT_AUTO) {
|
||||
$this->file = $file;
|
||||
$this->format = $format;
|
||||
if($this->file) $this->load();
|
||||
}
|
||||
|
||||
/**
|
||||
* Load an XML PropertyList.
|
||||
* @param string $file Path of PropertyList, defaults to {@link $file}
|
||||
* @return void
|
||||
* @throws IOException if file could not be read
|
||||
* @throws DOMException if XML-file could not be read properly
|
||||
* @uses load() to actually load the file
|
||||
*/
|
||||
public function loadXML($file=null) {
|
||||
$this->load($file,CFPropertyList::FORMAT_XML);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load an binary PropertyList.
|
||||
* @param string $file Path of PropertyList, defaults to {@link $file}
|
||||
* @return void
|
||||
* @throws IOException if file could not be read
|
||||
* @throws PListException if binary plist-file could not be read properly
|
||||
* @uses load() to actually load the file
|
||||
*/
|
||||
public function loadBinary($file=null) {
|
||||
$this->load($file,CFPropertyList::FORMAT_BINARY);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load a plist file.
|
||||
* Load and import a plist file.
|
||||
* @param string $file Path of PropertyList, defaults to {@link $file}
|
||||
* @param integer $format The format of the property list, see {@link FORMAT_XML}, {@link FORMAT_BINARY} and {@link FORMAT_AUTO}, defaults to {@link $format}
|
||||
* @return void
|
||||
* @throws PListException if file format version is not 00
|
||||
* @throws IOException if file could not be read
|
||||
* @throws DOMException if plist file could not be parsed properly
|
||||
* @uses $file if argument $file was not specified
|
||||
* @uses $value reset to empty array
|
||||
* @uses import() for importing the values
|
||||
*/
|
||||
public function load($file=null,$format=null) {
|
||||
$file = $file ? $file : $this->file;
|
||||
$format = $format !== null ? $format : $this->format;
|
||||
$this->value = array();
|
||||
|
||||
if(!is_readable($file)) throw IOException::notReadable($file);
|
||||
|
||||
switch($format) {
|
||||
case CFPropertyList::FORMAT_BINARY:
|
||||
$this->readBinary($file);
|
||||
break;
|
||||
case CFPropertyList::FORMAT_AUTO: // what we now do is ugly, but neccessary to recognize the file format
|
||||
$fd = fopen($file,"rb");
|
||||
if(($magic_number = fread($fd,8)) === false) throw IOException::notReadable($file);
|
||||
fclose($fd);
|
||||
|
||||
$filetype = substr($magic_number,0,6);
|
||||
$version = substr($magic_number,-2);
|
||||
|
||||
if($filetype == "bplist") {
|
||||
if($version != "00") throw new PListException("Wrong file format version! Expected 00, got $version!");
|
||||
$this->readBinary($file);
|
||||
break;
|
||||
}
|
||||
// else: xml format, break not neccessary
|
||||
case CFPropertyList::FORMAT_XML:
|
||||
$doc = new DOMDocument();
|
||||
if(!$doc->load($file)) throw new DOMException();
|
||||
$this->import($doc->documentElement, $this);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a DOMNode into a CFType.
|
||||
* @param DOMNode $node Node to import children of
|
||||
* @param CFDictionary|CFArray|CFPropertyList $parent
|
||||
* @return void
|
||||
*/
|
||||
protected function import(DOMNode $node, $parent) {
|
||||
// abort if there are no children
|
||||
if(!$node->childNodes->length) return;
|
||||
|
||||
foreach($node->childNodes as $n) {
|
||||
// skip if we can't handle the element
|
||||
if(!isset(self::$types[$n->nodeName])) continue;
|
||||
|
||||
$class = self::$types[$n->nodeName];
|
||||
$key = null;
|
||||
|
||||
// find previous <key> if possible
|
||||
$ps = $n->previousSibling;
|
||||
while($ps && $ps->nodeName == '#text' && $ps->previousSibling) $ps = $ps->previousSibling;
|
||||
|
||||
// read <key> if possible
|
||||
if($ps && $ps->nodeName == 'key') $key = $ps->firstChild->nodeValue;
|
||||
|
||||
switch($n->nodeName) {
|
||||
case 'date':
|
||||
$value = new $class(CFDate::dateValue($n->nodeValue));
|
||||
break;
|
||||
case 'data':
|
||||
$value = new $class($n->nodeValue,true);
|
||||
break;
|
||||
case 'string':
|
||||
$value = new $class($n->nodeValue);
|
||||
break;
|
||||
|
||||
case 'real':
|
||||
case 'integer':
|
||||
$value = new $class($n->nodeName == 'real' ? floatval($n->nodeValue) : intval($n->nodeValue));
|
||||
break;
|
||||
|
||||
case 'true':
|
||||
case 'false':
|
||||
$value = new $class($n->nodeName == 'true');
|
||||
break;
|
||||
|
||||
case 'array':
|
||||
case 'dict':
|
||||
$value = new $class();
|
||||
$this->import($n, $value);
|
||||
break;
|
||||
}
|
||||
|
||||
// Dictionaries need a key
|
||||
if($parent instanceof CFDictionary) $parent->add($key, $value);
|
||||
// others don't
|
||||
else $parent->add($value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert CFPropertyList to XML and save to file.
|
||||
* @param string $file Path of PropertyList, defaults to {@link $file}
|
||||
* @return void
|
||||
* @throws IOException if file could not be read
|
||||
* @uses $file if $file was not specified
|
||||
*/
|
||||
public function saveXML($file) {
|
||||
$this->save($file,CFPropertyList::FORMAT_XML);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert CFPropertyList to binary format (bplist00) and save to file.
|
||||
* @param string $file Path of PropertyList, defaults to {@link $file}
|
||||
* @return void
|
||||
* @throws IOException if file could not be read
|
||||
* @uses $file if $file was not specified
|
||||
*/
|
||||
public function saveBinary($file) {
|
||||
$this->save($file,CFPropertyList::FORMAT_BINARY);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert CFPropertyList to XML or binary and save to file.
|
||||
* @param string $file Path of PropertyList, defaults to {@link $file}
|
||||
* @param string $format Format of PropertyList, defaults to {@link $format}
|
||||
* @return void
|
||||
* @throws IOException if file could not be read
|
||||
* @throws PListException if evaluated $format is neither {@link FORMAT_XML} nor {@link FORMAL_BINARY}
|
||||
* @uses $file if $file was not specified
|
||||
* @uses $format if $format was not specified
|
||||
*/
|
||||
public function save($file=null,$format=null) {
|
||||
$file = $file ? $file : $this->file;
|
||||
$format = $format ? $format : $this->format;
|
||||
|
||||
if( !in_array( $format, array( self::FORMAT_BINARY, self::FORMAT_XML ) ) )
|
||||
throw new PListException( "format {$format} is not supported, use CFPropertyList::FORMAT_BINARY or CFPropertyList::FORMAT_XML" );
|
||||
|
||||
if(!file_exists($file)) {
|
||||
// dirname("file.xml") == "" and is treated as the current working directory
|
||||
if(!is_writable(dirname($file))) throw IOException::notWritable($file);
|
||||
}
|
||||
else if(!is_writable($file)) throw IOException::notWritable($file);
|
||||
|
||||
$content = $format == self::FORMAT_BINARY ? $this->toBinary() : $this->toXML();
|
||||
|
||||
$fh = fopen($file, 'wb');
|
||||
fwrite($fh,$content);
|
||||
fclose($fh);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert CFPropertyList to XML
|
||||
* @param bool $formatted Print plist formatted (i.e. with newlines and whitespace indention) if true; defaults to false
|
||||
* @return string The XML content
|
||||
*/
|
||||
public function toXML($formatted=false) {
|
||||
$domimpl = new DOMImplementation();
|
||||
// <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
$dtd = $domimpl->createDocumentType('plist', '-//Apple Computer//DTD PLIST 1.0//EN', 'http://www.apple.com/DTDs/PropertyList-1.0.dtd');
|
||||
$doc = $domimpl->createDocument(null, "plist", $dtd);
|
||||
$doc->encoding = "UTF-8";
|
||||
|
||||
// format output
|
||||
if($formatted) {
|
||||
$doc->formatOutput = true;
|
||||
$doc->preserveWhiteSpace = true;
|
||||
}
|
||||
|
||||
// get documentElement and set attribs
|
||||
$plist = $doc->documentElement;
|
||||
$plist->setAttribute('version', '1.0');
|
||||
|
||||
// add PropertyList's children
|
||||
$plist->appendChild($this->getValue()->toXML($doc));
|
||||
|
||||
return $doc->saveXML();
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************************************
|
||||
* M A N I P U L A T I O N
|
||||
************************************************************************************************/
|
||||
|
||||
/**
|
||||
* Add CFType to collection.
|
||||
* @param CFType $value CFType to add to collection
|
||||
* @return void
|
||||
* @uses $value for adding $value
|
||||
*/
|
||||
public function add($value) {
|
||||
$this->value[] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get CFType from collection.
|
||||
* @param integer $key Key of CFType to retrieve from collection
|
||||
* @return CFType CFType found at $key, null else
|
||||
* @uses $value for retrieving CFType of $key
|
||||
*/
|
||||
public function get($key) {
|
||||
if(isset($this->value[$key])) return $this->value[$key];
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove CFType from collection.
|
||||
* @param integer $key Key of CFType to removes from collection
|
||||
* @return CFType removed CFType, null else
|
||||
* @uses $value for removing CFType of $key
|
||||
*/
|
||||
public function del($key) {
|
||||
if(isset($this->value[$key])) {
|
||||
$t = $this->value[$key];
|
||||
unset($this->value[$key]);
|
||||
return $t;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get first (and only) child, or complete collection.
|
||||
* @return CFType|array CFType or list of CFTypes known to the PropertyList
|
||||
* @uses $value for retrieving CFTypes
|
||||
*/
|
||||
public function getValue() {
|
||||
if(count($this->value) === 1) return $this->value[0];
|
||||
return $this->value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create CFType-structure from guessing the data-types.
|
||||
* {@link CFArray}, {@link CFDictionary}, {@link CFBoolean}, {@link CFNumber} and {@link CFString} can be created, {@link CFDate} and {@link CFData} cannot.
|
||||
* <br /><b>Note:</b>Distinguishing between {@link CFArray} and {@link CFDictionary} is done by examining the keys.
|
||||
* Keys must be strictly incrementing integers to evaluate to a {@link CFArray}.
|
||||
* Since PHP does not offer a function to test for associative arrays,
|
||||
* this test causes the input array to be walked twice and thus work rather slow on large collections.
|
||||
* If you work with large arrays and can live with all arrays evaluating to {@link CFDictionary},
|
||||
* feel free to set the appropriate flag.
|
||||
* <br /><b>Note:</b> If $value is an instance of CFType it is simply returned.
|
||||
* <br /><b>Note:</b> If $value is neither a CFType, array, numeric, boolean nor string, it is omitted.
|
||||
* @param mixed $value Value to convert to CFType
|
||||
* @param boolean $autoDictionary if true {@link CFArray}-detection is bypassed and arrays will be returned as {@link CFDictionary}.
|
||||
* @return CFType CFType based on guessed type
|
||||
*/
|
||||
public static function guess($value, $autoDictionary=false) {
|
||||
switch(true) {
|
||||
case $value instanceof CFType:
|
||||
return $value;
|
||||
break;
|
||||
case is_array($value):
|
||||
// test if $value is simple or associative array
|
||||
if(!$autoDictionary) {
|
||||
$numericKeys = true;
|
||||
$previousKey = null;
|
||||
foreach($value as $key => $v) {
|
||||
if(!is_numeric($key) || ($previousKey !== null && $previousKey != $key-1)) {
|
||||
$numericKeys = false;
|
||||
break;
|
||||
}
|
||||
|
||||
$previousKey = $key;
|
||||
}
|
||||
|
||||
if($numericKeys) {
|
||||
$t = new CFArray();
|
||||
foreach($value as $v) $t->add(self::guess($v, $autoDictionary));
|
||||
return $t;
|
||||
}
|
||||
}
|
||||
|
||||
$t = new CFDictionary();
|
||||
foreach($value as $k => $v) $t->add($k, self::guess($v, $autoDictionary));
|
||||
|
||||
return $t;
|
||||
break;
|
||||
|
||||
case is_numeric($value):
|
||||
return new CFNumber($value);
|
||||
break;
|
||||
|
||||
case is_bool($value):
|
||||
return new CFBoolean($value);
|
||||
break;
|
||||
|
||||
case is_string($value):
|
||||
return new CFString($value);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************************************
|
||||
* S E R I A L I Z I N G
|
||||
************************************************************************************************/
|
||||
|
||||
/**
|
||||
* Get PropertyList as array.
|
||||
* @return mixed primitive value of first (and only) CFType, or array of primitive values of collection
|
||||
* @uses $value for retrieving CFTypes
|
||||
*/
|
||||
public function toArray() {
|
||||
$a = array();
|
||||
foreach($this->value as $value) $a[] = $value->toArray();
|
||||
if(count($a) === 1) return $a[0];
|
||||
|
||||
return $a;
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************************************
|
||||
* I T E R A T O R I N T E R F A C E
|
||||
************************************************************************************************/
|
||||
|
||||
/**
|
||||
* Rewind {@link $iteratorPosition} to first position (being 0)
|
||||
* @link http://php.net/manual/en/iterator.rewind.php
|
||||
* @return void
|
||||
* @uses $iteratorPosition set to 0
|
||||
* @uses $iteratorKeys store keys of {@link $value}
|
||||
*/
|
||||
public function rewind() {
|
||||
$this->iteratorPosition = 0;
|
||||
$this->iteratorKeys = array_keys($this->value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Iterator's current {@link CFType} identified by {@link $iteratorPosition}
|
||||
* @link http://php.net/manual/en/iterator.current.php
|
||||
* @return CFType current Item
|
||||
* @uses $iteratorPosition identify current key
|
||||
* @uses $iteratorKeys identify current value
|
||||
*/
|
||||
public function current() {
|
||||
return $this->value[$this->iteratorKeys[$this->iteratorPosition]];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Iterator's current key identified by {@link $iteratorPosition}
|
||||
* @link http://php.net/manual/en/iterator.key.php
|
||||
* @return string key of the current Item
|
||||
* @uses $iteratorPosition identify current key
|
||||
* @uses $iteratorKeys identify current value
|
||||
*/
|
||||
public function key() {
|
||||
return $this->iteratorKeys[$this->iteratorPosition];
|
||||
}
|
||||
|
||||
/**
|
||||
* Increment {@link $iteratorPosition} to address next {@see CFType}
|
||||
* @link http://php.net/manual/en/iterator.next.php
|
||||
* @return void
|
||||
* @uses $iteratorPosition increment by 1
|
||||
*/
|
||||
public function next() {
|
||||
$this->iteratorPosition++;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test if {@link $iteratorPosition} addresses a valid element of {@link $value}
|
||||
* @link http://php.net/manual/en/iterator.valid.php
|
||||
* @return boolean true if current position is valid, false else
|
||||
* @uses $iteratorPosition test if within {@link $iteratorKeys}
|
||||
* @uses $iteratorPosition test if within {@link $value}
|
||||
*/
|
||||
public function valid() {
|
||||
return isset($this->iteratorKeys[$this->iteratorPosition]) && isset($this->value[$this->iteratorKeys[$this->iteratorPosition]]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
661
Tools/projectGenerator/classes/plist/CFType.php
Normal file
661
Tools/projectGenerator/classes/plist/CFType.php
Normal file
|
|
@ -0,0 +1,661 @@
|
|||
<?php
|
||||
/**
|
||||
* Data-Types for CFPropertyList as defined by Apple.
|
||||
* {@link http://developer.apple.com/documentation/Darwin/Reference/ManPages/man5/plist.5.html Property Lists}
|
||||
* @author Rodney Rehm <rodney.rehm@medialize.de>
|
||||
* @author Christian Kruse <cjk@wwwtech.de>
|
||||
* @package plist
|
||||
* @subpackage plist.types
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
* Base-Class of all CFTypes used by CFPropertyList
|
||||
* @author Rodney Rehm <rodney.rehm@medialize.de>
|
||||
* @author Christian Kruse <cjk@wwwtech.de>
|
||||
* @package plist
|
||||
* @subpackage plist.types
|
||||
* @version $Id$
|
||||
* @example example-create-01.php Using the CFPropertyList API
|
||||
* @example example-create-02.php Using CFPropertyList::guess()
|
||||
* @example example-create-03.php Using CFPropertyList::guess() with {@link CFDate} and {@link CFData}
|
||||
*/
|
||||
abstract class CFType {
|
||||
/**
|
||||
* CFType nodes
|
||||
* @var array
|
||||
*/
|
||||
protected $value = null;
|
||||
|
||||
/**
|
||||
* Create new CFType.
|
||||
* @param mixed $value Value of CFType
|
||||
*/
|
||||
public function __construct($value=null) {
|
||||
$this->setValue($value);
|
||||
}
|
||||
|
||||
/************************************************************************************************
|
||||
* M A G I C P R O P E R T I E S
|
||||
************************************************************************************************/
|
||||
|
||||
/**
|
||||
* Get the CFType's value
|
||||
* @return mixed CFType's value
|
||||
*/
|
||||
public function getValue() {
|
||||
return $this->value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the CFType's value
|
||||
* @return void
|
||||
*/
|
||||
public function setValue($value) {
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
/************************************************************************************************
|
||||
* S E R I A L I Z I N G
|
||||
************************************************************************************************/
|
||||
|
||||
/**
|
||||
* Get XML-Node.
|
||||
* @param DOMDocument $doc DOMDocument to create DOMNode in
|
||||
* @param string $nodeName Name of element to create
|
||||
* @return DOMNode Node created based on CType
|
||||
* @uses $value as nodeValue
|
||||
*/
|
||||
public function toXML(DOMDocument $doc, $nodeName) {
|
||||
$text = $doc->createTextNode($this->value);
|
||||
$node = $doc->createElement($nodeName);
|
||||
$node->appendChild($text);
|
||||
return $node;
|
||||
}
|
||||
|
||||
/**
|
||||
* convert value to binary representation
|
||||
* @param CFBinaryPropertyList The binary property list object
|
||||
* @return The offset in the object table
|
||||
*/
|
||||
public abstract function toBinary(CFBinaryPropertyList &$bplist);
|
||||
|
||||
/**
|
||||
* Get CFType's value.
|
||||
* @return mixed primitive value
|
||||
* @uses $value for retrieving primitive of CFType
|
||||
*/
|
||||
public function toArray() {
|
||||
return $this->getValue();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* String Type of CFPropertyList
|
||||
* @author Rodney Rehm <rodney.rehm@medialize.de>
|
||||
* @author Christian Kruse <cjk@wwwtech.de>
|
||||
* @package plist
|
||||
* @subpackage plist.types
|
||||
*/
|
||||
class CFString extends CFType {
|
||||
/**
|
||||
* Get XML-Node.
|
||||
* @param DOMDocument $doc DOMDocument to create DOMNode in
|
||||
* @return DOMNode <string>-Element
|
||||
*/
|
||||
public function toXML(DOMDocument $doc) {
|
||||
return parent::toXML($doc, 'string');
|
||||
}
|
||||
|
||||
/**
|
||||
* convert value to binary representation
|
||||
* @param CFBinaryPropertyList The binary property list object
|
||||
* @return The offset in the object table
|
||||
*/
|
||||
public function toBinary(CFBinaryPropertyList &$bplist) {
|
||||
return $bplist->stringToBinary($this->value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Number Type of CFPropertyList
|
||||
* @author Rodney Rehm <rodney.rehm@medialize.de>
|
||||
* @author Christian Kruse <cjk@wwwtech.de>
|
||||
* @package plist
|
||||
* @subpackage plist.types
|
||||
*/
|
||||
class CFNumber extends CFType {
|
||||
/**
|
||||
* Get XML-Node.
|
||||
* Returns <real> if $value is a float, <integer> if $value is an integer.
|
||||
* @param DOMDocument $doc DOMDocument to create DOMNode in
|
||||
* @return DOMNode <real> or <integer>-Element
|
||||
*/
|
||||
public function toXML(DOMDocument $doc) {
|
||||
$ret = 'real';
|
||||
if(intval($this->value) == $this->value && !is_float($this->value) && strpos($this->value,'.') === false) {
|
||||
$this->value = intval($this->value);
|
||||
$ret = 'integer';
|
||||
}
|
||||
return parent::toXML($doc, $ret);
|
||||
}
|
||||
|
||||
/**
|
||||
* convert value to binary representation
|
||||
* @param CFBinaryPropertyList The binary property list object
|
||||
* @return The offset in the object table
|
||||
*/
|
||||
public function toBinary(CFBinaryPropertyList &$bplist) {
|
||||
return $bplist->numToBinary($this->value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Date Type of CFPropertyList
|
||||
* Note: CFDate uses Unix timestamp (epoch) to store dates internally
|
||||
* @author Rodney Rehm <rodney.rehm@medialize.de>
|
||||
* @author Christian Kruse <cjk@wwwtech.de>
|
||||
* @package plist
|
||||
* @subpackage plist.types
|
||||
*/
|
||||
class CFDate extends CFType {
|
||||
const TIMESTAMP_APPLE = 0;
|
||||
const TIMESTAMP_UNIX = 1;
|
||||
const DATE_DIFF_APPLE_UNIX = 978307200;
|
||||
|
||||
/**
|
||||
* Create new Date CFType.
|
||||
* @param integer $value timestamp to set
|
||||
* @param integer $format format the timestamp is specified in, use {@link TIMESTAMP_APPLE} or {@link TIMESTAMP_UNIX}, defaults to {@link TIMESTAMP_APPLE}
|
||||
* @uses setValue() to convert the timestamp
|
||||
*/
|
||||
function __construct($value,$format=CFDate::TIMESTAMP_UNIX) {
|
||||
$this->setValue($value,$format);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Date CFType's value.
|
||||
* @param integer $value timestamp to set
|
||||
* @param integer $format format the timestamp is specified in, use {@link TIMESTAMP_APPLE} or {@link TIMESTAMP_UNIX}, defaults to {@link TIMESTAMP_UNIX}
|
||||
* @return void
|
||||
* @uses TIMESTAMP_APPLE to determine timestamp type
|
||||
* @uses TIMESTAMP_UNIX to determine timestamp type
|
||||
* @uses DATE_DIFF_APPLE_UNIX to convert Apple-timestamp to Unix-timestamp
|
||||
*/
|
||||
function setValue($value,$format=CFDate::TIMESTAMP_UNIX) {
|
||||
if($format == CFDate::TIMESTAMP_UNIX) $this->value = $value;
|
||||
else $this->value = $value + CFDate::DATE_DIFF_APPLE_UNIX;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Date CFType's value.
|
||||
* @param integer $format format the timestamp is specified in, use {@link TIMESTAMP_APPLE} or {@link TIMESTAMP_UNIX}, defaults to {@link TIMESTAMP_UNIX}
|
||||
* @return integer Unix timestamp
|
||||
* @uses TIMESTAMP_APPLE to determine timestamp type
|
||||
* @uses TIMESTAMP_UNIX to determine timestamp type
|
||||
* @uses DATE_DIFF_APPLE_UNIX to convert Unix-timestamp to Apple-timestamp
|
||||
*/
|
||||
function getValue($format=CFDate::TIMESTAMP_UNIX) {
|
||||
if($format == CFDate::TIMESTAMP_UNIX) return $this->value;
|
||||
else return $this->value - CFDate::DATE_DIFF_APPLE_UNIX;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get XML-Node.
|
||||
* @param DOMDocument $doc DOMDocument to create DOMNode in
|
||||
* @return DOMNode <date>-Element
|
||||
*/
|
||||
public function toXML(DOMDocument $doc) {
|
||||
$text = $doc->createTextNode(gmdate("Y-m-d\TH:i:s\Z",$this->getValue()));
|
||||
$node = $doc->createElement("date");
|
||||
$node->appendChild($text);
|
||||
return $node;
|
||||
}
|
||||
|
||||
/**
|
||||
* convert value to binary representation
|
||||
* @param CFBinaryPropertyList The binary property list object
|
||||
* @return The offset in the object table
|
||||
*/
|
||||
public function toBinary(CFBinaryPropertyList &$bplist) {
|
||||
return $bplist->dateToBinary($this->value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a UNIX timestamp from a PList date string
|
||||
* @param string $val The date string (e.g. "2009-05-13T20:23:43Z")
|
||||
* @return integer The UNIX timestamp
|
||||
* @throws PListException when encountering an unknown date string format
|
||||
*/
|
||||
public static function dateValue($val) {
|
||||
//2009-05-13T20:23:43Z
|
||||
if(!preg_match('/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})Z/',$val,$matches)) throw new PListException("Unknown date format: $val");
|
||||
return gmmktime($matches[4],$matches[5],$matches[6],$matches[2],$matches[3],$matches[1]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Boolean Type of CFPropertyList
|
||||
* @author Rodney Rehm <rodney.rehm@medialize.de>
|
||||
* @author Christian Kruse <cjk@wwwtech.de>
|
||||
* @package plist
|
||||
* @subpackage plist.types
|
||||
*/
|
||||
class CFBoolean extends CFType {
|
||||
/**
|
||||
* Get XML-Node.
|
||||
* Returns <true> if $value is a true, <false> if $value is false.
|
||||
* @param DOMDocument $doc DOMDocument to create DOMNode in
|
||||
* @return DOMNode <true> or <false>-Element
|
||||
*/
|
||||
public function toXML(DOMDocument $doc) {
|
||||
return $doc->createElement($this->value ? 'true' : 'false');
|
||||
}
|
||||
|
||||
/**
|
||||
* convert value to binary representation
|
||||
* @param CFBinaryPropertyList The binary property list object
|
||||
* @return The offset in the object table
|
||||
*/
|
||||
public function toBinary(CFBinaryPropertyList &$bplist) {
|
||||
return $bplist->boolToBinary($this->value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Data Type of CFPropertyList
|
||||
* Note: Binary data is base64-encoded.
|
||||
* @author Rodney Rehm <rodney.rehm@medialize.de>
|
||||
* @author Christian Kruse <cjk@wwwtech.de>
|
||||
* @package plist
|
||||
* @subpackage plist.types
|
||||
*/
|
||||
class CFData extends CFType {
|
||||
/**
|
||||
* Create new Data CFType
|
||||
* @param string $value data to be contained by new object
|
||||
* @param boolean $already_coded if true $value will not be base64-encoded, defaults to false
|
||||
*/
|
||||
public function __construct($value=null,$already_coded=false) {
|
||||
if($already_coded) $this->value = $value;
|
||||
else $this->setValue($value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the CFType's value and base64-encode it.
|
||||
* <b>Note:</b> looks like base64_encode has troubles with UTF-8 encoded strings
|
||||
* @return void
|
||||
*/
|
||||
public function setValue($value) {
|
||||
//if(function_exists('mb_check_encoding') && mb_check_encoding($value, 'UTF-8')) $value = utf8_decode($value);
|
||||
$this->value = base64_encode($value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get base64 encoded data
|
||||
* @return string The base64 encoded data value
|
||||
*/
|
||||
public function getCodedValue() {
|
||||
return $this->value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the base64-decoded CFType's value.
|
||||
* @return mixed CFType's value
|
||||
*/
|
||||
public function getValue() {
|
||||
return base64_decode($this->value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get XML-Node.
|
||||
* @param DOMDocument $doc DOMDocument to create DOMNode in
|
||||
* @return DOMNode <data>-Element
|
||||
*/
|
||||
public function toXML(DOMDocument $doc) {
|
||||
return parent::toXML($doc, 'data');
|
||||
}
|
||||
|
||||
/**
|
||||
* convert value to binary representation
|
||||
* @param CFBinaryPropertyList The binary property list object
|
||||
* @return The offset in the object table
|
||||
*/
|
||||
public function toBinary(CFBinaryPropertyList &$bplist) {
|
||||
return $bplist->dataToBinary($this->getValue());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Array Type of CFPropertyList
|
||||
* @author Rodney Rehm <rodney.rehm@medialize.de>
|
||||
* @author Christian Kruse <cjk@wwwtech.de>
|
||||
* @package plist
|
||||
* @subpackage plist.types
|
||||
*/
|
||||
class CFArray extends CFType implements Iterator {
|
||||
/**
|
||||
* Position of iterator {@link http://php.net/manual/en/class.iterator.php}
|
||||
* @var integer
|
||||
*/
|
||||
protected $iteratorPosition = 0;
|
||||
|
||||
|
||||
/**
|
||||
* Create new CFType.
|
||||
* @param array $value Value of CFType
|
||||
*/
|
||||
public function __construct($value=array()) {
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the CFType's value
|
||||
* <b>Note:</b> this dummy does nothing
|
||||
* @return void
|
||||
*/
|
||||
public function setValue($value) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Add CFType to collection.
|
||||
* @param CFType $value CFType to add to collection
|
||||
* @return void
|
||||
* @uses $value for adding $value
|
||||
*/
|
||||
public function add($value) {
|
||||
$this->value[] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get CFType from collection.
|
||||
* @param integer $key Key of CFType to retrieve from collection
|
||||
* @return CFType CFType found at $key, null else
|
||||
* @uses $value for retrieving CFType of $key
|
||||
*/
|
||||
public function get($key) {
|
||||
if(isset($this->value[$key])) return $this->value[$key];
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove CFType from collection.
|
||||
* @param integer $key Key of CFType to removes from collection
|
||||
* @return CFType removed CFType, null else
|
||||
* @uses $value for removing CFType of $key
|
||||
*/
|
||||
public function del($key) {
|
||||
if(isset($this->value[$key])) unset($this->value[$key]);
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************************************
|
||||
* S E R I A L I Z I N G
|
||||
************************************************************************************************/
|
||||
|
||||
/**
|
||||
* Get XML-Node.
|
||||
* @param DOMDocument $doc DOMDocument to create DOMNode in
|
||||
* @return DOMNode <array>-Element
|
||||
*/
|
||||
public function toXML(DOMDocument $doc) {
|
||||
$node = $doc->createElement('array');
|
||||
|
||||
foreach($this->value as $value) $node->appendChild($value->toXML($doc));
|
||||
return $node;
|
||||
}
|
||||
|
||||
/**
|
||||
* convert value to binary representation
|
||||
* @param CFBinaryPropertyList The binary property list object
|
||||
* @return The offset in the object table
|
||||
*/
|
||||
public function toBinary(CFBinaryPropertyList &$bplist) {
|
||||
return $bplist->arrayToBinary($this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get CFType's value.
|
||||
* @return array primitive value
|
||||
* @uses $value for retrieving primitive of CFType
|
||||
*/
|
||||
public function toArray() {
|
||||
$a = array();
|
||||
foreach($this->value as $value) $a[] = $value->toArray();
|
||||
return $a;
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************************************
|
||||
* I T E R A T O R I N T E R F A C E
|
||||
************************************************************************************************/
|
||||
|
||||
/**
|
||||
* Rewind {@link $iteratorPosition} to first position (being 0)
|
||||
* @link http://php.net/manual/en/iterator.rewind.php
|
||||
* @return void
|
||||
* @uses $iteratorPosition set to 0
|
||||
*/
|
||||
public function rewind() {
|
||||
$this->iteratorPosition = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Iterator's current {@link CFType} identified by {@link $iteratorPosition}
|
||||
* @link http://php.net/manual/en/iterator.current.php
|
||||
* @return CFType current Item
|
||||
* @uses $iteratorPosition identify current key
|
||||
*/
|
||||
public function current() {
|
||||
return $this->value[$this->iteratorPosition];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Iterator's current key identified by {@link $iteratorPosition}
|
||||
* @link http://php.net/manual/en/iterator.key.php
|
||||
* @return string key of the current Item
|
||||
* @uses $iteratorPosition identify current key
|
||||
*/
|
||||
public function key() {
|
||||
return $this->iteratorPosition;
|
||||
}
|
||||
|
||||
/**
|
||||
* Increment {@link $iteratorPosition} to address next {@see CFType}
|
||||
* @link http://php.net/manual/en/iterator.next.php
|
||||
* @return void
|
||||
* @uses $iteratorPosition increment by 1
|
||||
*/
|
||||
public function next() {
|
||||
$this->iteratorPosition++;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test if {@link $iteratorPosition} addresses a valid element of {@link $value}
|
||||
* @link http://php.net/manual/en/iterator.valid.php
|
||||
* @return boolean true if current position is valid, false else
|
||||
* @uses $iteratorPosition test if within {@link $iteratorKeys}
|
||||
* @uses $iteratorPosition test if within {@link $value}
|
||||
*/
|
||||
public function valid() {
|
||||
return isset($this->value[$this->iteratorPosition]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Array Type of CFPropertyList
|
||||
* @author Rodney Rehm <rodney.rehm@medialize.de>
|
||||
* @author Christian Kruse <cjk@wwwtech.de>
|
||||
* @package plist
|
||||
* @subpackage plist.types
|
||||
*/
|
||||
class CFDictionary extends CFType implements Iterator {
|
||||
/**
|
||||
* Position of iterator {@link http://php.net/manual/en/class.iterator.php}
|
||||
* @var integer
|
||||
*/
|
||||
protected $iteratorPosition = 0;
|
||||
|
||||
/**
|
||||
* List of Keys for numerical iterator access {@link http://php.net/manual/en/class.iterator.php}
|
||||
* @var array
|
||||
*/
|
||||
protected $iteratorKeys = null;
|
||||
|
||||
|
||||
/**
|
||||
* Create new CFType.
|
||||
* @param array $value Value of CFType
|
||||
*/
|
||||
public function __construct($value=array()) {
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the CFType's value
|
||||
* <b>Note:</b> this dummy does nothing
|
||||
* @return void
|
||||
*/
|
||||
public function setValue($value) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Add CFType to collection.
|
||||
* @param string $key Key to add to collection
|
||||
* @param CFType $value CFType to add to collection
|
||||
* @return void
|
||||
* @uses $value for adding $key $value pair
|
||||
*/
|
||||
public function add($key, $value) {
|
||||
$this->value[$key] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get CFType from collection.
|
||||
* @param string $key Key of CFType to retrieve from collection
|
||||
* @return CFType CFType found at $key, null else
|
||||
* @uses $value for retrieving CFType of $key
|
||||
*/
|
||||
public function get($key) {
|
||||
if(isset($this->value[$key])) return $this->value[$key];
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove CFType from collection.
|
||||
* @param string $key Key of CFType to removes from collection
|
||||
* @return CFType removed CFType, null else
|
||||
* @uses $value for removing CFType of $key
|
||||
*/
|
||||
public function del($key) {
|
||||
if(isset($this->value[$key])) unset($this->value[$key]);
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************************************
|
||||
* S E R I A L I Z I N G
|
||||
************************************************************************************************/
|
||||
|
||||
/**
|
||||
* Get XML-Node.
|
||||
* @param DOMDocument $doc DOMDocument to create DOMNode in
|
||||
* @return DOMNode <dict>-Element
|
||||
*/
|
||||
public function toXML(DOMDocument $doc) {
|
||||
$node = $doc->createElement('dict');
|
||||
|
||||
foreach($this->value as $key => $value) {
|
||||
$node->appendChild($doc->createElement('key', $key));
|
||||
$node->appendChild($value->toXML($doc));
|
||||
}
|
||||
|
||||
return $node;
|
||||
}
|
||||
|
||||
/**
|
||||
* convert value to binary representation
|
||||
* @param CFBinaryPropertyList The binary property list object
|
||||
* @return The offset in the object table
|
||||
*/
|
||||
public function toBinary(CFBinaryPropertyList &$bplist) {
|
||||
return $bplist->dictToBinary($this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get CFType's value.
|
||||
* @return array primitive value
|
||||
* @uses $value for retrieving primitive of CFType
|
||||
*/
|
||||
public function toArray() {
|
||||
$a = array();
|
||||
|
||||
foreach($this->value as $key => $value) $a[$key] = $value->toArray();
|
||||
return $a;
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************************************
|
||||
* I T E R A T O R I N T E R F A C E
|
||||
************************************************************************************************/
|
||||
|
||||
/**
|
||||
* Rewind {@link $iteratorPosition} to first position (being 0)
|
||||
* @link http://php.net/manual/en/iterator.rewind.php
|
||||
* @return void
|
||||
* @uses $iteratorPosition set to 0
|
||||
* @uses $iteratorKeys store keys of {@link $value}
|
||||
*/
|
||||
public function rewind() {
|
||||
$this->iteratorPosition = 0;
|
||||
$this->iteratorKeys = array_keys($this->value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Iterator's current {@link CFType} identified by {@link $iteratorPosition}
|
||||
* @link http://php.net/manual/en/iterator.current.php
|
||||
* @return CFType current Item
|
||||
* @uses $iteratorPosition identify current key
|
||||
* @uses $iteratorKeys identify current value
|
||||
*/
|
||||
public function current() {
|
||||
return $this->value[$this->iteratorKeys[$this->iteratorPosition]];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Iterator's current key identified by {@link $iteratorPosition}
|
||||
* @link http://php.net/manual/en/iterator.key.php
|
||||
* @return string key of the current Item
|
||||
* @uses $iteratorPosition identify current key
|
||||
* @uses $iteratorKeys identify current value
|
||||
*/
|
||||
public function key() {
|
||||
return $this->iteratorKeys[$this->iteratorPosition];
|
||||
}
|
||||
|
||||
/**
|
||||
* Increment {@link $iteratorPosition} to address next {@see CFType}
|
||||
* @link http://php.net/manual/en/iterator.next.php
|
||||
* @return void
|
||||
* @uses $iteratorPosition increment by 1
|
||||
*/
|
||||
public function next() {
|
||||
$this->iteratorPosition++;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test if {@link $iteratorPosition} addresses a valid element of {@link $value}
|
||||
* @link http://php.net/manual/en/iterator.valid.php
|
||||
* @return boolean true if current position is valid, false else
|
||||
* @uses $iteratorPosition test if within {@link $iteratorKeys}
|
||||
* @uses $iteratorPosition test if within {@link $value}
|
||||
*/
|
||||
public function valid() {
|
||||
return isset($this->iteratorKeys[$this->iteratorPosition]) && isset($this->value[$this->iteratorKeys[$this->iteratorPosition]]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
99
Tools/projectGenerator/classes/plist/IOException.php
Normal file
99
Tools/projectGenerator/classes/plist/IOException.php
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
<?php
|
||||
/**
|
||||
* CFPropertyList
|
||||
* {@link http://developer.apple.com/documentation/Darwin/Reference/ManPages/man5/plist.5.html Property Lists}
|
||||
* @author Rodney Rehm <rodney.rehm@medialize.de>
|
||||
* @author Christian Kruse <cjk@wwwtech.de>
|
||||
* @package plist
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
* Basic Input / Output Exception
|
||||
* @author Rodney Rehm <rodney.rehm@medialize.de>
|
||||
* @author Christian Kruse <cjk@wwwtech.de>
|
||||
* @package plist
|
||||
*/
|
||||
class IOException extends Exception {
|
||||
/**
|
||||
* Flag telling the File could not be found
|
||||
*/
|
||||
const NOT_FOUND = 1;
|
||||
|
||||
/**
|
||||
* Flag telling the File is not readable
|
||||
*/
|
||||
const NOT_READABLE = 2;
|
||||
|
||||
/**
|
||||
* Flag telling the File is not writable
|
||||
*/
|
||||
const NOT_WRITABLE = 3;
|
||||
|
||||
/**
|
||||
* Flag telling there was a read error
|
||||
*/
|
||||
const READ_ERROR = 4;
|
||||
|
||||
/**
|
||||
* Flag telling there was a read error
|
||||
*/
|
||||
const WRITE_ERROR = 5;
|
||||
|
||||
/**
|
||||
* Create new IOException
|
||||
* @param string $path Source of the problem
|
||||
* @param integer $type Type of the problem
|
||||
*/
|
||||
public function __construct($path, $type=null) {
|
||||
parent::__construct( $path, $type );
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new FileNotFound-Exception
|
||||
* @param string $path Source of the problem
|
||||
* @return IOException new FileNotFound-Exception
|
||||
*/
|
||||
public static function notFound($path) {
|
||||
return new IOException( $path, self::NOT_FOUND );
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new FileNotReadable-Exception
|
||||
* @param string $path Source of the problem
|
||||
* @return IOException new FileNotReadable-Exception
|
||||
*/
|
||||
public static function notReadable($path) {
|
||||
return new IOException( $path, self::NOT_READABLE );
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new FileNotWritable-Exception
|
||||
* @param string $path Source of the problem
|
||||
* @return IOException new FileNotWritable-Exception
|
||||
*/
|
||||
public static function notWritable($path) {
|
||||
return new IOException( $path, self::NOT_WRITABLE );
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new ReadError-Exception
|
||||
* @param string $path Source of the problem
|
||||
* @return IOException new ReadError-Exception
|
||||
*/
|
||||
public static function readError($path) {
|
||||
return new IOException( $path, self::READ_ERROR );
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new WriteError-Exception
|
||||
* @param string $path Source of the problem
|
||||
* @return IOException new WriteError-Exception
|
||||
*/
|
||||
public static function writeError($path) {
|
||||
return new IOException( $path, self::WRITE_ERROR );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
22
Tools/projectGenerator/classes/plist/LICENSE
Normal file
22
Tools/projectGenerator/classes/plist/LICENSE
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
The MIT License
|
||||
|
||||
Copyright (c) 2009 Christian Kruse, Rodney Rehm
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
22
Tools/projectGenerator/classes/plist/PListException.php
Normal file
22
Tools/projectGenerator/classes/plist/PListException.php
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
/**
|
||||
* CFPropertyList
|
||||
* {@link http://developer.apple.com/documentation/Darwin/Reference/ManPages/man5/plist.5.html Property Lists}
|
||||
* @author Rodney Rehm <rodney.rehm@medialize.de>
|
||||
* @author Christian Kruse <cjk@wwwtech.de>
|
||||
* @package plist
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
* Exception for errors with the PList format
|
||||
* @author Rodney Rehm <rodney.rehm@medialize.de>
|
||||
* @author Christian Kruse <cjk@wwwtech.de>
|
||||
* @package plist
|
||||
*/
|
||||
class PListException extends Exception {
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
277
Tools/projectGenerator/libs/Torque3D.conf
Normal file
277
Tools/projectGenerator/libs/Torque3D.conf
Normal file
|
|
@ -0,0 +1,277 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
// Libs
|
||||
includeLib( 'mng' );
|
||||
includeLib( 'png' );
|
||||
includeLib( 'ungif' );
|
||||
includeLib( 'zlib' );
|
||||
includeLib( 'jpeg' );
|
||||
includeLib( 'tinyxml' );
|
||||
includeLib( 'opcode' );
|
||||
includeLib( 'squish' );
|
||||
includeLib( 'collada_dom' );
|
||||
includeLib( 'pcre' );
|
||||
includeLib( 'convexDecomp' );
|
||||
|
||||
// Use FMOD on consoles
|
||||
if ( Generator::$platform != "360" && Generator::$platform != "ps3" )
|
||||
{
|
||||
includeLib( 'libvorbis' );
|
||||
includeLib( 'libogg' );
|
||||
includeLib( 'libtheora' );
|
||||
}
|
||||
|
||||
$ext = "DLL";
|
||||
if ( Generator::$platform == "mac" )
|
||||
$ext = "Bundle";
|
||||
|
||||
// We need to pick the right physics engine to include.
|
||||
global $USE_BULLET_PHYSICS;
|
||||
global $PHYSX_SDK_PATH;
|
||||
|
||||
//some platforms will not want a shared config
|
||||
$useSharedConfig = true;
|
||||
if ( Generator::$platform == "360" || Generator::$platform == "ps3" )
|
||||
$useSharedConfig = false;
|
||||
|
||||
//begin either a shared lib config, or a static app config
|
||||
if ( $useSharedConfig )
|
||||
beginSharedLibConfig( getGameProjectName().' '.$ext, '{C0FCDFF9-E125-412E-87BC-2D89DB971CAB}', 'game', getGameProjectName() );
|
||||
else
|
||||
beginAppConfig( getGameProjectName(), '{C0FCDFF9-E125-412E-87BC-2D89DB971CAB}', 'game', getGameProjectName() );
|
||||
|
||||
/// Prefs
|
||||
addProjectDefine( 'TORQUE_SHADERGEN' );
|
||||
addProjectDefine( 'TORQUE_UNICODE' );
|
||||
|
||||
if ( $useSharedConfig )
|
||||
addProjectDefine( 'TORQUE_SHARED' );
|
||||
|
||||
/// For OPCODE
|
||||
addProjectDefine( 'BAN_OPCODE_AUTOLINK' );
|
||||
addProjectDefine( 'ICE_NO_DLL' );
|
||||
addProjectDefine( 'TORQUE_OPCODE' );
|
||||
|
||||
// For libTomCrypt
|
||||
addProjectDefine( 'LTC_NO_PROTOTYPES' );
|
||||
|
||||
// Additional includes
|
||||
addIncludePath( "../../game/shaders" );
|
||||
|
||||
addLibIncludePath( "lmng" );
|
||||
addLibIncludePath( "lpng" );
|
||||
addLibIncludePath( "ljpeg" );
|
||||
addLibIncludePath( "lungif" );
|
||||
addLibIncludePath( "zlib" );
|
||||
addLibIncludePath( "tinyxml" );
|
||||
addLibIncludePath( "opcode" );
|
||||
addLibIncludePath( "squish" );
|
||||
addLibIncludePath( "convexDecomp" );
|
||||
|
||||
if ( Generator::$platform != "360" && Generator::$platform != "ps3" )
|
||||
{
|
||||
addLibIncludePath( "libvorbis/include" );
|
||||
addLibIncludePath( "libogg/include" );
|
||||
addLibIncludePath( "libtheora/include" );
|
||||
}
|
||||
|
||||
// Modules
|
||||
|
||||
includeModule( 'Torque3D' );
|
||||
includeModule( 'core' );
|
||||
includeModule( 'dsound' );
|
||||
includeModule( 'fmod');
|
||||
includeModule( 'T3D' );
|
||||
includeModule( 'advancedLighting' );
|
||||
includeModule( 'basicLighting' );
|
||||
includeModule( 'collada' );
|
||||
|
||||
if ( Generator::$platform != "360" && Generator::$platform != "ps3" )
|
||||
{
|
||||
includeModule( 'vorbis' );
|
||||
includeModule( 'theora' );
|
||||
}
|
||||
|
||||
if(Generator::$platform == "mac" || Generator::$platform == "win32")
|
||||
includeModule( 'openal' );
|
||||
|
||||
// Demo functionality
|
||||
if (getDemoBuild())
|
||||
includeModule( 'demo' );
|
||||
if (getWatermarkBuild())
|
||||
includeModule( 'demoWatermark' );
|
||||
if (getPurchaseScreenBuild())
|
||||
includeModule( 'demoPurchaseScreen' );
|
||||
if (getObjectLimitBuild())
|
||||
includeModule( 'demoObjectLimit' );
|
||||
if (getTimeOutBuild())
|
||||
includeModule( 'demoTimeout' );
|
||||
|
||||
// Dependencies
|
||||
|
||||
addProjectDependency( 'lmng' );
|
||||
addProjectDependency( 'lpng' );
|
||||
addProjectDependency( 'lungif' );
|
||||
addProjectDependency( 'ljpeg' );
|
||||
addProjectDependency( 'zlib' );
|
||||
addProjectDependency( 'tinyxml' );
|
||||
addProjectDependency( 'opcode' );
|
||||
addProjectDependency( 'squish' );
|
||||
addProjectDependency( 'collada_dom' );
|
||||
addProjectDependency( 'pcre' );
|
||||
addProjectDependency( 'convexDecomp' );
|
||||
|
||||
if ( Generator::$platform != "360" && Generator::$platform != "ps3" )
|
||||
{
|
||||
addProjectDependency( 'libvorbis' );
|
||||
addProjectDependency( 'libogg' );
|
||||
addProjectDependency( 'libtheora' );
|
||||
}
|
||||
|
||||
if ( $USE_BULLET_PHYSICS == true )
|
||||
{
|
||||
includeModule( 'bullet' );
|
||||
addProjectDependency( 'libbullet' );
|
||||
}
|
||||
|
||||
if ( $PHYSX_SDK_PATH != "" )
|
||||
{
|
||||
includeModule( 'physx' );
|
||||
addProjectDependency( 'nxCharacter' );
|
||||
addProjectDependency( 'nxuStream' );
|
||||
}
|
||||
|
||||
if ( Generator::$platform == "mac" )
|
||||
{
|
||||
addProjectDefine( '__MACOSX__' );
|
||||
addProjectDefine( 'LTM_DESC' );
|
||||
}
|
||||
|
||||
if (Generator::$platform == "win32")
|
||||
{
|
||||
setProjectModuleDefinitionFile('../../' . getLibSrcDir() . 'Torque3D/msvc/torque3d.def');
|
||||
|
||||
addProjectDefine( 'UNICODE' );
|
||||
addProjectDefine( 'INITGUID' );
|
||||
addProjectDefine( '_CRT_SECURE_NO_DEPRECATE' );
|
||||
|
||||
|
||||
addProjectLibInput('COMCTL32.LIB');
|
||||
addProjectLibInput('COMDLG32.LIB');
|
||||
addProjectLibInput('USER32.LIB');
|
||||
addProjectLibInput('ADVAPI32.LIB');
|
||||
addProjectLibInput('GDI32.LIB');
|
||||
addProjectLibInput('WINMM.LIB');
|
||||
addProjectLibInput('WSOCK32.LIB');
|
||||
addProjectLibInput('vfw32.lib');
|
||||
addProjectLibInput('Imm32.lib');
|
||||
addProjectLibInput('d3d9.lib');
|
||||
addProjectLibInput('d3dx9.lib');
|
||||
addProjectLibInput('DxErr.lib');
|
||||
addProjectLibInput('ole32.lib');
|
||||
addProjectLibInput('shell32.lib');
|
||||
addProjectLibInput('oleaut32.lib');
|
||||
addProjectLibInput('version.lib');
|
||||
}
|
||||
|
||||
// Include project specific sources in the project/buildFiles/config/projectCode.conf
|
||||
$projectCode = realpath($argv[1])."/buildFiles/config/projectCode.conf";
|
||||
echo( "\n - Loading project code configuration from ".$projectCode."\n");
|
||||
include $projectCode;
|
||||
|
||||
//end shared/static config
|
||||
if ( $useSharedConfig )
|
||||
endSharedLibConfig();
|
||||
else
|
||||
endAppConfig();
|
||||
|
||||
//add the shared application only if this is a shared config
|
||||
if ( $useSharedConfig )
|
||||
{
|
||||
/////// Application Config
|
||||
beginSharedAppConfig( getGameProjectName(), '{CDECDFF9-E125-523F-87BC-2D89DB971CAB}' );
|
||||
|
||||
addProjectDefine( 'TORQUE_SHARED' );
|
||||
|
||||
addEngineSrcDir( 'main' );
|
||||
|
||||
if (Generator::$platform == "win32")
|
||||
{
|
||||
addProjectDefine( 'WIN32' );
|
||||
addProjectDependency( getGameProjectName() . ' DLL' );
|
||||
}
|
||||
|
||||
if (Generator::$platform == "mac")
|
||||
{
|
||||
addProjectDefine( '__MACOSX__' );
|
||||
addProjectDependency( getGameProjectName() . ' Bundle' );
|
||||
addProjectDependency( getGameProjectName() . ' Plugin' );
|
||||
}
|
||||
|
||||
endSharedAppConfig();
|
||||
}
|
||||
|
||||
// Add solution references for Visual Studio projects
|
||||
if (Generator::$platform == "win32" || Generator::$platform == "360" || Generator::$platform == "ps3")
|
||||
{
|
||||
if ( !$useSharedConfig )
|
||||
beginSolutionConfig( getGameProjectName(), '{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}' );
|
||||
|
||||
addSolutionProjectRef( getGameProjectName() );
|
||||
if ( $useSharedConfig )
|
||||
addSolutionProjectRef( getGameProjectName() . ' DLL' );
|
||||
addSolutionProjectRef( 'collada_dom' );
|
||||
addSolutionProjectRef( 'ljpeg' );
|
||||
addSolutionProjectRef( 'lmng' );
|
||||
addSolutionProjectRef( 'lpng' );
|
||||
addSolutionProjectRef( 'lungif' );
|
||||
addSolutionProjectRef( 'opcode' );
|
||||
addSolutionProjectRef( 'pcre' );
|
||||
addSolutionProjectRef( 'squish' );
|
||||
addSolutionProjectRef( 'tinyxml' );
|
||||
addSolutionProjectRef( 'zlib' );
|
||||
addSolutionProjectRef( 'convexDecomp' );
|
||||
|
||||
if (Generator::$platform == "win32")
|
||||
{
|
||||
addSolutionProjectRef( 'libogg' );
|
||||
addSolutionProjectRef( 'libvorbis' );
|
||||
addSolutionProjectRef( 'libtheora' );
|
||||
}
|
||||
|
||||
if ( $USE_BULLET_PHYSICS == true )
|
||||
addSolutionProjectRef( 'libbullet' );
|
||||
|
||||
if ( $PHYSX_SDK_PATH != "" )
|
||||
{
|
||||
// For PhysX support.
|
||||
addSolutionProjectRef( 'nxCharacter' );
|
||||
addSolutionProjectRef( 'nxuStream' );
|
||||
}
|
||||
|
||||
if ( !$useSharedConfig )
|
||||
endSolutionConfig();
|
||||
}
|
||||
|
||||
?>
|
||||
77
Tools/projectGenerator/libs/WebDeploy.conf
Normal file
77
Tools/projectGenerator/libs/WebDeploy.conf
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
if (Generator::$platform == "win32")
|
||||
{
|
||||
// Include the web deployment settings
|
||||
$webDeployConf = realpath($argv[1])."/buildFiles/config/webDeploy.conf";
|
||||
echo( "\n - Loading web deployment configuration from ".$webDeployConf."\n");
|
||||
|
||||
require_once( $webDeployConf);
|
||||
|
||||
// The NP plugin MUST begin with NP for Firefox to recognize it
|
||||
// Also, the plugin uses the filename to locate your game library, so much begin with either "NP " or "IE " and end with " Plugin"
|
||||
// If you want to change this behavior, you can modify the plugin source code in webCommon.cpp
|
||||
|
||||
WebDeploymentWindows::$npPluginName = 'NP ' . getGameProjectName() . ' Plugin';
|
||||
WebDeploymentWindows::$axPluginName = 'IE ' . getGameProjectName() . ' Plugin';
|
||||
|
||||
beginActiveXConfig( WebDeploymentWindows::$axPluginName, '{CDECDFF9-E125-412E-87CD-2D89DB971CAB}' );
|
||||
|
||||
addProjectDependency( getGameProjectName() . ' DLL' );
|
||||
|
||||
endActiveXConfig();
|
||||
|
||||
|
||||
beginNPPluginConfig( WebDeploymentWindows::$npPluginName, '{CDECDFF9-E125-412E-87BC-2D89DB971CAB}' );
|
||||
|
||||
addProjectDependency( getGameProjectName() . ' DLL' );
|
||||
|
||||
endNPPluginConfig();
|
||||
|
||||
// If not building for web deploy, these can be removed
|
||||
addSolutionProjectRef( WebDeploymentWindows::$npPluginName );
|
||||
addSolutionProjectRef( WebDeploymentWindows::$axPluginName );
|
||||
|
||||
}
|
||||
|
||||
if (Generator::$platform == "mac")
|
||||
{
|
||||
// Include the web deployment settings
|
||||
$webDeployConf = realpath($argv[1])."/buildFiles/config/webDeploy.mac.conf";
|
||||
echo( "\n - Loading web deployment configuration from ".$webDeployConf."\n");
|
||||
|
||||
require_once( $webDeployConf);
|
||||
|
||||
WebDeploymentOSX::$safariPluginName = getGameProjectName() . ' Plugin';
|
||||
|
||||
beginSafariConfig( getGameProjectName() . ' Plugin', '{CCDEDFF9-E136-412E-87BC-2D89DB971CAB}' );
|
||||
|
||||
// Dependencies
|
||||
addProjectDependency( getGameProjectName() . ' Bundle' );
|
||||
|
||||
endSafariConfig();
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
50
Tools/projectGenerator/libs/collada_dom.conf
Normal file
50
Tools/projectGenerator/libs/collada_dom.conf
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginLibConfig( 'collada_dom', '{25D580F1-2A2C-48EB-89C6-B54CAF4BDC4E}' );
|
||||
|
||||
// Source
|
||||
addLibSrcDir( 'collada/src/1.4/dom' );
|
||||
addLibSrcDir( 'collada/src/dae' );
|
||||
addLibSrcDir( 'collada/src/modules/LIBXMLPlugin' );
|
||||
addLibSrcDir( 'collada/src/modules/stdErrPlugin' );
|
||||
addLibSrcDir( 'collada/src/modules/STLDatabase' );
|
||||
|
||||
// Additional includes
|
||||
addLibIncludePath( 'collada/include' );
|
||||
addLibIncludePath( 'collada/include/1.4' );
|
||||
|
||||
addLibIncludePath( "pcre" );
|
||||
addLibIncludePath( "tinyxml" );
|
||||
|
||||
// Defines
|
||||
addProjectDefine( 'DOM_INCLUDE_TINYXML' );
|
||||
addProjectDefine( 'PCRE_STATIC' );
|
||||
|
||||
// Dependencies
|
||||
addProjectDependency( 'pcre' );
|
||||
addProjectDependency( 'tinyxml' );
|
||||
|
||||
endLibConfig();
|
||||
|
||||
?>
|
||||
43
Tools/projectGenerator/libs/convexDecomp.conf
Normal file
43
Tools/projectGenerator/libs/convexDecomp.conf
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginLibConfig( 'convexDecomp', '{4EF87A4E-16ED-4E64-BF04-841B2675AEE0}' );
|
||||
|
||||
// Source
|
||||
addLibSrcDir( 'convexDecomp' );
|
||||
|
||||
// Additional includes
|
||||
addLibIncludePath( 'convexDecomp' );
|
||||
|
||||
if ( Generator::$platform == "360" )
|
||||
addProjectDefine( '_XBOX' );
|
||||
else if ( Generator::$platform == "ps3" )
|
||||
addProjectDefine( '__CELLOS_LV2__' );
|
||||
else if ( Generator::$platform == "mac" )
|
||||
addProjectDefine( '__APPLE__' );
|
||||
else if ( Generator::$platform == "win32" )
|
||||
addProjectDefine( 'WIN32' );
|
||||
|
||||
endLibConfig();
|
||||
|
||||
?>
|
||||
30
Tools/projectGenerator/libs/d3dx8dll.conf
Normal file
30
Tools/projectGenerator/libs/d3dx8dll.conf
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginLibConfig( 'd3dx8dll', '{38337D6D-B574-4871-9FF1-0B7B4981AA74}' );
|
||||
|
||||
includeModule( 'd3dx8dll' );
|
||||
|
||||
endLibConfig();
|
||||
|
||||
?>
|
||||
30
Tools/projectGenerator/libs/jpeg.conf
Normal file
30
Tools/projectGenerator/libs/jpeg.conf
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginLibConfig( 'ljpeg', '{E2A746EC-8AD3-4D45-AFBB-5A81F705E9BE}' );
|
||||
|
||||
includeModule( 'jpeg' );
|
||||
|
||||
endLibConfig();
|
||||
|
||||
?>
|
||||
58
Tools/projectGenerator/libs/libbullet.conf
Normal file
58
Tools/projectGenerator/libs/libbullet.conf
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginLibConfig( 'libbullet', '{4368B65C-F5EF-4D28-B533-B02A04EBE921}' );
|
||||
|
||||
// Source
|
||||
addLibSrcDir( 'bullet/src' );
|
||||
addLibSrcDir( 'bullet/src/BulletCollision' );
|
||||
addLibSrcDir( 'bullet/src/BulletCollision/BroadphaseCollision' );
|
||||
addLibSrcDir( 'bullet/src/BulletCollision/CollisionDispatch' );
|
||||
addLibSrcDir( 'bullet/src/BulletCollision/CollisionShapes' );
|
||||
addLibSrcDir( 'bullet/src/BulletCollision/Gimpact' );
|
||||
addLibSrcDir( 'bullet/src/BulletCollision/NarrowPhaseCollision' );
|
||||
addLibSrcDir( 'bullet/src/BulletDynamics' );
|
||||
addLibSrcDir( 'bullet/src/BulletDynamics/Character' );
|
||||
addLibSrcDir( 'bullet/src/BulletDynamics/ConstraintSolver' );
|
||||
addLibSrcDir( 'bullet/src/BulletDynamics/Dynamics' );
|
||||
addLibSrcDir( 'bullet/src/BulletDynamics/Vehicle' );
|
||||
addLibSrcDir( 'bullet/src/LinearMath' );
|
||||
|
||||
// TODO: Can we do multicore on OSX?
|
||||
if ( Generator::$platform == "win32" ||
|
||||
Generator::$platform == "360" )
|
||||
{
|
||||
addProjectDefine( 'WIN32' );
|
||||
|
||||
addLibSrcDir( 'bullet/src/BulletMultiThreaded' );
|
||||
addLibSrcDir( 'bullet/src/BulletMultiThreaded/MiniCLTask' );
|
||||
addLibSrcDir( 'bullet/src/BulletMultiThreaded/SpuNarrowPhaseCollisionTask' );
|
||||
addLibIncludePath( 'bullet/src/BulletMultiThreaded/vectormath/scalar/cpp' );
|
||||
}
|
||||
|
||||
// Additional includes
|
||||
addLibIncludePath( 'bullet/src' );
|
||||
|
||||
endLibConfig();
|
||||
|
||||
?>
|
||||
30
Tools/projectGenerator/libs/libogg.conf
Normal file
30
Tools/projectGenerator/libs/libogg.conf
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginLibConfig( 'libogg', '{719523DB-7C6B-416B-B68D-B2579477239B}' );
|
||||
|
||||
includeModule( 'libogg' );
|
||||
|
||||
endLibConfig();
|
||||
|
||||
?>
|
||||
30
Tools/projectGenerator/libs/libtheora.conf
Normal file
30
Tools/projectGenerator/libs/libtheora.conf
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginLibConfig( 'libtheora', '{B0B6B74B-2045-43B0-85BF-A24BF2D25155}' );
|
||||
|
||||
includeModule( 'libtheora' );
|
||||
|
||||
endLibConfig();
|
||||
|
||||
?>
|
||||
30
Tools/projectGenerator/libs/libvorbis.conf
Normal file
30
Tools/projectGenerator/libs/libvorbis.conf
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginLibConfig( 'libvorbis', '{F8240290-BA36-4696-967F-C2611CEE501A}' );
|
||||
|
||||
includeModule( 'libvorbis' );
|
||||
|
||||
endLibConfig();
|
||||
|
||||
?>
|
||||
33
Tools/projectGenerator/libs/mng.conf
Normal file
33
Tools/projectGenerator/libs/mng.conf
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginLibConfig( 'lmng', '{73D9048F-55AA-4EF6-BF33-3A811DC47FCE}' );
|
||||
// Defines
|
||||
addProjectDefine( 'MNG_OPTIMIZE_OBJCLEANUP' );
|
||||
|
||||
// Modules
|
||||
includeModule( 'mng' );
|
||||
|
||||
endLibConfig();
|
||||
|
||||
?>
|
||||
30
Tools/projectGenerator/libs/nxCharacter.conf
Normal file
30
Tools/projectGenerator/libs/nxCharacter.conf
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginLibConfig( 'nxCharacter', '{CDECDFF9-E125-412E-87CD-2D89DB972DAC}' );
|
||||
|
||||
includeModule( 'nxCharacter' );
|
||||
|
||||
endLibConfig();
|
||||
|
||||
?>
|
||||
30
Tools/projectGenerator/libs/nxuStream.conf
Normal file
30
Tools/projectGenerator/libs/nxuStream.conf
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginLibConfig( 'nxuStream', '{CDECDFF9-E125-412E-87CD-2E97DB971CAB}' );
|
||||
|
||||
includeModule( 'nxuStream' );
|
||||
|
||||
endLibConfig();
|
||||
|
||||
?>
|
||||
34
Tools/projectGenerator/libs/opcode.conf
Normal file
34
Tools/projectGenerator/libs/opcode.conf
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginLibConfig( 'opcode', '{C0B7BA09-E125-412E-86B0-2D89DB971CAB}' );
|
||||
|
||||
// Defines
|
||||
addProjectDefine( 'TORQUE_OPCODE' );
|
||||
addProjectDefine( 'ICE_NO_DLL' );
|
||||
|
||||
includeModule( 'opcode' );
|
||||
|
||||
endLibConfig();
|
||||
|
||||
?>
|
||||
38
Tools/projectGenerator/libs/pcre.conf
Normal file
38
Tools/projectGenerator/libs/pcre.conf
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginLibConfig( 'pcre', '{910A3F94-E18D-4CB9-87DC-382C75F6B941}' );
|
||||
|
||||
// Source
|
||||
addLibSrcDir( 'pcre' );
|
||||
|
||||
// Additional includes
|
||||
addLibIncludePath( 'pcre' );
|
||||
|
||||
// Defines
|
||||
addProjectDefine( 'PCRE_STATIC' );
|
||||
addProjectDefine( 'HAVE_CONFIG_H' );
|
||||
|
||||
endLibConfig();
|
||||
|
||||
?>
|
||||
30
Tools/projectGenerator/libs/png.conf
Normal file
30
Tools/projectGenerator/libs/png.conf
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginLibConfig( 'lpng', '{63D63B58-3DB8-4844-9648-C5AA04B4C1BC}' );
|
||||
|
||||
includeModule( 'png' );
|
||||
|
||||
endLibConfig();
|
||||
|
||||
?>
|
||||
30
Tools/projectGenerator/libs/squish.conf
Normal file
30
Tools/projectGenerator/libs/squish.conf
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginLibConfig( 'squish', '{3FFDBB50-6E27-4E66-B1EC-750663C9D799}' );
|
||||
|
||||
includeModule( 'squish' );
|
||||
|
||||
endLibConfig();
|
||||
|
||||
?>
|
||||
30
Tools/projectGenerator/libs/tinyxml.conf
Normal file
30
Tools/projectGenerator/libs/tinyxml.conf
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginLibConfig( 'tinyxml', '{470600AC-F51E-4F4E-9406-3B517BF112AC}' );
|
||||
|
||||
includeModule( 'tinyxml' );
|
||||
|
||||
endLibConfig();
|
||||
|
||||
?>
|
||||
32
Tools/projectGenerator/libs/ungif.conf
Normal file
32
Tools/projectGenerator/libs/ungif.conf
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginLibConfig( 'lungif', '{5C9BE928-8510-451E-B866-5C2ECF3E592F}' );
|
||||
|
||||
addProjectDefine( '_GBA_NO_FILEIO' );
|
||||
|
||||
includeModule( 'ungif' );
|
||||
|
||||
endLibConfig();
|
||||
|
||||
?>
|
||||
30
Tools/projectGenerator/libs/zlib.conf
Normal file
30
Tools/projectGenerator/libs/zlib.conf
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginLibConfig( 'zlib', '{3FFDBB50-6E27-4E66-B1EC-750663C9D784}' );
|
||||
|
||||
includeModule( 'zlib' );
|
||||
|
||||
endLibConfig();
|
||||
|
||||
?>
|
||||
92
Tools/projectGenerator/modules/T3D.inc
Normal file
92
Tools/projectGenerator/modules/T3D.inc
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
// 3D
|
||||
addEngineSrcDir('collision');
|
||||
addEngineSrcDir('interior');
|
||||
addEngineSrcDir('materials');
|
||||
addEngineSrcDir('lighting');
|
||||
addEngineSrcDir('lighting/common');
|
||||
addEngineSrcDir('renderInstance');
|
||||
addEngineSrcDir('scene');
|
||||
addEngineSrcDir('scene/culling');
|
||||
addEngineSrcDir('scene/zones');
|
||||
addEngineSrcDir('scene/mixin');
|
||||
addEngineSrcDir('shaderGen');
|
||||
addEngineSrcDir('terrain');
|
||||
addEngineSrcDir('environment');
|
||||
|
||||
addEngineSrcDir('forest');
|
||||
addEngineSrcDir('forest/ts');
|
||||
addEngineSrcDir('forest/editor');
|
||||
|
||||
addEngineSrcDir('ts');
|
||||
addEngineSrcDir('ts/arch');
|
||||
addEngineSrcDir('physics');
|
||||
addEngineSrcDir('gui/3d');
|
||||
addEngineSrcDir('postFx' );
|
||||
|
||||
// 3D game
|
||||
addEngineSrcDir('T3D');
|
||||
addEngineSrcDir('T3D/examples');
|
||||
addEngineSrcDir('T3D/fps');
|
||||
addEngineSrcDir('T3D/fx');
|
||||
addEngineSrcDir('T3D/vehicles');
|
||||
addEngineSrcDir('T3D/physics');
|
||||
addEngineSrcDir('T3D/decal');
|
||||
addEngineSrcDir('T3D/sfx');
|
||||
addEngineSrcDir('T3D/gameBase');
|
||||
addEngineSrcDir('T3D/turret');
|
||||
|
||||
global $TORQUE_HIFI_NET;
|
||||
if ( $TORQUE_HIFI_NET == true )
|
||||
{
|
||||
addProjectDefines( 'TORQUE_HIFI_NET' );
|
||||
addEngineSrcDir('T3D/gameBase/hifi');
|
||||
}
|
||||
else
|
||||
addEngineSrcDir('T3D/gameBase/std');
|
||||
|
||||
// Plstform specific stuff.
|
||||
switch( Generator::$platform )
|
||||
{
|
||||
case "360":
|
||||
addEngineSrcDir('ts/arch/360');
|
||||
// Fall through
|
||||
|
||||
case "win32":
|
||||
addEngineSrcDir( 'terrain/hlsl' );
|
||||
addEngineSrcDir( 'forest/hlsl' );
|
||||
break;
|
||||
|
||||
case "ps3":
|
||||
addEngineSrcDir('ts/arch/ps3');
|
||||
// Fall through
|
||||
|
||||
case "mac":
|
||||
addEngineSrcDir( 'terrain/glsl' );
|
||||
addEngineSrcDir( 'forest/glsl' );
|
||||
break;
|
||||
}
|
||||
|
||||
?>
|
||||
30
Tools/projectGenerator/modules/Torque3D.inc
Normal file
30
Tools/projectGenerator/modules/Torque3D.inc
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
beginModule( 'Torque3D' );
|
||||
|
||||
|
||||
endModule();
|
||||
|
||||
?>
|
||||
46
Tools/projectGenerator/modules/advancedLighting.inc
Normal file
46
Tools/projectGenerator/modules/advancedLighting.inc
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginModule( 'advancedLighting' );
|
||||
|
||||
addProjectDefine( 'TORQUE_ADVANCED_LIGHTING' );
|
||||
|
||||
addEngineSrcDir( 'lighting/advanced' );
|
||||
addEngineSrcDir( 'lighting/shadowMap' );
|
||||
|
||||
switch( Generator::$platform )
|
||||
{
|
||||
case "win32":
|
||||
addEngineSrcDir( 'lighting/advanced/hlsl' );
|
||||
break;
|
||||
case "360":
|
||||
addEngineSrcDir( 'lighting/advanced/hlsl' );
|
||||
break;
|
||||
case "mac":
|
||||
addEngineSrcDir( 'lighting/advanced/glsl' );
|
||||
break;
|
||||
}
|
||||
|
||||
endModule();
|
||||
|
||||
?>
|
||||
33
Tools/projectGenerator/modules/basicLighting.inc
Normal file
33
Tools/projectGenerator/modules/basicLighting.inc
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginModule( 'basicLighting' );
|
||||
|
||||
addProjectDefine( 'TORQUE_BASIC_LIGHTING' );
|
||||
|
||||
addEngineSrcDir( 'lighting/basic' );
|
||||
addEngineSrcDir( 'lighting/shadowMap' );
|
||||
|
||||
endModule();
|
||||
|
||||
?>
|
||||
44
Tools/projectGenerator/modules/bullet.inc
Normal file
44
Tools/projectGenerator/modules/bullet.inc
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginModule( 'bullet' );
|
||||
|
||||
addProjectDefine( "TORQUE_PHYSICS_BULLET" );
|
||||
addProjectDefine( "TORQUE_PHYSICS_ENABLED" );
|
||||
|
||||
addEngineSrcDir( "T3D/physics/bullet" );
|
||||
|
||||
includeLib( 'libbullet' );
|
||||
addLibIncludePath( "bullet/src" );
|
||||
|
||||
if (inProjectConfig())
|
||||
{
|
||||
addProjectDependency( 'libbullet' );
|
||||
|
||||
if (Generator::$platform != "mac")
|
||||
addSolutionProjectRef( 'libbullet' );
|
||||
}
|
||||
|
||||
endModule();
|
||||
|
||||
?>
|
||||
39
Tools/projectGenerator/modules/collada.inc
Normal file
39
Tools/projectGenerator/modules/collada.inc
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginModule( 'collada' );
|
||||
|
||||
// Collada Loader
|
||||
addProjectDefine( 'TORQUE_COLLADA' );
|
||||
addProjectDefine( 'DOM_INCLUDE_TINYXML' );
|
||||
addProjectDefine( 'PCRE_STATIC' );
|
||||
|
||||
addEngineSrcDir( 'ts/collada' );
|
||||
addEngineSrcDir( 'ts/loader' );
|
||||
|
||||
addLibIncludePath( 'collada/include' );
|
||||
addLibIncludePath( 'collada/include/1.4' );
|
||||
|
||||
endModule();
|
||||
|
||||
?>
|
||||
199
Tools/projectGenerator/modules/core.inc
Normal file
199
Tools/projectGenerator/modules/core.inc
Normal file
|
|
@ -0,0 +1,199 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
addEngineSrcDir('sfx/media');
|
||||
addEngineSrcDir('sfx/null');
|
||||
addEngineSrcDir('sfx');
|
||||
|
||||
|
||||
// Components
|
||||
addEngineSrcDir('component');
|
||||
addEngineSrcDir('component/interfaces');
|
||||
|
||||
// Core
|
||||
if (Generator::isApp())
|
||||
addSrcDir( '../source' );
|
||||
|
||||
addEngineSrcDir('console');
|
||||
addEngineSrcDir('core');
|
||||
addEngineSrcDir('core/stream');
|
||||
addEngineSrcDir('core/strings');
|
||||
addEngineSrcDir('core/util');
|
||||
addEngineSrcDir('core/util/test');
|
||||
addEngineSrcDir('core/util/journal');
|
||||
addEngineSrcDir('core/util/journal/test');
|
||||
addEngineSrcDir('core/util/zip');
|
||||
addEngineSrcDir('core/util/zip/unitTests');
|
||||
addEngineSrcDir('core/util/zip/compressors');
|
||||
addEngineSrcDir('i18n');
|
||||
addEngineSrcDir('sim');
|
||||
addEngineSrcDir('unit/tests');
|
||||
addEngineSrcDir('unit');
|
||||
addEngineSrcDir('util');
|
||||
addEngineSrcDir('windowManager');
|
||||
addEngineSrcDir('windowManager/torque');
|
||||
addEngineSrcDir('windowManager/test');
|
||||
addEngineSrcDir('math');
|
||||
addEngineSrcDir('math/util');
|
||||
addEngineSrcDir('math/test');
|
||||
addEngineSrcDir('platform');
|
||||
addEngineSrcDir('cinterface');
|
||||
|
||||
switch( Generator::$platform )
|
||||
{
|
||||
case "win32":
|
||||
case "mac":
|
||||
case "linux":
|
||||
addEngineSrcDir('platform/nativeDialogs');
|
||||
addEngineSrcDir('platform/menus');
|
||||
addEngineSrcDir('platform/test');
|
||||
break;
|
||||
}
|
||||
|
||||
addEngineSrcDir('platform/threads');
|
||||
addEngineSrcDir('platform/async');
|
||||
addEngineSrcDir('app');
|
||||
addEngineSrcDir('app/net');
|
||||
|
||||
// Moved this here temporarily because PopupMenu uses on it and is currently in core
|
||||
addEngineSrcDir('util/messaging');
|
||||
|
||||
switch( Generator::$platform )
|
||||
{
|
||||
case "win32":
|
||||
addEngineSrcDir('platformWin32');
|
||||
addEngineSrcDir('platformWin32/nativeDialogs');
|
||||
addEngineSrcDir('platformWin32/menus');
|
||||
addEngineSrcDir('platformWin32/threads');
|
||||
addEngineSrcDir('platformWin32/videoInfo');
|
||||
addEngineSrcDir('platformWin32/minidump');
|
||||
addEngineSrcDir('windowManager/win32');
|
||||
|
||||
break;
|
||||
|
||||
case "mac":
|
||||
addEngineSrcDir('platformMac');
|
||||
addEngineSrcDir('platformMac/menus');
|
||||
addEngineSrcDir('platformPOSIX');
|
||||
addEngineSrcDir('windowManager/mac');
|
||||
break;
|
||||
|
||||
case "360":
|
||||
addEngineSrcDir('platformXbox');
|
||||
addEngineSrcDir('platformXbox/threads');
|
||||
addEngineSrcDir('windowManager/360');
|
||||
break;
|
||||
|
||||
case "ps3":
|
||||
addEngineSrcDir('platformPS3');
|
||||
addEngineSrcDir('platformPS3/threads');
|
||||
addEngineSrcDir('windowManager/ps3');
|
||||
break;
|
||||
|
||||
case "linux":
|
||||
case "linux_dedicated":
|
||||
addEngineSrcDir('platformX86UNIX');
|
||||
addEngineSrcDir('platformX86UNIX/threads');
|
||||
addEngineSrcDir('platformPOSIX');
|
||||
break;
|
||||
}
|
||||
|
||||
// GFX
|
||||
addEngineSrcDir( 'gfx/Null' );
|
||||
addEngineSrcDir( 'gfx/test' );
|
||||
addEngineSrcDir( 'gfx/bitmap' );
|
||||
addEngineSrcDir( 'gfx/bitmap/loaders' );
|
||||
addEngineSrcDir( 'gfx/util' );
|
||||
addEngineSrcDir( 'gfx/video' );
|
||||
addEngineSrcDir( 'gfx' );
|
||||
addEngineSrcDir( 'shaderGen' );
|
||||
|
||||
switch( Generator::$platform )
|
||||
{
|
||||
case "win32":
|
||||
//addEngineSrcDir( 'gfx/D3D8' );
|
||||
addEngineSrcDir( 'gfx/D3D' );
|
||||
addEngineSrcDir( 'gfx/D3D9' );
|
||||
addEngineSrcDir( 'gfx/D3D9/pc' );
|
||||
addEngineSrcDir( 'shaderGen/hlsl' );
|
||||
break;
|
||||
case "360":
|
||||
addEngineSrcDir( 'gfx/D3D9' );
|
||||
addEngineSrcDir( 'gfx/D3D9/360' );
|
||||
addEngineSrcDir( 'shaderGen/hlsl' );
|
||||
addEngineSrcDir( 'shaderGen/360' );
|
||||
break;
|
||||
case "mac":
|
||||
addEngineSrcDir( 'gfx/gl/ggl/mac' );
|
||||
|
||||
// GFX - GGL
|
||||
addEngineSrcDir( 'gfx/gl' );
|
||||
addEngineSrcDir( 'gfx/gl/ggl' );
|
||||
addEngineSrcDir( 'gfx/gl/ggl/generated' );
|
||||
addEngineSrcDir( 'shaderGen/glsl' );
|
||||
break;
|
||||
case "ps3":
|
||||
addEngineSrcDir( 'gfx/gl/ggl/ps3' );
|
||||
|
||||
// GFX - GGL
|
||||
addEngineSrcDir( 'gfx/gl' );
|
||||
addEngineSrcDir( 'gfx/gl/ggl' );
|
||||
addEngineSrcDir( 'gfx/gl/ggl/generated' );
|
||||
addEngineSrcDir( 'shaderGen/glsl' );
|
||||
break;
|
||||
}
|
||||
|
||||
// GFX - Sim dependent
|
||||
addEngineSrcDir( 'gfx/sim');
|
||||
|
||||
// GUI
|
||||
addEngineSrcDir('gui/buttons');
|
||||
addEngineSrcDir('gui/containers');
|
||||
addEngineSrcDir('gui/controls');
|
||||
|
||||
addEngineSrcDir('gui/core');
|
||||
addEngineSrcDir('gui/game');
|
||||
addEngineSrcDir('gui/shiny');
|
||||
addEngineSrcDir('gui/utility');
|
||||
addEngineSrcDir('gui');
|
||||
|
||||
// Include tools for non-tool builds (or define player if a tool build)
|
||||
includeModule( 'tools' );
|
||||
|
||||
/////////////////////
|
||||
// Additional includes
|
||||
addIncludePath( '../../source' ); // product source (relative to solution output directories)
|
||||
addIncludePath( getAppEngineSrcDir() ); // main engine source dir relative to app project file
|
||||
addIncludePath( getAppLibSrcDir() ); // main lib source dir relative to app project file
|
||||
|
||||
if ( Generator::$platform == "win32" )
|
||||
{
|
||||
addIncludePath( getAppLibSrcDir() . 'directx8' );
|
||||
addIncludePath( getAppLibSrcDir() . 'openal/win32' );
|
||||
|
||||
addProjectLibDir( getAppLibSrcDir() . 'SDL/win32' );
|
||||
addProjectLibDir( getAppLibSrcDir() . 'unicode' );
|
||||
addProjectLibDir( getAppLibSrcDir() . 'directx8' );
|
||||
}
|
||||
|
||||
?>
|
||||
41
Tools/projectGenerator/modules/d3dx8dll.inc
Normal file
41
Tools/projectGenerator/modules/d3dx8dll.inc
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginModule( 'd3dx8dll' );
|
||||
|
||||
// Source
|
||||
addLibSrcDir( 'd3dx8dll' );
|
||||
|
||||
// Additional includes
|
||||
addLibIncludePath( 'd3dxdll' );
|
||||
addLibIncludePath( 'directx8' );
|
||||
|
||||
// Libs
|
||||
addProjectLibDir( 'directx8' );
|
||||
|
||||
// Defines
|
||||
addProjectDefines( '_WINDOWS', '_USRDLL', 'D3DX8DLL_EXPORTS' );
|
||||
|
||||
endModule();
|
||||
|
||||
?>
|
||||
37
Tools/projectGenerator/modules/dsound.inc
Normal file
37
Tools/projectGenerator/modules/dsound.inc
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginModule( 'dsound' );
|
||||
|
||||
if ( Generator::$platform == "win32" )
|
||||
{
|
||||
addEngineSrcDir('sfx/dsound');
|
||||
addEngineSrcDir('sfx/xaudio');
|
||||
addProjectLibInput('x3daudio.lib');
|
||||
}
|
||||
else if ( Generator::$platform == "360" )
|
||||
addEngineSrcDir('sfx/xaudio');
|
||||
|
||||
endModule();
|
||||
|
||||
?>
|
||||
77
Tools/projectGenerator/modules/fmod.inc
Normal file
77
Tools/projectGenerator/modules/fmod.inc
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginModule( 'fmod' );
|
||||
$allgood = true;
|
||||
|
||||
// Additional includes
|
||||
switch( Generator::$platform )
|
||||
{
|
||||
case "win32":
|
||||
case "mac":
|
||||
addLibIncludePath( 'fmod/inc' );
|
||||
break;
|
||||
|
||||
case "360":
|
||||
// Assume 32-bit system
|
||||
$FMOD_PATH = "C:/Program Files/FMOD SoundSystem/FMOD Programmers API Xbox 360/";
|
||||
|
||||
// Ohnoes! Try 64-bit!
|
||||
if (!file_exists($FMOD_PATH))
|
||||
$FMOD_PATH = "C:/Program Files (x86)/FMOD SoundSystem/FMOD Programmers API Xbox 360/";
|
||||
|
||||
if (!file_exists($FMOD_PATH))
|
||||
{
|
||||
$allgood = false;
|
||||
echo "\n\n FMOD integration failed to find Xbox360 installation!\n";
|
||||
echo " - FMOD_PATH is set to $FMOD_PATH\n\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "\n\nFMOD integration for Torque3D on the Xbox360\n";
|
||||
echo " - FMOD_PATH is set to $FMOD_PATH\n\n";
|
||||
|
||||
// Fmod API
|
||||
addIncludePath($FMOD_PATH . 'api/inc');
|
||||
addProjectLibDir($FMOD_PATH . 'api/lib');
|
||||
|
||||
// Fmod Designer API
|
||||
addIncludePath($FMOD_PATH . 'fmoddesignerapi/api/inc');
|
||||
addProjectLibDir($FMOD_PATH . 'fmoddesignerapi/api/lib');
|
||||
|
||||
addProjectLibInput('fmodxbox360.lib');
|
||||
|
||||
addProjectLibInput('xmahal.lib');
|
||||
addProjectLibInput('xmic.lib');
|
||||
|
||||
// Prior to June 2009 XDK, FMOD requires xaudio.lib
|
||||
//addProjectLibInput('xaudio.lib');
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// Source
|
||||
if($allgood)
|
||||
addEngineSrcDir('sfx/fmod');
|
||||
endModule();
|
||||
?>
|
||||
37
Tools/projectGenerator/modules/jpeg.inc
Normal file
37
Tools/projectGenerator/modules/jpeg.inc
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginModule( 'ljpeg' );
|
||||
|
||||
// Source
|
||||
addLibSrcDir( 'ljpeg' );
|
||||
|
||||
// Additional includes
|
||||
addLibIncludePath( 'ljpeg' );
|
||||
|
||||
// Defines
|
||||
if ( Generator::$platform == "360" )
|
||||
addProjectDefines( 'NO_GETENV;' );
|
||||
|
||||
endModule();
|
||||
?>
|
||||
36
Tools/projectGenerator/modules/libode.inc
Normal file
36
Tools/projectGenerator/modules/libode.inc
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginModule( 'libode' );
|
||||
|
||||
// Source
|
||||
addLibSrcDir( 'ode' );
|
||||
|
||||
// Additional includes
|
||||
addLibIncludePath( 'opcode' );
|
||||
addLibIncludePath( 'ode' );
|
||||
addLibIncludePath( '' );
|
||||
|
||||
endModule();
|
||||
|
||||
?>
|
||||
29
Tools/projectGenerator/modules/libogg.inc
Normal file
29
Tools/projectGenerator/modules/libogg.inc
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
addLibSrcDir( 'libogg/src' );
|
||||
addLibSrcDir( 'libogg/include/ogg' );
|
||||
|
||||
addLibIncludePath( 'libogg/include' );
|
||||
|
||||
?>
|
||||
58
Tools/projectGenerator/modules/libtheora.inc
Normal file
58
Tools/projectGenerator/modules/libtheora.inc
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginModule( 'libtheora' );
|
||||
|
||||
addLibSrcDir( 'libtheora/include/theora' );
|
||||
addLibSrcDir( 'libtheora/lib' );
|
||||
addLibSrcDir( 'libtheora/lib/dec' );
|
||||
|
||||
switch( Generator::$platform )
|
||||
{
|
||||
case "win32":
|
||||
addLibSrcDir( 'libtheora/lib/dec/x86_vc' );
|
||||
break;
|
||||
|
||||
default:
|
||||
addLibSrcDir( 'libtheora/lib/dec/x86' );
|
||||
break;
|
||||
}
|
||||
|
||||
// As we don't use the encoder, disable this for now.
|
||||
addLibSrcDir( 'libtheora/lib/enc' );
|
||||
|
||||
switch( Generator::$platform )
|
||||
{
|
||||
case "win32":
|
||||
addLibSrcDir( 'libtheora/lib/enc/x86_32_vs' );
|
||||
break;
|
||||
default:
|
||||
addLibSrcDir( 'libtheora/lib/enc/x86_32' );
|
||||
break;
|
||||
}
|
||||
|
||||
addLibIncludePath( 'libtheora/include' );
|
||||
addLibIncludePath( 'libogg/include' );
|
||||
|
||||
endModule();
|
||||
?>
|
||||
48
Tools/projectGenerator/modules/libvorbis.inc
Normal file
48
Tools/projectGenerator/modules/libvorbis.inc
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
// NOTE: This all the source in the libvorbis library which
|
||||
// according to the README includes libvorbis, libvorbisfile,
|
||||
// and libvorbisenc.
|
||||
//
|
||||
// We really only need libvorbis and libvorbisfile for loading
|
||||
// ogg vorbis files, but the source is distrubuted all in one
|
||||
// folder and the project generator does not allow excluding
|
||||
// files.
|
||||
//
|
||||
// In an effort to make upgrading this library simple the
|
||||
// the inclusion of the encoder is acceptable. It should
|
||||
// be filtered out of the build by the linker.
|
||||
|
||||
addLibSrcDir( 'libvorbis/lib' );
|
||||
addLibSrcDir( 'libvorbis/lib/books/coupled' );
|
||||
addLibSrcDir( 'libvorbis/lib/books/floor' );
|
||||
addLibSrcDir( 'libvorbis/lib/books/uncoupled' );
|
||||
addLibSrcDir( 'libvorbis/lib/modes' );
|
||||
addLibSrcDir( 'libvorbis/include/vorbis' );
|
||||
|
||||
addLibIncludePath( 'libvorbis/lib' );
|
||||
addLibIncludePath( 'libvorbis/include' );
|
||||
addLibIncludePath( 'libogg/include' );
|
||||
|
||||
?>
|
||||
35
Tools/projectGenerator/modules/mng.inc
Normal file
35
Tools/projectGenerator/modules/mng.inc
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginModule( 'lmng' );
|
||||
// Source files
|
||||
addLibSrcDir( 'lmng' );
|
||||
|
||||
// Additional includes
|
||||
addLibIncludePath( 'lmng' );
|
||||
addLibIncludePath( 'lpng' );
|
||||
addLibIncludePath( 'zlib' );
|
||||
addLibIncludePath( 'ljpeg' );
|
||||
endModule();
|
||||
|
||||
?>
|
||||
45
Tools/projectGenerator/modules/nxCharacter.inc
Normal file
45
Tools/projectGenerator/modules/nxCharacter.inc
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginModule( 'nxCharacter' );
|
||||
|
||||
global $PHYSX_SDK_PATH;
|
||||
|
||||
// Defines
|
||||
addProjectDefines( 'WIN32' );
|
||||
addProjectDefines( 'NXCHARACTER_STATIC' );
|
||||
|
||||
// Source
|
||||
addSrcDir( $PHYSX_SDK_PATH . '/SDKs/NxCharacter/src' );
|
||||
addSrcDir( $PHYSX_SDK_PATH . '/SDKs/NxCharacter/include' );
|
||||
|
||||
// Additional includes
|
||||
addIncludePath( $PHYSX_SDK_PATH . '/SDKs/NxCharacter/include' );
|
||||
addIncludePath( $PHYSX_SDK_PATH . '/SDKs/Physics/include' );
|
||||
addIncludePath( $PHYSX_SDK_PATH . '/SDKs/Foundation/include' );
|
||||
addIncludePath( $PHYSX_SDK_PATH . '/SDKs/PhysXLoader/include' );
|
||||
addIncludePath( $PHYSX_SDK_PATH . '/SDKs/Cooking/include' );
|
||||
|
||||
endModule();
|
||||
|
||||
?>
|
||||
43
Tools/projectGenerator/modules/nxuStream.inc
Normal file
43
Tools/projectGenerator/modules/nxuStream.inc
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginModule( 'nxuStream' );
|
||||
|
||||
global $PHYSX_SDK_PATH;
|
||||
|
||||
// Defines
|
||||
addProjectDefines( 'WIN32' );
|
||||
|
||||
// Source
|
||||
addSrcDir( $PHYSX_SDK_PATH . '/Tools/NxuStream2' );
|
||||
|
||||
// Additional includes
|
||||
addIncludePath( $PHYSX_SDK_PATH . '/Tools/NxuStream2' );
|
||||
addIncludePath( $PHYSX_SDK_PATH . '/SDKs/Physics/include' );
|
||||
addIncludePath( $PHYSX_SDK_PATH . '/SDKs/Foundation/include' );
|
||||
addIncludePath( $PHYSX_SDK_PATH . '/SDKs/PhysXLoader/include' );
|
||||
addIncludePath( $PHYSX_SDK_PATH . '/SDKs/Cooking/include' );
|
||||
|
||||
endModule();
|
||||
|
||||
?>
|
||||
39
Tools/projectGenerator/modules/opcode.inc
Normal file
39
Tools/projectGenerator/modules/opcode.inc
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginModule( 'opcode' );
|
||||
|
||||
// Defines
|
||||
addProjectDefine( 'TORQUE_OPCODE' );
|
||||
addProjectDefine( 'ICE_NO_DLL' );
|
||||
|
||||
// Source
|
||||
addLibSrcDir( 'opcode' );
|
||||
addLibSrcDir( 'opcode/Ice' );
|
||||
|
||||
// Additional includes
|
||||
addLibIncludePath( 'opcode' );
|
||||
|
||||
endModule();
|
||||
|
||||
?>
|
||||
32
Tools/projectGenerator/modules/openal.inc
Normal file
32
Tools/projectGenerator/modules/openal.inc
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
// OpenAL
|
||||
addEngineSrcDir('sfx/openal');
|
||||
addEngineSrcDir('sfx/openal/mac');
|
||||
addEngineSrcDir('sfx/openal/win32');
|
||||
|
||||
if ( Generator::$platform == "win32" )
|
||||
addIncludePath( getAppLibSrcDir() . 'openal/win32' );
|
||||
|
||||
?>
|
||||
30
Tools/projectGenerator/modules/pestTimer.inc
Normal file
30
Tools/projectGenerator/modules/pestTimer.inc
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
includeModule( 'demo' );
|
||||
|
||||
addProjectDefine( 'TORQUE_DEMO_PESTTIMER' );
|
||||
|
||||
addEngineSrcDir('demo/pestTimer');
|
||||
|
||||
?>
|
||||
107
Tools/projectGenerator/modules/physX.inc
Normal file
107
Tools/projectGenerator/modules/physX.inc
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginModule( 'physX' );
|
||||
|
||||
// Look for the optional global from the project.conf.
|
||||
global $PHYSX_SDK_PATH;
|
||||
if (!$PHYSX_SDK_PATH)
|
||||
{
|
||||
// First look for an environment var.
|
||||
$PHYSX_SDK_PATH = getenv( "TORQUE_PHYSX_PATH" );
|
||||
|
||||
if (strlen($PHYSX_SDK_PATH) == 0 || !file_exists($PHYSX_SDK_PATH))
|
||||
{
|
||||
// Sometimes users get confused and use this var.
|
||||
$PHYSX_SDK_PATH = getenv( "PHYSX_SDK_PATH" );
|
||||
|
||||
if (strlen($PHYSX_SDK_PATH) == 0 || !file_exists($PHYSX_SDK_PATH))
|
||||
{
|
||||
// Since neither environment var worked try for
|
||||
// the default PhysX SDK install location.
|
||||
$PHYSX_SDK_PATH = getenv("ProgramFiles") . "/NVIDIA Corporation/NVIDIA PhysX SDK/v2.8.4_win";
|
||||
|
||||
// Last channce... try the x86 default install path.
|
||||
if (!file_exists($PHYSX_SDK_PATH))
|
||||
$PHYSX_SDK_PATH = getenv("ProgramFiles(x86)") . "/NVIDIA Corporation/NVIDIA PhysX SDK/v2.8.4_win";
|
||||
}
|
||||
}
|
||||
|
||||
// We need forward slashes for paths.
|
||||
$PHYSX_SDK_PATH = str_replace( "\\", "/", $PHYSX_SDK_PATH);
|
||||
|
||||
// Remove trailing slashes.
|
||||
$PHYSX_SDK_PATH = rtrim($PHYSX_SDK_PATH, " /");
|
||||
}
|
||||
|
||||
// If we still don't have the SDK path then let the user know.
|
||||
if (!file_exists($PHYSX_SDK_PATH))
|
||||
{
|
||||
trigger_error(
|
||||
"\n*******************************************************************".
|
||||
"\n".
|
||||
"\n We were not able to find a valid path to the PhysX SDK!".
|
||||
"\n".
|
||||
"\n You must install the latest PhysX SDK and set the path via a".
|
||||
"\n \$PHYSX_SDK_PATH variable in your buildFiles/project.conf file".
|
||||
"\n or by setting the TORQUE_PHYSX_PATH system environment variable".
|
||||
"\n (may require a reboot).".
|
||||
"\n".
|
||||
"\n*******************************************************************".
|
||||
"\n", E_USER_ERROR );
|
||||
}
|
||||
|
||||
addProjectDefine( "TORQUE_PHYSICS_PHYSX" );
|
||||
addProjectDefine( "TORQUE_PHYSICS_ENABLED" );
|
||||
|
||||
// Source
|
||||
addEngineSrcDir( "T3D/physics/physX" );
|
||||
|
||||
// Includes
|
||||
addIncludePath( $PHYSX_SDK_PATH . "/SDKs/Physics/include" );
|
||||
addIncludePath( $PHYSX_SDK_PATH . "/SDKs/Foundation/include" );
|
||||
addIncludePath( $PHYSX_SDK_PATH . "/SDKs/PhysXLoader/include" );
|
||||
addIncludePath( $PHYSX_SDK_PATH . "/SDKs/Cooking/include" );
|
||||
addIncludePath( $PHYSX_SDK_PATH . "/SDKs/NxCharacter/include" );
|
||||
addIncludePath( $PHYSX_SDK_PATH . "/Tools/NxuStream2" );
|
||||
|
||||
// Libs
|
||||
addProjectLibDir( $PHYSX_SDK_PATH . "/SDKs/lib/Win32" );
|
||||
addProjectLibInput( "PhysXCooking.lib" );
|
||||
addProjectLibInput( "PhysXLoader.lib" );
|
||||
|
||||
// For PhysX support.
|
||||
includeLib( 'nxCharacter' );
|
||||
includeLib( 'nxuStream' );
|
||||
|
||||
if (inProjectConfig())
|
||||
{
|
||||
addProjectDependency( 'nxCharacter' );
|
||||
addProjectDependency( 'nxuStream' );
|
||||
addSolutionProjectRef( 'nxCharacter' );
|
||||
addSolutionProjectRef( 'nxuStream' );
|
||||
}
|
||||
|
||||
endModule();
|
||||
|
||||
?>
|
||||
37
Tools/projectGenerator/modules/png.inc
Normal file
37
Tools/projectGenerator/modules/png.inc
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginModule( 'lpng' );
|
||||
// Source
|
||||
addLibSrcDir( 'lpng' );
|
||||
|
||||
// Additional includes
|
||||
addLibIncludePath( 'zlib' );
|
||||
addLibIncludePath( 'lpng' );
|
||||
|
||||
// Defines
|
||||
if ( Generator::$platform == "360" )
|
||||
addProjectDefines( 'PNG_NO_ASSEMBLER_CODE' );
|
||||
|
||||
endModule();
|
||||
?>
|
||||
34
Tools/projectGenerator/modules/squish.inc
Normal file
34
Tools/projectGenerator/modules/squish.inc
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginModule( 'squish' );
|
||||
|
||||
// Source
|
||||
addLibSrcDir( 'squish' );
|
||||
|
||||
// Additional includes
|
||||
addLibIncludePath( 'squish' );
|
||||
|
||||
endModule();
|
||||
|
||||
?>
|
||||
31
Tools/projectGenerator/modules/theora.inc
Normal file
31
Tools/projectGenerator/modules/theora.inc
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
addProjectDefine( 'TORQUE_OGGTHEORA' );
|
||||
addProjectDefine( 'TORQUE_OGGVORIBS' ); // Currently used by Theora video code.
|
||||
|
||||
addEngineSrcDir( 'core/ogg' );
|
||||
addEngineSrcDir( 'gfx/video' );
|
||||
addEngineSrcDir( 'gui/theora' );
|
||||
|
||||
?>
|
||||
28
Tools/projectGenerator/modules/tinyxml.inc
Normal file
28
Tools/projectGenerator/modules/tinyxml.inc
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
addLibSrcDir( 'tinyxml' );
|
||||
|
||||
addLibIncludePath( 'tinyxml' );
|
||||
|
||||
?>
|
||||
39
Tools/projectGenerator/modules/tools.inc
Normal file
39
Tools/projectGenerator/modules/tools.inc
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
if (!getToolBuild())
|
||||
{
|
||||
addProjectDefine( 'TORQUE_PLAYER' );
|
||||
}
|
||||
else
|
||||
{
|
||||
// 3D Tools
|
||||
addEngineSrcDir('gui/worldEditor');
|
||||
addEngineSrcDir('environment/editors');
|
||||
addEngineSrcDir('forest/editor');
|
||||
|
||||
addEngineSrcDir('gui/editor');
|
||||
addEngineSrcDir('gui/editor/inspector');
|
||||
}
|
||||
|
||||
?>
|
||||
33
Tools/projectGenerator/modules/ungif.inc
Normal file
33
Tools/projectGenerator/modules/ungif.inc
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginModule( 'lungif' );
|
||||
|
||||
// Source
|
||||
addLibSrcDir( 'lungif' );
|
||||
|
||||
// Additional includes
|
||||
addLibIncludePath( 'lungif' );
|
||||
|
||||
endModule();
|
||||
?>
|
||||
26
Tools/projectGenerator/modules/vorbis.inc
Normal file
26
Tools/projectGenerator/modules/vorbis.inc
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
addProjectDefine( 'TORQUE_OGGVORBIS' );
|
||||
|
||||
?>
|
||||
30
Tools/projectGenerator/modules/webDeploy.inc
Normal file
30
Tools/projectGenerator/modules/webDeploy.inc
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginModule( 'webDeploy' );
|
||||
|
||||
includeLib( 'WebDeploy');
|
||||
|
||||
endModule();
|
||||
|
||||
?>
|
||||
28
Tools/projectGenerator/modules/xaudio.inc
Normal file
28
Tools/projectGenerator/modules/xaudio.inc
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
// XAudio
|
||||
addEngineSrcDir('sfx/xaudio');
|
||||
addProjectLibInput('x3daudio.lib');
|
||||
|
||||
?>
|
||||
34
Tools/projectGenerator/modules/zlib.inc
Normal file
34
Tools/projectGenerator/modules/zlib.inc
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
beginModule( 'zlib' );
|
||||
|
||||
// Source
|
||||
addLibSrcDir( 'zlib' );
|
||||
|
||||
// Additional includes
|
||||
addLibIncludePath( 'zlib' );
|
||||
|
||||
endModule();
|
||||
|
||||
?>
|
||||
216
Tools/projectGenerator/newProject.php
Normal file
216
Tools/projectGenerator/newProject.php
Normal file
|
|
@ -0,0 +1,216 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
// Yes, I still need to comment most of the stuff in here. I tried to do a quick port over of the stuff from the bat and
|
||||
// skipped laying it out
|
||||
function copyDir( $source, $target, $exclude = array())
|
||||
{
|
||||
if ( is_dir( $source ) )
|
||||
{
|
||||
@mkdir( $target, 0777, true );
|
||||
|
||||
$dirRef = dir( $source );
|
||||
|
||||
while ( FALSE !== ( $entry = $dirRef->read() ) )
|
||||
{
|
||||
// Read through exclude list. If the current directory is on it, skip it
|
||||
$skip = false;
|
||||
foreach($exclude as $exclFile)
|
||||
{
|
||||
if($entry == $exclFile)
|
||||
{
|
||||
$skip = true;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if ( $entry == '.' || $entry == '..' || $skip )
|
||||
continue;
|
||||
|
||||
$entryFullPath = $source . '/' . $entry;
|
||||
if ( is_dir( $entryFullPath ) )
|
||||
{
|
||||
copyDir( $entryFullPath, $target . '/' . $entry, $exclude );
|
||||
continue;
|
||||
}
|
||||
|
||||
copy( $entryFullPath, $target . '/' . $entry );
|
||||
echo("Copying " . $entry . " to " . $target . "/\n");
|
||||
}
|
||||
|
||||
$dirRef->close();
|
||||
}
|
||||
else
|
||||
copy( $source, $target );
|
||||
}
|
||||
|
||||
// Function taken from PHP.net
|
||||
function rm_recursive($filepath)
|
||||
{
|
||||
if (is_dir($filepath) && !is_link($filepath))
|
||||
{
|
||||
if ($dirRef = opendir($filepath))
|
||||
{
|
||||
while (($curfile = readdir($dirRef)) !== false)
|
||||
{
|
||||
if ($curfile == '.' || $curfile == '..')
|
||||
continue;
|
||||
|
||||
if (!rm_recursive($filepath.'/'.$curfile))
|
||||
throw new Exception($filepath.'/'.$curfile.' could not be deleted.');
|
||||
}
|
||||
|
||||
closedir($dirRef);
|
||||
}
|
||||
|
||||
return rmdir($filepath);
|
||||
}
|
||||
|
||||
return unlink($filepath);
|
||||
}
|
||||
|
||||
// Replaces all instances of the given text string from the given file
|
||||
function ReplaceTextInFile($file, $string, $replace)
|
||||
{
|
||||
$buf = "";
|
||||
$confg = file($file);
|
||||
|
||||
foreach ($confg as $line)
|
||||
{
|
||||
$line = str_replace($string, $replace, $line);
|
||||
$buf .= $line;
|
||||
}
|
||||
|
||||
$confg = fopen($file, "w");
|
||||
fwrite($confg, $buf);
|
||||
fclose($confg);
|
||||
}
|
||||
|
||||
// Flag that notes whether a simple (non-fatal) error has occurred
|
||||
$withError = false;
|
||||
|
||||
// Minimum number of passed arguments is 3
|
||||
if($argc < 4)
|
||||
exit("\nError! Invalid number of arguments! Correct format is Project_Name Torque_Root Project_Destination_Path (optional -O overwrite existing files)\n");
|
||||
// If there are 5 args and the last one isn't the override flag, it's a fatal error
|
||||
else if($argc == 5 && $argv[4] != "-O")
|
||||
exit("\nInvalid argument of $argv[4]! Should be -O (optional overwrite existing files flag)\n");
|
||||
|
||||
// Define our main working paths
|
||||
$torqueDir = $argv[2];
|
||||
$newPath = $argv[3] . "/".$argv[1] . "/";
|
||||
$templPath = $torqueDir . "/Templates/Full/";
|
||||
|
||||
// Aesthetics...php doesn't care
|
||||
$newPath = str_replace("//", "/", $newPath);
|
||||
$templPath = str_replace("//", "/", $templPath);
|
||||
|
||||
// Check if template path exists (ie user didn't do something wrong)
|
||||
if(is_dir($templPath))
|
||||
{
|
||||
// If the destination path doesn't exist, make it
|
||||
if(!is_dir($argv[3]))
|
||||
mkdir($argv[3], 0777, true);
|
||||
|
||||
// If the project folder exists, check for -O
|
||||
if(is_dir($newPath))
|
||||
{
|
||||
//If there's no -O, we exit out
|
||||
if($argv[4] != "-O")
|
||||
exit("\nProject folder already exists! Use -O as 4th argument is you wish to overwrite");
|
||||
|
||||
// Otherwise we delete the other .exe and .torsion as they won't otherwise be overwritten
|
||||
else
|
||||
{
|
||||
if(!unlink($newPath . "game/" . $argv[1] . ".exe") ||
|
||||
!unlink($newPath . "game/" . $argv[1] . ".torsion"))
|
||||
{
|
||||
echo("\nError deleting old files " . $argv[1] . ".exe and " . $argv[1] . ".torsion\n");
|
||||
$withError = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Read directory exclusion list from file (most likely provided by GUI prompt)
|
||||
$exclude = file($templPath . "exclude.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
||||
|
||||
// By default exclude .svn, config, and buildFiles
|
||||
if($exclude == false)
|
||||
{
|
||||
$exclude = array(".svn", "Link");
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
$exclude[] = ".svn";
|
||||
$exclude[] = "Link";
|
||||
}
|
||||
|
||||
copyDir($templPath, $newPath, $exclude);
|
||||
}
|
||||
|
||||
// If the given template directory does not exist, we exit
|
||||
else{
|
||||
exit("\nTemplate directory does not exist at $templPath!");
|
||||
}
|
||||
|
||||
//Replace references to template
|
||||
ReplaceTextInFile($newPath . "buildFiles/config/project.conf", "Full", $argv[1]);
|
||||
ReplaceTextInFile($newPath . "buildFiles/config/project.360.conf", "Full", $argv[1]);
|
||||
ReplaceTextInFile($newPath . "buildFiles/config/project.mac.conf", "Full", $argv[1]);
|
||||
ReplaceTextInFile($newPath . "game/Template.torsion", "Full", $argv[1]);
|
||||
ReplaceTextInFile($newPath . "game/main.cs", "Full", $argv[1]);
|
||||
ReplaceTextInFile($newPath . "source/torqueConfig.h", "Full", $argv[1]);
|
||||
|
||||
//Rename the executable and the torsion project file
|
||||
if(!rename($newPath . "game/Full.exe", $newPath . "game/" . $argv[1] . ".exe"))
|
||||
{
|
||||
echo("\n\nCould not rename Full.exe! You may need to rename manually\n");
|
||||
$withError = true;
|
||||
}
|
||||
|
||||
if(!rename($newPath . "game/Full.torsion", $newPath . "game/" . $argv[1] . ".torsion"))
|
||||
{
|
||||
echo("\n\nCould not rename Full.torsion! You may need to rename manually\n");
|
||||
$withError = true;
|
||||
}
|
||||
|
||||
chdir($newPath);
|
||||
|
||||
// Generate the projects and solutions using the generateProjects.bat
|
||||
// We don't hand in the $torqueDir if our output path is in the Torque folders
|
||||
// Probably should make this smarter so that it can handle directories that
|
||||
// are in the the Torque folder but are not at the same level as GameExamples and Projects
|
||||
if (stristr($newPath, $torqueDir))
|
||||
passthru("generateProjects.bat noPause");
|
||||
else
|
||||
passthru("generateProjects.bat noPause $torqueDir");
|
||||
|
||||
// If there wasn't an error, print happy message
|
||||
if(!$withError)
|
||||
echo("\nProject creation complete!\nYou can find your new project at $newPath.");
|
||||
// If there was, print ultra mega sad message
|
||||
else
|
||||
echo("\nProject creation completed, however there were some errors. Please verify that your new project is correct.\nYou can find your new project at $newPath.");
|
||||
|
||||
?>
|
||||
490
Tools/projectGenerator/projectGenUtils.inc
Normal file
490
Tools/projectGenerator/projectGenUtils.inc
Normal file
|
|
@ -0,0 +1,490 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
//
|
||||
// This file is now the 'API' which just wraps all the internal stuff nicely.
|
||||
//
|
||||
//--------------------------------------------------------------------------------
|
||||
|
||||
function beginProject($name, $sharedConfig)
|
||||
{
|
||||
// Set the game project name, this is what your game's exe/dll will be called
|
||||
setGameProjectName($name);
|
||||
|
||||
if (Generator::$platform == "win32" && $sharedConfig)
|
||||
beginSolutionConfig( $name, '{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}' );
|
||||
|
||||
|
||||
}
|
||||
|
||||
function endProject($sharedConfig)
|
||||
{
|
||||
if (Generator::$platform == "win32" && $sharedConfig)
|
||||
endSolutionConfig();
|
||||
}
|
||||
|
||||
function beginSolutionConfig( $name, $guid = '' )
|
||||
{
|
||||
Generator::beginSolution( $name, $guid );
|
||||
}
|
||||
|
||||
function addSolutionProjectRef( $pname )
|
||||
{
|
||||
Generator::addSolutionProjectRef( $pname );
|
||||
}
|
||||
|
||||
// Add a reference to an external project, this is used for WPF projects currently
|
||||
// as adding all the various designer/xaml/stuff to the project generator is probably overkill
|
||||
// However, it is nice to not have to add the project to the solution whenever you run the project generator
|
||||
function addSolutionProjectRefExt( $pname, $ppath, $pguid )
|
||||
{
|
||||
Generator::addSolutionProjectRefExt( $pname, $ppath, $pguid );
|
||||
}
|
||||
|
||||
function endSolutionConfig()
|
||||
{
|
||||
Generator::endSolution();
|
||||
}
|
||||
|
||||
function setPlatform( $platform )
|
||||
{
|
||||
echo(' - Setting platform to: ' . $platform . "\n");
|
||||
|
||||
Generator::$platform = $platform;
|
||||
}
|
||||
|
||||
function includeLib( $libName )
|
||||
{
|
||||
//echo( "GLP: " . Generator::getGeneratorLibsPath() . $libName . "\n" );
|
||||
|
||||
Generator::includeLib( $libName );
|
||||
|
||||
}
|
||||
|
||||
function includeModule( $modName )
|
||||
{
|
||||
require( Generator::getGeneratorModulesPath() . $modName . '.inc' );
|
||||
}
|
||||
|
||||
function beginActiveXConfig( $lib_name, $guid = '', $gameDir = 'game', $output_name = '' )
|
||||
{
|
||||
Generator::beginActiveXConfig( $lib_name, $guid, $gameDir, $output_name );
|
||||
}
|
||||
|
||||
function endActiveXConfig()
|
||||
{
|
||||
Generator::endActiveXConfig();
|
||||
}
|
||||
|
||||
function beginSafariConfig( $lib_name, $guid = '', $gameDir = 'game', $output_name = '' )
|
||||
{
|
||||
Generator::beginSafariConfig( $lib_name, $guid, $gameDir, $output_name );
|
||||
}
|
||||
|
||||
function endSafariConfig()
|
||||
{
|
||||
Generator::endSafariConfig();
|
||||
}
|
||||
|
||||
function beginSharedLibConfig( $lib_name, $guid = '', $gameDir = 'game', $output_name = '' )
|
||||
{
|
||||
Generator::beginSharedLibConfig( $lib_name, $guid, $gameDir, $output_name );
|
||||
}
|
||||
|
||||
function endSharedLibConfig()
|
||||
{
|
||||
Generator::endSharedLibConfig();
|
||||
}
|
||||
|
||||
function beginNPPluginConfig( $lib_name, $guid = '', $gameDir = 'game', $output_name = '' )
|
||||
{
|
||||
Generator::beginNPPluginConfig( $lib_name, $guid, $gameDir, $output_name );
|
||||
}
|
||||
|
||||
function endNPPluginConfig()
|
||||
{
|
||||
Generator::endNPPluginConfig();
|
||||
}
|
||||
|
||||
|
||||
function beginLibConfig( $lib_name, $guid = '', $gameDir = 'game', $output_name = '' )
|
||||
{
|
||||
Generator::beginLibConfig( $lib_name, $guid, $gameDir, $output_name );
|
||||
}
|
||||
|
||||
function endLibConfig()
|
||||
{
|
||||
Generator::endLibConfig();
|
||||
}
|
||||
|
||||
function beginAppConfig( $app_name, $guid = '', $game_dir = 'game', $output_name = '' )
|
||||
{
|
||||
Generator::beginAppConfig( $app_name, $guid, $game_dir, $output_name );
|
||||
}
|
||||
|
||||
function endAppConfig()
|
||||
{
|
||||
Generator::endAppConfig();
|
||||
}
|
||||
|
||||
function beginSharedAppConfig( $app_name, $guid = '', $game_dir = 'game', $output_name = '' )
|
||||
{
|
||||
Generator::beginSharedAppConfig( $app_name, $guid, $game_dir, $output_name );
|
||||
}
|
||||
|
||||
function endSharedAppConfig()
|
||||
{
|
||||
Generator::endSharedAppConfig();
|
||||
}
|
||||
|
||||
|
||||
function beginCSProjectConfig( $app_name, $guid = '', $game_dir = 'game', $output_name = '' )
|
||||
{
|
||||
Generator::beginCSProjectConfig( $app_name, $guid, $game_dir, $output_name );
|
||||
}
|
||||
|
||||
function endCSProjectConfig()
|
||||
{
|
||||
Generator::endCSProjectConfig();
|
||||
}
|
||||
|
||||
|
||||
|
||||
///////////////////////
|
||||
|
||||
function beginModule( $name )
|
||||
{
|
||||
Generator::beginModule( $name );
|
||||
}
|
||||
|
||||
function endModule()
|
||||
{
|
||||
Generator::endModule();
|
||||
}
|
||||
|
||||
function addSrcDir( $dir, $recurse = false )
|
||||
{
|
||||
//echo( "ADD SRC DIR: " . $dir . "\n" );
|
||||
|
||||
Generator::addSrcDir( $dir, $recurse );
|
||||
}
|
||||
|
||||
function addSrcFile( $file )
|
||||
{
|
||||
//echo( "ADD SRC FILE: " . $file . "\n" );
|
||||
|
||||
Generator::addSrcFile( $file );
|
||||
}
|
||||
|
||||
function addEngineSrcDir( $dir )
|
||||
{
|
||||
//echo( "ADD ENGINE SRC DIR: " . getEngineSrcDir() . $dir . "\n" );
|
||||
|
||||
addSrcDir( getEngineSrcDir() . $dir );
|
||||
}
|
||||
|
||||
function addEngineSrcFile( $file )
|
||||
{
|
||||
//echo( "ADD SRC FIL: " . getEngineSrcDir() . $file . "\n" );
|
||||
|
||||
addSrcFile( getEngineSrcDir() . $file );
|
||||
}
|
||||
|
||||
function addLibSrcDir( $dir )
|
||||
{
|
||||
addSrcDir( Generator::getLibSrcDir() . $dir );
|
||||
}
|
||||
|
||||
function addLibSrcFile( $file )
|
||||
{
|
||||
addSrcDir( Generator::getLibSrcDir() . $file );
|
||||
}
|
||||
|
||||
function addLibIncludePath( $path )
|
||||
{
|
||||
// We need to make the include paths relative to the project file location!
|
||||
addIncludePath( getAppLibSrcDir() . $path );
|
||||
}
|
||||
|
||||
function getAppLibSrcDir()
|
||||
{
|
||||
// We need to make the include paths relative to the project file location!
|
||||
return "../" . getLibSrcDir();
|
||||
}
|
||||
|
||||
function addAppIncludePath( $path )
|
||||
{
|
||||
// We need to make the include paths relative to the project file location!
|
||||
addIncludePath( getAppEngineSrcDir() . $path );
|
||||
}
|
||||
|
||||
function getAppEngineSrcDir()
|
||||
{
|
||||
// We need to make the include paths relative to the project file location!
|
||||
return "../" . getEngineSrcDir();
|
||||
}
|
||||
|
||||
function getAppEngineBinDir()
|
||||
{
|
||||
// We need to make the include paths relative to the project file location!
|
||||
return "../" . getEngineBinDir();
|
||||
}
|
||||
|
||||
function getEngineSrcDir()
|
||||
{
|
||||
return Generator::getEngineSrcDir();
|
||||
}
|
||||
|
||||
function getLibSrcDir()
|
||||
{
|
||||
return Generator::getLibSrcDir();
|
||||
}
|
||||
|
||||
function getEngineBinDir()
|
||||
{
|
||||
return Generator::getEngineBinDir();
|
||||
}
|
||||
|
||||
function addIncludePath( $path )
|
||||
{
|
||||
//echo( "ADD INCLUDE: " . $path . "\n" );
|
||||
|
||||
Generator::addIncludePath( $path );
|
||||
}
|
||||
/// Add a preprocessor directive/define
|
||||
function addProjectDefine( $d, $v = null )
|
||||
{
|
||||
Generator::addProjectDefine( $d, $v );
|
||||
}
|
||||
/// Add a list of defines in one call
|
||||
function addProjectDefines()
|
||||
{
|
||||
$args = func_get_args();
|
||||
$count = func_num_args();
|
||||
|
||||
if( $count > 0 )
|
||||
Generator::addProjectDefines( $args );
|
||||
else
|
||||
echo( "addProjectDefines() - no arguments passed!" );
|
||||
}
|
||||
|
||||
function setProjectGUID( $guid )
|
||||
{
|
||||
Generator::setProjectGUID( $guid );
|
||||
}
|
||||
|
||||
function setProjectModuleDefinitionFile( $mdef )
|
||||
{
|
||||
Generator::setProjectModuleDefinitionFile( $mdef );
|
||||
}
|
||||
|
||||
|
||||
function addProjectLibDir( $dir )
|
||||
{
|
||||
Generator::addProjectLibDir( $dir );
|
||||
}
|
||||
|
||||
function addProjectLibInput( $lib_name )
|
||||
{
|
||||
Generator::addProjectLibInput( $lib_name );
|
||||
}
|
||||
|
||||
function addProjectDependency( $pd )
|
||||
{
|
||||
Generator::addProjectDependency( $pd );
|
||||
}
|
||||
|
||||
function removeProjectDependency( $pd )
|
||||
{
|
||||
Generator::removeProjectDependency( $pd );
|
||||
}
|
||||
|
||||
function addProjectReference( $refName, $version = "" )
|
||||
{
|
||||
Generator::addProjectReference( $refName, $version );
|
||||
}
|
||||
|
||||
// disable a specific project compiler warning
|
||||
function disableProjectWarning( $warning )
|
||||
{
|
||||
Generator::disableProjectWarning( $warning );
|
||||
}
|
||||
|
||||
|
||||
function setGameProjectName($name)
|
||||
{
|
||||
Generator::setGameProjectName($name);
|
||||
}
|
||||
|
||||
function getGameProjectName()
|
||||
{
|
||||
return Generator::getGameProjectName();
|
||||
}
|
||||
|
||||
function setToolBuild($tb)
|
||||
{
|
||||
Generator::setToolBuild($tb);
|
||||
}
|
||||
|
||||
function getToolBuild()
|
||||
{
|
||||
return Generator::getToolBuild();
|
||||
}
|
||||
|
||||
function setWatermarkBuild($wb)
|
||||
{
|
||||
Generator::setWatermarkBuild($wb);
|
||||
}
|
||||
|
||||
function getWatermarkBuild()
|
||||
{
|
||||
return Generator::getWatermarkBuild();
|
||||
}
|
||||
|
||||
function setPurchaseScreenBuild($psb)
|
||||
{
|
||||
Generator::setPurchaseScreenBuild($psb);
|
||||
}
|
||||
|
||||
function getPurchaseScreenBuild()
|
||||
{
|
||||
return Generator::getPurchaseScreenBuild();
|
||||
}
|
||||
|
||||
function setDemoBuild($db)
|
||||
{
|
||||
Generator::setDemoBuild($db);
|
||||
}
|
||||
|
||||
function getDemoBuild()
|
||||
{
|
||||
return Generator::getDemoBuild();
|
||||
}
|
||||
|
||||
function setObjectLimitBuild($olb)
|
||||
{
|
||||
Generator::setObjectLimitBuild($olb);
|
||||
}
|
||||
|
||||
function getObjectLimitBuild()
|
||||
{
|
||||
return Generator::getObjectLimitBuild();
|
||||
}
|
||||
|
||||
function setTimeOutBuild($tob)
|
||||
{
|
||||
Generator::setTimeOutBuild($tob);
|
||||
}
|
||||
|
||||
function getTimeOutBuild()
|
||||
{
|
||||
return Generator::getTimeOutBuild();
|
||||
}
|
||||
|
||||
function inProjectConfig()
|
||||
{
|
||||
return Generator::inProjectConfig();
|
||||
}
|
||||
|
||||
// On Windows, 1 - Console, 2 - Windows
|
||||
function setProjectSubSystem( $subSystem )
|
||||
{
|
||||
Generator::setProjectSubSystem( $subSystem );
|
||||
}
|
||||
|
||||
// Sets whether to use /MT or /MD code generation/runtime on Windows
|
||||
// /MD plays better with multiple dynamic libraries in a project (and with certain libraries (like Qt)
|
||||
// /MD also generates smaller binaries as the runtime isn't included in each module, memory is handled consistently, etc
|
||||
// You must include or install via the redistributable package the appropriate VS runtime for end users.
|
||||
function setDLLRuntime ($val)
|
||||
{
|
||||
Generator::setDLLRuntime( $val );
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------- UTIL
|
||||
|
||||
// Some versions of PHP4 are unable to recusively create directories.
|
||||
// The version of PHP that is distributed with Mac OS 10.4 suffers from this.
|
||||
function mkdir_r($path, $mode)
|
||||
{
|
||||
if( @mkdir( $path, $mode ) or file_exists( $path ) )
|
||||
return true;
|
||||
|
||||
return ( mkdir_r( dirname( $path ), $mode ) and mkdir( $path, $mode ) );
|
||||
}
|
||||
|
||||
// This is used inside an if statement in the smarty templates
|
||||
function dontCompile( $string, $output )
|
||||
{
|
||||
// Skip marking header files to be excluded from the
|
||||
// build. It confuses VS2010 and it will not put the
|
||||
// file into the correct filter folder.
|
||||
//
|
||||
if ( preg_match( '#^.*\.(h|hpp|hh|inc)$#i', $string ) )
|
||||
return false;
|
||||
|
||||
if( !is_array( $output->dont_compile_patterns ) )
|
||||
return false;
|
||||
|
||||
foreach( $output->dont_compile_patterns as $pattern )
|
||||
if( preg_match( $pattern, $string ) )
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/// Generates and returns a randomly generated uuid in the form:
|
||||
///
|
||||
/// {xxxxxxxx-xxxx-4xxx-Yxxx-xxxxxxxxxxxx}
|
||||
///
|
||||
/// Where Y is either 8, 9, A, or B. This is known as
|
||||
/// a v4 UUID. See...
|
||||
///
|
||||
/// http://en.wikipedia.org/wiki/Universally_Unique_Identifier#Version_4_.28random.29
|
||||
///
|
||||
function gen_uuid()
|
||||
{
|
||||
return sprintf( '{%04x%04x-%04x-%04x-%04x-%04x%04x%04x}',
|
||||
// 32 bits for "time_low"
|
||||
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
|
||||
|
||||
// 16 bits for "time_mid"
|
||||
mt_rand( 0, 0xffff ),
|
||||
|
||||
// 16 bits for "time_hi_and_version",
|
||||
// four most significant bits holds version number 4
|
||||
mt_rand( 0, 0x0fff ) | 0x4000,
|
||||
|
||||
// 16 bits, 8 bits for "clk_seq_hi_res",
|
||||
// 8 bits for "clk_seq_low",
|
||||
// two most significant bits holds zero and one for variant DCE1.1
|
||||
mt_rand( 0, 0x3fff ) | 0x8000,
|
||||
|
||||
// 48 bits for "node"
|
||||
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff )
|
||||
);
|
||||
}
|
||||
|
||||
?>
|
||||
92
Tools/projectGenerator/projectGenerator.php
Normal file
92
Tools/projectGenerator/projectGenerator.php
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
<?php
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
//
|
||||
// Hello, hello...
|
||||
//
|
||||
echo( "Welcome to projectGenerator 0.9\n" );
|
||||
echo( "Copyright (c) 2012 GarageGames, LLC\n" );
|
||||
echo( "Released under a MIT license.\n" );
|
||||
echo( "\n" );
|
||||
|
||||
//
|
||||
// Configure error logging
|
||||
//
|
||||
error_reporting( E_ALL & ~E_NOTICE );
|
||||
|
||||
//
|
||||
// Requires
|
||||
//
|
||||
require_once( "classes/BuildTarget.php" );
|
||||
require_once( "btargets/targets.inc" );
|
||||
require_once( "classes/Generator.php" );
|
||||
require_once( "projectGenUtils.inc" );
|
||||
require_once( "smarty/Smarty.class.php" );
|
||||
|
||||
//
|
||||
// Initialization
|
||||
//
|
||||
$g_cwd = realpath( dirname( $_SERVER[ 'PHP_SELF' ] ) );
|
||||
|
||||
echo( " CWD = " . $g_cwd . "\n" );
|
||||
|
||||
//
|
||||
// Load, instantiate, and configure the smarty template engine.
|
||||
//
|
||||
echo( " - Loading Smarty...\n" );
|
||||
|
||||
$tpl = new Smarty();
|
||||
$tpl->template_dir = $g_cwd . "/templates";
|
||||
$tpl->compile_dir = $g_cwd . "/templates_c";
|
||||
|
||||
$tpl->clear_all_cache();
|
||||
|
||||
// By default we assume that the root of the Torque SDK
|
||||
// is located two folders up from the CWD. That is unless
|
||||
// another path is passed in the command line.
|
||||
$torqueRoot = "../..";
|
||||
if ( $argc >= 3 )
|
||||
$torqueRoot = str_replace( "\\", "/", $argv[2] );
|
||||
|
||||
// Kick off the generator
|
||||
Generator::init( $torqueRoot );
|
||||
|
||||
// Ready to read our config file.
|
||||
echo( " - Loading config file " . realpath($argv[1])."\n" );
|
||||
|
||||
require( $argv[ 1 ] );
|
||||
|
||||
// Generate all projects
|
||||
Generator::generateProjects( $tpl );
|
||||
|
||||
// Now the solutions (if any)
|
||||
$tpl->clear_all_cache();
|
||||
|
||||
Generator::generateSolutions( $tpl );
|
||||
|
||||
// finally write out the sample.html for web deployment (if any)
|
||||
WebPlugin::writeSampleHtml();
|
||||
|
||||
exit;
|
||||
?>
|
||||
389
Tools/projectGenerator/smarty/Config_File.class.php
Normal file
389
Tools/projectGenerator/smarty/Config_File.class.php
Normal file
|
|
@ -0,0 +1,389 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Config_File class.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser 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
|
||||
*
|
||||
* @link http://smarty.php.net/
|
||||
* @version 2.6.18
|
||||
* @copyright Copyright: 2001-2005 New Digital Group, Inc.
|
||||
* @author Andrei Zmievski <andrei@php.net>
|
||||
* @access public
|
||||
* @package Smarty
|
||||
*/
|
||||
|
||||
/* $Id: Config_File.class.php,v 1.88 2007/03/06 10:40:06 messju Exp $ */
|
||||
|
||||
/**
|
||||
* Config file reading class
|
||||
* @package Smarty
|
||||
*/
|
||||
class Config_File {
|
||||
/**#@+
|
||||
* Options
|
||||
* @var boolean
|
||||
*/
|
||||
/**
|
||||
* Controls whether variables with the same name overwrite each other.
|
||||
*/
|
||||
var $overwrite = true;
|
||||
|
||||
/**
|
||||
* Controls whether config values of on/true/yes and off/false/no get
|
||||
* converted to boolean values automatically.
|
||||
*/
|
||||
var $booleanize = true;
|
||||
|
||||
/**
|
||||
* Controls whether hidden config sections/vars are read from the file.
|
||||
*/
|
||||
var $read_hidden = true;
|
||||
|
||||
/**
|
||||
* Controls whether or not to fix mac or dos formatted newlines.
|
||||
* If set to true, \r or \r\n will be changed to \n.
|
||||
*/
|
||||
var $fix_newlines = true;
|
||||
/**#@-*/
|
||||
|
||||
/** @access private */
|
||||
var $_config_path = "";
|
||||
var $_config_data = array();
|
||||
/**#@-*/
|
||||
|
||||
/**
|
||||
* Constructs a new config file class.
|
||||
*
|
||||
* @param string $config_path (optional) path to the config files
|
||||
*/
|
||||
function Config_File($config_path = NULL)
|
||||
{
|
||||
if (isset($config_path))
|
||||
$this->set_path($config_path);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the path where configuration files can be found.
|
||||
*
|
||||
* @param string $config_path path to the config files
|
||||
*/
|
||||
function set_path($config_path)
|
||||
{
|
||||
if (!empty($config_path)) {
|
||||
if (!is_string($config_path) || !file_exists($config_path) || !is_dir($config_path)) {
|
||||
$this->_trigger_error_msg("Bad config file path '$config_path'");
|
||||
return;
|
||||
}
|
||||
if(substr($config_path, -1) != DIRECTORY_SEPARATOR) {
|
||||
$config_path .= DIRECTORY_SEPARATOR;
|
||||
}
|
||||
|
||||
$this->_config_path = $config_path;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieves config info based on the file, section, and variable name.
|
||||
*
|
||||
* @param string $file_name config file to get info for
|
||||
* @param string $section_name (optional) section to get info for
|
||||
* @param string $var_name (optional) variable to get info for
|
||||
* @return string|array a value or array of values
|
||||
*/
|
||||
function get($file_name, $section_name = NULL, $var_name = NULL)
|
||||
{
|
||||
if (empty($file_name)) {
|
||||
$this->_trigger_error_msg('Empty config file name');
|
||||
return;
|
||||
} else {
|
||||
$file_name = $this->_config_path . $file_name;
|
||||
if (!isset($this->_config_data[$file_name]))
|
||||
$this->load_file($file_name, false);
|
||||
}
|
||||
|
||||
if (!empty($var_name)) {
|
||||
if (empty($section_name)) {
|
||||
return $this->_config_data[$file_name]["vars"][$var_name];
|
||||
} else {
|
||||
if(isset($this->_config_data[$file_name]["sections"][$section_name]["vars"][$var_name]))
|
||||
return $this->_config_data[$file_name]["sections"][$section_name]["vars"][$var_name];
|
||||
else
|
||||
return array();
|
||||
}
|
||||
} else {
|
||||
if (empty($section_name)) {
|
||||
return (array)$this->_config_data[$file_name]["vars"];
|
||||
} else {
|
||||
if(isset($this->_config_data[$file_name]["sections"][$section_name]["vars"]))
|
||||
return (array)$this->_config_data[$file_name]["sections"][$section_name]["vars"];
|
||||
else
|
||||
return array();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieves config info based on the key.
|
||||
*
|
||||
* @param $file_name string config key (filename/section/var)
|
||||
* @return string|array same as get()
|
||||
* @uses get() retrieves information from config file and returns it
|
||||
*/
|
||||
function &get_key($config_key)
|
||||
{
|
||||
list($file_name, $section_name, $var_name) = explode('/', $config_key, 3);
|
||||
$result = &$this->get($file_name, $section_name, $var_name);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all loaded config file names.
|
||||
*
|
||||
* @return array an array of loaded config file names
|
||||
*/
|
||||
function get_file_names()
|
||||
{
|
||||
return array_keys($this->_config_data);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get all section names from a loaded file.
|
||||
*
|
||||
* @param string $file_name config file to get section names from
|
||||
* @return array an array of section names from the specified file
|
||||
*/
|
||||
function get_section_names($file_name)
|
||||
{
|
||||
$file_name = $this->_config_path . $file_name;
|
||||
if (!isset($this->_config_data[$file_name])) {
|
||||
$this->_trigger_error_msg("Unknown config file '$file_name'");
|
||||
return;
|
||||
}
|
||||
|
||||
return array_keys($this->_config_data[$file_name]["sections"]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get all global or section variable names.
|
||||
*
|
||||
* @param string $file_name config file to get info for
|
||||
* @param string $section_name (optional) section to get info for
|
||||
* @return array an array of variables names from the specified file/section
|
||||
*/
|
||||
function get_var_names($file_name, $section = NULL)
|
||||
{
|
||||
if (empty($file_name)) {
|
||||
$this->_trigger_error_msg('Empty config file name');
|
||||
return;
|
||||
} else if (!isset($this->_config_data[$file_name])) {
|
||||
$this->_trigger_error_msg("Unknown config file '$file_name'");
|
||||
return;
|
||||
}
|
||||
|
||||
if (empty($section))
|
||||
return array_keys($this->_config_data[$file_name]["vars"]);
|
||||
else
|
||||
return array_keys($this->_config_data[$file_name]["sections"][$section]["vars"]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Clear loaded config data for a certain file or all files.
|
||||
*
|
||||
* @param string $file_name file to clear config data for
|
||||
*/
|
||||
function clear($file_name = NULL)
|
||||
{
|
||||
if ($file_name === NULL)
|
||||
$this->_config_data = array();
|
||||
else if (isset($this->_config_data[$file_name]))
|
||||
$this->_config_data[$file_name] = array();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load a configuration file manually.
|
||||
*
|
||||
* @param string $file_name file name to load
|
||||
* @param boolean $prepend_path whether current config path should be
|
||||
* prepended to the filename
|
||||
*/
|
||||
function load_file($file_name, $prepend_path = true)
|
||||
{
|
||||
if ($prepend_path && $this->_config_path != "")
|
||||
$config_file = $this->_config_path . $file_name;
|
||||
else
|
||||
$config_file = $file_name;
|
||||
|
||||
ini_set('track_errors', true);
|
||||
$fp = @fopen($config_file, "r");
|
||||
if (!is_resource($fp)) {
|
||||
$this->_trigger_error_msg("Could not open config file '$config_file'");
|
||||
return false;
|
||||
}
|
||||
|
||||
$contents = ($size = filesize($config_file)) ? fread($fp, $size) : '';
|
||||
fclose($fp);
|
||||
|
||||
$this->_config_data[$config_file] = $this->parse_contents($contents);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the contents of a file manually.
|
||||
*
|
||||
* @param string $config_file file name of the related contents
|
||||
* @param string $contents the file-contents to parse
|
||||
*/
|
||||
function set_file_contents($config_file, $contents)
|
||||
{
|
||||
$this->_config_data[$config_file] = $this->parse_contents($contents);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* parse the source of a configuration file manually.
|
||||
*
|
||||
* @param string $contents the file-contents to parse
|
||||
*/
|
||||
function parse_contents($contents)
|
||||
{
|
||||
if($this->fix_newlines) {
|
||||
// fix mac/dos formatted newlines
|
||||
$contents = preg_replace('!\r\n?!', "\n", $contents);
|
||||
}
|
||||
|
||||
$config_data = array();
|
||||
$config_data['sections'] = array();
|
||||
$config_data['vars'] = array();
|
||||
|
||||
/* reference to fill with data */
|
||||
$vars =& $config_data['vars'];
|
||||
|
||||
/* parse file line by line */
|
||||
preg_match_all('!^.*\r?\n?!m', $contents, $match);
|
||||
$lines = $match[0];
|
||||
for ($i=0, $count=count($lines); $i<$count; $i++) {
|
||||
$line = $lines[$i];
|
||||
if (empty($line)) continue;
|
||||
|
||||
if ( substr($line, 0, 1) == '[' && preg_match('!^\[(.*?)\]!', $line, $match) ) {
|
||||
/* section found */
|
||||
if (substr($match[1], 0, 1) == '.') {
|
||||
/* hidden section */
|
||||
if ($this->read_hidden) {
|
||||
$section_name = substr($match[1], 1);
|
||||
} else {
|
||||
/* break reference to $vars to ignore hidden section */
|
||||
unset($vars);
|
||||
$vars = array();
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
$section_name = $match[1];
|
||||
}
|
||||
if (!isset($config_data['sections'][$section_name]))
|
||||
$config_data['sections'][$section_name] = array('vars' => array());
|
||||
$vars =& $config_data['sections'][$section_name]['vars'];
|
||||
continue;
|
||||
}
|
||||
|
||||
if (preg_match('/^\s*(\.?\w+)\s*=\s*(.*)/s', $line, $match)) {
|
||||
/* variable found */
|
||||
$var_name = rtrim($match[1]);
|
||||
if (strpos($match[2], '"""') === 0) {
|
||||
/* handle multiline-value */
|
||||
$lines[$i] = substr($match[2], 3);
|
||||
$var_value = '';
|
||||
while ($i<$count) {
|
||||
if (($pos = strpos($lines[$i], '"""')) === false) {
|
||||
$var_value .= $lines[$i++];
|
||||
} else {
|
||||
/* end of multiline-value */
|
||||
$var_value .= substr($lines[$i], 0, $pos);
|
||||
break;
|
||||
}
|
||||
}
|
||||
$booleanize = false;
|
||||
|
||||
} else {
|
||||
/* handle simple value */
|
||||
$var_value = preg_replace('/^([\'"])(.*)\1$/', '\2', rtrim($match[2]));
|
||||
$booleanize = $this->booleanize;
|
||||
|
||||
}
|
||||
$this->_set_config_var($vars, $var_name, $var_value, $booleanize);
|
||||
}
|
||||
/* else unparsable line / means it is a comment / means ignore it */
|
||||
}
|
||||
return $config_data;
|
||||
}
|
||||
|
||||
/**#@+ @access private */
|
||||
/**
|
||||
* @param array &$container
|
||||
* @param string $var_name
|
||||
* @param mixed $var_value
|
||||
* @param boolean $booleanize determines whether $var_value is converted to
|
||||
* to true/false
|
||||
*/
|
||||
function _set_config_var(&$container, $var_name, $var_value, $booleanize)
|
||||
{
|
||||
if (substr($var_name, 0, 1) == '.') {
|
||||
if (!$this->read_hidden)
|
||||
return;
|
||||
else
|
||||
$var_name = substr($var_name, 1);
|
||||
}
|
||||
|
||||
if (!preg_match("/^[a-zA-Z_]\w*$/", $var_name)) {
|
||||
$this->_trigger_error_msg("Bad variable name '$var_name'");
|
||||
return;
|
||||
}
|
||||
|
||||
if ($booleanize) {
|
||||
if (preg_match("/^(on|true|yes)$/i", $var_value))
|
||||
$var_value = true;
|
||||
else if (preg_match("/^(off|false|no)$/i", $var_value))
|
||||
$var_value = false;
|
||||
}
|
||||
|
||||
if (!isset($container[$var_name]) || $this->overwrite)
|
||||
$container[$var_name] = $var_value;
|
||||
else {
|
||||
settype($container[$var_name], 'array');
|
||||
$container[$var_name][] = $var_value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @uses trigger_error() creates a PHP warning/error
|
||||
* @param string $error_msg
|
||||
* @param integer $error_type one of
|
||||
*/
|
||||
function _trigger_error_msg($error_msg, $error_type = E_USER_WARNING)
|
||||
{
|
||||
trigger_error("Config_File error: $error_msg", $error_type);
|
||||
}
|
||||
/**#@-*/
|
||||
}
|
||||
|
||||
?>
|
||||
1944
Tools/projectGenerator/smarty/Smarty.class.php
Normal file
1944
Tools/projectGenerator/smarty/Smarty.class.php
Normal file
File diff suppressed because it is too large
Load diff
2328
Tools/projectGenerator/smarty/Smarty_Compiler.class.php
Normal file
2328
Tools/projectGenerator/smarty/Smarty_Compiler.class.php
Normal file
File diff suppressed because it is too large
Load diff
157
Tools/projectGenerator/smarty/debug.tpl
Normal file
157
Tools/projectGenerator/smarty/debug.tpl
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
{* Smarty *}
|
||||
{* debug.tpl, last updated version 2.1.0 *}
|
||||
{assign_debug_info}
|
||||
{capture assign=debug_output}
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
||||
<head>
|
||||
<title>Smarty Debug Console</title>
|
||||
{literal}
|
||||
<style type="text/css">
|
||||
/* <![CDATA[ */
|
||||
body, h1, h2, td, th, p {
|
||||
font-family: sans-serif;
|
||||
font-weight: normal;
|
||||
font-size: 0.9em;
|
||||
margin: 1px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin: 0;
|
||||
text-align: left;
|
||||
padding: 2px;
|
||||
background-color: #f0c040;
|
||||
color: black;
|
||||
font-weight: bold;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
h2 {
|
||||
background-color: #9B410E;
|
||||
color: white;
|
||||
text-align: left;
|
||||
font-weight: bold;
|
||||
padding: 2px;
|
||||
border-top: 1px solid black;
|
||||
}
|
||||
|
||||
body {
|
||||
background: black;
|
||||
}
|
||||
|
||||
p, table, div {
|
||||
background: #f0ead8;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0;
|
||||
font-style: italic;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
th, td {
|
||||
font-family: monospace;
|
||||
vertical-align: top;
|
||||
text-align: left;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
td {
|
||||
color: green;
|
||||
}
|
||||
|
||||
.odd {
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
|
||||
.even {
|
||||
background-color: #fafafa;
|
||||
}
|
||||
|
||||
.exectime {
|
||||
font-size: 0.8em;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
#table_assigned_vars th {
|
||||
color: blue;
|
||||
}
|
||||
|
||||
#table_config_vars th {
|
||||
color: maroon;
|
||||
}
|
||||
/* ]]> */
|
||||
</style>
|
||||
{/literal}
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Smarty Debug Console</h1>
|
||||
|
||||
<h2>included templates & config files (load time in seconds)</h2>
|
||||
|
||||
<div>
|
||||
{section name=templates loop=$_debug_tpls}
|
||||
{section name=indent loop=$_debug_tpls[templates].depth} {/section}
|
||||
<font color={if $_debug_tpls[templates].type eq "template"}brown{elseif $_debug_tpls[templates].type eq "insert"}black{else}green{/if}>
|
||||
{$_debug_tpls[templates].filename|escape:html}</font>
|
||||
{if isset($_debug_tpls[templates].exec_time)}
|
||||
<span class="exectime">
|
||||
({$_debug_tpls[templates].exec_time|string_format:"%.5f"})
|
||||
{if %templates.index% eq 0}(total){/if}
|
||||
</span>
|
||||
{/if}
|
||||
<br />
|
||||
{sectionelse}
|
||||
<p>no templates included</p>
|
||||
{/section}
|
||||
</div>
|
||||
|
||||
<h2>assigned template variables</h2>
|
||||
|
||||
<table id="table_assigned_vars">
|
||||
{section name=vars loop=$_debug_keys}
|
||||
<tr class="{cycle values="odd,even"}">
|
||||
<th>{ldelim}${$_debug_keys[vars]|escape:'html'}{rdelim}</th>
|
||||
<td>{$_debug_vals[vars]|@debug_print_var}</td></tr>
|
||||
{sectionelse}
|
||||
<tr><td><p>no template variables assigned</p></td></tr>
|
||||
{/section}
|
||||
</table>
|
||||
|
||||
<h2>assigned config file variables (outer template scope)</h2>
|
||||
|
||||
<table id="table_config_vars">
|
||||
{section name=config_vars loop=$_debug_config_keys}
|
||||
<tr class="{cycle values="odd,even"}">
|
||||
<th>{ldelim}#{$_debug_config_keys[config_vars]|escape:'html'}#{rdelim}</th>
|
||||
<td>{$_debug_config_vals[config_vars]|@debug_print_var}</td></tr>
|
||||
{sectionelse}
|
||||
<tr><td><p>no config vars assigned</p></td></tr>
|
||||
{/section}
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
{/capture}
|
||||
{if isset($_smarty_debug_output) and $_smarty_debug_output eq "html"}
|
||||
{$debug_output}
|
||||
{else}
|
||||
<script type="text/javascript">
|
||||
// <![CDATA[
|
||||
if ( self.name == '' ) {ldelim}
|
||||
var title = 'Console';
|
||||
{rdelim}
|
||||
else {ldelim}
|
||||
var title = 'Console_' + self.name;
|
||||
{rdelim}
|
||||
_smarty_console = window.open("",title.value,"width=680,height=600,resizable,scrollbars=yes");
|
||||
_smarty_console.document.write('{$debug_output|escape:'javascript'}');
|
||||
_smarty_console.document.close();
|
||||
// ]]>
|
||||
</script>
|
||||
{/if}
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* assemble filepath of requested plugin
|
||||
*
|
||||
* @param string $type
|
||||
* @param string $name
|
||||
* @return string|false
|
||||
*/
|
||||
function smarty_core_assemble_plugin_filepath($params, &$smarty)
|
||||
{
|
||||
static $_filepaths_cache = array();
|
||||
|
||||
$_plugin_filename = $params['type'] . '.' . $params['name'] . '.php';
|
||||
if (isset($_filepaths_cache[$_plugin_filename])) {
|
||||
return $_filepaths_cache[$_plugin_filename];
|
||||
}
|
||||
$_return = false;
|
||||
|
||||
foreach ((array)$smarty->plugins_dir as $_plugin_dir) {
|
||||
|
||||
$_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename;
|
||||
|
||||
// see if path is relative
|
||||
if (!preg_match("/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/", $_plugin_dir)) {
|
||||
$_relative_paths[] = $_plugin_dir;
|
||||
// relative path, see if it is in the SMARTY_DIR
|
||||
if (@is_readable(SMARTY_DIR . $_plugin_filepath)) {
|
||||
$_return = SMARTY_DIR . $_plugin_filepath;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// try relative to cwd (or absolute)
|
||||
if (@is_readable($_plugin_filepath)) {
|
||||
$_return = $_plugin_filepath;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if($_return === false) {
|
||||
// still not found, try PHP include_path
|
||||
if(isset($_relative_paths)) {
|
||||
foreach ((array)$_relative_paths as $_plugin_dir) {
|
||||
|
||||
$_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename;
|
||||
|
||||
$_params = array('file_path' => $_plugin_filepath);
|
||||
require_once(SMARTY_CORE_DIR . 'core.get_include_path.php');
|
||||
if(smarty_core_get_include_path($_params, $smarty)) {
|
||||
$_return = $_params['new_file_path'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$_filepaths_cache[$_plugin_filename] = $_return;
|
||||
return $_return;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Smarty assign_smarty_interface core plugin
|
||||
*
|
||||
* Type: core<br>
|
||||
* Name: assign_smarty_interface<br>
|
||||
* Purpose: assign the $smarty interface variable
|
||||
* @param array Format: null
|
||||
* @param Smarty
|
||||
*/
|
||||
function smarty_core_assign_smarty_interface($params, &$smarty)
|
||||
{
|
||||
if (isset($smarty->_smarty_vars) && isset($smarty->_smarty_vars['request'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
$_globals_map = array('g' => 'HTTP_GET_VARS',
|
||||
'p' => 'HTTP_POST_VARS',
|
||||
'c' => 'HTTP_COOKIE_VARS',
|
||||
's' => 'HTTP_SERVER_VARS',
|
||||
'e' => 'HTTP_ENV_VARS');
|
||||
|
||||
$_smarty_vars_request = array();
|
||||
|
||||
foreach (preg_split('!!', strtolower($smarty->request_vars_order)) as $_c) {
|
||||
if (isset($_globals_map[$_c])) {
|
||||
$_smarty_vars_request = array_merge($_smarty_vars_request, $GLOBALS[$_globals_map[$_c]]);
|
||||
}
|
||||
}
|
||||
$_smarty_vars_request = @array_merge($_smarty_vars_request, $GLOBALS['HTTP_SESSION_VARS']);
|
||||
|
||||
$smarty->_smarty_vars['request'] = $_smarty_vars_request;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* create full directory structure
|
||||
*
|
||||
* @param string $dir
|
||||
*/
|
||||
|
||||
// $dir
|
||||
|
||||
function smarty_core_create_dir_structure($params, &$smarty)
|
||||
{
|
||||
if (!file_exists($params['dir'])) {
|
||||
$_open_basedir_ini = ini_get('open_basedir');
|
||||
|
||||
if (DIRECTORY_SEPARATOR=='/') {
|
||||
/* unix-style paths */
|
||||
$_dir = $params['dir'];
|
||||
$_dir_parts = preg_split('!/+!', $_dir, -1, PREG_SPLIT_NO_EMPTY);
|
||||
$_new_dir = (substr($_dir, 0, 1)=='/') ? '/' : getcwd().'/';
|
||||
if($_use_open_basedir = !empty($_open_basedir_ini)) {
|
||||
$_open_basedirs = explode(':', $_open_basedir_ini);
|
||||
}
|
||||
|
||||
} else {
|
||||
/* other-style paths */
|
||||
$_dir = str_replace('\\','/', $params['dir']);
|
||||
$_dir_parts = preg_split('!/+!', $_dir, -1, PREG_SPLIT_NO_EMPTY);
|
||||
if (preg_match('!^((//)|([a-zA-Z]:/))!', $_dir, $_root_dir)) {
|
||||
/* leading "//" for network volume, or "[letter]:/" for full path */
|
||||
$_new_dir = $_root_dir[1];
|
||||
/* remove drive-letter from _dir_parts */
|
||||
if (isset($_root_dir[3])) array_shift($_dir_parts);
|
||||
|
||||
} else {
|
||||
$_new_dir = str_replace('\\', '/', getcwd()).'/';
|
||||
|
||||
}
|
||||
|
||||
if($_use_open_basedir = !empty($_open_basedir_ini)) {
|
||||
$_open_basedirs = explode(';', str_replace('\\', '/', $_open_basedir_ini));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* all paths use "/" only from here */
|
||||
foreach ($_dir_parts as $_dir_part) {
|
||||
$_new_dir .= $_dir_part;
|
||||
|
||||
if ($_use_open_basedir) {
|
||||
// do not attempt to test or make directories outside of open_basedir
|
||||
$_make_new_dir = false;
|
||||
foreach ($_open_basedirs as $_open_basedir) {
|
||||
if (substr($_new_dir, 0, strlen($_open_basedir)) == $_open_basedir) {
|
||||
$_make_new_dir = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$_make_new_dir = true;
|
||||
}
|
||||
|
||||
if ($_make_new_dir && !file_exists($_new_dir) && !@mkdir($_new_dir, $smarty->_dir_perms) && !is_dir($_new_dir)) {
|
||||
$smarty->trigger_error("problem creating directory '" . $_new_dir . "'");
|
||||
return false;
|
||||
}
|
||||
$_new_dir .= '/';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Smarty debug_console function plugin
|
||||
*
|
||||
* Type: core<br>
|
||||
* Name: display_debug_console<br>
|
||||
* Purpose: display the javascript debug console window
|
||||
* @param array Format: null
|
||||
* @param Smarty
|
||||
*/
|
||||
function smarty_core_display_debug_console($params, &$smarty)
|
||||
{
|
||||
// we must force compile the debug template in case the environment
|
||||
// changed between separate applications.
|
||||
|
||||
if(empty($smarty->debug_tpl)) {
|
||||
// set path to debug template from SMARTY_DIR
|
||||
$smarty->debug_tpl = SMARTY_DIR . 'debug.tpl';
|
||||
if($smarty->security && is_file($smarty->debug_tpl)) {
|
||||
$smarty->secure_dir[] = realpath($smarty->debug_tpl);
|
||||
}
|
||||
$smarty->debug_tpl = 'file:' . SMARTY_DIR . 'debug.tpl';
|
||||
}
|
||||
|
||||
$_ldelim_orig = $smarty->left_delimiter;
|
||||
$_rdelim_orig = $smarty->right_delimiter;
|
||||
|
||||
$smarty->left_delimiter = '{';
|
||||
$smarty->right_delimiter = '}';
|
||||
|
||||
$_compile_id_orig = $smarty->_compile_id;
|
||||
$smarty->_compile_id = null;
|
||||
|
||||
$_compile_path = $smarty->_get_compile_path($smarty->debug_tpl);
|
||||
if ($smarty->_compile_resource($smarty->debug_tpl, $_compile_path))
|
||||
{
|
||||
ob_start();
|
||||
$smarty->_include($_compile_path);
|
||||
$_results = ob_get_contents();
|
||||
ob_end_clean();
|
||||
} else {
|
||||
$_results = '';
|
||||
}
|
||||
|
||||
$smarty->_compile_id = $_compile_id_orig;
|
||||
|
||||
$smarty->left_delimiter = $_ldelim_orig;
|
||||
$smarty->right_delimiter = $_rdelim_orig;
|
||||
|
||||
return $_results;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Get path to file from include_path
|
||||
*
|
||||
* @param string $file_path
|
||||
* @param string $new_file_path
|
||||
* @return boolean
|
||||
* @staticvar array|null
|
||||
*/
|
||||
|
||||
// $file_path, &$new_file_path
|
||||
|
||||
function smarty_core_get_include_path(&$params, &$smarty)
|
||||
{
|
||||
static $_path_array = null;
|
||||
|
||||
if(!isset($_path_array)) {
|
||||
$_ini_include_path = ini_get('include_path');
|
||||
|
||||
if(strstr($_ini_include_path,';')) {
|
||||
// windows pathnames
|
||||
$_path_array = explode(';',$_ini_include_path);
|
||||
} else {
|
||||
$_path_array = explode(':',$_ini_include_path);
|
||||
}
|
||||
}
|
||||
foreach ($_path_array as $_include_path) {
|
||||
if (@is_readable($_include_path . DIRECTORY_SEPARATOR . $params['file_path'])) {
|
||||
$params['new_file_path'] = $_include_path . DIRECTORY_SEPARATOR . $params['file_path'];
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Get seconds and microseconds
|
||||
* @return double
|
||||
*/
|
||||
function smarty_core_get_microtime($params, &$smarty)
|
||||
{
|
||||
$mtime = microtime();
|
||||
$mtime = explode(" ", $mtime);
|
||||
$mtime = (double)($mtime[1]) + (double)($mtime[0]);
|
||||
return ($mtime);
|
||||
}
|
||||
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Retrieves PHP script resource
|
||||
*
|
||||
* sets $php_resource to the returned resource
|
||||
* @param string $resource
|
||||
* @param string $resource_type
|
||||
* @param $php_resource
|
||||
* @return boolean
|
||||
*/
|
||||
|
||||
function smarty_core_get_php_resource(&$params, &$smarty)
|
||||
{
|
||||
|
||||
$params['resource_base_path'] = $smarty->trusted_dir;
|
||||
$smarty->_parse_resource_name($params, $smarty);
|
||||
|
||||
/*
|
||||
* Find out if the resource exists.
|
||||
*/
|
||||
|
||||
if ($params['resource_type'] == 'file') {
|
||||
$_readable = false;
|
||||
if(file_exists($params['resource_name']) && is_readable($params['resource_name'])) {
|
||||
$_readable = true;
|
||||
} else {
|
||||
// test for file in include_path
|
||||
$_params = array('file_path' => $params['resource_name']);
|
||||
require_once(SMARTY_CORE_DIR . 'core.get_include_path.php');
|
||||
if(smarty_core_get_include_path($_params, $smarty)) {
|
||||
$_include_path = $_params['new_file_path'];
|
||||
$_readable = true;
|
||||
}
|
||||
}
|
||||
} else if ($params['resource_type'] != 'file') {
|
||||
$_template_source = null;
|
||||
$_readable = is_callable($smarty->_plugins['resource'][$params['resource_type']][0][0])
|
||||
&& call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][0],
|
||||
array($params['resource_name'], &$_template_source, &$smarty));
|
||||
}
|
||||
|
||||
/*
|
||||
* Set the error function, depending on which class calls us.
|
||||
*/
|
||||
if (method_exists($smarty, '_syntax_error')) {
|
||||
$_error_funcc = '_syntax_error';
|
||||
} else {
|
||||
$_error_funcc = 'trigger_error';
|
||||
}
|
||||
|
||||
if ($_readable) {
|
||||
if ($smarty->security) {
|
||||
require_once(SMARTY_CORE_DIR . 'core.is_trusted.php');
|
||||
if (!smarty_core_is_trusted($params, $smarty)) {
|
||||
$smarty->$_error_funcc('(secure mode) ' . $params['resource_type'] . ':' . $params['resource_name'] . ' is not trusted');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$smarty->$_error_funcc($params['resource_type'] . ':' . $params['resource_name'] . ' is not readable');
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($params['resource_type'] == 'file') {
|
||||
$params['php_resource'] = $params['resource_name'];
|
||||
} else {
|
||||
$params['php_resource'] = $_template_source;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
59
Tools/projectGenerator/smarty/internals/core.is_secure.php
Normal file
59
Tools/projectGenerator/smarty/internals/core.is_secure.php
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* determines if a resource is secure or not.
|
||||
*
|
||||
* @param string $resource_type
|
||||
* @param string $resource_name
|
||||
* @return boolean
|
||||
*/
|
||||
|
||||
// $resource_type, $resource_name
|
||||
|
||||
function smarty_core_is_secure($params, &$smarty)
|
||||
{
|
||||
if (!$smarty->security || $smarty->security_settings['INCLUDE_ANY']) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if ($params['resource_type'] == 'file') {
|
||||
$_rp = realpath($params['resource_name']);
|
||||
if (isset($params['resource_base_path'])) {
|
||||
foreach ((array)$params['resource_base_path'] as $curr_dir) {
|
||||
if ( ($_cd = realpath($curr_dir)) !== false &&
|
||||
strncmp($_rp, $_cd, strlen($_cd)) == 0 &&
|
||||
substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!empty($smarty->secure_dir)) {
|
||||
foreach ((array)$smarty->secure_dir as $curr_dir) {
|
||||
if ( ($_cd = realpath($curr_dir)) !== false) {
|
||||
if($_cd == $_rp) {
|
||||
return true;
|
||||
} elseif (strncmp($_rp, $_cd, strlen($_cd)) == 0 &&
|
||||
substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// resource is not on local file system
|
||||
return call_user_func_array(
|
||||
$smarty->_plugins['resource'][$params['resource_type']][0][2],
|
||||
array($params['resource_name'], &$smarty));
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
47
Tools/projectGenerator/smarty/internals/core.is_trusted.php
Normal file
47
Tools/projectGenerator/smarty/internals/core.is_trusted.php
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* determines if a resource is trusted or not
|
||||
*
|
||||
* @param string $resource_type
|
||||
* @param string $resource_name
|
||||
* @return boolean
|
||||
*/
|
||||
|
||||
// $resource_type, $resource_name
|
||||
|
||||
function smarty_core_is_trusted($params, &$smarty)
|
||||
{
|
||||
$_smarty_trusted = false;
|
||||
if ($params['resource_type'] == 'file') {
|
||||
if (!empty($smarty->trusted_dir)) {
|
||||
$_rp = realpath($params['resource_name']);
|
||||
foreach ((array)$smarty->trusted_dir as $curr_dir) {
|
||||
if (!empty($curr_dir) && is_readable ($curr_dir)) {
|
||||
$_cd = realpath($curr_dir);
|
||||
if (strncmp($_rp, $_cd, strlen($_cd)) == 0
|
||||
&& substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR ) {
|
||||
$_smarty_trusted = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
// resource is not on local file system
|
||||
$_smarty_trusted = call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][3],
|
||||
array($params['resource_name'], $smarty));
|
||||
}
|
||||
|
||||
return $_smarty_trusted;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
125
Tools/projectGenerator/smarty/internals/core.load_plugins.php
Normal file
125
Tools/projectGenerator/smarty/internals/core.load_plugins.php
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Load requested plugins
|
||||
*
|
||||
* @param array $plugins
|
||||
*/
|
||||
|
||||
// $plugins
|
||||
|
||||
function smarty_core_load_plugins($params, &$smarty)
|
||||
{
|
||||
|
||||
foreach ($params['plugins'] as $_plugin_info) {
|
||||
list($_type, $_name, $_tpl_file, $_tpl_line, $_delayed_loading) = $_plugin_info;
|
||||
$_plugin = &$smarty->_plugins[$_type][$_name];
|
||||
|
||||
/*
|
||||
* We do not load plugin more than once for each instance of Smarty.
|
||||
* The following code checks for that. The plugin can also be
|
||||
* registered dynamically at runtime, in which case template file
|
||||
* and line number will be unknown, so we fill them in.
|
||||
*
|
||||
* The final element of the info array is a flag that indicates
|
||||
* whether the dynamically registered plugin function has been
|
||||
* checked for existence yet or not.
|
||||
*/
|
||||
if (isset($_plugin)) {
|
||||
if (empty($_plugin[3])) {
|
||||
if (!is_callable($_plugin[0])) {
|
||||
$smarty->_trigger_fatal_error("[plugin] $_type '$_name' is not implemented", $_tpl_file, $_tpl_line, __FILE__, __LINE__);
|
||||
} else {
|
||||
$_plugin[1] = $_tpl_file;
|
||||
$_plugin[2] = $_tpl_line;
|
||||
$_plugin[3] = true;
|
||||
if (!isset($_plugin[4])) $_plugin[4] = true; /* cacheable */
|
||||
}
|
||||
}
|
||||
continue;
|
||||
} else if ($_type == 'insert') {
|
||||
/*
|
||||
* For backwards compatibility, we check for insert functions in
|
||||
* the symbol table before trying to load them as a plugin.
|
||||
*/
|
||||
$_plugin_func = 'insert_' . $_name;
|
||||
if (function_exists($_plugin_func)) {
|
||||
$_plugin = array($_plugin_func, $_tpl_file, $_tpl_line, true, false);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$_plugin_file = $smarty->_get_plugin_filepath($_type, $_name);
|
||||
|
||||
if (! $_found = ($_plugin_file != false)) {
|
||||
$_message = "could not load plugin file '$_type.$_name.php'\n";
|
||||
}
|
||||
|
||||
/*
|
||||
* If plugin file is found, it -must- provide the properly named
|
||||
* plugin function. In case it doesn't, simply output the error and
|
||||
* do not fall back on any other method.
|
||||
*/
|
||||
if ($_found) {
|
||||
include_once $_plugin_file;
|
||||
|
||||
$_plugin_func = 'smarty_' . $_type . '_' . $_name;
|
||||
if (!function_exists($_plugin_func)) {
|
||||
$smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", $_tpl_file, $_tpl_line, __FILE__, __LINE__);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* In case of insert plugins, their code may be loaded later via
|
||||
* 'script' attribute.
|
||||
*/
|
||||
else if ($_type == 'insert' && $_delayed_loading) {
|
||||
$_plugin_func = 'smarty_' . $_type . '_' . $_name;
|
||||
$_found = true;
|
||||
}
|
||||
|
||||
/*
|
||||
* Plugin specific processing and error checking.
|
||||
*/
|
||||
if (!$_found) {
|
||||
if ($_type == 'modifier') {
|
||||
/*
|
||||
* In case modifier falls back on using PHP functions
|
||||
* directly, we only allow those specified in the security
|
||||
* context.
|
||||
*/
|
||||
if ($smarty->security && !in_array($_name, $smarty->security_settings['MODIFIER_FUNCS'])) {
|
||||
$_message = "(secure mode) modifier '$_name' is not allowed";
|
||||
} else {
|
||||
if (!function_exists($_name)) {
|
||||
$_message = "modifier '$_name' is not implemented";
|
||||
} else {
|
||||
$_plugin_func = $_name;
|
||||
$_found = true;
|
||||
}
|
||||
}
|
||||
} else if ($_type == 'function') {
|
||||
/*
|
||||
* This is a catch-all situation.
|
||||
*/
|
||||
$_message = "unknown tag - '$_name'";
|
||||
}
|
||||
}
|
||||
|
||||
if ($_found) {
|
||||
$smarty->_plugins[$_type][$_name] = array($_plugin_func, $_tpl_file, $_tpl_line, true, true);
|
||||
} else {
|
||||
// output error
|
||||
$smarty->_trigger_fatal_error('[plugin] ' . $_message, $_tpl_file, $_tpl_line, __FILE__, __LINE__);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* load a resource plugin
|
||||
*
|
||||
* @param string $type
|
||||
*/
|
||||
|
||||
// $type
|
||||
|
||||
function smarty_core_load_resource_plugin($params, &$smarty)
|
||||
{
|
||||
/*
|
||||
* Resource plugins are not quite like the other ones, so they are
|
||||
* handled differently. The first element of plugin info is the array of
|
||||
* functions provided by the plugin, the second one indicates whether
|
||||
* all of them exist or not.
|
||||
*/
|
||||
|
||||
$_plugin = &$smarty->_plugins['resource'][$params['type']];
|
||||
if (isset($_plugin)) {
|
||||
if (!$_plugin[1] && count($_plugin[0])) {
|
||||
$_plugin[1] = true;
|
||||
foreach ($_plugin[0] as $_plugin_func) {
|
||||
if (!is_callable($_plugin_func)) {
|
||||
$_plugin[1] = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$_plugin[1]) {
|
||||
$smarty->_trigger_fatal_error("[plugin] resource '" . $params['type'] . "' is not implemented", null, null, __FILE__, __LINE__);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$_plugin_file = $smarty->_get_plugin_filepath('resource', $params['type']);
|
||||
$_found = ($_plugin_file != false);
|
||||
|
||||
if ($_found) { /*
|
||||
* If the plugin file is found, it -must- provide the properly named
|
||||
* plugin functions.
|
||||
*/
|
||||
include_once($_plugin_file);
|
||||
|
||||
/*
|
||||
* Locate functions that we require the plugin to provide.
|
||||
*/
|
||||
$_resource_ops = array('source', 'timestamp', 'secure', 'trusted');
|
||||
$_resource_funcs = array();
|
||||
foreach ($_resource_ops as $_op) {
|
||||
$_plugin_func = 'smarty_resource_' . $params['type'] . '_' . $_op;
|
||||
if (!function_exists($_plugin_func)) {
|
||||
$smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", null, null, __FILE__, __LINE__);
|
||||
return;
|
||||
} else {
|
||||
$_resource_funcs[] = $_plugin_func;
|
||||
}
|
||||
}
|
||||
|
||||
$smarty->_plugins['resource'][$params['type']] = array($_resource_funcs, true);
|
||||
}
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue