- update CHANGES.current.
- mark aiAnimMesh data structures as *NOT CURRENTLY USED*. They are, however, still contained and visible because some ports may be relying on their presence. - add SimpleAssimpViewX sample provided by drparallax. Thanks! (http://sourceforge.net/projects/assimp/forums/forum/817654/topic/3917829) git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@843 67173fc5-114c-0410-ac8e-9d2fd5bffc1fpull/1/head
parent
ec6ef9f145
commit
6f1408a7f0
42
CHANGES
42
CHANGES
|
@ -2,6 +2,48 @@
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2.0 (2010-11-21)
|
||||||
|
|
||||||
|
FEATURES:
|
||||||
|
- Add support for static Blender (*.blend) scenes
|
||||||
|
- Add support for Q3BSP scenes
|
||||||
|
- Add a windows-based OpenGL sample featuring texturing & basic materials
|
||||||
|
- Add an experimental progress feedback interface.
|
||||||
|
- Vastly improved performance (up to 500%, depending on mesh size and
|
||||||
|
spatial structure) in some expensive postprocessing steps
|
||||||
|
- AssimpView now uses a reworked layout which leaves more space
|
||||||
|
to the scene hierarchy window
|
||||||
|
|
||||||
|
- Add C# bindings ('Assimp.NET')
|
||||||
|
|
||||||
|
FIXES:
|
||||||
|
- Many Collada bugfixes, improve faul tolerance
|
||||||
|
- Fix possible crashes in the Obj loader
|
||||||
|
- Improve the Ogre XML loader
|
||||||
|
- OpenGL-sample now works with MinGW
|
||||||
|
- Fix Importer::FindLoader failing on uppercase file extensions
|
||||||
|
- Fix flawed path handling when locating external files
|
||||||
|
- Limit the maximum number of vertices, faces, face indices and
|
||||||
|
weights that Assimp is able to handle. This is to avoid
|
||||||
|
crashes due to overflowing counters.
|
||||||
|
|
||||||
|
- Updated XCode project files
|
||||||
|
- Further CMAKE build improvements
|
||||||
|
|
||||||
|
|
||||||
|
API CHANGES:
|
||||||
|
- Add data structures for vertex-based animations (These are not
|
||||||
|
currently used, however ...)
|
||||||
|
- Some Assimp::Importer methods are const now.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
1.1 (2010-04-17)
|
1.1 (2010-04-17)
|
||||||
This is the list of relevant changes from the 1.0 (r412) release to 1.1 (r700).
|
This is the list of relevant changes from the 1.0 (r412) release to 1.1 (r700).
|
||||||
|
|
||||||
|
|
|
@ -11,9 +11,9 @@ static const char* LEGAL_INFORMATION =
|
||||||
"Open Asset Import Library (Assimp).\n"
|
"Open Asset Import Library (Assimp).\n"
|
||||||
"A free C/C++ library to import various 3D file formats into applications\n\n"
|
"A free C/C++ library to import various 3D file formats into applications\n\n"
|
||||||
|
|
||||||
"(c) ASSIMP Development Team, 2008-2010\n"
|
"(c) 2008-2010, ASSIMP Development Team\n"
|
||||||
"License: 3-clause BSD license\n"
|
"License under the terms and conditions of the 3-clause BSD license\n"
|
||||||
"Website: http://assimp.sourceforge.net\n"
|
"http://assimp.sourceforge.net\n"
|
||||||
;
|
;
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
@ -25,13 +25,13 @@ ASSIMP_API const char* aiGetLegalString () {
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
// Get Assimp minor version
|
// Get Assimp minor version
|
||||||
ASSIMP_API unsigned int aiGetVersionMinor () {
|
ASSIMP_API unsigned int aiGetVersionMinor () {
|
||||||
return 1;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
// Get Assimp major version
|
// Get Assimp major version
|
||||||
ASSIMP_API unsigned int aiGetVersionMajor () {
|
ASSIMP_API unsigned int aiGetVersionMajor () {
|
||||||
return 1;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -68,9 +68,10 @@ using namespace Assimp;
|
||||||
using namespace Assimp::Blender;
|
using namespace Assimp::Blender;
|
||||||
using namespace Assimp::Formatter;
|
using namespace Assimp::Formatter;
|
||||||
|
|
||||||
|
|
||||||
static const aiLoaderDesc blenderDesc = {
|
static const aiLoaderDesc blenderDesc = {
|
||||||
"Blender 3D Importer \nhttp://www.blender3d.org",
|
"Blender 3D Importer \nhttp://www.blender3d.org",
|
||||||
"Alexander Gessler <alexander.gessler@gmx.net>",
|
"Assimp Team",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
aiLoaderFlags_SupportBinaryFlavour | aiLoaderFlags_Experimental,
|
aiLoaderFlags_SupportBinaryFlavour | aiLoaderFlags_Experimental,
|
||||||
|
@ -80,6 +81,7 @@ static const aiLoaderDesc blenderDesc = {
|
||||||
50
|
50
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
// Constructor to be privately used by Importer
|
// Constructor to be privately used by Importer
|
||||||
BlenderImporter::BlenderImporter()
|
BlenderImporter::BlenderImporter()
|
||||||
|
|
|
@ -323,8 +323,9 @@ enum aiPrimitiveType
|
||||||
((n) > 3 ? aiPrimitiveType_POLYGON : (aiPrimitiveType)(1u << ((n)-1)))
|
((n) > 3 ? aiPrimitiveType_POLYGON : (aiPrimitiveType)(1u << ((n)-1)))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
/** @brief An AnimMesh is an attachment to an #aiMesh stores per-vertex
|
/** @brief NOT CURRENTLY IN USE. An AnimMesh is an attachment to an #aiMesh stores per-vertex
|
||||||
* animations for a particular frame.
|
* animations for a particular frame.
|
||||||
*
|
*
|
||||||
* You may think of an #aiAnimMesh as a `patch` for the host mesh, which
|
* You may think of an #aiAnimMesh as a `patch` for the host mesh, which
|
||||||
|
@ -436,6 +437,7 @@ struct aiAnimMesh
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
/** @brief A mesh represents a geometry or model with a single material.
|
/** @brief A mesh represents a geometry or model with a single material.
|
||||||
*
|
*
|
||||||
|
@ -589,14 +591,16 @@ struct aiMesh
|
||||||
**/
|
**/
|
||||||
C_STRUCT aiString mName;
|
C_STRUCT aiString mName;
|
||||||
|
|
||||||
/** The number of attachment meshes */
|
|
||||||
|
/** NOT CURRENTLY IN USE. The number of attachment meshes */
|
||||||
unsigned int mNumAnimMeshes;
|
unsigned int mNumAnimMeshes;
|
||||||
|
|
||||||
/** Attachment meshes for this mesh, for vertex-based animation.
|
/** NOT CURRENTLY IN USE. Attachment meshes for this mesh, for vertex-based animation.
|
||||||
* Attachment meshes carry replacement data for some of the
|
* Attachment meshes carry replacement data for some of the
|
||||||
* mesh'es vertex components (usually positions, normals). */
|
* mesh'es vertex components (usually positions, normals). */
|
||||||
C_STRUCT aiAnimMesh** mAnimMeshes;
|
C_STRUCT aiAnimMesh** mAnimMeshes;
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
||||||
//! Default constructor. Initializes all members to 0
|
//! Default constructor. Initializes all members to 0
|
||||||
|
@ -604,12 +608,15 @@ struct aiMesh
|
||||||
{
|
{
|
||||||
mNumVertices = 0;
|
mNumVertices = 0;
|
||||||
mNumFaces = 0;
|
mNumFaces = 0;
|
||||||
|
|
||||||
mNumAnimMeshes = 0;
|
mNumAnimMeshes = 0;
|
||||||
|
|
||||||
mPrimitiveTypes = 0;
|
mPrimitiveTypes = 0;
|
||||||
mVertices = NULL; mFaces = NULL;
|
mVertices = NULL; mFaces = NULL;
|
||||||
mNormals = NULL; mTangents = NULL;
|
mNormals = NULL; mTangents = NULL;
|
||||||
mBitangents = NULL;
|
mBitangents = NULL;
|
||||||
mAnimMeshes = NULL;
|
mAnimMeshes = NULL;
|
||||||
|
|
||||||
for( unsigned int a = 0; a < AI_MAX_NUMBER_OF_TEXTURECOORDS; a++)
|
for( unsigned int a = 0; a < AI_MAX_NUMBER_OF_TEXTURECOORDS; a++)
|
||||||
{
|
{
|
||||||
mNumUVComponents[a] = 0;
|
mNumUVComponents[a] = 0;
|
||||||
|
@ -642,11 +649,12 @@ struct aiMesh
|
||||||
}
|
}
|
||||||
delete [] mBones;
|
delete [] mBones;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mNumAnimMeshes && mAnimMeshes) {
|
if (mNumAnimMeshes && mAnimMeshes) {
|
||||||
for( unsigned int a = 0; a < mNumAnimMeshes; a++) {
|
for( unsigned int a = 0; a < mNumAnimMeshes; a++) {
|
||||||
delete mAnimMeshes[a];
|
delete mAnimMeshes[a];
|
||||||
}
|
}
|
||||||
delete [] mBones;
|
delete [] mAnimMeshes;
|
||||||
}
|
}
|
||||||
|
|
||||||
delete [] mFaces;
|
delete [] mFaces;
|
||||||
|
|
|
@ -51,3 +51,9 @@ SimpleTexturedOpenGL
|
||||||
See http://sourceforge.net/projects/assimp/forums/forum/817654/topic/3736373
|
See http://sourceforge.net/projects/assimp/forums/forum/817654/topic/3736373
|
||||||
|
|
||||||
|
|
||||||
|
SimpleAssimpViewX
|
||||||
|
|
||||||
|
A Mac OSX-based viewer app. This sample was kindly provided by drparallax.
|
||||||
|
See http://sourceforge.net/projects/assimp/forums/forum/817654/topic/3917829
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;}
|
||||||
|
{\colortbl;\red255\green255\blue255;}
|
||||||
|
\paperw9840\paperh8400
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
|
||||||
|
|
||||||
|
\f0\b\fs24 \cf0 Engineering:
|
||||||
|
\b0 \
|
||||||
|
Some people\
|
||||||
|
\
|
||||||
|
|
||||||
|
\b Human Interface Design:
|
||||||
|
\b0 \
|
||||||
|
Some other people\
|
||||||
|
\
|
||||||
|
|
||||||
|
\b Testing:
|
||||||
|
\b0 \
|
||||||
|
Hopefully not nobody\
|
||||||
|
\
|
||||||
|
|
||||||
|
\b Documentation:
|
||||||
|
\b0 \
|
||||||
|
Whoever\
|
||||||
|
\
|
||||||
|
|
||||||
|
\b With special thanks to:
|
||||||
|
\b0 \
|
||||||
|
Mom\
|
||||||
|
}
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,923 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
|
||||||
|
<data>
|
||||||
|
<int key="IBDocument.SystemTarget">1060</int>
|
||||||
|
<string key="IBDocument.SystemVersion">10F569</string>
|
||||||
|
<string key="IBDocument.InterfaceBuilderVersion">788</string>
|
||||||
|
<string key="IBDocument.AppKitVersion">1038.29</string>
|
||||||
|
<string key="IBDocument.HIToolboxVersion">461.00</string>
|
||||||
|
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||||
|
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="NS.object.0">788</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<integer value="5"/>
|
||||||
|
</object>
|
||||||
|
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<object class="NSArray" key="dict.sortedKeys" id="0">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableArray" key="IBDocument.RootObjects" id="999730711">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<object class="NSCustomObject" id="488872867">
|
||||||
|
<string key="NSClassName">MyDocument</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSCustomObject" id="416682482">
|
||||||
|
<string key="NSClassName">FirstResponder</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSCustomObject" id="1056315952">
|
||||||
|
<string key="NSClassName">NSApplication</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSWindowTemplate" id="827802848">
|
||||||
|
<int key="NSWindowStyleMask">15</int>
|
||||||
|
<int key="NSWindowBacking">2</int>
|
||||||
|
<string key="NSWindowRect">{{78, 334}, {466, 466}}</string>
|
||||||
|
<int key="NSWTFlags">1081606144</int>
|
||||||
|
<string key="NSWindowTitle">Window</string>
|
||||||
|
<string key="NSWindowClass">NSWindow</string>
|
||||||
|
<string key="NSViewClass">View</string>
|
||||||
|
<string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
|
||||||
|
<string key="NSWindowContentMinSize">{131.131, 86}</string>
|
||||||
|
<object class="NSView" key="NSWindowView" id="317955023">
|
||||||
|
<reference key="NSNextResponder"/>
|
||||||
|
<int key="NSvFlags">256</int>
|
||||||
|
<object class="NSMutableArray" key="NSSubviews">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<object class="NSTextField" id="36964479">
|
||||||
|
<reference key="NSNextResponder" ref="317955023"/>
|
||||||
|
<int key="NSvFlags">256</int>
|
||||||
|
<string key="NSFrame">{{98, 222}, {269, 22}}</string>
|
||||||
|
<reference key="NSSuperview" ref="317955023"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSTextFieldCell" key="NSCell" id="462040940">
|
||||||
|
<int key="NSCellFlags">67239424</int>
|
||||||
|
<int key="NSCellFlags2">138412032</int>
|
||||||
|
<string key="NSContents">Your document contents here</string>
|
||||||
|
<object class="NSFont" key="NSSupport">
|
||||||
|
<string key="NSName">LucidaGrande</string>
|
||||||
|
<double key="NSSize">18</double>
|
||||||
|
<int key="NSfFlags">16</int>
|
||||||
|
</object>
|
||||||
|
<reference key="NSControlView" ref="36964479"/>
|
||||||
|
<object class="NSColor" key="NSBackgroundColor">
|
||||||
|
<int key="NSColorSpace">6</int>
|
||||||
|
<string key="NSCatalogName">System</string>
|
||||||
|
<string key="NSColorName">controlColor</string>
|
||||||
|
<object class="NSColor" key="NSColor">
|
||||||
|
<int key="NSColorSpace">3</int>
|
||||||
|
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSColor" key="NSTextColor">
|
||||||
|
<int key="NSColorSpace">6</int>
|
||||||
|
<string key="NSCatalogName">System</string>
|
||||||
|
<string key="NSColorName">controlTextColor</string>
|
||||||
|
<object class="NSColor" key="NSColor">
|
||||||
|
<int key="NSColorSpace">3</int>
|
||||||
|
<bytes key="NSWhite">MAA</bytes>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSCustomView" id="644409269">
|
||||||
|
<reference key="NSNextResponder" ref="317955023"/>
|
||||||
|
<int key="NSvFlags">274</int>
|
||||||
|
<string key="NSFrameSize">{466, 466}</string>
|
||||||
|
<reference key="NSSuperview" ref="317955023"/>
|
||||||
|
<string key="NSClassName">NSView</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<string key="NSFrameSize">{466, 466}</string>
|
||||||
|
<reference key="NSSuperview"/>
|
||||||
|
</object>
|
||||||
|
<string key="NSScreenRect">{{0, 0}, {1280, 832}}</string>
|
||||||
|
<string key="NSMinSize">{131.131, 108}</string>
|
||||||
|
<string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||||
|
<object class="NSMutableArray" key="connectionRecords">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">delegate</string>
|
||||||
|
<reference key="source" ref="827802848"/>
|
||||||
|
<reference key="destination" ref="488872867"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">17</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">window</string>
|
||||||
|
<reference key="source" ref="488872867"/>
|
||||||
|
<reference key="destination" ref="827802848"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">18</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">_view</string>
|
||||||
|
<reference key="source" ref="488872867"/>
|
||||||
|
<reference key="destination" ref="644409269"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">100022</int>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||||
|
<object class="NSArray" key="orderedObjects">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">0</int>
|
||||||
|
<reference key="object" ref="0"/>
|
||||||
|
<reference key="children" ref="999730711"/>
|
||||||
|
<nil key="parent"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">-2</int>
|
||||||
|
<reference key="object" ref="488872867"/>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
<string key="objectName">File's Owner</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">-1</int>
|
||||||
|
<reference key="object" ref="416682482"/>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
<string key="objectName">First Responder</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">5</int>
|
||||||
|
<reference key="object" ref="827802848"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="317955023"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
<string key="objectName">Window</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">6</int>
|
||||||
|
<reference key="object" ref="317955023"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="36964479"/>
|
||||||
|
<reference ref="644409269"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="827802848"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">20</int>
|
||||||
|
<reference key="object" ref="36964479"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="462040940"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="317955023"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">100020</int>
|
||||||
|
<reference key="object" ref="462040940"/>
|
||||||
|
<reference key="parent" ref="36964479"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">-3</int>
|
||||||
|
<reference key="object" ref="1056315952"/>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
<string key="objectName">Application</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">100021</int>
|
||||||
|
<reference key="object" ref="644409269"/>
|
||||||
|
<reference key="parent" ref="317955023"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<object class="NSArray" key="dict.sortedKeys">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<string>-3.IBPluginDependency</string>
|
||||||
|
<string>100020.IBPluginDependency</string>
|
||||||
|
<string>100021.IBPluginDependency</string>
|
||||||
|
<string>20.IBPluginDependency</string>
|
||||||
|
<string>20.ImportedFromIB2</string>
|
||||||
|
<string>5.IBEditorWindowLastContentRect</string>
|
||||||
|
<string>5.IBPluginDependency</string>
|
||||||
|
<string>5.IBWindowTemplateEditedContentRect</string>
|
||||||
|
<string>5.ImportedFromIB2</string>
|
||||||
|
<string>5.windowTemplate.hasMinSize</string>
|
||||||
|
<string>5.windowTemplate.minSize</string>
|
||||||
|
<string>6.IBPluginDependency</string>
|
||||||
|
<string>6.ImportedFromIB2</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<integer value="1"/>
|
||||||
|
<string>{{424, 525}, {466, 466}}</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>{{424, 525}, {466, 466}}</string>
|
||||||
|
<integer value="1"/>
|
||||||
|
<integer value="1"/>
|
||||||
|
<string>{131.131, 86}</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<integer value="1"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference key="dict.sortedKeys" ref="0"/>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<nil key="activeLocalization"/>
|
||||||
|
<object class="NSMutableDictionary" key="localizations">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference key="dict.sortedKeys" ref="0"/>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<nil key="sourceID"/>
|
||||||
|
<int key="maxID">100022</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||||
|
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">FirstResponder</string>
|
||||||
|
<string key="superclassName">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBUserSource</string>
|
||||||
|
<string key="minorKey"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">MyDocument</string>
|
||||||
|
<string key="superclassName">NSPersistentDocument</string>
|
||||||
|
<object class="NSMutableDictionary" key="outlets">
|
||||||
|
<string key="NS.key.0">_view</string>
|
||||||
|
<string key="NS.object.0">NSView</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||||
|
<string key="NS.key.0">_view</string>
|
||||||
|
<object class="IBToOneOutletInfo" key="NS.object.0">
|
||||||
|
<string key="name">_view</string>
|
||||||
|
<string key="candidateClassName">NSView</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBProjectSource</string>
|
||||||
|
<string key="minorKey">MyDocument.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">MyDocument</string>
|
||||||
|
<string key="superclassName">NSPersistentDocument</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBUserSource</string>
|
||||||
|
<string key="minorKey"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSPersistentDocument</string>
|
||||||
|
<string key="superclassName">NSDocument</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBUserSource</string>
|
||||||
|
<string key="minorKey"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSActionCell</string>
|
||||||
|
<string key="superclassName">NSCell</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSActionCell.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSApplication</string>
|
||||||
|
<string key="superclassName">NSResponder</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="877220377">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSApplication</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="236754727">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSApplication</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="530996899">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSApplication</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSApplication</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSApplication</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSCell</string>
|
||||||
|
<string key="superclassName">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSCell.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSControl</string>
|
||||||
|
<string key="superclassName">NSView</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="440999483">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSDocument</string>
|
||||||
|
<string key="superclassName">NSObject</string>
|
||||||
|
<object class="NSMutableDictionary" key="actions">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<object class="NSArray" key="dict.sortedKeys">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<string>printDocument:</string>
|
||||||
|
<string>revertDocumentToSaved:</string>
|
||||||
|
<string>runPageLayout:</string>
|
||||||
|
<string>saveDocument:</string>
|
||||||
|
<string>saveDocumentAs:</string>
|
||||||
|
<string>saveDocumentTo:</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<string>id</string>
|
||||||
|
<string>id</string>
|
||||||
|
<string>id</string>
|
||||||
|
<string>id</string>
|
||||||
|
<string>id</string>
|
||||||
|
<string>id</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableDictionary" key="actionInfosByName">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<object class="NSArray" key="dict.sortedKeys">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<string>printDocument:</string>
|
||||||
|
<string>revertDocumentToSaved:</string>
|
||||||
|
<string>runPageLayout:</string>
|
||||||
|
<string>saveDocument:</string>
|
||||||
|
<string>saveDocumentAs:</string>
|
||||||
|
<string>saveDocumentTo:</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<object class="IBActionInfo">
|
||||||
|
<string key="name">printDocument:</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBActionInfo">
|
||||||
|
<string key="name">revertDocumentToSaved:</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBActionInfo">
|
||||||
|
<string key="name">runPageLayout:</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBActionInfo">
|
||||||
|
<string key="name">saveDocument:</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBActionInfo">
|
||||||
|
<string key="name">saveDocumentAs:</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBActionInfo">
|
||||||
|
<string key="name">saveDocumentTo:</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSDocument.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSDocument</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSDocumentScripting.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSFormatter</string>
|
||||||
|
<string key="superclassName">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSMenu</string>
|
||||||
|
<string key="superclassName">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="779771453">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSMenu.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSAccessibility.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<reference key="sourceIdentifier" ref="877220377"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<reference key="sourceIdentifier" ref="236754727"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<reference key="sourceIdentifier" ref="530996899"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<reference key="sourceIdentifier" ref="440999483"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSDictionaryController.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSDragging.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSFontManager.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSFontPanel.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSKeyValueBinding.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<reference key="sourceIdentifier" ref="779771453"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSNibLoading.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSPasteboard.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSSavePanel.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSTableView.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSToolbarItem.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="930720818">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSView.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">ImageKit.framework/Headers/IKImageBrowserView.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">ImageKit.framework/Headers/IKSaveOptions.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">ImageKit.framework/Headers/ImageKitDeprecated.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">PDFKit.framework/Headers/PDFDocument.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">PDFKit.framework/Headers/PDFView.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">QTKit.framework/Headers/QTCaptureDecompressedAudioOutput.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">QTKit.framework/Headers/QTCaptureDecompressedVideoOutput.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">QTKit.framework/Headers/QTCaptureFileOutput.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">QTKit.framework/Headers/QTCaptureVideoPreviewOutput.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">QTKit.framework/Headers/QTCaptureView.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">QTKit.framework/Headers/QTMovie.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">QTKit.framework/Headers/QTMovieView.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">QuartzComposer.framework/Headers/QCCompositionParameterView.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">QuartzComposer.framework/Headers/QCCompositionPickerView.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">QuartzFilters.framework/Headers/QuartzFilterManager.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">QuickLookUI.framework/Headers/QLPreviewPanel.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSPersistentDocument</string>
|
||||||
|
<string key="superclassName">NSDocument</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSPersistentDocument.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSResponder</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSResponder</string>
|
||||||
|
<string key="superclassName">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSResponder.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSTextField</string>
|
||||||
|
<string key="superclassName">NSControl</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSTextField.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSTextFieldCell</string>
|
||||||
|
<string key="superclassName">NSActionCell</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSTextFieldCell.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSView</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSClipView.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSView</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSView</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSView</string>
|
||||||
|
<string key="superclassName">NSResponder</string>
|
||||||
|
<reference key="sourceIdentifier" ref="930720818"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSWindow</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSWindow</string>
|
||||||
|
<string key="superclassName">NSResponder</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSWindow.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSWindow</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBFrameworkSource</string>
|
||||||
|
<string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<int key="IBDocument.localizationMode">0</int>
|
||||||
|
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
|
||||||
|
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||||
|
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
|
||||||
|
<integer value="1060" key="NS.object.0"/>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||||
|
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
|
||||||
|
<integer value="3000" key="NS.object.0"/>
|
||||||
|
</object>
|
||||||
|
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||||
|
<string key="IBDocument.LastKnownRelativeProjectPath">../SimpleAssimpViewX.xcodeproj</string>
|
||||||
|
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||||
|
</data>
|
||||||
|
</archive>
|
|
@ -0,0 +1,98 @@
|
||||||
|
//
|
||||||
|
// v002MeshHelper.h
|
||||||
|
// v002 Model Importer
|
||||||
|
//
|
||||||
|
// Created by vade on 9/26/10.
|
||||||
|
// Copyright 2010 __MyCompanyName__. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
#import <OpenGL/OpenGL.h>
|
||||||
|
#import "aiColor4D.h"
|
||||||
|
#import "aiVector3D.h"
|
||||||
|
#import "aiVector2D.h"
|
||||||
|
#import "aiMatrix4x4.h"
|
||||||
|
|
||||||
|
/* workflow:
|
||||||
|
|
||||||
|
1) create a new scene wrapper
|
||||||
|
2) populate an array of of meshHelpers for each mesh in the original scene
|
||||||
|
3) (eventually) create an animator instance
|
||||||
|
4) scale the asset (needed?)
|
||||||
|
5) create the asset data (GL resources, textures etc)
|
||||||
|
5a) for each mesh create a material instance
|
||||||
|
5b) create a static vertex buffer
|
||||||
|
5c) create index buffer
|
||||||
|
5d) populate the index buffer
|
||||||
|
5e) (eventually) gather weights
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define BUFFER_OFFSET(i) ((char *)NULL + (i))
|
||||||
|
|
||||||
|
struct Vertex
|
||||||
|
{
|
||||||
|
aiVector3D vPosition;
|
||||||
|
aiVector3D vNormal;
|
||||||
|
|
||||||
|
aiColor4D dColorDiffuse;
|
||||||
|
aiVector3D vTangent;
|
||||||
|
aiVector3D vBitangent;
|
||||||
|
aiVector3D vTextureUV;
|
||||||
|
aiVector3D vTextureUV2;
|
||||||
|
unsigned char mBoneIndices[4];
|
||||||
|
unsigned char mBoneWeights[4]; // last Weight not used, calculated inside the vertex shader
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Helper Class to store GPU related resources from a given aiMesh
|
||||||
|
// Modeled after AssimpView asset helper
|
||||||
|
@interface MeshHelper : NSObject
|
||||||
|
{
|
||||||
|
// Display list ID, this one shots *all drawing* of the mesh. Only ever use this to draw. Booya.
|
||||||
|
GLuint displayList;
|
||||||
|
|
||||||
|
// VAO that encapsulates all VBO drawing state
|
||||||
|
GLuint vao;
|
||||||
|
|
||||||
|
// VBOs
|
||||||
|
GLuint vertexBuffer;
|
||||||
|
GLuint indexBuffer;
|
||||||
|
GLuint normalBuffer;
|
||||||
|
GLuint numIndices;
|
||||||
|
|
||||||
|
// texture
|
||||||
|
GLuint textureID;
|
||||||
|
|
||||||
|
// Material
|
||||||
|
aiColor4D diffuseColor;
|
||||||
|
aiColor4D specularColor;
|
||||||
|
aiColor4D ambientColor;
|
||||||
|
aiColor4D emissiveColor;
|
||||||
|
|
||||||
|
GLfloat opacity;
|
||||||
|
GLfloat shininess;
|
||||||
|
GLfloat specularStrength;
|
||||||
|
|
||||||
|
BOOL twoSided;
|
||||||
|
}
|
||||||
|
|
||||||
|
@property (readwrite, assign) GLuint vao;
|
||||||
|
@property (readwrite, assign) GLuint displayList;
|
||||||
|
|
||||||
|
@property (readwrite, assign) GLuint vertexBuffer;
|
||||||
|
@property (readwrite, assign) GLuint indexBuffer;
|
||||||
|
@property (readwrite, assign) GLuint normalBuffer;
|
||||||
|
@property (readwrite, assign) GLuint numIndices;
|
||||||
|
|
||||||
|
@property (readwrite, assign) GLuint textureID;
|
||||||
|
|
||||||
|
@property (readwrite, assign) aiColor4D* diffuseColor;
|
||||||
|
@property (readwrite, assign) aiColor4D* specularColor;
|
||||||
|
@property (readwrite, assign) aiColor4D* ambientColor;
|
||||||
|
@property (readwrite, assign) aiColor4D* emissiveColor;
|
||||||
|
|
||||||
|
@property (readwrite, assign) GLfloat opacity;
|
||||||
|
@property (readwrite, assign) GLfloat shininess;
|
||||||
|
@property (readwrite, assign) GLfloat specularStrength;
|
||||||
|
@property (readwrite, assign) BOOL twoSided;
|
||||||
|
@end
|
|
@ -0,0 +1,99 @@
|
||||||
|
//
|
||||||
|
// v002MeshHelper.m
|
||||||
|
// v002 Model Importer
|
||||||
|
//
|
||||||
|
// Created by vade on 9/26/10.
|
||||||
|
// Copyright 2010 __MyCompanyName__. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "ModelLoaderHelperClasses.h"
|
||||||
|
|
||||||
|
|
||||||
|
@implementation MeshHelper
|
||||||
|
|
||||||
|
@synthesize vao;
|
||||||
|
@synthesize displayList;
|
||||||
|
|
||||||
|
@synthesize vertexBuffer;
|
||||||
|
@synthesize indexBuffer;
|
||||||
|
@synthesize normalBuffer;
|
||||||
|
@synthesize numIndices;
|
||||||
|
|
||||||
|
@synthesize textureID;
|
||||||
|
|
||||||
|
@dynamic diffuseColor;
|
||||||
|
@dynamic specularColor;
|
||||||
|
@dynamic ambientColor;
|
||||||
|
@dynamic emissiveColor;
|
||||||
|
|
||||||
|
@synthesize opacity;
|
||||||
|
@synthesize shininess;
|
||||||
|
@synthesize specularStrength;
|
||||||
|
@synthesize twoSided;
|
||||||
|
|
||||||
|
- (id) init
|
||||||
|
{
|
||||||
|
if((self = [super init]))
|
||||||
|
{
|
||||||
|
diffuseColor = aiColor4D(0.8, 0.8, 0.8, 1.0);
|
||||||
|
specularColor = aiColor4D(0.0f, 0.0f, 0.0f, 1.0f);
|
||||||
|
ambientColor = aiColor4D(0.2f, 0.2f, 0.2f, 1.0f);
|
||||||
|
emissiveColor = aiColor4D(0.0f, 0.0f, 0.0f, 1.0f);
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void) setDiffuseColor:(aiColor4D*) color;
|
||||||
|
{
|
||||||
|
diffuseColor.r = color->r;
|
||||||
|
diffuseColor.g = color->g;
|
||||||
|
diffuseColor.b = color->b;
|
||||||
|
diffuseColor.a = color->a;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (aiColor4D*) diffuseColor
|
||||||
|
{
|
||||||
|
return &diffuseColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void) setSpecularColor:(aiColor4D*) color;
|
||||||
|
{
|
||||||
|
specularColor.r = color->r;
|
||||||
|
specularColor.g = color->g;
|
||||||
|
specularColor.b = color->b;
|
||||||
|
specularColor.a = color->a;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (aiColor4D*) specularColor
|
||||||
|
{
|
||||||
|
return &specularColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void) setAmbientColor:(aiColor4D*) color;
|
||||||
|
{
|
||||||
|
ambientColor.r = color->r;
|
||||||
|
ambientColor.g = color->g;
|
||||||
|
ambientColor.b = color->b;
|
||||||
|
ambientColor.a = color->a;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (aiColor4D*) ambientColor
|
||||||
|
{
|
||||||
|
return &ambientColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void) setEmissiveColor:(aiColor4D*) color;
|
||||||
|
{
|
||||||
|
emissiveColor.r = color->r;
|
||||||
|
emissiveColor.g = color->g;
|
||||||
|
emissiveColor.b = color->b;
|
||||||
|
emissiveColor.a = color->a;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (aiColor4D*) emissiveColor
|
||||||
|
{
|
||||||
|
return &emissiveColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@end
|
|
@ -0,0 +1,59 @@
|
||||||
|
//
|
||||||
|
// MyDocument.h
|
||||||
|
// DisplayLinkAsyncMoviePlayer
|
||||||
|
//
|
||||||
|
// Created by vade on 10/26/10.
|
||||||
|
// Copyright __MyCompanyName__ 2010 . All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
#import "ModelLoaderHelperClasses.h"
|
||||||
|
|
||||||
|
// assimp include files. These three are usually needed.
|
||||||
|
#import "assimp.h"
|
||||||
|
#import "aiPostProcess.h"
|
||||||
|
#import "aiScene.h"
|
||||||
|
|
||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
#import <OpenGL/OpenGL.h>
|
||||||
|
#import <Quartz/Quartz.h>
|
||||||
|
|
||||||
|
|
||||||
|
@interface MyDocument : NSPersistentDocument
|
||||||
|
{
|
||||||
|
CVDisplayLinkRef _displayLink;
|
||||||
|
NSOpenGLContext* _glContext;
|
||||||
|
NSOpenGLPixelFormat* _glPixelFormat;
|
||||||
|
|
||||||
|
NSView* _view;
|
||||||
|
|
||||||
|
// Assimp Stuff
|
||||||
|
aiScene* _scene;
|
||||||
|
struct aiVector3D scene_min, scene_max, scene_center;
|
||||||
|
double normalizedScale;
|
||||||
|
|
||||||
|
// Our array of textures.
|
||||||
|
GLuint *textureIds;
|
||||||
|
|
||||||
|
// only used if we use
|
||||||
|
NSMutableArray* modelMeshes;
|
||||||
|
BOOL builtBuffers;
|
||||||
|
|
||||||
|
NSMutableDictionary* textureDictionary; // Array of Dicionaries that map image filenames to textureIds
|
||||||
|
}
|
||||||
|
|
||||||
|
@property (retain) IBOutlet NSView* _view;
|
||||||
|
|
||||||
|
|
||||||
|
- (CVReturn)displayLinkRenderCallback:(const CVTimeStamp *)timeStamp;
|
||||||
|
- (void) render;
|
||||||
|
|
||||||
|
- (void) drawMeshesInContext:(CGLContextObj)cgl_ctx;
|
||||||
|
- (void) createGLResourcesInContext:(CGLContextObj)cgl_ctx;
|
||||||
|
- (void) deleteGLResourcesInContext:(CGLContextObj)cgl_ctx;
|
||||||
|
|
||||||
|
- (void) loadTexturesInContext:(CGLContextObj)cgl_ctx withModelPath:(NSString*) modelPath;
|
||||||
|
- (void) getBoundingBoxWithMinVector:(struct aiVector3D*) min maxVectr:(struct aiVector3D*) max;
|
||||||
|
- (void) getBoundingBoxForNode:(const struct aiNode*)nd minVector:(struct aiVector3D*) min maxVector:(struct aiVector3D*) max matrix:(struct aiMatrix4x4*) trafo;
|
||||||
|
|
||||||
|
@end
|
|
@ -0,0 +1,804 @@
|
||||||
|
//
|
||||||
|
// MyDocument.m
|
||||||
|
// DisplayLinkAsyncMoviePlayer
|
||||||
|
//
|
||||||
|
// Created by vade on 10/26/10.
|
||||||
|
// Copyright __MyCompanyName__ 2010 . All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "aiConfig.h"
|
||||||
|
#import "MyDocument.h"
|
||||||
|
#import <OpenGL/CGLMacro.h>
|
||||||
|
|
||||||
|
#pragma mark -
|
||||||
|
#pragma mark Helper Functions
|
||||||
|
|
||||||
|
#define aisgl_min(x,y) (x<y?x:y)
|
||||||
|
#define aisgl_max(x,y) (y>x?y:x)
|
||||||
|
|
||||||
|
static void color4_to_float4(const struct aiColor4D *c, float f[4])
|
||||||
|
{
|
||||||
|
f[0] = c->r;
|
||||||
|
f[1] = c->g;
|
||||||
|
f[2] = c->b;
|
||||||
|
f[3] = c->a;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void set_float4(float f[4], float a, float b, float c, float d)
|
||||||
|
{
|
||||||
|
f[0] = a;
|
||||||
|
f[1] = b;
|
||||||
|
f[2] = c;
|
||||||
|
f[3] = d;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark -
|
||||||
|
#pragma mark CVDisplayLink Callback
|
||||||
|
static CVReturn MyDisplayLinkCallback(CVDisplayLinkRef displayLink,const CVTimeStamp *inNow,const CVTimeStamp *inOutputTime,CVOptionFlags flagsIn,CVOptionFlags *flagsOut,void *displayLinkContext)
|
||||||
|
{
|
||||||
|
CVReturn error = [(MyDocument*) displayLinkContext displayLinkRenderCallback:inOutputTime];
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark -
|
||||||
|
|
||||||
|
@implementation MyDocument
|
||||||
|
@synthesize _view;
|
||||||
|
|
||||||
|
- (id)init
|
||||||
|
{
|
||||||
|
self = [super init];
|
||||||
|
if (self != nil)
|
||||||
|
{
|
||||||
|
// initialization code
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSString *)windowNibName
|
||||||
|
{
|
||||||
|
return @"MyDocument";
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)windowControllerDidLoadNib:(NSWindowController *)windowController
|
||||||
|
{
|
||||||
|
[super windowControllerDidLoadNib:windowController];
|
||||||
|
|
||||||
|
NSOpenGLPixelFormatAttribute attributes[] =
|
||||||
|
{
|
||||||
|
NSOpenGLPFADoubleBuffer,
|
||||||
|
NSOpenGLPFAAccelerated,
|
||||||
|
NSOpenGLPFADepthSize, 24,
|
||||||
|
NSOpenGLPFAMultisample,
|
||||||
|
NSOpenGLPFASampleBuffers, 2,
|
||||||
|
(NSOpenGLPixelFormatAttribute) 0
|
||||||
|
};
|
||||||
|
|
||||||
|
_glPixelFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:attributes];
|
||||||
|
|
||||||
|
if(!_glPixelFormat)
|
||||||
|
NSLog(@"Error creating PF");
|
||||||
|
|
||||||
|
_glContext = [[NSOpenGLContext alloc] initWithFormat:_glPixelFormat shareContext:nil];
|
||||||
|
|
||||||
|
const GLint one = 1;
|
||||||
|
|
||||||
|
[_glContext setValues:&one forParameter:NSOpenGLCPSwapInterval];
|
||||||
|
[_glContext setView:_view];
|
||||||
|
|
||||||
|
// Set up initial GL state.
|
||||||
|
CGLContextObj cgl_ctx = (CGLContextObj)[_glContext CGLContextObj];
|
||||||
|
|
||||||
|
glEnable(GL_MULTISAMPLE);
|
||||||
|
|
||||||
|
glClearColor(0.3, 0.3, 0.3, 0.3);
|
||||||
|
|
||||||
|
// enable color tracking
|
||||||
|
//glEnable(GL_COLOR_MATERIAL);
|
||||||
|
|
||||||
|
glEnable(GL_BLEND);
|
||||||
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
|
|
||||||
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
glDepthFunc(GL_LEQUAL);
|
||||||
|
glDepthMask(GL_TRUE);
|
||||||
|
|
||||||
|
glEnable(GL_NORMALIZE);
|
||||||
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
|
||||||
|
glShadeModel(GL_SMOOTH);
|
||||||
|
|
||||||
|
glEnable(GL_LIGHTING);
|
||||||
|
|
||||||
|
GLfloat global_ambient[] = { 0.5f, 0.5f, 0.5f, 1.0f };
|
||||||
|
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, global_ambient);
|
||||||
|
|
||||||
|
GLfloat specular[] = {1.0f, 1.0f, 1.0f, 1.0f};
|
||||||
|
glLightfv(GL_LIGHT0, GL_SPECULAR, specular);
|
||||||
|
|
||||||
|
GLfloat diffuse[] = {1.0f, 1.0f, 1.0f, 1.0f};
|
||||||
|
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
|
||||||
|
|
||||||
|
GLfloat ambient[] = {0.2, 0.2f, 0.2f, 0.2f};
|
||||||
|
glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
|
||||||
|
|
||||||
|
GLfloat position[] = { 1.0f, 1.0f, 1.0f, 1.0f};
|
||||||
|
glLightfv(GL_LIGHT0, GL_POSITION, position);
|
||||||
|
|
||||||
|
glEnable(GL_LIGHT0);
|
||||||
|
|
||||||
|
// This is the only client state that always has to be set.
|
||||||
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
|
|
||||||
|
// end GL State setup.
|
||||||
|
|
||||||
|
// Display Link setup.
|
||||||
|
CVReturn error = kCVReturnSuccess;
|
||||||
|
|
||||||
|
error = CVDisplayLinkCreateWithActiveCGDisplays(&_displayLink);
|
||||||
|
if(error == kCVReturnError)
|
||||||
|
NSLog(@"Error Creating DisplayLink");
|
||||||
|
|
||||||
|
error = CVDisplayLinkSetOutputCallback(_displayLink,MyDisplayLinkCallback, self);
|
||||||
|
if(error == kCVReturnError)
|
||||||
|
NSLog(@"Error Setting DisplayLink Callback");
|
||||||
|
|
||||||
|
error = CVDisplayLinkStart(_displayLink);
|
||||||
|
if(error == kCVReturnError)
|
||||||
|
NSLog(@"Error Starting DisplayLink");
|
||||||
|
|
||||||
|
NSOpenPanel* openPanel = [NSOpenPanel openPanel];
|
||||||
|
|
||||||
|
[openPanel beginSheetModalForWindow:[_view window] completionHandler:^(NSInteger result)
|
||||||
|
{
|
||||||
|
if (result == NSOKButton)
|
||||||
|
{
|
||||||
|
[openPanel orderOut:self]; // close panel before we might present an error
|
||||||
|
|
||||||
|
if([[NSFileManager defaultManager] fileExistsAtPath:[openPanel filename]])
|
||||||
|
{
|
||||||
|
// Load our new path.
|
||||||
|
|
||||||
|
// only ever give us triangles.
|
||||||
|
aiSetImportPropertyInteger(AI_CONFIG_PP_SBP_REMOVE, aiPrimitiveType_LINE | aiPrimitiveType_POINT );
|
||||||
|
|
||||||
|
NSUInteger aiPostProccesFlags;
|
||||||
|
|
||||||
|
switch (2)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
aiPostProccesFlags = aiProcessPreset_TargetRealtime_Fast;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
aiPostProccesFlags = aiProcessPreset_TargetRealtime_Quality;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
aiPostProccesFlags = aiProcessPreset_TargetRealtime_MaxQuality;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
aiPostProccesFlags = aiProcessPreset_TargetRealtime_MaxQuality;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// aiProcess_FlipUVs is needed for VAO / VBOs, not sure why.
|
||||||
|
_scene = (aiScene*) aiImportFile([[openPanel filename] cStringUsingEncoding:[NSString defaultCStringEncoding]], aiPostProccesFlags | aiProcess_Triangulate | aiProcess_FlipUVs | aiProcess_PreTransformVertices | 0 );
|
||||||
|
|
||||||
|
if (_scene)
|
||||||
|
{
|
||||||
|
textureDictionary = [[NSMutableDictionary alloc] initWithCapacity:5];
|
||||||
|
|
||||||
|
// Why do I need to cast this !?
|
||||||
|
CGLContextObj cgl_ctx = (CGLContextObj)[_glContext CGLContextObj];
|
||||||
|
CGLLockContext(cgl_ctx);
|
||||||
|
|
||||||
|
[self loadTexturesInContext:cgl_ctx withModelPath:[[openPanel filename] stringByStandardizingPath]];
|
||||||
|
|
||||||
|
//NSDictionary* userInfo = [NSDictionary dictionaryWithObjectsAndKeys:[NSValue valueWithPointer:cgl_ctx], @"context", [self.inputModelPath stringByStandardizingPath], @"path", nil ];
|
||||||
|
//[self performSelectorInBackground:@selector(loadTexturesInBackground:) withObject:userInfo];
|
||||||
|
|
||||||
|
[self getBoundingBoxWithMinVector:&scene_min maxVectr:&scene_max];
|
||||||
|
scene_center.x = (scene_min.x + scene_max.x) / 2.0f;
|
||||||
|
scene_center.y = (scene_min.y + scene_max.y) / 2.0f;
|
||||||
|
scene_center.z = (scene_min.z + scene_max.z) / 2.0f;
|
||||||
|
|
||||||
|
// optional normalized scaling
|
||||||
|
normalizedScale = scene_max.x-scene_min.x;
|
||||||
|
normalizedScale = aisgl_max(scene_max.y - scene_min.y,normalizedScale);
|
||||||
|
normalizedScale = aisgl_max(scene_max.z - scene_min.z,normalizedScale);
|
||||||
|
normalizedScale = 1.f / normalizedScale;
|
||||||
|
|
||||||
|
if(_scene->HasAnimations())
|
||||||
|
NSLog(@"scene has animations");
|
||||||
|
|
||||||
|
[self createGLResourcesInContext:cgl_ctx];
|
||||||
|
CGLUnlockContext(cgl_ctx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}]; // end block handler
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void) close
|
||||||
|
{
|
||||||
|
CVDisplayLinkStop(_displayLink);
|
||||||
|
CVDisplayLinkRelease(_displayLink);
|
||||||
|
|
||||||
|
if(_scene)
|
||||||
|
{
|
||||||
|
aiReleaseImport(_scene);
|
||||||
|
_scene = NULL;
|
||||||
|
|
||||||
|
CGLContextObj cgl_ctx = (CGLContextObj)[_glContext CGLContextObj];
|
||||||
|
glDeleteTextures([textureDictionary count], textureIds);
|
||||||
|
|
||||||
|
[textureDictionary release];
|
||||||
|
textureDictionary = nil;
|
||||||
|
|
||||||
|
free(textureIds);
|
||||||
|
textureIds = NULL;
|
||||||
|
|
||||||
|
[self deleteGLResourcesInContext:cgl_ctx];
|
||||||
|
}
|
||||||
|
|
||||||
|
[_glContext release];
|
||||||
|
_glContext = nil;
|
||||||
|
|
||||||
|
[_glPixelFormat release];
|
||||||
|
_glPixelFormat = nil;
|
||||||
|
|
||||||
|
[super close];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (CVReturn)displayLinkRenderCallback:(const CVTimeStamp *)timeStamp
|
||||||
|
{
|
||||||
|
CVReturn rv = kCVReturnError;
|
||||||
|
NSAutoreleasePool *pool;
|
||||||
|
|
||||||
|
pool = [[NSAutoreleasePool alloc] init];
|
||||||
|
{
|
||||||
|
[self render];
|
||||||
|
rv = kCVReturnSuccess;
|
||||||
|
}
|
||||||
|
[pool release];
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void) render
|
||||||
|
{
|
||||||
|
CGLContextObj cgl_ctx = (CGLContextObj)[_glContext CGLContextObj];
|
||||||
|
CGLLockContext(cgl_ctx);
|
||||||
|
|
||||||
|
[_glContext update];
|
||||||
|
|
||||||
|
glMatrixMode(GL_PROJECTION);
|
||||||
|
glLoadIdentity();
|
||||||
|
|
||||||
|
glViewport(0, 0, _view.frame.size.width, _view.frame.size.height);
|
||||||
|
|
||||||
|
GLfloat aspect = _view.frame.size.height/_view.frame.size.width;
|
||||||
|
glOrtho(-1, 1, - (aspect), aspect, -10, 10);
|
||||||
|
|
||||||
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
glLoadIdentity();
|
||||||
|
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
|
glTranslated(0.0, 0.0, 1.0);
|
||||||
|
|
||||||
|
// Draw our GL model.
|
||||||
|
if(_scene)
|
||||||
|
{
|
||||||
|
glScaled(normalizedScale , normalizedScale, normalizedScale);
|
||||||
|
// center the model
|
||||||
|
glTranslated( -scene_center.x, -scene_center.y, -scene_center.z);
|
||||||
|
|
||||||
|
glScaled(2.0, 2.0, 2.0);
|
||||||
|
|
||||||
|
static float i = 0;
|
||||||
|
i+=0.5;
|
||||||
|
glRotated(i, 0, 1, 0);
|
||||||
|
|
||||||
|
[self drawMeshesInContext:cgl_ctx];
|
||||||
|
}
|
||||||
|
|
||||||
|
CGLUnlockContext(cgl_ctx);
|
||||||
|
|
||||||
|
CGLFlushDrawable(cgl_ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark -
|
||||||
|
#pragma mark Loading
|
||||||
|
|
||||||
|
// Inspired by LoadAsset() & CreateAssetData() from AssimpView D3D project
|
||||||
|
- (void) createGLResourcesInContext:(CGLContextObj)cgl_ctx
|
||||||
|
{
|
||||||
|
// create new mesh helpers for each mesh, will populate their data later.
|
||||||
|
modelMeshes = [[NSMutableArray alloc] initWithCapacity:_scene->mNumMeshes];
|
||||||
|
|
||||||
|
// create OpenGL buffers and populate them based on each meshes pertinant info.
|
||||||
|
for (unsigned int i = 0; i < _scene->mNumMeshes; ++i)
|
||||||
|
{
|
||||||
|
NSLog(@"%u", i);
|
||||||
|
|
||||||
|
// current mesh we are introspecting
|
||||||
|
const aiMesh* mesh = _scene->mMeshes[i];
|
||||||
|
|
||||||
|
// the current meshHelper we will be populating data into.
|
||||||
|
MeshHelper* meshHelper = [[MeshHelper alloc] init];
|
||||||
|
|
||||||
|
// Handle material info
|
||||||
|
|
||||||
|
aiMaterial* mtl = _scene->mMaterials[mesh->mMaterialIndex];
|
||||||
|
|
||||||
|
// Textures
|
||||||
|
int texIndex = 0;
|
||||||
|
aiString texPath;
|
||||||
|
|
||||||
|
if(AI_SUCCESS == mtl->GetTexture(aiTextureType_DIFFUSE, texIndex, &texPath))
|
||||||
|
{
|
||||||
|
NSString* textureKey = [NSString stringWithCString:texPath.data encoding:[NSString defaultCStringEncoding]];
|
||||||
|
//bind texture
|
||||||
|
NSNumber* textureNumber = (NSNumber*)[textureDictionary valueForKey:textureKey];
|
||||||
|
|
||||||
|
//NSLog(@"applyMaterialInContext: have texture %i", [textureNumber unsignedIntValue]);
|
||||||
|
meshHelper.textureID = [textureNumber unsignedIntValue];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
meshHelper.textureID = 0;
|
||||||
|
|
||||||
|
// Colors
|
||||||
|
|
||||||
|
aiColor4D dcolor = aiColor4D(0.8f, 0.8f, 0.8f, 1.0f);
|
||||||
|
if(AI_SUCCESS == aiGetMaterialColor(mtl, AI_MATKEY_COLOR_DIFFUSE, &dcolor))
|
||||||
|
[meshHelper setDiffuseColor:&dcolor];
|
||||||
|
|
||||||
|
aiColor4D scolor = aiColor4D(0.0f, 0.0f, 0.0f, 1.0f);
|
||||||
|
if(AI_SUCCESS == aiGetMaterialColor(mtl, AI_MATKEY_COLOR_SPECULAR, &scolor))
|
||||||
|
[meshHelper setSpecularColor:&scolor];
|
||||||
|
|
||||||
|
aiColor4D acolor = aiColor4D(0.2f, 0.2f, 0.2f, 1.0f);
|
||||||
|
if(AI_SUCCESS == aiGetMaterialColor(mtl, AI_MATKEY_COLOR_AMBIENT, &acolor))
|
||||||
|
[meshHelper setAmbientColor:&acolor];
|
||||||
|
|
||||||
|
aiColor4D ecolor = aiColor4D(0.0f, 0.0f, 0.0f, 1.0f);
|
||||||
|
if(AI_SUCCESS == aiGetMaterialColor(mtl, AI_MATKEY_COLOR_EMISSIVE, &ecolor))
|
||||||
|
[meshHelper setEmissiveColor:&ecolor];
|
||||||
|
|
||||||
|
// Culling
|
||||||
|
unsigned int max = 1;
|
||||||
|
int two_sided;
|
||||||
|
if((AI_SUCCESS == aiGetMaterialIntegerArray(mtl, AI_MATKEY_TWOSIDED, &two_sided, &max)) && two_sided)
|
||||||
|
[meshHelper setTwoSided:YES];
|
||||||
|
else
|
||||||
|
[meshHelper setTwoSided:NO];
|
||||||
|
|
||||||
|
// Create a VBO for our vertices
|
||||||
|
|
||||||
|
GLuint vhandle;
|
||||||
|
glGenBuffers(1, &vhandle);
|
||||||
|
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, vhandle);
|
||||||
|
glBufferData(GL_ARRAY_BUFFER, sizeof(Vertex) * mesh->mNumVertices, NULL, GL_STATIC_DRAW);
|
||||||
|
|
||||||
|
// populate vertices
|
||||||
|
Vertex* verts = (Vertex*)glMapBuffer(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
|
||||||
|
|
||||||
|
for (unsigned int x = 0; x < mesh->mNumVertices; ++x)
|
||||||
|
{
|
||||||
|
verts->vPosition = mesh->mVertices[x];
|
||||||
|
|
||||||
|
if (NULL == mesh->mNormals)
|
||||||
|
verts->vNormal = aiVector3D(0.0f,0.0f,0.0f);
|
||||||
|
else
|
||||||
|
verts->vNormal = mesh->mNormals[x];
|
||||||
|
|
||||||
|
if (NULL == mesh->mTangents)
|
||||||
|
{
|
||||||
|
verts->vTangent = aiVector3D(0.0f,0.0f,0.0f);
|
||||||
|
verts->vBitangent = aiVector3D(0.0f,0.0f,0.0f);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
verts->vTangent = mesh->mTangents[x];
|
||||||
|
verts->vBitangent = mesh->mBitangents[x];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mesh->HasVertexColors(0))
|
||||||
|
{
|
||||||
|
verts->dColorDiffuse = mesh->mColors[0][x];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
verts->dColorDiffuse = aiColor4D(1.0, 1.0, 1.0, 1.0);
|
||||||
|
|
||||||
|
// This varies slightly form Assimp View, we support the 3rd texture component.
|
||||||
|
if (mesh->HasTextureCoords(0))
|
||||||
|
verts->vTextureUV = mesh->mTextureCoords[0][x];
|
||||||
|
else
|
||||||
|
verts->vTextureUV = aiVector3D(0.5f,0.5f, 0.0f);
|
||||||
|
|
||||||
|
if (mesh->HasTextureCoords(1))
|
||||||
|
verts->vTextureUV2 = mesh->mTextureCoords[1][x];
|
||||||
|
else
|
||||||
|
verts->vTextureUV2 = aiVector3D(0.5f,0.5f, 0.0f);
|
||||||
|
|
||||||
|
// TODO: handle Bone indices and weights
|
||||||
|
/* if( mesh->HasBones())
|
||||||
|
{
|
||||||
|
unsigned char boneIndices[4] = { 0, 0, 0, 0 };
|
||||||
|
unsigned char boneWeights[4] = { 0, 0, 0, 0 };
|
||||||
|
ai_assert( weightsPerVertex[x].size() <= 4);
|
||||||
|
|
||||||
|
for( unsigned int a = 0; a < weightsPerVertex[x].size(); a++)
|
||||||
|
{
|
||||||
|
boneIndices[a] = weightsPerVertex[x][a].mVertexId;
|
||||||
|
boneWeights[a] = (unsigned char) (weightsPerVertex[x][a].mWeight * 255.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy( verts->mBoneIndices, boneIndices, sizeof( boneIndices));
|
||||||
|
memcpy( verts->mBoneWeights, boneWeights, sizeof( boneWeights));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
memset( verts->mBoneIndices, 0, sizeof( verts->mBoneIndices));
|
||||||
|
memset( verts->mBoneWeights, 0, sizeof( verts->mBoneWeights));
|
||||||
|
}
|
||||||
|
|
||||||
|
++verts;
|
||||||
|
}
|
||||||
|
|
||||||
|
glUnmapBufferARB(GL_ARRAY_BUFFER_ARB); //invalidates verts
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||||
|
|
||||||
|
// set the mesh vertex buffer handle to our new vertex buffer.
|
||||||
|
meshHelper.vertexBuffer = vhandle;
|
||||||
|
|
||||||
|
// Create Index Buffer
|
||||||
|
|
||||||
|
// populate the index buffer.
|
||||||
|
NSUInteger nidx;
|
||||||
|
switch (mesh->mPrimitiveTypes)
|
||||||
|
{
|
||||||
|
case aiPrimitiveType_POINT:
|
||||||
|
nidx = 1;break;
|
||||||
|
case aiPrimitiveType_LINE:
|
||||||
|
nidx = 2;break;
|
||||||
|
case aiPrimitiveType_TRIANGLE:
|
||||||
|
nidx = 3;break;
|
||||||
|
default: assert(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// create the index buffer
|
||||||
|
GLuint ihandle;
|
||||||
|
glGenBuffers(1, &ihandle);
|
||||||
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ihandle);
|
||||||
|
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLuint) * mesh->mNumFaces * nidx, NULL, GL_STATIC_DRAW);
|
||||||
|
|
||||||
|
unsigned int* indices = (unsigned int*)glMapBuffer(GL_ELEMENT_ARRAY_BUFFER, GL_WRITE_ONLY_ARB);
|
||||||
|
|
||||||
|
// now fill the index buffer
|
||||||
|
for (unsigned int x = 0; x < mesh->mNumFaces; ++x)
|
||||||
|
{
|
||||||
|
for (unsigned int a = 0; a < nidx; ++a)
|
||||||
|
{
|
||||||
|
// if(mesh->mFaces[x].mNumIndices != 3)
|
||||||
|
// NSLog(@"whoa dont have 3 indices...");
|
||||||
|
|
||||||
|
*indices++ = mesh->mFaces[x].mIndices[a];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
glUnmapBuffer(GL_ELEMENT_ARRAY_BUFFER);
|
||||||
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
|
||||||
|
|
||||||
|
// set the mesh index buffer handle to our new index buffer.
|
||||||
|
meshHelper.indexBuffer = ihandle;
|
||||||
|
meshHelper.numIndices = mesh->mNumFaces * nidx;
|
||||||
|
|
||||||
|
// create the normal buffer. Assimp View creates a second normal buffer. Unsure why. Using only the interleaved normals for now.
|
||||||
|
// This is here for reference.
|
||||||
|
|
||||||
|
/* GLuint nhandle;
|
||||||
|
glGenBuffers(1, &nhandle);
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, nhandle);
|
||||||
|
glBufferData(GL_ARRAY_BUFFER, sizeof(aiVector3D)* mesh->mNumVertices, NULL, GL_STATIC_DRAW);
|
||||||
|
|
||||||
|
// populate normals
|
||||||
|
aiVector3D* normals = (aiVector3D*)glMapBuffer(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
|
||||||
|
|
||||||
|
for (unsigned int x = 0; x < mesh->mNumVertices; ++x)
|
||||||
|
{
|
||||||
|
aiVector3D vNormal = mesh->mNormals[x];
|
||||||
|
*normals = vNormal;
|
||||||
|
++normals;
|
||||||
|
}
|
||||||
|
|
||||||
|
glUnmapBufferARB(GL_ARRAY_BUFFER_ARB); //invalidates verts
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||||
|
|
||||||
|
meshHelper.normalBuffer = nhandle;
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Create VAO and populate it
|
||||||
|
|
||||||
|
GLuint vaoHandle;
|
||||||
|
glGenVertexArraysAPPLE(1, &vaoHandle);
|
||||||
|
|
||||||
|
glBindVertexArrayAPPLE(vaoHandle);
|
||||||
|
|
||||||
|
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, meshHelper.vertexBuffer);
|
||||||
|
|
||||||
|
glEnableClientState(GL_NORMAL_ARRAY);
|
||||||
|
glNormalPointer(GL_FLOAT, sizeof(Vertex), BUFFER_OFFSET(12));
|
||||||
|
|
||||||
|
glEnableClientState(GL_COLOR_ARRAY);
|
||||||
|
glColorPointer(4, GL_FLOAT, sizeof(Vertex), BUFFER_OFFSET(24));
|
||||||
|
|
||||||
|
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
glTexCoordPointer(3, GL_FLOAT, sizeof(Vertex), BUFFER_OFFSET(64));
|
||||||
|
//TODO: handle second texture
|
||||||
|
|
||||||
|
// VertexPointer ought to come last, apparently this is some optimization, since if its set once, first, it gets fiddled with every time something else is update.
|
||||||
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
|
glVertexPointer(3, GL_FLOAT, sizeof(Vertex), 0);
|
||||||
|
|
||||||
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, meshHelper.indexBuffer);
|
||||||
|
|
||||||
|
glBindVertexArrayAPPLE(0);
|
||||||
|
|
||||||
|
// save the VAO handle into our mesh helper
|
||||||
|
meshHelper.vao = vaoHandle;
|
||||||
|
|
||||||
|
// Create the display list
|
||||||
|
|
||||||
|
GLuint list = glGenLists(1);
|
||||||
|
|
||||||
|
glNewList(list, GL_COMPILE);
|
||||||
|
|
||||||
|
float dc[4];
|
||||||
|
float sc[4];
|
||||||
|
float ac[4];
|
||||||
|
float emc[4];
|
||||||
|
|
||||||
|
// Material colors and properties
|
||||||
|
color4_to_float4([meshHelper diffuseColor], dc);
|
||||||
|
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, dc);
|
||||||
|
|
||||||
|
color4_to_float4([meshHelper specularColor], sc);
|
||||||
|
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, sc);
|
||||||
|
|
||||||
|
color4_to_float4([meshHelper ambientColor], ac);
|
||||||
|
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, ac);
|
||||||
|
|
||||||
|
color4_to_float4(meshHelper.emissiveColor, emc);
|
||||||
|
glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, emc);
|
||||||
|
|
||||||
|
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
|
||||||
|
|
||||||
|
// Culling
|
||||||
|
if(meshHelper.twoSided)
|
||||||
|
glEnable(GL_CULL_FACE);
|
||||||
|
else
|
||||||
|
glDisable(GL_CULL_FACE);
|
||||||
|
|
||||||
|
|
||||||
|
// Texture Binding
|
||||||
|
glBindTexture(GL_TEXTURE_2D, meshHelper.textureID);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||||
|
|
||||||
|
// This binds the whole VAO, inheriting all the buffer and client state. Weeee
|
||||||
|
glBindVertexArrayAPPLE(meshHelper.vao);
|
||||||
|
glDrawElements(GL_TRIANGLES, meshHelper.numIndices, GL_UNSIGNED_INT, 0);
|
||||||
|
|
||||||
|
glEndList();
|
||||||
|
|
||||||
|
meshHelper.displayList = list;
|
||||||
|
|
||||||
|
// Whew, done. Save all of this shit.
|
||||||
|
[modelMeshes addObject:meshHelper];
|
||||||
|
|
||||||
|
[meshHelper release];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void) deleteGLResourcesInContext:(CGLContextObj)cgl_ctx
|
||||||
|
{
|
||||||
|
for(MeshHelper* helper in modelMeshes)
|
||||||
|
{
|
||||||
|
const GLuint indexBuffer = helper.indexBuffer;
|
||||||
|
const GLuint vertexBuffer = helper.vertexBuffer;
|
||||||
|
const GLuint normalBuffer = helper.normalBuffer;
|
||||||
|
const GLuint vaoHandle = helper.vao;
|
||||||
|
const GLuint dlist = helper.displayList;
|
||||||
|
|
||||||
|
glDeleteBuffers(1, &vertexBuffer);
|
||||||
|
glDeleteBuffers(1, &indexBuffer);
|
||||||
|
glDeleteBuffers(1, &normalBuffer);
|
||||||
|
glDeleteVertexArraysAPPLE(1, &vaoHandle);
|
||||||
|
|
||||||
|
glDeleteLists(1, dlist);
|
||||||
|
|
||||||
|
helper.indexBuffer = 0;
|
||||||
|
helper.vertexBuffer = 0;
|
||||||
|
helper.normalBuffer = 0;
|
||||||
|
helper.vao = 0;
|
||||||
|
helper.displayList = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[modelMeshes release];
|
||||||
|
modelMeshes = nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void) drawMeshesInContext:(CGLContextObj)cgl_ctx
|
||||||
|
{
|
||||||
|
for(MeshHelper* helper in modelMeshes)
|
||||||
|
{
|
||||||
|
// Set up meterial state.
|
||||||
|
glCallList(helper.displayList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
- (void) loadTexturesInContext:(CGLContextObj)cgl_ctx withModelPath:(NSString*) modelPath
|
||||||
|
{
|
||||||
|
if (_scene->HasTextures())
|
||||||
|
{
|
||||||
|
NSLog(@"Support for meshes with embedded textures is not implemented");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* getTexture Filenames and Numb of Textures */
|
||||||
|
for (unsigned int m = 0; m < _scene->mNumMaterials; m++)
|
||||||
|
{
|
||||||
|
int texIndex = 0;
|
||||||
|
aiReturn texFound = AI_SUCCESS;
|
||||||
|
|
||||||
|
aiString path; // filename
|
||||||
|
|
||||||
|
// TODO: handle other aiTextureTypes
|
||||||
|
while (texFound == AI_SUCCESS)
|
||||||
|
{
|
||||||
|
texFound = _scene->mMaterials[m]->GetTexture(aiTextureType_DIFFUSE, texIndex, &path);
|
||||||
|
|
||||||
|
NSString* texturePath = [NSString stringWithCString:path.data encoding:[NSString defaultCStringEncoding]];
|
||||||
|
|
||||||
|
// add our path to the texture and the index to our texture dictionary.
|
||||||
|
[textureDictionary setValue:[NSNumber numberWithUnsignedInt:texIndex] forKey:texturePath];
|
||||||
|
|
||||||
|
texIndex++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
textureIds = (GLuint*) malloc(sizeof(GLuint) * [textureDictionary count]); //new GLuint[ [textureDictionary count] ];
|
||||||
|
glGenTextures([textureDictionary count], textureIds);
|
||||||
|
|
||||||
|
NSLog(@"textureDictionary: %@", textureDictionary);
|
||||||
|
|
||||||
|
// create our textures, populate them, and alter our textureID value for the specific textureID we create.
|
||||||
|
|
||||||
|
// so we can modify while we enumerate...
|
||||||
|
NSDictionary *textureCopy = [textureDictionary copy];
|
||||||
|
|
||||||
|
// GCD attempt.
|
||||||
|
//dispatch_sync(_queue, ^{
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
for(NSString* texturePath in textureCopy)
|
||||||
|
{
|
||||||
|
NSString* fullTexturePath = [[[modelPath stringByDeletingLastPathComponent] stringByAppendingPathComponent:[texturePath stringByStandardizingPath]] stringByStandardizingPath];
|
||||||
|
NSLog(@"texturePath: %@", fullTexturePath);
|
||||||
|
|
||||||
|
NSImage* textureImage = [[NSImage alloc] initWithContentsOfFile:fullTexturePath];
|
||||||
|
|
||||||
|
if(textureImage)
|
||||||
|
{
|
||||||
|
//NSLog(@"Have Texture Image");
|
||||||
|
NSBitmapImageRep* bitmap = [NSBitmapImageRep alloc];
|
||||||
|
|
||||||
|
[textureImage lockFocus];
|
||||||
|
[bitmap initWithFocusedViewRect:NSMakeRect(0, 0, textureImage.size.width, textureImage.size.height)];
|
||||||
|
[textureImage unlockFocus];
|
||||||
|
|
||||||
|
glActiveTexture(GL_TEXTURE0);
|
||||||
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
glBindTexture(GL_TEXTURE_2D, textureIds[i]);
|
||||||
|
//glPixelStorei(GL_UNPACK_ROW_LENGTH, [bitmap pixelsWide]);
|
||||||
|
//glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||||
|
|
||||||
|
// generate mip maps
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
|
||||||
|
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
|
|
||||||
|
// draw into our bitmap
|
||||||
|
int samplesPerPixel = [bitmap samplesPerPixel];
|
||||||
|
|
||||||
|
if(![bitmap isPlanar] && (samplesPerPixel == 3 || samplesPerPixel == 4))
|
||||||
|
{
|
||||||
|
glTexImage2D(GL_TEXTURE_2D,
|
||||||
|
0,
|
||||||
|
//samplesPerPixel == 4 ? GL_COMPRESSED_RGBA_S3TC_DXT3_EXT : GL_COMPRESSED_RGB_S3TC_DXT1_EXT,
|
||||||
|
samplesPerPixel == 4 ? GL_RGBA8 : GL_RGB8,
|
||||||
|
[bitmap pixelsWide],
|
||||||
|
[bitmap pixelsHigh],
|
||||||
|
0,
|
||||||
|
samplesPerPixel == 4 ? GL_RGBA : GL_RGB,
|
||||||
|
GL_UNSIGNED_BYTE,
|
||||||
|
[bitmap bitmapData]);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// update our dictionary to contain the proper textureID value (from out array of generated IDs)
|
||||||
|
[textureDictionary setValue:[NSNumber numberWithUnsignedInt:textureIds[i]] forKey:texturePath];
|
||||||
|
|
||||||
|
[bitmap release];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
[textureDictionary removeObjectForKey:texturePath];
|
||||||
|
NSLog(@"Could not Load Texture: %@, removing reference to it.", fullTexturePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
[textureImage release];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
//});
|
||||||
|
|
||||||
|
[textureCopy release];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void) getBoundingBoxWithMinVector:(struct aiVector3D*) min maxVectr:(struct aiVector3D*) max
|
||||||
|
{
|
||||||
|
struct aiMatrix4x4 trafo;
|
||||||
|
aiIdentityMatrix4(&trafo);
|
||||||
|
|
||||||
|
min->x = min->y = min->z = 1e10f;
|
||||||
|
max->x = max->y = max->z = -1e10f;
|
||||||
|
|
||||||
|
[self getBoundingBoxForNode:_scene->mRootNode minVector:min maxVector:max matrix:&trafo];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void) getBoundingBoxForNode:(const struct aiNode*)nd minVector:(struct aiVector3D*) min maxVector:(struct aiVector3D*) max matrix:(struct aiMatrix4x4*) trafo
|
||||||
|
{
|
||||||
|
struct aiMatrix4x4 prev;
|
||||||
|
unsigned int n = 0, t;
|
||||||
|
|
||||||
|
prev = *trafo;
|
||||||
|
aiMultiplyMatrix4(trafo,&nd->mTransformation);
|
||||||
|
|
||||||
|
for (; n < nd->mNumMeshes; ++n)
|
||||||
|
{
|
||||||
|
const struct aiMesh* mesh = _scene->mMeshes[nd->mMeshes[n]];
|
||||||
|
for (t = 0; t < mesh->mNumVertices; ++t)
|
||||||
|
{
|
||||||
|
struct aiVector3D tmp = mesh->mVertices[t];
|
||||||
|
aiTransformVecByMatrix4(&tmp,trafo);
|
||||||
|
|
||||||
|
min->x = aisgl_min(min->x,tmp.x);
|
||||||
|
min->y = aisgl_min(min->y,tmp.y);
|
||||||
|
min->z = aisgl_min(min->z,tmp.z);
|
||||||
|
|
||||||
|
max->x = aisgl_max(max->x,tmp.x);
|
||||||
|
max->y = aisgl_max(max->y,tmp.y);
|
||||||
|
max->z = aisgl_max(max->z,tmp.z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (n = 0; n < nd->mNumChildren; ++n)
|
||||||
|
{
|
||||||
|
[self getBoundingBoxForNode:nd->mChildren[n] minVector:min maxVector:max matrix:trafo];
|
||||||
|
}
|
||||||
|
|
||||||
|
*trafo = prev;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@end
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,22 @@
|
||||||
|
Mac OSX Assimp Sample, using OpenGL with VBOs
|
||||||
|
=============================================
|
||||||
|
|
||||||
|
Written & donated by drparallax.
|
||||||
|
See http://sourceforge.net/projects/assimp/forums/forum/817654/topic/3917829
|
||||||
|
|
||||||
|
|
||||||
|
How to build:
|
||||||
|
-------------
|
||||||
|
|
||||||
|
- compile Assimp as static library, copy the generated libassimp.a right here.
|
||||||
|
- copy the Assimp headers from ./../../include to ./include
|
||||||
|
- open the XCode project file and build it
|
||||||
|
|
||||||
|
|
||||||
|
Troubleshooting:
|
||||||
|
----------------
|
||||||
|
|
||||||
|
- OSX workspaces are not updated too frequently, so same files may be missing.
|
||||||
|
|
||||||
|
If you have any problems which you can't solve on your own,
|
||||||
|
please report them on the thread above.
|
|
@ -0,0 +1,101 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>English</string>
|
||||||
|
<key>CFBundleDocumentTypes</key>
|
||||||
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleTypeExtensions</key>
|
||||||
|
<array>
|
||||||
|
<string>binary</string>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleTypeMIMETypes</key>
|
||||||
|
<array>
|
||||||
|
<string>application/octet-stream</string>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleTypeName</key>
|
||||||
|
<string>Binary</string>
|
||||||
|
<key>CFBundleTypeRole</key>
|
||||||
|
<string>Editor</string>
|
||||||
|
<key>LSTypeIsPackage</key>
|
||||||
|
<false/>
|
||||||
|
<key>NSDocumentClass</key>
|
||||||
|
<string>MyDocument</string>
|
||||||
|
<key>NSPersistentStoreTypeKey</key>
|
||||||
|
<string>Binary</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleTypeExtensions</key>
|
||||||
|
<array>
|
||||||
|
<string>sqlite</string>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleTypeMIMETypes</key>
|
||||||
|
<array>
|
||||||
|
<string>application/octet-stream</string>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleTypeName</key>
|
||||||
|
<string>SQLite</string>
|
||||||
|
<key>CFBundleTypeRole</key>
|
||||||
|
<string>Editor</string>
|
||||||
|
<key>LSTypeIsPackage</key>
|
||||||
|
<false/>
|
||||||
|
<key>NSDocumentClass</key>
|
||||||
|
<string>MyDocument</string>
|
||||||
|
<key>NSPersistentStoreTypeKey</key>
|
||||||
|
<string>SQLite</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleTypeExtensions</key>
|
||||||
|
<array>
|
||||||
|
<string>xml</string>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleTypeIconFile</key>
|
||||||
|
<string></string>
|
||||||
|
<key>CFBundleTypeMIMETypes</key>
|
||||||
|
<array>
|
||||||
|
<string>text/xml</string>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleTypeName</key>
|
||||||
|
<string>XML</string>
|
||||||
|
<key>CFBundleTypeOSTypes</key>
|
||||||
|
<array>
|
||||||
|
<string>????</string>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleTypeRole</key>
|
||||||
|
<string>Editor</string>
|
||||||
|
<key>LSTypeIsPackage</key>
|
||||||
|
<false/>
|
||||||
|
<key>NSDocumentClass</key>
|
||||||
|
<string>MyDocument</string>
|
||||||
|
<key>NSPersistentStoreTypeKey</key>
|
||||||
|
<string>XML</string>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>${PRODUCT_NAME}</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>${EXECUTABLE_NAME}</string>
|
||||||
|
<key>CFBundleIconFile</key>
|
||||||
|
<string></string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>com.yourcompany.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>1.0</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>LSMinimumSystemVersion</key>
|
||||||
|
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
|
||||||
|
<key>NSMainNibFile</key>
|
||||||
|
<string>MainMenu</string>
|
||||||
|
<key>NSPrincipalClass</key>
|
||||||
|
<string>NSApplication</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
|
@ -0,0 +1,456 @@
|
||||||
|
// !$*UTF8*$!
|
||||||
|
{
|
||||||
|
archiveVersion = 1;
|
||||||
|
classes = {
|
||||||
|
};
|
||||||
|
objectVersion = 45;
|
||||||
|
objects = {
|
||||||
|
|
||||||
|
/* Begin PBXBuildFile section */
|
||||||
|
1B0E9A901279ED43003108E7 /* libassimp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B0E9A8F1279ED43003108E7 /* libassimp.a */; };
|
||||||
|
1B0E9A951279EDCD003108E7 /* ModelLoaderHelperClasses.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1B0E9A941279EDCD003108E7 /* ModelLoaderHelperClasses.mm */; };
|
||||||
|
1B0E9AF51279EFCC003108E7 /* aiColor4D.inl in Resources */ = {isa = PBXBuildFile; fileRef = 1B0E9AD71279EFCC003108E7 /* aiColor4D.inl */; };
|
||||||
|
1B0E9AF61279EFCC003108E7 /* aiMaterial.inl in Resources */ = {isa = PBXBuildFile; fileRef = 1B0E9ADD1279EFCC003108E7 /* aiMaterial.inl */; };
|
||||||
|
1B0E9AF71279EFCC003108E7 /* aiMatrix3x3.inl in Resources */ = {isa = PBXBuildFile; fileRef = 1B0E9ADF1279EFCC003108E7 /* aiMatrix3x3.inl */; };
|
||||||
|
1B0E9AF81279EFCC003108E7 /* aiMatrix4x4.inl in Resources */ = {isa = PBXBuildFile; fileRef = 1B0E9AE11279EFCC003108E7 /* aiMatrix4x4.inl */; };
|
||||||
|
1B0E9AF91279EFCC003108E7 /* aiVector3D.inl in Resources */ = {isa = PBXBuildFile; fileRef = 1B0E9AEA1279EFCC003108E7 /* aiVector3D.inl */; };
|
||||||
|
1B0E9B1A1279F107003108E7 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B0E9B191279F107003108E7 /* libz.dylib */; };
|
||||||
|
1BDF446B127772AF00D3E723 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1BDF446A127772AF00D3E723 /* OpenGL.framework */; };
|
||||||
|
1BDF446F127772AF00D3E723 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1BDF446E127772AF00D3E723 /* Quartz.framework */; };
|
||||||
|
2F7446AB0DB6BCF400F9684A /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2F7446A70DB6BCF400F9684A /* MainMenu.xib */; };
|
||||||
|
2F7446AC0DB6BCF400F9684A /* MyDocument.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2F7446A90DB6BCF400F9684A /* MyDocument.xib */; };
|
||||||
|
775BDEF1067A8BF0009058FE /* MyDocument.xcdatamodel in Sources */ = {isa = PBXBuildFile; fileRef = 775BDEF0067A8BF0009058FE /* MyDocument.xcdatamodel */; };
|
||||||
|
775DFF38067A968500C5B868 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */; };
|
||||||
|
8D15AC2C0486D014006FF6A4 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */; };
|
||||||
|
8D15AC2F0486D014006FF6A4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165FFE840EACC02AAC07 /* InfoPlist.strings */; };
|
||||||
|
8D15AC310486D014006FF6A4 /* MyDocument.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2A37F4ACFDCFA73011CA2CEA /* MyDocument.mm */; settings = {ATTRIBUTES = (); }; };
|
||||||
|
8D15AC320486D014006FF6A4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A37F4B0FDCFA73011CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
|
||||||
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
|
/* Begin PBXFileReference section */
|
||||||
|
089C1660FE840EACC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||||
|
1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
|
||||||
|
1B0E9A8F1279ED43003108E7 /* libassimp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libassimp.a; sourceTree = "<group>"; };
|
||||||
|
1B0E9A931279EDCD003108E7 /* ModelLoaderHelperClasses.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModelLoaderHelperClasses.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9A941279EDCD003108E7 /* ModelLoaderHelperClasses.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ModelLoaderHelperClasses.mm; sourceTree = "<group>"; };
|
||||||
|
1B0E9AD31279EFCC003108E7 /* aiAnim.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiAnim.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AD41279EFCC003108E7 /* aiAssert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiAssert.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AD51279EFCC003108E7 /* aiCamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiCamera.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AD61279EFCC003108E7 /* aiColor4D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiColor4D.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AD71279EFCC003108E7 /* aiColor4D.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = aiColor4D.inl; sourceTree = "<group>"; };
|
||||||
|
1B0E9AD81279EFCC003108E7 /* aiConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiConfig.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AD91279EFCC003108E7 /* aiDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiDefines.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9ADA1279EFCC003108E7 /* aiFileIO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiFileIO.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9ADB1279EFCC003108E7 /* aiLight.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiLight.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9ADC1279EFCC003108E7 /* aiMaterial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiMaterial.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9ADD1279EFCC003108E7 /* aiMaterial.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = aiMaterial.inl; sourceTree = "<group>"; };
|
||||||
|
1B0E9ADE1279EFCC003108E7 /* aiMatrix3x3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiMatrix3x3.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9ADF1279EFCC003108E7 /* aiMatrix3x3.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = aiMatrix3x3.inl; sourceTree = "<group>"; };
|
||||||
|
1B0E9AE01279EFCC003108E7 /* aiMatrix4x4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiMatrix4x4.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AE11279EFCC003108E7 /* aiMatrix4x4.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = aiMatrix4x4.inl; sourceTree = "<group>"; };
|
||||||
|
1B0E9AE21279EFCC003108E7 /* aiMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiMesh.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AE31279EFCC003108E7 /* aiPostProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiPostProcess.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AE41279EFCC003108E7 /* aiQuaternion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiQuaternion.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AE51279EFCC003108E7 /* aiScene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiScene.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AE61279EFCC003108E7 /* aiTexture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiTexture.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AE71279EFCC003108E7 /* aiTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiTypes.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AE81279EFCC003108E7 /* aiVector2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiVector2D.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AE91279EFCC003108E7 /* aiVector3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiVector3D.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AEA1279EFCC003108E7 /* aiVector3D.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = aiVector3D.inl; sourceTree = "<group>"; };
|
||||||
|
1B0E9AEB1279EFCC003108E7 /* aiVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiVersion.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AEC1279EFCC003108E7 /* assimp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assimp.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AED1279EFCC003108E7 /* assimp.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = assimp.hpp; sourceTree = "<group>"; };
|
||||||
|
1B0E9AEE1279EFCC003108E7 /* DefaultLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DefaultLogger.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AEF1279EFCC003108E7 /* IOStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IOStream.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AF01279EFCC003108E7 /* IOSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IOSystem.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AF11279EFCC003108E7 /* Logger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Logger.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AF21279EFCC003108E7 /* LogStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LogStream.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AF31279EFCC003108E7 /* NullLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NullLogger.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AF41279EFCC003108E7 /* ProgressHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProgressHandler.h; sourceTree = "<group>"; };
|
||||||
|
1B0E9AFD1279F006003108E7 /* poppack1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = poppack1.h; path = "/Users/vade/Asset Import/include/Compiler/poppack1.h"; sourceTree = "<absolute>"; };
|
||||||
|
1B0E9AFE1279F006003108E7 /* pushpack1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pushpack1.h; path = "/Users/vade/Asset Import/include/Compiler/pushpack1.h"; sourceTree = "<absolute>"; };
|
||||||
|
1B0E9B191279F107003108E7 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
|
||||||
|
1BDF446A127772AF00D3E723 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; };
|
||||||
|
1BDF446E127772AF00D3E723 /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = System/Library/Frameworks/Quartz.framework; sourceTree = SDKROOT; };
|
||||||
|
2A37F4ACFDCFA73011CA2CEA /* MyDocument.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MyDocument.mm; sourceTree = "<group>"; };
|
||||||
|
2A37F4AEFDCFA73011CA2CEA /* MyDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyDocument.h; sourceTree = "<group>"; };
|
||||||
|
2A37F4B0FDCFA73011CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||||
|
2A37F4BAFDCFA73011CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = English; path = English.lproj/Credits.rtf; sourceTree = "<group>"; };
|
||||||
|
2A37F4C4FDCFA73011CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
|
||||||
|
2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
|
||||||
|
2F7446A80DB6BCF400F9684A /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
||||||
|
2F7446AA0DB6BCF400F9684A /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MyDocument.xib; sourceTree = "<group>"; };
|
||||||
|
32DBCF750370BD2300C91783 /* SimpleAssimpViewX_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleAssimpViewX_Prefix.pch; sourceTree = "<group>"; };
|
||||||
|
775BDEF0067A8BF0009058FE /* MyDocument.xcdatamodel */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wrapper.xcdatamodel; path = MyDocument.xcdatamodel; sourceTree = "<group>"; };
|
||||||
|
7788DA0506752A1600599AAD /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
|
||||||
|
8D15AC360486D014006FF6A4 /* SimpleAssimpViewX-Info.plist */ = {isa = PBXFileReference; explicitFileType = text.plist.xml; fileEncoding = 4; path = "SimpleAssimpViewX-Info.plist"; sourceTree = "<group>"; };
|
||||||
|
8D15AC370486D014006FF6A4 /* SimpleAssimpViewX.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SimpleAssimpViewX.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
8D15AC330486D014006FF6A4 /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
775DFF38067A968500C5B868 /* Cocoa.framework in Frameworks */,
|
||||||
|
1BDF446B127772AF00D3E723 /* OpenGL.framework in Frameworks */,
|
||||||
|
1BDF446F127772AF00D3E723 /* Quartz.framework in Frameworks */,
|
||||||
|
1B0E9A901279ED43003108E7 /* libassimp.a in Frameworks */,
|
||||||
|
1B0E9B1A1279F107003108E7 /* libz.dylib in Frameworks */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXGroup section */
|
||||||
|
1058C7A6FEA54F5311CA2CBB /* Linked Frameworks */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */,
|
||||||
|
1BDF446A127772AF00D3E723 /* OpenGL.framework */,
|
||||||
|
1BDF446E127772AF00D3E723 /* Quartz.framework */,
|
||||||
|
);
|
||||||
|
name = "Linked Frameworks";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
1058C7A8FEA54F5311CA2CBB /* Other Frameworks */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */,
|
||||||
|
7788DA0506752A1600599AAD /* CoreData.framework */,
|
||||||
|
2A37F4C4FDCFA73011CA2CEA /* AppKit.framework */,
|
||||||
|
);
|
||||||
|
name = "Other Frameworks";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
19C28FB0FE9D524F11CA2CBB /* Products */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
8D15AC370486D014006FF6A4 /* SimpleAssimpViewX.app */,
|
||||||
|
);
|
||||||
|
name = Products;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
1B0E9AD21279EFCC003108E7 /* include */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
1B0E9AD31279EFCC003108E7 /* aiAnim.h */,
|
||||||
|
1B0E9AD41279EFCC003108E7 /* aiAssert.h */,
|
||||||
|
1B0E9AD51279EFCC003108E7 /* aiCamera.h */,
|
||||||
|
1B0E9AD61279EFCC003108E7 /* aiColor4D.h */,
|
||||||
|
1B0E9AD71279EFCC003108E7 /* aiColor4D.inl */,
|
||||||
|
1B0E9AD81279EFCC003108E7 /* aiConfig.h */,
|
||||||
|
1B0E9AD91279EFCC003108E7 /* aiDefines.h */,
|
||||||
|
1B0E9ADA1279EFCC003108E7 /* aiFileIO.h */,
|
||||||
|
1B0E9ADB1279EFCC003108E7 /* aiLight.h */,
|
||||||
|
1B0E9ADC1279EFCC003108E7 /* aiMaterial.h */,
|
||||||
|
1B0E9ADD1279EFCC003108E7 /* aiMaterial.inl */,
|
||||||
|
1B0E9ADE1279EFCC003108E7 /* aiMatrix3x3.h */,
|
||||||
|
1B0E9ADF1279EFCC003108E7 /* aiMatrix3x3.inl */,
|
||||||
|
1B0E9AE01279EFCC003108E7 /* aiMatrix4x4.h */,
|
||||||
|
1B0E9AE11279EFCC003108E7 /* aiMatrix4x4.inl */,
|
||||||
|
1B0E9AE21279EFCC003108E7 /* aiMesh.h */,
|
||||||
|
1B0E9AE31279EFCC003108E7 /* aiPostProcess.h */,
|
||||||
|
1B0E9AE41279EFCC003108E7 /* aiQuaternion.h */,
|
||||||
|
1B0E9AE51279EFCC003108E7 /* aiScene.h */,
|
||||||
|
1B0E9AE61279EFCC003108E7 /* aiTexture.h */,
|
||||||
|
1B0E9AE71279EFCC003108E7 /* aiTypes.h */,
|
||||||
|
1B0E9AE81279EFCC003108E7 /* aiVector2D.h */,
|
||||||
|
1B0E9AE91279EFCC003108E7 /* aiVector3D.h */,
|
||||||
|
1B0E9AEA1279EFCC003108E7 /* aiVector3D.inl */,
|
||||||
|
1B0E9AEB1279EFCC003108E7 /* aiVersion.h */,
|
||||||
|
1B0E9AEC1279EFCC003108E7 /* assimp.h */,
|
||||||
|
1B0E9AED1279EFCC003108E7 /* assimp.hpp */,
|
||||||
|
1B0E9AEE1279EFCC003108E7 /* DefaultLogger.h */,
|
||||||
|
1B0E9AEF1279EFCC003108E7 /* IOStream.h */,
|
||||||
|
1B0E9AF01279EFCC003108E7 /* IOSystem.h */,
|
||||||
|
1B0E9AF11279EFCC003108E7 /* Logger.h */,
|
||||||
|
1B0E9AF21279EFCC003108E7 /* LogStream.h */,
|
||||||
|
1B0E9AF31279EFCC003108E7 /* NullLogger.h */,
|
||||||
|
1B0E9AF41279EFCC003108E7 /* ProgressHandler.h */,
|
||||||
|
1B0E9AFC1279F006003108E7 /* Compiler */,
|
||||||
|
);
|
||||||
|
path = include;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
1B0E9AFC1279F006003108E7 /* Compiler */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
1B0E9AFD1279F006003108E7 /* poppack1.h */,
|
||||||
|
1B0E9AFE1279F006003108E7 /* pushpack1.h */,
|
||||||
|
);
|
||||||
|
name = Compiler;
|
||||||
|
path = "/Users/vade/Asset Import/include/Compiler";
|
||||||
|
sourceTree = "<absolute>";
|
||||||
|
};
|
||||||
|
2A37F4AAFDCFA73011CA2CEA /* DisplayLinkAsyncMoviePlayer */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
E1B74B1A0667B4A90069E3BA /* Models */,
|
||||||
|
2A37F4ABFDCFA73011CA2CEA /* Classes */,
|
||||||
|
1B0E9A8F1279ED43003108E7 /* libassimp.a */,
|
||||||
|
1B0E9AD21279EFCC003108E7 /* include */,
|
||||||
|
2A37F4AFFDCFA73011CA2CEA /* Other Sources */,
|
||||||
|
2A37F4B8FDCFA73011CA2CEA /* Resources */,
|
||||||
|
2A37F4C3FDCFA73011CA2CEA /* Frameworks */,
|
||||||
|
19C28FB0FE9D524F11CA2CBB /* Products */,
|
||||||
|
1B0E9B191279F107003108E7 /* libz.dylib */,
|
||||||
|
);
|
||||||
|
name = DisplayLinkAsyncMoviePlayer;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
2A37F4ABFDCFA73011CA2CEA /* Classes */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
2A37F4AEFDCFA73011CA2CEA /* MyDocument.h */,
|
||||||
|
2A37F4ACFDCFA73011CA2CEA /* MyDocument.mm */,
|
||||||
|
1B0E9A931279EDCD003108E7 /* ModelLoaderHelperClasses.h */,
|
||||||
|
1B0E9A941279EDCD003108E7 /* ModelLoaderHelperClasses.mm */,
|
||||||
|
);
|
||||||
|
name = Classes;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
2A37F4AFFDCFA73011CA2CEA /* Other Sources */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
32DBCF750370BD2300C91783 /* SimpleAssimpViewX_Prefix.pch */,
|
||||||
|
2A37F4B0FDCFA73011CA2CEA /* main.m */,
|
||||||
|
);
|
||||||
|
name = "Other Sources";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
2A37F4B8FDCFA73011CA2CEA /* Resources */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
2F7446A70DB6BCF400F9684A /* MainMenu.xib */,
|
||||||
|
2F7446A90DB6BCF400F9684A /* MyDocument.xib */,
|
||||||
|
2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */,
|
||||||
|
8D15AC360486D014006FF6A4 /* SimpleAssimpViewX-Info.plist */,
|
||||||
|
089C165FFE840EACC02AAC07 /* InfoPlist.strings */,
|
||||||
|
);
|
||||||
|
name = Resources;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
2A37F4C3FDCFA73011CA2CEA /* Frameworks */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
1058C7A6FEA54F5311CA2CBB /* Linked Frameworks */,
|
||||||
|
1058C7A8FEA54F5311CA2CBB /* Other Frameworks */,
|
||||||
|
);
|
||||||
|
name = Frameworks;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
E1B74B1A0667B4A90069E3BA /* Models */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
775BDEF0067A8BF0009058FE /* MyDocument.xcdatamodel */,
|
||||||
|
);
|
||||||
|
name = Models;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
/* End PBXGroup section */
|
||||||
|
|
||||||
|
/* Begin PBXNativeTarget section */
|
||||||
|
8D15AC270486D014006FF6A4 /* SimpleAssimpViewX */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = 26FC0AA50875C8B900E6366F /* Build configuration list for PBXNativeTarget "SimpleAssimpViewX" */;
|
||||||
|
buildPhases = (
|
||||||
|
8D15AC2B0486D014006FF6A4 /* Resources */,
|
||||||
|
8D15AC300486D014006FF6A4 /* Sources */,
|
||||||
|
8D15AC330486D014006FF6A4 /* Frameworks */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
);
|
||||||
|
name = SimpleAssimpViewX;
|
||||||
|
productInstallPath = "$(HOME)/Applications";
|
||||||
|
productName = DisplayLinkAsyncMoviePlayer;
|
||||||
|
productReference = 8D15AC370486D014006FF6A4 /* SimpleAssimpViewX.app */;
|
||||||
|
productType = "com.apple.product-type.application";
|
||||||
|
};
|
||||||
|
/* End PBXNativeTarget section */
|
||||||
|
|
||||||
|
/* Begin PBXProject section */
|
||||||
|
2A37F4A9FDCFA73011CA2CEA /* Project object */ = {
|
||||||
|
isa = PBXProject;
|
||||||
|
buildConfigurationList = 26FC0AA90875C8B900E6366F /* Build configuration list for PBXProject "SimpleAssimpViewX" */;
|
||||||
|
compatibilityVersion = "Xcode 3.1";
|
||||||
|
hasScannedForEncodings = 1;
|
||||||
|
mainGroup = 2A37F4AAFDCFA73011CA2CEA /* DisplayLinkAsyncMoviePlayer */;
|
||||||
|
projectDirPath = "";
|
||||||
|
projectRoot = "";
|
||||||
|
targets = (
|
||||||
|
8D15AC270486D014006FF6A4 /* SimpleAssimpViewX */,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
/* End PBXProject section */
|
||||||
|
|
||||||
|
/* Begin PBXResourcesBuildPhase section */
|
||||||
|
8D15AC2B0486D014006FF6A4 /* Resources */ = {
|
||||||
|
isa = PBXResourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
8D15AC2C0486D014006FF6A4 /* Credits.rtf in Resources */,
|
||||||
|
8D15AC2F0486D014006FF6A4 /* InfoPlist.strings in Resources */,
|
||||||
|
2F7446AB0DB6BCF400F9684A /* MainMenu.xib in Resources */,
|
||||||
|
2F7446AC0DB6BCF400F9684A /* MyDocument.xib in Resources */,
|
||||||
|
1B0E9AF51279EFCC003108E7 /* aiColor4D.inl in Resources */,
|
||||||
|
1B0E9AF61279EFCC003108E7 /* aiMaterial.inl in Resources */,
|
||||||
|
1B0E9AF71279EFCC003108E7 /* aiMatrix3x3.inl in Resources */,
|
||||||
|
1B0E9AF81279EFCC003108E7 /* aiMatrix4x4.inl in Resources */,
|
||||||
|
1B0E9AF91279EFCC003108E7 /* aiVector3D.inl in Resources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
8D15AC300486D014006FF6A4 /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
8D15AC310486D014006FF6A4 /* MyDocument.mm in Sources */,
|
||||||
|
8D15AC320486D014006FF6A4 /* main.m in Sources */,
|
||||||
|
775BDEF1067A8BF0009058FE /* MyDocument.xcdatamodel in Sources */,
|
||||||
|
1B0E9A951279EDCD003108E7 /* ModelLoaderHelperClasses.mm in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXSourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXVariantGroup section */
|
||||||
|
089C165FFE840EACC02AAC07 /* InfoPlist.strings */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
089C1660FE840EACC02AAC07 /* English */,
|
||||||
|
);
|
||||||
|
name = InfoPlist.strings;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
2A37F4BAFDCFA73011CA2CEA /* English */,
|
||||||
|
);
|
||||||
|
name = Credits.rtf;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
2F7446A70DB6BCF400F9684A /* MainMenu.xib */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
2F7446A80DB6BCF400F9684A /* English */,
|
||||||
|
);
|
||||||
|
name = MainMenu.xib;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
2F7446A90DB6BCF400F9684A /* MyDocument.xib */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
2F7446AA0DB6BCF400F9684A /* English */,
|
||||||
|
);
|
||||||
|
name = MyDocument.xib;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
/* End PBXVariantGroup section */
|
||||||
|
|
||||||
|
/* Begin XCBuildConfiguration section */
|
||||||
|
26FC0AA60875C8B900E6366F /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
||||||
|
COPY_PHASE_STRIP = NO;
|
||||||
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
|
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||||
|
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||||
|
GCC_MODEL_TUNING = G5;
|
||||||
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||||
|
GCC_PREFIX_HEADER = SimpleAssimpViewX_Prefix.pch;
|
||||||
|
HEADER_SEARCH_PATHS = "\"$(SRCROOT)\"/**";
|
||||||
|
INFOPLIST_FILE = "SimpleAssimpViewX-Info.plist";
|
||||||
|
INSTALL_PATH = "$(HOME)/Applications";
|
||||||
|
LIBRARY_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"\"$(SRCROOT)\"",
|
||||||
|
);
|
||||||
|
ONLY_ACTIVE_ARCH = NO;
|
||||||
|
PRODUCT_NAME = SimpleAssimpViewX;
|
||||||
|
VALID_ARCHS = "x86_64 i386";
|
||||||
|
WRAPPER_EXTENSION = app;
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
26FC0AA70875C8B900E6366F /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
|
FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)\"";
|
||||||
|
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||||
|
GCC_MODEL_TUNING = G5;
|
||||||
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||||
|
GCC_PREFIX_HEADER = SimpleAssimpViewX_Prefix.pch;
|
||||||
|
HEADER_SEARCH_PATHS = "\"$(SRCROOT)\"/**";
|
||||||
|
INFOPLIST_FILE = "SimpleAssimpViewX-Info.plist";
|
||||||
|
INSTALL_PATH = "$(HOME)/Applications";
|
||||||
|
LIBRARY_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"\"$(SRCROOT)\"",
|
||||||
|
);
|
||||||
|
ONLY_ACTIVE_ARCH = NO;
|
||||||
|
PRODUCT_NAME = SimpleAssimpViewX;
|
||||||
|
VALID_ARCHS = "x86_64 i386";
|
||||||
|
WRAPPER_EXTENSION = app;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
26FC0AAA0875C8B900E6366F /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
|
PREBINDING = NO;
|
||||||
|
SDKROOT = macosx10.6;
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
26FC0AAB0875C8B900E6366F /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
PREBINDING = NO;
|
||||||
|
SDKROOT = macosx10.6;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
|
/* Begin XCConfigurationList section */
|
||||||
|
26FC0AA50875C8B900E6366F /* Build configuration list for PBXNativeTarget "SimpleAssimpViewX" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
26FC0AA60875C8B900E6366F /* Debug */,
|
||||||
|
26FC0AA70875C8B900E6366F /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
26FC0AA90875C8B900E6366F /* Build configuration list for PBXProject "SimpleAssimpViewX" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
26FC0AAA0875C8B900E6366F /* Debug */,
|
||||||
|
26FC0AAB0875C8B900E6366F /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
/* End XCConfigurationList section */
|
||||||
|
};
|
||||||
|
rootObject = 2A37F4A9FDCFA73011CA2CEA /* Project object */;
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,9 @@
|
||||||
|
//
|
||||||
|
// Prefix header for all source files of the 'DisplayLinkAsyncMoviePlayer' target in the 'DisplayLinkAsyncMoviePlayer' project
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifdef __OBJC__
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
#import <CoreData/CoreData.h>
|
||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
#endif
|
|
@ -0,0 +1,14 @@
|
||||||
|
//
|
||||||
|
// main.m
|
||||||
|
// DisplayLinkAsyncMoviePlayer
|
||||||
|
//
|
||||||
|
// Created by vade on 10/26/10.
|
||||||
|
// Copyright __MyCompanyName__ 2010 . All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
return NSApplicationMain(argc, (const char **) argv);
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
<VisualStudioProject
|
<VisualStudioProject
|
||||||
ProjectType="Visual C++"
|
ProjectType="Visual C++"
|
||||||
Version="9,00"
|
Version="9.00"
|
||||||
Name="assimp"
|
Name="assimp"
|
||||||
ProjectGUID="{5691E159-2D9B-407F-971F-EA5C592DC524}"
|
ProjectGUID="{5691E159-2D9B-407F-971F-EA5C592DC524}"
|
||||||
RootNamespace="assimp"
|
RootNamespace="assimp"
|
||||||
|
|
Loading…
Reference in New Issue