fix bug in the OPC_ArraySAP.cpp (used in Extras/CDTestFramework to compare agains Bullet broadphases)

Thanks to Olli-Pekka Räsänen for the report, mentioned by Pierre Terdiman in his blog:
http://www.codercorner.com/blog/?p=475
This commit is contained in:
erwin.coumans
2011-04-18 00:08:48 +00:00
parent 7dd0cbb726
commit d9a1a1d415
4 changed files with 66 additions and 59 deletions

View File

@@ -2,16 +2,16 @@ Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CDTestFramework", "CDTestFramework.vcproj", "{0565DB39-45CC-416E-B549-BFC24F2666D1}"
ProjectSection(ProjectDependencies) = postProject
{3AD0C16A-DCAC-442E-9E17-A911A717EB4C} = {3AD0C16A-DCAC-442E-9E17-A911A717EB4C}
{519F115F-F196-49FE-9B24-49618A6202BB} = {519F115F-F196-49FE-9B24-49618A6202BB}
{C0E1329C-3D6F-492D-8EFF-08069F096C6E} = {C0E1329C-3D6F-492D-8EFF-08069F096C6E}
{DBE44CA3-2912-4441-8D99-AA2242688AD2} = {DBE44CA3-2912-4441-8D99-AA2242688AD2}
{FDA229FA-D080-4ABB-ADBD-35AD30155467} = {FDA229FA-D080-4ABB-ADBD-35AD30155467}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Opcode", "Opcode\Opcode.vcproj", "{DBE44CA3-2912-4441-8D99-AA2242688AD2}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LinearMath", "..\..\win7_32\src\LinearMath\LinearMath.vcproj", "{FDA229FA-D080-4ABB-ADBD-35AD30155467}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LinearMath", "..\..\msvc\2008\src\LinearMath\LinearMath.vcproj", "{519F115F-F196-49FE-9B24-49618A6202BB}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BulletCollision", "..\..\win7_32\src\BulletCollision\BulletCollision.vcproj", "{3AD0C16A-DCAC-442E-9E17-A911A717EB4C}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BulletCollision", "..\..\msvc\2008\src\BulletCollision\BulletCollision.vcproj", "{C0E1329C-3D6F-492D-8EFF-08069F096C6E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -57,38 +57,38 @@ Global
{DBE44CA3-2912-4441-8D99-AA2242688AD2}.ReleaseDoublePrecision|Win32.Build.0 = Release|Win32
{DBE44CA3-2912-4441-8D99-AA2242688AD2}.RelWithDebInfo|Win32.ActiveCfg = Release|Win32
{DBE44CA3-2912-4441-8D99-AA2242688AD2}.RelWithDebInfo|Win32.Build.0 = Release|Win32
{FDA229FA-D080-4ABB-ADBD-35AD30155467}.Debug|Win32.ActiveCfg = Debug|Win32
{FDA229FA-D080-4ABB-ADBD-35AD30155467}.Debug|Win32.Build.0 = Debug|Win32
{FDA229FA-D080-4ABB-ADBD-35AD30155467}.DebugDll|Win32.ActiveCfg = Debug|Win32
{FDA229FA-D080-4ABB-ADBD-35AD30155467}.DebugDll|Win32.Build.0 = Debug|Win32
{FDA229FA-D080-4ABB-ADBD-35AD30155467}.DebugDoublePrecision|Win32.ActiveCfg = Debug|Win32
{FDA229FA-D080-4ABB-ADBD-35AD30155467}.DebugDoublePrecision|Win32.Build.0 = Debug|Win32
{FDA229FA-D080-4ABB-ADBD-35AD30155467}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
{FDA229FA-D080-4ABB-ADBD-35AD30155467}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
{FDA229FA-D080-4ABB-ADBD-35AD30155467}.Release|Win32.ActiveCfg = Release|Win32
{FDA229FA-D080-4ABB-ADBD-35AD30155467}.Release|Win32.Build.0 = Release|Win32
{FDA229FA-D080-4ABB-ADBD-35AD30155467}.ReleaseDll|Win32.ActiveCfg = Release|Win32
{FDA229FA-D080-4ABB-ADBD-35AD30155467}.ReleaseDll|Win32.Build.0 = Release|Win32
{FDA229FA-D080-4ABB-ADBD-35AD30155467}.ReleaseDoublePrecision|Win32.ActiveCfg = Release|Win32
{FDA229FA-D080-4ABB-ADBD-35AD30155467}.ReleaseDoublePrecision|Win32.Build.0 = Release|Win32
{FDA229FA-D080-4ABB-ADBD-35AD30155467}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
{FDA229FA-D080-4ABB-ADBD-35AD30155467}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
{3AD0C16A-DCAC-442E-9E17-A911A717EB4C}.Debug|Win32.ActiveCfg = Debug|Win32
{3AD0C16A-DCAC-442E-9E17-A911A717EB4C}.Debug|Win32.Build.0 = Debug|Win32
{3AD0C16A-DCAC-442E-9E17-A911A717EB4C}.DebugDll|Win32.ActiveCfg = Debug|Win32
{3AD0C16A-DCAC-442E-9E17-A911A717EB4C}.DebugDll|Win32.Build.0 = Debug|Win32
{3AD0C16A-DCAC-442E-9E17-A911A717EB4C}.DebugDoublePrecision|Win32.ActiveCfg = Debug|Win32
{3AD0C16A-DCAC-442E-9E17-A911A717EB4C}.DebugDoublePrecision|Win32.Build.0 = Debug|Win32
{3AD0C16A-DCAC-442E-9E17-A911A717EB4C}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
{3AD0C16A-DCAC-442E-9E17-A911A717EB4C}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
{3AD0C16A-DCAC-442E-9E17-A911A717EB4C}.Release|Win32.ActiveCfg = Release|Win32
{3AD0C16A-DCAC-442E-9E17-A911A717EB4C}.Release|Win32.Build.0 = Release|Win32
{3AD0C16A-DCAC-442E-9E17-A911A717EB4C}.ReleaseDll|Win32.ActiveCfg = Release|Win32
{3AD0C16A-DCAC-442E-9E17-A911A717EB4C}.ReleaseDll|Win32.Build.0 = Release|Win32
{3AD0C16A-DCAC-442E-9E17-A911A717EB4C}.ReleaseDoublePrecision|Win32.ActiveCfg = Release|Win32
{3AD0C16A-DCAC-442E-9E17-A911A717EB4C}.ReleaseDoublePrecision|Win32.Build.0 = Release|Win32
{3AD0C16A-DCAC-442E-9E17-A911A717EB4C}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
{3AD0C16A-DCAC-442E-9E17-A911A717EB4C}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
{519F115F-F196-49FE-9B24-49618A6202BB}.Debug|Win32.ActiveCfg = Debug|Win32
{519F115F-F196-49FE-9B24-49618A6202BB}.Debug|Win32.Build.0 = Debug|Win32
{519F115F-F196-49FE-9B24-49618A6202BB}.DebugDll|Win32.ActiveCfg = Debug|Win32
{519F115F-F196-49FE-9B24-49618A6202BB}.DebugDll|Win32.Build.0 = Debug|Win32
{519F115F-F196-49FE-9B24-49618A6202BB}.DebugDoublePrecision|Win32.ActiveCfg = Debug|Win32
{519F115F-F196-49FE-9B24-49618A6202BB}.DebugDoublePrecision|Win32.Build.0 = Debug|Win32
{519F115F-F196-49FE-9B24-49618A6202BB}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
{519F115F-F196-49FE-9B24-49618A6202BB}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
{519F115F-F196-49FE-9B24-49618A6202BB}.Release|Win32.ActiveCfg = Release|Win32
{519F115F-F196-49FE-9B24-49618A6202BB}.Release|Win32.Build.0 = Release|Win32
{519F115F-F196-49FE-9B24-49618A6202BB}.ReleaseDll|Win32.ActiveCfg = Release|Win32
{519F115F-F196-49FE-9B24-49618A6202BB}.ReleaseDll|Win32.Build.0 = Release|Win32
{519F115F-F196-49FE-9B24-49618A6202BB}.ReleaseDoublePrecision|Win32.ActiveCfg = Release|Win32
{519F115F-F196-49FE-9B24-49618A6202BB}.ReleaseDoublePrecision|Win32.Build.0 = Release|Win32
{519F115F-F196-49FE-9B24-49618A6202BB}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
{519F115F-F196-49FE-9B24-49618A6202BB}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
{C0E1329C-3D6F-492D-8EFF-08069F096C6E}.Debug|Win32.ActiveCfg = Debug|Win32
{C0E1329C-3D6F-492D-8EFF-08069F096C6E}.Debug|Win32.Build.0 = Debug|Win32
{C0E1329C-3D6F-492D-8EFF-08069F096C6E}.DebugDll|Win32.ActiveCfg = Debug|Win32
{C0E1329C-3D6F-492D-8EFF-08069F096C6E}.DebugDll|Win32.Build.0 = Debug|Win32
{C0E1329C-3D6F-492D-8EFF-08069F096C6E}.DebugDoublePrecision|Win32.ActiveCfg = Debug|Win32
{C0E1329C-3D6F-492D-8EFF-08069F096C6E}.DebugDoublePrecision|Win32.Build.0 = Debug|Win32
{C0E1329C-3D6F-492D-8EFF-08069F096C6E}.MinSizeRel|Win32.ActiveCfg = MinSizeRel|Win32
{C0E1329C-3D6F-492D-8EFF-08069F096C6E}.MinSizeRel|Win32.Build.0 = MinSizeRel|Win32
{C0E1329C-3D6F-492D-8EFF-08069F096C6E}.Release|Win32.ActiveCfg = Release|Win32
{C0E1329C-3D6F-492D-8EFF-08069F096C6E}.Release|Win32.Build.0 = Release|Win32
{C0E1329C-3D6F-492D-8EFF-08069F096C6E}.ReleaseDll|Win32.ActiveCfg = Release|Win32
{C0E1329C-3D6F-492D-8EFF-08069F096C6E}.ReleaseDll|Win32.Build.0 = Release|Win32
{C0E1329C-3D6F-492D-8EFF-08069F096C6E}.ReleaseDoublePrecision|Win32.ActiveCfg = Release|Win32
{C0E1329C-3D6F-492D-8EFF-08069F096C6E}.ReleaseDoublePrecision|Win32.Build.0 = Release|Win32
{C0E1329C-3D6F-492D-8EFF-08069F096C6E}.RelWithDebInfo|Win32.ActiveCfg = RelWithDebInfo|Win32
{C0E1329C-3D6F-492D-8EFF-08069F096C6E}.RelWithDebInfo|Win32.Build.0 = RelWithDebInfo|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@@ -47,7 +47,7 @@
MinimalRebuild="true"
ExceptionHandling="0"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
RuntimeLibrary="3"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
@@ -126,7 +126,7 @@
AdditionalIncludeDirectories=".\Opcode;.\AntTweakBar\include;.\GIMPACT\Include;../../src;../../Glut"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
ExceptionHandling="0"
RuntimeLibrary="0"
RuntimeLibrary="2"
EnableEnhancedInstructionSet="0"
FloatingPointModel="2"
RuntimeTypeInfo="false"
@@ -146,10 +146,9 @@
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="cudart.lib"
OutputFile="./Bin/CDTestFramework.exe"
LinkIncremental="1"
AdditionalLibraryDirectories=".\AntTweakBar\lib,../../Glut;&quot;$(CUDA_LIB_PATH)&quot;"
AdditionalLibraryDirectories=".\AntTweakBar\lib,../../Glut"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"

View File

@@ -399,6 +399,9 @@ void ASAP_PairManager::ReallocPairs()
void* mObject;
udword mGUID;
inline_ void SetInvalid() { mMin[0]=INVALID_INDEX; }
inline_ bool IsValid() const { return mMin[0]!=INVALID_INDEX; }
inline_ ValType GetMaxValue(udword i, const ASAP_EndPoint* base) const
{
return base[mMax[i]].mValue;
@@ -836,27 +839,29 @@ void ArraySAP::BatchCreate()
udword i=0;
while(i<NbOldBoxes)
{
while(BA.IsSet(Offset))
if(!BA.IsSet(i))
{
const ASAP_Box* Box = mBoxes + i;
// if(Box->mObject)
if(Box->IsValid())
{
OldBoxesIndices[Offset] = i;
OldBoxes[Offset].mMinX = Box->mMin[0];
OldBoxes[Offset].mMaxX = Box->mMax[0];
OldBoxes[Offset].mMinY = Box->mMin[1];
OldBoxes[Offset].mMaxY = Box->mMax[1];
OldBoxes[Offset].mMinZ = Box->mMin[2];
OldBoxes[Offset].mMaxZ = Box->mMax[2];
Offset++;
assert(Offset<mNbBoxes);
}
const ASAP_Box* Box = mBoxes + Offset;
OldBoxesIndices[i] = Offset;
OldBoxes[i].mMinX = Box->mMin[0];
OldBoxes[i].mMaxX = Box->mMax[0];
OldBoxes[i].mMinY = Box->mMin[1];
OldBoxes[i].mMaxY = Box->mMax[1];
OldBoxes[i].mMinZ = Box->mMin[2];
OldBoxes[i].mMaxZ = Box->mMax[2];
Offset++;
}
i++;
}
assert(i==NbOldBoxes);
BipartiteBoxPruning2(NbBatched, NewBoxes, NbOldBoxes, OldBoxes, Axes(AXES_XZY), Batched, OldBoxesIndices);
// assert(i==NbOldBoxes);
BipartiteBoxPruning2(NbBatched, NewBoxes, Offset, OldBoxes, Axes(AXES_XZY), Batched, OldBoxesIndices);
ICE_FREE(OldBoxesIndices);
DELETEARRAY(OldBoxes);
@@ -937,6 +942,8 @@ void ArraySAP::BatchRemove()
BA.SetBit(Object->mGUID);
Object->mGUID = mFirstFree;
// Object->mObject = null; // ###########
Object->SetInvalid();
mFirstFree = Index;
}
mNbBoxes -= Saved;

View File

@@ -4,6 +4,7 @@
Version="9.00"
Name="Opcode"
ProjectGUID="{DBE44CA3-2912-4441-8D99-AA2242688AD2}"
RootNamespace="Opcode"
TargetFrameworkVersion="131072"
>
<Platforms>
@@ -55,7 +56,7 @@
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;OPCODE_EXPORTS"
StringPooling="true"
ExceptionHandling="0"
RuntimeLibrary="0"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="stdafx.h"
@@ -149,7 +150,7 @@
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OPCODE_EXPORTS"
ExceptionHandling="0"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
RuntimeLibrary="3"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="stdafx.h"
PrecompiledHeaderFile=".\Debug/Opcode.pch"