Merge branch 'linux' of https://github.com/just-bank/Torque3D into just-bank-linux

This commit is contained in:
David Wyand 2012-10-02 13:25:08 -04:00
commit 2d9fa140ed
45 changed files with 597 additions and 58 deletions

View file

@ -33,7 +33,11 @@
#include "console/consoleTypes.h"
#include "scene/sceneRenderState.h"
#include "T3D/gameBase/gameProcess.h"
#ifdef _WIN32
#include "BulletMultiThreaded/Win32ThreadSupport.h"
#elif defined (USE_PTHREADS)
#include "BulletMultiThreaded/PosixThreadSupport.h"
#endif
BtWorld::BtWorld() :
mProcessList( NULL ),

View file

@ -252,7 +252,7 @@ const EngineTypeInfo* _MAPTYPE() { return TYPE< T >(); }
extern S32 type; \
extern const char* castConsoleTypeToString( _ConsoleConstType< nativeType >::ConstType &arg ); \
extern bool castConsoleTypeFromString( nativeType &arg, const char *str ); \
template<> extern S32 TYPEID< nativeType >();
template<> S32 TYPEID< nativeType >();
#define DefineUnmappedConsoleType( type, nativeType ) \
DefineConsoleType( type, nativeType ) \

View file

@ -416,7 +416,7 @@ namespace _Private {
#define _DECLARE_TYPE( type ) \
template<> extern const EngineTypeInfo* TYPE< type >(); \
template<> const EngineTypeInfo* TYPE< type >(); \
template<> struct _SCOPE< type > { \
EngineExportScope& operator()() const { \
return *reinterpret_cast< EngineExportScope* >( \

View file

@ -33,7 +33,9 @@
#include "platform/event.h"
#include "gfx/gfxDrawUtil.h"
#include "gui/controls/guiTextEditCtrl.h"
#include "gui/editor/editorFunctions.h"
#ifdef TORQUE_TOOLS
#include "gui/editor/editorFunctions.h"
#endif
#include "console/engineAPI.h"
@ -4042,7 +4044,10 @@ void GuiTreeViewCtrl::onRenderCell(Point2I offset, Point2I cell, bool, bool )
// If this item is a VirtualParent we can use the generic SimGroup123 icons.
// However if there is already an icon in the EditorIconRegistry for this
// exact class (not counting parent class icons) we want to use that instead.
bool hasClassIcon = gEditorIcons.hasIconNoRecurse( pObject );
bool hasClassIcon = false;
#ifdef TORQUE_TOOLS
hasClassIcon = gEditorIcons.hasIconNoRecurse( pObject );
#endif
// draw the icon associated with the item
if ( !hasClassIcon && item->mState.test(Item::VirtualParent))
@ -5280,7 +5285,10 @@ void GuiTreeViewCtrl::onRenameValidate()
if ( mRenameInternal )
obj->setInternalName( data );
else if ( validateObjectName( data, obj ) )
else
#ifdef TORQUE_TOOLS
if ( validateObjectName( data, obj ) )
#endif
obj->assignName( data );
}

View file

@ -31,7 +31,7 @@
#include "gfx/gfxDevice.h"
#include "core/util/safeDelete.h"
#ifndef TORQUE_OS_MAC
#if !defined( TORQUE_OS_MAC ) && !defined( TORQUE_OS_LINUX )
# include "lighting/advanced/hlsl/gBufferConditionerHLSL.h"
# include "lighting/advanced/hlsl/advancedLightingFeaturesHLSL.h"
#else
@ -54,7 +54,7 @@ void AdvancedLightingFeatures::registerFeatures( const GFXFormat &prepassTargetF
if(GFX->getAdapterType() == OpenGL)
{
#ifdef TORQUE_OS_MAC
#if defined( TORQUE_OS_MAC ) || defined( TORQUE_OS_LINUX )
cond = new GBufferConditionerGLSL( prepassTargetFormat );
FEATUREMGR->registerFeature(MFT_PrePassConditioner, cond);
FEATUREMGR->registerFeature(MFT_RTLighting, new DeferredRTLightingFeatGLSL());
@ -66,7 +66,7 @@ void AdvancedLightingFeatures::registerFeatures( const GFXFormat &prepassTargetF
}
else
{
#ifndef TORQUE_OS_MAC
#if !defined( TORQUE_OS_MAC ) && !defined( TORQUE_OS_LINUX )
cond = new GBufferConditionerHLSL( prepassTargetFormat, GBufferConditionerHLSL::ViewSpace );
FEATUREMGR->registerFeature(MFT_PrePassConditioner, cond);
FEATUREMGR->registerFeature(MFT_RTLighting, new DeferredRTLightingFeatHLSL());

View file

@ -49,7 +49,7 @@
#include "lighting/common/projectedShadow.h"
#ifdef TORQUE_OS_MAC
#if defined( TORQUE_OS_MAC ) || defined( TORQUE_OS_LINUX )
#include "shaderGen/GLSL/shaderFeatureGLSL.h"
#include "shaderGen/GLSL/bumpGLSL.h"
#include "shaderGen/GLSL/pixSpecularGLSL.h"
@ -167,7 +167,7 @@ void BasicLightManager::activate( SceneManager *sceneManager )
if( GFX->getAdapterType() == OpenGL )
{
#ifdef TORQUE_OS_MAC
#if defined( TORQUE_OS_MAC ) || defined( TORQUE_OS_LINUX )
FEATUREMGR->registerFeature( MFT_LightMap, new LightmapFeatGLSL );
FEATUREMGR->registerFeature( MFT_ToneMap, new TonemapFeatGLSL );
FEATUREMGR->registerFeature( MFT_NormalMap, new BumpFeatGLSL );
@ -177,7 +177,7 @@ void BasicLightManager::activate( SceneManager *sceneManager )
}
else
{
#ifndef TORQUE_OS_MAC
#if !defined( TORQUE_OS_MAC ) && !defined( TORQUE_OS_LINUX )
FEATUREMGR->registerFeature( MFT_LightMap, new LightmapFeatHLSL );
FEATUREMGR->registerFeature( MFT_ToneMap, new TonemapFeatHLSL );
FEATUREMGR->registerFeature( MFT_NormalMap, new BumpFeatHLSL );

View file

@ -22,8 +22,17 @@
#include "lighting/common/lightMapParams.h"
#include "core/stream/bitStream.h"
#include "core/module.h"
const LightInfoExType LightMapParams::Type( "LightMapParams" );
MODULE_BEGIN( LightMapParams )
MODULE_INIT_AFTER( ShadowMapParams )
MODULE_INIT
{
LightMapParams::Type = "LightMapParams";
}
MODULE_END;
LightInfoExType LightMapParams::Type( "" );
LightMapParams::LightMapParams( LightInfo *light ) :
representedInLightmap(false),

View file

@ -34,7 +34,7 @@ public:
virtual ~LightMapParams();
/// The LightInfoEx hook type.
static const LightInfoExType Type;
static LightInfoExType Type;
// LightInfoEx
virtual void set( const LightInfoEx *ex );

View file

@ -314,7 +314,7 @@ void LightManager::_update4LightConsts( const SceneData &sgData,
// NOTE: We haven't ported the lighting shaders on OSX
// to the optimized HLSL versions.
#ifdef TORQUE_OS_MAC
#if defined( TORQUE_OS_MAC ) || defined( TORQUE_OS_LINUX )
static AlignedArray<Point3F> lightPositions( 4, sizeof( Point4F ) );
#else
static AlignedArray<Point4F> lightPositions( 3, sizeof( Point4F ) );
@ -342,7 +342,7 @@ void LightManager::_update4LightConsts( const SceneData &sgData,
if ( !light )
break;
#ifdef TORQUE_OS_MAC
#if defined( TORQUE_OS_MAC ) || defined( TORQUE_OS_LINUX )
lightPositions[i] = light->getPosition();
@ -381,7 +381,7 @@ void LightManager::_update4LightConsts( const SceneData &sgData,
shaderConsts->setSafe( lightDiffuseSC, lightColors );
shaderConsts->setSafe( lightInvRadiusSqSC, lightInvRadiusSq );
#ifndef TORQUE_OS_MAC
#if !defined( TORQUE_OS_MAC ) && !defined( TORQUE_OS_LINUX )
shaderConsts->setSafe( lightSpotDirSC, lightSpotDirs );
shaderConsts->setSafe( lightSpotAngleSC, lightSpotAngle );

View file

@ -34,7 +34,7 @@
#include "materials/baseMatInstance.h"
#include "scene/sceneManager.h"
#include "scene/sceneRenderState.h"
#include "scene/zones/SceneZoneSpace.h"
#include "scene/zones/sceneZoneSpace.h"
#include "lighting/lightManager.h"
#include "math/mathUtils.h"
#include "shaderGen/shaderGenVars.h"
@ -42,6 +42,7 @@
#include "core/stream/bitStream.h"
#include "math/mathIO.h"
#include "materials/shaderData.h"
#include "core/module.h"
// Used for creation in ShadowMapParams::getOrCreateShadowMap()
#include "lighting/shadowMap/singleLightShadowMap.h"
@ -545,8 +546,15 @@ void LightingShaderConstants::_onShaderReload()
init( mShader );
}
MODULE_BEGIN( ShadowMapParams )
MODULE_INIT_BEFORE( LightMapParams )
MODULE_INIT
{
ShadowMapParams::Type = "ShadowMapParams" ;
}
MODULE_END;
const LightInfoExType ShadowMapParams::Type( "ShadowMapParams" );
LightInfoExType ShadowMapParams::Type( "" );
ShadowMapParams::ShadowMapParams( LightInfo *light )
: mLight( light ),

View file

@ -287,7 +287,7 @@ public:
virtual ~ShadowMapParams();
/// The LightInfoEx hook type.
static const LightInfoExType Type;
static LightInfoExType Type;
// LightInfoEx
virtual void set( const LightInfoEx *ex );

View file

@ -92,14 +92,14 @@ struct SilhouetteExtractorBasePerspective : public SilhouetteExtractorBase< Poly
// Determine orientation of each of the polygons.
const U32 numPolygons = mPolyhedron->getNumPlanes();
const U32 numPolygons = this->mPolyhedron->getNumPlanes();
mPolygonOrientations = ( Orientation* ) FrameAllocator::alloc( sizeof( Orientation ) * numPolygons );
Point3F camPos = camView.getPosition();
for( U32 i = 0; i < numPolygons; ++ i )
{
if (mPolyhedron->getPlanes()[i].whichSide( camPos ) == PlaneF::Front)
if (this->mPolyhedron->getPlanes()[i].whichSide( camPos ) == PlaneF::Front)
mPolygonOrientations[i] = FrontFacing;
else
mPolygonOrientations[i] = BackFacing;

View file

@ -523,17 +523,17 @@ template<class T,class S> void dCopyArray(T *dst, const S *src, dsize_t size)
dst[i] = (T)src[i];
}
extern void* dMemcpy(void *dst, const void *src, dsize_t size);
extern void* dMemmove(void *dst, const void *src, dsize_t size);
extern void* dMemset(void *dst, int c, dsize_t size);
extern int dMemcmp(const void *ptr1, const void *ptr2, dsize_t size);
// Special case of the above function when the arrays are the same type (use memcpy)
template<class T> void dCopyArray(T *dst, const T *src, dsize_t size)
{
dMemcpy(dst, src, size * sizeof(T));
}
extern void* dMemcpy(void *dst, const void *src, dsize_t size);
extern void* dMemmove(void *dst, const void *src, dsize_t size);
extern void* dMemset(void *dst, int c, dsize_t size);
extern int dMemcmp(const void *ptr1, const void *ptr2, dsize_t size);
/// The dALIGN macro ensures the passed declaration is
/// data aligned at 16 byte boundaries.
#if defined( TORQUE_COMPILER_VISUALC )

View file

@ -522,9 +522,9 @@ next:
// processors per core
tblSMTID[j] = GetNzbSubID(apicID, MaxLPPerCore, 0);
tblCoreID[j] = GetNzbSubID(apicID,
MaxCorePerPhysicalProc(),
(unsigned char) find_maskwidth(MaxLPPerCore));
unsigned char maxCorePPP = MaxCorePerPhysicalProc();
unsigned char maskWidth = find_maskwidth(MaxLPPerCore);
tblCoreID[j] = GetNzbSubID(apicID, maxCorePPP, maskWidth);
// Extract package ID, assume single cluster.
// Shift value is the mask width for max Logical per package

View file

@ -55,13 +55,25 @@ Semaphore::~Semaphore()
delete mData;
}
bool Semaphore::acquire(bool block)
bool Semaphore::acquire(bool block, S32 timeoutMS)
{
AssertFatal(mData, "Semaphore::acquire - Invalid semaphore.");
AssertFatal(mData && mData->semaphore, "Semaphore::acquire - Invalid semaphore.");
if (block)
{
if (SDL_SemWait(mData->semaphore) < 0)
AssertFatal(false, "Semaphore::acquie - Wait failed.");
// Semaphore acquiring is different from the MacOS/Win realization because SDL_SemWaitTimeout() with "infinite" timeout can be too heavy on some platforms.
// (see "man SDL_SemWaitTimeout(3)" for more info)
// "man" states to avoid the use of SDL_SemWaitTimeout at all, but at current stage this looks like a valid and working solution, so keeping it this way.
// [bank / Feb-2010]
if (timeoutMS == -1)
{
if (SDL_SemWait(mData->semaphore) < 0)
AssertFatal(false, "Semaphore::acquie - Wait failed.");
}
else
{
if (SDL_SemWaitTimeout(mData->semaphore, timeoutMS) < 0)
AssertFatal(false, "Semaphore::acquie - Wait with timeout failed.");
}
return (true);
}
else

View file

@ -81,6 +81,8 @@ void OpenALDLLShutdown() {}
// Platform Stubs
bool Platform::excludeOtherInstances(const char*) { return true; }
// clipboard
const char* Platform::getClipboard() { return ""; }
bool Platform::setClipboard(const char *text) { return false; }

View file

@ -42,7 +42,7 @@
#include "console/engineAPI.h"
const RenderInstType RenderInstType::Invalid( String::EmptyString );
const RenderInstType RenderInstType::Invalid( "" );
const RenderInstType RenderPassManager::RIT_Interior("Interior");
const RenderInstType RenderPassManager::RIT_Mesh("Mesh");

View file

@ -38,6 +38,9 @@
#ifndef _COLLADA_UTILS_H_
#include "ts/collada/colladaUtils.h"
#endif
#ifndef _ENGINEAPI_H_
#include "console/engineAPI.h"
#endif
/// This class allows an artist to export their animations for the model
/// into the .dsq format. This class in particular matches up the model