added initial Collada 1.4 Physics support

This commit is contained in:
ejcoumans
2006-06-01 03:27:01 +00:00
parent 5299170dca
commit b5d0520c58
11 changed files with 3430 additions and 2683 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -90,7 +90,7 @@ bool stepping= true;
bool singleStep = false;
static bool idle = false;
static bool idle = true;
void toggleIdle() {
@@ -347,7 +347,7 @@ int glutmain(int argc, char **argv,int width,int height,const char* title) {
glutSpecialFunc(mySpecial);
glutReshapeFunc(myReshape);
//createMenu();
glutIdleFunc(clientMoveAndDisplay);
glutIdleFunc(0);//clientMoveAndDisplay);
glutMouseFunc(clientMouseFunc);
glutMotionFunc(clientMotionFunc);
glutDisplayFunc( clientDisplay );

View File

@@ -91,6 +91,36 @@ FUStatus FCDGeometry::LoadFromXML(xmlNode* geometryNode)
status.AppendStatus(s->LoadFromXML(child));
break;
}
else if (IsEquivalent(child->name, DAE_CONVEX_MESH_ELEMENT))
{
//several cases can exist here...
//wait for fixed version of FCollada?
//assume <convex_hull_of> and do instantiate?
// Create a new mesh
FCDGeometryMesh* m = CreateMesh();
m->m_convex = true;
FUUri url = ReadNodeUrl(child,"convex_hull_of");
if (!url.prefix.empty())
{
FCDGeometry* entity = GetDocument()->FindGeometry(url.prefix);
if (entity)
{
printf("found convex_mesh%s\n",url.prefix);
//quick hack
this->mesh = entity->GetMesh();
mesh->m_convex = true;
}
}
//status.AppendStatus(m->LoadFromXML(child));
break;
}
else
{
return status.Fail(FS("Unknown child in <geometry> with id: ") + TO_FSTRING(GetDaeId()), child->line);

View File

@@ -15,7 +15,7 @@
#include "FCDocument/FCDEntity.h"
#include "FCDocument/FCDGeometry.h"
#include "FCDocument/FCDGeometryInstance.h"
#include "FCDocument/FCDGeometryMesh.h"
#include "FCDocument/FCDGeometryMesh.h"
#include "FCDocument/FCDGeometryPolygons.h"
#include "FCDocument/FCDMaterialInstance.h"
#include "FUtils/FUDaeParser.h"
@@ -23,38 +23,38 @@
using namespace FUDaeParser;
using namespace FUDaeWriter;
// Parasitic: Write out the instantiation information to the xml node tree
xmlNode* FCDEntityInstance::WriteToXML(xmlNode* parentNode) const
{
xmlNode* instanceNode = NULL;
if (entity != NULL)
{
const char* instanceEntityName;
switch (entity->GetType())
{
case FCDEntity::ANIMATION: instanceEntityName = DAE_INSTANCE_ANIMATION_ELEMENT; break;
case FCDEntity::CAMERA: instanceEntityName = DAE_INSTANCE_CAMERA_ELEMENT; break;
case FCDEntity::CONTROLLER: instanceEntityName = DAE_INSTANCE_CONTROLLER_ELEMENT; break;
case FCDEntity::EFFECT: instanceEntityName = DAE_INSTANCE_EFFECT_ELEMENT; break;
case FCDEntity::GEOMETRY: instanceEntityName = DAE_INSTANCE_GEOMETRY_ELEMENT; break;
case FCDEntity::LIGHT: instanceEntityName = DAE_INSTANCE_LIGHT_ELEMENT; break;
case FCDEntity::MATERIAL: instanceEntityName = DAE_INSTANCE_MATERIAL_ELEMENT; break;
case FCDEntity::PHYSICS_MODEL: instanceEntityName = DAE_INSTANCE_PHYSICS_MODEL_ELEMENT; break;
case FCDEntity::PHYSICS_RIGID_BODY: instanceEntityName = DAE_INSTANCE_RIGID_BODY_ELEMENT; break;
case FCDEntity::PHYSICS_RIGID_CONSTRAINT: instanceEntityName = DAE_INSTANCE_RIGID_CONSTRAINT_ELEMENT; break;
case FCDEntity::SCENE_NODE: instanceEntityName = DAE_INSTANCE_NODE_ELEMENT; break;
case FCDEntity::ANIMATION_CLIP:
case FCDEntity::ENTITY:
case FCDEntity::IMAGE:
case FCDEntity::TEXTURE:
default: instanceEntityName = DAEERR_UNKNOWN_ELEMENT;
}
instanceNode = AddChild(parentNode, instanceEntityName);
AddAttribute(instanceNode, DAE_URL_ATTRIBUTE, string("#") + entity->GetDaeId());
}
return instanceNode;
// Parasitic: Write out the instantiation information to the xml node tree
xmlNode* FCDEntityInstance::WriteToXML(xmlNode* parentNode) const
{
xmlNode* instanceNode = NULL;
if (entity != NULL)
{
const char* instanceEntityName;
switch (entity->GetType())
{
case FCDEntity::ANIMATION: instanceEntityName = DAE_INSTANCE_ANIMATION_ELEMENT; break;
case FCDEntity::CAMERA: instanceEntityName = DAE_INSTANCE_CAMERA_ELEMENT; break;
case FCDEntity::CONTROLLER: instanceEntityName = DAE_INSTANCE_CONTROLLER_ELEMENT; break;
case FCDEntity::EFFECT: instanceEntityName = DAE_INSTANCE_EFFECT_ELEMENT; break;
case FCDEntity::GEOMETRY: instanceEntityName = DAE_INSTANCE_GEOMETRY_ELEMENT; break;
case FCDEntity::LIGHT: instanceEntityName = DAE_INSTANCE_LIGHT_ELEMENT; break;
case FCDEntity::MATERIAL: instanceEntityName = DAE_INSTANCE_MATERIAL_ELEMENT; break;
case FCDEntity::PHYSICS_MODEL: instanceEntityName = DAE_INSTANCE_PHYSICS_MODEL_ELEMENT; break;
case FCDEntity::PHYSICS_RIGID_BODY: instanceEntityName = DAE_INSTANCE_RIGID_BODY_ELEMENT; break;
case FCDEntity::PHYSICS_RIGID_CONSTRAINT: instanceEntityName = DAE_INSTANCE_RIGID_CONSTRAINT_ELEMENT; break;
case FCDEntity::SCENE_NODE: instanceEntityName = DAE_INSTANCE_NODE_ELEMENT; break;
case FCDEntity::ANIMATION_CLIP:
case FCDEntity::ENTITY:
case FCDEntity::IMAGE:
case FCDEntity::TEXTURE:
default: instanceEntityName = DAEERR_UNKNOWN_ELEMENT;
}
instanceNode = AddChild(parentNode, instanceEntityName);
AddAttribute(instanceNode, DAE_URL_ATTRIBUTE, string("#") + entity->GetDaeId());
}
return instanceNode;
}
FCDGeometryInstance::FCDGeometryInstance(FCDocument* document, FCDEntity* entity) : FCDEntityInstance(document, entity)
@@ -150,19 +150,19 @@ FUStatus FCDGeometryInstance::LoadFromXML(xmlNode* instanceNode)
return status;
}
// Write out the instantiation information to the xml node tree
xmlNode* FCDGeometryInstance::WriteToXML(xmlNode* parentNode) const
{
xmlNode* instanceNode = FCDEntityInstance::WriteToXML(parentNode);
if (!materials.empty())
{
xmlNode* bindMaterialNode = AddChild(instanceNode, DAE_BINDMATERIAL_ELEMENT);
xmlNode* techniqueCommonNode = AddChild(bindMaterialNode, DAE_TECHNIQUE_COMMON_ELEMENT);
for (FCDMaterialInstanceList::const_iterator itM = materials.begin(); itM != materials.end(); ++itM)
{
(*itM)->WriteToXML(techniqueCommonNode);
}
}
return instanceNode;
}
// Write out the instantiation information to the xml node tree
xmlNode* FCDGeometryInstance::WriteToXML(xmlNode* parentNode) const
{
xmlNode* instanceNode = FCDEntityInstance::WriteToXML(parentNode);
if (!materials.empty())
{
xmlNode* bindMaterialNode = AddChild(instanceNode, DAE_BINDMATERIAL_ELEMENT);
xmlNode* techniqueCommonNode = AddChild(bindMaterialNode, DAE_TECHNIQUE_COMMON_ELEMENT);
for (FCDMaterialInstanceList::const_iterator itM = materials.begin(); itM != materials.end(); ++itM)
{
(*itM)->WriteToXML(techniqueCommonNode);
}
}
return instanceNode;
}

View File

@@ -23,6 +23,7 @@ using namespace FUDaeWriter;
FCDGeometryMesh::FCDGeometryMesh(FCDocument* document, FCDGeometry* _parent) : FCDObject(document, "FCDGeometryMesh")
{
m_convex = false;
parent = _parent;
faceVertexCount = faceCount = holeCount = 0;
isDoubleSided = true;
@@ -232,7 +233,7 @@ FCDGeometryMesh* FCDGeometryMesh::Clone(FloatList& newPositions, uint32 newPosit
FUStatus FCDGeometryMesh::LoadFromXML(xmlNode* meshNode)
{
FUStatus status;
// Read in the data sources
xmlNodeList sourceDataNodes;
FindChildrenByType(meshNode, DAE_SOURCE_ELEMENT, sourceDataNodes);

View File

@@ -204,6 +204,8 @@ public:
@param parentNode The COLLADA XML parent node in which to insert the geometric mesh.
@return The created \<mesh\> element XML tree node. */
xmlNode* WriteToXML(xmlNode* parentNode) const;
bool m_convex;
};
#endif // _FCD_GEOMETRY_MESH_H_

View File

@@ -366,11 +366,6 @@ dereferenceXRefs=0;cameraXFov=0;cameraYFov=1</comments>
<half_extents>0.500000 0.500000 0.736465</half_extents>
</box>
</shape>
<shape>
<box>
<half_extents>0.500000 0.500000 0.500000</half_extents>
</box>
</shape>
</technique_common>
</rigid_body>
<rigid_body sid="nxRigidBody2-RB">
@@ -382,11 +377,6 @@ dereferenceXRefs=0;cameraXFov=0;cameraYFov=1</comments>
<radius>1.000000</radius>
</sphere>
</shape>
<shape>
<sphere>
<radius>1.000000</radius>
</sphere>
</shape>
</technique_common>
</rigid_body>
<rigid_body sid="nxRigidBody3-RB">

View File

@@ -555,7 +555,7 @@
<instance_physics_material url="#nxRigidBody4PxMaterial"/>
<shape>
<box>
<half_extends>1 1 1</half_extends>
<half_extents>1 1 1</half_extents>
</box>
</shape>
<dynamic>true</dynamic>
@@ -595,6 +595,10 @@
<instance_physics_model url="#nxRigidBody5-PX">
<instance_rigid_body target="#nxRigidBody5"/>
</instance_physics_model>
<technique_common>
<gravity>0 0 -9.810000</gravity>
</technique_common>
</physics_scene>
</library_physics_scenes>
<scene>

View File

@@ -1,178 +1,244 @@
<?xml version="1.0" encoding = "Windows-1252"?>
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="appColladaDemo"
ProjectGUID="{D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}"
SccProjectName=""
SccLocalPath="">
>
<Platforms>
<Platform
Name="Win32"/>
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Release|Win32"
OutputDirectory="..\..\out\release8\build\appColladaDemo\"
IntermediateDirectory="..\..\out\release8\build\appColladaDemo\"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
WholeProgramOptimization="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE">
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG;_CONSOLE"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="..\..\out\release8\build\appColladaDemo\appColladaDemo.tlb"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
StringPooling="TRUE"
EnableFunctionLevelLinking="TRUE"
RuntimeLibrary="2"
DebugInformationFormat="3"
BufferSecurityCheck="FALSE"
PreprocessorDefinitions="NDEBUG;_CONSOLE;WIN32"
OptimizeForProcessor="1"
ExceptionHandling="0"
AdditionalOptions=" "
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics"
Optimization="2"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics;..\..\Extras\FCollada;..\..\Extras\FCollada\LibXML\include"
PreprocessorDefinitions="NDEBUG;_CONSOLE;WIN32"
StringPooling="true"
ExceptionHandling="0"
RuntimeLibrary="2"
BufferSecurityCheck="false"
EnableFunctionLevelLinking="true"
TreatWChar_tAsBuiltInType="false"
PrecompiledHeaderFile="..\..\out\release8\build\appColladaDemo\appColladaDemo.pch"
AssemblerListingLocation="..\..\out\release8\build\appColladaDemo\"
ObjectFile="..\..\out\release8\build\appColladaDemo\"
ProgramDataBaseFileName="..\..\out\release8\build\appColladaDemo\ColladaDemo.pdb"
WarningLevel="3"
SuppressStartupBanner="TRUE"
Detect64BitPortabilityProblems="TRUE"
TreatWChar_tAsBuiltInType="false"
CompileAs="0"/>
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
CompileAs="0"
/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
GenerateDebugInformation="TRUE"
IgnoreDefaultLibraryNames="LIBC,LIBCD,LIBCMT,LIBCMTD"
OutputFile="..\..\ColladaDemo.exe"
SubSystem="1"
AdditionalOptions=" "
AdditionalDependencies="glut32.lib"
IgnoreImportLibrary="TRUE"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\Glut"
ProgramDatabaseFile="..\..\out\release8\build\appColladaDemo\ColladaDemo.pdb"
TargetMachine="1"/>
<Tool
Name="VCLibrarianTool"
SuppressStartupBanner="TRUE"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG;_CONSOLE"
MkTypLibCompatible="TRUE"
SuppressStartupBanner="TRUE"
TargetEnvironment="1"
TypeLibraryName="..\..\out\release8\build\appColladaDemo\appColladaDemo.tlb"/>
<Tool
Name="VCPostBuildEventTool"
/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG;_CONSOLE;PROJECTGEN_VERSION=8"
Culture="1033"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics"
Culture="1033"/>
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCWebDeploymentTool"/>
Name="VCLinkerTool"
IgnoreImportLibrary="true"
AdditionalOptions=" "
AdditionalDependencies="glut32.lib"
OutputFile="..\..\ColladaDemo.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\Glut"
IgnoreDefaultLibraryNames="LIBC,LIBCD,LIBCMT,LIBCMTD"
GenerateDebugInformation="true"
ProgramDatabaseFile="..\..\out\release8\build\appColladaDemo\ColladaDemo.pdb"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory="..\..\out\debug8\build\appColladaDemo\"
IntermediateDirectory="..\..\out\debug8\build\appColladaDemo\"
ConfigurationType="1"
CharacterSet="2"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE">
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG;_CONSOLE"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName="..\..\out\debug8\build\appColladaDemo\appColladaDemo.tlb"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
MinimalRebuild="TRUE"
DebugInformationFormat="4"
RuntimeTypeInfo="TRUE"
RuntimeLibrary="3"
PreprocessorDefinitions="_DEBUG;_CONSOLE;WIN32"
OptimizeForProcessor="1"
ExceptionHandling="0"
AdditionalOptions=" "
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics"
Optimization="0"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics;..\..\Extras\FCollada;..\..\Extras\FCollada\LibXML\include"
PreprocessorDefinitions="_DEBUG;_CONSOLE;WIN32"
MinimalRebuild="true"
ExceptionHandling="0"
RuntimeLibrary="3"
TreatWChar_tAsBuiltInType="false"
RuntimeTypeInfo="true"
PrecompiledHeaderFile="..\..\out\debug8\build\appColladaDemo\appColladaDemo.pch"
AssemblerListingLocation="..\..\out\debug8\build\appColladaDemo\"
ObjectFile="..\..\out\debug8\build\appColladaDemo\"
ProgramDataBaseFileName="..\..\out\debug8\build\appColladaDemo\ColladaDemo.pdb"
WarningLevel="3"
SuppressStartupBanner="TRUE"
Detect64BitPortabilityProblems="TRUE"
TreatWChar_tAsBuiltInType="false"
CompileAs="0"/>
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
CompileAs="0"
/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="TRUE"
IgnoreDefaultLibraryNames="LIBC,LIBCD,LIBCMT,LIBCMTD,MSVCRT"
OutputFile="..\..\ColladaDemo.exe"
SubSystem="1"
AdditionalOptions=" "
AdditionalDependencies="glut32.lib"
IgnoreImportLibrary="TRUE"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="..\..\Glut"
ProgramDatabaseFile="..\..\out\debug8\build\appColladaDemo\ColladaDemo.pdb"
TargetMachine="1"/>
<Tool
Name="VCLibrarianTool"
SuppressStartupBanner="TRUE"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG;_CONSOLE"
MkTypLibCompatible="TRUE"
SuppressStartupBanner="TRUE"
TargetEnvironment="1"
TypeLibraryName="..\..\out\debug8\build\appColladaDemo\appColladaDemo.tlb"/>
<Tool
Name="VCPostBuildEventTool"
/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_CONSOLE;PROJECTGEN_VERSION=8"
Culture="1033"
AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics"
Culture="1033"/>
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCWebDeploymentTool"/>
Name="VCLinkerTool"
IgnoreImportLibrary="true"
AdditionalOptions=" "
AdditionalDependencies="glut32.lib"
OutputFile="..\..\ColladaDemo.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\Glut"
IgnoreDefaultLibraryNames="LIBC,LIBCD,LIBCMT,LIBCMTD,MSVCRT"
GenerateDebugInformation="true"
ProgramDatabaseFile="..\..\out\debug8\build\appColladaDemo\ColladaDemo.pdb"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="">
>
<File
RelativePath="..\..\Demos\ColladaDemo\ColladaDemo.cpp">
RelativePath="..\..\Demos\ColladaDemo\ColladaDemo.cpp"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="">
>
<File
RelativePath="..\..\msvc\appColladaDemo.rc">
RelativePath="..\..\msvc\appColladaDemo.rc"
>
</File>
</Filter>
</Files>

File diff suppressed because it is too large Load Diff