From 2b0d8d266af00477fae4a9c12865b3a950998023 Mon Sep 17 00:00:00 2001 From: dsc Date: Wed, 27 Apr 2011 22:48:03 -0700 Subject: [PATCH] Removes old project. --- Littlest.xcodeproj/project.pbxproj | 1464 - .../project.xcworkspace/contents.xcworkspacedata | 7 - .../UserInterfaceState.xcuserstate |36875 -------------------- .../xcdebugger/Breakpoints.xcbkptlist | 5 - .../xcschemes/Littlest.xcscheme | 76 - .../xcschemes/xcschememanagement.plist | 22 - Littlest/AppDelegate.h | 20 - Littlest/AppDelegate.mm | 170 - Littlest/Engine/Render/GLES-Render.h | 68 - Littlest/Engine/Render/GLES-Render.mm | 179 - Littlest/Foundation/Common/Assert.h | 69 - Littlest/Foundation/Common/Base.h | 11 - Littlest/Foundation/Common/GlobalDefines.h | 152 - Littlest/Foundation/Common/GlobalInclude.h | 7 - Littlest/Foundation/Common/GlobalTypes.h | 40 - Littlest/Foundation/Common/Print.h | 10 - Littlest/Foundation/Common/Singleton.h | 42 - Littlest/Foundation/Containers/BitEncoder.h | 10 - .../Foundation/Containers/LocklessRingBuffer.cpp | 159 - .../Foundation/Containers/LocklessRingBuffer.h | 23 - .../GraphicsServices/Geometry/BasicPrimitives.h | 27 - .../GraphicsServices/Geometry/BasicPrimitives.mm | 26 - .../Foundation/GraphicsServices/OpenGLServices.h | 58 - .../Foundation/GraphicsServices/OpenGLServices.mm | 160 - .../Foundation/GraphicsServices/RenderTarget.h | 65 - .../Foundation/GraphicsServices/RenderTarget.mm | 150 - Littlest/Foundation/Hash/DJB2.h | 25 - Littlest/Foundation/Math/MathDefines.h | 14 - Littlest/Foundation/Math/MathInclude.h | 8 - Littlest/Foundation/Math/MathOperations.h | 75 - Littlest/Foundation/Math/MathTypes.h | 363 - Littlest/Foundation/Math/Matrix.h | 660 - Littlest/Foundation/Math/Quaternion.h | 100 - Littlest/Foundation/Math/Vector.h | 1176 - Littlest/Foundation/Memory/MemoryBitset.cpp | 316 - Littlest/Foundation/Memory/MemoryBitset.h | 49 - Littlest/Foundation/Memory/MemoryHeap.cpp | 33 - Littlest/Foundation/Memory/MemoryHeap.h | 41 - Littlest/Foundation/Memory/MemoryLinear.h | 110 - Littlest/Foundation/OSInterface/GLView.h | 32 - Littlest/Foundation/OSInterface/GLView.m | 156 - .../Foundation/OSInterface/LittlestAppDelegate.h | 17 - .../Foundation/OSInterface/LittlestAppDelegate.m | 48 - .../OSInterface/LittlestViewController.h | 31 - .../OSInterface/LittlestViewController.m | 408 - Littlest/Foundation/Synchronization/Atomic32Bit.h | 99 - Littlest/Foundation/Synchronization/MemorySync.h | 28 - Littlest/Game/Scene/Scene.h | 18 - Littlest/HelloWorldLayer.h | 28 - Littlest/HelloWorldLayer.mm | 258 - Littlest/OS/GameConfig.h | 28 - Littlest/OS/RootViewController.h | 16 - Littlest/OS/RootViewController.m | 152 - Littlest/Prefix.pch | 14 - Littlest/Resources/Default.png | Bin 30635 -> 0 bytes Littlest/Resources/Icon-72.png | Bin 11414 -> 0 bytes Littlest/Resources/Icon-Small-50.png | Bin 7979 -> 0 bytes Littlest/Resources/Icon-Small.png | Bin 4956 -> 0 bytes Littlest/Resources/Icon-Small@2x.png | Bin 9465 -> 0 bytes Littlest/Resources/Icon.png | Bin 9327 -> 0 bytes Littlest/Resources/Icon@2x.png | Bin 21365 -> 0 bytes Littlest/Resources/Info.plist | 55 - Littlest/Resources/blocks.png | Bin 2001 -> 0 bytes Littlest/Resources/fps_images.png | Bin 6203 -> 0 bytes Littlest/Resources/iTunesArtwork | Bin 61982 -> 0 bytes Littlest/libs/Box2D/Box2D.h | 62 - .../libs/Box2D/Collision/Shapes/b2CircleShape.cpp | 89 - .../libs/Box2D/Collision/Shapes/b2CircleShape.h | 87 - .../libs/Box2D/Collision/Shapes/b2PolygonShape.cpp | 434 - .../libs/Box2D/Collision/Shapes/b2PolygonShape.h | 131 - Littlest/libs/Box2D/Collision/Shapes/b2Shape.h | 95 - Littlest/libs/Box2D/Collision/b2BroadPhase.cpp | 116 - Littlest/libs/Box2D/Collision/b2BroadPhase.h | 229 - Littlest/libs/Box2D/Collision/b2CollideCircle.cpp | 154 - Littlest/libs/Box2D/Collision/b2CollidePolygon.cpp | 306 - Littlest/libs/Box2D/Collision/b2Collision.cpp | 250 - Littlest/libs/Box2D/Collision/b2Collision.h | 240 - Littlest/libs/Box2D/Collision/b2Distance.cpp | 571 - Littlest/libs/Box2D/Collision/b2Distance.h | 141 - Littlest/libs/Box2D/Collision/b2DynamicTree.cpp | 365 - Littlest/libs/Box2D/Collision/b2DynamicTree.h | 286 - Littlest/libs/Box2D/Collision/b2TimeOfImpact.cpp | 483 - Littlest/libs/Box2D/Collision/b2TimeOfImpact.h | 59 - Littlest/libs/Box2D/Common/b2BlockAllocator.cpp | 205 - Littlest/libs/Box2D/Common/b2BlockAllocator.h | 59 - Littlest/libs/Box2D/Common/b2Math.cpp | 55 - Littlest/libs/Box2D/Common/b2Math.h | 624 - Littlest/libs/Box2D/Common/b2Settings.cpp | 33 - Littlest/libs/Box2D/Common/b2Settings.h | 151 - Littlest/libs/Box2D/Common/b2StackAllocator.cpp | 83 - Littlest/libs/Box2D/Common/b2StackAllocator.h | 60 - .../Box2D/Dynamics/Contacts/b2CircleContact.cpp | 52 - .../libs/Box2D/Dynamics/Contacts/b2CircleContact.h | 38 - .../libs/Box2D/Dynamics/Contacts/b2Contact.cpp | 226 - Littlest/libs/Box2D/Dynamics/Contacts/b2Contact.h | 242 - .../Box2D/Dynamics/Contacts/b2ContactSolver.cpp | 623 - .../libs/Box2D/Dynamics/Contacts/b2ContactSolver.h | 78 - .../libs/Box2D/Dynamics/Contacts/b2NullContact.h | 37 - .../Contacts/b2PolygonAndCircleContact.cpp | 52 - .../Dynamics/Contacts/b2PolygonAndCircleContact.h | 38 - .../Box2D/Dynamics/Contacts/b2PolygonContact.cpp | 52 - .../Box2D/Dynamics/Contacts/b2PolygonContact.h | 38 - .../libs/Box2D/Dynamics/Contacts/b2TOISolver.cpp | 231 - .../libs/Box2D/Dynamics/Contacts/b2TOISolver.h | 51 - .../libs/Box2D/Dynamics/Joints/b2DistanceJoint.cpp | 211 - .../libs/Box2D/Dynamics/Joints/b2DistanceJoint.h | 140 - .../libs/Box2D/Dynamics/Joints/b2FrictionJoint.cpp | 229 - .../libs/Box2D/Dynamics/Joints/b2FrictionJoint.h | 99 - .../libs/Box2D/Dynamics/Joints/b2GearJoint.cpp | 259 - Littlest/libs/Box2D/Dynamics/Joints/b2GearJoint.h | 111 - Littlest/libs/Box2D/Dynamics/Joints/b2Joint.cpp | 186 - Littlest/libs/Box2D/Dynamics/Joints/b2Joint.h | 226 - .../libs/Box2D/Dynamics/Joints/b2LineJoint.cpp | 591 - Littlest/libs/Box2D/Dynamics/Joints/b2LineJoint.h | 170 - .../libs/Box2D/Dynamics/Joints/b2MouseJoint.cpp | 197 - Littlest/libs/Box2D/Dynamics/Joints/b2MouseJoint.h | 114 - .../Box2D/Dynamics/Joints/b2PrismaticJoint.cpp | 586 - .../libs/Box2D/Dynamics/Joints/b2PrismaticJoint.h | 175 - .../libs/Box2D/Dynamics/Joints/b2PulleyJoint.cpp | 427 - .../libs/Box2D/Dynamics/Joints/b2PulleyJoint.h | 148 - .../libs/Box2D/Dynamics/Joints/b2RevoluteJoint.cpp | 478 - .../libs/Box2D/Dynamics/Joints/b2RevoluteJoint.h | 174 - .../libs/Box2D/Dynamics/Joints/b2WeldJoint.cpp | 219 - Littlest/libs/Box2D/Dynamics/Joints/b2WeldJoint.h | 82 - Littlest/libs/Box2D/Dynamics/b2Body.cpp | 470 - Littlest/libs/Box2D/Dynamics/b2Body.h | 802 - Littlest/libs/Box2D/Dynamics/b2ContactManager.cpp | 266 - Littlest/libs/Box2D/Dynamics/b2ContactManager.h | 52 - Littlest/libs/Box2D/Dynamics/b2Fixture.cpp | 163 - Littlest/libs/Box2D/Dynamics/b2Fixture.h | 326 - Littlest/libs/Box2D/Dynamics/b2Island.cpp | 374 - Littlest/libs/Box2D/Dynamics/b2Island.h | 105 - Littlest/libs/Box2D/Dynamics/b2TimeStep.h | 35 - Littlest/libs/Box2D/Dynamics/b2World.cpp | 1076 - Littlest/libs/Box2D/Dynamics/b2World.h | 285 - Littlest/libs/Box2D/Dynamics/b2WorldCallbacks.cpp | 61 - Littlest/libs/Box2D/Dynamics/b2WorldCallbacks.h | 217 - Littlest/libs/CocosDenshion/CDAudioManager.h | 243 - Littlest/libs/CocosDenshion/CDAudioManager.m | 887 - Littlest/libs/CocosDenshion/CDConfig.h | 60 - Littlest/libs/CocosDenshion/CDOpenALSupport.h | 77 - Littlest/libs/CocosDenshion/CDOpenALSupport.m | 246 - Littlest/libs/CocosDenshion/CocosDenshion.h | 440 - Littlest/libs/CocosDenshion/CocosDenshion.m | 1598 - Littlest/libs/CocosDenshion/SimpleAudioEngine.h | 90 - Littlest/libs/CocosDenshion/SimpleAudioEngine.m | 220 - Littlest/libs/FontLabel/FontLabel.h | 44 - Littlest/libs/FontLabel/FontLabel.m | 195 - Littlest/libs/FontLabel/FontLabelStringDrawing.h | 69 - Littlest/libs/FontLabel/FontLabelStringDrawing.m | 892 - Littlest/libs/FontLabel/FontManager.h | 85 - Littlest/libs/FontLabel/FontManager.m | 123 - Littlest/libs/FontLabel/ZAttributedString.h | 77 - Littlest/libs/FontLabel/ZAttributedString.m | 596 - Littlest/libs/FontLabel/ZAttributedStringPrivate.h | 24 - Littlest/libs/FontLabel/ZFont.h | 47 - Littlest/libs/FontLabel/ZFont.m | 170 - Littlest/libs/TouchJSON/CDataScanner.h | 68 - Littlest/libs/TouchJSON/CDataScanner.m | 270 - .../TouchJSON/Extensions/CDataScanner_Extensions.h | 37 - .../TouchJSON/Extensions/CDataScanner_Extensions.m | 80 - .../Extensions/NSCharacterSet_Extensions.h | 36 - .../Extensions/NSCharacterSet_Extensions.m | 48 - .../Extensions/NSDictionary_JSONExtensions.h | 36 - .../Extensions/NSDictionary_JSONExtensions.m | 41 - .../TouchJSON/Extensions/NSScanner_Extensions.h | 44 - .../TouchJSON/Extensions/NSScanner_Extensions.m | 118 - Littlest/libs/TouchJSON/JSON/CJSONDeserializer.h | 59 - Littlest/libs/TouchJSON/JSON/CJSONDeserializer.m | 84 - Littlest/libs/TouchJSON/JSON/CJSONScanner.h | 43 - Littlest/libs/TouchJSON/JSON/CJSONScanner.m | 536 - Littlest/libs/TouchJSON/JSON/CJSONSerializer.h | 45 - Littlest/libs/TouchJSON/JSON/CJSONSerializer.m | 184 - Littlest/libs/cocos2d/CCAction.h | 191 - Littlest/libs/cocos2d/CCAction.m | 361 - Littlest/libs/cocos2d/CCActionCamera.h | 72 - Littlest/libs/cocos2d/CCActionCamera.m | 146 - Littlest/libs/cocos2d/CCActionEase.h | 159 - Littlest/libs/cocos2d/CCActionEase.m | 534 - Littlest/libs/cocos2d/CCActionGrid.h | 165 - Littlest/libs/cocos2d/CCActionGrid.m | 386 - Littlest/libs/cocos2d/CCActionGrid3D.h | 208 - Littlest/libs/cocos2d/CCActionGrid3D.m | 659 - Littlest/libs/cocos2d/CCActionInstant.h | 197 - Littlest/libs/cocos2d/CCActionInstant.m | 472 - Littlest/libs/cocos2d/CCActionInterval.h | 388 - Littlest/libs/cocos2d/CCActionInterval.m | 1215 - Littlest/libs/cocos2d/CCActionManager.h | 109 - Littlest/libs/cocos2d/CCActionManager.m | 344 - Littlest/libs/cocos2d/CCActionPageTurn3D.h | 42 - Littlest/libs/cocos2d/CCActionPageTurn3D.m | 86 - Littlest/libs/cocos2d/CCActionProgressTimer.h | 59 - Littlest/libs/cocos2d/CCActionProgressTimer.m | 103 - Littlest/libs/cocos2d/CCActionTiledGrid.h | 211 - Littlest/libs/cocos2d/CCActionTiledGrid.m | 768 - Littlest/libs/cocos2d/CCActionTween.h | 62 - Littlest/libs/cocos2d/CCActionTween.m | 72 - Littlest/libs/cocos2d/CCAnimation.h | 135 - Littlest/libs/cocos2d/CCAnimation.m | 152 - Littlest/libs/cocos2d/CCAnimationCache.h | 63 - Littlest/libs/cocos2d/CCAnimationCache.m | 100 - Littlest/libs/cocos2d/CCAtlasNode.h | 86 - Littlest/libs/cocos2d/CCAtlasNode.m | 205 - Littlest/libs/cocos2d/CCBlockSupport.h | 51 - Littlest/libs/cocos2d/CCBlockSupport.m | 46 - Littlest/libs/cocos2d/CCCamera.h | 94 - Littlest/libs/cocos2d/CCCamera.m | 130 - Littlest/libs/cocos2d/CCConfiguration.h | 110 - Littlest/libs/cocos2d/CCConfiguration.m | 192 - Littlest/libs/cocos2d/CCDirector.h | 304 - Littlest/libs/cocos2d/CCDirector.m | 557 - Littlest/libs/cocos2d/CCDrawingPrimitives.h | 91 - Littlest/libs/cocos2d/CCDrawingPrimitives.m | 271 - Littlest/libs/cocos2d/CCGrabber.h | 43 - Littlest/libs/cocos2d/CCGrabber.m | 95 - Littlest/libs/cocos2d/CCGrid.h | 121 - Littlest/libs/cocos2d/CCGrid.m | 571 - Littlest/libs/cocos2d/CCLabelAtlas.h | 61 - Littlest/libs/cocos2d/CCLabelAtlas.m | 189 - Littlest/libs/cocos2d/CCLabelBMFont.h | 189 - Littlest/libs/cocos2d/CCLabelBMFont.m | 672 - Littlest/libs/cocos2d/CCLabelTTF.h | 62 - Littlest/libs/cocos2d/CCLabelTTF.m | 125 - Littlest/libs/cocos2d/CCLayer.h | 292 - Littlest/libs/cocos2d/CCLayer.m | 618 - Littlest/libs/cocos2d/CCMenu.h | 92 - Littlest/libs/cocos2d/CCMenu.m | 522 - Littlest/libs/cocos2d/CCMenuItem.h | 362 - Littlest/libs/cocos2d/CCMenuItem.m | 757 - Littlest/libs/cocos2d/CCMotionStreak.h | 67 - Littlest/libs/cocos2d/CCMotionStreak.m | 104 - Littlest/libs/cocos2d/CCNode.h | 510 - Littlest/libs/cocos2d/CCNode.m | 883 - Littlest/libs/cocos2d/CCParallaxNode.h | 49 - Littlest/libs/cocos2d/CCParallaxNode.m | 160 - Littlest/libs/cocos2d/CCParticleExamples.h | 110 - Littlest/libs/cocos2d/CCParticleExamples.m | 925 - Littlest/libs/cocos2d/CCParticleSystem.h | 444 - Littlest/libs/cocos2d/CCParticleSystem.m | 795 - Littlest/libs/cocos2d/CCParticleSystemPoint.h | 64 - Littlest/libs/cocos2d/CCParticleSystemPoint.m | 208 - Littlest/libs/cocos2d/CCParticleSystemQuad.h | 74 - Littlest/libs/cocos2d/CCParticleSystemQuad.m | 316 - Littlest/libs/cocos2d/CCProgressTimer.h | 83 - Littlest/libs/cocos2d/CCProgressTimer.m | 496 - Littlest/libs/cocos2d/CCProtocols.h | 124 - Littlest/libs/cocos2d/CCRenderTexture.h | 110 - Littlest/libs/cocos2d/CCRenderTexture.m | 368 - Littlest/libs/cocos2d/CCRibbon.h | 117 - Littlest/libs/cocos2d/CCRibbon.m | 381 - Littlest/libs/cocos2d/CCScene.h | 42 - Littlest/libs/cocos2d/CCScene.m | 44 - Littlest/libs/cocos2d/CCScheduler.h | 191 - Littlest/libs/cocos2d/CCScheduler.m | 582 - Littlest/libs/cocos2d/CCSprite.h | 351 - Littlest/libs/cocos2d/CCSprite.m | 984 - Littlest/libs/cocos2d/CCSpriteBatchNode.h | 143 - Littlest/libs/cocos2d/CCSpriteBatchNode.m | 499 - Littlest/libs/cocos2d/CCSpriteFrame.h | 89 - Littlest/libs/cocos2d/CCSpriteFrame.m | 108 - Littlest/libs/cocos2d/CCSpriteFrameCache.h | 133 - Littlest/libs/cocos2d/CCSpriteFrameCache.m | 344 - Littlest/libs/cocos2d/CCTMXLayer.h | 153 - Littlest/libs/cocos2d/CCTMXLayer.m | 668 - Littlest/libs/cocos2d/CCTMXObjectGroup.h | 65 - Littlest/libs/cocos2d/CCTMXObjectGroup.m | 84 - Littlest/libs/cocos2d/CCTMXTiledMap.h | 144 - Littlest/libs/cocos2d/CCTMXTiledMap.m | 201 - Littlest/libs/cocos2d/CCTMXXMLParser.h | 201 - Littlest/libs/cocos2d/CCTMXXMLParser.m | 447 - Littlest/libs/cocos2d/CCTexture2D.h | 308 - Littlest/libs/cocos2d/CCTexture2D.m | 754 - Littlest/libs/cocos2d/CCTextureAtlas.h | 138 - Littlest/libs/cocos2d/CCTextureAtlas.m | 343 - Littlest/libs/cocos2d/CCTextureCache.h | 139 - Littlest/libs/cocos2d/CCTextureCache.m | 466 - Littlest/libs/cocos2d/CCTexturePVR.h | 118 - Littlest/libs/cocos2d/CCTexturePVR.m | 407 - Littlest/libs/cocos2d/CCTileMapAtlas.h | 82 - Littlest/libs/cocos2d/CCTileMapAtlas.m | 233 - Littlest/libs/cocos2d/CCTransition.h | 295 - Littlest/libs/cocos2d/CCTransition.m | 1057 - Littlest/libs/cocos2d/CCTransitionPageTurn.h | 60 - Littlest/libs/cocos2d/CCTransitionPageTurn.m | 117 - Littlest/libs/cocos2d/CCTransitionRadial.h | 40 - Littlest/libs/cocos2d/CCTransitionRadial.m | 115 - Littlest/libs/cocos2d/Platforms/CCGL.h | 82 - Littlest/libs/cocos2d/Platforms/CCNS.h | 62 - .../libs/cocos2d/Platforms/Mac/CCDirectorMac.h | 101 - .../libs/cocos2d/Platforms/Mac/CCDirectorMac.m | 462 - .../libs/cocos2d/Platforms/Mac/CCEventDispatcher.h | 276 - .../libs/cocos2d/Platforms/Mac/CCEventDispatcher.m | 644 - Littlest/libs/cocos2d/Platforms/Mac/MacGLView.h | 88 - Littlest/libs/cocos2d/Platforms/Mac/MacGLView.m | 241 - Littlest/libs/cocos2d/Platforms/Mac/MacWindow.h | 42 - Littlest/libs/cocos2d/Platforms/Mac/MacWindow.m | 70 - .../libs/cocos2d/Platforms/iOS/CCDirectorIOS.h | 254 - .../libs/cocos2d/Platforms/iOS/CCDirectorIOS.m | 729 - .../Platforms/iOS/CCTouchDelegateProtocol.h | 75 - .../libs/cocos2d/Platforms/iOS/CCTouchDispatcher.h | 122 - .../libs/cocos2d/Platforms/iOS/CCTouchDispatcher.m | 326 - .../libs/cocos2d/Platforms/iOS/CCTouchHandler.h | 93 - .../libs/cocos2d/Platforms/iOS/CCTouchHandler.m | 135 - Littlest/libs/cocos2d/Platforms/iOS/EAGLView.h | 155 - Littlest/libs/cocos2d/Platforms/iOS/EAGLView.m | 342 - Littlest/libs/cocos2d/Platforms/iOS/ES1Renderer.h | 71 - Littlest/libs/cocos2d/Platforms/iOS/ES1Renderer.m | 252 - Littlest/libs/cocos2d/Platforms/iOS/ESRenderer.h | 53 - Littlest/libs/cocos2d/Platforms/iOS/glu.c | 113 - Littlest/libs/cocos2d/Platforms/iOS/glu.h | 29 - Littlest/libs/cocos2d/Support/CCArray.h | 92 - Littlest/libs/cocos2d/Support/CCArray.m | 238 - Littlest/libs/cocos2d/Support/CCFileUtils.h | 61 - Littlest/libs/cocos2d/Support/CCFileUtils.m | 168 - Littlest/libs/cocos2d/Support/CCProfiling.h | 53 - Littlest/libs/cocos2d/Support/CCProfiling.m | 117 - Littlest/libs/cocos2d/Support/CGPointExtension.h | 321 - Littlest/libs/cocos2d/Support/CGPointExtension.m | 167 - Littlest/libs/cocos2d/Support/OpenGL_Internal.h | 80 - Littlest/libs/cocos2d/Support/TGAlib.h | 55 - Littlest/libs/cocos2d/Support/TGAlib.m | 272 - Littlest/libs/cocos2d/Support/TransformUtils.h | 37 - Littlest/libs/cocos2d/Support/TransformUtils.m | 46 - Littlest/libs/cocos2d/Support/ZipUtils.h | 78 - Littlest/libs/cocos2d/Support/ZipUtils.m | 246 - Littlest/libs/cocos2d/Support/base64.c | 89 - Littlest/libs/cocos2d/Support/base64.h | 33 - Littlest/libs/cocos2d/Support/ccCArray.h | 408 - Littlest/libs/cocos2d/Support/ccUtils.c | 20 - Littlest/libs/cocos2d/Support/ccUtils.h | 29 - Littlest/libs/cocos2d/Support/uthash.h | 956 - Littlest/libs/cocos2d/Support/utlist.h | 493 - Littlest/libs/cocos2d/ccConfig.h | 281 - Littlest/libs/cocos2d/ccMacros.h | 252 - Littlest/libs/cocos2d/ccTypes.h | 286 - Littlest/libs/cocos2d/cocos2d.h | 160 - Littlest/libs/cocos2d/cocos2d.m | 33 - Littlest/libs/cocoslive/CLScoreServerPost.h | 141 - Littlest/libs/cocoslive/CLScoreServerPost.m | 332 - Littlest/libs/cocoslive/CLScoreServerRequest.h | 121 - Littlest/libs/cocoslive/CLScoreServerRequest.m | 256 - Littlest/libs/cocoslive/cocoslive.h | 42 - Littlest/libs/cocoslive/cocoslive.m | 34 - Littlest/main.m | 17 - 344 files changed, 0 insertions(+), 110076 deletions(-) delete mode 100644 Littlest.xcodeproj/project.pbxproj delete mode 100644 Littlest.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 Littlest.xcodeproj/project.xcworkspace/xcuserdata/dorischen.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 Littlest.xcodeproj/xcuserdata/dorischen.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist delete mode 100644 Littlest.xcodeproj/xcuserdata/dorischen.xcuserdatad/xcschemes/Littlest.xcscheme delete mode 100644 Littlest.xcodeproj/xcuserdata/dorischen.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 Littlest/AppDelegate.h delete mode 100644 Littlest/AppDelegate.mm delete mode 100644 Littlest/Engine/Render/GLES-Render.h delete mode 100644 Littlest/Engine/Render/GLES-Render.mm delete mode 100755 Littlest/Foundation/Common/Assert.h delete mode 100755 Littlest/Foundation/Common/Base.h delete mode 100755 Littlest/Foundation/Common/GlobalDefines.h delete mode 100755 Littlest/Foundation/Common/GlobalInclude.h delete mode 100755 Littlest/Foundation/Common/GlobalTypes.h delete mode 100755 Littlest/Foundation/Common/Print.h delete mode 100755 Littlest/Foundation/Common/Singleton.h delete mode 100755 Littlest/Foundation/Containers/BitEncoder.h delete mode 100755 Littlest/Foundation/Containers/LocklessRingBuffer.cpp delete mode 100755 Littlest/Foundation/Containers/LocklessRingBuffer.h delete mode 100644 Littlest/Foundation/GraphicsServices/Geometry/BasicPrimitives.h delete mode 100644 Littlest/Foundation/GraphicsServices/Geometry/BasicPrimitives.mm delete mode 100644 Littlest/Foundation/GraphicsServices/OpenGLServices.h delete mode 100644 Littlest/Foundation/GraphicsServices/OpenGLServices.mm delete mode 100644 Littlest/Foundation/GraphicsServices/RenderTarget.h delete mode 100644 Littlest/Foundation/GraphicsServices/RenderTarget.mm delete mode 100755 Littlest/Foundation/Hash/DJB2.h delete mode 100755 Littlest/Foundation/Math/MathDefines.h delete mode 100755 Littlest/Foundation/Math/MathInclude.h delete mode 100755 Littlest/Foundation/Math/MathOperations.h delete mode 100755 Littlest/Foundation/Math/MathTypes.h delete mode 100755 Littlest/Foundation/Math/Matrix.h delete mode 100755 Littlest/Foundation/Math/Quaternion.h delete mode 100755 Littlest/Foundation/Math/Vector.h delete mode 100755 Littlest/Foundation/Memory/MemoryBitset.cpp delete mode 100755 Littlest/Foundation/Memory/MemoryBitset.h delete mode 100755 Littlest/Foundation/Memory/MemoryHeap.cpp delete mode 100755 Littlest/Foundation/Memory/MemoryHeap.h delete mode 100755 Littlest/Foundation/Memory/MemoryLinear.h delete mode 100644 Littlest/Foundation/OSInterface/GLView.h delete mode 100644 Littlest/Foundation/OSInterface/GLView.m delete mode 100644 Littlest/Foundation/OSInterface/LittlestAppDelegate.h delete mode 100644 Littlest/Foundation/OSInterface/LittlestAppDelegate.m delete mode 100644 Littlest/Foundation/OSInterface/LittlestViewController.h delete mode 100644 Littlest/Foundation/OSInterface/LittlestViewController.m delete mode 100755 Littlest/Foundation/Synchronization/Atomic32Bit.h delete mode 100755 Littlest/Foundation/Synchronization/MemorySync.h delete mode 100644 Littlest/Game/Scene/Scene.h delete mode 100644 Littlest/HelloWorldLayer.h delete mode 100644 Littlest/HelloWorldLayer.mm delete mode 100644 Littlest/OS/GameConfig.h delete mode 100644 Littlest/OS/RootViewController.h delete mode 100644 Littlest/OS/RootViewController.m delete mode 100644 Littlest/Prefix.pch delete mode 100644 Littlest/Resources/Default.png delete mode 100644 Littlest/Resources/Icon-72.png delete mode 100644 Littlest/Resources/Icon-Small-50.png delete mode 100644 Littlest/Resources/Icon-Small.png delete mode 100644 Littlest/Resources/Icon-Small@2x.png delete mode 100644 Littlest/Resources/Icon.png delete mode 100644 Littlest/Resources/Icon@2x.png delete mode 100644 Littlest/Resources/Info.plist delete mode 100755 Littlest/Resources/blocks.png delete mode 100644 Littlest/Resources/fps_images.png delete mode 100644 Littlest/Resources/iTunesArtwork delete mode 100644 Littlest/libs/Box2D/Box2D.h delete mode 100644 Littlest/libs/Box2D/Collision/Shapes/b2CircleShape.cpp delete mode 100644 Littlest/libs/Box2D/Collision/Shapes/b2CircleShape.h delete mode 100644 Littlest/libs/Box2D/Collision/Shapes/b2PolygonShape.cpp delete mode 100644 Littlest/libs/Box2D/Collision/Shapes/b2PolygonShape.h delete mode 100644 Littlest/libs/Box2D/Collision/Shapes/b2Shape.h delete mode 100644 Littlest/libs/Box2D/Collision/b2BroadPhase.cpp delete mode 100644 Littlest/libs/Box2D/Collision/b2BroadPhase.h delete mode 100644 Littlest/libs/Box2D/Collision/b2CollideCircle.cpp delete mode 100644 Littlest/libs/Box2D/Collision/b2CollidePolygon.cpp delete mode 100644 Littlest/libs/Box2D/Collision/b2Collision.cpp delete mode 100644 Littlest/libs/Box2D/Collision/b2Collision.h delete mode 100644 Littlest/libs/Box2D/Collision/b2Distance.cpp delete mode 100644 Littlest/libs/Box2D/Collision/b2Distance.h delete mode 100644 Littlest/libs/Box2D/Collision/b2DynamicTree.cpp delete mode 100644 Littlest/libs/Box2D/Collision/b2DynamicTree.h delete mode 100644 Littlest/libs/Box2D/Collision/b2TimeOfImpact.cpp delete mode 100644 Littlest/libs/Box2D/Collision/b2TimeOfImpact.h delete mode 100644 Littlest/libs/Box2D/Common/b2BlockAllocator.cpp delete mode 100644 Littlest/libs/Box2D/Common/b2BlockAllocator.h delete mode 100644 Littlest/libs/Box2D/Common/b2Math.cpp delete mode 100644 Littlest/libs/Box2D/Common/b2Math.h delete mode 100644 Littlest/libs/Box2D/Common/b2Settings.cpp delete mode 100644 Littlest/libs/Box2D/Common/b2Settings.h delete mode 100644 Littlest/libs/Box2D/Common/b2StackAllocator.cpp delete mode 100644 Littlest/libs/Box2D/Common/b2StackAllocator.h delete mode 100644 Littlest/libs/Box2D/Dynamics/Contacts/b2CircleContact.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/Contacts/b2CircleContact.h delete mode 100644 Littlest/libs/Box2D/Dynamics/Contacts/b2Contact.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/Contacts/b2Contact.h delete mode 100644 Littlest/libs/Box2D/Dynamics/Contacts/b2ContactSolver.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/Contacts/b2ContactSolver.h delete mode 100644 Littlest/libs/Box2D/Dynamics/Contacts/b2NullContact.h delete mode 100644 Littlest/libs/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.h delete mode 100644 Littlest/libs/Box2D/Dynamics/Contacts/b2PolygonContact.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/Contacts/b2PolygonContact.h delete mode 100644 Littlest/libs/Box2D/Dynamics/Contacts/b2TOISolver.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/Contacts/b2TOISolver.h delete mode 100644 Littlest/libs/Box2D/Dynamics/Joints/b2DistanceJoint.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/Joints/b2DistanceJoint.h delete mode 100644 Littlest/libs/Box2D/Dynamics/Joints/b2FrictionJoint.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/Joints/b2FrictionJoint.h delete mode 100644 Littlest/libs/Box2D/Dynamics/Joints/b2GearJoint.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/Joints/b2GearJoint.h delete mode 100644 Littlest/libs/Box2D/Dynamics/Joints/b2Joint.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/Joints/b2Joint.h delete mode 100644 Littlest/libs/Box2D/Dynamics/Joints/b2LineJoint.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/Joints/b2LineJoint.h delete mode 100644 Littlest/libs/Box2D/Dynamics/Joints/b2MouseJoint.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/Joints/b2MouseJoint.h delete mode 100644 Littlest/libs/Box2D/Dynamics/Joints/b2PrismaticJoint.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/Joints/b2PrismaticJoint.h delete mode 100644 Littlest/libs/Box2D/Dynamics/Joints/b2PulleyJoint.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/Joints/b2PulleyJoint.h delete mode 100644 Littlest/libs/Box2D/Dynamics/Joints/b2RevoluteJoint.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/Joints/b2RevoluteJoint.h delete mode 100644 Littlest/libs/Box2D/Dynamics/Joints/b2WeldJoint.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/Joints/b2WeldJoint.h delete mode 100644 Littlest/libs/Box2D/Dynamics/b2Body.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/b2Body.h delete mode 100644 Littlest/libs/Box2D/Dynamics/b2ContactManager.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/b2ContactManager.h delete mode 100644 Littlest/libs/Box2D/Dynamics/b2Fixture.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/b2Fixture.h delete mode 100644 Littlest/libs/Box2D/Dynamics/b2Island.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/b2Island.h delete mode 100644 Littlest/libs/Box2D/Dynamics/b2TimeStep.h delete mode 100644 Littlest/libs/Box2D/Dynamics/b2World.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/b2World.h delete mode 100644 Littlest/libs/Box2D/Dynamics/b2WorldCallbacks.cpp delete mode 100644 Littlest/libs/Box2D/Dynamics/b2WorldCallbacks.h delete mode 100644 Littlest/libs/CocosDenshion/CDAudioManager.h delete mode 100644 Littlest/libs/CocosDenshion/CDAudioManager.m delete mode 100644 Littlest/libs/CocosDenshion/CDConfig.h delete mode 100644 Littlest/libs/CocosDenshion/CDOpenALSupport.h delete mode 100644 Littlest/libs/CocosDenshion/CDOpenALSupport.m delete mode 100644 Littlest/libs/CocosDenshion/CocosDenshion.h delete mode 100644 Littlest/libs/CocosDenshion/CocosDenshion.m delete mode 100644 Littlest/libs/CocosDenshion/SimpleAudioEngine.h delete mode 100644 Littlest/libs/CocosDenshion/SimpleAudioEngine.m delete mode 100644 Littlest/libs/FontLabel/FontLabel.h delete mode 100644 Littlest/libs/FontLabel/FontLabel.m delete mode 100644 Littlest/libs/FontLabel/FontLabelStringDrawing.h delete mode 100644 Littlest/libs/FontLabel/FontLabelStringDrawing.m delete mode 100644 Littlest/libs/FontLabel/FontManager.h delete mode 100644 Littlest/libs/FontLabel/FontManager.m delete mode 100644 Littlest/libs/FontLabel/ZAttributedString.h delete mode 100644 Littlest/libs/FontLabel/ZAttributedString.m delete mode 100644 Littlest/libs/FontLabel/ZAttributedStringPrivate.h delete mode 100644 Littlest/libs/FontLabel/ZFont.h delete mode 100644 Littlest/libs/FontLabel/ZFont.m delete mode 100644 Littlest/libs/TouchJSON/CDataScanner.h delete mode 100644 Littlest/libs/TouchJSON/CDataScanner.m delete mode 100644 Littlest/libs/TouchJSON/Extensions/CDataScanner_Extensions.h delete mode 100644 Littlest/libs/TouchJSON/Extensions/CDataScanner_Extensions.m delete mode 100644 Littlest/libs/TouchJSON/Extensions/NSCharacterSet_Extensions.h delete mode 100644 Littlest/libs/TouchJSON/Extensions/NSCharacterSet_Extensions.m delete mode 100644 Littlest/libs/TouchJSON/Extensions/NSDictionary_JSONExtensions.h delete mode 100644 Littlest/libs/TouchJSON/Extensions/NSDictionary_JSONExtensions.m delete mode 100644 Littlest/libs/TouchJSON/Extensions/NSScanner_Extensions.h delete mode 100644 Littlest/libs/TouchJSON/Extensions/NSScanner_Extensions.m delete mode 100644 Littlest/libs/TouchJSON/JSON/CJSONDeserializer.h delete mode 100644 Littlest/libs/TouchJSON/JSON/CJSONDeserializer.m delete mode 100644 Littlest/libs/TouchJSON/JSON/CJSONScanner.h delete mode 100644 Littlest/libs/TouchJSON/JSON/CJSONScanner.m delete mode 100644 Littlest/libs/TouchJSON/JSON/CJSONSerializer.h delete mode 100644 Littlest/libs/TouchJSON/JSON/CJSONSerializer.m delete mode 100644 Littlest/libs/cocos2d/CCAction.h delete mode 100644 Littlest/libs/cocos2d/CCAction.m delete mode 100644 Littlest/libs/cocos2d/CCActionCamera.h delete mode 100644 Littlest/libs/cocos2d/CCActionCamera.m delete mode 100644 Littlest/libs/cocos2d/CCActionEase.h delete mode 100644 Littlest/libs/cocos2d/CCActionEase.m delete mode 100644 Littlest/libs/cocos2d/CCActionGrid.h delete mode 100644 Littlest/libs/cocos2d/CCActionGrid.m delete mode 100644 Littlest/libs/cocos2d/CCActionGrid3D.h delete mode 100644 Littlest/libs/cocos2d/CCActionGrid3D.m delete mode 100644 Littlest/libs/cocos2d/CCActionInstant.h delete mode 100644 Littlest/libs/cocos2d/CCActionInstant.m delete mode 100644 Littlest/libs/cocos2d/CCActionInterval.h delete mode 100644 Littlest/libs/cocos2d/CCActionInterval.m delete mode 100644 Littlest/libs/cocos2d/CCActionManager.h delete mode 100644 Littlest/libs/cocos2d/CCActionManager.m delete mode 100644 Littlest/libs/cocos2d/CCActionPageTurn3D.h delete mode 100644 Littlest/libs/cocos2d/CCActionPageTurn3D.m delete mode 100644 Littlest/libs/cocos2d/CCActionProgressTimer.h delete mode 100644 Littlest/libs/cocos2d/CCActionProgressTimer.m delete mode 100644 Littlest/libs/cocos2d/CCActionTiledGrid.h delete mode 100644 Littlest/libs/cocos2d/CCActionTiledGrid.m delete mode 100644 Littlest/libs/cocos2d/CCActionTween.h delete mode 100644 Littlest/libs/cocos2d/CCActionTween.m delete mode 100644 Littlest/libs/cocos2d/CCAnimation.h delete mode 100644 Littlest/libs/cocos2d/CCAnimation.m delete mode 100644 Littlest/libs/cocos2d/CCAnimationCache.h delete mode 100644 Littlest/libs/cocos2d/CCAnimationCache.m delete mode 100644 Littlest/libs/cocos2d/CCAtlasNode.h delete mode 100644 Littlest/libs/cocos2d/CCAtlasNode.m delete mode 100644 Littlest/libs/cocos2d/CCBlockSupport.h delete mode 100644 Littlest/libs/cocos2d/CCBlockSupport.m delete mode 100644 Littlest/libs/cocos2d/CCCamera.h delete mode 100644 Littlest/libs/cocos2d/CCCamera.m delete mode 100644 Littlest/libs/cocos2d/CCConfiguration.h delete mode 100644 Littlest/libs/cocos2d/CCConfiguration.m delete mode 100644 Littlest/libs/cocos2d/CCDirector.h delete mode 100644 Littlest/libs/cocos2d/CCDirector.m delete mode 100644 Littlest/libs/cocos2d/CCDrawingPrimitives.h delete mode 100644 Littlest/libs/cocos2d/CCDrawingPrimitives.m delete mode 100644 Littlest/libs/cocos2d/CCGrabber.h delete mode 100644 Littlest/libs/cocos2d/CCGrabber.m delete mode 100644 Littlest/libs/cocos2d/CCGrid.h delete mode 100644 Littlest/libs/cocos2d/CCGrid.m delete mode 100644 Littlest/libs/cocos2d/CCLabelAtlas.h delete mode 100644 Littlest/libs/cocos2d/CCLabelAtlas.m delete mode 100644 Littlest/libs/cocos2d/CCLabelBMFont.h delete mode 100644 Littlest/libs/cocos2d/CCLabelBMFont.m delete mode 100644 Littlest/libs/cocos2d/CCLabelTTF.h delete mode 100644 Littlest/libs/cocos2d/CCLabelTTF.m delete mode 100644 Littlest/libs/cocos2d/CCLayer.h delete mode 100644 Littlest/libs/cocos2d/CCLayer.m delete mode 100644 Littlest/libs/cocos2d/CCMenu.h delete mode 100644 Littlest/libs/cocos2d/CCMenu.m delete mode 100644 Littlest/libs/cocos2d/CCMenuItem.h delete mode 100644 Littlest/libs/cocos2d/CCMenuItem.m delete mode 100644 Littlest/libs/cocos2d/CCMotionStreak.h delete mode 100644 Littlest/libs/cocos2d/CCMotionStreak.m delete mode 100644 Littlest/libs/cocos2d/CCNode.h delete mode 100644 Littlest/libs/cocos2d/CCNode.m delete mode 100644 Littlest/libs/cocos2d/CCParallaxNode.h delete mode 100644 Littlest/libs/cocos2d/CCParallaxNode.m delete mode 100644 Littlest/libs/cocos2d/CCParticleExamples.h delete mode 100644 Littlest/libs/cocos2d/CCParticleExamples.m delete mode 100644 Littlest/libs/cocos2d/CCParticleSystem.h delete mode 100644 Littlest/libs/cocos2d/CCParticleSystem.m delete mode 100644 Littlest/libs/cocos2d/CCParticleSystemPoint.h delete mode 100644 Littlest/libs/cocos2d/CCParticleSystemPoint.m delete mode 100644 Littlest/libs/cocos2d/CCParticleSystemQuad.h delete mode 100644 Littlest/libs/cocos2d/CCParticleSystemQuad.m delete mode 100644 Littlest/libs/cocos2d/CCProgressTimer.h delete mode 100644 Littlest/libs/cocos2d/CCProgressTimer.m delete mode 100644 Littlest/libs/cocos2d/CCProtocols.h delete mode 100644 Littlest/libs/cocos2d/CCRenderTexture.h delete mode 100644 Littlest/libs/cocos2d/CCRenderTexture.m delete mode 100644 Littlest/libs/cocos2d/CCRibbon.h delete mode 100644 Littlest/libs/cocos2d/CCRibbon.m delete mode 100644 Littlest/libs/cocos2d/CCScene.h delete mode 100644 Littlest/libs/cocos2d/CCScene.m delete mode 100644 Littlest/libs/cocos2d/CCScheduler.h delete mode 100644 Littlest/libs/cocos2d/CCScheduler.m delete mode 100644 Littlest/libs/cocos2d/CCSprite.h delete mode 100644 Littlest/libs/cocos2d/CCSprite.m delete mode 100644 Littlest/libs/cocos2d/CCSpriteBatchNode.h delete mode 100644 Littlest/libs/cocos2d/CCSpriteBatchNode.m delete mode 100644 Littlest/libs/cocos2d/CCSpriteFrame.h delete mode 100644 Littlest/libs/cocos2d/CCSpriteFrame.m delete mode 100644 Littlest/libs/cocos2d/CCSpriteFrameCache.h delete mode 100644 Littlest/libs/cocos2d/CCSpriteFrameCache.m delete mode 100644 Littlest/libs/cocos2d/CCTMXLayer.h delete mode 100644 Littlest/libs/cocos2d/CCTMXLayer.m delete mode 100644 Littlest/libs/cocos2d/CCTMXObjectGroup.h delete mode 100644 Littlest/libs/cocos2d/CCTMXObjectGroup.m delete mode 100644 Littlest/libs/cocos2d/CCTMXTiledMap.h delete mode 100644 Littlest/libs/cocos2d/CCTMXTiledMap.m delete mode 100644 Littlest/libs/cocos2d/CCTMXXMLParser.h delete mode 100644 Littlest/libs/cocos2d/CCTMXXMLParser.m delete mode 100644 Littlest/libs/cocos2d/CCTexture2D.h delete mode 100644 Littlest/libs/cocos2d/CCTexture2D.m delete mode 100644 Littlest/libs/cocos2d/CCTextureAtlas.h delete mode 100644 Littlest/libs/cocos2d/CCTextureAtlas.m delete mode 100644 Littlest/libs/cocos2d/CCTextureCache.h delete mode 100644 Littlest/libs/cocos2d/CCTextureCache.m delete mode 100644 Littlest/libs/cocos2d/CCTexturePVR.h delete mode 100644 Littlest/libs/cocos2d/CCTexturePVR.m delete mode 100644 Littlest/libs/cocos2d/CCTileMapAtlas.h delete mode 100644 Littlest/libs/cocos2d/CCTileMapAtlas.m delete mode 100644 Littlest/libs/cocos2d/CCTransition.h delete mode 100644 Littlest/libs/cocos2d/CCTransition.m delete mode 100644 Littlest/libs/cocos2d/CCTransitionPageTurn.h delete mode 100644 Littlest/libs/cocos2d/CCTransitionPageTurn.m delete mode 100644 Littlest/libs/cocos2d/CCTransitionRadial.h delete mode 100644 Littlest/libs/cocos2d/CCTransitionRadial.m delete mode 100644 Littlest/libs/cocos2d/Platforms/CCGL.h delete mode 100644 Littlest/libs/cocos2d/Platforms/CCNS.h delete mode 100644 Littlest/libs/cocos2d/Platforms/Mac/CCDirectorMac.h delete mode 100644 Littlest/libs/cocos2d/Platforms/Mac/CCDirectorMac.m delete mode 100644 Littlest/libs/cocos2d/Platforms/Mac/CCEventDispatcher.h delete mode 100644 Littlest/libs/cocos2d/Platforms/Mac/CCEventDispatcher.m delete mode 100644 Littlest/libs/cocos2d/Platforms/Mac/MacGLView.h delete mode 100644 Littlest/libs/cocos2d/Platforms/Mac/MacGLView.m delete mode 100644 Littlest/libs/cocos2d/Platforms/Mac/MacWindow.h delete mode 100644 Littlest/libs/cocos2d/Platforms/Mac/MacWindow.m delete mode 100644 Littlest/libs/cocos2d/Platforms/iOS/CCDirectorIOS.h delete mode 100644 Littlest/libs/cocos2d/Platforms/iOS/CCDirectorIOS.m delete mode 100644 Littlest/libs/cocos2d/Platforms/iOS/CCTouchDelegateProtocol.h delete mode 100644 Littlest/libs/cocos2d/Platforms/iOS/CCTouchDispatcher.h delete mode 100644 Littlest/libs/cocos2d/Platforms/iOS/CCTouchDispatcher.m delete mode 100644 Littlest/libs/cocos2d/Platforms/iOS/CCTouchHandler.h delete mode 100644 Littlest/libs/cocos2d/Platforms/iOS/CCTouchHandler.m delete mode 100644 Littlest/libs/cocos2d/Platforms/iOS/EAGLView.h delete mode 100644 Littlest/libs/cocos2d/Platforms/iOS/EAGLView.m delete mode 100644 Littlest/libs/cocos2d/Platforms/iOS/ES1Renderer.h delete mode 100644 Littlest/libs/cocos2d/Platforms/iOS/ES1Renderer.m delete mode 100644 Littlest/libs/cocos2d/Platforms/iOS/ESRenderer.h delete mode 100644 Littlest/libs/cocos2d/Platforms/iOS/glu.c delete mode 100644 Littlest/libs/cocos2d/Platforms/iOS/glu.h delete mode 100644 Littlest/libs/cocos2d/Support/CCArray.h delete mode 100644 Littlest/libs/cocos2d/Support/CCArray.m delete mode 100644 Littlest/libs/cocos2d/Support/CCFileUtils.h delete mode 100644 Littlest/libs/cocos2d/Support/CCFileUtils.m delete mode 100644 Littlest/libs/cocos2d/Support/CCProfiling.h delete mode 100644 Littlest/libs/cocos2d/Support/CCProfiling.m delete mode 100644 Littlest/libs/cocos2d/Support/CGPointExtension.h delete mode 100644 Littlest/libs/cocos2d/Support/CGPointExtension.m delete mode 100644 Littlest/libs/cocos2d/Support/OpenGL_Internal.h delete mode 100644 Littlest/libs/cocos2d/Support/TGAlib.h delete mode 100644 Littlest/libs/cocos2d/Support/TGAlib.m delete mode 100644 Littlest/libs/cocos2d/Support/TransformUtils.h delete mode 100644 Littlest/libs/cocos2d/Support/TransformUtils.m delete mode 100644 Littlest/libs/cocos2d/Support/ZipUtils.h delete mode 100644 Littlest/libs/cocos2d/Support/ZipUtils.m delete mode 100644 Littlest/libs/cocos2d/Support/base64.c delete mode 100644 Littlest/libs/cocos2d/Support/base64.h delete mode 100644 Littlest/libs/cocos2d/Support/ccCArray.h delete mode 100644 Littlest/libs/cocos2d/Support/ccUtils.c delete mode 100644 Littlest/libs/cocos2d/Support/ccUtils.h delete mode 100644 Littlest/libs/cocos2d/Support/uthash.h delete mode 100644 Littlest/libs/cocos2d/Support/utlist.h delete mode 100644 Littlest/libs/cocos2d/ccConfig.h delete mode 100644 Littlest/libs/cocos2d/ccMacros.h delete mode 100644 Littlest/libs/cocos2d/ccTypes.h delete mode 100644 Littlest/libs/cocos2d/cocos2d.h delete mode 100644 Littlest/libs/cocos2d/cocos2d.m delete mode 100644 Littlest/libs/cocoslive/CLScoreServerPost.h delete mode 100644 Littlest/libs/cocoslive/CLScoreServerPost.m delete mode 100644 Littlest/libs/cocoslive/CLScoreServerRequest.h delete mode 100644 Littlest/libs/cocoslive/CLScoreServerRequest.m delete mode 100644 Littlest/libs/cocoslive/cocoslive.h delete mode 100644 Littlest/libs/cocoslive/cocoslive.m delete mode 100644 Littlest/main.m diff --git a/Littlest.xcodeproj/project.pbxproj b/Littlest.xcodeproj/project.pbxproj deleted file mode 100644 index 93b507c..0000000 --- a/Littlest.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1464 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 4B8CBFB5135BFDF600B3E49F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B8CBFB4135BFDF600B3E49F /* QuartzCore.framework */; }; - 4B8CBFB7135BFDF600B3E49F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B8CBFB6135BFDF600B3E49F /* OpenGLES.framework */; }; - 4B8CBFB9135BFDF600B3E49F /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B8CBFB8135BFDF600B3E49F /* OpenAL.framework */; }; - 4B8CBFBB135BFDF600B3E49F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B8CBFBA135BFDF600B3E49F /* AudioToolbox.framework */; }; - 4B8CBFBD135BFDF600B3E49F /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B8CBFBC135BFDF600B3E49F /* AVFoundation.framework */; }; - 4B8CBFBF135BFDF600B3E49F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B8CBFBE135BFDF600B3E49F /* UIKit.framework */; }; - 4B8CBFC1135BFDF600B3E49F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B8CBFC0135BFDF600B3E49F /* Foundation.framework */; }; - 4B8CBFC3135BFDF600B3E49F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B8CBFC2135BFDF600B3E49F /* CoreGraphics.framework */; }; - 4B8CBFC7135BFDF600B3E49F /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B8CBFC6135BFDF600B3E49F /* Default.png */; }; - 4B8CBFC9135BFDF600B3E49F /* fps_images.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B8CBFC8135BFDF600B3E49F /* fps_images.png */; }; - 4B8CBFCB135BFDF600B3E49F /* Icon-72.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B8CBFCA135BFDF600B3E49F /* Icon-72.png */; }; - 4B8CBFCD135BFDF600B3E49F /* Icon-Small-50.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B8CBFCC135BFDF600B3E49F /* Icon-Small-50.png */; }; - 4B8CBFCF135BFDF600B3E49F /* Icon-Small.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B8CBFCE135BFDF600B3E49F /* Icon-Small.png */; }; - 4B8CBFD1135BFDF600B3E49F /* Icon-Small@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B8CBFD0135BFDF600B3E49F /* Icon-Small@2x.png */; }; - 4B8CBFD3135BFDF600B3E49F /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B8CBFD2135BFDF600B3E49F /* Icon.png */; }; - 4B8CBFD5135BFDF600B3E49F /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B8CBFD4135BFDF600B3E49F /* Icon@2x.png */; }; - 4B8CBFD8135BFDF600B3E49F /* iTunesArtwork in Resources */ = {isa = PBXBuildFile; fileRef = 4B8CBFD7135BFDF600B3E49F /* iTunesArtwork */; }; - 4B8CBFDC135BFDF600B3E49F /* CCAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CBFDB135BFDF600B3E49F /* CCAction.m */; }; - 4B8CBFDF135BFDF600B3E49F /* CCActionCamera.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CBFDE135BFDF600B3E49F /* CCActionCamera.m */; }; - 4B8CBFE2135BFDF600B3E49F /* CCActionEase.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CBFE1135BFDF600B3E49F /* CCActionEase.m */; }; - 4B8CBFE5135BFDF600B3E49F /* CCActionGrid.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CBFE4135BFDF600B3E49F /* CCActionGrid.m */; }; - 4B8CBFE8135BFDF600B3E49F /* CCActionGrid3D.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CBFE7135BFDF600B3E49F /* CCActionGrid3D.m */; }; - 4B8CBFEB135BFDF600B3E49F /* CCActionInstant.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CBFEA135BFDF600B3E49F /* CCActionInstant.m */; }; - 4B8CBFEE135BFDF600B3E49F /* CCActionInterval.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CBFED135BFDF600B3E49F /* CCActionInterval.m */; }; - 4B8CBFF1135BFDF600B3E49F /* CCActionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CBFF0135BFDF600B3E49F /* CCActionManager.m */; }; - 4B8CBFF4135BFDF600B3E49F /* CCActionPageTurn3D.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CBFF3135BFDF600B3E49F /* CCActionPageTurn3D.m */; }; - 4B8CBFF7135BFDF600B3E49F /* CCActionProgressTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CBFF6135BFDF600B3E49F /* CCActionProgressTimer.m */; }; - 4B8CBFFA135BFDF600B3E49F /* CCActionTiledGrid.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CBFF9135BFDF600B3E49F /* CCActionTiledGrid.m */; }; - 4B8CBFFD135BFDF700B3E49F /* CCActionTween.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CBFFC135BFDF700B3E49F /* CCActionTween.m */; }; - 4B8CC000135BFDF700B3E49F /* CCAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CBFFF135BFDF700B3E49F /* CCAnimation.m */; }; - 4B8CC003135BFDF700B3E49F /* CCAnimationCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC002135BFDF700B3E49F /* CCAnimationCache.m */; }; - 4B8CC006135BFDF700B3E49F /* CCAtlasNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC005135BFDF700B3E49F /* CCAtlasNode.m */; }; - 4B8CC009135BFDF700B3E49F /* CCBlockSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC008135BFDF700B3E49F /* CCBlockSupport.m */; }; - 4B8CC00C135BFDF700B3E49F /* CCCamera.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC00B135BFDF700B3E49F /* CCCamera.m */; }; - 4B8CC010135BFDF700B3E49F /* CCConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC00F135BFDF700B3E49F /* CCConfiguration.m */; }; - 4B8CC013135BFDF700B3E49F /* CCDirector.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC012135BFDF700B3E49F /* CCDirector.m */; }; - 4B8CC016135BFDF700B3E49F /* CCDrawingPrimitives.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC015135BFDF700B3E49F /* CCDrawingPrimitives.m */; }; - 4B8CC019135BFDF700B3E49F /* CCGrabber.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC018135BFDF700B3E49F /* CCGrabber.m */; }; - 4B8CC01C135BFDF700B3E49F /* CCGrid.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC01B135BFDF700B3E49F /* CCGrid.m */; }; - 4B8CC01F135BFDF700B3E49F /* CCLabelAtlas.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC01E135BFDF700B3E49F /* CCLabelAtlas.m */; }; - 4B8CC022135BFDF700B3E49F /* CCLabelBMFont.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC021135BFDF700B3E49F /* CCLabelBMFont.m */; }; - 4B8CC025135BFDF700B3E49F /* CCLabelTTF.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC024135BFDF700B3E49F /* CCLabelTTF.m */; }; - 4B8CC028135BFDF700B3E49F /* CCLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC027135BFDF700B3E49F /* CCLayer.m */; }; - 4B8CC02C135BFDF700B3E49F /* CCMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC02B135BFDF700B3E49F /* CCMenu.m */; }; - 4B8CC02F135BFDF700B3E49F /* CCMenuItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC02E135BFDF700B3E49F /* CCMenuItem.m */; }; - 4B8CC032135BFDF700B3E49F /* CCMotionStreak.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC031135BFDF700B3E49F /* CCMotionStreak.m */; }; - 4B8CC035135BFDF700B3E49F /* CCNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC034135BFDF700B3E49F /* CCNode.m */; }; - 4B8CC038135BFDF700B3E49F /* CCParallaxNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC037135BFDF700B3E49F /* CCParallaxNode.m */; }; - 4B8CC03B135BFDF700B3E49F /* CCParticleExamples.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC03A135BFDF700B3E49F /* CCParticleExamples.m */; }; - 4B8CC03E135BFDF700B3E49F /* CCParticleSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC03D135BFDF700B3E49F /* CCParticleSystem.m */; }; - 4B8CC041135BFDF700B3E49F /* CCParticleSystemPoint.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC040135BFDF700B3E49F /* CCParticleSystemPoint.m */; }; - 4B8CC044135BFDF700B3E49F /* CCParticleSystemQuad.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC043135BFDF700B3E49F /* CCParticleSystemQuad.m */; }; - 4B8CC047135BFDF700B3E49F /* CCProgressTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC046135BFDF700B3E49F /* CCProgressTimer.m */; }; - 4B8CC04B135BFDF700B3E49F /* CCRenderTexture.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC04A135BFDF700B3E49F /* CCRenderTexture.m */; }; - 4B8CC04E135BFDF700B3E49F /* CCRibbon.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC04D135BFDF700B3E49F /* CCRibbon.m */; }; - 4B8CC051135BFDF700B3E49F /* CCScene.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC050135BFDF700B3E49F /* CCScene.m */; }; - 4B8CC054135BFDF700B3E49F /* CCScheduler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC053135BFDF700B3E49F /* CCScheduler.m */; }; - 4B8CC057135BFDF700B3E49F /* CCSprite.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC056135BFDF700B3E49F /* CCSprite.m */; }; - 4B8CC05A135BFDF700B3E49F /* CCSpriteBatchNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC059135BFDF700B3E49F /* CCSpriteBatchNode.m */; }; - 4B8CC05D135BFDF700B3E49F /* CCSpriteFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC05C135BFDF700B3E49F /* CCSpriteFrame.m */; }; - 4B8CC060135BFDF700B3E49F /* CCSpriteFrameCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC05F135BFDF700B3E49F /* CCSpriteFrameCache.m */; }; - 4B8CC063135BFDF700B3E49F /* CCTexture2D.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC062135BFDF700B3E49F /* CCTexture2D.m */; }; - 4B8CC066135BFDF700B3E49F /* CCTextureAtlas.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC065135BFDF700B3E49F /* CCTextureAtlas.m */; }; - 4B8CC069135BFDF700B3E49F /* CCTextureCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC068135BFDF700B3E49F /* CCTextureCache.m */; }; - 4B8CC06C135BFDF700B3E49F /* CCTexturePVR.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC06B135BFDF700B3E49F /* CCTexturePVR.m */; }; - 4B8CC06F135BFDF700B3E49F /* CCTileMapAtlas.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC06E135BFDF700B3E49F /* CCTileMapAtlas.m */; }; - 4B8CC072135BFDF700B3E49F /* CCTMXLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC071135BFDF700B3E49F /* CCTMXLayer.m */; }; - 4B8CC075135BFDF700B3E49F /* CCTMXObjectGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC074135BFDF700B3E49F /* CCTMXObjectGroup.m */; }; - 4B8CC078135BFDF700B3E49F /* CCTMXTiledMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC077135BFDF700B3E49F /* CCTMXTiledMap.m */; }; - 4B8CC07B135BFDF700B3E49F /* CCTMXXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC07A135BFDF700B3E49F /* CCTMXXMLParser.m */; }; - 4B8CC07E135BFDF700B3E49F /* CCTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC07D135BFDF700B3E49F /* CCTransition.m */; }; - 4B8CC081135BFDF700B3E49F /* CCTransitionPageTurn.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC080135BFDF700B3E49F /* CCTransitionPageTurn.m */; }; - 4B8CC084135BFDF800B3E49F /* CCTransitionRadial.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC083135BFDF700B3E49F /* CCTransitionRadial.m */; }; - 4B8CC088135BFDF800B3E49F /* cocos2d.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC087135BFDF800B3E49F /* cocos2d.m */; }; - 4B8CC08D135BFDF800B3E49F /* CCDirectorIOS.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC08C135BFDF800B3E49F /* CCDirectorIOS.m */; }; - 4B8CC091135BFDF800B3E49F /* CCTouchDispatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC090135BFDF800B3E49F /* CCTouchDispatcher.m */; }; - 4B8CC094135BFDF800B3E49F /* CCTouchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC093135BFDF800B3E49F /* CCTouchHandler.m */; }; - 4B8CC097135BFDF800B3E49F /* EAGLView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC096135BFDF800B3E49F /* EAGLView.m */; }; - 4B8CC09A135BFDF800B3E49F /* ES1Renderer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC099135BFDF800B3E49F /* ES1Renderer.m */; }; - 4B8CC09D135BFDF800B3E49F /* glu.c in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC09C135BFDF800B3E49F /* glu.c */; }; - 4B8CC0A1135BFDF800B3E49F /* CCDirectorMac.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0A0135BFDF800B3E49F /* CCDirectorMac.m */; }; - 4B8CC0A4135BFDF800B3E49F /* CCEventDispatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0A3135BFDF800B3E49F /* CCEventDispatcher.m */; }; - 4B8CC0A7135BFDF800B3E49F /* MacGLView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0A6135BFDF800B3E49F /* MacGLView.m */; }; - 4B8CC0AA135BFDF800B3E49F /* MacWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0A9135BFDF800B3E49F /* MacWindow.m */; }; - 4B8CC0AC135BFDF800B3E49F /* base64.c in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0AB135BFDF800B3E49F /* base64.c */; }; - 4B8CC0B0135BFDF800B3E49F /* CCArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0AF135BFDF800B3E49F /* CCArray.m */; }; - 4B8CC0B4135BFDF800B3E49F /* CCFileUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0B3135BFDF800B3E49F /* CCFileUtils.m */; }; - 4B8CC0B7135BFDF800B3E49F /* CCProfiling.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0B6135BFDF800B3E49F /* CCProfiling.m */; }; - 4B8CC0B9135BFDF800B3E49F /* ccUtils.c in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0B8135BFDF800B3E49F /* ccUtils.c */; }; - 4B8CC0BD135BFDF800B3E49F /* CGPointExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0BC135BFDF800B3E49F /* CGPointExtension.m */; }; - 4B8CC0C1135BFDF800B3E49F /* TGAlib.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0C0135BFDF800B3E49F /* TGAlib.m */; }; - 4B8CC0C4135BFDF800B3E49F /* TransformUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0C3135BFDF800B3E49F /* TransformUtils.m */; }; - 4B8CC0C9135BFDF800B3E49F /* ZipUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0C8135BFDF800B3E49F /* ZipUtils.m */; }; - 4B8CC0CD135BFDF800B3E49F /* CDAudioManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0CC135BFDF800B3E49F /* CDAudioManager.m */; }; - 4B8CC0D1135BFDF800B3E49F /* CDOpenALSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0D0135BFDF800B3E49F /* CDOpenALSupport.m */; }; - 4B8CC0D4135BFDF800B3E49F /* CocosDenshion.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0D3135BFDF800B3E49F /* CocosDenshion.m */; }; - 4B8CC0D7135BFDF800B3E49F /* SimpleAudioEngine.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0D6135BFDF800B3E49F /* SimpleAudioEngine.m */; }; - 4B8CC0DB135BFDF800B3E49F /* CLScoreServerPost.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0DA135BFDF800B3E49F /* CLScoreServerPost.m */; }; - 4B8CC0DE135BFDF800B3E49F /* CLScoreServerRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0DD135BFDF800B3E49F /* CLScoreServerRequest.m */; }; - 4B8CC0E1135BFDF800B3E49F /* cocoslive.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0E0135BFDF800B3E49F /* cocoslive.m */; }; - 4B8CC0E5135BFDF800B3E49F /* FontLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0E4135BFDF800B3E49F /* FontLabel.m */; }; - 4B8CC0E8135BFDF800B3E49F /* FontLabelStringDrawing.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0E7135BFDF800B3E49F /* FontLabelStringDrawing.m */; }; - 4B8CC0EB135BFDF800B3E49F /* FontManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0EA135BFDF800B3E49F /* FontManager.m */; }; - 4B8CC0EE135BFDF800B3E49F /* ZAttributedString.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0ED135BFDF800B3E49F /* ZAttributedString.m */; }; - 4B8CC0F2135BFDF800B3E49F /* ZFont.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0F1135BFDF800B3E49F /* ZFont.m */; }; - 4B8CC0F6135BFDF800B3E49F /* CDataScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0F5135BFDF800B3E49F /* CDataScanner.m */; }; - 4B8CC0F9135BFDF800B3E49F /* CDataScanner_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0F8135BFDF800B3E49F /* CDataScanner_Extensions.m */; }; - 4B8CC0FC135BFDF800B3E49F /* NSCharacterSet_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0FB135BFDF800B3E49F /* NSCharacterSet_Extensions.m */; }; - 4B8CC0FF135BFDF800B3E49F /* NSDictionary_JSONExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC0FE135BFDF800B3E49F /* NSDictionary_JSONExtensions.m */; }; - 4B8CC102135BFDF800B3E49F /* NSScanner_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC101135BFDF800B3E49F /* NSScanner_Extensions.m */; }; - 4B8CC105135BFDF800B3E49F /* CJSONDeserializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC104135BFDF800B3E49F /* CJSONDeserializer.m */; }; - 4B8CC108135BFDF800B3E49F /* CJSONScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC107135BFDF800B3E49F /* CJSONScanner.m */; }; - 4B8CC10B135BFDF800B3E49F /* CJSONSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC10A135BFDF800B3E49F /* CJSONSerializer.m */; }; - 4B8CC10F135BFDF800B3E49F /* b2BroadPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC10E135BFDF800B3E49F /* b2BroadPhase.cpp */; }; - 4B8CC112135BFDF800B3E49F /* b2CollideCircle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC111135BFDF800B3E49F /* b2CollideCircle.cpp */; }; - 4B8CC114135BFDF900B3E49F /* b2CollidePolygon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC113135BFDF900B3E49F /* b2CollidePolygon.cpp */; }; - 4B8CC116135BFDF900B3E49F /* b2Collision.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC115135BFDF900B3E49F /* b2Collision.cpp */; }; - 4B8CC119135BFDF900B3E49F /* b2Distance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC118135BFDF900B3E49F /* b2Distance.cpp */; }; - 4B8CC11C135BFDF900B3E49F /* b2DynamicTree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC11B135BFDF900B3E49F /* b2DynamicTree.cpp */; }; - 4B8CC11F135BFDF900B3E49F /* b2TimeOfImpact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC11E135BFDF900B3E49F /* b2TimeOfImpact.cpp */; }; - 4B8CC122135BFDF900B3E49F /* b2CircleShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC121135BFDF900B3E49F /* b2CircleShape.cpp */; }; - 4B8CC125135BFDF900B3E49F /* b2PolygonShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC124135BFDF900B3E49F /* b2PolygonShape.cpp */; }; - 4B8CC129135BFDF900B3E49F /* b2BlockAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC128135BFDF900B3E49F /* b2BlockAllocator.cpp */; }; - 4B8CC12C135BFDF900B3E49F /* b2Math.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC12B135BFDF900B3E49F /* b2Math.cpp */; }; - 4B8CC12F135BFDF900B3E49F /* b2Settings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC12E135BFDF900B3E49F /* b2Settings.cpp */; }; - 4B8CC132135BFDF900B3E49F /* b2StackAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC131135BFDF900B3E49F /* b2StackAllocator.cpp */; }; - 4B8CC135135BFDF900B3E49F /* b2Body.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC134135BFDF900B3E49F /* b2Body.cpp */; }; - 4B8CC138135BFDF900B3E49F /* b2ContactManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC137135BFDF900B3E49F /* b2ContactManager.cpp */; }; - 4B8CC13B135BFDF900B3E49F /* b2Fixture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC13A135BFDF900B3E49F /* b2Fixture.cpp */; }; - 4B8CC13E135BFDF900B3E49F /* b2Island.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC13D135BFDF900B3E49F /* b2Island.cpp */; }; - 4B8CC142135BFDF900B3E49F /* b2World.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC141135BFDF900B3E49F /* b2World.cpp */; }; - 4B8CC145135BFDF900B3E49F /* b2WorldCallbacks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC144135BFDF900B3E49F /* b2WorldCallbacks.cpp */; }; - 4B8CC148135BFDF900B3E49F /* b2CircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC147135BFDF900B3E49F /* b2CircleContact.cpp */; }; - 4B8CC14B135BFDF900B3E49F /* b2Contact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC14A135BFDF900B3E49F /* b2Contact.cpp */; }; - 4B8CC14E135BFDF900B3E49F /* b2ContactSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC14D135BFDF900B3E49F /* b2ContactSolver.cpp */; }; - 4B8CC152135BFDF900B3E49F /* b2PolygonAndCircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC151135BFDF900B3E49F /* b2PolygonAndCircleContact.cpp */; }; - 4B8CC155135BFDF900B3E49F /* b2PolygonContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC154135BFDF900B3E49F /* b2PolygonContact.cpp */; }; - 4B8CC158135BFDF900B3E49F /* b2TOISolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC157135BFDF900B3E49F /* b2TOISolver.cpp */; }; - 4B8CC15B135BFDF900B3E49F /* b2DistanceJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC15A135BFDF900B3E49F /* b2DistanceJoint.cpp */; }; - 4B8CC15E135BFDF900B3E49F /* b2FrictionJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC15D135BFDF900B3E49F /* b2FrictionJoint.cpp */; }; - 4B8CC161135BFDF900B3E49F /* b2GearJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC160135BFDF900B3E49F /* b2GearJoint.cpp */; }; - 4B8CC164135BFDF900B3E49F /* b2Joint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC163135BFDF900B3E49F /* b2Joint.cpp */; }; - 4B8CC167135BFDF900B3E49F /* b2LineJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC166135BFDF900B3E49F /* b2LineJoint.cpp */; }; - 4B8CC16A135BFDF900B3E49F /* b2MouseJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC169135BFDF900B3E49F /* b2MouseJoint.cpp */; }; - 4B8CC16D135BFDF900B3E49F /* b2PrismaticJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC16C135BFDF900B3E49F /* b2PrismaticJoint.cpp */; }; - 4B8CC170135BFDF900B3E49F /* b2PulleyJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC16F135BFDF900B3E49F /* b2PulleyJoint.cpp */; }; - 4B8CC173135BFDF900B3E49F /* b2RevoluteJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC172135BFDF900B3E49F /* b2RevoluteJoint.cpp */; }; - 4B8CC176135BFDF900B3E49F /* b2WeldJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC175135BFDF900B3E49F /* b2WeldJoint.cpp */; }; - 4B8CC17B135BFDF900B3E49F /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC17A135BFDF900B3E49F /* main.m */; }; - 4B8CC17E135BFDF900B3E49F /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC17D135BFDF900B3E49F /* AppDelegate.mm */; }; - 4B8CC184135BFDF900B3E49F /* HelloWorldLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC183135BFDF900B3E49F /* HelloWorldLayer.mm */; }; - 4B8CC18A135BFDF900B3E49F /* blocks.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B8CC189135BFDF900B3E49F /* blocks.png */; }; - 4B8CC1C3135BFEDE00B3E49F /* LocklessRingBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC19C135BFEDE00B3E49F /* LocklessRingBuffer.cpp */; }; - 4B8CC1C4135BFEDE00B3E49F /* BasicPrimitives.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC1A1135BFEDE00B3E49F /* BasicPrimitives.mm */; }; - 4B8CC1C5135BFEDE00B3E49F /* OpenGLServices.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC1A3135BFEDE00B3E49F /* OpenGLServices.mm */; }; - 4B8CC1C6135BFEDE00B3E49F /* RenderTarget.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC1A5135BFEDE00B3E49F /* RenderTarget.mm */; }; - 4B8CC1C7135BFEDE00B3E49F /* MemoryBitset.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC1B1135BFEDE00B3E49F /* MemoryBitset.cpp */; }; - 4B8CC1C8135BFEDE00B3E49F /* MemoryHeap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC1B3135BFEDE00B3E49F /* MemoryHeap.cpp */; }; - 4B8CC1C9135BFEDE00B3E49F /* GLView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC1B8135BFEDE00B3E49F /* GLView.m */; }; - 4B8CC1CA135BFEDE00B3E49F /* LittlestAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC1BA135BFEDE00B3E49F /* LittlestAppDelegate.m */; }; - 4B8CC1CB135BFEDE00B3E49F /* LittlestViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8CC1BC135BFEDE00B3E49F /* LittlestViewController.m */; }; - 4BE72E371367CCB600E8F668 /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BE72E361367CCB600E8F668 /* RootViewController.m */; }; - 4BE72E3D1367CE5100E8F668 /* GLES-Render.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BE72E3C1367CE5100E8F668 /* GLES-Render.mm */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 4B8CBFB0135BFDF600B3E49F /* Littlest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Littlest.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 4B8CBFB4135BFDF600B3E49F /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; - 4B8CBFB6135BFDF600B3E49F /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; - 4B8CBFB8135BFDF600B3E49F /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; }; - 4B8CBFBA135BFDF600B3E49F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; - 4B8CBFBC135BFDF600B3E49F /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; - 4B8CBFBE135BFDF600B3E49F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 4B8CBFC0135BFDF600B3E49F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 4B8CBFC2135BFDF600B3E49F /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 4B8CBFC6135BFDF600B3E49F /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Default.png; path = Resources/Default.png; sourceTree = ""; }; - 4B8CBFC8135BFDF600B3E49F /* fps_images.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = fps_images.png; path = Resources/fps_images.png; sourceTree = ""; }; - 4B8CBFCA135BFDF600B3E49F /* Icon-72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-72.png"; path = "Resources/Icon-72.png"; sourceTree = ""; }; - 4B8CBFCC135BFDF600B3E49F /* Icon-Small-50.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-Small-50.png"; path = "Resources/Icon-Small-50.png"; sourceTree = ""; }; - 4B8CBFCE135BFDF600B3E49F /* Icon-Small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-Small.png"; path = "Resources/Icon-Small.png"; sourceTree = ""; }; - 4B8CBFD0135BFDF600B3E49F /* Icon-Small@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-Small@2x.png"; path = "Resources/Icon-Small@2x.png"; sourceTree = ""; }; - 4B8CBFD2135BFDF600B3E49F /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Icon.png; path = Resources/Icon.png; sourceTree = ""; }; - 4B8CBFD4135BFDF600B3E49F /* Icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon@2x.png"; path = "Resources/Icon@2x.png"; sourceTree = ""; }; - 4B8CBFD6135BFDF600B3E49F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Resources/Info.plist; sourceTree = ""; }; - 4B8CBFD7135BFDF600B3E49F /* iTunesArtwork */ = {isa = PBXFileReference; lastKnownFileType = file; name = iTunesArtwork; path = Resources/iTunesArtwork; sourceTree = ""; }; - 4B8CBFDA135BFDF600B3E49F /* CCAction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCAction.h; path = libs/cocos2d/CCAction.h; sourceTree = ""; }; - 4B8CBFDB135BFDF600B3E49F /* CCAction.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCAction.m; path = libs/cocos2d/CCAction.m; sourceTree = ""; }; - 4B8CBFDD135BFDF600B3E49F /* CCActionCamera.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCActionCamera.h; path = libs/cocos2d/CCActionCamera.h; sourceTree = ""; }; - 4B8CBFDE135BFDF600B3E49F /* CCActionCamera.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCActionCamera.m; path = libs/cocos2d/CCActionCamera.m; sourceTree = ""; }; - 4B8CBFE0135BFDF600B3E49F /* CCActionEase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCActionEase.h; path = libs/cocos2d/CCActionEase.h; sourceTree = ""; }; - 4B8CBFE1135BFDF600B3E49F /* CCActionEase.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCActionEase.m; path = libs/cocos2d/CCActionEase.m; sourceTree = ""; }; - 4B8CBFE3135BFDF600B3E49F /* CCActionGrid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCActionGrid.h; path = libs/cocos2d/CCActionGrid.h; sourceTree = ""; }; - 4B8CBFE4135BFDF600B3E49F /* CCActionGrid.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCActionGrid.m; path = libs/cocos2d/CCActionGrid.m; sourceTree = ""; }; - 4B8CBFE6135BFDF600B3E49F /* CCActionGrid3D.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCActionGrid3D.h; path = libs/cocos2d/CCActionGrid3D.h; sourceTree = ""; }; - 4B8CBFE7135BFDF600B3E49F /* CCActionGrid3D.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCActionGrid3D.m; path = libs/cocos2d/CCActionGrid3D.m; sourceTree = ""; }; - 4B8CBFE9135BFDF600B3E49F /* CCActionInstant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCActionInstant.h; path = libs/cocos2d/CCActionInstant.h; sourceTree = ""; }; - 4B8CBFEA135BFDF600B3E49F /* CCActionInstant.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCActionInstant.m; path = libs/cocos2d/CCActionInstant.m; sourceTree = ""; }; - 4B8CBFEC135BFDF600B3E49F /* CCActionInterval.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCActionInterval.h; path = libs/cocos2d/CCActionInterval.h; sourceTree = ""; }; - 4B8CBFED135BFDF600B3E49F /* CCActionInterval.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCActionInterval.m; path = libs/cocos2d/CCActionInterval.m; sourceTree = ""; }; - 4B8CBFEF135BFDF600B3E49F /* CCActionManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCActionManager.h; path = libs/cocos2d/CCActionManager.h; sourceTree = ""; }; - 4B8CBFF0135BFDF600B3E49F /* CCActionManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCActionManager.m; path = libs/cocos2d/CCActionManager.m; sourceTree = ""; }; - 4B8CBFF2135BFDF600B3E49F /* CCActionPageTurn3D.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCActionPageTurn3D.h; path = libs/cocos2d/CCActionPageTurn3D.h; sourceTree = ""; }; - 4B8CBFF3135BFDF600B3E49F /* CCActionPageTurn3D.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCActionPageTurn3D.m; path = libs/cocos2d/CCActionPageTurn3D.m; sourceTree = ""; }; - 4B8CBFF5135BFDF600B3E49F /* CCActionProgressTimer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCActionProgressTimer.h; path = libs/cocos2d/CCActionProgressTimer.h; sourceTree = ""; }; - 4B8CBFF6135BFDF600B3E49F /* CCActionProgressTimer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCActionProgressTimer.m; path = libs/cocos2d/CCActionProgressTimer.m; sourceTree = ""; }; - 4B8CBFF8135BFDF600B3E49F /* CCActionTiledGrid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCActionTiledGrid.h; path = libs/cocos2d/CCActionTiledGrid.h; sourceTree = ""; }; - 4B8CBFF9135BFDF600B3E49F /* CCActionTiledGrid.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCActionTiledGrid.m; path = libs/cocos2d/CCActionTiledGrid.m; sourceTree = ""; }; - 4B8CBFFB135BFDF600B3E49F /* CCActionTween.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCActionTween.h; path = libs/cocos2d/CCActionTween.h; sourceTree = ""; }; - 4B8CBFFC135BFDF700B3E49F /* CCActionTween.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCActionTween.m; path = libs/cocos2d/CCActionTween.m; sourceTree = ""; }; - 4B8CBFFE135BFDF700B3E49F /* CCAnimation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCAnimation.h; path = libs/cocos2d/CCAnimation.h; sourceTree = ""; }; - 4B8CBFFF135BFDF700B3E49F /* CCAnimation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCAnimation.m; path = libs/cocos2d/CCAnimation.m; sourceTree = ""; }; - 4B8CC001135BFDF700B3E49F /* CCAnimationCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCAnimationCache.h; path = libs/cocos2d/CCAnimationCache.h; sourceTree = ""; }; - 4B8CC002135BFDF700B3E49F /* CCAnimationCache.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCAnimationCache.m; path = libs/cocos2d/CCAnimationCache.m; sourceTree = ""; }; - 4B8CC004135BFDF700B3E49F /* CCAtlasNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCAtlasNode.h; path = libs/cocos2d/CCAtlasNode.h; sourceTree = ""; }; - 4B8CC005135BFDF700B3E49F /* CCAtlasNode.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCAtlasNode.m; path = libs/cocos2d/CCAtlasNode.m; sourceTree = ""; }; - 4B8CC007135BFDF700B3E49F /* CCBlockSupport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCBlockSupport.h; path = libs/cocos2d/CCBlockSupport.h; sourceTree = ""; }; - 4B8CC008135BFDF700B3E49F /* CCBlockSupport.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCBlockSupport.m; path = libs/cocos2d/CCBlockSupport.m; sourceTree = ""; }; - 4B8CC00A135BFDF700B3E49F /* CCCamera.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCCamera.h; path = libs/cocos2d/CCCamera.h; sourceTree = ""; }; - 4B8CC00B135BFDF700B3E49F /* CCCamera.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCCamera.m; path = libs/cocos2d/CCCamera.m; sourceTree = ""; }; - 4B8CC00D135BFDF700B3E49F /* ccConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ccConfig.h; path = libs/cocos2d/ccConfig.h; sourceTree = ""; }; - 4B8CC00E135BFDF700B3E49F /* CCConfiguration.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCConfiguration.h; path = libs/cocos2d/CCConfiguration.h; sourceTree = ""; }; - 4B8CC00F135BFDF700B3E49F /* CCConfiguration.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCConfiguration.m; path = libs/cocos2d/CCConfiguration.m; sourceTree = ""; }; - 4B8CC011135BFDF700B3E49F /* CCDirector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCDirector.h; path = libs/cocos2d/CCDirector.h; sourceTree = ""; }; - 4B8CC012135BFDF700B3E49F /* CCDirector.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCDirector.m; path = libs/cocos2d/CCDirector.m; sourceTree = ""; }; - 4B8CC014135BFDF700B3E49F /* CCDrawingPrimitives.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCDrawingPrimitives.h; path = libs/cocos2d/CCDrawingPrimitives.h; sourceTree = ""; }; - 4B8CC015135BFDF700B3E49F /* CCDrawingPrimitives.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCDrawingPrimitives.m; path = libs/cocos2d/CCDrawingPrimitives.m; sourceTree = ""; }; - 4B8CC017135BFDF700B3E49F /* CCGrabber.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCGrabber.h; path = libs/cocos2d/CCGrabber.h; sourceTree = ""; }; - 4B8CC018135BFDF700B3E49F /* CCGrabber.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCGrabber.m; path = libs/cocos2d/CCGrabber.m; sourceTree = ""; }; - 4B8CC01A135BFDF700B3E49F /* CCGrid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCGrid.h; path = libs/cocos2d/CCGrid.h; sourceTree = ""; }; - 4B8CC01B135BFDF700B3E49F /* CCGrid.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCGrid.m; path = libs/cocos2d/CCGrid.m; sourceTree = ""; }; - 4B8CC01D135BFDF700B3E49F /* CCLabelAtlas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCLabelAtlas.h; path = libs/cocos2d/CCLabelAtlas.h; sourceTree = ""; }; - 4B8CC01E135BFDF700B3E49F /* CCLabelAtlas.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCLabelAtlas.m; path = libs/cocos2d/CCLabelAtlas.m; sourceTree = ""; }; - 4B8CC020135BFDF700B3E49F /* CCLabelBMFont.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCLabelBMFont.h; path = libs/cocos2d/CCLabelBMFont.h; sourceTree = ""; }; - 4B8CC021135BFDF700B3E49F /* CCLabelBMFont.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCLabelBMFont.m; path = libs/cocos2d/CCLabelBMFont.m; sourceTree = ""; }; - 4B8CC023135BFDF700B3E49F /* CCLabelTTF.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCLabelTTF.h; path = libs/cocos2d/CCLabelTTF.h; sourceTree = ""; }; - 4B8CC024135BFDF700B3E49F /* CCLabelTTF.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCLabelTTF.m; path = libs/cocos2d/CCLabelTTF.m; sourceTree = ""; }; - 4B8CC026135BFDF700B3E49F /* CCLayer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCLayer.h; path = libs/cocos2d/CCLayer.h; sourceTree = ""; }; - 4B8CC027135BFDF700B3E49F /* CCLayer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCLayer.m; path = libs/cocos2d/CCLayer.m; sourceTree = ""; }; - 4B8CC029135BFDF700B3E49F /* ccMacros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ccMacros.h; path = libs/cocos2d/ccMacros.h; sourceTree = ""; }; - 4B8CC02A135BFDF700B3E49F /* CCMenu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCMenu.h; path = libs/cocos2d/CCMenu.h; sourceTree = ""; }; - 4B8CC02B135BFDF700B3E49F /* CCMenu.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCMenu.m; path = libs/cocos2d/CCMenu.m; sourceTree = ""; }; - 4B8CC02D135BFDF700B3E49F /* CCMenuItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCMenuItem.h; path = libs/cocos2d/CCMenuItem.h; sourceTree = ""; }; - 4B8CC02E135BFDF700B3E49F /* CCMenuItem.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCMenuItem.m; path = libs/cocos2d/CCMenuItem.m; sourceTree = ""; }; - 4B8CC030135BFDF700B3E49F /* CCMotionStreak.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCMotionStreak.h; path = libs/cocos2d/CCMotionStreak.h; sourceTree = ""; }; - 4B8CC031135BFDF700B3E49F /* CCMotionStreak.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCMotionStreak.m; path = libs/cocos2d/CCMotionStreak.m; sourceTree = ""; }; - 4B8CC033135BFDF700B3E49F /* CCNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCNode.h; path = libs/cocos2d/CCNode.h; sourceTree = ""; }; - 4B8CC034135BFDF700B3E49F /* CCNode.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCNode.m; path = libs/cocos2d/CCNode.m; sourceTree = ""; }; - 4B8CC036135BFDF700B3E49F /* CCParallaxNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCParallaxNode.h; path = libs/cocos2d/CCParallaxNode.h; sourceTree = ""; }; - 4B8CC037135BFDF700B3E49F /* CCParallaxNode.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCParallaxNode.m; path = libs/cocos2d/CCParallaxNode.m; sourceTree = ""; }; - 4B8CC039135BFDF700B3E49F /* CCParticleExamples.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCParticleExamples.h; path = libs/cocos2d/CCParticleExamples.h; sourceTree = ""; }; - 4B8CC03A135BFDF700B3E49F /* CCParticleExamples.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCParticleExamples.m; path = libs/cocos2d/CCParticleExamples.m; sourceTree = ""; }; - 4B8CC03C135BFDF700B3E49F /* CCParticleSystem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCParticleSystem.h; path = libs/cocos2d/CCParticleSystem.h; sourceTree = ""; }; - 4B8CC03D135BFDF700B3E49F /* CCParticleSystem.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCParticleSystem.m; path = libs/cocos2d/CCParticleSystem.m; sourceTree = ""; }; - 4B8CC03F135BFDF700B3E49F /* CCParticleSystemPoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCParticleSystemPoint.h; path = libs/cocos2d/CCParticleSystemPoint.h; sourceTree = ""; }; - 4B8CC040135BFDF700B3E49F /* CCParticleSystemPoint.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCParticleSystemPoint.m; path = libs/cocos2d/CCParticleSystemPoint.m; sourceTree = ""; }; - 4B8CC042135BFDF700B3E49F /* CCParticleSystemQuad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCParticleSystemQuad.h; path = libs/cocos2d/CCParticleSystemQuad.h; sourceTree = ""; }; - 4B8CC043135BFDF700B3E49F /* CCParticleSystemQuad.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCParticleSystemQuad.m; path = libs/cocos2d/CCParticleSystemQuad.m; sourceTree = ""; }; - 4B8CC045135BFDF700B3E49F /* CCProgressTimer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCProgressTimer.h; path = libs/cocos2d/CCProgressTimer.h; sourceTree = ""; }; - 4B8CC046135BFDF700B3E49F /* CCProgressTimer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCProgressTimer.m; path = libs/cocos2d/CCProgressTimer.m; sourceTree = ""; }; - 4B8CC048135BFDF700B3E49F /* CCProtocols.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCProtocols.h; path = libs/cocos2d/CCProtocols.h; sourceTree = ""; }; - 4B8CC049135BFDF700B3E49F /* CCRenderTexture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCRenderTexture.h; path = libs/cocos2d/CCRenderTexture.h; sourceTree = ""; }; - 4B8CC04A135BFDF700B3E49F /* CCRenderTexture.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCRenderTexture.m; path = libs/cocos2d/CCRenderTexture.m; sourceTree = ""; }; - 4B8CC04C135BFDF700B3E49F /* CCRibbon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCRibbon.h; path = libs/cocos2d/CCRibbon.h; sourceTree = ""; }; - 4B8CC04D135BFDF700B3E49F /* CCRibbon.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCRibbon.m; path = libs/cocos2d/CCRibbon.m; sourceTree = ""; }; - 4B8CC04F135BFDF700B3E49F /* CCScene.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCScene.h; path = libs/cocos2d/CCScene.h; sourceTree = ""; }; - 4B8CC050135BFDF700B3E49F /* CCScene.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCScene.m; path = libs/cocos2d/CCScene.m; sourceTree = ""; }; - 4B8CC052135BFDF700B3E49F /* CCScheduler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCScheduler.h; path = libs/cocos2d/CCScheduler.h; sourceTree = ""; }; - 4B8CC053135BFDF700B3E49F /* CCScheduler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCScheduler.m; path = libs/cocos2d/CCScheduler.m; sourceTree = ""; }; - 4B8CC055135BFDF700B3E49F /* CCSprite.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCSprite.h; path = libs/cocos2d/CCSprite.h; sourceTree = ""; }; - 4B8CC056135BFDF700B3E49F /* CCSprite.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCSprite.m; path = libs/cocos2d/CCSprite.m; sourceTree = ""; }; - 4B8CC058135BFDF700B3E49F /* CCSpriteBatchNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCSpriteBatchNode.h; path = libs/cocos2d/CCSpriteBatchNode.h; sourceTree = ""; }; - 4B8CC059135BFDF700B3E49F /* CCSpriteBatchNode.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCSpriteBatchNode.m; path = libs/cocos2d/CCSpriteBatchNode.m; sourceTree = ""; }; - 4B8CC05B135BFDF700B3E49F /* CCSpriteFrame.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCSpriteFrame.h; path = libs/cocos2d/CCSpriteFrame.h; sourceTree = ""; }; - 4B8CC05C135BFDF700B3E49F /* CCSpriteFrame.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCSpriteFrame.m; path = libs/cocos2d/CCSpriteFrame.m; sourceTree = ""; }; - 4B8CC05E135BFDF700B3E49F /* CCSpriteFrameCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCSpriteFrameCache.h; path = libs/cocos2d/CCSpriteFrameCache.h; sourceTree = ""; }; - 4B8CC05F135BFDF700B3E49F /* CCSpriteFrameCache.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCSpriteFrameCache.m; path = libs/cocos2d/CCSpriteFrameCache.m; sourceTree = ""; }; - 4B8CC061135BFDF700B3E49F /* CCTexture2D.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCTexture2D.h; path = libs/cocos2d/CCTexture2D.h; sourceTree = ""; }; - 4B8CC062135BFDF700B3E49F /* CCTexture2D.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCTexture2D.m; path = libs/cocos2d/CCTexture2D.m; sourceTree = ""; }; - 4B8CC064135BFDF700B3E49F /* CCTextureAtlas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCTextureAtlas.h; path = libs/cocos2d/CCTextureAtlas.h; sourceTree = ""; }; - 4B8CC065135BFDF700B3E49F /* CCTextureAtlas.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCTextureAtlas.m; path = libs/cocos2d/CCTextureAtlas.m; sourceTree = ""; }; - 4B8CC067135BFDF700B3E49F /* CCTextureCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCTextureCache.h; path = libs/cocos2d/CCTextureCache.h; sourceTree = ""; }; - 4B8CC068135BFDF700B3E49F /* CCTextureCache.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCTextureCache.m; path = libs/cocos2d/CCTextureCache.m; sourceTree = ""; }; - 4B8CC06A135BFDF700B3E49F /* CCTexturePVR.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCTexturePVR.h; path = libs/cocos2d/CCTexturePVR.h; sourceTree = ""; }; - 4B8CC06B135BFDF700B3E49F /* CCTexturePVR.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCTexturePVR.m; path = libs/cocos2d/CCTexturePVR.m; sourceTree = ""; }; - 4B8CC06D135BFDF700B3E49F /* CCTileMapAtlas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCTileMapAtlas.h; path = libs/cocos2d/CCTileMapAtlas.h; sourceTree = ""; }; - 4B8CC06E135BFDF700B3E49F /* CCTileMapAtlas.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCTileMapAtlas.m; path = libs/cocos2d/CCTileMapAtlas.m; sourceTree = ""; }; - 4B8CC070135BFDF700B3E49F /* CCTMXLayer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCTMXLayer.h; path = libs/cocos2d/CCTMXLayer.h; sourceTree = ""; }; - 4B8CC071135BFDF700B3E49F /* CCTMXLayer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCTMXLayer.m; path = libs/cocos2d/CCTMXLayer.m; sourceTree = ""; }; - 4B8CC073135BFDF700B3E49F /* CCTMXObjectGroup.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCTMXObjectGroup.h; path = libs/cocos2d/CCTMXObjectGroup.h; sourceTree = ""; }; - 4B8CC074135BFDF700B3E49F /* CCTMXObjectGroup.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCTMXObjectGroup.m; path = libs/cocos2d/CCTMXObjectGroup.m; sourceTree = ""; }; - 4B8CC076135BFDF700B3E49F /* CCTMXTiledMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCTMXTiledMap.h; path = libs/cocos2d/CCTMXTiledMap.h; sourceTree = ""; }; - 4B8CC077135BFDF700B3E49F /* CCTMXTiledMap.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCTMXTiledMap.m; path = libs/cocos2d/CCTMXTiledMap.m; sourceTree = ""; }; - 4B8CC079135BFDF700B3E49F /* CCTMXXMLParser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCTMXXMLParser.h; path = libs/cocos2d/CCTMXXMLParser.h; sourceTree = ""; }; - 4B8CC07A135BFDF700B3E49F /* CCTMXXMLParser.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCTMXXMLParser.m; path = libs/cocos2d/CCTMXXMLParser.m; sourceTree = ""; }; - 4B8CC07C135BFDF700B3E49F /* CCTransition.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCTransition.h; path = libs/cocos2d/CCTransition.h; sourceTree = ""; }; - 4B8CC07D135BFDF700B3E49F /* CCTransition.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCTransition.m; path = libs/cocos2d/CCTransition.m; sourceTree = ""; }; - 4B8CC07F135BFDF700B3E49F /* CCTransitionPageTurn.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCTransitionPageTurn.h; path = libs/cocos2d/CCTransitionPageTurn.h; sourceTree = ""; }; - 4B8CC080135BFDF700B3E49F /* CCTransitionPageTurn.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCTransitionPageTurn.m; path = libs/cocos2d/CCTransitionPageTurn.m; sourceTree = ""; }; - 4B8CC082135BFDF700B3E49F /* CCTransitionRadial.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCTransitionRadial.h; path = libs/cocos2d/CCTransitionRadial.h; sourceTree = ""; }; - 4B8CC083135BFDF700B3E49F /* CCTransitionRadial.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCTransitionRadial.m; path = libs/cocos2d/CCTransitionRadial.m; sourceTree = ""; }; - 4B8CC085135BFDF800B3E49F /* ccTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ccTypes.h; path = libs/cocos2d/ccTypes.h; sourceTree = ""; }; - 4B8CC086135BFDF800B3E49F /* cocos2d.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = cocos2d.h; path = libs/cocos2d/cocos2d.h; sourceTree = ""; }; - 4B8CC087135BFDF800B3E49F /* cocos2d.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = cocos2d.m; path = libs/cocos2d/cocos2d.m; sourceTree = ""; }; - 4B8CC089135BFDF800B3E49F /* CCGL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCGL.h; path = libs/cocos2d/Platforms/CCGL.h; sourceTree = ""; }; - 4B8CC08A135BFDF800B3E49F /* CCNS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCNS.h; path = libs/cocos2d/Platforms/CCNS.h; sourceTree = ""; }; - 4B8CC08B135BFDF800B3E49F /* CCDirectorIOS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCDirectorIOS.h; path = libs/cocos2d/Platforms/iOS/CCDirectorIOS.h; sourceTree = ""; }; - 4B8CC08C135BFDF800B3E49F /* CCDirectorIOS.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCDirectorIOS.m; path = libs/cocos2d/Platforms/iOS/CCDirectorIOS.m; sourceTree = ""; }; - 4B8CC08E135BFDF800B3E49F /* CCTouchDelegateProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCTouchDelegateProtocol.h; path = libs/cocos2d/Platforms/iOS/CCTouchDelegateProtocol.h; sourceTree = ""; }; - 4B8CC08F135BFDF800B3E49F /* CCTouchDispatcher.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCTouchDispatcher.h; path = libs/cocos2d/Platforms/iOS/CCTouchDispatcher.h; sourceTree = ""; }; - 4B8CC090135BFDF800B3E49F /* CCTouchDispatcher.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCTouchDispatcher.m; path = libs/cocos2d/Platforms/iOS/CCTouchDispatcher.m; sourceTree = ""; }; - 4B8CC092135BFDF800B3E49F /* CCTouchHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCTouchHandler.h; path = libs/cocos2d/Platforms/iOS/CCTouchHandler.h; sourceTree = ""; }; - 4B8CC093135BFDF800B3E49F /* CCTouchHandler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCTouchHandler.m; path = libs/cocos2d/Platforms/iOS/CCTouchHandler.m; sourceTree = ""; }; - 4B8CC095135BFDF800B3E49F /* EAGLView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EAGLView.h; path = libs/cocos2d/Platforms/iOS/EAGLView.h; sourceTree = ""; }; - 4B8CC096135BFDF800B3E49F /* EAGLView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = EAGLView.m; path = libs/cocos2d/Platforms/iOS/EAGLView.m; sourceTree = ""; }; - 4B8CC098135BFDF800B3E49F /* ES1Renderer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ES1Renderer.h; path = libs/cocos2d/Platforms/iOS/ES1Renderer.h; sourceTree = ""; }; - 4B8CC099135BFDF800B3E49F /* ES1Renderer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = ES1Renderer.m; path = libs/cocos2d/Platforms/iOS/ES1Renderer.m; sourceTree = ""; }; - 4B8CC09B135BFDF800B3E49F /* ESRenderer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ESRenderer.h; path = libs/cocos2d/Platforms/iOS/ESRenderer.h; sourceTree = ""; }; - 4B8CC09C135BFDF800B3E49F /* glu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = glu.c; path = libs/cocos2d/Platforms/iOS/glu.c; sourceTree = ""; }; - 4B8CC09E135BFDF800B3E49F /* glu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = glu.h; path = libs/cocos2d/Platforms/iOS/glu.h; sourceTree = ""; }; - 4B8CC09F135BFDF800B3E49F /* CCDirectorMac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCDirectorMac.h; path = libs/cocos2d/Platforms/Mac/CCDirectorMac.h; sourceTree = ""; }; - 4B8CC0A0135BFDF800B3E49F /* CCDirectorMac.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCDirectorMac.m; path = libs/cocos2d/Platforms/Mac/CCDirectorMac.m; sourceTree = ""; }; - 4B8CC0A2135BFDF800B3E49F /* CCEventDispatcher.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCEventDispatcher.h; path = libs/cocos2d/Platforms/Mac/CCEventDispatcher.h; sourceTree = ""; }; - 4B8CC0A3135BFDF800B3E49F /* CCEventDispatcher.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCEventDispatcher.m; path = libs/cocos2d/Platforms/Mac/CCEventDispatcher.m; sourceTree = ""; }; - 4B8CC0A5135BFDF800B3E49F /* MacGLView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MacGLView.h; path = libs/cocos2d/Platforms/Mac/MacGLView.h; sourceTree = ""; }; - 4B8CC0A6135BFDF800B3E49F /* MacGLView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MacGLView.m; path = libs/cocos2d/Platforms/Mac/MacGLView.m; sourceTree = ""; }; - 4B8CC0A8135BFDF800B3E49F /* MacWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MacWindow.h; path = libs/cocos2d/Platforms/Mac/MacWindow.h; sourceTree = ""; }; - 4B8CC0A9135BFDF800B3E49F /* MacWindow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MacWindow.m; path = libs/cocos2d/Platforms/Mac/MacWindow.m; sourceTree = ""; }; - 4B8CC0AB135BFDF800B3E49F /* base64.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = base64.c; path = libs/cocos2d/Support/base64.c; sourceTree = ""; }; - 4B8CC0AD135BFDF800B3E49F /* base64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = base64.h; path = libs/cocos2d/Support/base64.h; sourceTree = ""; }; - 4B8CC0AE135BFDF800B3E49F /* CCArray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCArray.h; path = libs/cocos2d/Support/CCArray.h; sourceTree = ""; }; - 4B8CC0AF135BFDF800B3E49F /* CCArray.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCArray.m; path = libs/cocos2d/Support/CCArray.m; sourceTree = ""; }; - 4B8CC0B1135BFDF800B3E49F /* ccCArray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ccCArray.h; path = libs/cocos2d/Support/ccCArray.h; sourceTree = ""; }; - 4B8CC0B2135BFDF800B3E49F /* CCFileUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCFileUtils.h; path = libs/cocos2d/Support/CCFileUtils.h; sourceTree = ""; }; - 4B8CC0B3135BFDF800B3E49F /* CCFileUtils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCFileUtils.m; path = libs/cocos2d/Support/CCFileUtils.m; sourceTree = ""; }; - 4B8CC0B5135BFDF800B3E49F /* CCProfiling.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CCProfiling.h; path = libs/cocos2d/Support/CCProfiling.h; sourceTree = ""; }; - 4B8CC0B6135BFDF800B3E49F /* CCProfiling.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CCProfiling.m; path = libs/cocos2d/Support/CCProfiling.m; sourceTree = ""; }; - 4B8CC0B8135BFDF800B3E49F /* ccUtils.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = ccUtils.c; path = libs/cocos2d/Support/ccUtils.c; sourceTree = ""; }; - 4B8CC0BA135BFDF800B3E49F /* ccUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ccUtils.h; path = libs/cocos2d/Support/ccUtils.h; sourceTree = ""; }; - 4B8CC0BB135BFDF800B3E49F /* CGPointExtension.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CGPointExtension.h; path = libs/cocos2d/Support/CGPointExtension.h; sourceTree = ""; }; - 4B8CC0BC135BFDF800B3E49F /* CGPointExtension.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CGPointExtension.m; path = libs/cocos2d/Support/CGPointExtension.m; sourceTree = ""; }; - 4B8CC0BE135BFDF800B3E49F /* OpenGL_Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OpenGL_Internal.h; path = libs/cocos2d/Support/OpenGL_Internal.h; sourceTree = ""; }; - 4B8CC0BF135BFDF800B3E49F /* TGAlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TGAlib.h; path = libs/cocos2d/Support/TGAlib.h; sourceTree = ""; }; - 4B8CC0C0135BFDF800B3E49F /* TGAlib.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = TGAlib.m; path = libs/cocos2d/Support/TGAlib.m; sourceTree = ""; }; - 4B8CC0C2135BFDF800B3E49F /* TransformUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TransformUtils.h; path = libs/cocos2d/Support/TransformUtils.h; sourceTree = ""; }; - 4B8CC0C3135BFDF800B3E49F /* TransformUtils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = TransformUtils.m; path = libs/cocos2d/Support/TransformUtils.m; sourceTree = ""; }; - 4B8CC0C5135BFDF800B3E49F /* uthash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = uthash.h; path = libs/cocos2d/Support/uthash.h; sourceTree = ""; }; - 4B8CC0C6135BFDF800B3E49F /* utlist.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = utlist.h; path = libs/cocos2d/Support/utlist.h; sourceTree = ""; }; - 4B8CC0C7135BFDF800B3E49F /* ZipUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ZipUtils.h; path = libs/cocos2d/Support/ZipUtils.h; sourceTree = ""; }; - 4B8CC0C8135BFDF800B3E49F /* ZipUtils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = ZipUtils.m; path = libs/cocos2d/Support/ZipUtils.m; sourceTree = ""; }; - 4B8CC0CB135BFDF800B3E49F /* CDAudioManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CDAudioManager.h; path = libs/CocosDenshion/CDAudioManager.h; sourceTree = ""; }; - 4B8CC0CC135BFDF800B3E49F /* CDAudioManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CDAudioManager.m; path = libs/CocosDenshion/CDAudioManager.m; sourceTree = ""; }; - 4B8CC0CE135BFDF800B3E49F /* CDConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CDConfig.h; path = libs/CocosDenshion/CDConfig.h; sourceTree = ""; }; - 4B8CC0CF135BFDF800B3E49F /* CDOpenALSupport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CDOpenALSupport.h; path = libs/CocosDenshion/CDOpenALSupport.h; sourceTree = ""; }; - 4B8CC0D0135BFDF800B3E49F /* CDOpenALSupport.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CDOpenALSupport.m; path = libs/CocosDenshion/CDOpenALSupport.m; sourceTree = ""; }; - 4B8CC0D2135BFDF800B3E49F /* CocosDenshion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CocosDenshion.h; path = libs/CocosDenshion/CocosDenshion.h; sourceTree = ""; }; - 4B8CC0D3135BFDF800B3E49F /* CocosDenshion.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CocosDenshion.m; path = libs/CocosDenshion/CocosDenshion.m; sourceTree = ""; }; - 4B8CC0D5135BFDF800B3E49F /* SimpleAudioEngine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SimpleAudioEngine.h; path = libs/CocosDenshion/SimpleAudioEngine.h; sourceTree = ""; }; - 4B8CC0D6135BFDF800B3E49F /* SimpleAudioEngine.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SimpleAudioEngine.m; path = libs/CocosDenshion/SimpleAudioEngine.m; sourceTree = ""; }; - 4B8CC0D9135BFDF800B3E49F /* CLScoreServerPost.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CLScoreServerPost.h; path = libs/cocoslive/CLScoreServerPost.h; sourceTree = ""; }; - 4B8CC0DA135BFDF800B3E49F /* CLScoreServerPost.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CLScoreServerPost.m; path = libs/cocoslive/CLScoreServerPost.m; sourceTree = ""; }; - 4B8CC0DC135BFDF800B3E49F /* CLScoreServerRequest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CLScoreServerRequest.h; path = libs/cocoslive/CLScoreServerRequest.h; sourceTree = ""; }; - 4B8CC0DD135BFDF800B3E49F /* CLScoreServerRequest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CLScoreServerRequest.m; path = libs/cocoslive/CLScoreServerRequest.m; sourceTree = ""; }; - 4B8CC0DF135BFDF800B3E49F /* cocoslive.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = cocoslive.h; path = libs/cocoslive/cocoslive.h; sourceTree = ""; }; - 4B8CC0E0135BFDF800B3E49F /* cocoslive.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = cocoslive.m; path = libs/cocoslive/cocoslive.m; sourceTree = ""; }; - 4B8CC0E3135BFDF800B3E49F /* FontLabel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FontLabel.h; path = libs/FontLabel/FontLabel.h; sourceTree = ""; }; - 4B8CC0E4135BFDF800B3E49F /* FontLabel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = FontLabel.m; path = libs/FontLabel/FontLabel.m; sourceTree = ""; }; - 4B8CC0E6135BFDF800B3E49F /* FontLabelStringDrawing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FontLabelStringDrawing.h; path = libs/FontLabel/FontLabelStringDrawing.h; sourceTree = ""; }; - 4B8CC0E7135BFDF800B3E49F /* FontLabelStringDrawing.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = FontLabelStringDrawing.m; path = libs/FontLabel/FontLabelStringDrawing.m; sourceTree = ""; }; - 4B8CC0E9135BFDF800B3E49F /* FontManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FontManager.h; path = libs/FontLabel/FontManager.h; sourceTree = ""; }; - 4B8CC0EA135BFDF800B3E49F /* FontManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = FontManager.m; path = libs/FontLabel/FontManager.m; sourceTree = ""; }; - 4B8CC0EC135BFDF800B3E49F /* ZAttributedString.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ZAttributedString.h; path = libs/FontLabel/ZAttributedString.h; sourceTree = ""; }; - 4B8CC0ED135BFDF800B3E49F /* ZAttributedString.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = ZAttributedString.m; path = libs/FontLabel/ZAttributedString.m; sourceTree = ""; }; - 4B8CC0EF135BFDF800B3E49F /* ZAttributedStringPrivate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ZAttributedStringPrivate.h; path = libs/FontLabel/ZAttributedStringPrivate.h; sourceTree = ""; }; - 4B8CC0F0135BFDF800B3E49F /* ZFont.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ZFont.h; path = libs/FontLabel/ZFont.h; sourceTree = ""; }; - 4B8CC0F1135BFDF800B3E49F /* ZFont.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = ZFont.m; path = libs/FontLabel/ZFont.m; sourceTree = ""; }; - 4B8CC0F4135BFDF800B3E49F /* CDataScanner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CDataScanner.h; path = libs/TouchJSON/CDataScanner.h; sourceTree = ""; }; - 4B8CC0F5135BFDF800B3E49F /* CDataScanner.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CDataScanner.m; path = libs/TouchJSON/CDataScanner.m; sourceTree = ""; }; - 4B8CC0F7135BFDF800B3E49F /* CDataScanner_Extensions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CDataScanner_Extensions.h; path = libs/TouchJSON/Extensions/CDataScanner_Extensions.h; sourceTree = ""; }; - 4B8CC0F8135BFDF800B3E49F /* CDataScanner_Extensions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CDataScanner_Extensions.m; path = libs/TouchJSON/Extensions/CDataScanner_Extensions.m; sourceTree = ""; }; - 4B8CC0FA135BFDF800B3E49F /* NSCharacterSet_Extensions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NSCharacterSet_Extensions.h; path = libs/TouchJSON/Extensions/NSCharacterSet_Extensions.h; sourceTree = ""; }; - 4B8CC0FB135BFDF800B3E49F /* NSCharacterSet_Extensions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = NSCharacterSet_Extensions.m; path = libs/TouchJSON/Extensions/NSCharacterSet_Extensions.m; sourceTree = ""; }; - 4B8CC0FD135BFDF800B3E49F /* NSDictionary_JSONExtensions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NSDictionary_JSONExtensions.h; path = libs/TouchJSON/Extensions/NSDictionary_JSONExtensions.h; sourceTree = ""; }; - 4B8CC0FE135BFDF800B3E49F /* NSDictionary_JSONExtensions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = NSDictionary_JSONExtensions.m; path = libs/TouchJSON/Extensions/NSDictionary_JSONExtensions.m; sourceTree = ""; }; - 4B8CC100135BFDF800B3E49F /* NSScanner_Extensions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NSScanner_Extensions.h; path = libs/TouchJSON/Extensions/NSScanner_Extensions.h; sourceTree = ""; }; - 4B8CC101135BFDF800B3E49F /* NSScanner_Extensions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = NSScanner_Extensions.m; path = libs/TouchJSON/Extensions/NSScanner_Extensions.m; sourceTree = ""; }; - 4B8CC103135BFDF800B3E49F /* CJSONDeserializer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CJSONDeserializer.h; path = libs/TouchJSON/JSON/CJSONDeserializer.h; sourceTree = ""; }; - 4B8CC104135BFDF800B3E49F /* CJSONDeserializer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CJSONDeserializer.m; path = libs/TouchJSON/JSON/CJSONDeserializer.m; sourceTree = ""; }; - 4B8CC106135BFDF800B3E49F /* CJSONScanner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CJSONScanner.h; path = libs/TouchJSON/JSON/CJSONScanner.h; sourceTree = ""; }; - 4B8CC107135BFDF800B3E49F /* CJSONScanner.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CJSONScanner.m; path = libs/TouchJSON/JSON/CJSONScanner.m; sourceTree = ""; }; - 4B8CC109135BFDF800B3E49F /* CJSONSerializer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CJSONSerializer.h; path = libs/TouchJSON/JSON/CJSONSerializer.h; sourceTree = ""; }; - 4B8CC10A135BFDF800B3E49F /* CJSONSerializer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CJSONSerializer.m; path = libs/TouchJSON/JSON/CJSONSerializer.m; sourceTree = ""; }; - 4B8CC10D135BFDF800B3E49F /* Box2D.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Box2D.h; path = libs/Box2D/Box2D.h; sourceTree = ""; }; - 4B8CC10E135BFDF800B3E49F /* b2BroadPhase.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2BroadPhase.cpp; path = libs/Box2D/Collision/b2BroadPhase.cpp; sourceTree = ""; }; - 4B8CC110135BFDF800B3E49F /* b2BroadPhase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2BroadPhase.h; path = libs/Box2D/Collision/b2BroadPhase.h; sourceTree = ""; }; - 4B8CC111135BFDF800B3E49F /* b2CollideCircle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2CollideCircle.cpp; path = libs/Box2D/Collision/b2CollideCircle.cpp; sourceTree = ""; }; - 4B8CC113135BFDF900B3E49F /* b2CollidePolygon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2CollidePolygon.cpp; path = libs/Box2D/Collision/b2CollidePolygon.cpp; sourceTree = ""; }; - 4B8CC115135BFDF900B3E49F /* b2Collision.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2Collision.cpp; path = libs/Box2D/Collision/b2Collision.cpp; sourceTree = ""; }; - 4B8CC117135BFDF900B3E49F /* b2Collision.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2Collision.h; path = libs/Box2D/Collision/b2Collision.h; sourceTree = ""; }; - 4B8CC118135BFDF900B3E49F /* b2Distance.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2Distance.cpp; path = libs/Box2D/Collision/b2Distance.cpp; sourceTree = ""; }; - 4B8CC11A135BFDF900B3E49F /* b2Distance.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2Distance.h; path = libs/Box2D/Collision/b2Distance.h; sourceTree = ""; }; - 4B8CC11B135BFDF900B3E49F /* b2DynamicTree.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2DynamicTree.cpp; path = libs/Box2D/Collision/b2DynamicTree.cpp; sourceTree = ""; }; - 4B8CC11D135BFDF900B3E49F /* b2DynamicTree.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2DynamicTree.h; path = libs/Box2D/Collision/b2DynamicTree.h; sourceTree = ""; }; - 4B8CC11E135BFDF900B3E49F /* b2TimeOfImpact.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2TimeOfImpact.cpp; path = libs/Box2D/Collision/b2TimeOfImpact.cpp; sourceTree = ""; }; - 4B8CC120135BFDF900B3E49F /* b2TimeOfImpact.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2TimeOfImpact.h; path = libs/Box2D/Collision/b2TimeOfImpact.h; sourceTree = ""; }; - 4B8CC121135BFDF900B3E49F /* b2CircleShape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2CircleShape.cpp; path = libs/Box2D/Collision/Shapes/b2CircleShape.cpp; sourceTree = ""; }; - 4B8CC123135BFDF900B3E49F /* b2CircleShape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2CircleShape.h; path = libs/Box2D/Collision/Shapes/b2CircleShape.h; sourceTree = ""; }; - 4B8CC124135BFDF900B3E49F /* b2PolygonShape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2PolygonShape.cpp; path = libs/Box2D/Collision/Shapes/b2PolygonShape.cpp; sourceTree = ""; }; - 4B8CC126135BFDF900B3E49F /* b2PolygonShape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2PolygonShape.h; path = libs/Box2D/Collision/Shapes/b2PolygonShape.h; sourceTree = ""; }; - 4B8CC127135BFDF900B3E49F /* b2Shape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2Shape.h; path = libs/Box2D/Collision/Shapes/b2Shape.h; sourceTree = ""; }; - 4B8CC128135BFDF900B3E49F /* b2BlockAllocator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2BlockAllocator.cpp; path = libs/Box2D/Common/b2BlockAllocator.cpp; sourceTree = ""; }; - 4B8CC12A135BFDF900B3E49F /* b2BlockAllocator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2BlockAllocator.h; path = libs/Box2D/Common/b2BlockAllocator.h; sourceTree = ""; }; - 4B8CC12B135BFDF900B3E49F /* b2Math.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2Math.cpp; path = libs/Box2D/Common/b2Math.cpp; sourceTree = ""; }; - 4B8CC12D135BFDF900B3E49F /* b2Math.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2Math.h; path = libs/Box2D/Common/b2Math.h; sourceTree = ""; }; - 4B8CC12E135BFDF900B3E49F /* b2Settings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2Settings.cpp; path = libs/Box2D/Common/b2Settings.cpp; sourceTree = ""; }; - 4B8CC130135BFDF900B3E49F /* b2Settings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2Settings.h; path = libs/Box2D/Common/b2Settings.h; sourceTree = ""; }; - 4B8CC131135BFDF900B3E49F /* b2StackAllocator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2StackAllocator.cpp; path = libs/Box2D/Common/b2StackAllocator.cpp; sourceTree = ""; }; - 4B8CC133135BFDF900B3E49F /* b2StackAllocator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2StackAllocator.h; path = libs/Box2D/Common/b2StackAllocator.h; sourceTree = ""; }; - 4B8CC134135BFDF900B3E49F /* b2Body.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2Body.cpp; path = libs/Box2D/Dynamics/b2Body.cpp; sourceTree = ""; }; - 4B8CC136135BFDF900B3E49F /* b2Body.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2Body.h; path = libs/Box2D/Dynamics/b2Body.h; sourceTree = ""; }; - 4B8CC137135BFDF900B3E49F /* b2ContactManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2ContactManager.cpp; path = libs/Box2D/Dynamics/b2ContactManager.cpp; sourceTree = ""; }; - 4B8CC139135BFDF900B3E49F /* b2ContactManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2ContactManager.h; path = libs/Box2D/Dynamics/b2ContactManager.h; sourceTree = ""; }; - 4B8CC13A135BFDF900B3E49F /* b2Fixture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2Fixture.cpp; path = libs/Box2D/Dynamics/b2Fixture.cpp; sourceTree = ""; }; - 4B8CC13C135BFDF900B3E49F /* b2Fixture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2Fixture.h; path = libs/Box2D/Dynamics/b2Fixture.h; sourceTree = ""; }; - 4B8CC13D135BFDF900B3E49F /* b2Island.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2Island.cpp; path = libs/Box2D/Dynamics/b2Island.cpp; sourceTree = ""; }; - 4B8CC13F135BFDF900B3E49F /* b2Island.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2Island.h; path = libs/Box2D/Dynamics/b2Island.h; sourceTree = ""; }; - 4B8CC140135BFDF900B3E49F /* b2TimeStep.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2TimeStep.h; path = libs/Box2D/Dynamics/b2TimeStep.h; sourceTree = ""; }; - 4B8CC141135BFDF900B3E49F /* b2World.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2World.cpp; path = libs/Box2D/Dynamics/b2World.cpp; sourceTree = ""; }; - 4B8CC143135BFDF900B3E49F /* b2World.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2World.h; path = libs/Box2D/Dynamics/b2World.h; sourceTree = ""; }; - 4B8CC144135BFDF900B3E49F /* b2WorldCallbacks.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2WorldCallbacks.cpp; path = libs/Box2D/Dynamics/b2WorldCallbacks.cpp; sourceTree = ""; }; - 4B8CC146135BFDF900B3E49F /* b2WorldCallbacks.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2WorldCallbacks.h; path = libs/Box2D/Dynamics/b2WorldCallbacks.h; sourceTree = ""; }; - 4B8CC147135BFDF900B3E49F /* b2CircleContact.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2CircleContact.cpp; path = libs/Box2D/Dynamics/Contacts/b2CircleContact.cpp; sourceTree = ""; }; - 4B8CC149135BFDF900B3E49F /* b2CircleContact.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2CircleContact.h; path = libs/Box2D/Dynamics/Contacts/b2CircleContact.h; sourceTree = ""; }; - 4B8CC14A135BFDF900B3E49F /* b2Contact.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2Contact.cpp; path = libs/Box2D/Dynamics/Contacts/b2Contact.cpp; sourceTree = ""; }; - 4B8CC14C135BFDF900B3E49F /* b2Contact.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2Contact.h; path = libs/Box2D/Dynamics/Contacts/b2Contact.h; sourceTree = ""; }; - 4B8CC14D135BFDF900B3E49F /* b2ContactSolver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2ContactSolver.cpp; path = libs/Box2D/Dynamics/Contacts/b2ContactSolver.cpp; sourceTree = ""; }; - 4B8CC14F135BFDF900B3E49F /* b2ContactSolver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2ContactSolver.h; path = libs/Box2D/Dynamics/Contacts/b2ContactSolver.h; sourceTree = ""; }; - 4B8CC150135BFDF900B3E49F /* b2NullContact.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2NullContact.h; path = libs/Box2D/Dynamics/Contacts/b2NullContact.h; sourceTree = ""; }; - 4B8CC151135BFDF900B3E49F /* b2PolygonAndCircleContact.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2PolygonAndCircleContact.cpp; path = libs/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.cpp; sourceTree = ""; }; - 4B8CC153135BFDF900B3E49F /* b2PolygonAndCircleContact.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2PolygonAndCircleContact.h; path = libs/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.h; sourceTree = ""; }; - 4B8CC154135BFDF900B3E49F /* b2PolygonContact.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2PolygonContact.cpp; path = libs/Box2D/Dynamics/Contacts/b2PolygonContact.cpp; sourceTree = ""; }; - 4B8CC156135BFDF900B3E49F /* b2PolygonContact.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2PolygonContact.h; path = libs/Box2D/Dynamics/Contacts/b2PolygonContact.h; sourceTree = ""; }; - 4B8CC157135BFDF900B3E49F /* b2TOISolver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2TOISolver.cpp; path = libs/Box2D/Dynamics/Contacts/b2TOISolver.cpp; sourceTree = ""; }; - 4B8CC159135BFDF900B3E49F /* b2TOISolver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2TOISolver.h; path = libs/Box2D/Dynamics/Contacts/b2TOISolver.h; sourceTree = ""; }; - 4B8CC15A135BFDF900B3E49F /* b2DistanceJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2DistanceJoint.cpp; path = libs/Box2D/Dynamics/Joints/b2DistanceJoint.cpp; sourceTree = ""; }; - 4B8CC15C135BFDF900B3E49F /* b2DistanceJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2DistanceJoint.h; path = libs/Box2D/Dynamics/Joints/b2DistanceJoint.h; sourceTree = ""; }; - 4B8CC15D135BFDF900B3E49F /* b2FrictionJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2FrictionJoint.cpp; path = libs/Box2D/Dynamics/Joints/b2FrictionJoint.cpp; sourceTree = ""; }; - 4B8CC15F135BFDF900B3E49F /* b2FrictionJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2FrictionJoint.h; path = libs/Box2D/Dynamics/Joints/b2FrictionJoint.h; sourceTree = ""; }; - 4B8CC160135BFDF900B3E49F /* b2GearJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2GearJoint.cpp; path = libs/Box2D/Dynamics/Joints/b2GearJoint.cpp; sourceTree = ""; }; - 4B8CC162135BFDF900B3E49F /* b2GearJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2GearJoint.h; path = libs/Box2D/Dynamics/Joints/b2GearJoint.h; sourceTree = ""; }; - 4B8CC163135BFDF900B3E49F /* b2Joint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2Joint.cpp; path = libs/Box2D/Dynamics/Joints/b2Joint.cpp; sourceTree = ""; }; - 4B8CC165135BFDF900B3E49F /* b2Joint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2Joint.h; path = libs/Box2D/Dynamics/Joints/b2Joint.h; sourceTree = ""; }; - 4B8CC166135BFDF900B3E49F /* b2LineJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2LineJoint.cpp; path = libs/Box2D/Dynamics/Joints/b2LineJoint.cpp; sourceTree = ""; }; - 4B8CC168135BFDF900B3E49F /* b2LineJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2LineJoint.h; path = libs/Box2D/Dynamics/Joints/b2LineJoint.h; sourceTree = ""; }; - 4B8CC169135BFDF900B3E49F /* b2MouseJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2MouseJoint.cpp; path = libs/Box2D/Dynamics/Joints/b2MouseJoint.cpp; sourceTree = ""; }; - 4B8CC16B135BFDF900B3E49F /* b2MouseJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2MouseJoint.h; path = libs/Box2D/Dynamics/Joints/b2MouseJoint.h; sourceTree = ""; }; - 4B8CC16C135BFDF900B3E49F /* b2PrismaticJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2PrismaticJoint.cpp; path = libs/Box2D/Dynamics/Joints/b2PrismaticJoint.cpp; sourceTree = ""; }; - 4B8CC16E135BFDF900B3E49F /* b2PrismaticJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2PrismaticJoint.h; path = libs/Box2D/Dynamics/Joints/b2PrismaticJoint.h; sourceTree = ""; }; - 4B8CC16F135BFDF900B3E49F /* b2PulleyJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2PulleyJoint.cpp; path = libs/Box2D/Dynamics/Joints/b2PulleyJoint.cpp; sourceTree = ""; }; - 4B8CC171135BFDF900B3E49F /* b2PulleyJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2PulleyJoint.h; path = libs/Box2D/Dynamics/Joints/b2PulleyJoint.h; sourceTree = ""; }; - 4B8CC172135BFDF900B3E49F /* b2RevoluteJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2RevoluteJoint.cpp; path = libs/Box2D/Dynamics/Joints/b2RevoluteJoint.cpp; sourceTree = ""; }; - 4B8CC174135BFDF900B3E49F /* b2RevoluteJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2RevoluteJoint.h; path = libs/Box2D/Dynamics/Joints/b2RevoluteJoint.h; sourceTree = ""; }; - 4B8CC175135BFDF900B3E49F /* b2WeldJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2WeldJoint.cpp; path = libs/Box2D/Dynamics/Joints/b2WeldJoint.cpp; sourceTree = ""; }; - 4B8CC177135BFDF900B3E49F /* b2WeldJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2WeldJoint.h; path = libs/Box2D/Dynamics/Joints/b2WeldJoint.h; sourceTree = ""; }; - 4B8CC179135BFDF900B3E49F /* Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Prefix.pch; sourceTree = ""; }; - 4B8CC17A135BFDF900B3E49F /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 4B8CC17C135BFDF900B3E49F /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 4B8CC17D135BFDF900B3E49F /* AppDelegate.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = AppDelegate.mm; sourceTree = ""; }; - 4B8CC182135BFDF900B3E49F /* HelloWorldLayer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HelloWorldLayer.h; sourceTree = ""; }; - 4B8CC183135BFDF900B3E49F /* HelloWorldLayer.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = HelloWorldLayer.mm; sourceTree = ""; }; - 4B8CC189135BFDF900B3E49F /* blocks.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = blocks.png; path = Resources/blocks.png; sourceTree = ""; }; - 4B8CC193135BFEDE00B3E49F /* Assert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Assert.h; sourceTree = ""; }; - 4B8CC194135BFEDE00B3E49F /* Base.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Base.h; sourceTree = ""; }; - 4B8CC195135BFEDE00B3E49F /* GlobalDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GlobalDefines.h; sourceTree = ""; }; - 4B8CC196135BFEDE00B3E49F /* GlobalInclude.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GlobalInclude.h; sourceTree = ""; }; - 4B8CC197135BFEDE00B3E49F /* GlobalTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GlobalTypes.h; sourceTree = ""; }; - 4B8CC198135BFEDE00B3E49F /* Print.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Print.h; sourceTree = ""; }; - 4B8CC199135BFEDE00B3E49F /* Singleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Singleton.h; sourceTree = ""; }; - 4B8CC19B135BFEDE00B3E49F /* BitEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BitEncoder.h; sourceTree = ""; }; - 4B8CC19C135BFEDE00B3E49F /* LocklessRingBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LocklessRingBuffer.cpp; sourceTree = ""; }; - 4B8CC19D135BFEDE00B3E49F /* LocklessRingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocklessRingBuffer.h; sourceTree = ""; }; - 4B8CC1A0135BFEDE00B3E49F /* BasicPrimitives.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BasicPrimitives.h; sourceTree = ""; }; - 4B8CC1A1135BFEDE00B3E49F /* BasicPrimitives.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = BasicPrimitives.mm; sourceTree = ""; }; - 4B8CC1A2135BFEDE00B3E49F /* OpenGLServices.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OpenGLServices.h; sourceTree = ""; }; - 4B8CC1A3135BFEDE00B3E49F /* OpenGLServices.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OpenGLServices.mm; sourceTree = ""; }; - 4B8CC1A4135BFEDE00B3E49F /* RenderTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderTarget.h; sourceTree = ""; }; - 4B8CC1A5135BFEDE00B3E49F /* RenderTarget.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RenderTarget.mm; sourceTree = ""; }; - 4B8CC1A7135BFEDE00B3E49F /* DJB2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DJB2.h; sourceTree = ""; }; - 4B8CC1A9135BFEDE00B3E49F /* MathDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MathDefines.h; sourceTree = ""; }; - 4B8CC1AA135BFEDE00B3E49F /* MathInclude.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MathInclude.h; sourceTree = ""; }; - 4B8CC1AB135BFEDE00B3E49F /* MathOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MathOperations.h; sourceTree = ""; }; - 4B8CC1AC135BFEDE00B3E49F /* MathTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MathTypes.h; sourceTree = ""; }; - 4B8CC1AD135BFEDE00B3E49F /* Matrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Matrix.h; sourceTree = ""; }; - 4B8CC1AE135BFEDE00B3E49F /* Quaternion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Quaternion.h; sourceTree = ""; }; - 4B8CC1AF135BFEDE00B3E49F /* Vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Vector.h; sourceTree = ""; }; - 4B8CC1B1135BFEDE00B3E49F /* MemoryBitset.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryBitset.cpp; sourceTree = ""; }; - 4B8CC1B2135BFEDE00B3E49F /* MemoryBitset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemoryBitset.h; sourceTree = ""; }; - 4B8CC1B3135BFEDE00B3E49F /* MemoryHeap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryHeap.cpp; sourceTree = ""; }; - 4B8CC1B4135BFEDE00B3E49F /* MemoryHeap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemoryHeap.h; sourceTree = ""; }; - 4B8CC1B5135BFEDE00B3E49F /* MemoryLinear.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemoryLinear.h; sourceTree = ""; }; - 4B8CC1B7135BFEDE00B3E49F /* GLView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLView.h; sourceTree = ""; }; - 4B8CC1B8135BFEDE00B3E49F /* GLView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GLView.m; sourceTree = ""; }; - 4B8CC1B9135BFEDE00B3E49F /* LittlestAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LittlestAppDelegate.h; sourceTree = ""; }; - 4B8CC1BA135BFEDE00B3E49F /* LittlestAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LittlestAppDelegate.m; sourceTree = ""; }; - 4B8CC1BB135BFEDE00B3E49F /* LittlestViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LittlestViewController.h; sourceTree = ""; }; - 4B8CC1BC135BFEDE00B3E49F /* LittlestViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LittlestViewController.m; sourceTree = ""; }; - 4B8CC1BE135BFEDE00B3E49F /* Atomic32Bit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Atomic32Bit.h; sourceTree = ""; }; - 4B8CC1BF135BFEDE00B3E49F /* MemorySync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemorySync.h; sourceTree = ""; }; - 4B8CC1C2135BFEDE00B3E49F /* Scene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Scene.h; sourceTree = ""; }; - 4BE72E351367CCB600E8F668 /* RootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RootViewController.h; path = OS/RootViewController.h; sourceTree = ""; }; - 4BE72E361367CCB600E8F668 /* RootViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RootViewController.m; path = OS/RootViewController.m; sourceTree = ""; }; - 4BE72E381367CD1400E8F668 /* GameConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GameConfig.h; path = OS/GameConfig.h; sourceTree = ""; }; - 4BE72E3B1367CE5100E8F668 /* GLES-Render.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "GLES-Render.h"; path = "Engine/Render/GLES-Render.h"; sourceTree = ""; }; - 4BE72E3C1367CE5100E8F668 /* GLES-Render.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = "GLES-Render.mm"; path = "Engine/Render/GLES-Render.mm"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 4B8CBFAD135BFDF600B3E49F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 4B8CBFB5135BFDF600B3E49F /* QuartzCore.framework in Frameworks */, - 4B8CBFB7135BFDF600B3E49F /* OpenGLES.framework in Frameworks */, - 4B8CBFB9135BFDF600B3E49F /* OpenAL.framework in Frameworks */, - 4B8CBFBB135BFDF600B3E49F /* AudioToolbox.framework in Frameworks */, - 4B8CBFBD135BFDF600B3E49F /* AVFoundation.framework in Frameworks */, - 4B8CBFBF135BFDF600B3E49F /* UIKit.framework in Frameworks */, - 4B8CBFC1135BFDF600B3E49F /* Foundation.framework in Frameworks */, - 4B8CBFC3135BFDF600B3E49F /* CoreGraphics.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 4B8CBFA5135BFDF600B3E49F = { - isa = PBXGroup; - children = ( - 4B8CBFC4135BFDF600B3E49F /* Littlest */, - 4B8CBFB3135BFDF600B3E49F /* Frameworks */, - 4B8CBFC5135BFDF600B3E49F /* Resources */, - 4B8CC178135BFDF900B3E49F /* Supporting Files */, - 4B8CBFB1135BFDF600B3E49F /* Products */, - ); - sourceTree = ""; - }; - 4B8CBFB1135BFDF600B3E49F /* Products */ = { - isa = PBXGroup; - children = ( - 4B8CBFB0135BFDF600B3E49F /* Littlest.app */, - ); - name = Products; - sourceTree = ""; - }; - 4B8CBFB3135BFDF600B3E49F /* Frameworks */ = { - isa = PBXGroup; - children = ( - 4B8CBFB4135BFDF600B3E49F /* QuartzCore.framework */, - 4B8CBFB6135BFDF600B3E49F /* OpenGLES.framework */, - 4B8CBFB8135BFDF600B3E49F /* OpenAL.framework */, - 4B8CBFBA135BFDF600B3E49F /* AudioToolbox.framework */, - 4B8CBFBC135BFDF600B3E49F /* AVFoundation.framework */, - 4B8CBFBE135BFDF600B3E49F /* UIKit.framework */, - 4B8CBFC0135BFDF600B3E49F /* Foundation.framework */, - 4B8CBFC2135BFDF600B3E49F /* CoreGraphics.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 4B8CBFC4135BFDF600B3E49F /* Littlest */ = { - isa = PBXGroup; - children = ( - 4BE72E391367CE3000E8F668 /* Engine */, - 4BE72E341367CC9A00E8F668 /* OS */, - 4B8CC191135BFEDE00B3E49F /* Foundation */, - 4B8CC1C0135BFEDE00B3E49F /* Game */, - 4B8CC190135BFE3B00B3E49F /* libs */, - 4B8CC17C135BFDF900B3E49F /* AppDelegate.h */, - 4B8CC17D135BFDF900B3E49F /* AppDelegate.mm */, - 4B8CC182135BFDF900B3E49F /* HelloWorldLayer.h */, - 4B8CC183135BFDF900B3E49F /* HelloWorldLayer.mm */, - ); - path = Littlest; - sourceTree = ""; - }; - 4B8CBFC5135BFDF600B3E49F /* Resources */ = { - isa = PBXGroup; - children = ( - 4B8CBFC6135BFDF600B3E49F /* Default.png */, - 4B8CBFC8135BFDF600B3E49F /* fps_images.png */, - 4B8CBFCA135BFDF600B3E49F /* Icon-72.png */, - 4B8CBFCC135BFDF600B3E49F /* Icon-Small-50.png */, - 4B8CBFCE135BFDF600B3E49F /* Icon-Small.png */, - 4B8CBFD0135BFDF600B3E49F /* Icon-Small@2x.png */, - 4B8CBFD2135BFDF600B3E49F /* Icon.png */, - 4B8CBFD4135BFDF600B3E49F /* Icon@2x.png */, - 4B8CBFD6135BFDF600B3E49F /* Info.plist */, - 4B8CBFD7135BFDF600B3E49F /* iTunesArtwork */, - 4B8CC189135BFDF900B3E49F /* blocks.png */, - ); - name = Resources; - path = Littlest; - sourceTree = ""; - }; - 4B8CBFD9135BFDF600B3E49F /* cocos2d */ = { - isa = PBXGroup; - children = ( - 4B8CBFDA135BFDF600B3E49F /* CCAction.h */, - 4B8CBFDB135BFDF600B3E49F /* CCAction.m */, - 4B8CBFDD135BFDF600B3E49F /* CCActionCamera.h */, - 4B8CBFDE135BFDF600B3E49F /* CCActionCamera.m */, - 4B8CBFE0135BFDF600B3E49F /* CCActionEase.h */, - 4B8CBFE1135BFDF600B3E49F /* CCActionEase.m */, - 4B8CBFE3135BFDF600B3E49F /* CCActionGrid.h */, - 4B8CBFE4135BFDF600B3E49F /* CCActionGrid.m */, - 4B8CBFE6135BFDF600B3E49F /* CCActionGrid3D.h */, - 4B8CBFE7135BFDF600B3E49F /* CCActionGrid3D.m */, - 4B8CBFE9135BFDF600B3E49F /* CCActionInstant.h */, - 4B8CBFEA135BFDF600B3E49F /* CCActionInstant.m */, - 4B8CBFEC135BFDF600B3E49F /* CCActionInterval.h */, - 4B8CBFED135BFDF600B3E49F /* CCActionInterval.m */, - 4B8CBFEF135BFDF600B3E49F /* CCActionManager.h */, - 4B8CBFF0135BFDF600B3E49F /* CCActionManager.m */, - 4B8CBFF2135BFDF600B3E49F /* CCActionPageTurn3D.h */, - 4B8CBFF3135BFDF600B3E49F /* CCActionPageTurn3D.m */, - 4B8CBFF5135BFDF600B3E49F /* CCActionProgressTimer.h */, - 4B8CBFF6135BFDF600B3E49F /* CCActionProgressTimer.m */, - 4B8CBFF8135BFDF600B3E49F /* CCActionTiledGrid.h */, - 4B8CBFF9135BFDF600B3E49F /* CCActionTiledGrid.m */, - 4B8CBFFB135BFDF600B3E49F /* CCActionTween.h */, - 4B8CBFFC135BFDF700B3E49F /* CCActionTween.m */, - 4B8CBFFE135BFDF700B3E49F /* CCAnimation.h */, - 4B8CBFFF135BFDF700B3E49F /* CCAnimation.m */, - 4B8CC001135BFDF700B3E49F /* CCAnimationCache.h */, - 4B8CC002135BFDF700B3E49F /* CCAnimationCache.m */, - 4B8CC004135BFDF700B3E49F /* CCAtlasNode.h */, - 4B8CC005135BFDF700B3E49F /* CCAtlasNode.m */, - 4B8CC007135BFDF700B3E49F /* CCBlockSupport.h */, - 4B8CC008135BFDF700B3E49F /* CCBlockSupport.m */, - 4B8CC00A135BFDF700B3E49F /* CCCamera.h */, - 4B8CC00B135BFDF700B3E49F /* CCCamera.m */, - 4B8CC00D135BFDF700B3E49F /* ccConfig.h */, - 4B8CC00E135BFDF700B3E49F /* CCConfiguration.h */, - 4B8CC00F135BFDF700B3E49F /* CCConfiguration.m */, - 4B8CC011135BFDF700B3E49F /* CCDirector.h */, - 4B8CC012135BFDF700B3E49F /* CCDirector.m */, - 4B8CC014135BFDF700B3E49F /* CCDrawingPrimitives.h */, - 4B8CC015135BFDF700B3E49F /* CCDrawingPrimitives.m */, - 4B8CC017135BFDF700B3E49F /* CCGrabber.h */, - 4B8CC018135BFDF700B3E49F /* CCGrabber.m */, - 4B8CC01A135BFDF700B3E49F /* CCGrid.h */, - 4B8CC01B135BFDF700B3E49F /* CCGrid.m */, - 4B8CC01D135BFDF700B3E49F /* CCLabelAtlas.h */, - 4B8CC01E135BFDF700B3E49F /* CCLabelAtlas.m */, - 4B8CC020135BFDF700B3E49F /* CCLabelBMFont.h */, - 4B8CC021135BFDF700B3E49F /* CCLabelBMFont.m */, - 4B8CC023135BFDF700B3E49F /* CCLabelTTF.h */, - 4B8CC024135BFDF700B3E49F /* CCLabelTTF.m */, - 4B8CC026135BFDF700B3E49F /* CCLayer.h */, - 4B8CC027135BFDF700B3E49F /* CCLayer.m */, - 4B8CC029135BFDF700B3E49F /* ccMacros.h */, - 4B8CC02A135BFDF700B3E49F /* CCMenu.h */, - 4B8CC02B135BFDF700B3E49F /* CCMenu.m */, - 4B8CC02D135BFDF700B3E49F /* CCMenuItem.h */, - 4B8CC02E135BFDF700B3E49F /* CCMenuItem.m */, - 4B8CC030135BFDF700B3E49F /* CCMotionStreak.h */, - 4B8CC031135BFDF700B3E49F /* CCMotionStreak.m */, - 4B8CC033135BFDF700B3E49F /* CCNode.h */, - 4B8CC034135BFDF700B3E49F /* CCNode.m */, - 4B8CC036135BFDF700B3E49F /* CCParallaxNode.h */, - 4B8CC037135BFDF700B3E49F /* CCParallaxNode.m */, - 4B8CC039135BFDF700B3E49F /* CCParticleExamples.h */, - 4B8CC03A135BFDF700B3E49F /* CCParticleExamples.m */, - 4B8CC03C135BFDF700B3E49F /* CCParticleSystem.h */, - 4B8CC03D135BFDF700B3E49F /* CCParticleSystem.m */, - 4B8CC03F135BFDF700B3E49F /* CCParticleSystemPoint.h */, - 4B8CC040135BFDF700B3E49F /* CCParticleSystemPoint.m */, - 4B8CC042135BFDF700B3E49F /* CCParticleSystemQuad.h */, - 4B8CC043135BFDF700B3E49F /* CCParticleSystemQuad.m */, - 4B8CC045135BFDF700B3E49F /* CCProgressTimer.h */, - 4B8CC046135BFDF700B3E49F /* CCProgressTimer.m */, - 4B8CC048135BFDF700B3E49F /* CCProtocols.h */, - 4B8CC049135BFDF700B3E49F /* CCRenderTexture.h */, - 4B8CC04A135BFDF700B3E49F /* CCRenderTexture.m */, - 4B8CC04C135BFDF700B3E49F /* CCRibbon.h */, - 4B8CC04D135BFDF700B3E49F /* CCRibbon.m */, - 4B8CC04F135BFDF700B3E49F /* CCScene.h */, - 4B8CC050135BFDF700B3E49F /* CCScene.m */, - 4B8CC052135BFDF700B3E49F /* CCScheduler.h */, - 4B8CC053135BFDF700B3E49F /* CCScheduler.m */, - 4B8CC055135BFDF700B3E49F /* CCSprite.h */, - 4B8CC056135BFDF700B3E49F /* CCSprite.m */, - 4B8CC058135BFDF700B3E49F /* CCSpriteBatchNode.h */, - 4B8CC059135BFDF700B3E49F /* CCSpriteBatchNode.m */, - 4B8CC05B135BFDF700B3E49F /* CCSpriteFrame.h */, - 4B8CC05C135BFDF700B3E49F /* CCSpriteFrame.m */, - 4B8CC05E135BFDF700B3E49F /* CCSpriteFrameCache.h */, - 4B8CC05F135BFDF700B3E49F /* CCSpriteFrameCache.m */, - 4B8CC061135BFDF700B3E49F /* CCTexture2D.h */, - 4B8CC062135BFDF700B3E49F /* CCTexture2D.m */, - 4B8CC064135BFDF700B3E49F /* CCTextureAtlas.h */, - 4B8CC065135BFDF700B3E49F /* CCTextureAtlas.m */, - 4B8CC067135BFDF700B3E49F /* CCTextureCache.h */, - 4B8CC068135BFDF700B3E49F /* CCTextureCache.m */, - 4B8CC06A135BFDF700B3E49F /* CCTexturePVR.h */, - 4B8CC06B135BFDF700B3E49F /* CCTexturePVR.m */, - 4B8CC06D135BFDF700B3E49F /* CCTileMapAtlas.h */, - 4B8CC06E135BFDF700B3E49F /* CCTileMapAtlas.m */, - 4B8CC070135BFDF700B3E49F /* CCTMXLayer.h */, - 4B8CC071135BFDF700B3E49F /* CCTMXLayer.m */, - 4B8CC073135BFDF700B3E49F /* CCTMXObjectGroup.h */, - 4B8CC074135BFDF700B3E49F /* CCTMXObjectGroup.m */, - 4B8CC076135BFDF700B3E49F /* CCTMXTiledMap.h */, - 4B8CC077135BFDF700B3E49F /* CCTMXTiledMap.m */, - 4B8CC079135BFDF700B3E49F /* CCTMXXMLParser.h */, - 4B8CC07A135BFDF700B3E49F /* CCTMXXMLParser.m */, - 4B8CC07C135BFDF700B3E49F /* CCTransition.h */, - 4B8CC07D135BFDF700B3E49F /* CCTransition.m */, - 4B8CC07F135BFDF700B3E49F /* CCTransitionPageTurn.h */, - 4B8CC080135BFDF700B3E49F /* CCTransitionPageTurn.m */, - 4B8CC082135BFDF700B3E49F /* CCTransitionRadial.h */, - 4B8CC083135BFDF700B3E49F /* CCTransitionRadial.m */, - 4B8CC085135BFDF800B3E49F /* ccTypes.h */, - 4B8CC086135BFDF800B3E49F /* cocos2d.h */, - 4B8CC087135BFDF800B3E49F /* cocos2d.m */, - 4B8CC089135BFDF800B3E49F /* CCGL.h */, - 4B8CC08A135BFDF800B3E49F /* CCNS.h */, - 4B8CC08B135BFDF800B3E49F /* CCDirectorIOS.h */, - 4B8CC08C135BFDF800B3E49F /* CCDirectorIOS.m */, - 4B8CC08E135BFDF800B3E49F /* CCTouchDelegateProtocol.h */, - 4B8CC08F135BFDF800B3E49F /* CCTouchDispatcher.h */, - 4B8CC090135BFDF800B3E49F /* CCTouchDispatcher.m */, - 4B8CC092135BFDF800B3E49F /* CCTouchHandler.h */, - 4B8CC093135BFDF800B3E49F /* CCTouchHandler.m */, - 4B8CC095135BFDF800B3E49F /* EAGLView.h */, - 4B8CC096135BFDF800B3E49F /* EAGLView.m */, - 4B8CC098135BFDF800B3E49F /* ES1Renderer.h */, - 4B8CC099135BFDF800B3E49F /* ES1Renderer.m */, - 4B8CC09B135BFDF800B3E49F /* ESRenderer.h */, - 4B8CC09C135BFDF800B3E49F /* glu.c */, - 4B8CC09E135BFDF800B3E49F /* glu.h */, - 4B8CC09F135BFDF800B3E49F /* CCDirectorMac.h */, - 4B8CC0A0135BFDF800B3E49F /* CCDirectorMac.m */, - 4B8CC0A2135BFDF800B3E49F /* CCEventDispatcher.h */, - 4B8CC0A3135BFDF800B3E49F /* CCEventDispatcher.m */, - 4B8CC0A5135BFDF800B3E49F /* MacGLView.h */, - 4B8CC0A6135BFDF800B3E49F /* MacGLView.m */, - 4B8CC0A8135BFDF800B3E49F /* MacWindow.h */, - 4B8CC0A9135BFDF800B3E49F /* MacWindow.m */, - 4B8CC0AB135BFDF800B3E49F /* base64.c */, - 4B8CC0AD135BFDF800B3E49F /* base64.h */, - 4B8CC0AE135BFDF800B3E49F /* CCArray.h */, - 4B8CC0AF135BFDF800B3E49F /* CCArray.m */, - 4B8CC0B1135BFDF800B3E49F /* ccCArray.h */, - 4B8CC0B2135BFDF800B3E49F /* CCFileUtils.h */, - 4B8CC0B3135BFDF800B3E49F /* CCFileUtils.m */, - 4B8CC0B5135BFDF800B3E49F /* CCProfiling.h */, - 4B8CC0B6135BFDF800B3E49F /* CCProfiling.m */, - 4B8CC0B8135BFDF800B3E49F /* ccUtils.c */, - 4B8CC0BA135BFDF800B3E49F /* ccUtils.h */, - 4B8CC0BB135BFDF800B3E49F /* CGPointExtension.h */, - 4B8CC0BC135BFDF800B3E49F /* CGPointExtension.m */, - 4B8CC0BE135BFDF800B3E49F /* OpenGL_Internal.h */, - 4B8CC0BF135BFDF800B3E49F /* TGAlib.h */, - 4B8CC0C0135BFDF800B3E49F /* TGAlib.m */, - 4B8CC0C2135BFDF800B3E49F /* TransformUtils.h */, - 4B8CC0C3135BFDF800B3E49F /* TransformUtils.m */, - 4B8CC0C5135BFDF800B3E49F /* uthash.h */, - 4B8CC0C6135BFDF800B3E49F /* utlist.h */, - 4B8CC0C7135BFDF800B3E49F /* ZipUtils.h */, - 4B8CC0C8135BFDF800B3E49F /* ZipUtils.m */, - ); - name = cocos2d; - sourceTree = ""; - }; - 4B8CC0CA135BFDF800B3E49F /* CocosDenshion */ = { - isa = PBXGroup; - children = ( - 4B8CC0CB135BFDF800B3E49F /* CDAudioManager.h */, - 4B8CC0CC135BFDF800B3E49F /* CDAudioManager.m */, - 4B8CC0CE135BFDF800B3E49F /* CDConfig.h */, - 4B8CC0CF135BFDF800B3E49F /* CDOpenALSupport.h */, - 4B8CC0D0135BFDF800B3E49F /* CDOpenALSupport.m */, - 4B8CC0D2135BFDF800B3E49F /* CocosDenshion.h */, - 4B8CC0D3135BFDF800B3E49F /* CocosDenshion.m */, - 4B8CC0D5135BFDF800B3E49F /* SimpleAudioEngine.h */, - 4B8CC0D6135BFDF800B3E49F /* SimpleAudioEngine.m */, - ); - name = CocosDenshion; - sourceTree = ""; - }; - 4B8CC0D8135BFDF800B3E49F /* cocoslive */ = { - isa = PBXGroup; - children = ( - 4B8CC0D9135BFDF800B3E49F /* CLScoreServerPost.h */, - 4B8CC0DA135BFDF800B3E49F /* CLScoreServerPost.m */, - 4B8CC0DC135BFDF800B3E49F /* CLScoreServerRequest.h */, - 4B8CC0DD135BFDF800B3E49F /* CLScoreServerRequest.m */, - 4B8CC0DF135BFDF800B3E49F /* cocoslive.h */, - 4B8CC0E0135BFDF800B3E49F /* cocoslive.m */, - ); - name = cocoslive; - sourceTree = ""; - }; - 4B8CC0E2135BFDF800B3E49F /* FontLabel */ = { - isa = PBXGroup; - children = ( - 4B8CC0E3135BFDF800B3E49F /* FontLabel.h */, - 4B8CC0E4135BFDF800B3E49F /* FontLabel.m */, - 4B8CC0E6135BFDF800B3E49F /* FontLabelStringDrawing.h */, - 4B8CC0E7135BFDF800B3E49F /* FontLabelStringDrawing.m */, - 4B8CC0E9135BFDF800B3E49F /* FontManager.h */, - 4B8CC0EA135BFDF800B3E49F /* FontManager.m */, - 4B8CC0EC135BFDF800B3E49F /* ZAttributedString.h */, - 4B8CC0ED135BFDF800B3E49F /* ZAttributedString.m */, - 4B8CC0EF135BFDF800B3E49F /* ZAttributedStringPrivate.h */, - 4B8CC0F0135BFDF800B3E49F /* ZFont.h */, - 4B8CC0F1135BFDF800B3E49F /* ZFont.m */, - ); - name = FontLabel; - sourceTree = ""; - }; - 4B8CC0F3135BFDF800B3E49F /* TouchJSON */ = { - isa = PBXGroup; - children = ( - 4B8CC0F4135BFDF800B3E49F /* CDataScanner.h */, - 4B8CC0F5135BFDF800B3E49F /* CDataScanner.m */, - 4B8CC0F7135BFDF800B3E49F /* CDataScanner_Extensions.h */, - 4B8CC0F8135BFDF800B3E49F /* CDataScanner_Extensions.m */, - 4B8CC0FA135BFDF800B3E49F /* NSCharacterSet_Extensions.h */, - 4B8CC0FB135BFDF800B3E49F /* NSCharacterSet_Extensions.m */, - 4B8CC0FD135BFDF800B3E49F /* NSDictionary_JSONExtensions.h */, - 4B8CC0FE135BFDF800B3E49F /* NSDictionary_JSONExtensions.m */, - 4B8CC100135BFDF800B3E49F /* NSScanner_Extensions.h */, - 4B8CC101135BFDF800B3E49F /* NSScanner_Extensions.m */, - 4B8CC103135BFDF800B3E49F /* CJSONDeserializer.h */, - 4B8CC104135BFDF800B3E49F /* CJSONDeserializer.m */, - 4B8CC106135BFDF800B3E49F /* CJSONScanner.h */, - 4B8CC107135BFDF800B3E49F /* CJSONScanner.m */, - 4B8CC109135BFDF800B3E49F /* CJSONSerializer.h */, - 4B8CC10A135BFDF800B3E49F /* CJSONSerializer.m */, - ); - name = TouchJSON; - sourceTree = ""; - }; - 4B8CC10C135BFDF800B3E49F /* Box2D */ = { - isa = PBXGroup; - children = ( - 4B8CC10D135BFDF800B3E49F /* Box2D.h */, - 4B8CC10E135BFDF800B3E49F /* b2BroadPhase.cpp */, - 4B8CC110135BFDF800B3E49F /* b2BroadPhase.h */, - 4B8CC111135BFDF800B3E49F /* b2CollideCircle.cpp */, - 4B8CC113135BFDF900B3E49F /* b2CollidePolygon.cpp */, - 4B8CC115135BFDF900B3E49F /* b2Collision.cpp */, - 4B8CC117135BFDF900B3E49F /* b2Collision.h */, - 4B8CC118135BFDF900B3E49F /* b2Distance.cpp */, - 4B8CC11A135BFDF900B3E49F /* b2Distance.h */, - 4B8CC11B135BFDF900B3E49F /* b2DynamicTree.cpp */, - 4B8CC11D135BFDF900B3E49F /* b2DynamicTree.h */, - 4B8CC11E135BFDF900B3E49F /* b2TimeOfImpact.cpp */, - 4B8CC120135BFDF900B3E49F /* b2TimeOfImpact.h */, - 4B8CC121135BFDF900B3E49F /* b2CircleShape.cpp */, - 4B8CC123135BFDF900B3E49F /* b2CircleShape.h */, - 4B8CC124135BFDF900B3E49F /* b2PolygonShape.cpp */, - 4B8CC126135BFDF900B3E49F /* b2PolygonShape.h */, - 4B8CC127135BFDF900B3E49F /* b2Shape.h */, - 4B8CC128135BFDF900B3E49F /* b2BlockAllocator.cpp */, - 4B8CC12A135BFDF900B3E49F /* b2BlockAllocator.h */, - 4B8CC12B135BFDF900B3E49F /* b2Math.cpp */, - 4B8CC12D135BFDF900B3E49F /* b2Math.h */, - 4B8CC12E135BFDF900B3E49F /* b2Settings.cpp */, - 4B8CC130135BFDF900B3E49F /* b2Settings.h */, - 4B8CC131135BFDF900B3E49F /* b2StackAllocator.cpp */, - 4B8CC133135BFDF900B3E49F /* b2StackAllocator.h */, - 4B8CC134135BFDF900B3E49F /* b2Body.cpp */, - 4B8CC136135BFDF900B3E49F /* b2Body.h */, - 4B8CC137135BFDF900B3E49F /* b2ContactManager.cpp */, - 4B8CC139135BFDF900B3E49F /* b2ContactManager.h */, - 4B8CC13A135BFDF900B3E49F /* b2Fixture.cpp */, - 4B8CC13C135BFDF900B3E49F /* b2Fixture.h */, - 4B8CC13D135BFDF900B3E49F /* b2Island.cpp */, - 4B8CC13F135BFDF900B3E49F /* b2Island.h */, - 4B8CC140135BFDF900B3E49F /* b2TimeStep.h */, - 4B8CC141135BFDF900B3E49F /* b2World.cpp */, - 4B8CC143135BFDF900B3E49F /* b2World.h */, - 4B8CC144135BFDF900B3E49F /* b2WorldCallbacks.cpp */, - 4B8CC146135BFDF900B3E49F /* b2WorldCallbacks.h */, - 4B8CC147135BFDF900B3E49F /* b2CircleContact.cpp */, - 4B8CC149135BFDF900B3E49F /* b2CircleContact.h */, - 4B8CC14A135BFDF900B3E49F /* b2Contact.cpp */, - 4B8CC14C135BFDF900B3E49F /* b2Contact.h */, - 4B8CC14D135BFDF900B3E49F /* b2ContactSolver.cpp */, - 4B8CC14F135BFDF900B3E49F /* b2ContactSolver.h */, - 4B8CC150135BFDF900B3E49F /* b2NullContact.h */, - 4B8CC151135BFDF900B3E49F /* b2PolygonAndCircleContact.cpp */, - 4B8CC153135BFDF900B3E49F /* b2PolygonAndCircleContact.h */, - 4B8CC154135BFDF900B3E49F /* b2PolygonContact.cpp */, - 4B8CC156135BFDF900B3E49F /* b2PolygonContact.h */, - 4B8CC157135BFDF900B3E49F /* b2TOISolver.cpp */, - 4B8CC159135BFDF900B3E49F /* b2TOISolver.h */, - 4B8CC15A135BFDF900B3E49F /* b2DistanceJoint.cpp */, - 4B8CC15C135BFDF900B3E49F /* b2DistanceJoint.h */, - 4B8CC15D135BFDF900B3E49F /* b2FrictionJoint.cpp */, - 4B8CC15F135BFDF900B3E49F /* b2FrictionJoint.h */, - 4B8CC160135BFDF900B3E49F /* b2GearJoint.cpp */, - 4B8CC162135BFDF900B3E49F /* b2GearJoint.h */, - 4B8CC163135BFDF900B3E49F /* b2Joint.cpp */, - 4B8CC165135BFDF900B3E49F /* b2Joint.h */, - 4B8CC166135BFDF900B3E49F /* b2LineJoint.cpp */, - 4B8CC168135BFDF900B3E49F /* b2LineJoint.h */, - 4B8CC169135BFDF900B3E49F /* b2MouseJoint.cpp */, - 4B8CC16B135BFDF900B3E49F /* b2MouseJoint.h */, - 4B8CC16C135BFDF900B3E49F /* b2PrismaticJoint.cpp */, - 4B8CC16E135BFDF900B3E49F /* b2PrismaticJoint.h */, - 4B8CC16F135BFDF900B3E49F /* b2PulleyJoint.cpp */, - 4B8CC171135BFDF900B3E49F /* b2PulleyJoint.h */, - 4B8CC172135BFDF900B3E49F /* b2RevoluteJoint.cpp */, - 4B8CC174135BFDF900B3E49F /* b2RevoluteJoint.h */, - 4B8CC175135BFDF900B3E49F /* b2WeldJoint.cpp */, - 4B8CC177135BFDF900B3E49F /* b2WeldJoint.h */, - ); - name = Box2D; - sourceTree = ""; - }; - 4B8CC178135BFDF900B3E49F /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 4B8CC179135BFDF900B3E49F /* Prefix.pch */, - 4B8CC17A135BFDF900B3E49F /* main.m */, - ); - name = "Supporting Files"; - path = Littlest; - sourceTree = ""; - }; - 4B8CC190135BFE3B00B3E49F /* libs */ = { - isa = PBXGroup; - children = ( - 4B8CC10C135BFDF800B3E49F /* Box2D */, - 4B8CBFD9135BFDF600B3E49F /* cocos2d */, - 4B8CC0CA135BFDF800B3E49F /* CocosDenshion */, - 4B8CC0D8135BFDF800B3E49F /* cocoslive */, - 4B8CC0E2135BFDF800B3E49F /* FontLabel */, - 4B8CC0F3135BFDF800B3E49F /* TouchJSON */, - ); - name = libs; - sourceTree = ""; - }; - 4B8CC191135BFEDE00B3E49F /* Foundation */ = { - isa = PBXGroup; - children = ( - 4B8CC192135BFEDE00B3E49F /* Common */, - 4B8CC19A135BFEDE00B3E49F /* Containers */, - 4B8CC19E135BFEDE00B3E49F /* GraphicsServices */, - 4B8CC1A6135BFEDE00B3E49F /* Hash */, - 4B8CC1A8135BFEDE00B3E49F /* Math */, - 4B8CC1B0135BFEDE00B3E49F /* Memory */, - 4B8CC1B6135BFEDE00B3E49F /* OSInterface */, - 4B8CC1BD135BFEDE00B3E49F /* Synchronization */, - ); - path = Foundation; - sourceTree = ""; - }; - 4B8CC192135BFEDE00B3E49F /* Common */ = { - isa = PBXGroup; - children = ( - 4B8CC193135BFEDE00B3E49F /* Assert.h */, - 4B8CC194135BFEDE00B3E49F /* Base.h */, - 4B8CC195135BFEDE00B3E49F /* GlobalDefines.h */, - 4B8CC196135BFEDE00B3E49F /* GlobalInclude.h */, - 4B8CC197135BFEDE00B3E49F /* GlobalTypes.h */, - 4B8CC198135BFEDE00B3E49F /* Print.h */, - 4B8CC199135BFEDE00B3E49F /* Singleton.h */, - ); - path = Common; - sourceTree = ""; - }; - 4B8CC19A135BFEDE00B3E49F /* Containers */ = { - isa = PBXGroup; - children = ( - 4B8CC19B135BFEDE00B3E49F /* BitEncoder.h */, - 4B8CC19C135BFEDE00B3E49F /* LocklessRingBuffer.cpp */, - 4B8CC19D135BFEDE00B3E49F /* LocklessRingBuffer.h */, - ); - path = Containers; - sourceTree = ""; - }; - 4B8CC19E135BFEDE00B3E49F /* GraphicsServices */ = { - isa = PBXGroup; - children = ( - 4B8CC19F135BFEDE00B3E49F /* Geometry */, - 4B8CC1A2135BFEDE00B3E49F /* OpenGLServices.h */, - 4B8CC1A3135BFEDE00B3E49F /* OpenGLServices.mm */, - 4B8CC1A4135BFEDE00B3E49F /* RenderTarget.h */, - 4B8CC1A5135BFEDE00B3E49F /* RenderTarget.mm */, - ); - path = GraphicsServices; - sourceTree = ""; - }; - 4B8CC19F135BFEDE00B3E49F /* Geometry */ = { - isa = PBXGroup; - children = ( - 4B8CC1A0135BFEDE00B3E49F /* BasicPrimitives.h */, - 4B8CC1A1135BFEDE00B3E49F /* BasicPrimitives.mm */, - ); - path = Geometry; - sourceTree = ""; - }; - 4B8CC1A6135BFEDE00B3E49F /* Hash */ = { - isa = PBXGroup; - children = ( - 4B8CC1A7135BFEDE00B3E49F /* DJB2.h */, - ); - path = Hash; - sourceTree = ""; - }; - 4B8CC1A8135BFEDE00B3E49F /* Math */ = { - isa = PBXGroup; - children = ( - 4B8CC1A9135BFEDE00B3E49F /* MathDefines.h */, - 4B8CC1AA135BFEDE00B3E49F /* MathInclude.h */, - 4B8CC1AB135BFEDE00B3E49F /* MathOperations.h */, - 4B8CC1AC135BFEDE00B3E49F /* MathTypes.h */, - 4B8CC1AD135BFEDE00B3E49F /* Matrix.h */, - 4B8CC1AE135BFEDE00B3E49F /* Quaternion.h */, - 4B8CC1AF135BFEDE00B3E49F /* Vector.h */, - ); - path = Math; - sourceTree = ""; - }; - 4B8CC1B0135BFEDE00B3E49F /* Memory */ = { - isa = PBXGroup; - children = ( - 4B8CC1B1135BFEDE00B3E49F /* MemoryBitset.cpp */, - 4B8CC1B2135BFEDE00B3E49F /* MemoryBitset.h */, - 4B8CC1B3135BFEDE00B3E49F /* MemoryHeap.cpp */, - 4B8CC1B4135BFEDE00B3E49F /* MemoryHeap.h */, - 4B8CC1B5135BFEDE00B3E49F /* MemoryLinear.h */, - ); - path = Memory; - sourceTree = ""; - }; - 4B8CC1B6135BFEDE00B3E49F /* OSInterface */ = { - isa = PBXGroup; - children = ( - 4B8CC1B7135BFEDE00B3E49F /* GLView.h */, - 4B8CC1B8135BFEDE00B3E49F /* GLView.m */, - 4B8CC1B9135BFEDE00B3E49F /* LittlestAppDelegate.h */, - 4B8CC1BA135BFEDE00B3E49F /* LittlestAppDelegate.m */, - 4B8CC1BB135BFEDE00B3E49F /* LittlestViewController.h */, - 4B8CC1BC135BFEDE00B3E49F /* LittlestViewController.m */, - ); - path = OSInterface; - sourceTree = ""; - }; - 4B8CC1BD135BFEDE00B3E49F /* Synchronization */ = { - isa = PBXGroup; - children = ( - 4B8CC1BE135BFEDE00B3E49F /* Atomic32Bit.h */, - 4B8CC1BF135BFEDE00B3E49F /* MemorySync.h */, - ); - path = Synchronization; - sourceTree = ""; - }; - 4B8CC1C0135BFEDE00B3E49F /* Game */ = { - isa = PBXGroup; - children = ( - 4B8CC1C1135BFEDE00B3E49F /* Scene */, - ); - path = Game; - sourceTree = ""; - }; - 4B8CC1C1135BFEDE00B3E49F /* Scene */ = { - isa = PBXGroup; - children = ( - 4B8CC1C2135BFEDE00B3E49F /* Scene.h */, - ); - path = Scene; - sourceTree = ""; - }; - 4BE72E341367CC9A00E8F668 /* OS */ = { - isa = PBXGroup; - children = ( - 4BE72E381367CD1400E8F668 /* GameConfig.h */, - 4BE72E351367CCB600E8F668 /* RootViewController.h */, - 4BE72E361367CCB600E8F668 /* RootViewController.m */, - ); - name = OS; - sourceTree = ""; - }; - 4BE72E391367CE3000E8F668 /* Engine */ = { - isa = PBXGroup; - children = ( - 4BE72E3A1367CE3900E8F668 /* Render */, - ); - name = Engine; - sourceTree = ""; - }; - 4BE72E3A1367CE3900E8F668 /* Render */ = { - isa = PBXGroup; - children = ( - 4BE72E3B1367CE5100E8F668 /* GLES-Render.h */, - 4BE72E3C1367CE5100E8F668 /* GLES-Render.mm */, - ); - name = Render; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 4B8CBFAF135BFDF600B3E49F /* Littlest */ = { - isa = PBXNativeTarget; - buildConfigurationList = 4B8CC18D135BFDF900B3E49F /* Build configuration list for PBXNativeTarget "Littlest" */; - buildPhases = ( - 4B8CBFAC135BFDF600B3E49F /* Sources */, - 4B8CBFAD135BFDF600B3E49F /* Frameworks */, - 4B8CBFAE135BFDF600B3E49F /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Littlest; - productName = Littlest; - productReference = 4B8CBFB0135BFDF600B3E49F /* Littlest.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 4B8CBFA7135BFDF600B3E49F /* Project object */ = { - isa = PBXProject; - buildConfigurationList = 4B8CBFAA135BFDF600B3E49F /* Build configuration list for PBXProject "Littlest" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 4B8CBFA5135BFDF600B3E49F; - productRefGroup = 4B8CBFB1135BFDF600B3E49F /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 4B8CBFAF135BFDF600B3E49F /* Littlest */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 4B8CBFAE135BFDF600B3E49F /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 4B8CBFC7135BFDF600B3E49F /* Default.png in Resources */, - 4B8CBFC9135BFDF600B3E49F /* fps_images.png in Resources */, - 4B8CBFCB135BFDF600B3E49F /* Icon-72.png in Resources */, - 4B8CBFCD135BFDF600B3E49F /* Icon-Small-50.png in Resources */, - 4B8CBFCF135BFDF600B3E49F /* Icon-Small.png in Resources */, - 4B8CBFD1135BFDF600B3E49F /* Icon-Small@2x.png in Resources */, - 4B8CBFD3135BFDF600B3E49F /* Icon.png in Resources */, - 4B8CBFD5135BFDF600B3E49F /* Icon@2x.png in Resources */, - 4B8CBFD8135BFDF600B3E49F /* iTunesArtwork in Resources */, - 4B8CC18A135BFDF900B3E49F /* blocks.png in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 4B8CBFAC135BFDF600B3E49F /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 4B8CBFDC135BFDF600B3E49F /* CCAction.m in Sources */, - 4B8CBFDF135BFDF600B3E49F /* CCActionCamera.m in Sources */, - 4B8CBFE2135BFDF600B3E49F /* CCActionEase.m in Sources */, - 4B8CBFE5135BFDF600B3E49F /* CCActionGrid.m in Sources */, - 4B8CBFE8135BFDF600B3E49F /* CCActionGrid3D.m in Sources */, - 4B8CBFEB135BFDF600B3E49F /* CCActionInstant.m in Sources */, - 4B8CBFEE135BFDF600B3E49F /* CCActionInterval.m in Sources */, - 4B8CBFF1135BFDF600B3E49F /* CCActionManager.m in Sources */, - 4B8CBFF4135BFDF600B3E49F /* CCActionPageTurn3D.m in Sources */, - 4B8CBFF7135BFDF600B3E49F /* CCActionProgressTimer.m in Sources */, - 4B8CBFFA135BFDF600B3E49F /* CCActionTiledGrid.m in Sources */, - 4B8CBFFD135BFDF700B3E49F /* CCActionTween.m in Sources */, - 4B8CC000135BFDF700B3E49F /* CCAnimation.m in Sources */, - 4B8CC003135BFDF700B3E49F /* CCAnimationCache.m in Sources */, - 4B8CC006135BFDF700B3E49F /* CCAtlasNode.m in Sources */, - 4B8CC009135BFDF700B3E49F /* CCBlockSupport.m in Sources */, - 4B8CC00C135BFDF700B3E49F /* CCCamera.m in Sources */, - 4B8CC010135BFDF700B3E49F /* CCConfiguration.m in Sources */, - 4B8CC013135BFDF700B3E49F /* CCDirector.m in Sources */, - 4B8CC016135BFDF700B3E49F /* CCDrawingPrimitives.m in Sources */, - 4B8CC019135BFDF700B3E49F /* CCGrabber.m in Sources */, - 4B8CC01C135BFDF700B3E49F /* CCGrid.m in Sources */, - 4B8CC01F135BFDF700B3E49F /* CCLabelAtlas.m in Sources */, - 4B8CC022135BFDF700B3E49F /* CCLabelBMFont.m in Sources */, - 4B8CC025135BFDF700B3E49F /* CCLabelTTF.m in Sources */, - 4B8CC028135BFDF700B3E49F /* CCLayer.m in Sources */, - 4B8CC02C135BFDF700B3E49F /* CCMenu.m in Sources */, - 4B8CC02F135BFDF700B3E49F /* CCMenuItem.m in Sources */, - 4B8CC032135BFDF700B3E49F /* CCMotionStreak.m in Sources */, - 4B8CC035135BFDF700B3E49F /* CCNode.m in Sources */, - 4B8CC038135BFDF700B3E49F /* CCParallaxNode.m in Sources */, - 4B8CC03B135BFDF700B3E49F /* CCParticleExamples.m in Sources */, - 4B8CC03E135BFDF700B3E49F /* CCParticleSystem.m in Sources */, - 4B8CC041135BFDF700B3E49F /* CCParticleSystemPoint.m in Sources */, - 4B8CC044135BFDF700B3E49F /* CCParticleSystemQuad.m in Sources */, - 4B8CC047135BFDF700B3E49F /* CCProgressTimer.m in Sources */, - 4B8CC04B135BFDF700B3E49F /* CCRenderTexture.m in Sources */, - 4B8CC04E135BFDF700B3E49F /* CCRibbon.m in Sources */, - 4B8CC051135BFDF700B3E49F /* CCScene.m in Sources */, - 4B8CC054135BFDF700B3E49F /* CCScheduler.m in Sources */, - 4B8CC057135BFDF700B3E49F /* CCSprite.m in Sources */, - 4B8CC05A135BFDF700B3E49F /* CCSpriteBatchNode.m in Sources */, - 4B8CC05D135BFDF700B3E49F /* CCSpriteFrame.m in Sources */, - 4B8CC060135BFDF700B3E49F /* CCSpriteFrameCache.m in Sources */, - 4B8CC063135BFDF700B3E49F /* CCTexture2D.m in Sources */, - 4B8CC066135BFDF700B3E49F /* CCTextureAtlas.m in Sources */, - 4B8CC069135BFDF700B3E49F /* CCTextureCache.m in Sources */, - 4B8CC06C135BFDF700B3E49F /* CCTexturePVR.m in Sources */, - 4B8CC06F135BFDF700B3E49F /* CCTileMapAtlas.m in Sources */, - 4B8CC072135BFDF700B3E49F /* CCTMXLayer.m in Sources */, - 4B8CC075135BFDF700B3E49F /* CCTMXObjectGroup.m in Sources */, - 4B8CC078135BFDF700B3E49F /* CCTMXTiledMap.m in Sources */, - 4B8CC07B135BFDF700B3E49F /* CCTMXXMLParser.m in Sources */, - 4B8CC07E135BFDF700B3E49F /* CCTransition.m in Sources */, - 4B8CC081135BFDF700B3E49F /* CCTransitionPageTurn.m in Sources */, - 4B8CC084135BFDF800B3E49F /* CCTransitionRadial.m in Sources */, - 4B8CC088135BFDF800B3E49F /* cocos2d.m in Sources */, - 4B8CC08D135BFDF800B3E49F /* CCDirectorIOS.m in Sources */, - 4B8CC091135BFDF800B3E49F /* CCTouchDispatcher.m in Sources */, - 4B8CC094135BFDF800B3E49F /* CCTouchHandler.m in Sources */, - 4B8CC097135BFDF800B3E49F /* EAGLView.m in Sources */, - 4B8CC09A135BFDF800B3E49F /* ES1Renderer.m in Sources */, - 4B8CC09D135BFDF800B3E49F /* glu.c in Sources */, - 4B8CC0A1135BFDF800B3E49F /* CCDirectorMac.m in Sources */, - 4B8CC0A4135BFDF800B3E49F /* CCEventDispatcher.m in Sources */, - 4B8CC0A7135BFDF800B3E49F /* MacGLView.m in Sources */, - 4B8CC0AA135BFDF800B3E49F /* MacWindow.m in Sources */, - 4B8CC0AC135BFDF800B3E49F /* base64.c in Sources */, - 4B8CC0B0135BFDF800B3E49F /* CCArray.m in Sources */, - 4B8CC0B4135BFDF800B3E49F /* CCFileUtils.m in Sources */, - 4B8CC0B7135BFDF800B3E49F /* CCProfiling.m in Sources */, - 4B8CC0B9135BFDF800B3E49F /* ccUtils.c in Sources */, - 4B8CC0BD135BFDF800B3E49F /* CGPointExtension.m in Sources */, - 4B8CC0C1135BFDF800B3E49F /* TGAlib.m in Sources */, - 4B8CC0C4135BFDF800B3E49F /* TransformUtils.m in Sources */, - 4B8CC0C9135BFDF800B3E49F /* ZipUtils.m in Sources */, - 4B8CC0CD135BFDF800B3E49F /* CDAudioManager.m in Sources */, - 4B8CC0D1135BFDF800B3E49F /* CDOpenALSupport.m in Sources */, - 4B8CC0D4135BFDF800B3E49F /* CocosDenshion.m in Sources */, - 4B8CC0D7135BFDF800B3E49F /* SimpleAudioEngine.m in Sources */, - 4B8CC0DB135BFDF800B3E49F /* CLScoreServerPost.m in Sources */, - 4B8CC0DE135BFDF800B3E49F /* CLScoreServerRequest.m in Sources */, - 4B8CC0E1135BFDF800B3E49F /* cocoslive.m in Sources */, - 4B8CC0E5135BFDF800B3E49F /* FontLabel.m in Sources */, - 4B8CC0E8135BFDF800B3E49F /* FontLabelStringDrawing.m in Sources */, - 4B8CC0EB135BFDF800B3E49F /* FontManager.m in Sources */, - 4B8CC0EE135BFDF800B3E49F /* ZAttributedString.m in Sources */, - 4B8CC0F2135BFDF800B3E49F /* ZFont.m in Sources */, - 4B8CC0F6135BFDF800B3E49F /* CDataScanner.m in Sources */, - 4B8CC0F9135BFDF800B3E49F /* CDataScanner_Extensions.m in Sources */, - 4B8CC0FC135BFDF800B3E49F /* NSCharacterSet_Extensions.m in Sources */, - 4B8CC0FF135BFDF800B3E49F /* NSDictionary_JSONExtensions.m in Sources */, - 4B8CC102135BFDF800B3E49F /* NSScanner_Extensions.m in Sources */, - 4B8CC105135BFDF800B3E49F /* CJSONDeserializer.m in Sources */, - 4B8CC108135BFDF800B3E49F /* CJSONScanner.m in Sources */, - 4B8CC10B135BFDF800B3E49F /* CJSONSerializer.m in Sources */, - 4B8CC10F135BFDF800B3E49F /* b2BroadPhase.cpp in Sources */, - 4B8CC112135BFDF800B3E49F /* b2CollideCircle.cpp in Sources */, - 4B8CC114135BFDF900B3E49F /* b2CollidePolygon.cpp in Sources */, - 4B8CC116135BFDF900B3E49F /* b2Collision.cpp in Sources */, - 4B8CC119135BFDF900B3E49F /* b2Distance.cpp in Sources */, - 4B8CC11C135BFDF900B3E49F /* b2DynamicTree.cpp in Sources */, - 4B8CC11F135BFDF900B3E49F /* b2TimeOfImpact.cpp in Sources */, - 4B8CC122135BFDF900B3E49F /* b2CircleShape.cpp in Sources */, - 4B8CC125135BFDF900B3E49F /* b2PolygonShape.cpp in Sources */, - 4B8CC129135BFDF900B3E49F /* b2BlockAllocator.cpp in Sources */, - 4B8CC12C135BFDF900B3E49F /* b2Math.cpp in Sources */, - 4B8CC12F135BFDF900B3E49F /* b2Settings.cpp in Sources */, - 4B8CC132135BFDF900B3E49F /* b2StackAllocator.cpp in Sources */, - 4B8CC135135BFDF900B3E49F /* b2Body.cpp in Sources */, - 4B8CC138135BFDF900B3E49F /* b2ContactManager.cpp in Sources */, - 4B8CC13B135BFDF900B3E49F /* b2Fixture.cpp in Sources */, - 4B8CC13E135BFDF900B3E49F /* b2Island.cpp in Sources */, - 4B8CC142135BFDF900B3E49F /* b2World.cpp in Sources */, - 4B8CC145135BFDF900B3E49F /* b2WorldCallbacks.cpp in Sources */, - 4B8CC148135BFDF900B3E49F /* b2CircleContact.cpp in Sources */, - 4B8CC14B135BFDF900B3E49F /* b2Contact.cpp in Sources */, - 4B8CC14E135BFDF900B3E49F /* b2ContactSolver.cpp in Sources */, - 4B8CC152135BFDF900B3E49F /* b2PolygonAndCircleContact.cpp in Sources */, - 4B8CC155135BFDF900B3E49F /* b2PolygonContact.cpp in Sources */, - 4B8CC158135BFDF900B3E49F /* b2TOISolver.cpp in Sources */, - 4B8CC15B135BFDF900B3E49F /* b2DistanceJoint.cpp in Sources */, - 4B8CC15E135BFDF900B3E49F /* b2FrictionJoint.cpp in Sources */, - 4B8CC161135BFDF900B3E49F /* b2GearJoint.cpp in Sources */, - 4B8CC164135BFDF900B3E49F /* b2Joint.cpp in Sources */, - 4B8CC167135BFDF900B3E49F /* b2LineJoint.cpp in Sources */, - 4B8CC16A135BFDF900B3E49F /* b2MouseJoint.cpp in Sources */, - 4B8CC16D135BFDF900B3E49F /* b2PrismaticJoint.cpp in Sources */, - 4B8CC170135BFDF900B3E49F /* b2PulleyJoint.cpp in Sources */, - 4B8CC173135BFDF900B3E49F /* b2RevoluteJoint.cpp in Sources */, - 4B8CC176135BFDF900B3E49F /* b2WeldJoint.cpp in Sources */, - 4B8CC17B135BFDF900B3E49F /* main.m in Sources */, - 4B8CC17E135BFDF900B3E49F /* AppDelegate.mm in Sources */, - 4B8CC184135BFDF900B3E49F /* HelloWorldLayer.mm in Sources */, - 4B8CC1C3135BFEDE00B3E49F /* LocklessRingBuffer.cpp in Sources */, - 4B8CC1C4135BFEDE00B3E49F /* BasicPrimitives.mm in Sources */, - 4B8CC1C5135BFEDE00B3E49F /* OpenGLServices.mm in Sources */, - 4B8CC1C6135BFEDE00B3E49F /* RenderTarget.mm in Sources */, - 4B8CC1C7135BFEDE00B3E49F /* MemoryBitset.cpp in Sources */, - 4B8CC1C8135BFEDE00B3E49F /* MemoryHeap.cpp in Sources */, - 4B8CC1C9135BFEDE00B3E49F /* GLView.m in Sources */, - 4B8CC1CA135BFEDE00B3E49F /* LittlestAppDelegate.m in Sources */, - 4B8CC1CB135BFEDE00B3E49F /* LittlestViewController.m in Sources */, - 4BE72E371367CCB600E8F668 /* RootViewController.m in Sources */, - 4BE72E3D1367CE5100E8F668 /* GLES-Render.mm in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 4B8CC18B135BFDF900B3E49F /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - DEBUG, - "COCOS2D_DEBUG=1", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_VERSION = com.apple.compilers.llvmgcc42; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 4.3; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 4B8CC18C135BFDF900B3E49F /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_PREPROCESSOR_DEFINITIONS = NDEBUG; - GCC_VERSION = com.apple.compilers.llvmgcc42; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 4.3; - OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; - SDKROOT = iphoneos; - }; - name = Release; - }; - 4B8CC18E135BFDF900B3E49F /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = NO; - GCC_CHAR_IS_UNSIGNED_CHAR = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_OBJC_GC = supported; - GCC_FAST_MATH = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = Littlest/Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - DEBUG, - "COCOS2D_DEBUG=1", - __iOS__, - ); - "GCC_THUMB_SUPPORT[arch=armv6]" = ""; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_MISSING_NEWLINE = NO; - GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES; - GCC_WARN_UNUSED_FUNCTION = NO; - GCC_WARN_UNUSED_PARAMETER = NO; - HEADER_SEARCH_PATHS = ( - "$(PROJECT_DIR)/Littlest/libs", - "$(PROJECT_DIR)/Littlest", - ); - INFOPLIST_FILE = Littlest/Resources/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 4.3; - OTHER_LDFLAGS = "-lz"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TARGETED_DEVICE_FAMILY = "1,2"; - USER_HEADER_SEARCH_PATHS = ""; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - 4B8CC18F135BFDF900B3E49F /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = YES; - GCC_CHAR_IS_UNSIGNED_CHAR = YES; - GCC_ENABLE_OBJC_GC = supported; - GCC_FAST_MATH = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = Littlest/Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - NDEBUG, - __iOS__, - ); - "GCC_THUMB_SUPPORT[arch=armv6]" = ""; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_MISSING_NEWLINE = NO; - GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES; - GCC_WARN_UNUSED_FUNCTION = NO; - GCC_WARN_UNUSED_PARAMETER = NO; - HEADER_SEARCH_PATHS = ( - "$(PROJECT_DIR)/Littlest/libs", - "$(PROJECT_DIR)/Littlest", - ); - INFOPLIST_FILE = Littlest/Resources/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 4.3; - OTHER_LDFLAGS = "-lz"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TARGETED_DEVICE_FAMILY = "1,2"; - USER_HEADER_SEARCH_PATHS = ""; - VALIDATE_PRODUCT = YES; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 4B8CBFAA135BFDF600B3E49F /* Build configuration list for PBXProject "Littlest" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4B8CC18B135BFDF900B3E49F /* Debug */, - 4B8CC18C135BFDF900B3E49F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 4B8CC18D135BFDF900B3E49F /* Build configuration list for PBXNativeTarget "Littlest" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4B8CC18E135BFDF900B3E49F /* Debug */, - 4B8CC18F135BFDF900B3E49F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 4B8CBFA7135BFDF600B3E49F /* Project object */; -} diff --git a/Littlest.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Littlest.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index d89bc53..0000000 --- a/Littlest.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/Littlest.xcodeproj/project.xcworkspace/xcuserdata/dorischen.xcuserdatad/UserInterfaceState.xcuserstate b/Littlest.xcodeproj/project.xcworkspace/xcuserdata/dorischen.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index de53970..0000000 --- a/Littlest.xcodeproj/project.xcworkspace/xcuserdata/dorischen.xcuserdatad/UserInterfaceState.xcuserstate +++ /dev/null @@ -1,36875 +0,0 @@ - - - - - $archiver - NSKeyedArchiver - $objects - - $null - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 2 - - - CF$UID - 3 - - - CF$UID - 4 - - - CF$UID - 5 - - - CF$UID - 6 - - - CF$UID - 7 - - - CF$UID - 8 - - - CF$UID - 9 - - - CF$UID - 10 - - - CF$UID - 11 - - - CF$UID - 12 - - - CF$UID - 13 - - - CF$UID - 14 - - - CF$UID - 15 - - - CF$UID - 16 - - - CF$UID - 17 - - - CF$UID - 18 - - - CF$UID - 19 - - - CF$UID - 20 - - - CF$UID - 21 - - - CF$UID - 22 - - - NS.objects - - - CF$UID - 23 - - - CF$UID - 163 - - - CF$UID - 276 - - - CF$UID - 340 - - - CF$UID - 404 - - - CF$UID - 468 - - - CF$UID - 913 - - - CF$UID - 977 - - - CF$UID - 1041 - - - CF$UID - 1198 - - - CF$UID - 1288 - - - CF$UID - 1379 - - - CF$UID - 1443 - - - CF$UID - 1507 - - - CF$UID - 1598 - - - CF$UID - 1685 - - - CF$UID - 1749 - - - CF$UID - 1836 - - - CF$UID - 1926 - - - CF$UID - 1990 - - - CF$UID - 2054 - - - - D6B50A5F-6584-4D21-9035-AB198AFCDC2A - E9F19A15-53F3-4CF8-9810-05DB5D70D8B8 - 91D127CA-A396-4C5D-A14D-DBA7CB6BC492 - 71FFC500-3C53-4D7A-ABCA-4902ED2D43B7 - 0C40D9D4-4550-4415-AE1C-D9838E93B1BF - IDEWorkspaceDocument - BBA28386-C998-482A-A4CC-85F85F452810 - CEE79290-B2E9-4AB1-AF5F-F5E449823A41 - 2CEE9F7E-99CE-400E-AE44-BC46F997F577 - 87D93973-8AED-4550-AC40-BD5CD86D4E53 - 287AB00E-D0B9-49CF-8424-E1ECCB2C3E32 - 28C38E80-47C9-4929-8742-4900354C1F50 - 71EA20D8-64B9-4F7E-A4FF-634147920FD5 - B066DAC4-DD04-4D6A-9F4D-33CFD48F871F - 467B65F1-787F-447A-B712-B1E1351F71A6 - E10248F1-B560-4534-B44D-426F036CBB91 - E5A1741C-704E-4107-AD84-CA77CC000C66 - 66B5EDB0-04BA-48FC-93A4-8A4F206DE41D - EFDF78AB-62AC-4077-BBA8-BB7DBC36F55E - 68242A45-90A9-43F4-B8D1-513D040B74DF - 358E0463-4541-45B7-94C3-EB8594ECDFB9 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 24 - - - CF$UID - 25 - - - CF$UID - 26 - - - CF$UID - 27 - - - CF$UID - 28 - - - CF$UID - 29 - - - NS.objects - - - CF$UID - 30 - - - CF$UID - 161 - - - CF$UID - 39 - - - CF$UID - 24 - - - CF$UID - 162 - - - CF$UID - 2 - - - - IDEWorkspaceTabController_94E279B3-D43A-4045-AFED-03CDB1C0BFC8 - IDEOrderedWorkspaceTabControllers - IDEWindowToolbarIsVisible - IDEActiveWorkspaceTabController - IDEWindowFrame - IDEWorkspaceWindowControllerUniqueIdentifier - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 31 - - - CF$UID - 32 - - - CF$UID - 33 - - - CF$UID - 34 - - - CF$UID - 35 - - - CF$UID - 36 - - - CF$UID - 37 - - - NS.objects - - - CF$UID - 38 - - - CF$UID - 39 - - - CF$UID - 40 - - - CF$UID - 53 - - - CF$UID - 88 - - - CF$UID - 39 - - - CF$UID - 97 - - - - AssistantEditorsLayout - IDEShowNavigator - IDEWorkspaceTabControllerUtilityAreaSplitView - IDENavigatorArea - IDEWorkspaceTabControllerDesignAreaSplitView - IDEShowUtilities - IDEEditorArea - 0 - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 42 - - - - DVTSplitViewItems - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 43 - - - CF$UID - 49 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 47 - - - - DVTIdentifier - DVTViewMagnitude - - 389 - - $classes - - NSDictionary - NSObject - - $classname - NSDictionary - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 50 - - - - 211 - - $classes - - NSMutableArray - NSArray - NSObject - - $classname - NSMutableArray - - - $classes - - NSMutableDictionary - NSDictionary - NSObject - - $classname - NSMutableDictionary - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 54 - - - CF$UID - 55 - - - CF$UID - 56 - - - NS.objects - - - CF$UID - 57 - - - CF$UID - 54 - - - CF$UID - 75 - - - - Xcode.IDEKit.Navigator.Issues - SelectedNavigator - Xcode.IDEKit.Navigator.Structure - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 58 - - - CF$UID - 59 - - - CF$UID - 60 - - - CF$UID - 61 - - - CF$UID - 62 - - - CF$UID - 63 - - - CF$UID - 64 - - - CF$UID - 65 - - - CF$UID - 66 - - - CF$UID - 67 - - - NS.objects - - - CF$UID - 39 - - - CF$UID - 68 - - - CF$UID - 69 - - - CF$UID - 71 - - - CF$UID - 72 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 73 - - - CF$UID - 39 - - - CF$UID - 74 - - - - IDEErrorFilteringEnabled - IDEVisibleRect - IDECollapsedFiles - IDEExpandedIssues - IDESelectedNavigables - IDEShowsByType - IDESchemeFilteringEnabled - IDECollapsedTypes - IDERecentFilteringEnabled - IDECollapsedGroups - {{0, 0}, {0, 0}} - - $class - - CF$UID - 70 - - NS.objects - - - - $classes - - NSMutableSet - NSSet - NSObject - - $classname - NSMutableSet - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 76 - - - CF$UID - 77 - - - CF$UID - 78 - - - CF$UID - 79 - - - CF$UID - 80 - - - CF$UID - 81 - - - CF$UID - 82 - - - NS.objects - - - CF$UID - 83 - - - CF$UID - 39 - - - CF$UID - 84 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 86 - - - CF$UID - 84 - - - - IDEVisibleRect - IDEUnsavedDocumentFilteringEnabled - IDENavigatorExpandedItemsBeforeFilteringSet - IDERecentDocumentFilteringEnabled - IDESCMStatusFilteringEnabled - IDESelectedObjects - IDEExpandedItemsSet - {{0, 0}, {259, 832}} - - $class - - CF$UID - 85 - - NS.objects - - - - $classes - - NSSet - NSObject - - $classname - NSSet - - - $class - - CF$UID - 87 - - NS.objects - - - - $classes - - NSArray - NSObject - - $classname - NSArray - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 89 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 90 - - - CF$UID - 92 - - - CF$UID - 94 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 34 - - - CF$UID - 91 - - - - 594 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 37 - - - CF$UID - 93 - - - - 746 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 95 - - - CF$UID - 96 - - - - IDEUtilitiesArea - 260 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 98 - - - CF$UID - 99 - - - CF$UID - 100 - - - CF$UID - 101 - - - CF$UID - 102 - - - CF$UID - 103 - - - CF$UID - 104 - - - CF$UID - 105 - - - NS.objects - - - CF$UID - 106 - - - CF$UID - 112 - - - CF$UID - 124 - - - CF$UID - 151 - - - CF$UID - 38 - - - CF$UID - 152 - - - CF$UID - 160 - - - CF$UID - 39 - - - - layoutTree - IDEEditorMode_Standard - IDEEDitorArea_DebugArea - IDEShowEditor - EditorMode - DebuggerSplitView - DefaultPersistentRepresentations - ShowDebuggerArea - - $class - - CF$UID - 111 - - geniusEditorContextNode - - CF$UID - 0 - - primaryEditorContextNode - - CF$UID - 107 - - rootLayoutTreeNode - - CF$UID - 108 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 0 - - contentType - 1 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 108 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 109 - - contentType - 0 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 0 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 107 - - - - - $classes - - IDEWorkspaceTabControllerLayoutTreeNode - NSObject - - $classname - IDEWorkspaceTabControllerLayoutTreeNode - - - $classes - - IDEWorkspaceTabControllerLayoutTree - NSObject - - $classname - IDEWorkspaceTabControllerLayoutTree - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 113 - - - NS.objects - - - CF$UID - 114 - - - - EditorLayout_PersistentRepresentation - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 115 - - - NS.objects - - - CF$UID - 116 - - - - Main - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 117 - - - CF$UID - 118 - - - CF$UID - 119 - - - NS.objects - - - CF$UID - 120 - - - CF$UID - 38 - - - CF$UID - 122 - - - - EditorLayout_StateSavingStateDictionaries - EditorLayout_Selected - EditorLayout_Geometry - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 121 - - - - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 123 - - - - {{0, 0}, {600, 600}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 125 - - - CF$UID - 126 - - - CF$UID - 127 - - - CF$UID - 128 - - - CF$UID - 129 - - - CF$UID - 130 - - - NS.objects - - - CF$UID - 131 - - - CF$UID - 132 - - - CF$UID - 134 - - - CF$UID - 131 - - - CF$UID - 137 - - - CF$UID - 145 - - - - LayoutFocusMode - console - variables - LayoutMode - IDEDebugArea_SplitView - IDEDebuggerAreaSplitView - 1 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 133 - - - NS.objects - - - CF$UID - 38 - - - - ConsoleFilterMode - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 135 - - - NS.objects - - - CF$UID - 136 - - - - DBGVariablesViewFilterMode - 2 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 138 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 139 - - - CF$UID - 142 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 141 - - - - VariablesView - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 144 - - - - ConsoleArea - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 146 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 147 - - - CF$UID - 149 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 148 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 150 - - - - 301 - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 153 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 154 - - - CF$UID - 157 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 155 - - - CF$UID - 156 - - - - IDEEditor - 203 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 158 - - - CF$UID - 159 - - - - IDEDebuggerArea - 115 - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 24 - - - - {{178, 349}, {600, 624}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 29 - - - CF$UID - 25 - - - CF$UID - 26 - - - CF$UID - 27 - - - CF$UID - 164 - - - CF$UID - 28 - - - NS.objects - - - CF$UID - 3 - - - CF$UID - 165 - - - CF$UID - 39 - - - CF$UID - 164 - - - CF$UID - 166 - - - CF$UID - 275 - - - - IDEWorkspaceTabController_B2AFD575-4400-4F7F-BAD2-5EBE90AC935A - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 164 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 167 - - - CF$UID - 32 - - - CF$UID - 31 - - - CF$UID - 33 - - - CF$UID - 34 - - - CF$UID - 35 - - - CF$UID - 36 - - - CF$UID - 37 - - - NS.objects - - - CF$UID - 168 - - - CF$UID - 39 - - - CF$UID - 38 - - - CF$UID - 169 - - - CF$UID - 175 - - - CF$UID - 186 - - - CF$UID - 39 - - - CF$UID - 194 - - - - IDETabLabel - b2BroadPhase.cpp - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 170 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 171 - - - CF$UID - 173 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 172 - - - - 577 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 174 - - - - 211 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 54 - - - CF$UID - 55 - - - CF$UID - 56 - - - NS.objects - - - CF$UID - 176 - - - CF$UID - 54 - - - CF$UID - 183 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 58 - - - CF$UID - 59 - - - CF$UID - 60 - - - CF$UID - 61 - - - CF$UID - 62 - - - CF$UID - 63 - - - CF$UID - 64 - - - CF$UID - 65 - - - CF$UID - 66 - - - CF$UID - 67 - - - NS.objects - - - CF$UID - 39 - - - CF$UID - 177 - - - CF$UID - 178 - - - CF$UID - 179 - - - CF$UID - 180 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 181 - - - CF$UID - 39 - - - CF$UID - 182 - - - - {{0, 0}, {0, 0}} - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 76 - - - CF$UID - 77 - - - CF$UID - 78 - - - CF$UID - 79 - - - CF$UID - 80 - - - CF$UID - 81 - - - CF$UID - 82 - - - NS.objects - - - CF$UID - 184 - - - CF$UID - 39 - - - CF$UID - 84 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 185 - - - CF$UID - 84 - - - - {{0, 0}, {259, 832}} - - $class - - CF$UID - 87 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 187 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 188 - - - CF$UID - 190 - - - CF$UID - 192 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 34 - - - CF$UID - 189 - - - - 260 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 37 - - - CF$UID - 191 - - - - 1080 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 95 - - - CF$UID - 193 - - - - 260 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 98 - - - CF$UID - 99 - - - CF$UID - 100 - - - CF$UID - 101 - - - CF$UID - 102 - - - CF$UID - 103 - - - CF$UID - 104 - - - CF$UID - 105 - - - NS.objects - - - CF$UID - 195 - - - CF$UID - 218 - - - CF$UID - 253 - - - CF$UID - 151 - - - CF$UID - 38 - - - CF$UID - 268 - - - CF$UID - 274 - - - CF$UID - 39 - - - - - $class - - CF$UID - 111 - - geniusEditorContextNode - - CF$UID - 0 - - primaryEditorContextNode - - CF$UID - 196 - - rootLayoutTreeNode - - CF$UID - 216 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 0 - - contentType - 1 - documentArchivableRepresentation - - CF$UID - 197 - - orientation - 0 - parent - - CF$UID - 216 - - - - $class - - CF$UID - 215 - - DocumentLocation - - CF$UID - 211 - - DomainIdentifier - - CF$UID - 198 - - IdentifierPath - - CF$UID - 199 - - IndexOfDocumentIdentifier - - CF$UID - 38 - - - Xcode.IDENavigableItemDomain.WorkspaceStructure - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 200 - - - CF$UID - 203 - - - CF$UID - 205 - - - CF$UID - 207 - - - CF$UID - 209 - - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 201 - - - b2BroadPhase.cpp - - $classes - - IDEArchivableStringIndexPair - NSObject - - $classname - IDEArchivableStringIndexPair - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 204 - - - Box2D - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 206 - - - libs - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 208 - - - Littlest - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 210 - - - Littlest - - $class - - CF$UID - 214 - - documentURL - - CF$UID - 212 - - timestamp - - CF$UID - 0 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/Box2D/Collision/b2BroadPhase.cpp - - - $classes - - NSMutableString - NSString - NSObject - - $classname - NSMutableString - - - $classes - - DVTDocumentLocation - NSObject - - $classname - DVTDocumentLocation - - - $classes - - IDENavigableItemArchivableRepresentation - NSObject - - $classname - IDENavigableItemArchivableRepresentation - - - $class - - CF$UID - 110 - - children - - CF$UID - 217 - - contentType - 0 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 0 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 196 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 113 - - - NS.objects - - - CF$UID - 219 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 115 - - - NS.objects - - - CF$UID - 220 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 117 - - - CF$UID - 118 - - - CF$UID - 119 - - - NS.objects - - - CF$UID - 221 - - - CF$UID - 38 - - - CF$UID - 251 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 222 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 223 - - - CF$UID - 224 - - - CF$UID - 225 - - - CF$UID - 226 - - - CF$UID - 227 - - - CF$UID - 228 - - - CF$UID - 229 - - - NS.objects - - - CF$UID - 230 - - - CF$UID - 231 - - - CF$UID - 239 - - - CF$UID - 201 - - - CF$UID - 201 - - - CF$UID - 247 - - - CF$UID - 248 - - - - FileDataType - ArchivableRepresentation - EditorState - NavigableItemName - DocumentNavigableItemName - DocumentExtensionIdentifier - DocumentURL - public.c-plus-plus-source - - $class - - CF$UID - 215 - - DocumentLocation - - CF$UID - 211 - - DomainIdentifier - - CF$UID - 198 - - IdentifierPath - - CF$UID - 232 - - IndexOfDocumentIdentifier - - CF$UID - 38 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 233 - - - CF$UID - 234 - - - CF$UID - 235 - - - CF$UID - 236 - - - CF$UID - 237 - - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 201 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 204 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 206 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 208 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 238 - - - Littlest - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 244 - - - CF$UID - 245 - - - CF$UID - 39 - - - CF$UID - 246 - - - - PrimaryDocumentTimestamp - PrimaryDocumentVisibleCharacterRange - HideAllIssues - PrimaryDocumentSelectedCharacterRange - 324798645.71748698 - {0, 1845} - {919, 0} - Xcode.IDEKit.EditorDocument.SourceCode - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 249 - - - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/Box2D/Collision/b2BroadPhase.cpp - - $classes - - NSURL - NSObject - - $classname - NSURL - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 252 - - - - {{0, 0}, {1058, 788}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 125 - - - CF$UID - 126 - - - CF$UID - 127 - - - CF$UID - 128 - - - CF$UID - 129 - - - CF$UID - 130 - - - NS.objects - - - CF$UID - 131 - - - CF$UID - 254 - - - CF$UID - 255 - - - CF$UID - 131 - - - CF$UID - 256 - - - CF$UID - 262 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 133 - - - NS.objects - - - CF$UID - 38 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 135 - - - NS.objects - - - CF$UID - 136 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 257 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 258 - - - CF$UID - 260 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 259 - - - - 526 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 261 - - - - 531 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 263 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 264 - - - CF$UID - 266 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 265 - - - - 526 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 267 - - - - 531 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 269 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 270 - - - CF$UID - 272 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 155 - - - CF$UID - 271 - - - - 203 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 158 - - - CF$UID - 273 - - - - 115 - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - {{220, 24}, {1058, 812}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 29 - - - CF$UID - 25 - - - CF$UID - 26 - - - CF$UID - 27 - - - CF$UID - 28 - - - CF$UID - 277 - - - NS.objects - - - CF$UID - 4 - - - CF$UID - 278 - - - CF$UID - 39 - - - CF$UID - 277 - - - CF$UID - 279 - - - CF$UID - 280 - - - - IDEWorkspaceTabController_0A175525-D973-47FD-8639-29BF0D25BACE - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 277 - - - - {{52, 487}, {600, 624}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 31 - - - CF$UID - 32 - - - CF$UID - 33 - - - CF$UID - 34 - - - CF$UID - 35 - - - CF$UID - 36 - - - CF$UID - 37 - - - NS.objects - - - CF$UID - 38 - - - CF$UID - 39 - - - CF$UID - 281 - - - CF$UID - 287 - - - CF$UID - 298 - - - CF$UID - 39 - - - CF$UID - 306 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 282 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 283 - - - CF$UID - 285 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 284 - - - - 376 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 286 - - - - 224 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 54 - - - CF$UID - 55 - - - CF$UID - 56 - - - NS.objects - - - CF$UID - 288 - - - CF$UID - 54 - - - CF$UID - 295 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 58 - - - CF$UID - 59 - - - CF$UID - 60 - - - CF$UID - 61 - - - CF$UID - 62 - - - CF$UID - 63 - - - CF$UID - 64 - - - CF$UID - 65 - - - CF$UID - 66 - - - CF$UID - 67 - - - NS.objects - - - CF$UID - 39 - - - CF$UID - 289 - - - CF$UID - 290 - - - CF$UID - 291 - - - CF$UID - 292 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 293 - - - CF$UID - 39 - - - CF$UID - 294 - - - - {{0, 0}, {0, 0}} - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 76 - - - CF$UID - 77 - - - CF$UID - 78 - - - CF$UID - 79 - - - CF$UID - 80 - - - CF$UID - 81 - - - CF$UID - 82 - - - NS.objects - - - CF$UID - 296 - - - CF$UID - 39 - - - CF$UID - 84 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 297 - - - CF$UID - 84 - - - - {{0, 0}, {259, 832}} - - $class - - CF$UID - 87 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 299 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 300 - - - CF$UID - 302 - - - CF$UID - 304 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 34 - - - CF$UID - 301 - - - - 260 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 37 - - - CF$UID - 303 - - - - 880 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 95 - - - CF$UID - 305 - - - - 260 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 98 - - - CF$UID - 99 - - - CF$UID - 100 - - - CF$UID - 101 - - - CF$UID - 102 - - - CF$UID - 103 - - - CF$UID - 104 - - - CF$UID - 105 - - - NS.objects - - - CF$UID - 307 - - - CF$UID - 311 - - - CF$UID - 318 - - - CF$UID - 151 - - - CF$UID - 38 - - - CF$UID - 333 - - - CF$UID - 339 - - - CF$UID - 39 - - - - - $class - - CF$UID - 111 - - geniusEditorContextNode - - CF$UID - 0 - - primaryEditorContextNode - - CF$UID - 308 - - rootLayoutTreeNode - - CF$UID - 309 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 0 - - contentType - 1 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 309 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 310 - - contentType - 0 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 0 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 308 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 113 - - - NS.objects - - - CF$UID - 312 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 115 - - - NS.objects - - - CF$UID - 313 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 117 - - - CF$UID - 118 - - - CF$UID - 119 - - - NS.objects - - - CF$UID - 314 - - - CF$UID - 38 - - - CF$UID - 316 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 315 - - - - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 317 - - - - {{0, 0}, {600, 600}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 125 - - - CF$UID - 126 - - - CF$UID - 127 - - - CF$UID - 128 - - - CF$UID - 129 - - - CF$UID - 130 - - - NS.objects - - - CF$UID - 131 - - - CF$UID - 319 - - - CF$UID - 320 - - - CF$UID - 131 - - - CF$UID - 321 - - - CF$UID - 327 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 133 - - - NS.objects - - - CF$UID - 38 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 135 - - - NS.objects - - - CF$UID - 136 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 322 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 323 - - - CF$UID - 325 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 324 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 326 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 328 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 329 - - - CF$UID - 331 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 330 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 332 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 334 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 335 - - - CF$UID - 337 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 155 - - - CF$UID - 336 - - - - 203 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 158 - - - CF$UID - 338 - - - - 115 - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 341 - - - CF$UID - 25 - - - CF$UID - 26 - - - CF$UID - 27 - - - CF$UID - 28 - - - CF$UID - 29 - - - NS.objects - - - CF$UID - 342 - - - CF$UID - 402 - - - CF$UID - 39 - - - CF$UID - 341 - - - CF$UID - 403 - - - CF$UID - 5 - - - - IDEWorkspaceTabController_B71AA6F6-0E9F-4181-AA98-32814D0D33A5 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 31 - - - CF$UID - 32 - - - CF$UID - 33 - - - CF$UID - 34 - - - CF$UID - 35 - - - CF$UID - 36 - - - CF$UID - 37 - - - NS.objects - - - CF$UID - 38 - - - CF$UID - 39 - - - CF$UID - 343 - - - CF$UID - 349 - - - CF$UID - 360 - - - CF$UID - 39 - - - CF$UID - 368 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 344 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 345 - - - CF$UID - 347 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 346 - - - - 376 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 348 - - - - 224 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 54 - - - CF$UID - 55 - - - CF$UID - 56 - - - NS.objects - - - CF$UID - 350 - - - CF$UID - 54 - - - CF$UID - 357 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 58 - - - CF$UID - 59 - - - CF$UID - 60 - - - CF$UID - 61 - - - CF$UID - 62 - - - CF$UID - 63 - - - CF$UID - 64 - - - CF$UID - 65 - - - CF$UID - 66 - - - CF$UID - 67 - - - NS.objects - - - CF$UID - 39 - - - CF$UID - 351 - - - CF$UID - 352 - - - CF$UID - 353 - - - CF$UID - 354 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 355 - - - CF$UID - 39 - - - CF$UID - 356 - - - - {{0, 0}, {0, 0}} - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 76 - - - CF$UID - 77 - - - CF$UID - 78 - - - CF$UID - 79 - - - CF$UID - 80 - - - CF$UID - 81 - - - CF$UID - 82 - - - NS.objects - - - CF$UID - 358 - - - CF$UID - 39 - - - CF$UID - 84 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 359 - - - CF$UID - 84 - - - - {{0, 0}, {259, 832}} - - $class - - CF$UID - 87 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 361 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 362 - - - CF$UID - 364 - - - CF$UID - 366 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 34 - - - CF$UID - 363 - - - - 260 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 37 - - - CF$UID - 365 - - - - 880 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 95 - - - CF$UID - 367 - - - - 260 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 98 - - - CF$UID - 99 - - - CF$UID - 100 - - - CF$UID - 101 - - - CF$UID - 102 - - - CF$UID - 103 - - - CF$UID - 104 - - - CF$UID - 105 - - - NS.objects - - - CF$UID - 369 - - - CF$UID - 373 - - - CF$UID - 380 - - - CF$UID - 151 - - - CF$UID - 38 - - - CF$UID - 395 - - - CF$UID - 401 - - - CF$UID - 39 - - - - - $class - - CF$UID - 111 - - geniusEditorContextNode - - CF$UID - 0 - - primaryEditorContextNode - - CF$UID - 370 - - rootLayoutTreeNode - - CF$UID - 371 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 0 - - contentType - 1 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 371 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 372 - - contentType - 0 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 0 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 370 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 113 - - - NS.objects - - - CF$UID - 374 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 115 - - - NS.objects - - - CF$UID - 375 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 117 - - - CF$UID - 118 - - - CF$UID - 119 - - - NS.objects - - - CF$UID - 376 - - - CF$UID - 38 - - - CF$UID - 378 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 377 - - - - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 379 - - - - {{0, 0}, {600, 600}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 125 - - - CF$UID - 126 - - - CF$UID - 127 - - - CF$UID - 128 - - - CF$UID - 129 - - - CF$UID - 130 - - - NS.objects - - - CF$UID - 131 - - - CF$UID - 381 - - - CF$UID - 382 - - - CF$UID - 131 - - - CF$UID - 383 - - - CF$UID - 389 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 133 - - - NS.objects - - - CF$UID - 38 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 135 - - - NS.objects - - - CF$UID - 136 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 384 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 385 - - - CF$UID - 387 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 386 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 388 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 390 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 391 - - - CF$UID - 393 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 392 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 394 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 396 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 397 - - - CF$UID - 399 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 155 - - - CF$UID - 398 - - - - 203 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 158 - - - CF$UID - 400 - - - - 115 - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 341 - - - - {{144, 400}, {600, 624}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 405 - - - CF$UID - 25 - - - CF$UID - 26 - - - CF$UID - 27 - - - CF$UID - 28 - - - CF$UID - 29 - - - NS.objects - - - CF$UID - 406 - - - CF$UID - 466 - - - CF$UID - 39 - - - CF$UID - 405 - - - CF$UID - 467 - - - CF$UID - 6 - - - - IDEWorkspaceTabController_1CAC0209-C113-449D-B793-9A27F553FA36 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 31 - - - CF$UID - 32 - - - CF$UID - 33 - - - CF$UID - 34 - - - CF$UID - 35 - - - CF$UID - 36 - - - CF$UID - 37 - - - NS.objects - - - CF$UID - 38 - - - CF$UID - 39 - - - CF$UID - 407 - - - CF$UID - 413 - - - CF$UID - 424 - - - CF$UID - 39 - - - CF$UID - 432 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 408 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 409 - - - CF$UID - 411 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 410 - - - - 389 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 412 - - - - 211 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 54 - - - CF$UID - 55 - - - CF$UID - 56 - - - NS.objects - - - CF$UID - 414 - - - CF$UID - 54 - - - CF$UID - 421 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 58 - - - CF$UID - 59 - - - CF$UID - 60 - - - CF$UID - 61 - - - CF$UID - 62 - - - CF$UID - 63 - - - CF$UID - 64 - - - CF$UID - 65 - - - CF$UID - 66 - - - CF$UID - 67 - - - NS.objects - - - CF$UID - 39 - - - CF$UID - 415 - - - CF$UID - 416 - - - CF$UID - 417 - - - CF$UID - 418 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 419 - - - CF$UID - 39 - - - CF$UID - 420 - - - - {{0, 0}, {0, 0}} - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 76 - - - CF$UID - 77 - - - CF$UID - 78 - - - CF$UID - 79 - - - CF$UID - 80 - - - CF$UID - 81 - - - CF$UID - 82 - - - NS.objects - - - CF$UID - 422 - - - CF$UID - 39 - - - CF$UID - 84 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 423 - - - CF$UID - 84 - - - - {{0, 0}, {259, 832}} - - $class - - CF$UID - 87 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 425 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 426 - - - CF$UID - 428 - - - CF$UID - 430 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 34 - - - CF$UID - 427 - - - - 260 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 37 - - - CF$UID - 429 - - - - 1080 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 95 - - - CF$UID - 431 - - - - 260 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 98 - - - CF$UID - 99 - - - CF$UID - 100 - - - CF$UID - 101 - - - CF$UID - 102 - - - CF$UID - 103 - - - CF$UID - 104 - - - CF$UID - 105 - - - NS.objects - - - CF$UID - 433 - - - CF$UID - 437 - - - CF$UID - 444 - - - CF$UID - 151 - - - CF$UID - 38 - - - CF$UID - 459 - - - CF$UID - 465 - - - CF$UID - 39 - - - - - $class - - CF$UID - 111 - - geniusEditorContextNode - - CF$UID - 0 - - primaryEditorContextNode - - CF$UID - 434 - - rootLayoutTreeNode - - CF$UID - 435 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 0 - - contentType - 1 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 435 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 436 - - contentType - 0 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 0 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 434 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 113 - - - NS.objects - - - CF$UID - 438 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 115 - - - NS.objects - - - CF$UID - 439 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 117 - - - CF$UID - 118 - - - CF$UID - 119 - - - NS.objects - - - CF$UID - 440 - - - CF$UID - 38 - - - CF$UID - 442 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 441 - - - - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 443 - - - - {{0, 0}, {600, 600}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 125 - - - CF$UID - 126 - - - CF$UID - 127 - - - CF$UID - 128 - - - CF$UID - 129 - - - CF$UID - 130 - - - NS.objects - - - CF$UID - 131 - - - CF$UID - 445 - - - CF$UID - 446 - - - CF$UID - 131 - - - CF$UID - 447 - - - CF$UID - 453 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 133 - - - NS.objects - - - CF$UID - 38 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 135 - - - NS.objects - - - CF$UID - 136 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 448 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 449 - - - CF$UID - 451 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 450 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 452 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 454 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 455 - - - CF$UID - 457 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 456 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 458 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 460 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 461 - - - CF$UID - 463 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 155 - - - CF$UID - 462 - - - - 203 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 158 - - - CF$UID - 464 - - - - 115 - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 405 - - - - {{115, 418}, {600, 624}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 469 - - - CF$UID - 470 - - - CF$UID - 471 - - - CF$UID - 472 - - - CF$UID - 473 - - - CF$UID - 474 - - - CF$UID - 475 - - - CF$UID - 476 - - - CF$UID - 477 - - - CF$UID - 478 - - - CF$UID - 479 - - - NS.objects - - - CF$UID - 151 - - - CF$UID - 480 - - - CF$UID - 38 - - - CF$UID - 828 - - - CF$UID - 833 - - - CF$UID - 836 - - - CF$UID - 861 - - - CF$UID - 862 - - - CF$UID - 893 - - - CF$UID - 39 - - - CF$UID - 39 - - - - BreakpointsActivated - DefaultEditorStatesForURLs - DebuggingWindowBehavior - ActiveRunDestination - ActiveScheme - DefaultEditorFrameSizeForURLs - DocumentWindows - LastCompletedPersistentSchemeBasedActivityReport - RecentEditorDocumentURLs - AppFocusInMiniDebugging - MiniDebuggingConsole - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 481 - - - CF$UID - 247 - - - NS.objects - - - CF$UID - 482 - - - CF$UID - 713 - - - - Xcode.Xcode3ProjectSupport.EditorDocument.Xcode3Project - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 483 - - - NS.objects - - - CF$UID - 485 - - - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 484 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest.xcodeproj/ - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 486 - - - CF$UID - 487 - - - CF$UID - 488 - - - CF$UID - 489 - - - CF$UID - 490 - - - NS.objects - - - CF$UID - 491 - - - CF$UID - 492 - - - CF$UID - 498 - - - CF$UID - 499 - - - CF$UID - 712 - - - - Xcode3ProjectEditorPreviousProjectEditorClass - Xcode3ProjectEditor.sourceList.splitview - Xcode3ProjectEditorPreviousTargetEditorClass - Xcode3ProjectEditorSelectedDocumentLocations - Xcode3ProjectEditor_Xcode3BuildSettingsEditor - Xcode3BuildSettingsEditor - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 493 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 494 - - - CF$UID - 496 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 495 - - - - 170 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 497 - - - - 576 - Xcode3BuildSettingsEditor - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 500 - - - - - $class - - CF$UID - 711 - - documentURL - - CF$UID - 501 - - selection - - CF$UID - 503 - - timestamp - - CF$UID - 502 - - - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest.xcodeproj/ - 324798986.57572001 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 504 - - - CF$UID - 505 - - - CF$UID - 506 - - - NS.objects - - - CF$UID - 507 - - - CF$UID - 508 - - - CF$UID - 509 - - - - Editor - Target - Xcode3BuildSettingsEditorLocations - Xcode3BuildSettingsEditor - Littlest - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 510 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 511 - - - CF$UID - 512 - - - CF$UID - 513 - - - CF$UID - 514 - - - CF$UID - 515 - - - CF$UID - 516 - - - NS.objects - - - CF$UID - 517 - - - CF$UID - 709 - - - CF$UID - 38 - - - CF$UID - 38 - - - CF$UID - 38 - - - CF$UID - 131 - - - - Collapsed Build Property Categories - Selected Build Properties - Xcode3BuildSettingsEditorDisplayMode - Xcode3BuildPropertyValueDisplayMode - Xcode3BuildSettingsEditorMode - Xcode3BuildPropertyNameDisplayMode - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 518 - - - CF$UID - 519 - - - CF$UID - 520 - - - CF$UID - 521 - - - CF$UID - 522 - - - CF$UID - 523 - - - CF$UID - 524 - - - CF$UID - 525 - - - CF$UID - 526 - - - CF$UID - 527 - - - CF$UID - 528 - - - CF$UID - 529 - - - CF$UID - 530 - - - CF$UID - 531 - - - CF$UID - 532 - - - CF$UID - 533 - - - CF$UID - 534 - - - CF$UID - 535 - - - CF$UID - 536 - - - CF$UID - 537 - - - CF$UID - 538 - - - CF$UID - 539 - - - CF$UID - 540 - - - CF$UID - 541 - - - CF$UID - 542 - - - CF$UID - 543 - - - CF$UID - 544 - - - CF$UID - 545 - - - CF$UID - 546 - - - CF$UID - 547 - - - CF$UID - 548 - - - CF$UID - 549 - - - CF$UID - 550 - - - CF$UID - 551 - - - CF$UID - 552 - - - CF$UID - 553 - - - CF$UID - 554 - - - CF$UID - 555 - - - CF$UID - 556 - - - CF$UID - 557 - - - CF$UID - 558 - - - CF$UID - 559 - - - CF$UID - 560 - - - CF$UID - 561 - - - CF$UID - 562 - - - CF$UID - 563 - - - CF$UID - 564 - - - CF$UID - 565 - - - CF$UID - 566 - - - CF$UID - 567 - - - CF$UID - 568 - - - CF$UID - 569 - - - CF$UID - 570 - - - CF$UID - 571 - - - CF$UID - 572 - - - CF$UID - 573 - - - CF$UID - 574 - - - CF$UID - 575 - - - CF$UID - 576 - - - CF$UID - 577 - - - CF$UID - 578 - - - CF$UID - 579 - - - CF$UID - 580 - - - CF$UID - 581 - - - CF$UID - 582 - - - CF$UID - 583 - - - CF$UID - 584 - - - CF$UID - 585 - - - CF$UID - 586 - - - CF$UID - 587 - - - CF$UID - 588 - - - CF$UID - 589 - - - CF$UID - 590 - - - CF$UID - 591 - - - CF$UID - 592 - - - CF$UID - 593 - - - CF$UID - 594 - - - CF$UID - 595 - - - CF$UID - 596 - - - CF$UID - 597 - - - CF$UID - 598 - - - CF$UID - 599 - - - CF$UID - 600 - - - CF$UID - 601 - - - CF$UID - 602 - - - CF$UID - 603 - - - CF$UID - 604 - - - CF$UID - 605 - - - CF$UID - 606 - - - CF$UID - 607 - - - CF$UID - 608 - - - CF$UID - 609 - - - CF$UID - 610 - - - CF$UID - 611 - - - CF$UID - 612 - - - CF$UID - 613 - - - CF$UID - 614 - - - CF$UID - 615 - - - CF$UID - 616 - - - CF$UID - 617 - - - CF$UID - 618 - - - CF$UID - 619 - - - CF$UID - 620 - - - CF$UID - 621 - - - CF$UID - 622 - - - CF$UID - 623 - - - CF$UID - 624 - - - CF$UID - 625 - - - CF$UID - 626 - - - CF$UID - 627 - - - CF$UID - 628 - - - CF$UID - 629 - - - CF$UID - 630 - - - CF$UID - 631 - - - CF$UID - 632 - - - CF$UID - 633 - - - CF$UID - 634 - - - CF$UID - 635 - - - CF$UID - 636 - - - CF$UID - 637 - - - CF$UID - 638 - - - CF$UID - 639 - - - CF$UID - 640 - - - CF$UID - 641 - - - CF$UID - 642 - - - CF$UID - 643 - - - CF$UID - 644 - - - CF$UID - 645 - - - CF$UID - 646 - - - CF$UID - 647 - - - CF$UID - 648 - - - CF$UID - 649 - - - CF$UID - 650 - - - CF$UID - 651 - - - CF$UID - 652 - - - CF$UID - 653 - - - CF$UID - 654 - - - CF$UID - 655 - - - CF$UID - 656 - - - CF$UID - 657 - - - CF$UID - 658 - - - CF$UID - 659 - - - CF$UID - 660 - - - CF$UID - 661 - - - CF$UID - 662 - - - CF$UID - 663 - - - CF$UID - 664 - - - CF$UID - 665 - - - CF$UID - 666 - - - CF$UID - 667 - - - CF$UID - 668 - - - CF$UID - 669 - - - CF$UID - 670 - - - CF$UID - 671 - - - CF$UID - 672 - - - CF$UID - 673 - - - CF$UID - 674 - - - CF$UID - 675 - - - CF$UID - 676 - - - CF$UID - 677 - - - CF$UID - 678 - - - CF$UID - 679 - - - CF$UID - 680 - - - CF$UID - 681 - - - CF$UID - 682 - - - CF$UID - 683 - - - CF$UID - 684 - - - CF$UID - 685 - - - CF$UID - 686 - - - CF$UID - 687 - - - CF$UID - 688 - - - CF$UID - 689 - - - CF$UID - 690 - - - CF$UID - 691 - - - CF$UID - 692 - - - CF$UID - 693 - - - CF$UID - 694 - - - CF$UID - 695 - - - CF$UID - 696 - - - CF$UID - 697 - - - CF$UID - 698 - - - CF$UID - 699 - - - CF$UID - 700 - - - CF$UID - 701 - - - CF$UID - 702 - - - CF$UID - 703 - - - CF$UID - 704 - - - CF$UID - 705 - - - CF$UID - 706 - - - CF$UID - 707 - - - CF$UID - 708 - - - - - $class - - CF$UID - 213 - - NS.string - Architectures||ADDITIONAL_SDKS - - - $class - - CF$UID - 213 - - NS.string - Architectures||ARCHS - - - $class - - CF$UID - 213 - - NS.string - Architectures||SDKROOT - - - $class - - CF$UID - 213 - - NS.string - Architectures||ONLY_ACTIVE_ARCH - - - $class - - CF$UID - 213 - - NS.string - Architectures||SUPPORTED_PLATFORMS - - - $class - - CF$UID - 213 - - NS.string - Architectures||VALID_ARCHS - - - $class - - CF$UID - 213 - - NS.string - Build Locations||SYMROOT - - - $class - - CF$UID - 213 - - NS.string - Build Locations||OBJROOT - - - $class - - CF$UID - 213 - - NS.string - Build Locations||SHARED_PRECOMPS_DIR - - - $class - - CF$UID - 213 - - NS.string - Build Options||BUILD_VARIANTS - - - $class - - CF$UID - 213 - - NS.string - Build Options||DEBUG_INFORMATION_FORMAT - - - $class - - CF$UID - 213 - - NS.string - Build Options||ENABLE_OPENMP_SUPPORT - - - $class - - CF$UID - 213 - - NS.string - Build Options||GENERATE_PROFILING_CODE - - - $class - - CF$UID - 213 - - NS.string - Build Options||PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR - - - $class - - CF$UID - 213 - - NS.string - Build Options||RUN_CLANG_STATIC_ANALYZER - - - $class - - CF$UID - 213 - - NS.string - Build Options||SCAN_ALL_SOURCE_FILES_FOR_INCLUDES - - - $class - - CF$UID - 213 - - NS.string - Code Signing||CODE_SIGN_ENTITLEMENTS - - - $class - - CF$UID - 213 - - NS.string - Code Signing||CODE_SIGN_RESOURCE_RULES_PATH - - - $class - - CF$UID - 213 - - NS.string - Code Signing||OTHER_CODE_SIGN_FLAGS - - - $class - - CF$UID - 213 - - NS.string - Compiler Version||GCC_VERSION - - - $class - - CF$UID - 213 - - NS.string - Deployment||STRIPFLAGS - - - $class - - CF$UID - 213 - - NS.string - Deployment||ALTERNATE_GROUP - - - $class - - CF$UID - 213 - - NS.string - Deployment||ALTERNATE_OWNER - - - $class - - CF$UID - 213 - - NS.string - Deployment||ALTERNATE_MODE - - - $class - - CF$UID - 213 - - NS.string - Deployment||ALTERNATE_PERMISSIONS_FILES - - - $class - - CF$UID - 213 - - NS.string - Deployment||COMBINE_HIDPI_IMAGES - - - $class - - CF$UID - 213 - - NS.string - Deployment||DEPLOYMENT_LOCATION - - - $class - - CF$UID - 213 - - NS.string - Deployment||DEPLOYMENT_POSTPROCESSING - - - $class - - CF$UID - 213 - - NS.string - Deployment||INSTALL_GROUP - - - $class - - CF$UID - 213 - - NS.string - Deployment||INSTALL_OWNER - - - $class - - CF$UID - 213 - - NS.string - Deployment||INSTALL_MODE_FLAG - - - $class - - CF$UID - 213 - - NS.string - Deployment||DSTROOT - - - $class - - CF$UID - 213 - - NS.string - Deployment||INSTALL_PATH - - - $class - - CF$UID - 213 - - NS.string - Deployment||MACOSX_DEPLOYMENT_TARGET - - - $class - - CF$UID - 213 - - NS.string - Deployment||SKIP_INSTALL - - - $class - - CF$UID - 213 - - NS.string - Deployment||STRIP_INSTALLED_PRODUCT - - - $class - - CF$UID - 213 - - NS.string - Deployment||STRIP_STYLE - - - $class - - CF$UID - 213 - - NS.string - Deployment||TARGETED_DEVICE_FAMILY - - - $class - - CF$UID - 213 - - NS.string - Deployment||SEPARATE_STRIP - - - $class - - CF$UID - 213 - - NS.string - Deployment||IPHONEOS_DEPLOYMENT_TARGET - - - $class - - CF$UID - 213 - - NS.string - Kernel Module||MODULE_NAME - - - $class - - CF$UID - 213 - - NS.string - Kernel Module||MODULE_START - - - $class - - CF$UID - 213 - - NS.string - Kernel Module||MODULE_STOP - - - $class - - CF$UID - 213 - - NS.string - Kernel Module||MODULE_VERSION - - - $class - - CF$UID - 213 - - NS.string - Linking||BUNDLE_LOADER - - - $class - - CF$UID - 213 - - NS.string - Linking||STANDARD_C_PLUS_PLUS_LIBRARY_TYPE - - - $class - - CF$UID - 213 - - NS.string - Linking||DYLIB_COMPATIBILITY_VERSION - - - $class - - CF$UID - 213 - - NS.string - Linking||DYLIB_CURRENT_VERSION - - - $class - - CF$UID - 213 - - NS.string - Linking||DEAD_CODE_STRIPPING - - - $class - - CF$UID - 213 - - NS.string - Linking||LINKER_DISPLAYS_MANGLED_NAMES - - - $class - - CF$UID - 213 - - NS.string - Linking||LD_NO_PIE - - - $class - - CF$UID - 213 - - NS.string - Linking||PRESERVE_DEAD_CODE_INITS_AND_TERMS - - - $class - - CF$UID - 213 - - NS.string - Linking||LD_DYLIB_INSTALL_NAME - - - $class - - CF$UID - 213 - - NS.string - Linking||EXPORTED_SYMBOLS_FILE - - - $class - - CF$UID - 213 - - NS.string - Linking||INIT_ROUTINE - - - $class - - CF$UID - 213 - - NS.string - Linking||LINK_WITH_STANDARD_LIBRARIES - - - $class - - CF$UID - 213 - - NS.string - Linking||MACH_O_TYPE - - - $class - - CF$UID - 213 - - NS.string - Linking||LD_OPENMP_FLAGS - - - $class - - CF$UID - 213 - - NS.string - Linking||ORDER_FILE - - - $class - - CF$UID - 213 - - NS.string - Linking||OTHER_LDFLAGS - - - $class - - CF$UID - 213 - - NS.string - Linking||GENERATE_MASTER_OBJECT_FILE - - - $class - - CF$UID - 213 - - NS.string - Linking||PRELINK_LIBS - - - $class - - CF$UID - 213 - - NS.string - Linking||KEEP_PRIVATE_EXTERNS - - - $class - - CF$UID - 213 - - NS.string - Linking||LD_RUNPATH_SEARCH_PATHS - - - $class - - CF$UID - 213 - - NS.string - Linking||SEPARATE_SYMBOL_EDIT - - - $class - - CF$UID - 213 - - NS.string - Linking||PRELINK_FLAGS - - - $class - - CF$UID - 213 - - NS.string - Linking||SECTORDER_FLAGS - - - $class - - CF$UID - 213 - - NS.string - Linking||UNEXPORTED_SYMBOLS_FILE - - - $class - - CF$UID - 213 - - NS.string - Linking||WARNING_LDFLAGS - - - $class - - CF$UID - 213 - - NS.string - Linking||LD_GENERATE_MAP_FILE - - - $class - - CF$UID - 213 - - NS.string - Packaging||COMPRESS_PNG_FILES - - - $class - - CF$UID - 213 - - NS.string - Packaging||APPLY_RULES_IN_COPY_FILES - - - $class - - CF$UID - 213 - - NS.string - Packaging||EXECUTABLE_EXTENSION - - - $class - - CF$UID - 213 - - NS.string - Packaging||EXECUTABLE_PREFIX - - - $class - - CF$UID - 213 - - NS.string - Packaging||INFOPLIST_EXPAND_BUILD_SETTINGS - - - $class - - CF$UID - 213 - - NS.string - Packaging||GENERATE_PKGINFO_FILE - - - $class - - CF$UID - 213 - - NS.string - Packaging||FRAMEWORK_VERSION - - - $class - - CF$UID - 213 - - NS.string - Packaging||INFOPLIST_FILE - - - $class - - CF$UID - 213 - - NS.string - Packaging||INFOPLIST_OTHER_PREPROCESSOR_FLAGS - - - $class - - CF$UID - 213 - - NS.string - Packaging||INFOPLIST_OUTPUT_FORMAT - - - $class - - CF$UID - 213 - - NS.string - Packaging||INFOPLIST_PREPROCESSOR_DEFINITIONS - - - $class - - CF$UID - 213 - - NS.string - Packaging||INFOPLIST_PREFIX_HEADER - - - $class - - CF$UID - 213 - - NS.string - Packaging||INFOPLIST_PREPROCESS - - - $class - - CF$UID - 213 - - NS.string - Packaging||COPYING_PRESERVES_HFS_DATA - - - $class - - CF$UID - 213 - - NS.string - Packaging||PRIVATE_HEADERS_FOLDER_PATH - - - $class - - CF$UID - 213 - - NS.string - Packaging||PRODUCT_NAME - - - $class - - CF$UID - 213 - - NS.string - Packaging||PLIST_FILE_OUTPUT_FORMAT - - - $class - - CF$UID - 213 - - NS.string - Packaging||PUBLIC_HEADERS_FOLDER_PATH - - - $class - - CF$UID - 213 - - NS.string - Packaging||STRINGS_FILE_OUTPUT_ENCODING - - - $class - - CF$UID - 213 - - NS.string - Packaging||WRAPPER_EXTENSION - - - $class - - CF$UID - 213 - - NS.string - Search Paths||ALWAYS_SEARCH_USER_PATHS - - - $class - - CF$UID - 213 - - NS.string - Search Paths||FRAMEWORK_SEARCH_PATHS - - - $class - - CF$UID - 213 - - NS.string - Search Paths||HEADER_SEARCH_PATHS - - - $class - - CF$UID - 213 - - NS.string - Search Paths||LIBRARY_SEARCH_PATHS - - - $class - - CF$UID - 213 - - NS.string - Search Paths||REZ_SEARCH_PATHS - - - $class - - CF$UID - 213 - - NS.string - Search Paths||EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES - - - $class - - CF$UID - 213 - - NS.string - Search Paths||INCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES - - - $class - - CF$UID - 213 - - NS.string - Search Paths||USER_HEADER_SEARCH_PATHS - - - $class - - CF$UID - 213 - - NS.string - Unit Testing||OTHER_TEST_FLAGS - - - $class - - CF$UID - 213 - - NS.string - Unit Testing||TEST_AFTER_BUILD - - - $class - - CF$UID - 213 - - NS.string - Unit Testing||TEST_HOST - - - $class - - CF$UID - 213 - - NS.string - Unit Testing||TEST_RIG - - - $class - - CF$UID - 213 - - NS.string - Versioning||CURRENT_PROJECT_VERSION - - - $class - - CF$UID - 213 - - NS.string - Versioning||VERSION_INFO_FILE - - - $class - - CF$UID - 213 - - NS.string - Versioning||VERSION_INFO_EXPORT_DECL - - - $class - - CF$UID - 213 - - NS.string - Versioning||VERSION_INFO_PREFIX - - - $class - - CF$UID - 213 - - NS.string - Versioning||VERSION_INFO_SUFFIX - - - $class - - CF$UID - 213 - - NS.string - Versioning||VERSIONING_SYSTEM - - - $class - - CF$UID - 213 - - NS.string - Versioning||VERSION_INFO_BUILDER - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_FAST_OBJC_DISPATCH - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_OBJC_CALL_CXX_CDTORS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_ENABLE_SSE3_EXTENSIONS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_ENABLE_SSE41_EXTENSIONS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_ENABLE_SSE42_EXTENSIONS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_STRICT_ALIASING - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_FEEDBACK_DIRECTED_OPTIMIZATION - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_GENERATE_DEBUGGING_SYMBOLS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_DYNAMIC_NO_PIC - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_GENERATE_TEST_COVERAGE_FILES - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_INLINES_ARE_PRIVATE_EXTERN - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_INSTRUMENT_PROGRAM_FLOW_ARCS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_ENABLE_KERNEL_DEVELOPMENT - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_DEBUGGING_SYMBOLS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||LLVM_LTO - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_REUSE_STRINGS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_NO_COMMON_BLOCKS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_ENABLE_OBJC_GC - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_FAST_MATH - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_ENABLE_SYMBOL_SEPARATION - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_THREADSAFE_STATICS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Code Generation||GCC_UNROLL_LOOPS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_CHAR_IS_UNSIGNED_CHAR - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_ENABLE_ASM_KEYWORD - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_C_LANGUAGE_STANDARD - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_CHECK_RETURN_VALUE_OF_OPERATOR_NEW - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_CW_ASM_SYNTAX - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_INPUT_FILETYPE - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_ENABLE_CPP_EXCEPTIONS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_ENABLE_CPP_RTTI - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_LINK_WITH_DYNAMIC_LIBRARIES - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_ENABLE_OBJC_EXCEPTIONS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_ENABLE_TRIGRAPHS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_ENABLE_FLOATING_POINT_LIBRARY_CALLS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_USE_INDIRECT_FUNCTION_CALLS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_USE_REGISTER_FUNCTION_CALLS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_INCREASE_PRECOMPILED_HEADER_SHARING - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_PRECOMPILE_PREFIX_HEADER - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_PREFIX_HEADER - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_ENABLE_BUILTIN_FUNCTIONS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_ENABLE_PASCAL_STRINGS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_FORCE_CPU_SUBTYPE_ALL - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_SHORT_ENUMS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Language||GCC_USE_STANDARD_INCLUDE_SEARCHING - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Preprocessing||GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_CHECK_SWITCH_STATEMENTS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_FOUR_CHARACTER_CONSTANTS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_SHADOW - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_64_TO_32_BIT_CONVERSION - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_INHIBIT_ALL_WARNINGS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_ABOUT_RETURN_TYPE - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_MISSING_PARENTHESES - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_ABOUT_MISSING_PROTOTYPES - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_ABOUT_MISSING_NEWLINE - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_MULTIPLE_DEFINITION_TYPES_FOR_SELECTOR - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_NON_VIRTUAL_DESTRUCTOR - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||WARNING_CFLAGS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_PEDANTIC - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_ABOUT_POINTER_SIGNEDNESS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_PROTOTYPE_CONVERSION - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_SIGN_COMPARE - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_STRICT_SELECTOR_MATCH - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_TREAT_NONCONFORMANT_CODE_ERRORS_AS_WARNINGS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_TREAT_WARNINGS_AS_ERRORS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_TYPECHECK_CALLS_TO_PRINTF - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_UNDECLARED_SELECTOR - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_UNINITIALIZED_AUTOS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_UNKNOWN_PRAGMAS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_UNUSED_FUNCTION - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_UNUSED_LABEL - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_UNUSED_PARAMETER - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_UNUSED_VALUE - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_UNUSED_VARIABLE - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Warnings||GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 710 - - - - - $class - - CF$UID - 213 - - NS.string - LLVM GCC 4.2 - Preprocessing||GCC_PREPROCESSOR_DEFINITIONS||Debug - - - $classes - - Xcode3ProjectDocumentLocation - DVTDocumentLocation - NSObject - - $classname - Xcode3ProjectDocumentLocation - - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 714 - - - CF$UID - 716 - - - CF$UID - 718 - - - CF$UID - 720 - - - CF$UID - 722 - - - CF$UID - 724 - - - CF$UID - 726 - - - CF$UID - 728 - - - CF$UID - 730 - - - CF$UID - 732 - - - CF$UID - 734 - - - CF$UID - 736 - - - CF$UID - 738 - - - CF$UID - 740 - - - CF$UID - 742 - - - CF$UID - 744 - - - CF$UID - 745 - - - CF$UID - 747 - - - CF$UID - 749 - - - CF$UID - 751 - - - NS.objects - - - CF$UID - 753 - - - CF$UID - 757 - - - CF$UID - 761 - - - CF$UID - 765 - - - CF$UID - 769 - - - CF$UID - 772 - - - CF$UID - 776 - - - CF$UID - 780 - - - CF$UID - 783 - - - CF$UID - 787 - - - CF$UID - 791 - - - CF$UID - 795 - - - CF$UID - 799 - - - CF$UID - 802 - - - CF$UID - 806 - - - CF$UID - 810 - - - CF$UID - 814 - - - CF$UID - 817 - - - CF$UID - 821 - - - CF$UID - 825 - - - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 715 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/Foundation/Synchronization/MemorySync.h - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 717 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/Box2D/Dynamics/Joints/b2PrismaticJoint.cpp - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 719 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/GLES-Render.h - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 721 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/cocos2d/Support/ZipUtils.m - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 723 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/Foundation/Common/Assert.h - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 725 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/Foundation/Common/GlobalDefines.h - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 727 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/Box2D/Collision/b2Distance.cpp - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 729 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 731 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/cocos2d/CCProtocols.h - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 733 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/GLES-Render.mm - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 735 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/cocos2d/Support/CCFileUtils.m - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 737 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/Box2D/Collision/b2DynamicTree.h - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 739 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/AppDelegate.h - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 741 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/cocos2d/Platforms/iOS/EAGLView.h - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 743 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/cocos2d/Support/ccUtils.c - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 212 - - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 746 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/AppDelegate.mm - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 748 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/Box2D/Dynamics/Joints/b2LineJoint.cpp - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 750 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/cocos2d/Support/ccCArray.h - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 752 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/GameConfig.h - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 754 - - - CF$UID - 755 - - - CF$UID - 39 - - - CF$UID - 756 - - - - 324798742.52822101 - {0, 494} - {429, 0} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 758 - - - CF$UID - 759 - - - CF$UID - 39 - - - CF$UID - 760 - - - - 324799031.10751802 - {0, 2591} - {3117, 0} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 762 - - - CF$UID - 763 - - - CF$UID - 39 - - - CF$UID - 764 - - - - 324796021.48056901 - {0, 2127} - {0, 0} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 766 - - - CF$UID - 767 - - - CF$UID - 39 - - - CF$UID - 768 - - - - 324798080.73439199 - {0, 1604} - {2946, 0} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 770 - - - CF$UID - 771 - - - CF$UID - 39 - - - CF$UID - 764 - - - - 324798170.86996502 - {0, 2260} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 773 - - - CF$UID - 774 - - - CF$UID - 39 - - - CF$UID - 775 - - - - 324798922.50436002 - {0, 2013} - {345, 0} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 777 - - - CF$UID - 778 - - - CF$UID - 39 - - - CF$UID - 779 - - - - 324798995.16117603 - {4517, 1196} - {5090, 0} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 781 - - - CF$UID - 782 - - - CF$UID - 39 - - - CF$UID - 764 - - - - 324798108.647075 - {0, 2361} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 784 - - - CF$UID - 785 - - - CF$UID - 39 - - - CF$UID - 786 - - - - 324797532.043199 - {2411, 1583} - {3994, 0} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 788 - - - CF$UID - 789 - - - CF$UID - 39 - - - CF$UID - 790 - - - - 324796038.73105103 - {1070, 917} - {1399, 0} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 792 - - - CF$UID - 793 - - - CF$UID - 39 - - - CF$UID - 794 - - - - 324797929.63003498 - {0, 2027} - {1442, 0} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 796 - - - CF$UID - 797 - - - CF$UID - 39 - - - CF$UID - 798 - - - - 324797846.23129201 - {3425, 1765} - {4394, 7} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 800 - - - CF$UID - 801 - - - CF$UID - 39 - - - CF$UID - 764 - - - - 324799035.97232902 - {0, 366} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 803 - - - CF$UID - 804 - - - CF$UID - 39 - - - CF$UID - 805 - - - - 324797536.34140903 - {4483, 2534} - {7017, 0} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 807 - - - CF$UID - 808 - - - CF$UID - 39 - - - CF$UID - 809 - - - - 324797542.24128997 - {0, 364} - {364, 0} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 811 - - - CF$UID - 812 - - - CF$UID - 39 - - - CF$UID - 813 - - - - 324798644.05974603 - {0, 1845} - {919, 0} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 815 - - - CF$UID - 816 - - - CF$UID - 39 - - - CF$UID - 764 - - - - 324799031.97011203 - {0, 2142} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 818 - - - CF$UID - 819 - - - CF$UID - 39 - - - CF$UID - 820 - - - - 324798999.325517 - {2393, 2137} - {3524, 0} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 822 - - - CF$UID - 823 - - - CF$UID - 39 - - - CF$UID - 824 - - - - 324798249.63659501 - {0, 2627} - {1992, 0} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 826 - - - CF$UID - 827 - - - CF$UID - 39 - - - CF$UID - 764 - - - - 324796022.72070903 - {0, 543} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 829 - - - CF$UID - 830 - - - NS.objects - - - CF$UID - 831 - - - CF$UID - 832 - - - - IDEDeviceLocation - IDEDeviceArchitecture - dvtdevice-iphonesimulator:/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk-iPad - i386 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 834 - - - NS.objects - - - CF$UID - 835 - - - - IDENameString - Littlest - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 736 - - - CF$UID - 744 - - - CF$UID - 837 - - - CF$UID - 714 - - - CF$UID - 732 - - - CF$UID - 839 - - - NS.objects - - - CF$UID - 841 - - - CF$UID - 846 - - - CF$UID - 849 - - - CF$UID - 852 - - - CF$UID - 855 - - - CF$UID - 858 - - - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 838 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/cocos2d/Support/ccCArray.h - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 840 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/cocos2d/Platforms/iOS/EAGLView.h - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 842 - - - CF$UID - 843 - - - NS.objects - - - CF$UID - 844 - - - CF$UID - 845 - - - - width - height - 600 - 600 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 842 - - - CF$UID - 843 - - - NS.objects - - - CF$UID - 847 - - - CF$UID - 848 - - - - 1058 - 788 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 842 - - - CF$UID - 843 - - - NS.objects - - - CF$UID - 850 - - - CF$UID - 851 - - - - 600 - 600 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 842 - - - CF$UID - 843 - - - NS.objects - - - CF$UID - 853 - - - CF$UID - 854 - - - - 600 - 600 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 842 - - - CF$UID - 843 - - - NS.objects - - - CF$UID - 856 - - - CF$UID - 857 - - - - 600 - 600 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 842 - - - CF$UID - 843 - - - NS.objects - - - CF$UID - 859 - - - CF$UID - 860 - - - - 600 - 600 - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 863 - - - CF$UID - 864 - - - CF$UID - 865 - - - NS.objects - - - CF$UID - 866 - - - CF$UID - 892 - - - CF$UID - 508 - - - - IDEActivityReportCompletionSummaryStringSegments - IDEActivityReportOptions - IDEActivityReportTitle - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 867 - - - CF$UID - 874 - - - CF$UID - 878 - - - CF$UID - 883 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 868 - - - CF$UID - 869 - - - CF$UID - 870 - - - NS.objects - - - CF$UID - 871 - - - CF$UID - 872 - - - CF$UID - 873 - - - - IDEActivityReportStringSegmentPriority - IDEActivityReportStringSegmentBackSeparator - IDEActivityReportStringSegmentStringValue - 2 - - Build - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 868 - - - CF$UID - 869 - - - CF$UID - 870 - - - NS.objects - - - CF$UID - 875 - - - CF$UID - 876 - - - CF$UID - 877 - - - - 4 - : - Littlest - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 868 - - - CF$UID - 869 - - - CF$UID - 870 - - - NS.objects - - - CF$UID - 879 - - - CF$UID - 880 - - - CF$UID - 881 - - - - 1 - │ - - $class - - CF$UID - 882 - - NS.data - - YnBsaXN0MDDUAQIDBAUGOzxYJHZlcnNpb25YJG9iamVjdHNZJGFy - Y2hpdmVyVCR0b3ASAAGGoK0HCA8QGhscJCUrMTQ3VSRudWxs0wkK - CwwNDlxOU0F0dHJpYnV0ZXNWJGNsYXNzWE5TU3RyaW5ngAOADIAC - WVN1Y2NlZWRlZNMKERITFBdXTlMua2V5c1pOUy5vYmplY3RzgAui - FRaABIAFohgZgAaACVZOU0ZvbnRXTlNDb2xvctQKHR4fICEiI1ZO - U05hbWVWTlNTaXplWE5TZkZsYWdzgAiAByNAJgAAAAAAABENEF8Q - EUx1Y2lkYUdyYW5kZS1Cb2xk0iYnKClaJGNsYXNzbmFtZVgkY2xh - c3Nlc1ZOU0ZvbnSiKCpYTlNPYmplY3TTCiwtLi8wXE5TQ29sb3JT - cGFjZVdOU1doaXRlgAoQA0IwANImJzIzV05TQ29sb3KiMirSJic1 - NlxOU0RpY3Rpb25hcnmiNSrSJic4OV8QEk5TQXR0cmlidXRlZFN0 - cmluZ6I6Kl8QEk5TQXR0cmlidXRlZFN0cmluZ18QD05TS2V5ZWRB - cmNoaXZlctE9PlRyb290gAEACAARABoAIwAtADIANwBFAEsAUgBf - AGYAbwBxAHMAdQB/AIYAjgCZAJsAngCgAKIApQCnAKkAsAC4AMEA - yADPANgA2gDcAOUA6AD8AQEBDAEVARwBHwEoAS8BPAFEAUYBSAFL - AVABWAFbAWABbQFwAXUBigGNAaIBtAG3AbwAAAAAAAACAQAAAAAA - AAA/AAAAAAAAAAAAAAAAAAABvg== - - - - $classes - - NSMutableData - NSData - NSObject - - $classname - NSMutableData - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 868 - - - CF$UID - 884 - - - CF$UID - 885 - - - CF$UID - 870 - - - CF$UID - 886 - - - CF$UID - 887 - - - NS.objects - - - CF$UID - 888 - - - CF$UID - 131 - - - CF$UID - 889 - - - CF$UID - 891 - - - CF$UID - 131 - - - CF$UID - 131 - - - - IDEActivityReportStringSegmentType - IDEActivityReportStringSegmentDate - IDEActivityReportStringSegmentDateStyle - IDEActivityReportStringSegmentTimeStyle - 3 - - $class - - CF$UID - 890 - - NS.time - 324799008.79813403 - - - $classes - - NSDate - NSObject - - $classname - NSDate - - Today at 10:56 PM - 106 - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 894 - - - CF$UID - 896 - - - CF$UID - 898 - - - CF$UID - 900 - - - CF$UID - 902 - - - CF$UID - 904 - - - CF$UID - 905 - - - CF$UID - 907 - - - CF$UID - 909 - - - CF$UID - 911 - - - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 895 - - - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/AppDelegate.h - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 897 - - - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/AppDelegate.mm - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 899 - - - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/Box2D/Dynamics/Joints/b2PrismaticJoint.cpp - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 901 - - - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/Box2D/Dynamics/Joints/b2LineJoint.cpp - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 903 - - - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/Box2D/Collision/b2Distance.cpp - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 501 - - - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 906 - - - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/Foundation/Common/GlobalDefines.h - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 908 - - - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/Foundation/Synchronization/MemorySync.h - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 910 - - - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/Box2D/Collision/b2BroadPhase.cpp - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 912 - - - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/cocos2d/Support/ccCArray.h - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 29 - - - CF$UID - 25 - - - CF$UID - 26 - - - CF$UID - 27 - - - CF$UID - 914 - - - CF$UID - 28 - - - NS.objects - - - CF$UID - 8 - - - CF$UID - 915 - - - CF$UID - 39 - - - CF$UID - 914 - - - CF$UID - 916 - - - CF$UID - 976 - - - - IDEWorkspaceTabController_CAB69E15-FE1A-4771-8B6E-B94D5D9C0309 - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 914 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 31 - - - CF$UID - 32 - - - CF$UID - 33 - - - CF$UID - 34 - - - CF$UID - 35 - - - CF$UID - 36 - - - CF$UID - 37 - - - NS.objects - - - CF$UID - 38 - - - CF$UID - 39 - - - CF$UID - 917 - - - CF$UID - 923 - - - CF$UID - 934 - - - CF$UID - 39 - - - CF$UID - 942 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 918 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 919 - - - CF$UID - 921 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 920 - - - - 376 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 922 - - - - 224 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 54 - - - CF$UID - 55 - - - CF$UID - 56 - - - NS.objects - - - CF$UID - 924 - - - CF$UID - 54 - - - CF$UID - 931 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 58 - - - CF$UID - 59 - - - CF$UID - 60 - - - CF$UID - 61 - - - CF$UID - 62 - - - CF$UID - 63 - - - CF$UID - 64 - - - CF$UID - 65 - - - CF$UID - 66 - - - CF$UID - 67 - - - NS.objects - - - CF$UID - 39 - - - CF$UID - 925 - - - CF$UID - 926 - - - CF$UID - 927 - - - CF$UID - 928 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 929 - - - CF$UID - 39 - - - CF$UID - 930 - - - - {{0, 0}, {0, 0}} - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 76 - - - CF$UID - 77 - - - CF$UID - 78 - - - CF$UID - 79 - - - CF$UID - 80 - - - CF$UID - 81 - - - CF$UID - 82 - - - NS.objects - - - CF$UID - 932 - - - CF$UID - 39 - - - CF$UID - 84 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 933 - - - CF$UID - 84 - - - - {{0, 0}, {259, 832}} - - $class - - CF$UID - 87 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 935 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 936 - - - CF$UID - 938 - - - CF$UID - 940 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 34 - - - CF$UID - 937 - - - - 260 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 37 - - - CF$UID - 939 - - - - 880 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 95 - - - CF$UID - 941 - - - - 260 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 98 - - - CF$UID - 99 - - - CF$UID - 100 - - - CF$UID - 101 - - - CF$UID - 102 - - - CF$UID - 103 - - - CF$UID - 104 - - - CF$UID - 105 - - - NS.objects - - - CF$UID - 943 - - - CF$UID - 947 - - - CF$UID - 954 - - - CF$UID - 151 - - - CF$UID - 38 - - - CF$UID - 969 - - - CF$UID - 975 - - - CF$UID - 39 - - - - - $class - - CF$UID - 111 - - geniusEditorContextNode - - CF$UID - 0 - - primaryEditorContextNode - - CF$UID - 944 - - rootLayoutTreeNode - - CF$UID - 945 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 0 - - contentType - 1 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 945 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 946 - - contentType - 0 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 0 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 944 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 113 - - - NS.objects - - - CF$UID - 948 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 115 - - - NS.objects - - - CF$UID - 949 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 117 - - - CF$UID - 118 - - - CF$UID - 119 - - - NS.objects - - - CF$UID - 950 - - - CF$UID - 38 - - - CF$UID - 952 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 951 - - - - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 953 - - - - {{0, 0}, {600, 600}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 125 - - - CF$UID - 126 - - - CF$UID - 127 - - - CF$UID - 128 - - - CF$UID - 129 - - - CF$UID - 130 - - - NS.objects - - - CF$UID - 131 - - - CF$UID - 955 - - - CF$UID - 956 - - - CF$UID - 131 - - - CF$UID - 957 - - - CF$UID - 963 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 133 - - - NS.objects - - - CF$UID - 38 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 135 - - - NS.objects - - - CF$UID - 136 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 958 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 959 - - - CF$UID - 961 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 960 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 962 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 964 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 965 - - - CF$UID - 967 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 966 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 968 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 970 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 971 - - - CF$UID - 973 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 155 - - - CF$UID - 972 - - - - 203 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 158 - - - CF$UID - 974 - - - - 115 - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - {{31, 510}, {600, 624}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 29 - - - CF$UID - 25 - - - CF$UID - 26 - - - CF$UID - 978 - - - CF$UID - 27 - - - CF$UID - 28 - - - NS.objects - - - CF$UID - 9 - - - CF$UID - 979 - - - CF$UID - 39 - - - CF$UID - 980 - - - CF$UID - 978 - - - CF$UID - 1040 - - - - IDEWorkspaceTabController_F41C7749-7CA9-49DB-96FA-09EBA0ADFE75 - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 978 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 31 - - - CF$UID - 32 - - - CF$UID - 33 - - - CF$UID - 34 - - - CF$UID - 35 - - - CF$UID - 36 - - - CF$UID - 37 - - - NS.objects - - - CF$UID - 38 - - - CF$UID - 39 - - - CF$UID - 981 - - - CF$UID - 987 - - - CF$UID - 998 - - - CF$UID - 39 - - - CF$UID - 1006 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 982 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 983 - - - CF$UID - 985 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 984 - - - - 376 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 986 - - - - 224 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 54 - - - CF$UID - 55 - - - CF$UID - 56 - - - NS.objects - - - CF$UID - 988 - - - CF$UID - 54 - - - CF$UID - 995 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 58 - - - CF$UID - 59 - - - CF$UID - 60 - - - CF$UID - 61 - - - CF$UID - 62 - - - CF$UID - 63 - - - CF$UID - 64 - - - CF$UID - 65 - - - CF$UID - 66 - - - CF$UID - 67 - - - NS.objects - - - CF$UID - 39 - - - CF$UID - 989 - - - CF$UID - 990 - - - CF$UID - 991 - - - CF$UID - 992 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 993 - - - CF$UID - 39 - - - CF$UID - 994 - - - - {{0, 0}, {0, 0}} - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 76 - - - CF$UID - 77 - - - CF$UID - 78 - - - CF$UID - 79 - - - CF$UID - 80 - - - CF$UID - 81 - - - CF$UID - 82 - - - NS.objects - - - CF$UID - 996 - - - CF$UID - 39 - - - CF$UID - 84 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 997 - - - CF$UID - 84 - - - - {{0, 0}, {259, 832}} - - $class - - CF$UID - 87 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 999 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1000 - - - CF$UID - 1002 - - - CF$UID - 1004 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 34 - - - CF$UID - 1001 - - - - 260 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 37 - - - CF$UID - 1003 - - - - 880 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 95 - - - CF$UID - 1005 - - - - 260 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 98 - - - CF$UID - 99 - - - CF$UID - 100 - - - CF$UID - 101 - - - CF$UID - 102 - - - CF$UID - 103 - - - CF$UID - 104 - - - CF$UID - 105 - - - NS.objects - - - CF$UID - 1007 - - - CF$UID - 1011 - - - CF$UID - 1018 - - - CF$UID - 151 - - - CF$UID - 38 - - - CF$UID - 1033 - - - CF$UID - 1039 - - - CF$UID - 39 - - - - - $class - - CF$UID - 111 - - geniusEditorContextNode - - CF$UID - 0 - - primaryEditorContextNode - - CF$UID - 1008 - - rootLayoutTreeNode - - CF$UID - 1009 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 0 - - contentType - 1 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 1009 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 1010 - - contentType - 0 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 0 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1008 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 113 - - - NS.objects - - - CF$UID - 1012 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 115 - - - NS.objects - - - CF$UID - 1013 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 117 - - - CF$UID - 118 - - - CF$UID - 119 - - - NS.objects - - - CF$UID - 1014 - - - CF$UID - 38 - - - CF$UID - 1016 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1015 - - - - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1017 - - - - {{0, 0}, {600, 600}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 125 - - - CF$UID - 126 - - - CF$UID - 127 - - - CF$UID - 128 - - - CF$UID - 129 - - - CF$UID - 130 - - - NS.objects - - - CF$UID - 131 - - - CF$UID - 1019 - - - CF$UID - 1020 - - - CF$UID - 131 - - - CF$UID - 1021 - - - CF$UID - 1027 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 133 - - - NS.objects - - - CF$UID - 38 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 135 - - - NS.objects - - - CF$UID - 136 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1022 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1023 - - - CF$UID - 1025 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1024 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1026 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1028 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1029 - - - CF$UID - 1031 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1030 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1032 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1034 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1035 - - - CF$UID - 1037 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 155 - - - CF$UID - 1036 - - - - 203 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 158 - - - CF$UID - 1038 - - - - 115 - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - {{165, 377}, {600, 624}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 29 - - - CF$UID - 25 - - - CF$UID - 26 - - - CF$UID - 27 - - - CF$UID - 1042 - - - CF$UID - 28 - - - NS.objects - - - CF$UID - 10 - - - CF$UID - 1043 - - - CF$UID - 151 - - - CF$UID - 1042 - - - CF$UID - 1044 - - - CF$UID - 1197 - - - - IDEWorkspaceTabController_E2E6AD07-6BD6-47BB-BF66-5478490C095F - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1042 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 31 - - - CF$UID - 32 - - - CF$UID - 167 - - - CF$UID - 33 - - - CF$UID - 34 - - - CF$UID - 35 - - - CF$UID - 36 - - - CF$UID - 37 - - - NS.objects - - - CF$UID - 38 - - - CF$UID - 151 - - - CF$UID - 1045 - - - CF$UID - 1046 - - - CF$UID - 1052 - - - CF$UID - 1135 - - - CF$UID - 151 - - - CF$UID - 1143 - - - - AppDelegate.h - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1047 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1048 - - - CF$UID - 1050 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1049 - - - - 878 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1051 - - - - 224 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 1053 - - - CF$UID - 1054 - - - CF$UID - 55 - - - CF$UID - 54 - - - CF$UID - 1055 - - - CF$UID - 56 - - - CF$UID - 1056 - - - NS.objects - - - CF$UID - 1057 - - - CF$UID - 1061 - - - CF$UID - 56 - - - CF$UID - 1073 - - - CF$UID - 1112 - - - CF$UID - 1117 - - - CF$UID - 1127 - - - - Xcode.DebuggerKit.ThreadsStacksNavigator - Xcode.IDEKit.Navigator.BatchFind - Xcode.IDEKit.Navigator.Breakpoints - Xcode.IDEKit.Navigator.Logs - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 1058 - - - CF$UID - 1059 - - - CF$UID - 1060 - - - NS.objects - - - CF$UID - 136 - - - CF$UID - 38 - - - CF$UID - 39 - - - - IDEStackCompressionValue - IDEThreadsOrQueuesMode - IDEHideAncestorForNonInterestingFrames - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 1062 - - - CF$UID - 1063 - - - CF$UID - 1064 - - - CF$UID - 1065 - - - CF$UID - 1066 - - - CF$UID - 1067 - - - CF$UID - 1068 - - - NS.objects - - - CF$UID - 38 - - - CF$UID - 39 - - - CF$UID - 46 - - - CF$UID - 46 - - - CF$UID - 1069 - - - CF$UID - 38 - - - CF$UID - 1071 - - - - IDEBatchFindNavigatorScrollPosition - IDEBatchFindNavigatorShowsOptions - IDEBatchFindNavigatorReplaceString - IDEBatchFindNavigatorFindString - IDEBatchFindNavigatorSelectedRowIndexes - IDEBatchFindNavigatorFindMode - IDEBatchFindNavigatorCollapsedGroups - - $class - - CF$UID - 1070 - - NSRangeCount - 0 - - - $classes - - NSIndexSet - NSObject - - $classname - NSIndexSet - - - $class - - CF$UID - 1072 - - NSRangeCount - 0 - - - $classes - - NSMutableIndexSet - NSIndexSet - NSObject - - $classname - NSMutableIndexSet - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 58 - - - CF$UID - 59 - - - CF$UID - 60 - - - CF$UID - 61 - - - CF$UID - 62 - - - CF$UID - 63 - - - CF$UID - 64 - - - CF$UID - 65 - - - CF$UID - 66 - - - CF$UID - 67 - - - NS.objects - - - CF$UID - 39 - - - CF$UID - 1074 - - - CF$UID - 1075 - - - CF$UID - 1076 - - - CF$UID - 1109 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 1110 - - - CF$UID - 39 - - - CF$UID - 1111 - - - - {{0, 0}, {291, 1036}} - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - CF$UID - 1077 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 1078 - - - CF$UID - 1079 - - - CF$UID - 1080 - - - CF$UID - 1081 - - - CF$UID - 1082 - - - NS.objects - - - CF$UID - 1083 - - - CF$UID - 1087 - - - CF$UID - 1088 - - - CF$UID - 1108 - - - CF$UID - 1087 - - - - documentLocations - fullMessage - subissues - type - shortMessage - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1084 - - - - - $class - - CF$UID - 1086 - - characterRangeLen - 0 - characterRangeLoc - -1 - documentURL - - CF$UID - 1085 - - endingColumnNumber - -1 - endingLineNumber - 134 - startingColumnNumber - -1 - startingLineNumber - 134 - timestamp - - CF$UID - 0 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Littlest/libs/Box2D/Collision/b2DynamicTree.h - - - $classes - - DVTTextDocumentLocation - DVTDocumentLocation - NSObject - - $classname - DVTTextDocumentLocation - - 'assert' was not declared in this scope - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1089 - - - CF$UID - 1096 - - - CF$UID - 1102 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 1078 - - - CF$UID - 1079 - - - CF$UID - 1080 - - - CF$UID - 1081 - - - CF$UID - 1082 - - - NS.objects - - - CF$UID - 1090 - - - CF$UID - 1093 - - - CF$UID - 1094 - - - CF$UID - 1095 - - - CF$UID - 1093 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1091 - - - - - $class - - CF$UID - 1086 - - characterRangeLen - 0 - characterRangeLoc - -1 - documentURL - - CF$UID - 1092 - - endingColumnNumber - -1 - endingLineNumber - 18 - startingColumnNumber - -1 - startingLineNumber - 18 - timestamp - - CF$UID - 0 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/Box2D/Collision/b2BroadPhase.cpp - - In file included from /Users/dorischen/Documents/Temp/Littlest/Littlest/libs/Box2D/Collision/b2BroadPhase.cpp - - $class - - CF$UID - 51 - - NS.objects - - - Uncategorized - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 1078 - - - CF$UID - 1079 - - - CF$UID - 1080 - - - CF$UID - 1081 - - - CF$UID - 1082 - - - NS.objects - - - CF$UID - 1097 - - - CF$UID - 1100 - - - CF$UID - 1101 - - - CF$UID - 1095 - - - CF$UID - 1100 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1098 - - - - - $class - - CF$UID - 1086 - - characterRangeLen - 0 - characterRangeLoc - -1 - documentURL - - CF$UID - 1099 - - endingColumnNumber - -1 - endingLineNumber - 23 - startingColumnNumber - -1 - startingLineNumber - 23 - timestamp - - CF$UID - 0 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Littlest/libs/Box2D/Collision/b2BroadPhase.h - - In file included from Littlest/libs/Box2D/Collision/b2BroadPhase.h - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 1078 - - - CF$UID - 1079 - - - CF$UID - 1080 - - - CF$UID - 1081 - - - CF$UID - 1082 - - - NS.objects - - - CF$UID - 1103 - - - CF$UID - 1106 - - - CF$UID - 1107 - - - CF$UID - 1095 - - - CF$UID - 1106 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1104 - - - - - $class - - CF$UID - 1086 - - characterRangeLen - 0 - characterRangeLoc - -1 - documentURL - - CF$UID - 1105 - - endingColumnNumber - -1 - endingLineNumber - 134 - startingColumnNumber - -1 - startingLineNumber - 134 - timestamp - - CF$UID - 0 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Littlest/libs/Box2D/Collision/b2DynamicTree.h - - 'assert' was not declared in this scope in Littlest/libs/Box2D/Collision/b2DynamicTree.h - - $class - - CF$UID - 51 - - NS.objects - - - '*' was not declared in this scope - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 1113 - - - CF$UID - 1114 - - - CF$UID - 81 - - - CF$UID - 76 - - - NS.objects - - - CF$UID - 84 - - - CF$UID - 39 - - - CF$UID - 1115 - - - CF$UID - 1116 - - - - IDECollapsedtemsSet - IDEBreakpointNavigatorFilterOnEnabled - - $class - - CF$UID - 87 - - NS.objects - - - {{0, 0}, {259, 832}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 76 - - - CF$UID - 77 - - - CF$UID - 78 - - - CF$UID - 79 - - - CF$UID - 80 - - - CF$UID - 81 - - - CF$UID - 82 - - - NS.objects - - - CF$UID - 1118 - - - CF$UID - 39 - - - CF$UID - 84 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 1119 - - - CF$UID - 1123 - - - - {{0, 0}, {291, 1058}} - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1120 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1121 - - - CF$UID - 208 - - - CF$UID - 1122 - - - - Littlest - AppDelegate.h - - $class - - CF$UID - 85 - - NS.objects - - - CF$UID - 1124 - - - CF$UID - 1125 - - - CF$UID - 1126 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1121 - - - CF$UID - 208 - - - CF$UID - 206 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1121 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1121 - - - CF$UID - 208 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 1128 - - - CF$UID - 1129 - - - CF$UID - 1130 - - - CF$UID - 1131 - - - NS.objects - - - CF$UID - 1132 - - - CF$UID - 1133 - - - CF$UID - 39 - - - CF$UID - 1134 - - - - IDELogNavigatorExpandedItemsStateKey - IDELogNavigatorSelectedObjectsStateKey - IDELogNavigatorRecentFilterStateKey - IDELogNavigatorVisibleRectStateKey - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 51 - - NS.objects - - - {{0, 0}, {259, 832}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1136 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1137 - - - CF$UID - 1139 - - - CF$UID - 1141 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 34 - - - CF$UID - 1138 - - - - 292 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 37 - - - CF$UID - 1140 - - - - 1048 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 95 - - - CF$UID - 1142 - - - - 260 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 98 - - - CF$UID - 100 - - - CF$UID - 99 - - - CF$UID - 101 - - - CF$UID - 102 - - - CF$UID - 103 - - - CF$UID - 104 - - - CF$UID - 105 - - - NS.objects - - - CF$UID - 1144 - - - CF$UID - 1156 - - - CF$UID - 1171 - - - CF$UID - 151 - - - CF$UID - 38 - - - CF$UID - 1190 - - - CF$UID - 1196 - - - CF$UID - 151 - - - - - $class - - CF$UID - 111 - - geniusEditorContextNode - - CF$UID - 0 - - primaryEditorContextNode - - CF$UID - 1145 - - rootLayoutTreeNode - - CF$UID - 1154 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 0 - - contentType - 1 - documentArchivableRepresentation - - CF$UID - 1146 - - orientation - 0 - parent - - CF$UID - 1154 - - - - $class - - CF$UID - 215 - - DocumentLocation - - CF$UID - 1153 - - DomainIdentifier - - CF$UID - 1147 - - IdentifierPath - - CF$UID - 1148 - - IndexOfDocumentIdentifier - - CF$UID - 38 - - - Xcode.IDENavigableItemDomain.WorkspaceStructure - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1149 - - - CF$UID - 1150 - - - CF$UID - 1151 - - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1122 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 208 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1152 - - - Littlest - - $class - - CF$UID - 214 - - documentURL - - CF$UID - 739 - - timestamp - - CF$UID - 0 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 1155 - - contentType - 0 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 0 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1145 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 125 - - - CF$UID - 126 - - - CF$UID - 127 - - - CF$UID - 128 - - - CF$UID - 129 - - - CF$UID - 130 - - - NS.objects - - - CF$UID - 131 - - - CF$UID - 1157 - - - CF$UID - 1158 - - - CF$UID - 131 - - - CF$UID - 1159 - - - CF$UID - 1165 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 133 - - - NS.objects - - - CF$UID - 38 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 135 - - - NS.objects - - - CF$UID - 136 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1160 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1161 - - - CF$UID - 1163 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1162 - - - - 351 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1164 - - - - 696 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1166 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1167 - - - CF$UID - 1169 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1168 - - - - 351 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1170 - - - - 696 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 113 - - - NS.objects - - - CF$UID - 1172 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 115 - - - NS.objects - - - CF$UID - 1173 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 117 - - - CF$UID - 118 - - - CF$UID - 119 - - - NS.objects - - - CF$UID - 1174 - - - CF$UID - 38 - - - CF$UID - 1188 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1175 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 223 - - - CF$UID - 224 - - - CF$UID - 225 - - - CF$UID - 226 - - - CF$UID - 227 - - - CF$UID - 228 - - - CF$UID - 229 - - - NS.objects - - - CF$UID - 1176 - - - CF$UID - 1177 - - - CF$UID - 1183 - - - CF$UID - 1122 - - - CF$UID - 1122 - - - CF$UID - 247 - - - CF$UID - 1186 - - - - public.c-header - - $class - - CF$UID - 215 - - DocumentLocation - - CF$UID - 1153 - - DomainIdentifier - - CF$UID - 1147 - - IdentifierPath - - CF$UID - 1178 - - IndexOfDocumentIdentifier - - CF$UID - 38 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1179 - - - CF$UID - 1180 - - - CF$UID - 1181 - - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1122 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 208 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1182 - - - Littlest - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 1184 - - - CF$UID - 1185 - - - CF$UID - 39 - - - CF$UID - 764 - - - - 324799035.97469199 - {0, 366} - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 1187 - - - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/AppDelegate.h - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1189 - - - - {{0, 0}, {1048, 965}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1191 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1192 - - - CF$UID - 1194 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 155 - - - CF$UID - 1193 - - - - 987 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 158 - - - CF$UID - 1195 - - - - 115 - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - {{0, 0}, {1600, 1178}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 1199 - - - CF$UID - 25 - - - CF$UID - 26 - - - CF$UID - 27 - - - CF$UID - 28 - - - CF$UID - 29 - - - NS.objects - - - CF$UID - 1200 - - - CF$UID - 1286 - - - CF$UID - 39 - - - CF$UID - 1199 - - - CF$UID - 1287 - - - CF$UID - 11 - - - - IDEWorkspaceTabController_F5B0B4A4-79EE-4BDE-8DBB-ED05BA0E2AFA - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 167 - - - CF$UID - 32 - - - CF$UID - 31 - - - CF$UID - 33 - - - CF$UID - 34 - - - CF$UID - 35 - - - CF$UID - 36 - - - CF$UID - 37 - - - NS.objects - - - CF$UID - 1201 - - - CF$UID - 39 - - - CF$UID - 38 - - - CF$UID - 1202 - - - CF$UID - 1208 - - - CF$UID - 1220 - - - CF$UID - 39 - - - CF$UID - 1228 - - - - b2DynamicTree.h - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1203 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1204 - - - CF$UID - 1206 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1205 - - - - 376 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1207 - - - - 224 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 55 - - - CF$UID - 56 - - - NS.objects - - - CF$UID - 56 - - - CF$UID - 1209 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 76 - - - CF$UID - 77 - - - CF$UID - 78 - - - CF$UID - 79 - - - CF$UID - 80 - - - CF$UID - 81 - - - CF$UID - 82 - - - NS.objects - - - CF$UID - 1210 - - - CF$UID - 39 - - - CF$UID - 84 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 1211 - - - CF$UID - 1215 - - - - {{0, 0}, {0, 0}} - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1212 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1213 - - - CF$UID - 208 - - - CF$UID - 206 - - - CF$UID - 204 - - - CF$UID - 1214 - - - - Littlest - b2DynamicTree.h - - $class - - CF$UID - 85 - - NS.objects - - - CF$UID - 1216 - - - CF$UID - 1217 - - - CF$UID - 1218 - - - CF$UID - 1219 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1213 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1213 - - - CF$UID - 208 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1213 - - - CF$UID - 208 - - - CF$UID - 206 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1213 - - - CF$UID - 208 - - - CF$UID - 206 - - - CF$UID - 204 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1221 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1222 - - - CF$UID - 1224 - - - CF$UID - 1226 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 34 - - - CF$UID - 1223 - - - - 260 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 37 - - - CF$UID - 1225 - - - - 880 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 95 - - - CF$UID - 1227 - - - - 260 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 98 - - - CF$UID - 99 - - - CF$UID - 100 - - - CF$UID - 101 - - - CF$UID - 102 - - - CF$UID - 103 - - - CF$UID - 104 - - - CF$UID - 105 - - - NS.objects - - - CF$UID - 1229 - - - CF$UID - 1242 - - - CF$UID - 1264 - - - CF$UID - 151 - - - CF$UID - 38 - - - CF$UID - 1279 - - - CF$UID - 1285 - - - CF$UID - 39 - - - - - $class - - CF$UID - 111 - - geniusEditorContextNode - - CF$UID - 0 - - primaryEditorContextNode - - CF$UID - 1230 - - rootLayoutTreeNode - - CF$UID - 1240 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 0 - - contentType - 1 - documentArchivableRepresentation - - CF$UID - 1231 - - orientation - 0 - parent - - CF$UID - 1240 - - - - $class - - CF$UID - 215 - - DocumentLocation - - CF$UID - 1239 - - DomainIdentifier - - CF$UID - 1147 - - IdentifierPath - - CF$UID - 1232 - - IndexOfDocumentIdentifier - - CF$UID - 38 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1233 - - - CF$UID - 1234 - - - CF$UID - 1235 - - - CF$UID - 1236 - - - CF$UID - 1237 - - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1214 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 204 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 206 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 208 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1238 - - - Littlest - - $class - - CF$UID - 214 - - documentURL - - CF$UID - 737 - - timestamp - - CF$UID - 0 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 1241 - - contentType - 0 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 0 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1230 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 113 - - - NS.objects - - - CF$UID - 1243 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 115 - - - NS.objects - - - CF$UID - 1244 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 117 - - - CF$UID - 118 - - - CF$UID - 119 - - - NS.objects - - - CF$UID - 1245 - - - CF$UID - 38 - - - CF$UID - 1262 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1246 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 223 - - - CF$UID - 224 - - - CF$UID - 225 - - - CF$UID - 226 - - - CF$UID - 227 - - - CF$UID - 228 - - - CF$UID - 229 - - - NS.objects - - - CF$UID - 1176 - - - CF$UID - 1247 - - - CF$UID - 1255 - - - CF$UID - 1259 - - - CF$UID - 1214 - - - CF$UID - 247 - - - CF$UID - 1260 - - - - - $class - - CF$UID - 215 - - DocumentLocation - - CF$UID - 1239 - - DomainIdentifier - - CF$UID - 1147 - - IdentifierPath - - CF$UID - 1248 - - IndexOfDocumentIdentifier - - CF$UID - 38 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1249 - - - CF$UID - 1250 - - - CF$UID - 1251 - - - CF$UID - 1252 - - - CF$UID - 1253 - - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1214 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 204 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 206 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 208 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1254 - - - Littlest - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 1256 - - - CF$UID - 1257 - - - CF$UID - 39 - - - CF$UID - 1258 - - - - 324797747.82993799 - {1542, 1488} - {2273, 6} - class b2DynamicTree - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 1261 - - - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/Box2D/Collision/b2DynamicTree.h - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1263 - - - - {{0, 0}, {600, 600}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 125 - - - CF$UID - 126 - - - CF$UID - 127 - - - CF$UID - 128 - - - CF$UID - 129 - - - CF$UID - 130 - - - NS.objects - - - CF$UID - 131 - - - CF$UID - 1265 - - - CF$UID - 1266 - - - CF$UID - 131 - - - CF$UID - 1267 - - - CF$UID - 1273 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 133 - - - NS.objects - - - CF$UID - 38 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 135 - - - NS.objects - - - CF$UID - 136 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1268 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1269 - - - CF$UID - 1271 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1270 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1272 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1274 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1275 - - - CF$UID - 1277 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1276 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1278 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1280 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1281 - - - CF$UID - 1283 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 155 - - - CF$UID - 1282 - - - - 203 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 158 - - - CF$UID - 1284 - - - - 115 - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1199 - - - - {{438, -848}, {600, 624}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 29 - - - CF$UID - 25 - - - CF$UID - 26 - - - CF$UID - 27 - - - CF$UID - 1289 - - - CF$UID - 28 - - - NS.objects - - - CF$UID - 12 - - - CF$UID - 1290 - - - CF$UID - 39 - - - CF$UID - 1289 - - - CF$UID - 1291 - - - CF$UID - 1378 - - - - IDEWorkspaceTabController_C9B23C9E-8AE8-4462-BB4C-E221CC490A7D - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1289 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 167 - - - CF$UID - 32 - - - CF$UID - 31 - - - CF$UID - 33 - - - CF$UID - 34 - - - CF$UID - 35 - - - CF$UID - 36 - - - CF$UID - 37 - - - NS.objects - - - CF$UID - 1292 - - - CF$UID - 39 - - - CF$UID - 38 - - - CF$UID - 1293 - - - CF$UID - 1299 - - - CF$UID - 1310 - - - CF$UID - 39 - - - CF$UID - 1318 - - - - EAGLView.h - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1294 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1295 - - - CF$UID - 1297 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1296 - - - - 376 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1298 - - - - 224 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 54 - - - CF$UID - 55 - - - CF$UID - 56 - - - NS.objects - - - CF$UID - 1300 - - - CF$UID - 54 - - - CF$UID - 1307 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 58 - - - CF$UID - 59 - - - CF$UID - 60 - - - CF$UID - 61 - - - CF$UID - 62 - - - CF$UID - 63 - - - CF$UID - 64 - - - CF$UID - 65 - - - CF$UID - 66 - - - CF$UID - 67 - - - NS.objects - - - CF$UID - 39 - - - CF$UID - 1301 - - - CF$UID - 1302 - - - CF$UID - 1303 - - - CF$UID - 1304 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 1305 - - - CF$UID - 39 - - - CF$UID - 1306 - - - - {{0, 0}, {0, 0}} - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 76 - - - CF$UID - 77 - - - CF$UID - 78 - - - CF$UID - 79 - - - CF$UID - 80 - - - CF$UID - 81 - - - CF$UID - 82 - - - NS.objects - - - CF$UID - 1308 - - - CF$UID - 39 - - - CF$UID - 84 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 1309 - - - CF$UID - 84 - - - - {{0, 0}, {259, 832}} - - $class - - CF$UID - 87 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1311 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1312 - - - CF$UID - 1314 - - - CF$UID - 1316 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 34 - - - CF$UID - 1313 - - - - 260 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 37 - - - CF$UID - 1315 - - - - 880 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 95 - - - CF$UID - 1317 - - - - 260 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 98 - - - CF$UID - 99 - - - CF$UID - 100 - - - CF$UID - 101 - - - CF$UID - 102 - - - CF$UID - 103 - - - CF$UID - 104 - - - CF$UID - 105 - - - NS.objects - - - CF$UID - 1319 - - - CF$UID - 1335 - - - CF$UID - 1356 - - - CF$UID - 151 - - - CF$UID - 38 - - - CF$UID - 1371 - - - CF$UID - 1377 - - - CF$UID - 39 - - - - - $class - - CF$UID - 111 - - geniusEditorContextNode - - CF$UID - 0 - - primaryEditorContextNode - - CF$UID - 1320 - - rootLayoutTreeNode - - CF$UID - 1333 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 0 - - contentType - 1 - documentArchivableRepresentation - - CF$UID - 1321 - - orientation - 0 - parent - - CF$UID - 1333 - - - - $class - - CF$UID - 215 - - DocumentLocation - - CF$UID - 1331 - - DomainIdentifier - - CF$UID - 198 - - IdentifierPath - - CF$UID - 1322 - - IndexOfDocumentIdentifier - - CF$UID - 38 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1323 - - - CF$UID - 1325 - - - CF$UID - 1327 - - - CF$UID - 1328 - - - CF$UID - 1329 - - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1324 - - - EAGLView.h - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1326 - - - cocos2d - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 206 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 208 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1330 - - - Littlest - - $class - - CF$UID - 214 - - documentURL - - CF$UID - 1332 - - timestamp - - CF$UID - 0 - - - - $class - - CF$UID - 213 - - NS.string - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/cocos2d/Platforms/iOS/EAGLView.h - - - $class - - CF$UID - 110 - - children - - CF$UID - 1334 - - contentType - 0 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 0 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1320 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 113 - - - NS.objects - - - CF$UID - 1336 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 115 - - - NS.objects - - - CF$UID - 1337 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 117 - - - CF$UID - 118 - - - CF$UID - 119 - - - NS.objects - - - CF$UID - 1338 - - - CF$UID - 38 - - - CF$UID - 1354 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1339 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 223 - - - CF$UID - 224 - - - CF$UID - 225 - - - CF$UID - 226 - - - CF$UID - 227 - - - CF$UID - 228 - - - CF$UID - 229 - - - NS.objects - - - CF$UID - 1176 - - - CF$UID - 1340 - - - CF$UID - 1348 - - - CF$UID - 1324 - - - CF$UID - 1324 - - - CF$UID - 247 - - - CF$UID - 1352 - - - - - $class - - CF$UID - 215 - - DocumentLocation - - CF$UID - 1331 - - DomainIdentifier - - CF$UID - 198 - - IdentifierPath - - CF$UID - 1341 - - IndexOfDocumentIdentifier - - CF$UID - 38 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1342 - - - CF$UID - 1343 - - - CF$UID - 1344 - - - CF$UID - 1345 - - - CF$UID - 1346 - - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1324 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1326 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 206 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 208 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1347 - - - Littlest - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 1349 - - - CF$UID - 1350 - - - CF$UID - 39 - - - CF$UID - 1351 - - - - 324797456.81506699 - {5168, 1850} - {7018, 0} - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 1353 - - - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/cocos2d/Platforms/iOS/EAGLView.h - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1355 - - - - {{0, 0}, {600, 600}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 125 - - - CF$UID - 126 - - - CF$UID - 127 - - - CF$UID - 128 - - - CF$UID - 129 - - - CF$UID - 130 - - - NS.objects - - - CF$UID - 131 - - - CF$UID - 1357 - - - CF$UID - 1358 - - - CF$UID - 131 - - - CF$UID - 1359 - - - CF$UID - 1365 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 133 - - - NS.objects - - - CF$UID - 38 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 135 - - - NS.objects - - - CF$UID - 136 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1360 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1361 - - - CF$UID - 1363 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1362 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1364 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1366 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1367 - - - CF$UID - 1369 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1368 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1370 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1372 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1373 - - - CF$UID - 1375 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 155 - - - CF$UID - 1374 - - - - 203 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 158 - - - CF$UID - 1376 - - - - 115 - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - {{186, 354}, {600, 624}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 29 - - - CF$UID - 25 - - - CF$UID - 26 - - - CF$UID - 1380 - - - CF$UID - 27 - - - CF$UID - 28 - - - NS.objects - - - CF$UID - 13 - - - CF$UID - 1381 - - - CF$UID - 39 - - - CF$UID - 1382 - - - CF$UID - 1380 - - - CF$UID - 1442 - - - - IDEWorkspaceTabController_7CA7805E-9440-4C14-8000-B32AB01B8595 - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1380 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 31 - - - CF$UID - 32 - - - CF$UID - 33 - - - CF$UID - 34 - - - CF$UID - 35 - - - CF$UID - 36 - - - CF$UID - 37 - - - NS.objects - - - CF$UID - 38 - - - CF$UID - 39 - - - CF$UID - 1383 - - - CF$UID - 1389 - - - CF$UID - 1400 - - - CF$UID - 39 - - - CF$UID - 1408 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1384 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1385 - - - CF$UID - 1387 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1386 - - - - 389 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1388 - - - - 211 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 54 - - - CF$UID - 55 - - - CF$UID - 56 - - - NS.objects - - - CF$UID - 1390 - - - CF$UID - 54 - - - CF$UID - 1397 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 58 - - - CF$UID - 59 - - - CF$UID - 60 - - - CF$UID - 61 - - - CF$UID - 62 - - - CF$UID - 63 - - - CF$UID - 64 - - - CF$UID - 65 - - - CF$UID - 66 - - - CF$UID - 67 - - - NS.objects - - - CF$UID - 39 - - - CF$UID - 1391 - - - CF$UID - 1392 - - - CF$UID - 1393 - - - CF$UID - 1394 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 1395 - - - CF$UID - 39 - - - CF$UID - 1396 - - - - {{0, 0}, {0, 0}} - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 76 - - - CF$UID - 77 - - - CF$UID - 78 - - - CF$UID - 79 - - - CF$UID - 80 - - - CF$UID - 81 - - - CF$UID - 82 - - - NS.objects - - - CF$UID - 1398 - - - CF$UID - 39 - - - CF$UID - 84 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 1399 - - - CF$UID - 84 - - - - {{0, 0}, {259, 832}} - - $class - - CF$UID - 87 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1401 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1402 - - - CF$UID - 1404 - - - CF$UID - 1406 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 34 - - - CF$UID - 1403 - - - - 594 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 37 - - - CF$UID - 1405 - - - - 746 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 95 - - - CF$UID - 1407 - - - - 260 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 98 - - - CF$UID - 99 - - - CF$UID - 100 - - - CF$UID - 101 - - - CF$UID - 102 - - - CF$UID - 103 - - - CF$UID - 104 - - - CF$UID - 105 - - - NS.objects - - - CF$UID - 1409 - - - CF$UID - 1413 - - - CF$UID - 1420 - - - CF$UID - 151 - - - CF$UID - 38 - - - CF$UID - 1435 - - - CF$UID - 1441 - - - CF$UID - 39 - - - - - $class - - CF$UID - 111 - - geniusEditorContextNode - - CF$UID - 0 - - primaryEditorContextNode - - CF$UID - 1410 - - rootLayoutTreeNode - - CF$UID - 1411 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 0 - - contentType - 1 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 1411 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 1412 - - contentType - 0 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 0 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1410 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 113 - - - NS.objects - - - CF$UID - 1414 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 115 - - - NS.objects - - - CF$UID - 1415 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 117 - - - CF$UID - 118 - - - CF$UID - 119 - - - NS.objects - - - CF$UID - 1416 - - - CF$UID - 38 - - - CF$UID - 1418 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1417 - - - - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1419 - - - - {{0, 0}, {600, 600}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 125 - - - CF$UID - 126 - - - CF$UID - 127 - - - CF$UID - 128 - - - CF$UID - 129 - - - CF$UID - 130 - - - NS.objects - - - CF$UID - 131 - - - CF$UID - 1421 - - - CF$UID - 1422 - - - CF$UID - 131 - - - CF$UID - 1423 - - - CF$UID - 1429 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 133 - - - NS.objects - - - CF$UID - 38 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 135 - - - NS.objects - - - CF$UID - 136 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1424 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1425 - - - CF$UID - 1427 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1426 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1428 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1430 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1431 - - - CF$UID - 1433 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1432 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1434 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1436 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1437 - - - CF$UID - 1439 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 155 - - - CF$UID - 1438 - - - - 203 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 158 - - - CF$UID - 1440 - - - - 115 - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - {{41, 453}, {600, 624}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 1444 - - - CF$UID - 25 - - - CF$UID - 26 - - - CF$UID - 27 - - - CF$UID - 28 - - - CF$UID - 29 - - - NS.objects - - - CF$UID - 1445 - - - CF$UID - 1505 - - - CF$UID - 39 - - - CF$UID - 1444 - - - CF$UID - 1506 - - - CF$UID - 14 - - - - IDEWorkspaceTabController_5072C56A-1125-4451-9AFD-9E07B25EEF0B - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 31 - - - CF$UID - 32 - - - CF$UID - 33 - - - CF$UID - 34 - - - CF$UID - 35 - - - CF$UID - 36 - - - CF$UID - 37 - - - NS.objects - - - CF$UID - 38 - - - CF$UID - 39 - - - CF$UID - 1446 - - - CF$UID - 1452 - - - CF$UID - 1463 - - - CF$UID - 39 - - - CF$UID - 1471 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1447 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1448 - - - CF$UID - 1450 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1449 - - - - 389 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1451 - - - - 211 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 54 - - - CF$UID - 55 - - - CF$UID - 56 - - - NS.objects - - - CF$UID - 1453 - - - CF$UID - 54 - - - CF$UID - 1460 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 58 - - - CF$UID - 59 - - - CF$UID - 60 - - - CF$UID - 61 - - - CF$UID - 62 - - - CF$UID - 63 - - - CF$UID - 64 - - - CF$UID - 65 - - - CF$UID - 66 - - - CF$UID - 67 - - - NS.objects - - - CF$UID - 39 - - - CF$UID - 1454 - - - CF$UID - 1455 - - - CF$UID - 1456 - - - CF$UID - 1457 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 1458 - - - CF$UID - 39 - - - CF$UID - 1459 - - - - {{0, 0}, {0, 0}} - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 76 - - - CF$UID - 77 - - - CF$UID - 78 - - - CF$UID - 79 - - - CF$UID - 80 - - - CF$UID - 81 - - - CF$UID - 82 - - - NS.objects - - - CF$UID - 1461 - - - CF$UID - 39 - - - CF$UID - 84 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 1462 - - - CF$UID - 84 - - - - {{0, 0}, {259, 832}} - - $class - - CF$UID - 87 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1464 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1465 - - - CF$UID - 1467 - - - CF$UID - 1469 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 34 - - - CF$UID - 1466 - - - - 594 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 37 - - - CF$UID - 1468 - - - - 746 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 95 - - - CF$UID - 1470 - - - - 260 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 98 - - - CF$UID - 99 - - - CF$UID - 100 - - - CF$UID - 101 - - - CF$UID - 102 - - - CF$UID - 103 - - - CF$UID - 104 - - - CF$UID - 105 - - - NS.objects - - - CF$UID - 1472 - - - CF$UID - 1476 - - - CF$UID - 1483 - - - CF$UID - 151 - - - CF$UID - 38 - - - CF$UID - 1498 - - - CF$UID - 1504 - - - CF$UID - 39 - - - - - $class - - CF$UID - 111 - - geniusEditorContextNode - - CF$UID - 0 - - primaryEditorContextNode - - CF$UID - 1473 - - rootLayoutTreeNode - - CF$UID - 1474 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 0 - - contentType - 1 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 1474 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 1475 - - contentType - 0 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 0 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1473 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 113 - - - NS.objects - - - CF$UID - 1477 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 115 - - - NS.objects - - - CF$UID - 1478 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 117 - - - CF$UID - 118 - - - CF$UID - 119 - - - NS.objects - - - CF$UID - 1479 - - - CF$UID - 38 - - - CF$UID - 1481 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1480 - - - - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1482 - - - - {{0, 0}, {600, 600}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 125 - - - CF$UID - 126 - - - CF$UID - 127 - - - CF$UID - 128 - - - CF$UID - 129 - - - CF$UID - 130 - - - NS.objects - - - CF$UID - 131 - - - CF$UID - 1484 - - - CF$UID - 1485 - - - CF$UID - 131 - - - CF$UID - 1486 - - - CF$UID - 1492 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 133 - - - NS.objects - - - CF$UID - 38 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 135 - - - NS.objects - - - CF$UID - 136 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1487 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1488 - - - CF$UID - 1490 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1489 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1491 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1493 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1494 - - - CF$UID - 1496 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1495 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1497 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1499 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1500 - - - CF$UID - 1502 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 155 - - - CF$UID - 1501 - - - - 203 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 158 - - - CF$UID - 1503 - - - - 115 - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1444 - - - - {{62, 430}, {600, 624}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 29 - - - CF$UID - 25 - - - CF$UID - 26 - - - CF$UID - 1508 - - - CF$UID - 27 - - - CF$UID - 28 - - - NS.objects - - - CF$UID - 15 - - - CF$UID - 1509 - - - CF$UID - 39 - - - CF$UID - 1510 - - - CF$UID - 1508 - - - CF$UID - 1597 - - - - IDEWorkspaceTabController_7B564551-73DB-464C-93B2-816F3512126E - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1508 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 167 - - - CF$UID - 32 - - - CF$UID - 31 - - - CF$UID - 33 - - - CF$UID - 34 - - - CF$UID - 35 - - - CF$UID - 36 - - - CF$UID - 37 - - - NS.objects - - - CF$UID - 1511 - - - CF$UID - 39 - - - CF$UID - 38 - - - CF$UID - 1512 - - - CF$UID - 1518 - - - CF$UID - 1529 - - - CF$UID - 39 - - - CF$UID - 1537 - - - - MemorySync.h - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1513 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1514 - - - CF$UID - 1516 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1515 - - - - 389 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1517 - - - - 211 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 54 - - - CF$UID - 55 - - - CF$UID - 56 - - - NS.objects - - - CF$UID - 1519 - - - CF$UID - 54 - - - CF$UID - 1526 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 58 - - - CF$UID - 59 - - - CF$UID - 60 - - - CF$UID - 61 - - - CF$UID - 62 - - - CF$UID - 63 - - - CF$UID - 64 - - - CF$UID - 65 - - - CF$UID - 66 - - - CF$UID - 67 - - - NS.objects - - - CF$UID - 39 - - - CF$UID - 1520 - - - CF$UID - 1521 - - - CF$UID - 1522 - - - CF$UID - 1523 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 1524 - - - CF$UID - 39 - - - CF$UID - 1525 - - - - {{0, 0}, {0, 0}} - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 76 - - - CF$UID - 77 - - - CF$UID - 78 - - - CF$UID - 79 - - - CF$UID - 80 - - - CF$UID - 81 - - - CF$UID - 82 - - - NS.objects - - - CF$UID - 1527 - - - CF$UID - 39 - - - CF$UID - 84 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 1528 - - - CF$UID - 84 - - - - {{0, 0}, {259, 832}} - - $class - - CF$UID - 87 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1530 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1531 - - - CF$UID - 1533 - - - CF$UID - 1535 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 34 - - - CF$UID - 1532 - - - - 594 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 37 - - - CF$UID - 1534 - - - - 746 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 95 - - - CF$UID - 1536 - - - - 260 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 98 - - - CF$UID - 99 - - - CF$UID - 100 - - - CF$UID - 101 - - - CF$UID - 102 - - - CF$UID - 103 - - - CF$UID - 104 - - - CF$UID - 105 - - - NS.objects - - - CF$UID - 1538 - - - CF$UID - 1554 - - - CF$UID - 1575 - - - CF$UID - 151 - - - CF$UID - 38 - - - CF$UID - 1590 - - - CF$UID - 1596 - - - CF$UID - 39 - - - - - $class - - CF$UID - 111 - - geniusEditorContextNode - - CF$UID - 0 - - primaryEditorContextNode - - CF$UID - 1539 - - rootLayoutTreeNode - - CF$UID - 1552 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 0 - - contentType - 1 - documentArchivableRepresentation - - CF$UID - 1540 - - orientation - 0 - parent - - CF$UID - 1552 - - - - $class - - CF$UID - 215 - - DocumentLocation - - CF$UID - 1551 - - DomainIdentifier - - CF$UID - 198 - - IdentifierPath - - CF$UID - 1541 - - IndexOfDocumentIdentifier - - CF$UID - 38 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1542 - - - CF$UID - 1544 - - - CF$UID - 1546 - - - CF$UID - 1548 - - - CF$UID - 1549 - - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1543 - - - MemorySync.h - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1545 - - - Synchronization - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1547 - - - Foundation - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 208 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1550 - - - Littlest - - $class - - CF$UID - 214 - - documentURL - - CF$UID - 715 - - timestamp - - CF$UID - 0 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 1553 - - contentType - 0 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 0 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1539 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 113 - - - NS.objects - - - CF$UID - 1555 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 115 - - - NS.objects - - - CF$UID - 1556 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 117 - - - CF$UID - 118 - - - CF$UID - 119 - - - NS.objects - - - CF$UID - 1557 - - - CF$UID - 38 - - - CF$UID - 1573 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1558 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 223 - - - CF$UID - 224 - - - CF$UID - 225 - - - CF$UID - 226 - - - CF$UID - 227 - - - CF$UID - 228 - - - CF$UID - 229 - - - NS.objects - - - CF$UID - 1176 - - - CF$UID - 1559 - - - CF$UID - 1567 - - - CF$UID - 1543 - - - CF$UID - 1543 - - - CF$UID - 247 - - - CF$UID - 1571 - - - - - $class - - CF$UID - 215 - - DocumentLocation - - CF$UID - 1551 - - DomainIdentifier - - CF$UID - 198 - - IdentifierPath - - CF$UID - 1560 - - IndexOfDocumentIdentifier - - CF$UID - 38 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1561 - - - CF$UID - 1562 - - - CF$UID - 1563 - - - CF$UID - 1564 - - - CF$UID - 1565 - - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1543 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1545 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1547 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 208 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1566 - - - Littlest - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 1568 - - - CF$UID - 1569 - - - CF$UID - 39 - - - CF$UID - 1570 - - - - 324798715.45595002 - {0, 494} - {429, 0} - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 1572 - - - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/Foundation/Synchronization/MemorySync.h - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1574 - - - - {{0, 0}, {600, 600}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 125 - - - CF$UID - 126 - - - CF$UID - 127 - - - CF$UID - 128 - - - CF$UID - 129 - - - CF$UID - 130 - - - NS.objects - - - CF$UID - 131 - - - CF$UID - 1576 - - - CF$UID - 1577 - - - CF$UID - 131 - - - CF$UID - 1578 - - - CF$UID - 1584 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 133 - - - NS.objects - - - CF$UID - 38 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 135 - - - NS.objects - - - CF$UID - 136 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1579 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1580 - - - CF$UID - 1582 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1581 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1583 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1585 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1586 - - - CF$UID - 1588 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1587 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1589 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1591 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1592 - - - CF$UID - 1594 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 155 - - - CF$UID - 1593 - - - - 203 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 158 - - - CF$UID - 1595 - - - - 115 - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - {{83, 407}, {600, 624}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 1599 - - - CF$UID - 25 - - - CF$UID - 26 - - - CF$UID - 27 - - - CF$UID - 28 - - - CF$UID - 29 - - - NS.objects - - - CF$UID - 1600 - - - CF$UID - 1683 - - - CF$UID - 39 - - - CF$UID - 1599 - - - CF$UID - 1684 - - - CF$UID - 16 - - - - IDEWorkspaceTabController_EF4A448B-D0F1-435F-956B-082FD91AA48C - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 167 - - - CF$UID - 32 - - - CF$UID - 31 - - - CF$UID - 33 - - - CF$UID - 34 - - - CF$UID - 35 - - - CF$UID - 36 - - - CF$UID - 37 - - - NS.objects - - - CF$UID - 1601 - - - CF$UID - 39 - - - CF$UID - 38 - - - CF$UID - 1602 - - - CF$UID - 1608 - - - CF$UID - 1619 - - - CF$UID - 39 - - - CF$UID - 1627 - - - - GLES-Render.mm - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1603 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1604 - - - CF$UID - 1606 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1605 - - - - 376 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1607 - - - - 224 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 54 - - - CF$UID - 55 - - - CF$UID - 56 - - - NS.objects - - - CF$UID - 1609 - - - CF$UID - 54 - - - CF$UID - 1616 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 58 - - - CF$UID - 59 - - - CF$UID - 60 - - - CF$UID - 61 - - - CF$UID - 62 - - - CF$UID - 63 - - - CF$UID - 64 - - - CF$UID - 65 - - - CF$UID - 66 - - - CF$UID - 67 - - - NS.objects - - - CF$UID - 39 - - - CF$UID - 1610 - - - CF$UID - 1611 - - - CF$UID - 1612 - - - CF$UID - 1613 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 1614 - - - CF$UID - 39 - - - CF$UID - 1615 - - - - {{0, 0}, {0, 0}} - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 76 - - - CF$UID - 77 - - - CF$UID - 78 - - - CF$UID - 79 - - - CF$UID - 80 - - - CF$UID - 81 - - - CF$UID - 82 - - - NS.objects - - - CF$UID - 1617 - - - CF$UID - 39 - - - CF$UID - 84 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 1618 - - - CF$UID - 84 - - - - {{0, 0}, {259, 832}} - - $class - - CF$UID - 87 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1620 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1621 - - - CF$UID - 1623 - - - CF$UID - 1625 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 34 - - - CF$UID - 1622 - - - - 260 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 37 - - - CF$UID - 1624 - - - - 1140 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 95 - - - CF$UID - 1626 - - - - 260 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 98 - - - CF$UID - 99 - - - CF$UID - 100 - - - CF$UID - 101 - - - CF$UID - 102 - - - CF$UID - 103 - - - CF$UID - 104 - - - CF$UID - 105 - - - NS.objects - - - CF$UID - 1628 - - - CF$UID - 1640 - - - CF$UID - 1661 - - - CF$UID - 151 - - - CF$UID - 38 - - - CF$UID - 1676 - - - CF$UID - 1682 - - - CF$UID - 39 - - - - - $class - - CF$UID - 111 - - geniusEditorContextNode - - CF$UID - 0 - - primaryEditorContextNode - - CF$UID - 1629 - - rootLayoutTreeNode - - CF$UID - 1638 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 0 - - contentType - 1 - documentArchivableRepresentation - - CF$UID - 1630 - - orientation - 0 - parent - - CF$UID - 1638 - - - - $class - - CF$UID - 215 - - DocumentLocation - - CF$UID - 1637 - - DomainIdentifier - - CF$UID - 198 - - IdentifierPath - - CF$UID - 1631 - - IndexOfDocumentIdentifier - - CF$UID - 38 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1632 - - - CF$UID - 1634 - - - CF$UID - 1635 - - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1633 - - - GLES-Render.mm - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 208 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1636 - - - Littlest - - $class - - CF$UID - 214 - - documentURL - - CF$UID - 733 - - timestamp - - CF$UID - 0 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 1639 - - contentType - 0 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 0 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1629 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 113 - - - NS.objects - - - CF$UID - 1641 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 115 - - - NS.objects - - - CF$UID - 1642 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 117 - - - CF$UID - 118 - - - CF$UID - 119 - - - NS.objects - - - CF$UID - 1643 - - - CF$UID - 38 - - - CF$UID - 1659 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1644 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 223 - - - CF$UID - 224 - - - CF$UID - 225 - - - CF$UID - 226 - - - CF$UID - 227 - - - CF$UID - 228 - - - CF$UID - 229 - - - NS.objects - - - CF$UID - 1645 - - - CF$UID - 1646 - - - CF$UID - 1652 - - - CF$UID - 1656 - - - CF$UID - 1633 - - - CF$UID - 247 - - - CF$UID - 1657 - - - - public.objective-c-plus-plus-source - - $class - - CF$UID - 215 - - DocumentLocation - - CF$UID - 1637 - - DomainIdentifier - - CF$UID - 198 - - IdentifierPath - - CF$UID - 1647 - - IndexOfDocumentIdentifier - - CF$UID - 38 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1648 - - - CF$UID - 1649 - - - CF$UID - 1650 - - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1633 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 208 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1651 - - - Littlest - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 1653 - - - CF$UID - 1654 - - - CF$UID - 39 - - - CF$UID - 1655 - - - - 324796045.71103501 - {1070, 917} - {1399, 0} - GLESDebugDraw::DrawPolygon(const b2Vec2* old_vertices, int32 vertexCount, const b2Color& color) - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 1658 - - - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/GLES-Render.mm - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1660 - - - - {{0, 0}, {600, 600}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 125 - - - CF$UID - 126 - - - CF$UID - 127 - - - CF$UID - 128 - - - CF$UID - 129 - - - CF$UID - 130 - - - NS.objects - - - CF$UID - 131 - - - CF$UID - 1662 - - - CF$UID - 1663 - - - CF$UID - 131 - - - CF$UID - 1664 - - - CF$UID - 1670 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 133 - - - NS.objects - - - CF$UID - 38 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 135 - - - NS.objects - - - CF$UID - 136 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1665 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1666 - - - CF$UID - 1668 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1667 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1669 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1671 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1672 - - - CF$UID - 1674 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1673 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1675 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1677 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1678 - - - CF$UID - 1680 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 155 - - - CF$UID - 1679 - - - - 203 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 158 - - - CF$UID - 1681 - - - - 115 - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1599 - - - - {{123, 423}, {600, 624}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 29 - - - CF$UID - 25 - - - CF$UID - 26 - - - CF$UID - 27 - - - CF$UID - 28 - - - CF$UID - 1686 - - - NS.objects - - - CF$UID - 17 - - - CF$UID - 1687 - - - CF$UID - 39 - - - CF$UID - 1686 - - - CF$UID - 1688 - - - CF$UID - 1689 - - - - IDEWorkspaceTabController_6B8F402D-8327-44A0-BAE4-095F07957571 - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1686 - - - - {{136, 395}, {600, 624}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 31 - - - CF$UID - 32 - - - CF$UID - 33 - - - CF$UID - 34 - - - CF$UID - 35 - - - CF$UID - 36 - - - CF$UID - 37 - - - NS.objects - - - CF$UID - 38 - - - CF$UID - 39 - - - CF$UID - 1690 - - - CF$UID - 1696 - - - CF$UID - 1707 - - - CF$UID - 39 - - - CF$UID - 1715 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1691 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1692 - - - CF$UID - 1694 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1693 - - - - 389 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1695 - - - - 211 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 54 - - - CF$UID - 55 - - - CF$UID - 56 - - - NS.objects - - - CF$UID - 1697 - - - CF$UID - 54 - - - CF$UID - 1704 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 58 - - - CF$UID - 59 - - - CF$UID - 60 - - - CF$UID - 61 - - - CF$UID - 62 - - - CF$UID - 63 - - - CF$UID - 64 - - - CF$UID - 65 - - - CF$UID - 66 - - - CF$UID - 67 - - - NS.objects - - - CF$UID - 39 - - - CF$UID - 1698 - - - CF$UID - 1699 - - - CF$UID - 1700 - - - CF$UID - 1701 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 1702 - - - CF$UID - 39 - - - CF$UID - 1703 - - - - {{0, 0}, {0, 0}} - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 76 - - - CF$UID - 77 - - - CF$UID - 78 - - - CF$UID - 79 - - - CF$UID - 80 - - - CF$UID - 81 - - - CF$UID - 82 - - - NS.objects - - - CF$UID - 1705 - - - CF$UID - 39 - - - CF$UID - 84 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 1706 - - - CF$UID - 84 - - - - {{0, 0}, {259, 832}} - - $class - - CF$UID - 87 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1708 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1709 - - - CF$UID - 1711 - - - CF$UID - 1713 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 34 - - - CF$UID - 1710 - - - - 260 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 37 - - - CF$UID - 1712 - - - - 1080 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 95 - - - CF$UID - 1714 - - - - 260 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 98 - - - CF$UID - 99 - - - CF$UID - 100 - - - CF$UID - 101 - - - CF$UID - 102 - - - CF$UID - 103 - - - CF$UID - 104 - - - CF$UID - 105 - - - NS.objects - - - CF$UID - 1716 - - - CF$UID - 1720 - - - CF$UID - 1727 - - - CF$UID - 151 - - - CF$UID - 38 - - - CF$UID - 1742 - - - CF$UID - 1748 - - - CF$UID - 39 - - - - - $class - - CF$UID - 111 - - geniusEditorContextNode - - CF$UID - 0 - - primaryEditorContextNode - - CF$UID - 1717 - - rootLayoutTreeNode - - CF$UID - 1718 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 0 - - contentType - 1 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 1718 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 1719 - - contentType - 0 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 0 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1717 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 113 - - - NS.objects - - - CF$UID - 1721 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 115 - - - NS.objects - - - CF$UID - 1722 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 117 - - - CF$UID - 118 - - - CF$UID - 119 - - - NS.objects - - - CF$UID - 1723 - - - CF$UID - 38 - - - CF$UID - 1725 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1724 - - - - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1726 - - - - {{0, 0}, {600, 600}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 125 - - - CF$UID - 126 - - - CF$UID - 127 - - - CF$UID - 128 - - - CF$UID - 129 - - - CF$UID - 130 - - - NS.objects - - - CF$UID - 131 - - - CF$UID - 1728 - - - CF$UID - 1729 - - - CF$UID - 131 - - - CF$UID - 1730 - - - CF$UID - 1736 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 133 - - - NS.objects - - - CF$UID - 38 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 135 - - - NS.objects - - - CF$UID - 136 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1731 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1732 - - - CF$UID - 1734 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1733 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1735 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1737 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1738 - - - CF$UID - 1740 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1739 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1741 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1743 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1744 - - - CF$UID - 1746 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 155 - - - CF$UID - 1745 - - - - 203 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 158 - - - CF$UID - 1747 - - - - 115 - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 29 - - - CF$UID - 25 - - - CF$UID - 1750 - - - CF$UID - 26 - - - CF$UID - 27 - - - CF$UID - 28 - - - NS.objects - - - CF$UID - 18 - - - CF$UID - 1751 - - - CF$UID - 1752 - - - CF$UID - 39 - - - CF$UID - 1750 - - - CF$UID - 1835 - - - - IDEWorkspaceTabController_740BE6ED-287E-4100-B105-F5039743207B - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1750 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 167 - - - CF$UID - 32 - - - CF$UID - 31 - - - CF$UID - 33 - - - CF$UID - 34 - - - CF$UID - 35 - - - CF$UID - 36 - - - CF$UID - 37 - - - NS.objects - - - CF$UID - 1292 - - - CF$UID - 39 - - - CF$UID - 38 - - - CF$UID - 1753 - - - CF$UID - 1759 - - - CF$UID - 1770 - - - CF$UID - 39 - - - CF$UID - 1778 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1754 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1755 - - - CF$UID - 1757 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1756 - - - - 376 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1758 - - - - 224 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 54 - - - CF$UID - 55 - - - CF$UID - 56 - - - NS.objects - - - CF$UID - 1760 - - - CF$UID - 54 - - - CF$UID - 1767 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 58 - - - CF$UID - 59 - - - CF$UID - 60 - - - CF$UID - 61 - - - CF$UID - 62 - - - CF$UID - 63 - - - CF$UID - 64 - - - CF$UID - 65 - - - CF$UID - 66 - - - CF$UID - 67 - - - NS.objects - - - CF$UID - 39 - - - CF$UID - 1761 - - - CF$UID - 1762 - - - CF$UID - 1763 - - - CF$UID - 1764 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 1765 - - - CF$UID - 39 - - - CF$UID - 1766 - - - - {{0, 0}, {0, 0}} - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 76 - - - CF$UID - 77 - - - CF$UID - 78 - - - CF$UID - 79 - - - CF$UID - 80 - - - CF$UID - 81 - - - CF$UID - 82 - - - NS.objects - - - CF$UID - 1768 - - - CF$UID - 39 - - - CF$UID - 84 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 1769 - - - CF$UID - 84 - - - - {{0, 0}, {259, 832}} - - $class - - CF$UID - 87 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1771 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1772 - - - CF$UID - 1774 - - - CF$UID - 1776 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 34 - - - CF$UID - 1773 - - - - 260 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 37 - - - CF$UID - 1775 - - - - 880 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 95 - - - CF$UID - 1777 - - - - 260 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 98 - - - CF$UID - 99 - - - CF$UID - 100 - - - CF$UID - 101 - - - CF$UID - 102 - - - CF$UID - 103 - - - CF$UID - 104 - - - CF$UID - 105 - - - NS.objects - - - CF$UID - 1779 - - - CF$UID - 1792 - - - CF$UID - 1813 - - - CF$UID - 151 - - - CF$UID - 38 - - - CF$UID - 1828 - - - CF$UID - 1834 - - - CF$UID - 39 - - - - - $class - - CF$UID - 111 - - geniusEditorContextNode - - CF$UID - 0 - - primaryEditorContextNode - - CF$UID - 1780 - - rootLayoutTreeNode - - CF$UID - 1790 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 0 - - contentType - 1 - documentArchivableRepresentation - - CF$UID - 1781 - - orientation - 0 - parent - - CF$UID - 1790 - - - - $class - - CF$UID - 215 - - DocumentLocation - - CF$UID - 1789 - - DomainIdentifier - - CF$UID - 198 - - IdentifierPath - - CF$UID - 1782 - - IndexOfDocumentIdentifier - - CF$UID - 38 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1783 - - - CF$UID - 1784 - - - CF$UID - 1785 - - - CF$UID - 1786 - - - CF$UID - 1787 - - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1324 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1326 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 206 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 208 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1788 - - - Littlest - - $class - - CF$UID - 214 - - documentURL - - CF$UID - 840 - - timestamp - - CF$UID - 0 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 1791 - - contentType - 0 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 0 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1780 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 113 - - - NS.objects - - - CF$UID - 1793 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 115 - - - NS.objects - - - CF$UID - 1794 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 117 - - - CF$UID - 118 - - - CF$UID - 119 - - - NS.objects - - - CF$UID - 1795 - - - CF$UID - 38 - - - CF$UID - 1811 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1796 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 223 - - - CF$UID - 224 - - - CF$UID - 225 - - - CF$UID - 226 - - - CF$UID - 227 - - - CF$UID - 228 - - - CF$UID - 229 - - - NS.objects - - - CF$UID - 1176 - - - CF$UID - 1797 - - - CF$UID - 1805 - - - CF$UID - 1324 - - - CF$UID - 1324 - - - CF$UID - 247 - - - CF$UID - 1809 - - - - - $class - - CF$UID - 215 - - DocumentLocation - - CF$UID - 1789 - - DomainIdentifier - - CF$UID - 198 - - IdentifierPath - - CF$UID - 1798 - - IndexOfDocumentIdentifier - - CF$UID - 38 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1799 - - - CF$UID - 1800 - - - CF$UID - 1801 - - - CF$UID - 1802 - - - CF$UID - 1803 - - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1324 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1326 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 206 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 208 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1804 - - - Littlest - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 1806 - - - CF$UID - 1807 - - - CF$UID - 39 - - - CF$UID - 1808 - - - - 324797464.91532201 - {5168, 1850} - {7018, 0} - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 1810 - - - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/cocos2d/Platforms/iOS/EAGLView.h - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1812 - - - - {{0, 0}, {600, 600}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 125 - - - CF$UID - 126 - - - CF$UID - 127 - - - CF$UID - 128 - - - CF$UID - 129 - - - CF$UID - 130 - - - NS.objects - - - CF$UID - 131 - - - CF$UID - 1814 - - - CF$UID - 1815 - - - CF$UID - 131 - - - CF$UID - 1816 - - - CF$UID - 1822 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 133 - - - NS.objects - - - CF$UID - 38 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 135 - - - NS.objects - - - CF$UID - 136 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1817 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1818 - - - CF$UID - 1820 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1819 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1821 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1823 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1824 - - - CF$UID - 1826 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1825 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1827 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1829 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1830 - - - CF$UID - 1832 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 155 - - - CF$UID - 1831 - - - - 203 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 158 - - - CF$UID - 1833 - - - - 115 - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - {{10, 331}, {600, 624}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 29 - - - CF$UID - 25 - - - CF$UID - 26 - - - CF$UID - 27 - - - CF$UID - 28 - - - CF$UID - 1837 - - - NS.objects - - - CF$UID - 19 - - - CF$UID - 1838 - - - CF$UID - 39 - - - CF$UID - 1837 - - - CF$UID - 1839 - - - CF$UID - 1840 - - - - IDEWorkspaceTabController_02BAC16A-E1D7-4E75-9779-782482E679CE - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1837 - - - - {{199, 499}, {600, 624}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 167 - - - CF$UID - 32 - - - CF$UID - 31 - - - CF$UID - 33 - - - CF$UID - 34 - - - CF$UID - 35 - - - CF$UID - 36 - - - CF$UID - 37 - - - NS.objects - - - CF$UID - 1841 - - - CF$UID - 39 - - - CF$UID - 38 - - - CF$UID - 1842 - - - CF$UID - 1848 - - - CF$UID - 1859 - - - CF$UID - 39 - - - CF$UID - 1867 - - - - ccCArray.h - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1843 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1844 - - - CF$UID - 1846 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1845 - - - - 389 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1847 - - - - 211 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 54 - - - CF$UID - 55 - - - CF$UID - 56 - - - NS.objects - - - CF$UID - 1849 - - - CF$UID - 54 - - - CF$UID - 1856 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 58 - - - CF$UID - 59 - - - CF$UID - 60 - - - CF$UID - 61 - - - CF$UID - 62 - - - CF$UID - 63 - - - CF$UID - 64 - - - CF$UID - 65 - - - CF$UID - 66 - - - CF$UID - 67 - - - NS.objects - - - CF$UID - 39 - - - CF$UID - 1850 - - - CF$UID - 1851 - - - CF$UID - 1852 - - - CF$UID - 1853 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 1854 - - - CF$UID - 39 - - - CF$UID - 1855 - - - - {{0, 0}, {0, 0}} - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 76 - - - CF$UID - 77 - - - CF$UID - 78 - - - CF$UID - 79 - - - CF$UID - 80 - - - CF$UID - 81 - - - CF$UID - 82 - - - NS.objects - - - CF$UID - 1857 - - - CF$UID - 39 - - - CF$UID - 84 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 1858 - - - CF$UID - 84 - - - - {{0, 0}, {259, 832}} - - $class - - CF$UID - 87 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1860 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1861 - - - CF$UID - 1863 - - - CF$UID - 1865 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 34 - - - CF$UID - 1862 - - - - 594 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 37 - - - CF$UID - 1864 - - - - 746 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 95 - - - CF$UID - 1866 - - - - 260 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 98 - - - CF$UID - 99 - - - CF$UID - 100 - - - CF$UID - 101 - - - CF$UID - 102 - - - CF$UID - 103 - - - CF$UID - 104 - - - CF$UID - 105 - - - NS.objects - - - CF$UID - 1868 - - - CF$UID - 1882 - - - CF$UID - 1904 - - - CF$UID - 151 - - - CF$UID - 38 - - - CF$UID - 1919 - - - CF$UID - 1925 - - - CF$UID - 39 - - - - - $class - - CF$UID - 111 - - geniusEditorContextNode - - CF$UID - 0 - - primaryEditorContextNode - - CF$UID - 1869 - - rootLayoutTreeNode - - CF$UID - 1880 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 0 - - contentType - 1 - documentArchivableRepresentation - - CF$UID - 1870 - - orientation - 0 - parent - - CF$UID - 1880 - - - - $class - - CF$UID - 215 - - DocumentLocation - - CF$UID - 1879 - - DomainIdentifier - - CF$UID - 198 - - IdentifierPath - - CF$UID - 1871 - - IndexOfDocumentIdentifier - - CF$UID - 38 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1872 - - - CF$UID - 1874 - - - CF$UID - 1875 - - - CF$UID - 1876 - - - CF$UID - 1877 - - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1873 - - - ccCArray.h - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1326 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 206 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 208 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1878 - - - Littlest - - $class - - CF$UID - 214 - - documentURL - - CF$UID - 838 - - timestamp - - CF$UID - 0 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 1881 - - contentType - 0 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 0 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1869 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 113 - - - NS.objects - - - CF$UID - 1883 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 115 - - - NS.objects - - - CF$UID - 1884 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 117 - - - CF$UID - 118 - - - CF$UID - 119 - - - NS.objects - - - CF$UID - 1885 - - - CF$UID - 38 - - - CF$UID - 1902 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1886 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 223 - - - CF$UID - 224 - - - CF$UID - 225 - - - CF$UID - 226 - - - CF$UID - 227 - - - CF$UID - 228 - - - CF$UID - 229 - - - NS.objects - - - CF$UID - 1176 - - - CF$UID - 1887 - - - CF$UID - 1895 - - - CF$UID - 1899 - - - CF$UID - 1873 - - - CF$UID - 247 - - - CF$UID - 1900 - - - - - $class - - CF$UID - 215 - - DocumentLocation - - CF$UID - 1879 - - DomainIdentifier - - CF$UID - 198 - - IdentifierPath - - CF$UID - 1888 - - IndexOfDocumentIdentifier - - CF$UID - 38 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1889 - - - CF$UID - 1890 - - - CF$UID - 1891 - - - CF$UID - 1892 - - - CF$UID - 1893 - - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1873 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1326 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 206 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 208 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1894 - - - Littlest - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 1896 - - - CF$UID - 1897 - - - CF$UID - 39 - - - CF$UID - 1898 - - - - 324797909.57346803 - {1119, 1306} - {9404, 0} - ccCArrayInsertValueAtIndex( ccCArray *arr, void *value, NSUInteger index) - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 1901 - - - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/libs/cocos2d/Support/ccCArray.h - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1903 - - - - {{0, 0}, {600, 600}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 125 - - - CF$UID - 126 - - - CF$UID - 127 - - - CF$UID - 128 - - - CF$UID - 129 - - - CF$UID - 130 - - - NS.objects - - - CF$UID - 131 - - - CF$UID - 1905 - - - CF$UID - 1906 - - - CF$UID - 131 - - - CF$UID - 1907 - - - CF$UID - 1913 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 133 - - - NS.objects - - - CF$UID - 38 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 135 - - - NS.objects - - - CF$UID - 136 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1908 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1909 - - - CF$UID - 1911 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1910 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1912 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1914 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1915 - - - CF$UID - 1917 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1916 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1918 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1920 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1921 - - - CF$UID - 1923 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 155 - - - CF$UID - 1922 - - - - 203 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 158 - - - CF$UID - 1924 - - - - 115 - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 29 - - - CF$UID - 25 - - - CF$UID - 26 - - - CF$UID - 27 - - - CF$UID - 28 - - - CF$UID - 1927 - - - NS.objects - - - CF$UID - 20 - - - CF$UID - 1928 - - - CF$UID - 39 - - - CF$UID - 1927 - - - CF$UID - 1929 - - - CF$UID - 1930 - - - - IDEWorkspaceTabController_921D7431-B97B-455B-B25D-02A34F4AAD82 - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1927 - - - - {{20, 476}, {600, 624}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 31 - - - CF$UID - 32 - - - CF$UID - 33 - - - CF$UID - 34 - - - CF$UID - 35 - - - CF$UID - 36 - - - CF$UID - 37 - - - NS.objects - - - CF$UID - 38 - - - CF$UID - 39 - - - CF$UID - 1931 - - - CF$UID - 1937 - - - CF$UID - 1948 - - - CF$UID - 39 - - - CF$UID - 1956 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1932 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1933 - - - CF$UID - 1935 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1934 - - - - 389 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1936 - - - - 211 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 54 - - - CF$UID - 55 - - - CF$UID - 56 - - - NS.objects - - - CF$UID - 1938 - - - CF$UID - 54 - - - CF$UID - 1945 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 58 - - - CF$UID - 59 - - - CF$UID - 60 - - - CF$UID - 61 - - - CF$UID - 62 - - - CF$UID - 63 - - - CF$UID - 64 - - - CF$UID - 65 - - - CF$UID - 66 - - - CF$UID - 67 - - - NS.objects - - - CF$UID - 39 - - - CF$UID - 1939 - - - CF$UID - 1940 - - - CF$UID - 1941 - - - CF$UID - 1942 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 1943 - - - CF$UID - 39 - - - CF$UID - 1944 - - - - {{0, 0}, {0, 0}} - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 76 - - - CF$UID - 77 - - - CF$UID - 78 - - - CF$UID - 79 - - - CF$UID - 80 - - - CF$UID - 81 - - - CF$UID - 82 - - - NS.objects - - - CF$UID - 1946 - - - CF$UID - 39 - - - CF$UID - 84 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 1947 - - - CF$UID - 84 - - - - {{0, 0}, {259, 832}} - - $class - - CF$UID - 87 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1949 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1950 - - - CF$UID - 1952 - - - CF$UID - 1954 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 34 - - - CF$UID - 1951 - - - - 594 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 37 - - - CF$UID - 1953 - - - - 746 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 95 - - - CF$UID - 1955 - - - - 260 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 98 - - - CF$UID - 99 - - - CF$UID - 100 - - - CF$UID - 101 - - - CF$UID - 102 - - - CF$UID - 103 - - - CF$UID - 104 - - - CF$UID - 105 - - - NS.objects - - - CF$UID - 1957 - - - CF$UID - 1961 - - - CF$UID - 1968 - - - CF$UID - 151 - - - CF$UID - 38 - - - CF$UID - 1983 - - - CF$UID - 1989 - - - CF$UID - 39 - - - - - $class - - CF$UID - 111 - - geniusEditorContextNode - - CF$UID - 0 - - primaryEditorContextNode - - CF$UID - 1958 - - rootLayoutTreeNode - - CF$UID - 1959 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 0 - - contentType - 1 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 1959 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 1960 - - contentType - 0 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 0 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1958 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 113 - - - NS.objects - - - CF$UID - 1962 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 115 - - - NS.objects - - - CF$UID - 1963 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 117 - - - CF$UID - 118 - - - CF$UID - 119 - - - NS.objects - - - CF$UID - 1964 - - - CF$UID - 38 - - - CF$UID - 1966 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1965 - - - - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1967 - - - - {{0, 0}, {600, 600}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 125 - - - CF$UID - 126 - - - CF$UID - 127 - - - CF$UID - 128 - - - CF$UID - 129 - - - CF$UID - 130 - - - NS.objects - - - CF$UID - 131 - - - CF$UID - 1969 - - - CF$UID - 1970 - - - CF$UID - 131 - - - CF$UID - 1971 - - - CF$UID - 1977 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 133 - - - NS.objects - - - CF$UID - 38 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 135 - - - NS.objects - - - CF$UID - 136 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1972 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1973 - - - CF$UID - 1975 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1974 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1976 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1978 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1979 - - - CF$UID - 1981 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 1980 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 1982 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1984 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1985 - - - CF$UID - 1987 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 155 - - - CF$UID - 1986 - - - - 203 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 158 - - - CF$UID - 1988 - - - - 115 - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 29 - - - CF$UID - 25 - - - CF$UID - 26 - - - CF$UID - 1991 - - - CF$UID - 27 - - - CF$UID - 28 - - - NS.objects - - - CF$UID - 21 - - - CF$UID - 1992 - - - CF$UID - 39 - - - CF$UID - 1993 - - - CF$UID - 1991 - - - CF$UID - 2053 - - - - IDEWorkspaceTabController_C5B23B47-5712-4FAE-8695-3FC69C7FE244 - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 1991 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 31 - - - CF$UID - 32 - - - CF$UID - 33 - - - CF$UID - 34 - - - CF$UID - 35 - - - CF$UID - 36 - - - CF$UID - 37 - - - NS.objects - - - CF$UID - 38 - - - CF$UID - 39 - - - CF$UID - 1994 - - - CF$UID - 2000 - - - CF$UID - 2011 - - - CF$UID - 39 - - - CF$UID - 2019 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 1995 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 1996 - - - CF$UID - 1998 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1997 - - - - 389 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 1999 - - - - 211 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 54 - - - CF$UID - 55 - - - CF$UID - 56 - - - NS.objects - - - CF$UID - 2001 - - - CF$UID - 54 - - - CF$UID - 2008 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 58 - - - CF$UID - 59 - - - CF$UID - 60 - - - CF$UID - 61 - - - CF$UID - 62 - - - CF$UID - 63 - - - CF$UID - 64 - - - CF$UID - 65 - - - CF$UID - 66 - - - CF$UID - 67 - - - NS.objects - - - CF$UID - 39 - - - CF$UID - 2002 - - - CF$UID - 2003 - - - CF$UID - 2004 - - - CF$UID - 2005 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 2006 - - - CF$UID - 39 - - - CF$UID - 2007 - - - - {{0, 0}, {0, 0}} - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 76 - - - CF$UID - 77 - - - CF$UID - 78 - - - CF$UID - 79 - - - CF$UID - 80 - - - CF$UID - 81 - - - CF$UID - 82 - - - NS.objects - - - CF$UID - 2009 - - - CF$UID - 39 - - - CF$UID - 84 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 2010 - - - CF$UID - 84 - - - - {{0, 0}, {259, 832}} - - $class - - CF$UID - 87 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 2012 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 2013 - - - CF$UID - 2015 - - - CF$UID - 2017 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 34 - - - CF$UID - 2014 - - - - 308 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 37 - - - CF$UID - 2016 - - - - 1032 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 95 - - - CF$UID - 2018 - - - - 260 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 98 - - - CF$UID - 99 - - - CF$UID - 100 - - - CF$UID - 101 - - - CF$UID - 102 - - - CF$UID - 103 - - - CF$UID - 104 - - - CF$UID - 105 - - - NS.objects - - - CF$UID - 2020 - - - CF$UID - 2024 - - - CF$UID - 2031 - - - CF$UID - 151 - - - CF$UID - 38 - - - CF$UID - 2046 - - - CF$UID - 2052 - - - CF$UID - 39 - - - - - $class - - CF$UID - 111 - - geniusEditorContextNode - - CF$UID - 0 - - primaryEditorContextNode - - CF$UID - 2021 - - rootLayoutTreeNode - - CF$UID - 2022 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 0 - - contentType - 1 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 2022 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 2023 - - contentType - 0 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 0 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 2021 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 113 - - - NS.objects - - - CF$UID - 2025 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 115 - - - NS.objects - - - CF$UID - 2026 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 117 - - - CF$UID - 118 - - - CF$UID - 119 - - - NS.objects - - - CF$UID - 2027 - - - CF$UID - 38 - - - CF$UID - 2029 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 2028 - - - - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 2030 - - - - {{0, 0}, {600, 600}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 125 - - - CF$UID - 126 - - - CF$UID - 127 - - - CF$UID - 128 - - - CF$UID - 129 - - - CF$UID - 130 - - - NS.objects - - - CF$UID - 131 - - - CF$UID - 2032 - - - CF$UID - 2033 - - - CF$UID - 131 - - - CF$UID - 2034 - - - CF$UID - 2040 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 133 - - - NS.objects - - - CF$UID - 38 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 135 - - - NS.objects - - - CF$UID - 136 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 2035 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 2036 - - - CF$UID - 2038 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 2037 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 2039 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 2041 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 2042 - - - CF$UID - 2044 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 2043 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 2045 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 2047 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 2048 - - - CF$UID - 2050 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 155 - - - CF$UID - 2049 - - - - 203 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 158 - - - CF$UID - 2051 - - - - 115 - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - {{157, 372}, {600, 624}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 29 - - - CF$UID - 25 - - - CF$UID - 26 - - - CF$UID - 2055 - - - CF$UID - 27 - - - CF$UID - 28 - - - NS.objects - - - CF$UID - 22 - - - CF$UID - 2056 - - - CF$UID - 39 - - - CF$UID - 2057 - - - CF$UID - 2055 - - - CF$UID - 2141 - - - - IDEWorkspaceTabController_88F108EC-272F-48B4-A120-24F3DAF34F6A - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 2055 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 167 - - - CF$UID - 32 - - - CF$UID - 31 - - - CF$UID - 33 - - - CF$UID - 34 - - - CF$UID - 35 - - - CF$UID - 36 - - - CF$UID - 37 - - - NS.objects - - - CF$UID - 2058 - - - CF$UID - 39 - - - CF$UID - 38 - - - CF$UID - 2059 - - - CF$UID - 2065 - - - CF$UID - 2076 - - - CF$UID - 39 - - - CF$UID - 2084 - - - - MemorySync.h - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 2060 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 2061 - - - CF$UID - 2063 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 2062 - - - - 389 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 46 - - - CF$UID - 2064 - - - - 211 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 54 - - - CF$UID - 55 - - - CF$UID - 56 - - - NS.objects - - - CF$UID - 2066 - - - CF$UID - 54 - - - CF$UID - 2073 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 58 - - - CF$UID - 59 - - - CF$UID - 60 - - - CF$UID - 61 - - - CF$UID - 62 - - - CF$UID - 63 - - - CF$UID - 64 - - - CF$UID - 65 - - - CF$UID - 66 - - - CF$UID - 67 - - - NS.objects - - - CF$UID - 39 - - - CF$UID - 2067 - - - CF$UID - 2068 - - - CF$UID - 2069 - - - CF$UID - 2070 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 2071 - - - CF$UID - 39 - - - CF$UID - 2072 - - - - {{0, 0}, {0, 0}} - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 51 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 70 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 76 - - - CF$UID - 77 - - - CF$UID - 78 - - - CF$UID - 79 - - - CF$UID - 80 - - - CF$UID - 81 - - - CF$UID - 82 - - - NS.objects - - - CF$UID - 2074 - - - CF$UID - 39 - - - CF$UID - 84 - - - CF$UID - 39 - - - CF$UID - 39 - - - CF$UID - 2075 - - - CF$UID - 84 - - - - {{0, 0}, {259, 832}} - - $class - - CF$UID - 87 - - NS.objects - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 2077 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 2078 - - - CF$UID - 2080 - - - CF$UID - 2082 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 34 - - - CF$UID - 2079 - - - - 594 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 37 - - - CF$UID - 2081 - - - - 746 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 95 - - - CF$UID - 2083 - - - - 260 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 98 - - - CF$UID - 99 - - - CF$UID - 100 - - - CF$UID - 101 - - - CF$UID - 102 - - - CF$UID - 103 - - - CF$UID - 104 - - - CF$UID - 105 - - - NS.objects - - - CF$UID - 2085 - - - CF$UID - 2098 - - - CF$UID - 2119 - - - CF$UID - 151 - - - CF$UID - 38 - - - CF$UID - 2134 - - - CF$UID - 2140 - - - CF$UID - 39 - - - - - $class - - CF$UID - 111 - - geniusEditorContextNode - - CF$UID - 0 - - primaryEditorContextNode - - CF$UID - 2086 - - rootLayoutTreeNode - - CF$UID - 2096 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 0 - - contentType - 1 - documentArchivableRepresentation - - CF$UID - 2087 - - orientation - 0 - parent - - CF$UID - 2096 - - - - $class - - CF$UID - 215 - - DocumentLocation - - CF$UID - 2095 - - DomainIdentifier - - CF$UID - 198 - - IdentifierPath - - CF$UID - 2088 - - IndexOfDocumentIdentifier - - CF$UID - 38 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 2089 - - - CF$UID - 2090 - - - CF$UID - 2091 - - - CF$UID - 2092 - - - CF$UID - 2093 - - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1543 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1545 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1547 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 208 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 2094 - - - Littlest - - $class - - CF$UID - 214 - - documentURL - - CF$UID - 715 - - timestamp - - CF$UID - 0 - - - - $class - - CF$UID - 110 - - children - - CF$UID - 2097 - - contentType - 0 - documentArchivableRepresentation - - CF$UID - 0 - - orientation - 0 - parent - - CF$UID - 0 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 2086 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 113 - - - NS.objects - - - CF$UID - 2099 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 115 - - - NS.objects - - - CF$UID - 2100 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 117 - - - CF$UID - 118 - - - CF$UID - 119 - - - NS.objects - - - CF$UID - 2101 - - - CF$UID - 38 - - - CF$UID - 2117 - - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 2102 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 223 - - - CF$UID - 224 - - - CF$UID - 225 - - - CF$UID - 226 - - - CF$UID - 227 - - - CF$UID - 228 - - - CF$UID - 229 - - - NS.objects - - - CF$UID - 1176 - - - CF$UID - 2103 - - - CF$UID - 2111 - - - CF$UID - 1543 - - - CF$UID - 1543 - - - CF$UID - 247 - - - CF$UID - 2115 - - - - - $class - - CF$UID - 215 - - DocumentLocation - - CF$UID - 2095 - - DomainIdentifier - - CF$UID - 198 - - IdentifierPath - - CF$UID - 2104 - - IndexOfDocumentIdentifier - - CF$UID - 38 - - - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 2105 - - - CF$UID - 2106 - - - CF$UID - 2107 - - - CF$UID - 2108 - - - CF$UID - 2109 - - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1543 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1545 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 1547 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 208 - - - - $class - - CF$UID - 202 - - Identifier - - CF$UID - 2110 - - - Littlest - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 240 - - - CF$UID - 241 - - - CF$UID - 242 - - - CF$UID - 243 - - - NS.objects - - - CF$UID - 2112 - - - CF$UID - 2113 - - - CF$UID - 39 - - - CF$UID - 2114 - - - - 324798749.09731197 - {0, 494} - {429, 0} - - $class - - CF$UID - 250 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 2116 - - - file://localhost/Users/dorischen/Documents/Temp/Littlest/Littlest/Foundation/Synchronization/MemorySync.h - - $class - - CF$UID - 87 - - NS.objects - - - CF$UID - 2118 - - - - {{0, 0}, {600, 600}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 125 - - - CF$UID - 126 - - - CF$UID - 127 - - - CF$UID - 128 - - - CF$UID - 129 - - - CF$UID - 130 - - - NS.objects - - - CF$UID - 131 - - - CF$UID - 2120 - - - CF$UID - 2121 - - - CF$UID - 131 - - - CF$UID - 2122 - - - CF$UID - 2128 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 133 - - - NS.objects - - - CF$UID - 38 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 135 - - - NS.objects - - - CF$UID - 136 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 2123 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 2124 - - - CF$UID - 2126 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 2125 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 2127 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 2129 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 2130 - - - CF$UID - 2132 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 140 - - - CF$UID - 2131 - - - - 298 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 143 - - - CF$UID - 2133 - - - - 301 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 41 - - - NS.objects - - - CF$UID - 2135 - - - - - $class - - CF$UID - 51 - - NS.objects - - - CF$UID - 2136 - - - CF$UID - 2138 - - - - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 155 - - - CF$UID - 2137 - - - - 203 - - $class - - CF$UID - 48 - - NS.keys - - - CF$UID - 44 - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 158 - - - CF$UID - 2139 - - - - 115 - - $class - - CF$UID - 52 - - NS.keys - - NS.objects - - - {{104, 384}, {600, 624}} - - $top - - State - - CF$UID - 1 - - - $version - 100000 - - diff --git a/Littlest.xcodeproj/xcuserdata/dorischen.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/Littlest.xcodeproj/xcuserdata/dorischen.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist deleted file mode 100644 index 05301bc..0000000 --- a/Littlest.xcodeproj/xcuserdata/dorischen.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/Littlest.xcodeproj/xcuserdata/dorischen.xcuserdatad/xcschemes/Littlest.xcscheme b/Littlest.xcodeproj/xcuserdata/dorischen.xcuserdatad/xcschemes/Littlest.xcscheme deleted file mode 100644 index 7568044..0000000 --- a/Littlest.xcodeproj/xcuserdata/dorischen.xcuserdatad/xcschemes/Littlest.xcscheme +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Littlest.xcodeproj/xcuserdata/dorischen.xcuserdatad/xcschemes/xcschememanagement.plist b/Littlest.xcodeproj/xcuserdata/dorischen.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index c3cb6c2..0000000 --- a/Littlest.xcodeproj/xcuserdata/dorischen.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - SchemeUserState - - Littlest.xcscheme - - orderHint - 0 - - - SuppressBuildableAutocreation - - 4B8CBFAF135BFDF600B3E49F - - primary - - - - - diff --git a/Littlest/AppDelegate.h b/Littlest/AppDelegate.h deleted file mode 100644 index cb3d749..0000000 --- a/Littlest/AppDelegate.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// AppDelegate.h -// Littlest -// -// Created by Doris Chen on 4/17/11. -// Copyright __MyCompanyName__ 2011. All rights reserved. -// - -#import - -@class RootViewController; - -@interface AppDelegate : NSObject { - UIWindow* window; - RootViewController* viewController; -} - -@property (nonatomic, retain) UIWindow *window; - -@end diff --git a/Littlest/AppDelegate.mm b/Littlest/AppDelegate.mm deleted file mode 100644 index c36c5f8..0000000 --- a/Littlest/AppDelegate.mm +++ /dev/null @@ -1,170 +0,0 @@ -// -// AppDelegate.m -// Littlest -// -// Created by Doris Chen on 4/17/11. -// Copyright __MyCompanyName__ 2011. All rights reserved. -// - -#import "cocos2d.h" - -#import "AppDelegate.h" -#import "GameConfig.h" -#import "HelloWorldLayer.h" - -#import "OS/RootViewController.h" - -@implementation AppDelegate - -@synthesize window; - -- (void) removeStartupFlicker -{ - // - // THIS CODE REMOVES THE STARTUP FLICKER - // - // Uncomment the following code if you Application only supports landscape mode - // -#if GAME_AUTOROTATION == kGameAutorotationUIViewController - - // CC_ENABLE_DEFAULT_GL_STATES(); - // CCDirector *director = [CCDirector sharedDirector]; - // CGSize size = [director winSize]; - // CCSprite *sprite = [CCSprite spriteWithFile:@"Default.png"]; - // sprite.position = ccp(size.width/2, size.height/2); - // sprite.rotation = -90; - // [sprite visit]; - // [[director openGLView] swapBuffers]; - // CC_ENABLE_DEFAULT_GL_STATES(); - -#endif // GAME_AUTOROTATION == kGameAutorotationUIViewController -} - -- (void) applicationDidFinishLaunching:(UIApplication*)application -{ - // Init the window - window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - - // Try to use CADisplayLink director - // if it fails (SDK < 3.1) use the default director - if( ! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink] ) - [CCDirector setDirectorType:kCCDirectorTypeDefault]; - - - CCDirector *director = [CCDirector sharedDirector]; - - // Init the View Controller - viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil]; - viewController.wantsFullScreenLayout = YES; - - // - // Create the EAGLView manually - // 1. Create a RGB565 format. Alternative: RGBA8 - // 2. depth format of 0 bit. Use 16 or 24 bit for 3d effects, like CCPageTurnTransition - // - // - EAGLView *glView = [EAGLView viewWithFrame:[window bounds] - pixelFormat:kEAGLColorFormatRGBA8 - depthFormat:0 // GL_DEPTH_COMPONENT16_OES - ]; - - // attach the openglView to the director - [director setOpenGLView:glView]; - - // Enables High Res mode (Retina Display) on iPhone 4 and maintains low res on all other devices - //if( ! [director enableRetinaDisplay:YES] ) - // CCLOG(@"Retina Display Not supported"); - - // - // VERY IMPORTANT: - // If the rotation is going to be controlled by a UIViewController - // then the device orientation should be "Portrait". - // - // IMPORTANT: - // By default, this template only supports Landscape orientations. - // Edit the RootViewController.m file to edit the supported orientations. - // -#if GAME_AUTOROTATION == kGameAutorotationUIViewController - [director setDeviceOrientation:kCCDeviceOrientationPortrait]; -#else - [director setDeviceOrientation:kCCDeviceOrientationLandscapeLeft]; -#endif - - [director setAnimationInterval:1.0/60]; - [director setDisplayFPS:YES]; - - - // make the OpenGLView a child of the view controller - [viewController setView:glView]; - - // make the View in the View Controller a child of the main window - [window addSubview: viewController.view]; - - // this also lets the system know that we're ready to handle events - [window makeKeyAndVisible]; - - // Default texture format for PNG/BMP/TIFF/JPEG/GIF images - // It can be RGBA8888, RGBA4444, RGB5_A1, RGB565 - // You can change anytime. - [CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888]; - - - // Removes the startup flicker - [self removeStartupFlicker]; - - // Run the intro Scene - [[CCDirector sharedDirector] runWithScene: [HelloWorldLayer scene]]; -} - - -// Pausing -- (void)applicationWillResignActive:(UIApplication *)application { - [[CCDirector sharedDirector] pause]; -} - -// Resuming -- (void)applicationDidBecomeActive:(UIApplication *)application { - [[CCDirector sharedDirector] resume]; -} - -// Low on memory -- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { - [[CCDirector sharedDirector] purgeCachedData]; -} - -// Alt-tabbed out? Update but don't render? --(void) applicationDidEnterBackground:(UIApplication*)application { - [[CCDirector sharedDirector] stopAnimation]; -} - -// Alt-tabbed in? --(void) applicationWillEnterForeground:(UIApplication*)application { - [[CCDirector sharedDirector] startAnimation]; -} - -// Killing -- (void)applicationWillTerminate:(UIApplication *)application { - CCDirector *director = [CCDirector sharedDirector]; - - [[director openGLView] removeFromSuperview]; - - [viewController release]; - - [window release]; - - [director end]; -} - -// What's this? -- (void)applicationSignificantTimeChange:(UIApplication *)application { - [[CCDirector sharedDirector] setNextDeltaTimeZero:YES]; -} - -// Killed -- (void)dealloc { - [[CCDirector sharedDirector] release]; - [window release]; - [super dealloc]; -} - -@end diff --git a/Littlest/Engine/Render/GLES-Render.h b/Littlest/Engine/Render/GLES-Render.h deleted file mode 100644 index f7785d6..0000000 --- a/Littlest/Engine/Render/GLES-Render.h +++ /dev/null @@ -1,68 +0,0 @@ -/* -* Copyright (c) 2006-2007 Erin Catto http://www.gphysics.com -* -* iPhone port by Simon Oliver - http://www.simonoliver.com - http://www.handcircus.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -// -// File modified for cocos2d integration -// http://www.cocos2d-iphone.org -// - -#ifndef GLES_RENDER_H -#define GLES_RENDER_H - -#import -#import -#import - -#include "Box2D.h" - -struct b2AABB; - -// This class implements debug drawing callbacks that are invoked -// inside b2World::Step. -class GLESDebugDraw : public b2DebugDraw -{ - float32 mRatio; - -public: - GLESDebugDraw(); - - GLESDebugDraw( float32 ratio ); - - void DrawPolygon(const b2Vec2* vertices, int32 vertexCount, const b2Color& color); - - void DrawSolidPolygon(const b2Vec2* vertices, int32 vertexCount, const b2Color& color); - - void DrawCircle(const b2Vec2& center, float32 radius, const b2Color& color); - - void DrawSolidCircle(const b2Vec2& center, float32 radius, const b2Vec2& axis, const b2Color& color); - - void DrawSegment(const b2Vec2& p1, const b2Vec2& p2, const b2Color& color); - - void DrawTransform(const b2Transform& xf); - - void DrawPoint(const b2Vec2& p, float32 size, const b2Color& color); - - void DrawString(int x, int y, const char* string, ...); - - void DrawAABB(b2AABB* aabb, const b2Color& color); -}; - - -#endif // GLES_RENDER_H diff --git a/Littlest/Engine/Render/GLES-Render.mm b/Littlest/Engine/Render/GLES-Render.mm deleted file mode 100644 index 9cc1f47..0000000 --- a/Littlest/Engine/Render/GLES-Render.mm +++ /dev/null @@ -1,179 +0,0 @@ -/* -* Copyright (c) 2006-2007 Erin Catto http://www.gphysics.com -* -* iPhone port by Simon Oliver - http://www.simonoliver.com - http://www.handcircus.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -// -// File modified for cocos2d integration -// http://www.cocos2d-iphone.org -// - -#include "GLES-Render.h" - - -#include -#include - -#include - -GLESDebugDraw::GLESDebugDraw() - : mRatio( 1.0f ) -{ -} -GLESDebugDraw::GLESDebugDraw( float32 ratio ) - : mRatio( ratio ) -{ -} - - -void GLESDebugDraw::DrawPolygon(const b2Vec2* old_vertices, int32 vertexCount, const b2Color& color) -{ - b2Vec2 vertices[vertexCount]; - for( int i=0;ilowerBound.x * mRatio, aabb->lowerBound.y * mRatio, - aabb->upperBound.x * mRatio, aabb->lowerBound.y * mRatio, - aabb->upperBound.x * mRatio, aabb->upperBound.y * mRatio, - aabb->lowerBound.x * mRatio, aabb->upperBound.y * mRatio - }; - glVertexPointer(2, GL_FLOAT, 0, glVertices); - glDrawArrays(GL_LINE_LOOP, 0, 8); - -} diff --git a/Littlest/Foundation/Common/Assert.h b/Littlest/Foundation/Common/Assert.h deleted file mode 100755 index bf465fa..0000000 --- a/Littlest/Foundation/Common/Assert.h +++ /dev/null @@ -1,69 +0,0 @@ -#pragma once - -#if defined(DEBUG) - -#include -#include -#include -#include -#include -#include - -#include "GlobalDefines.h" - -#if defined(__WINDOWS__) - - #define Assert(expression) if (!(expression)) __debugbreak(); - -#elif defined(__iOS__) - - // Returns true if the current process is being debugged (either - // running under the debugger or has a debugger attached post facto). - static bool AmIBeingDebugged(void) - { - int junk; - int mib[4]; - struct kinfo_proc info; - size_t size; - - // Initialize the flags so that, if sysctl fails for some bizarre - // reason, we get a predictable result. - info.kp_proc.p_flag = 0; - - // Initialize mib, which tells sysctl the info we want, in this case - // we're looking for information about a specific process ID. - mib[0] = CTL_KERN; - mib[1] = KERN_PROC; - mib[2] = KERN_PROC_PID; - mib[3] = getpid(); - - // Call sysctl. - size = sizeof(info); - junk = sysctl(mib, sizeof(mib) / sizeof(*mib), &info, &size, NULL, 0); - assert(junk == 0); - - // We're being debugged if the P_TRACED flag is set. - return ( (info.kp_proc.p_flag & P_TRACED) != 0 ); - } - - // http://iphone.m20.nl/wp/?p=1#more-1 - //#define DEBUGSTOP(signal) __asm__ __volatile__ ("mov r0, %0\nmov r1, %1\nmov r12, #37\nswi 128\n" : : "r" (getpid ()), "r" (signal) : "r12", "r0", "r1", "cc"); - //#define DEBUGGER do { int trapSignal = AmIBeingDebugged () ? SIGINT : SIGSTOP; DEBUGSTOP(trapSignal); if (trapSignal == SIGSTOP) { DEBUGSTOP (SIGINT); } } while (false); - - // Graciously copied from http://cocoawithlove.com/2008/03/break-into-debugger.html - #define DebugBreak() if (AmIBeingDebugged()) { DebugBreak(); } - - #define Assert(expression) if (!(expression)) raise(SIGTRAP); - -#endif - -#define AssertMessage(expression, message, ...) \ - if (!(expression)) Printf(message, ##__VA_ARGS__) - -#else - -// Note that the expression is still evaluated, since we declared this as an inlined function, rather than a macro. -slInline void Assert(bool expression) {} -slInline void AssertMsg(bool expression, char* msg, ...) {} - -#endif diff --git a/Littlest/Foundation/Common/Base.h b/Littlest/Foundation/Common/Base.h deleted file mode 100755 index 4cf66ae..0000000 --- a/Littlest/Foundation/Common/Base.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -namespace Foundation -{ - class CBase - { - public: - CBase() {} - ~CBase() {} - }; -} diff --git a/Littlest/Foundation/Common/GlobalDefines.h b/Littlest/Foundation/Common/GlobalDefines.h deleted file mode 100755 index 14712b2..0000000 --- a/Littlest/Foundation/Common/GlobalDefines.h +++ /dev/null @@ -1,152 +0,0 @@ -#pragma once - -#include "Foundation/Common/GlobalTypes.h" - -//---------------------------------------------------------------------------------------- -// OS and CPU architecture defines -#if defined(_WINDOWS) - #define __WINDOWS__ - #define __X86__ -#elif defined(__iOS__) - #include - #if TARGET_IPHONE_SIMULATOR - #define __X86__ - #elif TARGET_OS_IPHONE - #define __ARM__ - #else - #error undefined architecture! - #endif -#endif - -//---------------------------------------------------------------------------------------- -// configuration defines -#if defined(_DEBUG) && !defined(DEBUG) - #define DEBUG -#endif - -#if defined(_NDEBUG) && !defined(RELEASE) - #define RELEASE -#endif - -//---------------------------------------------------------------------------------------- -// some type defines that may or may not be defined already? -#if !defined(NULL) - #define NULL 0 -#endif - -#if !defined(FALSE) - #define FALSE 0 -#endif - -#if !defined(TRUE) - #define TRUE 1 -#endif - -//---------------------------------------------------------------------------------------- -// cache information -#if !defined(CACHE_LINE_SIZE) - #if defined(__X86__) - #define CACHE_LINE_SIZE 128 // normally equals to 2 lines for intel - #elif defined(__ARM__) - #define CACHE_LINE_SIZE 32 - #else - #define CACHE_LINE_SIZE 32 - #endif -#endif - -//---------------------------------------------------------------------------------------- -// force inline on non-debug, might make code explode -#if defined(DEBUG) - #define slInline inline -#else - #define slInline __forceinline -#endif - -// compiler determined inline -#define clInline inline - -#define slRestrict __restrict - -//---------------------------------------------------------------------------------------- -// alignment macros -#if defined(__WINDOWS__) -#define MEM_ALIGN(N) __declspec(align(N)) -#elif defined(__iOS__) -#define MEM_ALIGN(N) __attribute__((aligned (N))) -#endif - -#define IS_POWER_OF_TWO(x) ( ((x) & -(x)) == (x) ) - -//#pragma warning(disable:4146) // =( -#define ALIGN_UP(x, ALIGNMENT) ( ((x) + (ALIGNMENT) - 1) & -(ALIGNMENT) ) -#define ALIGN_DOWN(x, ALIGNMENT) ( (x) & -(ALIGNMENT) ) - -#define POWER_OF_TWO_MOD(x, N) ( (x) & ((N) - 1) ) - -#define ALIGN_CACHE ( ALIGN( CACHE_LINE_SIZE ) ) - -//---------------------------------------------------------------------------------------- -// cache macros -#if defined(__X86__) -// uhh, nothing? -#elif defined(__ARM__) -#define DCBT(x) __asm__("pld %[input]" : : [input] "r" ((x))) -#else -#error Not implemented yet! -#endif - -//---------------------------------------------------------------------------------------- -// string and memory functions -#if defined(__WINDOWS__) - #pragma intrinsic(memcpy) - #pragma intrinsic(memset) - #pragma intrinsic(strcmp) - #pragma intrinsic(strcpy) - #pragma intrinsic(strlen) - #pragma intrinsic(strcat) -#endif - -//---------------------------------------------------------------------------------------- -// color constants...this probably needs to consider endianness? -#define NULL_COLOR 0x00000000 -#define BLACK_COLOR 0x000000ff -#define RED_COLOR 0xff0000ff -#define GREEN_COLOR 0x00ff00ff -#define BLUE_COLOR 0x0000ffff -#define WHITE_COLOR 0xffffffff - -//---------------------------------------------------------------------------------------- -// some intrinsic/asm/fast stuff stuffs -- maybe this should be moved to another file -#define RightMostEnabledBit(x) ((x) & -(x)) - - -#if defined(__ARM__) - -slInline uint8_t LZCount(uint64_t x) -{ - uint8_t result; - __asm__("clz %[result] %[input]" : [result] "=r" (result) : [input] "r" (x)); - return result; -} - -#else - -slInline uint8_t LZCount(uint64_t x) -{ - uint8_t leading_zero_count = 0; - uint8_t next_shift = 32; - uint64_t copy = x; - while (next_shift != 0) - { - bool non_zero = copy >= (0x1ULL << next_shift); - uint8_t actual_shift = (uint8_t)non_zero * next_shift; - leading_zero_count += actual_shift; - copy >>= actual_shift; - next_shift >>= 1; - } - leading_zero_count += (copy == 0x1ULL); - - return leading_zero_count; -} - -#endif diff --git a/Littlest/Foundation/Common/GlobalInclude.h b/Littlest/Foundation/Common/GlobalInclude.h deleted file mode 100755 index 83fe092..0000000 --- a/Littlest/Foundation/Common/GlobalInclude.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -#include -#include "GlobalDefines.h" -#include "GlobalTypes.h" -#include "Assert.h" -#include "Print.h" diff --git a/Littlest/Foundation/Common/GlobalTypes.h b/Littlest/Foundation/Common/GlobalTypes.h deleted file mode 100755 index a2d92f0..0000000 --- a/Littlest/Foundation/Common/GlobalTypes.h +++ /dev/null @@ -1,40 +0,0 @@ -#pragma once - -#if defined(uint32_t) -#undef uint32_t -#endif - -typedef signed char int8_t; -typedef unsigned char uint8_t; -typedef short int16_t; -typedef unsigned short uint16_t; -typedef int int32_t; -typedef unsigned int uint32_t; -typedef long long int64_t; -typedef unsigned long long uint64_t; -typedef uint32_t color32_t; - -union IntFloat -{ - int8_t m_Int8[4]; - uint8_t m_UInt8[4]; - int16_t m_Int16[2]; - uint16_t m_UInt16[2]; - int32_t m_Int32; - uint32_t m_UInt32; - float m_Float; -}; - -union LongDouble -{ - int8_t m_Int8[8]; - uint8_t m_UInt8[8]; - int16_t m_Int16[4]; - uint16_t m_UInt16[4]; - int32_t m_Int32[2]; - uint32_t m_UInt32[2]; - int64_t m_Int64; - uint64_t m_UInt64; - float m_Float[2]; - double m_Double; -}; diff --git a/Littlest/Foundation/Common/Print.h b/Littlest/Foundation/Common/Print.h deleted file mode 100755 index 48c0609..0000000 --- a/Littlest/Foundation/Common/Print.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -#include "GlobalDefines.h" -#include - -#if defined(DEBUG) - #define Printf(message, ...) printf(message, ##__VA_ARGS__) -#else - #define Printf(message, ...) {} -#endif diff --git a/Littlest/Foundation/Common/Singleton.h b/Littlest/Foundation/Common/Singleton.h deleted file mode 100755 index bc1ae03..0000000 --- a/Littlest/Foundation/Common/Singleton.h +++ /dev/null @@ -1,42 +0,0 @@ -#pragma once - -#include "Foundation/Common/GlobalInclude.h" - -//---------------------------------------------------------------------------------------- -namespace Foundation -{ - -template -class Singleton -{ -private: - static T* m_Instance; - -protected: - Singleton() { m_Instance = NULL; } - -public: - static T* Init() - { - Assert( m_Instance == NULL); - m_Instance = new (16) T(); - return m_Instance; - } - - slInline static T* GetInstance() - { - return m_Instance; - } - - static void DestroyInstance() - { - if ( m_Instance ) - { - delete m_Instance; - } - } -}; - -template T* Singleton::m_Instance = NULL; - -} diff --git a/Littlest/Foundation/Containers/BitEncoder.h b/Littlest/Foundation/Containers/BitEncoder.h deleted file mode 100755 index 102e7fc..0000000 --- a/Littlest/Foundation/Containers/BitEncoder.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -#include "Foundation/Common/GlobalInclude.h" - -#define SET_BITS(x, new_val, shift, mask) ((x) = (((x) & ~(mask)) | (((new_val) << (shift)) & (mask)))) -#define ZERO_BITS(x, mask) ((x) &= ~(mask)) -#define OR_BITS (x, new_val, shift, mask) ((x) |= (((new_val) << (shift)) & (mask))) -#define AND_BITS(x, new_val, shift, mask) ((x) &= (((new_val) << (shift)) & (mask))) -#define GET_BITS(x, mask) ((x) & (mask)) -#define GET_BITS_RIGHT(x, shift, mask) (((x) & (mask)) >> (shift)) diff --git a/Littlest/Foundation/Containers/LocklessRingBuffer.cpp b/Littlest/Foundation/Containers/LocklessRingBuffer.cpp deleted file mode 100755 index 0a9f9d6..0000000 --- a/Littlest/Foundation/Containers/LocklessRingBuffer.cpp +++ /dev/null @@ -1,159 +0,0 @@ -#include "LocklessRingBuffer.h" -#include "Foundation/Synchronization/MemorySync.h" - -//---------------------------------------------------------------------------------------- -void LocklessRingBuffer::Init(void* buffer, uint32_t buffer_size) -{ - m_Base = (uint8_t*)buffer; - m_BufferSize = buffer_size; - m_WriteOffset = 0; - m_ReadOffset = 0; -} - -//---------------------------------------------------------------------------------------- -void LocklessRingBuffer::Destroy() -{ - m_Base = NULL; - m_BufferSize = 0; - m_WriteOffset = 0; - m_ReadOffset = 0; -} - -//---------------------------------------------------------------------------------------- -bool LocklessRingBuffer::Write(void* entry, uint32_t entry_size) -{ - Assert(entry_size < m_BufferSize); - - uint32_t new_write_offset = m_WriteOffset; - uint32_t remaining_space = m_WriteOffset < m_ReadOffset ? m_ReadOffset - m_WriteOffset - 1 : m_ReadOffset + m_BufferSize - m_WriteOffset; - if (remaining_space < entry_size) - { - return false; - } - - bool write_will_end_lower = new_write_offset + entry_size >= m_BufferSize; - - uint32_t distance_to_top = (entry_size > m_BufferSize - new_write_offset) ? (m_BufferSize - new_write_offset) : entry_size; - memcpy(m_Base + new_write_offset, entry, distance_to_top); - new_write_offset += distance_to_top; - - if (write_will_end_lower) - { - uint32_t remainder = entry_size - distance_to_top; - memcpy(m_Base, (uint8_t*)entry + distance_to_top, remainder); - new_write_offset = remainder; - } - - ReadWriteSync(); - - m_WriteOffset = new_write_offset; - return true; -} - -//---------------------------------------------------------------------------------------- -bool LocklessRingBuffer::Write(void* entries[], uint32_t entry_sizes[], uint32_t entry_count) -{ - uint32_t total_size = 0; - for (uint32_t i = 0; i < entry_count; i++) - { - total_size += entry_sizes[i]; - } - - Assert(total_size < m_BufferSize); - - uint32_t new_write_offset = m_WriteOffset; - uint32_t remaining_space = m_WriteOffset < m_ReadOffset ? m_ReadOffset - m_WriteOffset - 1 : m_ReadOffset + m_BufferSize - m_WriteOffset; - if (remaining_space < total_size) - { - return false; - } - - for (uint32_t i = 0; i < entry_count; i++) - { - bool write_will_end_lower = new_write_offset + entry_sizes[i] >= m_BufferSize; - uint32_t distance_to_top = (entry_sizes[i] > m_BufferSize - new_write_offset) ? (m_BufferSize - new_write_offset) : entry_sizes[i]; - memcpy(m_Base + new_write_offset, entries[i], distance_to_top); - new_write_offset += distance_to_top; - - if (write_will_end_lower) - { - uint32_t remainder = entry_sizes[i] - distance_to_top; - memcpy(m_Base, (uint8_t*)entries[i] + distance_to_top, remainder); - new_write_offset = remainder; - } - } - - ReadWriteSync(); - - m_WriteOffset = new_write_offset; - return true; -} - -//---------------------------------------------------------------------------------------- -bool LocklessRingBuffer::Peek(void* read_buffer, uint32_t read_size) -{ - uint32_t read_remaining = m_WriteOffset < m_ReadOffset ? m_BufferSize - m_ReadOffset + m_WriteOffset : m_WriteOffset - m_ReadOffset; - if (read_remaining < read_size) - { - return false; - } - - uint32_t read_to_top = m_BufferSize - m_ReadOffset <= read_size ? m_BufferSize - m_ReadOffset : read_size; - memcpy(read_buffer, m_Base + m_ReadOffset, read_to_top); - if (m_BufferSize - m_ReadOffset <= read_size) - { - memcpy((uint8_t*)read_buffer + read_to_top, m_Base, read_remaining - read_to_top); - } - - return true; -} - -//---------------------------------------------------------------------------------------- -bool LocklessRingBuffer::Read(void* read_buffer, uint32_t read_size) -{ - uint32_t read_remaining = m_WriteOffset < m_ReadOffset ? m_BufferSize - m_ReadOffset + m_WriteOffset : m_WriteOffset - m_ReadOffset; - if (read_remaining < read_size) - { - return false; - } - - uint32_t read_to_top = m_BufferSize - m_ReadOffset <= read_size ? m_BufferSize - m_ReadOffset : read_size; - memcpy(read_buffer, m_Base + m_ReadOffset, read_to_top); - uint32_t new_read_offset = m_ReadOffset + read_to_top; - - if (m_BufferSize - m_ReadOffset <= read_size) - { - memcpy((uint8_t*)read_buffer + read_to_top, m_Base, read_remaining - read_to_top); - new_read_offset = read_remaining - read_to_top; - } - - ReadWriteSync(); - - m_ReadOffset = new_read_offset; - - return true; -} - -//---------------------------------------------------------------------------------------- -bool LocklessRingBuffer::ReadDiscard(uint32_t read_size) -{ - uint32_t read_remaining = m_WriteOffset < m_ReadOffset ? m_BufferSize - m_ReadOffset + m_WriteOffset : m_WriteOffset - m_ReadOffset; - if (read_remaining < read_size) - { - return false; - } - - uint32_t read_to_top = m_BufferSize - m_ReadOffset <= read_size ? m_BufferSize - m_ReadOffset : read_size; - uint32_t new_read_offset = m_ReadOffset + read_to_top; - - if (m_BufferSize - m_ReadOffset <= read_size) - { - new_read_offset = read_remaining - read_to_top; - } - - ReadWriteSync(); - - m_ReadOffset = new_read_offset; - - return true; -} diff --git a/Littlest/Foundation/Containers/LocklessRingBuffer.h b/Littlest/Foundation/Containers/LocklessRingBuffer.h deleted file mode 100755 index e098a36..0000000 --- a/Littlest/Foundation/Containers/LocklessRingBuffer.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include "Foundation/Common/GlobalInclude.h" - -class LocklessRingBuffer -{ -private: - uint8_t* m_Base; - uint32_t m_BufferSize; - uint32_t m_WriteOffset; - uint32_t m_ReadOffset; - -public: - void Init(void* buffer, uint32_t buffer_size); - void Destroy(); - - bool Write(void* entry, uint32_t entry_size); - bool Write(void* entries[], uint32_t entry_sizes[], uint32_t entry_count); - - bool Peek(void* read_buffer, uint32_t read_size); - bool Read(void* read_buffer, uint32_t read_size); - bool ReadDiscard(uint32_t read_size); -}; diff --git a/Littlest/Foundation/GraphicsServices/Geometry/BasicPrimitives.h b/Littlest/Foundation/GraphicsServices/Geometry/BasicPrimitives.h deleted file mode 100644 index ba50ba9..0000000 --- a/Littlest/Foundation/GraphicsServices/Geometry/BasicPrimitives.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include "Foundation/Common/GlobalInclude.h" -#include "Foundation/Math/MathInclude.h" - -//#include -#include - -//---------------------------------------------------------------------------------------- -struct Basic2DPrimitive -{ -protected: - Basic2DPrimitive(); // Only the children classes can call this. - ~Basic2DPrimitive(); - - GLuint mVertexBuffer; - uint16_t mX, mY; -}; - -//---------------------------------------------------------------------------------------- -struct Rectangle : public Basic2DPrimitive -{ -public: - GLuint mWidth, mHeight; - - Rectangle( uint16_t width, uint16_t height, uint16_t anchorX, uint16_t anchorY ); -}; diff --git a/Littlest/Foundation/GraphicsServices/Geometry/BasicPrimitives.mm b/Littlest/Foundation/GraphicsServices/Geometry/BasicPrimitives.mm deleted file mode 100644 index 4cc9da1..0000000 --- a/Littlest/Foundation/GraphicsServices/Geometry/BasicPrimitives.mm +++ /dev/null @@ -1,26 +0,0 @@ -#include "BasicPrimitives.h" - -//---------------------------------------------------------------------------------------- -Basic2DPrimitive::Basic2DPrimitive() : mVertexBuffer(0), mX(0), mY(0) -{ - glGenBuffers( 1, &mVertexBuffer ); -} - -//---------------------------------------------------------------------------------------- -Basic2DPrimitive::~Basic2DPrimitive() -{ - glDeleteBuffers( 1, &mVertexBuffer ); -} - -//---------------------------------------------------------------------------------------- -Rectangle::Rectangle( uint16_t width, uint16_t height, uint16_t anchorX, uint16_t anchorY ) : Basic2DPrimitive() -{ - Assert( mVertexBuffer ); - glBindBuffer( GL_ARRAY_BUFFER, mVertexBuffer ); - - mWidth = width; - mHeight = height; - - uint16_t values[4 * 2] = {-anchorX, height + anchorY, -anchorX, }; - glBufferData( GL_ARRAY_BUFFER, 4 * 2 * sizeof(uint16_t), values, GL_STATIC_DRAW ); -} diff --git a/Littlest/Foundation/GraphicsServices/OpenGLServices.h b/Littlest/Foundation/GraphicsServices/OpenGLServices.h deleted file mode 100644 index deadd57..0000000 --- a/Littlest/Foundation/GraphicsServices/OpenGLServices.h +++ /dev/null @@ -1,58 +0,0 @@ -#pragma once - -/***************************************************************************************** - * This is a wrapper class around all OpenGL API calls in iOS. This completely abstracts - * away all mixes between the OS-specific calls in Objective-C and the C-style inteface of - * OpenGL. - * - * Since iPhone/iPad will be single/dual cores for the near-term future, we'll basically - * only allow a single rendering context to exist at any given point in time. Therefore, - * we should never need to set context other than during startup or shutdown. - *****************************************************************************************/ - -//#include -//#include -#include -#include - -#include "Foundation/Common/GlobalInclude.h" - -//---------------------------------------------------------------------------------------- -// Some forward declarations -@class EAGLContext; -struct RenderTarget; - -//---------------------------------------------------------------------------------------- -// Some typedefs for handles. May want to move this to a separate file. -typedef GLuint TextureHandle; - -//---------------------------------------------------------------------------------------- -// Complete C(++) OpenGL wrapper. We will use this to wrap -class OpenGLServices -{ -public: - enum - { - kMaxTextureSize = 512 * 512 * 4, - }; - - OpenGLServices(); - - bool init( EAGLContext* mainContext ); - void destroy(); - - bool initScratchMem(); - void destroyScratchMem(); - - bool setRenderTarget( RenderTarget& renderTarget ); - bool present( RenderTarget& renderTarget ); - - TextureHandle loadPNGTexture( const char* fileName ); - void destroyTexture( TextureHandle texture ); - -private: - EAGLContext* mGLContext; - void* mScratchMem; - - void setContext( EAGLContext* newContext ); -}; diff --git a/Littlest/Foundation/GraphicsServices/OpenGLServices.mm b/Littlest/Foundation/GraphicsServices/OpenGLServices.mm deleted file mode 100644 index 9c1f7a2..0000000 --- a/Littlest/Foundation/GraphicsServices/OpenGLServices.mm +++ /dev/null @@ -1,160 +0,0 @@ -#import -#import - -#include "OpenGLServices.h" -#include "RenderTarget.h" - -//---------------------------------------------------------------------------------------- -OpenGLServices::OpenGLServices() : mGLContext(NULL), mScratchMem(NULL) -{ -} - -//---------------------------------------------------------------------------------------- -bool OpenGLServices::init( EAGLContext* mainContext ) -{ - if ( mGLContext ) - { - return false; - } - - mGLContext = [mainContext retain]; - Assert( [EAGLContext setCurrentContext:mGLContext] ); - - initScratchMem(); - - // Enable some common states and set their parameters. - glEnable( GL_TEXTURE_2D ); - glEnable( GL_BLEND ); - // We will premultiply alpha into the color channels of all textures (so no alpha animation). - // This is basically the A over B alpha scheme. - glBlendFunc( GL_ONE, GL_ONE_MINUS_SRC_ALPHA ); - glEnable( GL_DEPTH_TEST ); - glDepthFunc( GL_LEQUAL ); - glFrontFace( GL_CCW ); - glCullFace( GL_BACK ); - - // Disable unused stuff. - glDisable( GL_STENCIL_TEST ); - glDisable( GL_SCISSOR_TEST ); - glDisable( GL_DITHER ); - - return true; -} - -//---------------------------------------------------------------------------------------- -void OpenGLServices::destroy() -{ - if ( !mGLContext ) - { - return; - } - - destroyScratchMem(); - [mGLContext release]; - [EAGLContext setCurrentContext:nil]; -} - -//---------------------------------------------------------------------------------------- -bool OpenGLServices::initScratchMem() -{ - if (!mScratchMem) - { - mScratchMem = malloc( kMaxTextureSize ); - return mScratchMem != NULL; - } - return true; -} - -//---------------------------------------------------------------------------------------- -void OpenGLServices::destroyScratchMem() -{ - if (mScratchMem) - { - free( mScratchMem ); - mScratchMem = NULL; - } -} - -//---------------------------------------------------------------------------------------- -bool OpenGLServices::setRenderTarget( RenderTarget& renderTarget ) -{ - if (!renderTarget.getFramebuffer() || !glIsFramebuffer( renderTarget.getFramebuffer() )) - { - return false; - } - - glBindFramebuffer( GL_FRAMEBUFFER, renderTarget.getFramebuffer() ); - return true; -} - -//---------------------------------------------------------------------------------------- -bool OpenGLServices::present( RenderTarget& renderTarget ) -{ - GLuint colorBuffer = renderTarget.getColorBuffer(); - if (!colorBuffer || !glIsRenderbuffer( colorBuffer )) - { - return false; - } - - glBindRenderbuffer( GL_RENDERBUFFER, colorBuffer ); - return [renderTarget.getContext() presentRenderbuffer:GL_RENDERBUFFER]; -} - -//---------------------------------------------------------------------------------------- -TextureHandle OpenGLServices::loadPNGTexture( const char* fileName ) -{ - GLuint textureHandle; - glGenTextures( 1, &textureHandle ); - if (!textureHandle) - { - return textureHandle; - } - - glBindTexture( GL_TEXTURE_2D, textureHandle ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE ); - - // http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-part-6_25.html - NSString* nsFileName = [NSString stringWithUTF8String:fileName]; - NSString* nsPath = [[NSBundle mainBundle] pathForResource:nsFileName ofType:@"png"]; - NSData* fileData = [[NSData alloc] initWithContentsOfFile:nsPath]; - UIImage* image = [[UIImage alloc] initWithData:fileData]; - AssertMessage( image != nil, "Image failed to load!\n" ); - - GLuint width = CGImageGetWidth( image.CGImage ); - GLuint height = CGImageGetHeight( image.CGImage ); - CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); - Assert( width * height * 4 <= kMaxTextureSize ); - CGContextRef context = CGBitmapContextCreate( mScratchMem, width, height, 8, 4 * width, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big ); - CGColorSpaceRelease( colorSpace ); - CGContextClearRect( context, CGRectMake( 0, 0, width, height ) ); - CGContextTranslateCTM( context, 0, 0 ); - CGContextDrawImage( context, CGRectMake( 0, 0, width, height ), image.CGImage ); - - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, mScratchMem ); - glGenerateMipmap( GL_TEXTURE_2D ); - - CGContextRelease(context); - [image release]; - [fileData release]; - - return textureHandle; -} - -//---------------------------------------------------------------------------------------- -void OpenGLServices::destroyTexture( TextureHandle texture ) -{ - glDeleteTextures( 1, &texture ); -} - -//---------------------------------------------------------------------------------------- -void OpenGLServices::setContext( EAGLContext* newContext ) -{ - if (mGLContext != newContext) - { - mGLContext = newContext; - [EAGLContext setCurrentContext:newContext]; - } -} diff --git a/Littlest/Foundation/GraphicsServices/RenderTarget.h b/Littlest/Foundation/GraphicsServices/RenderTarget.h deleted file mode 100644 index aad5d43..0000000 --- a/Littlest/Foundation/GraphicsServices/RenderTarget.h +++ /dev/null @@ -1,65 +0,0 @@ -#pragma once - -#include -#include -#include -#include - -#include "Foundation/Common/GlobalInclude.h" - -@class EAGLContext; -@class CAEAGLLayer; - -//---------------------------------------------------------------------------------------- -struct RenderTargetInitParams -{ - RenderTargetInitParams(); - - EAGLContext* mContext; - CAEAGLLayer* mCALayer; - - // Width and height of color vs. depth buffers have to be the same. We don't resize in iOS. - int32_t mBufferWidth; - int32_t mBufferHeight; - - GLenum mColorFormat; - GLenum mDepthStencilFormat; - - uint32_t mFlags; -}; - -//---------------------------------------------------------------------------------------- -class RenderTarget -{ -public: - enum RenderTargetFlags - { - kSystemFramebuffer = 0x1 << 0, - }; - - const static uint32_t MAX_RENDER_BUFFERS = 2; - - RenderTarget(); - ~RenderTarget(); - - bool init( RenderTargetInitParams& params ); - void destroy(); - - EAGLContext* getContext() const { return mContext; } - uint32_t getWidth() const { return mRenderBufferWidth; } - uint32_t getHeight() const { return mRenderBufferHeight; } - GLuint getFramebuffer() const { return mFramebuffer; } - GLuint getColorBuffer() const { return mColorBuffer; } - -protected: - EAGLContext* mContext; - GLuint mFramebuffer; - - GLuint mColorBuffer; - GLuint mDepthStencilBuffer; - - int32_t mRenderBufferWidth; - int32_t mRenderBufferHeight; - - uint32_t mFlags; -}; diff --git a/Littlest/Foundation/GraphicsServices/RenderTarget.mm b/Littlest/Foundation/GraphicsServices/RenderTarget.mm deleted file mode 100644 index 659f7d6..0000000 --- a/Littlest/Foundation/GraphicsServices/RenderTarget.mm +++ /dev/null @@ -1,150 +0,0 @@ -#include "RenderTarget.h" - -#import - -//---------------------------------------------------------------------------------------- -RenderTargetInitParams::RenderTargetInitParams() : mContext(NULL), - mCALayer(NULL), - mBufferWidth(0), - mBufferHeight(0), - mColorFormat(GL_NONE), - mDepthStencilFormat(GL_NONE), - mFlags(0) -{ -} - -//---------------------------------------------------------------------------------------- -RenderTarget::RenderTarget() : mContext(NULL), - mFramebuffer(0), - mColorBuffer(0), - mDepthStencilBuffer(0), - mRenderBufferWidth(0), - mRenderBufferHeight(0), - mFlags(0) -{ -}; - -//---------------------------------------------------------------------------------------- -RenderTarget::~RenderTarget() -{ - if ( mFramebuffer ) - { - AssertMessage( !mFramebuffer, "RenderTarget has not been destroyed yet!" ); - destroy(); - } - else - { - mContext = NULL; - mFramebuffer = 0; - mColorBuffer = 0; - mDepthStencilBuffer = 0; - mRenderBufferWidth = 0; - mRenderBufferHeight = 0; - mFlags = 0; - } -}; - -//---------------------------------------------------------------------------------------- -bool RenderTarget::init( RenderTargetInitParams& params ) -{ - if (mFramebuffer) - { - AssertMessage( 0, "RenderTarget already initialized.\n" ); - return false; - } - - mContext = params.mContext; - AssertMessage( mContext, "Invalid context provided.\n" ); - - // Set the context first. - [EAGLContext setCurrentContext:mContext]; - - mRenderBufferWidth = params.mBufferWidth; - mRenderBufferHeight = params.mBufferHeight; - - if (params.mFlags & kSystemFramebuffer) - { - [mContext renderbufferStorage:GL_RENDERBUFFER fromDrawable:params.mCALayer]; - glGetRenderbufferParameteriv( GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &mRenderBufferWidth ); - glGetRenderbufferParameteriv( GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &mRenderBufferHeight ); - } - else - { - if (params.mColorFormat != GL_NONE) - { - glGenRenderbuffers( 1, &mColorBuffer ); - Assert( mColorBuffer ); - glBindRenderbuffer( GL_RENDERBUFFER, mColorBuffer ); - glRenderbufferStorage( GL_RENDERBUFFER, params.mColorFormat, mRenderBufferWidth, mRenderBufferHeight ); - } - } - - if (params.mDepthStencilFormat != GL_NONE) - { - // If a depth/stencil buffer is needed, we'll create one with the same dimensions as the color buffer. - glGenRenderbuffers( 1, &mDepthStencilBuffer ); - Assert( mDepthStencilBuffer ); - glBindRenderbuffer( GL_RENDERBUFFER, mDepthStencilBuffer ); - glRenderbufferStorage( GL_RENDERBUFFER, params.mDepthStencilFormat, mRenderBufferWidth, mRenderBufferHeight ); - } - - if (mColorBuffer || mDepthStencilBuffer) - { - // Create framebuffer object. - glGenFramebuffers( 1, &mFramebuffer ); - glBindFramebuffer( GL_FRAMEBUFFER, mFramebuffer ); - - if (mColorBuffer) - { - glFramebufferRenderbuffer( GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, mColorBuffer ); - } - - if (mDepthStencilBuffer) - { - glFramebufferRenderbuffer( GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, mDepthStencilBuffer ); - } - - AssertMessage( glCheckFramebufferStatus(GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE, "Failed to make complete framebuffer object: %x", glCheckFramebufferStatus(GL_FRAMEBUFFER) ); - } - else - { - return false; - } - - - return true; -} - -//---------------------------------------------------------------------------------------- -void RenderTarget::destroy() -{ - if (!mContext) - { - return; - } - - [EAGLContext setCurrentContext:mContext]; - - if (mColorBuffer && glIsRenderbuffer(mColorBuffer)) - { - glDeleteRenderbuffers( 1, &mColorBuffer ); - } - - if (mDepthStencilBuffer && glIsRenderbuffer(mDepthStencilBuffer)) - { - glDeleteRenderbuffers( 1, &mDepthStencilBuffer ); - } - - if (mFramebuffer) - { - glDeleteFramebuffers( 1, &mFramebuffer ); - } - - mContext = NULL; - mFramebuffer = 0; - mColorBuffer = 0; - mDepthStencilBuffer = 0; - mRenderBufferWidth = 0; - mRenderBufferHeight = 0; - mFlags = 0; -} diff --git a/Littlest/Foundation/Hash/DJB2.h b/Littlest/Foundation/Hash/DJB2.h deleted file mode 100755 index 31b863f..0000000 --- a/Littlest/Foundation/Hash/DJB2.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include "Foundation/Common/GlobalInclude.h" - -//---------------------------------------------------------------------------------------- -// djb2 string hash function -static slInline uint32_t StrHash(const char* str) -{ - uint32_t hash = 5381; // seed value - int32_t c = *str; - - if(!str) - { - Assert(false); - return 0; - } - - while ( (*str != 0) ) - { - hash = ((hash << 5) + hash) + c; /* hash * 33 + c == ((hash * 32) + hash) + c */ - c = *(str++); - } - - return hash; -} \ No newline at end of file diff --git a/Littlest/Foundation/Math/MathDefines.h b/Littlest/Foundation/Math/MathDefines.h deleted file mode 100755 index b9bbdaa..0000000 --- a/Littlest/Foundation/Math/MathDefines.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -#define kEpsilon 1e-6 -#define kSqrtEpsilon 1e-3 - -#define kPi 3.1415926535897932384626433832795 -#define kPi_2 1.5707963267948966192313216916398 -#define kPi_3 1.0471975511965977461542144610932 -#define kPi_4 0.78539816339744830961566084581988 -#define k2Pi_3 2.0943951023931954923084289221863 -#define k3Pi_4 2.3561944901923449288469825374596 -#define k2Pi 6.283185307179586476925286766559 - -#define kE 2.7182818284590452353602874713527 diff --git a/Littlest/Foundation/Math/MathInclude.h b/Littlest/Foundation/Math/MathInclude.h deleted file mode 100755 index 718190a..0000000 --- a/Littlest/Foundation/Math/MathInclude.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -#include "Foundation/Math/MathDefines.h" -#include "Foundation/Math/MathOperations.h" -#include "Foundation/Math/MathTypes.h" -#include "Foundation/Math/Vector.h" -#include "Foundation/Math/Quaternion.h" -#include "Foundation/Math/Matrix.h" diff --git a/Littlest/Foundation/Math/MathOperations.h b/Littlest/Foundation/Math/MathOperations.h deleted file mode 100755 index af49e6f..0000000 --- a/Littlest/Foundation/Math/MathOperations.h +++ /dev/null @@ -1,75 +0,0 @@ -#pragma once - -#include -#include "Foundation/Common/GlobalInclude.h" - -#if defined(__WINDOWS__) - -#pragma intrinsic(sin) -#pragma intrinsic(cos) -#pragma intrinsic(tan) -#pragma intrinsic(abs) -#pragma intrinsic(fabs) -#pragma intrinsic(asin) -#pragma intrinsic(acos) -#pragma intrinsic(atan) -#pragma intrinsic(atan2) -#pragma intrinsic(exp) -#pragma intrinsic(sqrt) -#pragma intrinsic(log) -#pragma intrinsic(log10) - -#endif - -#define Sinf(x) sin(x) -#define Cosf(x) cos(x) -#define Tanf(x) tan(x) -#define Sqrtf(x) sqrt(x) - -//---------------------------------------------------------------------------------------- -#define Min2(x, y) ( (x) <= (y) ? (x) : (y) ) -#define Max2(x, y) ( (x) >= (y) ? (x) : (y) ) -#define Min3(x, y, z) ( (x) <= (y) ? ((x) <= (z) ? (x) : (z)) : ((y) <= (z) ? (y) : (z)) ) -#define Max3(x, y, z) ( (x) >= (y) ? ((x) >= (z) ? (x) : (z)) : ((y) >= (z) ? (y) : (z)) ) - -//---------------------------------------------------------------------------------------- -slInline float Absf(const float& f) -{ - IntFloat int_float; - int_float.m_Float = f; - int_float.m_Int32 &= 0x7fffffff; - return int_float.m_Float; -} - -//---------------------------------------------------------------------------------------- -slInline bool EpsilonEquals(const float& a, const float& b, const float& epsilon) -{ - return Absf(a - b) <= epsilon; -} - -//---------------------------------------------------------------------------------------- -slInline uint16_t ConvertFloatToHalf( unsigned int f ) -{ - unsigned int s = f & 0x80000000; - signed int e = ((f & 0x7f800000) >> 23) - (127 - 15); - if (e < 0) return 0; - else if (e > 31) - { - e = 31; - } - unsigned int fo = f & 0x7fffff; - return (uint16_t)((s >> 16) | ((e << 10) & 0x7c00) | (fo >> 13)); -} - -//---------------------------------------------------------------------------------------- -slInline float ConvertHalfToFloat( unsigned short h ) -{ - unsigned int s = h & 0x8000; - unsigned int e = ((h & 0x7c00) >> 10) - 15 + 127; - unsigned int f = h & 0x3ff; - - IntFloat int_float; - int_float.m_UInt32 = ((s << 16) | ((e << 23) & 0x7f800000) | (f << 13)); - - return int_float.m_Float; -} diff --git a/Littlest/Foundation/Math/MathTypes.h b/Littlest/Foundation/Math/MathTypes.h deleted file mode 100755 index 379bf16..0000000 --- a/Littlest/Foundation/Math/MathTypes.h +++ /dev/null @@ -1,363 +0,0 @@ -#pragma once - -#include "Foundation/Common/GlobalInclude.h" -#include "Foundation/Math/MathOperations.h" - -//---------------------------------------------------------------------------------------- -struct Vec2 -{ - float x; - float y; - - slInline explicit Vec2() {} - slInline explicit Vec2(const float xy) {x = xy; y = xy;} - slInline explicit Vec2(const float ix, const float iy) {x = ix; y = iy;} - - slInline Vec2(const Vec2& v) {x = v.x; y = v.y;} // copy constructor - - slInline float* AsFloatArray() {return &x;} - slInline const float* AsFloatArray() const {return &x;} - - slInline float GetComponent(int index) const {return AsFloatArray()[index];} -}; - - -//---------------------------------------------------------------------------------------- -struct Vec3 -{ - float x; - float y; - float z; - - slInline explicit Vec3() {} - slInline explicit Vec3(const float xyz) {x = xyz; y = xyz; z = xyz;} - slInline explicit Vec3(const float ix, const float iy, const float iz) {x = ix; y = iy; z = iz;} - - slInline explicit Vec3(const Vec2& v, const float iz) {x = v.x; y = v.y; z = iz;} - - slInline Vec3(const Vec3& v) {x = v.x; y = v.y; z = v.z;} // copy constructor - - slInline Vec2 AsVec2() const {return Vec2(x, y);} - - slInline float* AsFloatArray() {return &x;} - slInline const float* AsFloatArray() const {return &x;} - - slInline float GetComponent(int index) const {return AsFloatArray()[index];} -}; - - -//---------------------------------------------------------------------------------------- -struct Vec4 -{ - float x; - float y; - float z; - float w; - - slInline explicit Vec4() {} - slInline explicit Vec4(const float xyzw) {x = xyzw; y = xyzw; z = xyzw; w = xyzw;} - slInline explicit Vec4(const float xyz, const float iw) {x = xyz; y = xyz; z = xyz; w = iw;} - slInline explicit Vec4(const float ix, const float iy, const float iz, const float iw) {x = ix; y = iy; z = iz; w = iw;} - - slInline explicit Vec4(const Vec2& u, const Vec2& v) {x = u.x; y = u.y; z = v.x; w = v.y;} - slInline explicit Vec4(const Vec2& v, const float iz, const float iw) {x = v.x; y = v.y; z = iz; w = iw;} - - slInline explicit Vec4(const Vec3& v, const float iw) {x = v.x; y = v.y; z = v.z; w = iw;} - - slInline Vec4(const Vec4& v) {x = v.x; y = v.y; z = v.z; w = v.w;} // copy constructor - - slInline Vec2 AsVec2() const {return Vec2(x, y);} - slInline Vec3 AsVec3() const {return Vec3(x, y, z);} - - slInline float* AsFloatArray() {return &x;} - slInline const float* AsFloatArray() const {return &x;} - - slInline float GetComponent(int index) const {return AsFloatArray()[index];} -}; - - -//---------------------------------------------------------------------------------------- -struct Quaternion -{ - float i; - float j; - float k; - float s; - - slInline explicit Quaternion() {} - explicit Quaternion(const float angle, const Vec3& normalized_axis); - explicit Quaternion(const float angle, const float x, const float y, const float z); - - slInline Quaternion(const Quaternion& q) {i = q.i; j = q.j; k = q.k; s = q.s;} - - Vec4 AsVec4(); - slInline float* AsFloatArray() {return &i;} - - Vec3 GetImaginary(); - slInline float GetReal() {return s;} -}; - -slInline Quaternion::Quaternion(const float angle, const Vec3& normalized_axis) -{ - Assert( EpsilonEquals(normalized_axis.x * normalized_axis.x + normalized_axis.y * normalized_axis.y + normalized_axis.z * normalized_axis.z, 1.0f, kSqrtEpsilon) ); - float half_angle = angle * 0.5f; - float sin_half_angle = (float)Sinf(half_angle); - i = normalized_axis.x * sin_half_angle; - j = normalized_axis.y * sin_half_angle; - k = normalized_axis.z * sin_half_angle; - s = (float)Cosf(half_angle); -} - -slInline Quaternion::Quaternion(const float angle, const float x, const float y, const float z) -{ - Assert( EpsilonEquals(x * x + y * y + z * z, 1.0f, kSqrtEpsilon) ); - float half_angle = angle * 0.5f; - float sin_half_angle = (float)Sinf(half_angle); - i = x * sin_half_angle; - j = y * sin_half_angle; - k = z * sin_half_angle; - s = (float)Cosf(half_angle); -} - -Vec4 Quaternion::AsVec4() -{ - Vec4 r; - r.x = i; - r.y = j; - r.z = k; - r.w = s; - return r; -} - -Vec3 Quaternion::GetImaginary() -{ - Vec3 r; - r.x = i; - r.y = j; - r.z = k; - return r; -} - - -//---------------------------------------------------------------------------------------- -struct Mat3 -{ - Vec3 v[3]; - - slInline explicit Mat3() {} - explicit Mat3(const Vec3& v0, const Vec3& v1, const Vec3& v2); - explicit Mat3(const float v00, const float v01, const float v02, - const float v10, const float v11, const float v12, - const float v20, const float v21, const float v22); - Mat3(const Mat3& m); // copy constructor - - float* AsFloatArray() {return &v[0].x;} -}; - -slInline Mat3::Mat3(const Vec3& v0, const Vec3& v1, const Vec3& v2) -{ - v[0] = v0; - v[1] = v1; - v[2] = v2; -} - -slInline Mat3::Mat3(const float v00, const float v01, const float v02, const float v10, const float v11, const float v12, const float v20, const float v21, const float v22) -{ - v[0].x = v00; v[0].y = v01; v[0].z = v02; - v[1].x = v10; v[1].y = v11; v[1].z = v12; - v[2].x = v20; v[2].y = v21; v[2].z = v22; -} - -slInline Mat3::Mat3(const Mat3& m) -{ - v[0] = m.v[0]; - v[1] = m.v[1]; - v[2] = m.v[2]; -} - - -//---------------------------------------------------------------------------------------- -struct Mat4 -{ - Vec4 v[4]; - - slInline explicit Mat4() {} - explicit Mat4(const Vec4& v0, const Vec4& v1, const Vec4& v2, const Vec4& v3); - explicit Mat4(const float v00, const float v01, const float v02, const float v03, - const float v10, const float v11, const float v12, const float v13, - const float v20, const float v21, const float v22, const float v23, - const float v30, const float v31, const float v32, const float v33); - explicit Mat4(const Mat3& m); - Mat4(const Mat4& m); // copy constructor - - float* AsFloatArray() {return &v[0].x;} -}; - -slInline Mat4::Mat4(const Vec4& v0, const Vec4& v1, const Vec4& v2, const Vec4& v3) -{ - v[0] = v0; - v[1] = v1; - v[2] = v2; - v[3] = v3; -} - -slInline Mat4::Mat4(const float v00, const float v01, const float v02, const float v03, const float v10, const float v11, const float v12, const float v13, const float v20, const float v21, const float v22, const float v23, const float v30, const float v31, const float v32, const float v33) -{ - v[0].x = v00; v[0].y = v01; v[0].z = v02; v[0].w = v03; - v[1].x = v10; v[1].y = v11; v[1].z = v12; v[1].w = v13; - v[2].x = v20; v[2].y = v21; v[2].z = v22; v[2].w = v23; - v[3].x = v30; v[3].y = v31; v[3].z = v32; v[3].w = v33; -} - -slInline Mat4::Mat4(const Mat3& m) -{ - v[0].x = m.v[0].x; v[0].y = m.v[0].y; v[0].z = m.v[0].z; v[0].w = 0.0f; - v[1].x = m.v[1].x; v[1].y = m.v[1].y; v[1].z = m.v[1].z; v[1].w = 0.0f; - v[2].x = m.v[2].x; v[2].y = m.v[2].y; v[2].z = m.v[2].z; v[2].w = 0.0f; - v[3].x = 0.0f; v[3].y = 0.0f; v[3].z = 0.0f; v[3].w = 1.0f; -} - -slInline Mat4::Mat4(const Mat4& m) -{ - v[0] = m.v[0]; - v[1] = m.v[1]; - v[2] = m.v[2]; - v[3] = m.v[3]; -} - - -//---------------------------------------------------------------------------------------- -typedef MEM_ALIGN(8) Vec2 AlignedVec2; -typedef MEM_ALIGN(16) Vec3 AlignedVec3; -typedef MEM_ALIGN(16) Vec4 AlignedVec4; - -typedef MEM_ALIGN(64) Mat3 AlignedMat3; -typedef MEM_ALIGN(64) Mat4 AlignedMat4; - - -//---------------------------------------------------------------------------------------- -// SIMD Structures -//---------------------------------------------------------------------------------------- -struct Vec2SOA -{ - uint32_t m_Count; - uint32_t m_MaxCount; - - float* m_X; - float* m_Y; - - slInline explicit Vec2SOA() {m_Count = 0; m_MaxCount = 0; m_X = NULL; m_Y = NULL;} - bool InitVec2SOA(float* buffer, uint32_t buffer_size); - - void GetVec2AtIndex(Vec2& v, uint32_t index) {Assert(index < m_Count); v.x = m_X[index]; v.y = m_Y[index];} -}; - -slInline bool Vec2SOA::InitVec2SOA(float* buffer, uint32_t max_count) -{ - m_Count = 0; - - uint64_t buffer_addr = (uint64_t)buffer; - uint64_t buffer_addr_aligned = ALIGN_UP(buffer_addr, 16); - uint64_t buffer_end = (uint64_t)(buffer + max_count); - - if (buffer_end - buffer_addr_aligned < 20) - { - m_MaxCount = 0; - m_X = NULL; - m_Y = NULL; - - return false; - } - - uint32_t remainder = (uint32_t)POWER_OF_TWO_MOD(buffer_end, 16) / 4; - uint32_t slot_count = (uint32_t)(buffer_end - buffer_addr_aligned) / 32; - - m_MaxCount = slot_count * 4 + (uint32_t)(remainder * (slot_count & 0x1)); - - m_X = (float*)buffer_addr_aligned; - m_Y = m_X + ALIGN_UP(m_MaxCount, 4); -} - - -//---------------------------------------------------------------------------------------- -struct Vec3SOA : public Vec2SOA -{ - float* m_Z; - - slInline explicit Vec3SOA() {m_Count = 0; m_MaxCount = 0; m_X = NULL; m_Y = NULL; m_Z = NULL;} - bool InitVec3SOA(float* buffer, uint32_t buffer_size); - - void GetVec3AtIndex(Vec3& v, uint32_t index) {Assert(index < m_Count); v.x = m_X[index]; v.y = m_Y[index]; v.z = m_Z[index];} -}; - -slInline bool Vec3SOA::InitVec3SOA(float* buffer, uint32_t max_count) -{ - m_Count = 0; - - uint64_t buffer_addr = (uint64_t)buffer; - uint64_t buffer_addr_aligned = ALIGN_UP(buffer_addr, 16); - uint64_t buffer_end = (uint64_t)(buffer + max_count); - - if (buffer_end - buffer_addr_aligned < 36) - { - m_MaxCount = 0; - m_X = NULL; - m_Y = NULL; - m_Z = NULL; - - return false; - } - - uint32_t remainder = (uint32_t)POWER_OF_TWO_MOD(buffer_end, 16) / 4; - uint32_t slot_count = (uint32_t)(buffer_end - buffer_addr_aligned) / 48; - - m_MaxCount = slot_count * 4 + (uint32_t)(remainder * (slot_count % 3 == 2)); - - m_X = (float*)buffer_addr_aligned; - uint32_t aligned_count = ALIGN_UP(m_MaxCount, 4); - m_Y = m_X + aligned_count; - m_Z = m_Y + aligned_count; -} - - -//---------------------------------------------------------------------------------------- -struct Vec4SOA : public Vec3SOA -{ - float* m_W; - - slInline explicit Vec4SOA() {m_Count = 0; m_MaxCount = 0; m_X = NULL; m_Y = NULL; m_Z = NULL; m_W = NULL;} - bool InitVec4SOA(float* buffer, uint32_t buffer_size); - - void GetVec4AtIndex(Vec4& v, uint32_t index) {Assert(index < m_Count); v.x = m_X[index]; v.y = m_Y[index]; v.z = m_Z[index]; v.w = m_W[index];} -}; - -slInline bool Vec4SOA::InitVec4SOA(float* buffer, uint32_t max_count) -{ - m_Count = 0; - - uint64_t buffer_addr = (uint64_t)buffer; - uint64_t buffer_addr_aligned = ALIGN_UP(buffer_addr, 16); - uint64_t buffer_end = (uint64_t)(buffer + max_count); - - if (buffer_end - buffer_addr_aligned < 52) - { - m_MaxCount = 0; - m_X = NULL; - m_Y = NULL; - m_Z = NULL; - m_W = NULL; - - return false; - } - - uint32_t remainder = (uint32_t)POWER_OF_TWO_MOD(buffer_end, 16) / 4; - uint32_t slot_count = (uint32_t)(buffer_end - buffer_addr_aligned) / 64; - - m_MaxCount = slot_count * 4 + (uint32_t)(remainder * ((slot_count & 0x3) == 4)); - - m_X = (float*)buffer_addr_aligned; - uint32_t aligned_count = ALIGN_UP(m_MaxCount, 4); - m_Y = m_X + aligned_count; - m_Z = m_Y + aligned_count; - m_W = m_Z + aligned_count; -} diff --git a/Littlest/Foundation/Math/Matrix.h b/Littlest/Foundation/Math/Matrix.h deleted file mode 100755 index 40e2a70..0000000 --- a/Littlest/Foundation/Math/Matrix.h +++ /dev/null @@ -1,660 +0,0 @@ -#pragma once - -#include "Foundation/Common/GlobalInclude.h" -#include "Foundation/Math/MathOperations.h" -#include "Foundation/Math/MathTypes.h" -#include "Foundation/Math/Vector.h" - -//---------------------------------------------------------------------------------------- -// Matrix are expressed in post-multiply row-major format. -// That is, matrix multiplication follows the form v = x * A. -// A local-to-world transform with basis a, b, c, expressed in world space, will result -// in a matrix that looks like: -// _ _ -// | a | -// | b | -// | c | -// - - -// -// Therefore, translate t will naturally follow below c, in the illustration above. -// With this, we can stuff the matrix directly into OpenGL and not have to do swizzling. -//---------------------------------------------------------------------------------------- - -//---------------------------------------------------------------------------------------- -// Mat3 -//---------------------------------------------------------------------------------------- -void SetMat3(Mat3& r, const Mat3& a); -void SetMat3(Mat3& r, const Vec3& v0, const Vec3& v1, const Vec3& v2); - -void ScaleMat3(Mat3& r, const float s, const Mat3& a); -Mat3 ScaleMat3(const float s, const Mat3& a); - -float DeterminantOfMat3(const Mat3& a); - -void TransposeMat3(Mat3& r, const Mat3& a); -Mat3 TransposeMat3(const Mat3& a); - -void InvertAffineMat3(Mat3& r, const Mat3& a); -Mat3 InvertAffineMat3(const Mat3& a); - -void InvertGeneralMat3(Mat3& r, const Mat3& a); -Mat3 InvertGeneralMat3(const Mat3& a); - -void MulMat3(Mat3& r, const Mat3& a, const Mat3& b); -Mat3 MulMat3(const Mat3& a, const Mat3& b); - -void MulMat3ByTransposedMat3(Mat3& r, const Mat3& a, const Mat3& b); -Mat3 MulMat3ByTransposedMat3(const Mat3& a, const Mat3& b); - -void MulVec3ByMat3(Vec3& r, const Vec3& v, const Mat3& a); -Vec3 MulVec3ByMat3(const Vec3& v, const Mat3& a); - -//---------------------------------------------------------------------------------------- -slInline void SetMat3(Mat3& r, const Mat3& a) -{ - r.v[0] = a.v[0]; - r.v[1] = a.v[1]; - r.v[2] = a.v[2]; -} - -//---------------------------------------------------------------------------------------- -slInline void SetMat3(Mat3& r, const Vec3& v0, const Vec3& v1, const Vec3& v2) -{ - r.v[0] = v0; - r.v[1] = v1; - r.v[2] = v2; -} - -//---------------------------------------------------------------------------------------- -slInline void ScaleMat3(Mat3& r, const float s, const Mat3& a) -{ - ScaleVec3(r.v[0], s, a.v[0]); - ScaleVec3(r.v[1], s, a.v[1]); - ScaleVec3(r.v[2], s, a.v[2]); -} - -//---------------------------------------------------------------------------------------- -slInline Mat3 ScaleMat3(const float s, const Mat3& a) -{ - Mat3 r; - ScaleVec3(r.v[0], s, a.v[0]); - ScaleVec3(r.v[1], s, a.v[1]); - ScaleVec3(r.v[2], s, a.v[2]); - return r; -} - -//---------------------------------------------------------------------------------------- -slInline float DeterminantOfMat3(const Mat3& a) -{ - return a.v[0].x * (a.v[1].y * a.v[2].z - a.v[1].z * a.v[2].y) - + a.v[0].y * (a.v[1].z * a.v[2].x - a.v[1].x * a.v[2].z) - + a.v[0].z * (a.v[1].x * a.v[2].y - a.v[1].y * a.v[2].x); -} - -//---------------------------------------------------------------------------------------- -slInline void TransposeMat3(Mat3& r, const Mat3& a) -{ - // a might be the same as r - r.v[0].x = a.v[0].x; - r.v[1].y = a.v[1].y; - r.v[2].z = a.v[2].z; - - float temp; - temp = r.v[0].y; - r.v[0].y = r.v[1].x; - r.v[1].x = temp; - - temp = r.v[0].z; - r.v[0].z = r.v[2].x; - r.v[2].x = temp; - - temp = r.v[1].z; - r.v[1].z = r.v[2].y; - r.v[2].y = temp; -} - -//---------------------------------------------------------------------------------------- -slInline Mat3 TransposeMat3(const Mat3& a) -{ - Mat3 r; - r.v[0].x = a.v[0].x; r.v[0].y = a.v[1].x; r.v[0].z = a.v[2].x; - r.v[1].x = a.v[0].y; r.v[1].y = a.v[1].y; r.v[1].z = a.v[2].y; - r.v[2].x = a.v[0].z; r.v[2].y = a.v[1].z; r.v[2].z = a.v[2].z; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void InvertAffineMat3(Mat3& r, const Mat3& a) -{ - TransposeMat3(r, a); -} - -//---------------------------------------------------------------------------------------- -slInline Mat3 InvertAffineMat3(const Mat3& a) -{ - return TransposeMat3(a); -} - -//---------------------------------------------------------------------------------------- -slInline void InvertGeneralMat3(Mat3& r, const Mat3& a) -{ - float inv_determinant = 1.0f / DeterminantOfMat3(a); - - Mat3 a_T; - TransposeMat3(a_T, a); - CrossVec3(r.v[0], a_T.v[1], a_T.v[2]); - CrossVec3(r.v[1], a_T.v[2], a_T.v[0]); - CrossVec3(r.v[2], a_T.v[0], a_T.v[1]); - - ScaleMat3(r, inv_determinant, r); -} - -//---------------------------------------------------------------------------------------- -slInline Mat3 InvertGeneralMat3(const Mat3& a) -{ - float inv_determinant = 1.0f / DeterminantOfMat3(a); - - Mat3 r; - Mat3 a_T = TransposeMat3(a); - CrossVec3(r.v[0], a_T.v[1], a_T.v[2]); - CrossVec3(r.v[1], a_T.v[2], a_T.v[0]); - CrossVec3(r.v[2], a_T.v[0], a_T.v[1]); - - return ScaleMat3(inv_determinant, r); -} - -//---------------------------------------------------------------------------------------- -slInline void MulMat3(Mat3& r, const Mat3& a, const Mat3& b) -{ - Mat3 temp; - - temp.v[0].x = DotVec3(a.v[0], b.v[0].x, b.v[1].x, b.v[2].x); - temp.v[0].y = DotVec3(a.v[0], b.v[0].y, b.v[1].y, b.v[2].y); - temp.v[0].z = DotVec3(a.v[0], b.v[0].z, b.v[1].z, b.v[2].z); - - temp.v[1].x = DotVec3(a.v[1], b.v[0].x, b.v[1].x, b.v[2].x); - temp.v[1].y = DotVec3(a.v[1], b.v[0].y, b.v[1].y, b.v[2].y); - temp.v[1].z = DotVec3(a.v[1], b.v[0].z, b.v[1].z, b.v[2].z); - - temp.v[2].x = DotVec3(a.v[2], b.v[0].x, b.v[1].x, b.v[2].x); - temp.v[2].y = DotVec3(a.v[2], b.v[0].y, b.v[1].y, b.v[2].y); - temp.v[2].z = DotVec3(a.v[2], b.v[0].z, b.v[1].z, b.v[2].z); - - SetMat3(r, temp); -} - -//---------------------------------------------------------------------------------------- -slInline Mat3 MulMat3(const Mat3& a, const Mat3& b) -{ - Mat3 r; - - r.v[0].x = DotVec3(a.v[0], b.v[0].x, b.v[1].x, b.v[2].x); - r.v[0].y = DotVec3(a.v[0], b.v[0].y, b.v[1].y, b.v[2].y); - r.v[0].z = DotVec3(a.v[0], b.v[0].z, b.v[1].z, b.v[2].z); - - r.v[1].x = DotVec3(a.v[1], b.v[0].x, b.v[1].x, b.v[2].x); - r.v[1].y = DotVec3(a.v[1], b.v[0].y, b.v[1].y, b.v[2].y); - r.v[1].z = DotVec3(a.v[1], b.v[0].z, b.v[1].z, b.v[2].z); - - r.v[2].x = DotVec3(a.v[2], b.v[0].x, b.v[1].x, b.v[2].x); - r.v[2].y = DotVec3(a.v[2], b.v[0].y, b.v[1].y, b.v[2].y); - r.v[2].z = DotVec3(a.v[2], b.v[0].z, b.v[1].z, b.v[2].z); - - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void MulMat3ByTransposedMat3(Mat3& r, const Mat3& a, const Mat3& b) -{ - Mat3 temp; - - temp.v[0].x = DotVec3(a.v[0], b.v[0]); - temp.v[0].y = DotVec3(a.v[0], b.v[1]); - temp.v[0].z = DotVec3(a.v[0], b.v[2]); - - temp.v[1].x = DotVec3(a.v[1], b.v[0]); - temp.v[1].y = DotVec3(a.v[1], b.v[1]); - temp.v[1].z = DotVec3(a.v[1], b.v[2]); - - temp.v[2].x = DotVec3(a.v[2], b.v[0]); - temp.v[2].y = DotVec3(a.v[2], b.v[1]); - temp.v[2].z = DotVec3(a.v[2], b.v[2]); - - SetMat3(r, temp); -} - -//---------------------------------------------------------------------------------------- -slInline Mat3 MulMat3ByTransposedMat3(const Mat3& a, const Mat3& b) -{ - Mat3 r; - - r.v[0].x = DotVec3(a.v[0], b.v[0]); - r.v[0].y = DotVec3(a.v[0], b.v[1]); - r.v[0].z = DotVec3(a.v[0], b.v[2]); - - r.v[1].x = DotVec3(a.v[1], b.v[0]); - r.v[1].y = DotVec3(a.v[1], b.v[1]); - r.v[1].z = DotVec3(a.v[1], b.v[2]); - - r.v[2].x = DotVec3(a.v[2], b.v[0]); - r.v[2].y = DotVec3(a.v[2], b.v[1]); - r.v[2].z = DotVec3(a.v[2], b.v[2]); - - return r; -} - -//---------------------------------------------------------------------------------------- -// do NOT pass in components of a as the r vector -slInline void MulVec3ByMat3(Vec3& r, const Vec3& v, const Mat3& a) -{ - float x = v.x * a.v[0].x + v.y * a.v[1].x + v.z * a.v[2].x; - float y = v.x * a.v[0].y + v.y * a.v[1].y + v.z * a.v[2].y; - float z = v.x * a.v[0].z + v.y * a.v[1].z + v.z * a.v[2].z; - SetVec3(r, x, y, z); -} - -//---------------------------------------------------------------------------------------- -slInline Vec3 MulVec3ByMat3(const Vec3& v, const Mat3& a) -{ - Vec3 r; - r.x = v.x * a.v[0].x + v.y * a.v[1].x + v.z * a.v[2].x; - r.y = v.x * a.v[0].y + v.y * a.v[1].y + v.z * a.v[2].y; - r.z = v.x * a.v[0].z + v.y * a.v[1].z + v.z * a.v[2].z; - return r; -} - - - -//---------------------------------------------------------------------------------------- -// Mat4 -//---------------------------------------------------------------------------------------- -void SetMat4(Mat4& r, const Mat4& a); -void SetMat4(Mat4& r, const Mat3& a); -void SetMat4(Mat4& r, const Mat3& a, const Vec3& position); - -void ScaleMat4(Mat4& r, const float s, const Mat4& a); -Mat4 ScaleMat4(const float s, const Mat4& a); - -float DeterminantOfMat4(const Mat4& a); - -void TransposeMat4(Mat4& r, const Mat4& a); -Mat4 TransposeMat4(const Mat4& a); - -void InvertAffineMat4(Mat4& r, const Mat4& a); -Mat4 InvertAffineMat4(const Mat4& a); - -void InvertGeneralMat4(Mat4& r, const Mat4& a); -Mat4 InvertGeneralMat4(const Mat4& a); - -void MulMat4(Mat4& r, const Mat4& a, const Mat4& b); -Mat4 MulMat4(const Mat4& a, const Mat4& b); - -void MulMat4ByTransposedMat4(Mat4& r, const Mat4& a, const Mat4& t); -Mat4 MulMat4ByTransposedMat4(const Mat4& a, Mat4& t); - -void MulVec4ByMat4(Vec4& r, const Vec4& v, const Mat4& a); -Vec4 MulVec4ByMat4(const Vec4& v, const Mat4& a); - -void MulVec3ByMat4(Vec4& r, const Vec3& v, const float w, const Mat4& a); -Vec4 MulVec3ByMat4(const Vec3& v, const float w, const Mat4& a); - -void MulVec4ByTransposedMat4(Vec4& r, const Vec4& v, const Mat4& t); -Vec4 MulVec4ByTransposedMat4(const Vec4& v, const Mat4& t); - -void MulVec3ByTransposedMat4(Vec4& r, const Vec3& v, const float w, const Mat4& t); -Vec4 MulVec3ByTransposedMat4(const Vec3& v, const float w, const Mat4& t); - -//---------------------------------------------------------------------------------------- -slInline void SetMat4(Mat4& r, const Mat4& a) -{ - r.v[0] = a.v[0]; - r.v[1] = a.v[1]; - r.v[2] = a.v[2]; - r.v[3] = a.v[3]; -} - -//---------------------------------------------------------------------------------------- -slInline void SetMat4(Mat4& r, const Mat3& a) -{ - SetVec4(r.v[0], a.v[0], 0.0f); - SetVec4(r.v[1], a.v[1], 0.0f); - SetVec4(r.v[2], a.v[2], 0.0f); - SetVec4(r.v[3], 0.0f, 0.0f, 0.0f, 1.0f); -} - -//---------------------------------------------------------------------------------------- -slInline void SetMat4(Mat4& r, const Mat3& a, const Vec3& position) -{ - SetVec4(r.v[0], a.v[0], 0.0f); - SetVec4(r.v[1], a.v[1], 0.0f); - SetVec4(r.v[2], a.v[2], 0.0f); - SetVec4(r.v[3], position, 1.0f); -} - -//---------------------------------------------------------------------------------------- -slInline void ScaleMat4(Mat4& r, const float s, const Mat4& a) -{ - ScaleVec4(r.v[0], s, a.v[0]); - ScaleVec4(r.v[1], s, a.v[1]); - ScaleVec4(r.v[2], s, a.v[2]); - ScaleVec4(r.v[3], s, a.v[3]); -} - -//---------------------------------------------------------------------------------------- -slInline Mat4 ScaleMat4(const float s, const Mat4& a) -{ - Mat4 r; - ScaleVec4(r.v[0], s, a.v[0]); - ScaleVec4(r.v[1], s, a.v[1]); - ScaleVec4(r.v[2], s, a.v[2]); - ScaleVec4(r.v[3], s, a.v[3]); - return r; -} - -//---------------------------------------------------------------------------------------- -slInline float DeterminantOfMat4(const Mat4& a) -{ - // is this correct? - Vec4 cross_product; - CrossVec4(cross_product, a.v[1], a.v[2], a.v[3]); - return DotVec4(a.v[0], cross_product); -} - -//---------------------------------------------------------------------------------------- -slInline void TransposeMat4(Mat4& r, const Mat4& a) -{ - // a might be the same as r - r.v[0].x = a.v[0].x; - r.v[1].y = a.v[1].y; - r.v[2].z = a.v[2].z; - r.v[3].w = a.v[3].w; - - float temp; - temp = r.v[0].y; - r.v[0].y = r.v[1].x; - r.v[1].x = temp; - - temp = r.v[0].z; - r.v[0].z = r.v[2].x; - r.v[2].x = temp; - - temp = r.v[0].w; - r.v[0].w = r.v[3].x; - r.v[3].x = temp; - - temp = r.v[1].z; - r.v[1].z = r.v[2].y; - r.v[2].y = temp; - - temp = r.v[1].w; - r.v[1].w = r.v[3].y; - r.v[3].y = temp; - - temp = r.v[2].w; - r.v[2].w = r.v[3].z; - r.v[3].z = temp; -} - -//---------------------------------------------------------------------------------------- -slInline Mat4 TransposeMat4(const Mat4& a) -{ - Mat4 r; - r.v[0].x = a.v[0].x; r.v[0].y = a.v[1].x; r.v[0].z = a.v[2].x; r.v[0].w = a.v[3].x; - r.v[1].x = a.v[0].y; r.v[1].y = a.v[1].y; r.v[1].z = a.v[2].y; r.v[1].w = a.v[3].y; - r.v[2].x = a.v[0].z; r.v[2].y = a.v[1].z; r.v[2].z = a.v[2].z; r.v[2].w = a.v[3].z; - r.v[3].x = a.v[0].w; r.v[3].y = a.v[1].w; r.v[3].z = a.v[2].w; r.v[3].w = a.v[3].w; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void InvertAffineMat4(Mat4& r, const Mat4& a) -{ - // this may not be correct... - Mat3 a3_T(a.v[0].AsVec3(), a.v[1].AsVec3(), a.v[2].AsVec3()); - InvertAffineMat3(a3_T, a3_T); - - Vec3 transpose; - MulVec3ByMat3(transpose, a.v[3].AsVec3(), a3_T); - - SetMat4(r, a3_T, transpose); -} - -//---------------------------------------------------------------------------------------- -slInline Mat4 InvertAffineMat4(const Mat4& a) -{ - Mat4 r; - - // this may not be correct... - Mat3 a3_T(a.v[0].AsVec3(), a.v[1].AsVec3(), a.v[2].AsVec3()); - InvertAffineMat3(a3_T, a3_T); - - Vec3 transpose; - MulVec3ByMat3(transpose, a.v[3].AsVec3(), a3_T); - - SetMat4(r, a3_T, transpose); - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void InvertGeneralMat4(Mat4& r, const Mat4& a) -{ - // does this work? - float inv_determinant = 1.0f / DeterminantOfMat4(a); - - Mat4 a_T; - TransposeMat4(a_T, a); - CrossVec4(r.v[0], a_T.v[1], a_T.v[2], a_T.v[3]); - CrossVec4(r.v[1], a_T.v[2], a_T.v[3], a_T.v[0]); - CrossVec4(r.v[2], a_T.v[3], a_T.v[0], a_T.v[1]); - CrossVec4(r.v[3], a_T.v[0], a_T.v[1], a_T.v[2]); - - ScaleMat4(r, inv_determinant, r); -} - -//---------------------------------------------------------------------------------------- -slInline Mat4 InvertGeneralMat4(const Mat4& a) -{ - // does this work? - Mat4 r; - float inv_determinant = 1.0f / DeterminantOfMat4(a); - - Mat4 a_T; - TransposeMat4(a_T, a); - r.v[0] = CrossVec4(a_T.v[1], a_T.v[2], a_T.v[3]); - r.v[1] = CrossVec4(a_T.v[2], a_T.v[3], a_T.v[0]); - r.v[2] = CrossVec4(a_T.v[3], a_T.v[0], a_T.v[1]); - r.v[3] = CrossVec4(a_T.v[0], a_T.v[1], a_T.v[2]); - - return ScaleMat4(inv_determinant, r); -} - -//---------------------------------------------------------------------------------------- -slInline void MulMat4(Mat4& r, const Mat4& a, const Mat4& b) -{ - Mat4 temp; - - temp.v[0].x = DotVec4(a.v[0], b.v[0].x, b.v[1].x, b.v[2].x, b.v[3].x); - temp.v[0].y = DotVec4(a.v[0], b.v[0].y, b.v[1].y, b.v[2].y, b.v[3].y); - temp.v[0].z = DotVec4(a.v[0], b.v[0].z, b.v[1].z, b.v[2].z, b.v[3].z); - temp.v[0].w = DotVec4(a.v[0], b.v[0].w, b.v[1].w, b.v[2].w, b.v[3].w); - - temp.v[1].x = DotVec4(a.v[1], b.v[0].x, b.v[1].x, b.v[2].x, b.v[3].x); - temp.v[1].y = DotVec4(a.v[1], b.v[0].y, b.v[1].y, b.v[2].y, b.v[3].y); - temp.v[1].z = DotVec4(a.v[1], b.v[0].z, b.v[1].z, b.v[2].z, b.v[3].z); - temp.v[1].w = DotVec4(a.v[1], b.v[0].w, b.v[1].w, b.v[2].w, b.v[3].w); - - temp.v[2].x = DotVec4(a.v[2], b.v[0].x, b.v[1].x, b.v[2].x, b.v[3].x); - temp.v[2].y = DotVec4(a.v[2], b.v[0].y, b.v[1].y, b.v[2].y, b.v[3].y); - temp.v[2].z = DotVec4(a.v[2], b.v[0].z, b.v[1].z, b.v[2].z, b.v[3].z); - temp.v[2].w = DotVec4(a.v[2], b.v[0].w, b.v[1].w, b.v[2].w, b.v[3].w); - - temp.v[3].x = DotVec4(a.v[3], b.v[0].x, b.v[1].x, b.v[2].x, b.v[3].x); - temp.v[3].y = DotVec4(a.v[3], b.v[0].y, b.v[1].y, b.v[2].y, b.v[3].y); - temp.v[3].z = DotVec4(a.v[3], b.v[0].z, b.v[1].z, b.v[2].z, b.v[3].z); - temp.v[3].w = DotVec4(a.v[3], b.v[0].w, b.v[1].w, b.v[2].w, b.v[3].w); - - SetMat4(r, temp); -} - -//---------------------------------------------------------------------------------------- -slInline Mat4 MulMat4(const Mat4& a, const Mat4& b) -{ - Mat4 r; - - r.v[0].x = DotVec4(a.v[0], b.v[0].x, b.v[1].x, b.v[2].x, b.v[3].x); - r.v[0].y = DotVec4(a.v[0], b.v[0].y, b.v[1].y, b.v[2].y, b.v[3].y); - r.v[0].z = DotVec4(a.v[0], b.v[0].z, b.v[1].z, b.v[2].z, b.v[3].z); - r.v[0].w = DotVec4(a.v[0], b.v[0].w, b.v[1].w, b.v[2].w, b.v[3].w); - - r.v[1].x = DotVec4(a.v[1], b.v[0].x, b.v[1].x, b.v[2].x, b.v[3].x); - r.v[1].y = DotVec4(a.v[1], b.v[0].y, b.v[1].y, b.v[2].y, b.v[3].y); - r.v[1].z = DotVec4(a.v[1], b.v[0].z, b.v[1].z, b.v[2].z, b.v[3].z); - r.v[1].w = DotVec4(a.v[1], b.v[0].w, b.v[1].w, b.v[2].w, b.v[3].w); - - r.v[2].x = DotVec4(a.v[2], b.v[0].x, b.v[1].x, b.v[2].x, b.v[3].x); - r.v[2].y = DotVec4(a.v[2], b.v[0].y, b.v[1].y, b.v[2].y, b.v[3].y); - r.v[2].z = DotVec4(a.v[2], b.v[0].z, b.v[1].z, b.v[2].z, b.v[3].z); - r.v[2].w = DotVec4(a.v[2], b.v[0].w, b.v[1].w, b.v[2].w, b.v[3].w); - - r.v[3].x = DotVec4(a.v[3], b.v[0].x, b.v[1].x, b.v[2].x, b.v[3].x); - r.v[3].y = DotVec4(a.v[3], b.v[0].y, b.v[1].y, b.v[2].y, b.v[3].y); - r.v[3].z = DotVec4(a.v[3], b.v[0].z, b.v[1].z, b.v[2].z, b.v[3].z); - r.v[3].w = DotVec4(a.v[3], b.v[0].w, b.v[1].w, b.v[2].w, b.v[3].w); - - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void MulMat4ByTransposedMat4(Mat4& r, const Mat4& a, const Mat4& t) -{ - Mat4 temp; - - temp.v[0].x = DotVec4(a.v[0], t.v[0]); - temp.v[0].y = DotVec4(a.v[0], t.v[1]); - temp.v[0].z = DotVec4(a.v[0], t.v[2]); - temp.v[0].w = DotVec4(a.v[0], t.v[3]); - - temp.v[1].x = DotVec4(a.v[1], t.v[0]); - temp.v[1].y = DotVec4(a.v[1], t.v[1]); - temp.v[1].z = DotVec4(a.v[1], t.v[2]); - temp.v[1].w = DotVec4(a.v[1], t.v[3]); - - temp.v[2].x = DotVec4(a.v[2], t.v[0]); - temp.v[2].y = DotVec4(a.v[2], t.v[1]); - temp.v[2].z = DotVec4(a.v[2], t.v[2]); - temp.v[2].w = DotVec4(a.v[2], t.v[3]); - - temp.v[3].x = DotVec4(a.v[3], t.v[0]); - temp.v[3].y = DotVec4(a.v[3], t.v[1]); - temp.v[3].z = DotVec4(a.v[3], t.v[2]); - temp.v[3].w = DotVec4(a.v[3], t.v[3]); - - SetMat4(r, temp); -} - -//---------------------------------------------------------------------------------------- -slInline Mat4 MulMat4ByTransposedMat4(const Mat4& a, const Mat4& t) -{ - Mat4 r; - - r.v[0].x = DotVec4(a.v[0], t.v[0]); - r.v[0].y = DotVec4(a.v[0], t.v[1]); - r.v[0].z = DotVec4(a.v[0], t.v[2]); - r.v[0].w = DotVec4(a.v[0], t.v[3]); - - r.v[1].x = DotVec4(a.v[1], t.v[0]); - r.v[1].y = DotVec4(a.v[1], t.v[1]); - r.v[1].z = DotVec4(a.v[1], t.v[2]); - r.v[1].w = DotVec4(a.v[1], t.v[3]); - - r.v[2].x = DotVec4(a.v[2], t.v[0]); - r.v[2].y = DotVec4(a.v[2], t.v[1]); - r.v[2].z = DotVec4(a.v[2], t.v[2]); - r.v[2].w = DotVec4(a.v[2], t.v[3]); - - r.v[3].x = DotVec4(a.v[3], t.v[0]); - r.v[3].y = DotVec4(a.v[3], t.v[1]); - r.v[3].z = DotVec4(a.v[3], t.v[2]); - r.v[3].w = DotVec4(a.v[3], t.v[3]); - - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void MulVec4ByMat4(Vec4& r, const Vec4& v, const Mat4& a) -{ - Vec4 result; - ScaleVec4(result, v.x, a.v[0]); - ScaleAddVec4(result, v.y, a.v[1], result); - ScaleAddVec4(result, v.z, a.v[2], result); - ScaleAddVec4(result, v.w, a.v[3], result); - SetVec4(r, result); -} - -//---------------------------------------------------------------------------------------- -slInline Vec4 MulVec4ByMat4(const Vec4& v, const Mat4& a) -{ - Vec4 r; - ScaleVec4(r, v.x, a.v[0]); - ScaleAddVec4(r, v.y, a.v[1], r); - ScaleAddVec4(r, v.z, a.v[2], r); - ScaleAddVec4(r, v.w, a.v[3], r); - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void MulVec3ByMat4(Vec4& r, const Vec3& v, const float iw, const Mat4& a) -{ - Vec4 result; - ScaleVec4(result, v.x, a.v[0]); - ScaleAddVec4(result, v.y, a.v[1], result); - ScaleAddVec4(result, v.z, a.v[2], result); - ScaleAddVec4(result, iw, a.v[3], result); - SetVec4(r, result); -} - -//---------------------------------------------------------------------------------------- -slInline Vec4 MulVec3ByMat4(const Vec3& v, const float iw, const Mat4& a) -{ - Vec4 r; - ScaleVec4(r, v.x, a.v[0]); - ScaleAddVec4(r, v.y, a.v[1], r); - ScaleAddVec4(r, v.z, a.v[2], r); - ScaleAddVec4(r, iw, a.v[3], r); - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void MulVec4ByTransposedMat4(Vec4& r, const Vec4& v, const Mat4& t) -{ - float x = DotVec4(v, t.v[0]); - float y = DotVec4(v, t.v[1]); - float z = DotVec4(v, t.v[2]); - float w = DotVec4(v, t.v[3]); - SetVec4(r, x, y, z, w); -} - -//---------------------------------------------------------------------------------------- -slInline Vec4 MulVec4ByTransposedMat4(const Vec4& v, const Mat4& t) -{ - Vec4 r; - r.x = DotVec4(v, t.v[0]); - r.y = DotVec4(v, t.v[1]); - r.z = DotVec4(v, t.v[2]); - r.w = DotVec4(v, t.v[3]); - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void MulVec3ByTransposedMat4(Vec4& r, const Vec3& v, const float w, const Mat4& t) -{ - Vec4 v_new(v, w); - MulVec4ByTransposedMat4(r, v_new, t); -} - -//---------------------------------------------------------------------------------------- -slInline Vec4 MulVec3ByTransposedMat4(const Vec3& v, const float w, const Mat4& t) -{ - Vec4 v_as_v4(v, w); - return MulVec4ByTransposedMat4(v_as_v4, t); -} diff --git a/Littlest/Foundation/Math/Quaternion.h b/Littlest/Foundation/Math/Quaternion.h deleted file mode 100755 index d9cce5d..0000000 --- a/Littlest/Foundation/Math/Quaternion.h +++ /dev/null @@ -1,100 +0,0 @@ -#pragma once - -#include "Foundation/Common/GlobalInclude.h" -#include "Foundation/Math/MathTypes.h" -#include "Foundation/Math/Vector.h" - -//---------------------------------------------------------------------------------------- -// Quaternion -//---------------------------------------------------------------------------------------- -void SetQuaternion(Quaternion& r, const float angle, const float x, const float y, const float z); -void SetQuaternion(Quaternion& r, const float angle, const Vec3& rotation_axis); -void ScaleQuaternion(Quaternion& r, const float s, const Quaternion& q); -void MulQuaternion(Quaternion& r, const Quaternion& p, const Quaternion& q); -void ConjugateOfQuaternion(Quaternion& r, const Quaternion& q); -float NormOfQuaternion(const Quaternion& q); -float NormSquaredOfQuaternion(const Quaternion& q); -void NormalizeQuaternion(Quaternion& r, Quaternion& q); -void InverseQuaterion(Quaternion& r, const Quaternion& q); - -//---------------------------------------------------------------------------------------- -void SetQuaternion(Quaternion& r, const float angle, const float x, const float y, const float z) -{ - Assert( EpsilonEquals(x*x + y*y + z*z, 0.0f, kSqrtEpsilon) ); - - float half_angle = angle * 0.5f; - float sin_half_angle = (float)Sinf(half_angle); - - r.i = x * sin_half_angle; - r.j = y * sin_half_angle; - r.k = z * sin_half_angle; - r.s = (float)Cosf(half_angle); -} - -//---------------------------------------------------------------------------------------- -void SetQuaternion(Quaternion& r, const float angle, const Vec3& rotation_axis) -{ - Assert( EpsilonEquals(rotation_axis.x * rotation_axis.x + rotation_axis.y * rotation_axis.y + rotation_axis.z * rotation_axis.z, 0.0f, kSqrtEpsilon) ); - - float half_angle = angle * 0.5f; - float sin_half_angle = (float)Sinf(half_angle); - - r.i = rotation_axis.x * sin_half_angle; - r.j = rotation_axis.y * sin_half_angle; - r.k = rotation_axis.z * sin_half_angle; - r.s = (float)Cosf(half_angle); -} - -//---------------------------------------------------------------------------------------- -void ScaleQuaternion(Quaternion& r, const float s, const Quaternion& q) -{ - r.i = q.i * s; - r.j = q.j * s; - r.k = q.k * s; - r.s = q.s * s; -} - -//---------------------------------------------------------------------------------------- -void MulQuaternion(Quaternion& r, const Quaternion& p, const Quaternion& q) -{ - r.i = p.s * q.i + p.i * q.s + p.j * q.k - p.k * q.j; - r.j = p.s * q.j + p.j * q.s + p.k * q.i - p.i * q.k; - r.k = p.s * q.k + p.k * q.s + p.i * q.j - p.j * q.i; - r.s = p.s * q.s - p.i * q.i - p.j * q.j - p.k * q.k; -} - -//---------------------------------------------------------------------------------------- -void ConjugateOfQuaternion(Quaternion& r, const Quaternion& q) -{ - r.i = -q.i; - r.j = -q.j; - r.k = -q.k; - r.s = q.s; -} - -//---------------------------------------------------------------------------------------- -float NormOfQuaternion(const Quaternion& q) -{ - return (float)Sqrtf( q.i * q.i + q.j * q.j + q.k * q.k + q.s * q.s); -} - -//---------------------------------------------------------------------------------------- -float NormSquaredOfQuaternion(const Quaternion& q) -{ - return q.i * q.i + q.j * q.j + q.k * q.k + q.s * q.s; -} - -//---------------------------------------------------------------------------------------- -void NormalizeQuaternion(Quaternion& r, Quaternion& q) -{ - float norm_scale = 1.0f / NormOfQuaternion( q ); - ScaleQuaternion( r, norm_scale, q ); -} - -//---------------------------------------------------------------------------------------- -void InverseQuaterion(Quaternion& r, const Quaternion& q) -{ - ConjugateOfQuaternion( r, q ); - float inv_norm_squared = 1.0f / NormSquaredOfQuaternion( q ); - ScaleQuaternion( r, inv_norm_squared, q ); -} diff --git a/Littlest/Foundation/Math/Vector.h b/Littlest/Foundation/Math/Vector.h deleted file mode 100755 index 91cc817..0000000 --- a/Littlest/Foundation/Math/Vector.h +++ /dev/null @@ -1,1176 +0,0 @@ -#pragma once - -#include "Foundation/Common/GlobalInclude.h" -#include "Foundation/Math/MathTypes.h" -#include "Foundation/Math/MathOperations.h" - -//---------------------------------------------------------------------------------------- -// Vec2 -//---------------------------------------------------------------------------------------- -void SetVec2(Vec2& r, const Vec2& v); -void SetVec2(Vec2& r, const float x, const float y); -void SetVec2(Vec2& r, const float xy); -void AbsVec2(Vec2& r, const Vec2& v); -float MinComponentVec2(const Vec2& v); -float MaxComponentVec2(const Vec2& v); -uint32_t MinIndexVec2(const Vec2& v); -uint32_t MaxIndexVec2(const Vec2& v); -float DotVec2(const Vec2& a, const Vec2& b); -float DotVec2(const Vec2& a, const float x, const float y); - -void PerpendicularVec2(Vec2& r, const Vec2& v); -Vec2 PerpendicularVec2(const Vec2& v); - -void AddVec2ByScalar(Vec2& r, const float s, const Vec2& v); -Vec2 AddVec2ByScalar(const float s, const Vec2& v); - -void AddVec2(Vec2& r, const Vec2& a, const Vec2& b); -Vec2 AddVec2(const Vec2& a, const Vec2& b); - -void AddVec2(Vec2& r, const Vec2& a, const float x, const float y); -Vec2 AddVec2(const Vec2& a, const float x, const float y); - -void SubVec2(Vec2& r, const Vec2& a, const Vec2& b); -Vec2 SubVec2(const Vec2& a, const Vec2& b); - -void SubVec2(Vec2& r, const Vec2& a, const float x, const float y); -Vec2 SubVec2(const Vec2& a, const float x, const float y); - -void ScaleVec2(Vec2& r, const float s, const Vec2& v); -Vec2 ScaleVec2(const float s, const Vec2& v); - -void MulVec2(Vec2& r, const Vec2& a, const Vec2& b); -Vec2 MulVec2(const Vec2& a, const Vec2& b); - -void MulVec2(Vec2& r, const Vec2& a, const float x, const float y); -Vec2 MulVec2(const Vec2& a, const float x, const float y); - -void DivVec2(Vec2& r, const Vec2& a, const Vec2& b); -Vec2 DivVec2(const Vec2& a, const Vec2& b); - -void DivVec2(Vec2& r, const Vec2& a, const float x, const float y); -Vec2 DivVec2(const Vec2& a, const float x, const float y); - -void ScaleAddVec2(Vec2& r, const float s, const Vec2& v_scale, const Vec2& v_add); -Vec2 ScaleAddVec2(const float s, const Vec2& v_scale, const Vec2& v_add); - -void NormalizeVec2(Vec2& r, const Vec2& a); -Vec2 NormalizeVec2(const Vec2& a); - -float LengthOfVec2(const Vec2& a); -float LengthSquaredOfVec2(const Vec2& a); - -//---------------------------------------------------------------------------------------- -slInline void SetVec2(Vec2& r, const Vec2& v) -{ - r.x = v.x; - r.y = v.y; -} - -//---------------------------------------------------------------------------------------- -slInline void SetVec2(Vec2& r, const float x, const float y) -{ - r.x = x; - r.y = y; -} - -//---------------------------------------------------------------------------------------- -slInline void SetVec2(Vec2& r, const float xy) -{ - r.x = xy; - r.y = xy; -} - -//---------------------------------------------------------------------------------------- -void AbsVec2(Vec2& r, const Vec2& v) -{ - r.x = Absf(v.x); - r.y = Absf(v.y); -} - -//---------------------------------------------------------------------------------------- -float MinComponentVec2(const Vec2& v) -{ - return v.x <= v.y ? v.x : v.y; -} - -//---------------------------------------------------------------------------------------- -float MaxComponentVec2(const Vec2& v) -{ - return v.x >= v.y ? v.x : v.y; -} - -//---------------------------------------------------------------------------------------- -uint32_t MinIndexVec2(const Vec2& v) -{ - return v.x <= v.y ? 0 : 1; -} - -//---------------------------------------------------------------------------------------- -uint32_t MaxIndexVec2(const Vec2& v) -{ - return v.x >= v.y ? 0 : 1; -} - -//---------------------------------------------------------------------------------------- -slInline float DotVec2(const Vec2& a, const Vec2& b) -{ - return a.x * b.x + a.y * b.y; -} - -//---------------------------------------------------------------------------------------- -slInline float DotVec2(const Vec2& a, const float x, const float y) -{ - return a.x * x + a.y * y; -} - -//---------------------------------------------------------------------------------------- -slInline void PerpendicularVec2(Vec2& r, const Vec2& v) -{ - r.x = -v.y; - r.y = v.x; -} - -//---------------------------------------------------------------------------------------- -slInline Vec2 PerpendicularVec2(const Vec2& v) -{ - Vec2 r; - r.x = -v.y; - r.y = v.x; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void AddVec2ByScalar(Vec2& r, const float s, Vec2& v) -{ - r.x = s + v.x; - r.y = s + v.y; -} - -//---------------------------------------------------------------------------------------- -slInline Vec2 AddVec2ByScalar(const float s, const Vec2& v) -{ - Vec2 r; - r.x = s + v.x; - r.y = s + v.y; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void AddVec2(Vec2& r, const Vec2& a, const Vec2& b) -{ - r.x = a.x + b.x; - r.y = a.y + b.y; -} - -//---------------------------------------------------------------------------------------- -slInline Vec2 AddVec2(const Vec2& a, const Vec2& b) -{ - Vec2 r; - r.x = a.x + b.x; - r.y = a.y + b.y; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void AddVec2(Vec2& r, const Vec2& a, const float x, const float y) -{ - r.x = a.x + x; - r.y = a.y + y; -} - -//---------------------------------------------------------------------------------------- -slInline Vec2 AddVec2(const Vec2& a, const float x, const float y) -{ - Vec2 r; - r.x = a.x + x; - r.y = a.y + y; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void SubVec2(Vec2& r, const Vec2& a, const Vec2& b) -{ - r.x = a.x - b.x; - r.y = a.y - b.y; -} - -//---------------------------------------------------------------------------------------- -slInline Vec2 SubVec2(const Vec2& a, const Vec2& b) -{ - Vec2 r; - r.x = a.x - b.x; - r.y = a.y - b.y; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void SubVec2(Vec2& r, const Vec2& a, const float x, const float y) -{ - r.x = a.x - x; - r.y = a.y - y; -} - -//---------------------------------------------------------------------------------------- -slInline Vec2 SubVec2(const Vec2& a, const float x, const float y) -{ - Vec2 r; - r.x = a.x - x; - r.y = a.y - y; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void ScaleVec2(Vec2& r, const float s, const Vec2& v) -{ - r.x = s * v.x; - r.y = s * v.y; -} - -//---------------------------------------------------------------------------------------- -slInline Vec2 ScaleVec2(const float s, const Vec2& v) -{ - Vec2 r; - r.x = s * v.x; - r.y = s * v.y; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void MulVec2(Vec2& r, const Vec2& a, const Vec2& b) -{ - r.x = a.x * b.x; - r.y = a.y * b.y; -} - -//---------------------------------------------------------------------------------------- -slInline Vec2 MulVec2(const Vec2& a, const Vec2& b) -{ - Vec2 r; - r.x = a.x * b.x; - r.y = a.y * b.y; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void MulVec2(Vec2& r, const Vec2& a, const float x, const float y) -{ - r.x = a.x * x; - r.y = a.y * y; -} - -//---------------------------------------------------------------------------------------- -slInline Vec2 MulVec2(const Vec2& a, const float x, const float y) -{ - Vec2 r; - r.x = a.x * x; - r.y = a.y * y; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void DivVec2(Vec2& r, const Vec2& a, const Vec2& b) -{ - r.x = a.x / b.x; - r.y = a.y / b.y; -} - -//---------------------------------------------------------------------------------------- -slInline Vec2 DivVec2(const Vec2& a, const Vec2& b) -{ - Vec2 r; - r.x = a.x / b.x; - r.y = a.y / b.y; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void DivVec2(Vec2& r, const Vec2& a, const float x, const float y) -{ - r.x = a.x / x; - r.y = a.y / y; -} - -//---------------------------------------------------------------------------------------- -slInline Vec2 DivVec2(const Vec2& a, const float x, const float y) -{ - Vec2 r; - r.x = a.x / x; - r.y = a.y / y; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void ScaleAddVec2(Vec2& r, const float s, const Vec2& v_scale, const Vec2& v_add) -{ - r.x = v_scale.x * s + v_add.x; - r.y = v_scale.y * s + v_add.y; -} - -//---------------------------------------------------------------------------------------- -slInline Vec2 ScaleAddVec2(const float s, const Vec2& v_scale, const Vec2& v_add) -{ - Vec2 r; - r.x = v_scale.x * s + v_add.x; - r.y = v_scale.y * s + v_add.y; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void NormalizeVec2(Vec2& r, const Vec2& a) -{ - float scale = 1.0f / LengthOfVec2(a); - ScaleVec2( r, scale, a ); -} - -//---------------------------------------------------------------------------------------- -slInline Vec2 NormalizeVec2(const Vec2& a) -{ - float scale = 1.0f / LengthOfVec2(a); - return ScaleVec2( scale, a ); -} - -//---------------------------------------------------------------------------------------- -slInline float LengthOfVec2(const Vec2& a) -{ - return (float)Sqrtf( DotVec2(a, a) ); -} - -//---------------------------------------------------------------------------------------- -slInline float LengthSquaredOfVec2(const Vec2& a) -{ - return DotVec2(a, a); -} - - - -//---------------------------------------------------------------------------------------- -// Vec3 -//---------------------------------------------------------------------------------------- -void SetVec3(Vec3& r, const Vec3& v); -void SetVec3(Vec3& r, const Vec2& v, const float z); -void SetVec3(Vec3& r, const float xyz); -void SetVec3(Vec3& r, const float x, const float y, const float z); - -void AbsVec3(Vec3& r, const Vec3& v); -Vec3 AbsVec3(const Vec3& v); - -float MinComponentVec3(const Vec3& v); -float MaxComponentVec3(const Vec3& v); -uint32_t MinIndexVec3(const Vec3& v); -uint32_t MaxIndexVec3(const Vec3& v); -float DotVec3(const Vec3& a, const Vec3& b); -float DotVec3(const Vec3& a, const float x, const float y, const float z); - -void CrossVec3(Vec3& r, const Vec3& a, const Vec3& b); -Vec3 CrossVec3(const Vec3& a, const Vec3& b); - -void AddVec3ByScalar(Vec3& r, const float s, Vec3& v); -Vec3 AddVec3ByScalar(const float s, Vec3& v); - -void AddVec3(Vec3& r, const Vec3& a, const Vec3& b); -Vec3 AddVec3(const Vec3& a, const Vec3& b); - -void AddVec3(Vec3& r, const Vec3& a, const float x, const float y, const float z); -Vec3 AddVec3(const Vec3& a, const float x, const float y, const float z); - -void SubVec3(Vec3& r, const Vec3& a, const Vec3& b); -Vec3 SubVec3(const Vec3& a, const Vec3& b); - -void SubVec3(Vec3& r, const Vec3& a, const float x, const float y, const float z); -Vec3 SubVec3(const Vec3& a, const float x, const float y, const float z); - -void ScaleVec3(Vec3& r, const float s, const Vec3& v); -Vec3 ScaleVec3(const float s, const Vec3& v); - -void MulVec3(Vec3& r, const Vec3& a, const Vec3& b); -Vec3 MulVec3(const Vec3& a, const Vec3& b); - -void MulVec3(Vec3& r, const Vec3& a, const float x, const float y, const float z); -Vec3 MulVec3(const Vec3& a, const float x, const float y, const float z); - -void DivVec3(Vec3& r, const Vec3& a, const Vec3& b); -Vec3 DivVec3(const Vec3& a, const Vec3& b); - -void DivVec3(Vec3& r, const Vec3& a, const float x, const float y, const float z); -Vec3 DivVec3(const Vec3& a, const float x, const float y, const float z); - -void ScaleAddVec3(Vec3& r, const float s, const Vec3& v_scale, const Vec3& v_add); -Vec3 ScaleAddVec3(const float s, const Vec3& v_scale, const Vec3& v_add); - -void NormalizeVec3(Vec3& r, const Vec3& a); -Vec3 NormalizeVec3(const Vec3& a); - -float LengthOfVec3(const Vec3& a); -float LengthSquaredVec3(const Vec3& a); - -//---------------------------------------------------------------------------------------- -slInline void SetVec3(Vec3& r, const Vec3& v) -{ - r.x = v.x; - r.y = v.y; - r.z = v.z; -} - -//---------------------------------------------------------------------------------------- -slInline void SetVec3(Vec3& r, const Vec2& v, const float z) -{ - r.x = v.x; - r.y = v.y; - r.z = z; -} - -//---------------------------------------------------------------------------------------- -slInline void SetVec3(Vec3& r, const float xyz) -{ - r.x = xyz; - r.y = xyz; - r.z = xyz; -} - -//---------------------------------------------------------------------------------------- -slInline void SetVec3(Vec3& r, const float x, const float y, const float z) -{ - r.x = x; - r.y = y; - r.z = z; -} - -//---------------------------------------------------------------------------------------- -slInline void AbsVec3(Vec3& r, const Vec3& v) -{ - r.x = Absf(v.x); - r.y = Absf(v.y); - r.z = Absf(v.z); -} - -//---------------------------------------------------------------------------------------- -slInline Vec3 AbsVec3(const Vec3& v) -{ - Vec3 r; - r.x = Absf(v.x); - r.y = Absf(v.y); - r.z = Absf(v.z); - return r; -} - -//---------------------------------------------------------------------------------------- -slInline float MinComponentVec3(const Vec3& v) -{ - float xy = v.x <= v.y ? v.x : v.y; - return xy <= v.z ? xy : v.z; -} - -//---------------------------------------------------------------------------------------- -slInline float MaxComponentVec3(const Vec3& v) -{ - float xy = v.x >= v.y ? v.x : v.y; - return xy >= v.z ? xy : v.z; -} - -//---------------------------------------------------------------------------------------- -slInline uint32_t MinIndexVec3(const Vec3& v) -{ - const float* v_array = &v.x; - uint32_t xy = v.x <= v.y ? 0 : 1; - return v_array[xy] <= v.z ? xy : 2; -} - -//---------------------------------------------------------------------------------------- -slInline uint32_t MaxIndexVec3(const Vec3& v) -{ - const float* v_array = &v.x; - uint32_t xy = v.x >= v.y ? 0 : 1; - return v_array[xy] >= v.z ? xy : 2; -} - -//---------------------------------------------------------------------------------------- -slInline float DotVec3(const Vec3& a, const Vec3& b) -{ - return a.x * b.x + a.y * b.y + a.z * b.z; -} - -//---------------------------------------------------------------------------------------- -slInline float DotVec3(const Vec3& a, const float x, const float y, const float z) -{ - return a.x * x + a.y * y + a.z * z; -} - -//---------------------------------------------------------------------------------------- -slInline void CrossVec3(Vec3& r, const Vec3& a, const Vec3& b) -{ - float x = a.y * b.z - b.y * a.z; - float y = a.z * b.x - b.z * a.x; - float z = a.x * b.y - b.x * a.y; - r.x = x; - r.y = y; - r.z = z; -} - -//---------------------------------------------------------------------------------------- -slInline Vec3 CrossVec3(const Vec3& a, const Vec3& b) -{ - Vec3 r; - r.x = a.y * b.z - b.y * a.z; - r.y = a.z * b.x - b.z * a.x; - r.z = a.x * b.y - b.x * a.y; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void AddVec3ByScalar(Vec3& r, const float s, Vec3& v) -{ - r.x = s + v.x; - r.y = s + v.y; - r.z = s + v.z; -} - -//---------------------------------------------------------------------------------------- -slInline Vec3 AddVec3ByScalar(const float s, Vec3& v) -{ - Vec3 r; - r.x = s + v.x; - r.y = s + v.y; - r.z = s + v.z; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void AddVec3(Vec3& r, const Vec3& a, const Vec3& b) -{ - r.x = a.x + b.x; - r.y = a.y + b.y; - r.z = a.z + b.z; -} - -//---------------------------------------------------------------------------------------- -slInline Vec3 AddVec3(const Vec3& a, const Vec3& b) -{ - Vec3 r; - r.x = a.x + b.x; - r.y = a.y + b.y; - r.z = a.z + b.z; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void AddVec3(Vec3& r, const Vec3& a, const float x, const float y, const float z) -{ - r.x = a.x + x; - r.y = a.y + y; - r.z = a.z + z; -} - -//---------------------------------------------------------------------------------------- -slInline Vec3 AddVec3(const Vec3& a, const float x, const float y, const float z) -{ - Vec3 r; - r.x = a.x + x; - r.y = a.y + y; - r.z = a.z + z; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void SubVec3(Vec3& r, const Vec3& a, const Vec3& b) -{ - r.x = a.x - b.x; - r.y = a.y - b.y; - r.z = a.z - b.z; -} - -//---------------------------------------------------------------------------------------- -slInline Vec3 SubVec3(const Vec3& a, const Vec3& b) -{ - Vec3 r; - r.x = a.x - b.x; - r.y = a.y - b.y; - r.z = a.z - b.z; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline Vec3 SubVec3(const Vec3& a, const float x, const float y, const float z) -{ - Vec3 r; - r.x = a.x - x; - r.y = a.y - y; - r.z = a.z - z; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void ScaleVec3(Vec3& r, const float s, const Vec3& v) -{ - r.x = s * v.x; - r.y = s * v.y; - r.z = s * v.z; -} - -//---------------------------------------------------------------------------------------- -slInline Vec3 ScaleVec3(const float s, const Vec3& v) -{ - Vec3 r; - r.x = s * v.x; - r.y = s * v.y; - r.z = s * v.z; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void MulVec3(Vec3& r, const Vec3& a, const Vec3& b) -{ - r.x = a.x * b.x; - r.y = a.y * b.y; - r.z = a.z * b.z; -} - -//---------------------------------------------------------------------------------------- -slInline Vec3 MulVec3(const Vec3& a, const Vec3& b) -{ - Vec3 r; - r.x = a.x * b.x; - r.y = a.y * b.y; - r.z = a.z * b.z; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void MulVec3(Vec3& r, const Vec3& a, const float x, const float y, const float z) -{ - r.x = a.x * x; - r.y = a.y * y; - r.z = a.z * z; -} - -//---------------------------------------------------------------------------------------- -slInline Vec3 MulVec3(const Vec3& a, const float x, const float y, const float z) -{ - Vec3 r; - r.x = a.x * x; - r.y = a.y * y; - r.z = a.z * z; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void DivVec3(Vec3& r, const Vec3& a, const Vec3& b) -{ - r.x = a.x / b.x; - r.y = a.y / b.y; - r.z = a.z / b.z; -} - -//---------------------------------------------------------------------------------------- -slInline Vec3 DivVec3(const Vec3& a, const Vec3& b) -{ - Vec3 r; - r.x = a.x / b.x; - r.y = a.y / b.y; - r.z = a.z / b.z; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void DivVec3(Vec3& r, const Vec3& a, const float x, const float y, const float z) -{ - r.x = a.x / x; - r.y = a.y / y; - r.z = a.z / z; -} - -//---------------------------------------------------------------------------------------- -slInline Vec3 DivVec3(const Vec3& a, const float x, const float y, const float z) -{ - Vec3 r; - r.x = a.x / x; - r.y = a.y / y; - r.z = a.z / z; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void ScaleAddVec3(Vec3& r, const float s, const Vec3& v_scale, const Vec3& v_add) -{ - r.x = s * v_scale.x + v_add.x; - r.y = s * v_scale.y + v_add.y; - r.z = s * v_scale.z + v_add.z; -} - -//---------------------------------------------------------------------------------------- -slInline Vec3 ScaleAddVec3(const float s, const Vec3& v_scale, const Vec3& v_add) -{ - Vec3 r; - r.x = s * v_scale.x + v_add.x; - r.y = s * v_scale.y + v_add.y; - r.z = s * v_scale.z + v_add.z; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void NormalizeVec3(Vec3& r, const Vec3& a) -{ - float scale = 1.0f / LengthOfVec3( a ); - ScaleVec3( r, scale, a ); -} - -//---------------------------------------------------------------------------------------- -slInline Vec3 NormalizeVec3(const Vec3& a) -{ - float scale = 1.0f / LengthOfVec3( a ); - return ScaleVec3( scale, a ); -} - -//---------------------------------------------------------------------------------------- -slInline float LengthOfVec3(const Vec3& a) -{ - return (float)Sqrtf( DotVec3(a, a) ); -} - -//---------------------------------------------------------------------------------------- -slInline float LengthSquaredOfVec3(const Vec3& a) -{ - return DotVec3( a, a ); -} - - - -//---------------------------------------------------------------------------------------- -// Vec4 -//---------------------------------------------------------------------------------------- -void SetVec4(Vec4& r, const Vec4& v); -void SetVec4(Vec4& r, const Vec2& a, const Vec2& b); -void SetVec4(Vec4& r, const Vec3& v, const float w); -void SetVec4(Vec4& r, const float xyzw); -void SetVec4(Vec4& r, const float x, const float y, const float z, const float w); - -void AbsVec4(Vec4& r, const Vec4& v); -Vec4 AbsVec4(const Vec4& v); - -float MinComponentVec4(const Vec4& v); -float MaxComponentVec4(const Vec4& v); -uint32_t MinIndexVec4(const Vec4& v); -uint32_t MaxIndexVec4(const Vec4& v); -float DotVec4(const Vec4& a, const Vec4& b); -float DotVec4(const Vec4& a, const float x, const float y, const float z, const float w); - -void CrossVec4(Vec4& r, const Vec4& a, const Vec4& b, const Vec4& c); -Vec4 CrossVec4(const Vec4& a, const Vec4& b, const Vec4& c); - -void AddVec4ByScalar(Vec4& r, const float s, Vec4& v); -Vec4 AddVec4ByScalar(const float s, Vec4& v); - -void AddVec4(Vec4& r, const Vec4& a, const Vec4& b); -Vec4 AddVec4(const Vec4& a, const Vec4& b); - -void AddVec4(Vec4& r, const Vec4& a, const float x, const float y, const float z, const float w); -Vec4 AddVec4(const Vec4& a, const float x, const float y, const float z, const float w); - -void SubVec4(Vec4& r, const Vec4& a, const Vec4& b); -Vec4 SubVec4(const Vec4& a, const Vec4& b); - -void SubVec4(Vec4& r, const Vec4& a, const float x, const float y, const float z, const float w); -Vec4 SubVec4(const Vec4& a, const float x, const float y, const float z, const float w); - -void ScaleVec4(Vec4& r, const float s, const Vec4& v); -Vec4 ScaleVec4(const float s, const Vec4& v); - -void MulVec4(Vec4& r, const Vec4& a, const Vec4& b); -Vec4 MulVec4(const Vec4& a, const Vec4& b); - -void MulVec4(Vec4& r, const Vec4& a, const float x, const float y, const float z, const float w); -Vec4 MulVec4(const Vec4& a, const float x, const float y, const float z, const float w); - -void DivVec4(Vec4& r, const Vec4& a, const Vec4& b); -Vec4 DivVec4(const Vec4& a, const Vec4& b); - -void DivVec4(Vec4& r, const Vec4& a, const float x, const float y, const float z, const float w); -Vec4 DivVec4(const Vec4& a, const float x, const float y, const float z, const float w); - -void ScaleAddVec4(Vec4& r, const float s, const Vec4& v_scale, const Vec4& v_add); -Vec4 ScaleAddVec4(const float s, const Vec4& v_scale, const Vec4& v_add); - -void NormalizeVec4(Vec4& r, const Vec4& a); -Vec4 NormalizeVec4(const Vec4& a); - -float LengthOfVec4(const Vec4& a); -float LengthSquaredVec4(const Vec4& a); - -//---------------------------------------------------------------------------------------- -slInline void SetVec4(Vec4& r, const Vec4& v) -{ - r.x = v.x; - r.y = v.y; - r.z = v.z; - r.w = v.w; -} - -//---------------------------------------------------------------------------------------- -slInline void SetVec4(Vec4& r, const Vec2& a, const Vec2& b) -{ - r.x = a.x; - r.y = a.y; - r.z = b.x; - r.w = b.y; -} - -//---------------------------------------------------------------------------------------- -slInline void SetVec4(Vec4& r, const Vec3& v, const float w) -{ - r.x = v.x; - r.y = v.y; - r.z = v.z; - r.w = w; -} - -//---------------------------------------------------------------------------------------- -slInline void SetVec4(Vec4& r, const float xyzw) -{ - r.x = xyzw; - r.y = xyzw; - r.z = xyzw; - r.w = xyzw; -} - -//---------------------------------------------------------------------------------------- -slInline void SetVec4(Vec4& r, const float x, const float y, const float z, const float w) -{ - r.x = x; - r.y = y; - r.z = z; - r.w = w; -} - -//---------------------------------------------------------------------------------------- -slInline void AbsVec4(Vec4& r, const Vec4& v) -{ - r.x = Absf(v.x); - r.y = Absf(v.y); - r.z = Absf(v.z); - r.w = Absf(v.w); -} - -//---------------------------------------------------------------------------------------- -slInline Vec4 AbsVec4(const Vec4& v) -{ - Vec4 r; - r.x = Absf(v.x); - r.y = Absf(v.y); - r.z = Absf(v.z); - r.w = Absf(v.w); - return r; -} - -//---------------------------------------------------------------------------------------- -slInline float MinComponentVec4(const Vec4& v) -{ - float xy = v.x <= v.y ? v.x : v.y; - float zw = v.z <= v.w ? v.z : v.w; - return xy <= zw ? xy : zw; -} - -//---------------------------------------------------------------------------------------- -slInline float MaxComponentVec4(const Vec4& v) -{ - float xy = v.x >= v.y ? v.x : v.y; - float zw = v.z >= v.w ? v.z : v.w; - return xy >= zw ? xy : zw; -} - -//---------------------------------------------------------------------------------------- -slInline uint32_t MinIndexVec4(const Vec4& v) -{ - const float* v_array = &v.x; - uint32_t xy = v.x <= v.y ? 0 : 1; - uint32_t zw = v.x <= v.y ? 2 : 3; - return v_array[xy] <= v_array[zw] ? xy : zw; -} - -//---------------------------------------------------------------------------------------- -slInline uint32_t MaxIndexVec4(const Vec4& v) -{ - const float* v_array = &v.x; - uint32_t xy = v.x >= v.y ? 0 : 1; - uint32_t zw = v.x >= v.y ? 2 : 3; - return v_array[xy] >= v_array[zw] ? xy : zw; -} - -//---------------------------------------------------------------------------------------- -slInline float DotVec4(const Vec4& a, const Vec4& b) -{ - return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w; -} - -//---------------------------------------------------------------------------------------- -slInline float DotVec4(const Vec4& a, const float x, const float y, const float z, const float w) -{ - return a.x * x + a.y * y + a.z * z + a.w * w; -} - -//---------------------------------------------------------------------------------------- -slInline void CrossVec4(Vec4& r, const Vec4& a, const Vec4& b, const Vec4& c) -{ - // is this right? - r.x = a.y * (b.z * c.w - b.w * c.z) - a.z * (b.y * c.w - c.y * b.w) + a.w * (b.y * c.z - b.z * c.y); - r.y = -a.x * (b.z * c.w - b.w * c.z) + a.z * (b.x * c.w - c.x * b.w) - a.w * (b.x * c.z - b.z * c.x); - r.z = a.x * (b.y * c.w - b.w * c.y) - a.y * (b.x * c.w - c.x * b.w) + a.w * (b.x * c.y - b.y * c.x); - r.w = -a.x * (b.y * c.z - b.z * c.y) + a.y * (b.x * c.z - b.z * c.x) - a.z * (b.x * c.y - b.y * c.x); -} - -//---------------------------------------------------------------------------------------- -slInline Vec4 CrossVec4(const Vec4& a, const Vec4& b, const Vec4& c) -{ - Vec4 r; - // is this right? - r.x = a.y * (b.z * c.w - b.w * c.z) - a.z * (b.y * c.w - c.y * b.w) + a.w * (b.y * c.z - b.z * c.y); - r.y = -a.x * (b.z * c.w - b.w * c.z) + a.z * (b.x * c.w - c.x * b.w) - a.w * (b.x * c.z - b.z * c.x); - r.z = a.x * (b.y * c.w - b.w * c.y) - a.y * (b.x * c.w - c.x * b.w) + a.w * (b.x * c.y - b.y * c.x); - r.w = -a.x * (b.y * c.z - b.z * c.y) + a.y * (b.x * c.z - b.z * c.x) - a.z * (b.x * c.y - b.y * c.x); - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void AddVec4ByScalar(Vec4& r, const float s, Vec4& v) -{ - r.x = s * v.x; - r.y = s * v.y; - r.z = s * v.z; - r.w = s * v.w; -} - -//---------------------------------------------------------------------------------------- -slInline Vec4 AddVec4ByScalar(const float s, Vec4& v) -{ - Vec4 r; - r.x = s * v.x; - r.y = s * v.y; - r.z = s * v.z; - r.w = s * v.w; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void AddVec4(Vec4& r, const Vec4& a, const Vec4& b) -{ - r.x = a.x + b.x; - r.y = a.y + b.y; - r.z = a.z + b.z; - r.w = a.w + b.w; -} - -//---------------------------------------------------------------------------------------- -slInline Vec4 AddVec4(const Vec4& a, const Vec4& b) -{ - Vec4 r; - r.x = a.x + b.x; - r.y = a.y + b.y; - r.z = a.z + b.z; - r.w = a.w + b.w; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void AddVec4(Vec4& r, const Vec4& a, const float x, const float y, const float z, const float w) -{ - r.x = a.x + x; - r.y = a.y + y; - r.z = a.z + z; - r.w = a.w + w; -} - -//---------------------------------------------------------------------------------------- -slInline Vec4 AddVec4(const Vec4& a, const float x, const float y, const float z, const float w) -{ - Vec4 r; - r.x = a.x + x; - r.y = a.y + y; - r.z = a.z + z; - r.w = a.w + w; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void SubVec4(Vec4& r, const Vec4& a, const Vec4& b) -{ - r.x = a.x - b.x; - r.y = a.y - b.y; - r.z = a.z - b.z; - r.w = a.w - b.w; -} - -//---------------------------------------------------------------------------------------- -slInline Vec4 SubVec4(const Vec4& a, const Vec4& b) -{ - Vec4 r; - r.x = a.x - b.x; - r.y = a.y - b.y; - r.z = a.z - b.z; - r.w = a.w - b.w; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void SubVec4(Vec4& r, const Vec4& a, const float x, const float y, const float z, const float w) -{ - r.x = a.x - x; - r.y = a.y - y; - r.z = a.z - z; - r.w = a.w - w; -} - -//---------------------------------------------------------------------------------------- -slInline Vec4 SubVec4(const Vec4& a, const float x, const float y, const float z, const float w) -{ - Vec4 r; - r.x = a.x - x; - r.y = a.y - y; - r.z = a.z - z; - r.w = a.w - w; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void ScaleVec4(Vec4& r, const float s, const Vec4& v) -{ - r.x = s * v.x; - r.y = s * v.y; - r.z = s * v.z; - r.w = s * v.w; -} - -//---------------------------------------------------------------------------------------- -slInline Vec4 ScaleVec4(const float s, const Vec4& v) -{ - Vec4 r; - r.x = s * v.x; - r.y = s * v.y; - r.z = s * v.z; - r.w = s * v.w; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void MulVec4(Vec4& r, const Vec4& a, const Vec4& b) -{ - r.x = a.x * b.x; - r.y = a.y * b.y; - r.z = a.z * b.z; - r.w = a.w * b.w; -} - -//---------------------------------------------------------------------------------------- -slInline Vec4 MulVec4(const Vec4& a, const Vec4& b) -{ - Vec4 r; - r.x = a.x * b.x; - r.y = a.y * b.y; - r.z = a.z * b.z; - r.w = a.w * b.w; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void MulVec4(Vec4& r, const Vec4& a, const float x, const float y, const float z, const float w) -{ - r.x = a.x * x; - r.y = a.y * y; - r.z = a.z * z; - r.w = a.w * w; -} - -//---------------------------------------------------------------------------------------- -slInline Vec4 MulVec4(const Vec4& a, const float x, const float y, const float z, const float w) -{ - Vec4 r; - r.x = a.x * x; - r.y = a.y * y; - r.z = a.z * z; - r.w = a.w * w; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void DivVec4(Vec4& r, const Vec4& a, const Vec4& b) -{ - r.x = a.x / b.x; - r.y = a.y / b.y; - r.z = a.z / b.z; - r.w = a.w / b.w; -} - -//---------------------------------------------------------------------------------------- -slInline Vec4 DivVec4(const Vec4& a, const Vec4& b) -{ - Vec4 r; - r.x = a.x / b.x; - r.y = a.y / b.y; - r.z = a.z / b.z; - r.w = a.w / b.w; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void DivVec4(Vec4& r, const Vec4& a, const float x, const float y, const float z, const float w) -{ - r.x = a.x / x; - r.y = a.y / y; - r.z = a.z / z; - r.w = a.w / w; -} - -//---------------------------------------------------------------------------------------- -slInline Vec4 DivVec4(const Vec4& a, const float x, const float y, const float z, const float w) -{ - Vec4 r; - r.x = a.x / x; - r.y = a.y / y; - r.z = a.z / z; - r.w = a.w / w; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void ScaleAddVec4(Vec4& r, const float s, const Vec4& v_scale, const Vec4& v_add) -{ - r.x = s * v_scale.x + v_add.x; - r.y = s * v_scale.y + v_add.y; - r.z = s * v_scale.z + v_add.z; - r.w = s * v_scale.w + v_add.w; -} - -//---------------------------------------------------------------------------------------- -slInline Vec4 ScaleAddVec4(const float s, const Vec4& v_scale, const Vec4& v_add) -{ - Vec4 r; - r.x = s * v_scale.x + v_add.x; - r.y = s * v_scale.y + v_add.y; - r.z = s * v_scale.z + v_add.z; - r.w = s * v_scale.w + v_add.w; - return r; -} - -//---------------------------------------------------------------------------------------- -slInline void NormalizeVec4(Vec4& r, const Vec4& a) -{ - float scale = 1.0f / LengthOfVec4( a ); - ScaleVec4( r, scale, a ); -} - -//---------------------------------------------------------------------------------------- -slInline Vec4 NormalizeVec4(const Vec4& a) -{ - float scale = 1.0f / LengthOfVec4( a ); - return ScaleVec4( scale, a ); -} - -//---------------------------------------------------------------------------------------- -slInline float LengthOfVec4(const Vec4& a) -{ - return (float)Sqrtf( DotVec4(a, a) ); -} - -//---------------------------------------------------------------------------------------- -slInline float LengthSquaredOfVec4(const Vec4& a) -{ - return DotVec4( a, a ); -} diff --git a/Littlest/Foundation/Memory/MemoryBitset.cpp b/Littlest/Foundation/Memory/MemoryBitset.cpp deleted file mode 100755 index c832cc8..0000000 --- a/Littlest/Foundation/Memory/MemoryBitset.cpp +++ /dev/null @@ -1,316 +0,0 @@ -#include "MemoryBitset.h" - -//---------------------------------------------------------------------------------------- -int32_t MemoryBitset::FindLowestUnused(int32_t start_search_index) -{ - int32_t top_index = start_search_index / 4096; - uint64_t* top_pointer = m_TopBits + top_index; - int32_t top_offset = (start_search_index - top_index * 4096) / 64; - uint64_t first_top_mask = ~(0xffffffffffffffffULL << top_offset); - - // handling the starting case - if ((*top_pointer | first_top_mask) != 0xffffffffffffffffULL) - { - uint64_t valid_top_bits = (*top_pointer | first_top_mask); - uint64_t top_unused_bits = ~valid_top_bits; - uint64_t right_most_top_bit = RightMostEnabledBit(top_unused_bits); - int32_t bottom_index = top_index * 64 + 64 - LZCount(right_most_top_bit); - uint64_t bottom_bits = m_BottomBits[bottom_index]; - - if (start_search_index > bottom_index * 64) - { - // construct the mask for the valid bits - int32_t bottom_offset = start_search_index - bottom_index * 64; - uint64_t first_bottom_mask = ~(0xffffffffffffffffULL << bottom_offset); - bottom_bits |= first_bottom_mask; - } - - uint64_t bottom_unused_bits = ~bottom_bits; - uint64_t right_most_bottom_unused_bit = RightMostEnabledBit(bottom_unused_bits); - int32_t final_index = bottom_index * 64 + 64 - LZCount(right_most_bottom_unused_bit); - return final_index < m_MaxCount ? final_index : INVALID_INDEX; - } - - // guess the first dereference didn't get us anything - top_pointer++; - top_index++; - - // skip over all top bits that're fully allocated - while (*top_pointer == 0xffffffffffffffffULL && top_pointer <= m_MaxTopPointer) - { - top_pointer++; - top_index++; - } - - if (top_pointer > m_MaxTopPointer) - { - return INVALID_INDEX; - } - - uint64_t right_most_top_unused_bit = RightMostEnabledBit(~*top_pointer); - int32_t bottom_index = top_index * 64 + 64 - LZCount(right_most_top_unused_bit); - uint64_t* bottom_pointer = m_BottomBits + bottom_index; - - // skip over all bottom bits that're fully allocated - while (*bottom_pointer == 0xffffffffffffffffULL && bottom_pointer <= m_MaxBottomPointer) - { - bottom_pointer++; - bottom_index++; - } - - // make sure we didn't overflow - if (bottom_pointer > m_MaxBottomPointer) - { - return INVALID_INDEX; - } - - uint64_t right_most_bottom_unused_bit = RightMostEnabledBit(~*bottom_pointer); - int32_t final_index = bottom_index * 64 + 64 - LZCount(right_most_bottom_unused_bit); - - // make sure we didn't overflow - if (final_index >= m_MaxCount) - { - return INVALID_INDEX; - } - - return final_index; -} - -//---------------------------------------------------------------------------------------- -int32_t MemoryBitset::FindLowestUnused() -{ - int32_t top_index = 0; - uint64_t* top_pointer = m_TopBits; - - // skip over all top bits that're fully allocated - while (*top_pointer == 0xffffffffffffffffULL && top_pointer <= m_MaxTopPointer) - { - top_pointer++; - top_index++; - } - - uint64_t right_most_top_unused_bit = RightMostEnabledBit(~*top_pointer); - int32_t bottom_index = top_index * 64 + 64 - LZCount(right_most_top_unused_bit); - uint64_t* bottom_pointer = m_BottomBits + bottom_index; - - // skip over all bottom bits that're fully allocated - while (*bottom_pointer == 0xffffffffffffffffULL && bottom_pointer <= m_MaxBottomPointer) - { - bottom_pointer++; - bottom_index++; - } - - uint64_t right_most_bottom_unused_bit = RightMostEnabledBit(~*bottom_pointer); - int32_t final_index = bottom_index * 64 + 64 - LZCount(right_most_bottom_unused_bit); - - return final_index; -} - -//---------------------------------------------------------------------------------------- -int32_t MemoryBitset::FindHighestInUse(int32_t start_search_index) -{ - if (start_search_index < 0 || start_search_index >= m_MaxCount) - { - return INVALID_INDEX; - } - - int32_t bottom_index = start_search_index / 64; - uint64_t* bottom_pointer = m_BottomBits + bottom_index; - int32_t bottom_offset = start_search_index - bottom_index * 64; - uint64_t bottom_used_bits = *bottom_pointer & (0x1ULL << bottom_offset); - - while (bottom_used_bits == 0ULL && bottom_pointer >= m_BottomBits) - { - bottom_index--; - bottom_pointer--; - bottom_used_bits = *bottom_pointer; - } - - if (bottom_pointer < m_BottomBits) - { - return INVALID_INDEX; - } - - return bottom_index * 64 + 63 - LZCount(RightMostEnabledBit(*bottom_pointer)); -} - -//---------------------------------------------------------------------------------------- -int32_t MemoryBitset::FindHighestInUse() -{ - int32_t bottom_index = m_MaxCount / 64; - uint64_t* bottom_pointer = m_BottomBits + bottom_index; - int32_t bottom_offset = m_MaxCount - bottom_index * 64; - uint64_t bottom_used_bits = *bottom_pointer & (0x1ULL << bottom_offset); - - while (bottom_used_bits == 0ULL && bottom_pointer >= m_BottomBits) - { - bottom_index--; - bottom_pointer--; - bottom_used_bits = *bottom_pointer; - } - - if (bottom_pointer < m_BottomBits) - { - return INVALID_INDEX; - } - - return bottom_index * 64 + 63 - LZCount(RightMostEnabledBit(*bottom_pointer)); -} - -//---------------------------------------------------------------------------------------- -void MemoryBitset::GetSizesNeeded(uint32_t& top_size, uint32_t& bottom_size, int32_t entry_count) -{ - Assert(entry_count > 0); - - uint32_t aligned_4096_count = ALIGN_UP(entry_count, 4096); - top_size = aligned_4096_count / 512; - - uint32_t aligned_64_count = ALIGN_UP(entry_count, 64); - bottom_size = aligned_64_count / 8; -} - -//---------------------------------------------------------------------------------------- -bool MemoryBitset::Init(uint64_t* top_bits, uint64_t* bottom_bits, int32_t entry_count) -{ - Assert(entry_count > 0); - - m_TopBits = top_bits; - m_BottomBits = bottom_bits; - m_MaxCount = entry_count; - m_MaxTopPointer = m_TopBits + ALIGN_UP(m_MaxCount, 4096) / 4096; - m_MaxBottomPointer = m_BottomBits + ALIGN_UP(m_MaxCount, 64) / 64; - m_IndicesInUse = 0; - m_LowestUnused = 0; - m_HighestInUse = INVALID_INDEX; - - memset(m_BottomBits, 0, ALIGN_UP(m_MaxCount, 64) / 8); - memset(m_TopBits, 0, ALIGN_UP(m_MaxCount, 4096) / 512); - - return true; -} - -//---------------------------------------------------------------------------------------- -void MemoryBitset::Reset() -{ - m_IndicesInUse = 0; - m_LowestUnused = 0; - m_HighestInUse = -1; - - memset(m_BottomBits, 0, ALIGN_UP(m_MaxCount, 64) / 8); - memset(m_TopBits, 0, ALIGN_UP(m_MaxCount, 4096) / 512); -} - -//---------------------------------------------------------------------------------------- -void MemoryBitset::Destroy() -{ - m_TopBits = NULL; - m_BottomBits = NULL; - m_MaxTopPointer = NULL; - m_MaxBottomPointer = NULL; - m_MaxCount = 0; - m_IndicesInUse = 0; - m_LowestUnused = 0; - m_HighestInUse = -1; -} - -//---------------------------------------------------------------------------------------- -int32_t MemoryBitset::AllocateIndex() -{ - if (m_IndicesInUse == m_MaxCount) - { - return -1; - } - - int32_t return_index = m_LowestUnused; - - int32_t bottom_index = m_LowestUnused / 64; - int32_t bottom_offset = m_LowestUnused - bottom_index; - m_BottomBits[bottom_index] |= (0x1ULL << bottom_offset); - - if (m_BottomBits[bottom_index] = 0xffffffffffffffffULL) - { - int32_t top_index = m_LowestUnused / 4096; - int32_t top_offset = m_LowestUnused - top_index; - m_TopBits[top_index] |= (0x1ULL << top_offset); - } - - if ((uint32_t)(m_HighestInUse + 1) == m_IndicesInUse) - { - m_HighestInUse++; - m_LowestUnused++; - m_IndicesInUse++; - } - else - { - m_IndicesInUse++; - m_LowestUnused = m_IndicesInUse == m_MaxCount ? m_MaxCount : FindLowestUnused(m_LowestUnused); - } - - return return_index; -} - -//---------------------------------------------------------------------------------------- -bool MemoryBitset::AllocateSpecificIndex(int32_t index) -{ - uint32_t bottom_index = index / 64; - uint32_t bottom_offset = index - bottom_index; - uint64_t bottom_mask = (0x1ULL << bottom_offset); - - if (m_IndicesInUse == m_MaxCount || index >= m_MaxCount || (m_BottomBits[bottom_index] & bottom_mask)) - { - return false; - } - - m_BottomBits[bottom_index] |= bottom_mask; - - if (m_BottomBits[bottom_index] == 0xffffffffffffffffULL) - { - uint32_t top_index = index / 4096; - uint32_t top_offset = index - top_index; - uint64_t top_mask = (0x1ULL << top_offset); - m_TopBits[top_index] |= top_mask; - } - - m_IndicesInUse++; - - if (index > m_HighestInUse) - { - m_HighestInUse = index; - } - - if (index == m_LowestUnused) - { - m_LowestUnused = (m_IndicesInUse == m_MaxCount) ? m_MaxCount : FindLowestUnused(m_LowestUnused + 1); - } - - return true; -} - -//---------------------------------------------------------------------------------------- -void MemoryBitset::FreeIndex(int32_t index) -{ - uint32_t bottom_index = index / 64; - uint32_t bottom_offset = index - bottom_index; - uint64_t bottom_mask = (0x1ULL << bottom_offset); - - if (m_IndicesInUse == 0 || index >= m_MaxCount || !(m_BottomBits[bottom_index] & bottom_mask)) - { - return; - } - - if (m_BottomBits[bottom_index] == 0xffffffffffffffffULL) - { - uint32_t top_index = index / 4096; - uint32_t top_offset = index - top_index; - uint64_t top_mask = (0x1ULL << top_offset); - m_TopBits[top_index] &= ~top_mask; - } - - m_BottomBits[bottom_index] &= ~bottom_mask; - m_IndicesInUse--; - m_LowestUnused = index < m_LowestUnused ? index : m_LowestUnused; - if (m_HighestInUse == index) - { - m_HighestInUse = FindHighestInUse(index - 1); - } -} diff --git a/Littlest/Foundation/Memory/MemoryBitset.h b/Littlest/Foundation/Memory/MemoryBitset.h deleted file mode 100755 index 1e929f7..0000000 --- a/Littlest/Foundation/Memory/MemoryBitset.h +++ /dev/null @@ -1,49 +0,0 @@ -#pragma once - -#include "Foundation/Common/GlobalInclude.h" - -//---------------------------------------------------------------------------------------- -class MemoryBitset -{ -private: - uint64_t* m_TopBits; - uint64_t* m_BottomBits; - - uint64_t* m_MaxTopPointer; - uint64_t* m_MaxBottomPointer; - - int32_t m_MaxCount; - int32_t m_IndicesInUse; - int32_t m_LowestUnused; - int32_t m_HighestInUse; - - int32_t FindLowestUnused(int32_t start_search_index); // finds upwards to m_MaxCount - int32_t FindLowestUnused(); // finds upwards to m_MaxCount - int32_t FindHighestInUse(int32_t start_search_index); // finds downwards to 0 - int32_t FindHighestInUse(); // finds downwards to 0 - -public: - static const int32_t INVALID_INDEX = -1; - - static void GetSizesNeeded(uint32_t& top_size, uint32_t& bottom_size, int32_t entry_count); - - bool Init(uint64_t* top_bits, uint64_t* bottom_bits, int32_t entry_count); - void Reset(); - void Destroy(); - - int32_t AllocateIndex(); - bool AllocateSpecificIndex(int32_t index); - void FreeIndex(int32_t index); - - bool IsIndexAllocated(int32_t index); - int32_t GetAllocatedCount() {return m_IndicesInUse;} - int32_t GetHighestIndexInUse() {return m_HighestInUse;} -}; - -//---------------------------------------------------------------------------------------- -inline bool MemoryBitset::IsIndexAllocated(int32_t index) -{ - uint32_t bottom_index = index / 64; - uint32_t bottom_offset = index - bottom_index; - return (m_BottomBits[bottom_index] & (0x1ULL << bottom_offset)) > 0; -} diff --git a/Littlest/Foundation/Memory/MemoryHeap.cpp b/Littlest/Foundation/Memory/MemoryHeap.cpp deleted file mode 100755 index 82c87fd..0000000 --- a/Littlest/Foundation/Memory/MemoryHeap.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include "MemoryHeap.h" - -//---------------------------------------------------------------------------------------- -bool MemoryHeap::Init(void* base, size_t size) -{ - Assert(0); - if (size <= sizeof(FreeRecordInPage)) - { - return false; - } - - uint64_t base_address = ALIGN_UP( (uint64_t)base, sizeof(FreeRecordInPage) ); - m_Base = (uint8_t*)base_address; - m_Size = size; - - return true; -} - -//---------------------------------------------------------------------------------------- -void MemoryHeap::Destroy() -{ -} - -//---------------------------------------------------------------------------------------- -void* MemoryHeap::Allocate(uint32_t size, uint32_t alignment) -{ - return NULL; -} - -//---------------------------------------------------------------------------------------- -void MemoryHeap::Free(void* address) -{ -} diff --git a/Littlest/Foundation/Memory/MemoryHeap.h b/Littlest/Foundation/Memory/MemoryHeap.h deleted file mode 100755 index 4eab6e3..0000000 --- a/Littlest/Foundation/Memory/MemoryHeap.h +++ /dev/null @@ -1,41 +0,0 @@ -#pragma once - -#include "Foundation/Common/GlobalInclude.h" - -class MemoryHeap -{ -private: - class MemoryBlock - { - static const uint32_t s_Sentinel = 0xdeadbeef; - - uint32_t m_BlockSize; - }; - -#if defined(__WINDOWS__) - static const uint32_t s_PageSize = 4096; -#elif defined(__ARM__) - static const uint32_t s_PageSize = 4096; -#elif defined(__X86__) && defined(__iOS__) - static const uint32_t s_PageSize = 4096; -#else -#error NEED TO SPECIFY THIS! -#endif - - struct FreeRecordInPage - { - uint32_t m_FreeBlockSize; - uint32_t m_NextFreeOffset; - }; - - size_t m_Size; - uint8_t* m_Base; - - uint32_t m_PageCount; - - bool Init(void* base, size_t size); - void Destroy(); - - void* Allocate(uint32_t size, uint32_t alignment); - void Free(void* address); -}; diff --git a/Littlest/Foundation/Memory/MemoryLinear.h b/Littlest/Foundation/Memory/MemoryLinear.h deleted file mode 100755 index 5b6cc09..0000000 --- a/Littlest/Foundation/Memory/MemoryLinear.h +++ /dev/null @@ -1,110 +0,0 @@ -#pragma once - -#include "Foundation/Common/GlobalInclude.h" -#include "MemoryHeap.h" - -//---------------------------------------------------------------------------------------- -class MemoryLinear -{ -private: - MemoryHeap* m_Heap; - uint8_t* m_Base; - uint32_t m_Size; - uint32_t m_Offset; - uint32_t m_OffsetTop; - -public: - bool Init(MemoryHeap* heap, uint32_t size, uint32_t alignment = 1); - void Destroy(); - - void* Allocate(uint32_t size, uint32_t alignment = 1); - void* AllocateTop(uint32_t size, uint32_t alignment = 1); - - uint32_t GetCurrentOffset(); - void RollBackOffset(uint32_t offset); - - uint32_t GetCurrentOffsetTop(); - void RollBackOffsetTop(uint32_t offset); - - void Reset(); -}; - -//---------------------------------------------------------------------------------------- -slInline bool MemoryLinear::Init(MemoryHeap* heap, uint32_t size, uint32_t alignment = 1) -{ - m_Heap = heap; - m_Base = (uint8_t*)m_Heap->Allocate(size, "MemoryLinear", alignment); - m_Size = size; - m_Offset = 0; - m_OffsetTop = 0; -} - -//---------------------------------------------------------------------------------------- -slInline void MemoryLinear::Destroy() -{ - m_Heap->Free(m_Base); - m_Heap = NULL; - m_Base = NULL; - m_Size = 0; - m_Offset = 0; - m_OffsetTop = 0; -} - -//---------------------------------------------------------------------------------------- -slInline void* MemoryLinear::Allocate(uint32_t size, uint32_t alignment) -{ - int64_t aligned_address = ALIGN_UP((int64_t)m_Base + m_Offset, alignment); - if (aligned_address + size > (int64_t)m_Base + m_Size - m_OffsetTop) - { - return NULL; - } - - m_Offset = aligned_address - (int64_t)m_Base; - return (void*)aligned_address; -} - -//---------------------------------------------------------------------------------------- -slInline void* MemoryLinear::AllocateTop(uint32_t size, uint32_t alignment) -{ - int64_t aligned_address = ALIGN_DOWN((int64_t)m_Base + m_Size - m_OffsetTop - size, alignment); - if (aligned_address < (int64_t)m_Base + m_Offset) - { - return NULL; - } - - m_OffsetTop = (int64_t)m_Base + m_Size - aligned_address); - return (void*)aligned_address; -} - -//---------------------------------------------------------------------------------------- -slInline uint32_t MemoryLinear::GetCurrentOffset() -{ - return m_Offset; -} - -//---------------------------------------------------------------------------------------- -slInline void MemoryLinear::RollBackOffset(uint32_t offset) -{ - Assert(offset <= m_Offset); - m_Offset = offset; -} - -//---------------------------------------------------------------------------------------- -slInline uint32_t MemoryLinear::GetCurrentOffsetTop() -{ - return m_OffsetTop; -} - -//---------------------------------------------------------------------------------------- -slInline void MemoryLinear::RollBackOffsetTop(uint32_t offset_top) -{ - Assert(offset_top >= m_OffsetTop); - m_OffsetTop = offset_top; -} - -//---------------------------------------------------------------------------------------- -slInline void MemoryLinear::Reset() -{ - m_Offset = 0; - m_OffsetTop = 0; -} diff --git a/Littlest/Foundation/OSInterface/GLView.h b/Littlest/Foundation/OSInterface/GLView.h deleted file mode 100644 index 0d2efa8..0000000 --- a/Littlest/Foundation/OSInterface/GLView.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -#import - -#import -#import -#import -#import - -//---------------------------------------------------------------------------------------- -// This class wraps the CAEAGLLayer from CoreAnimation into a convenient UIView subclass. -// The view content is basically an EAGL surface you render your OpenGL scene into. -// Note that setting the view non-opaque will only work if the EAGL surface has an alpha channel. -@interface GLView : UIView -{ -@private - EAGLContext* context; - - // The pixel dimensions of the CAEAGLLayer. - GLint framebufferWidth; - GLint framebufferHeight; - - // The OpenGL ES names for the framebuffer and renderbuffer used to render to this view. - GLuint defaultFramebuffer, colorRenderbuffer; -} - -@property (nonatomic, retain) EAGLContext* context; - -- (void)setFramebuffer; -- (BOOL)presentFramebuffer; - -@end diff --git a/Littlest/Foundation/OSInterface/GLView.m b/Littlest/Foundation/OSInterface/GLView.m deleted file mode 100644 index 5ef4c57..0000000 --- a/Littlest/Foundation/OSInterface/GLView.m +++ /dev/null @@ -1,156 +0,0 @@ -#import - -#import "GLView.h" - -//----------------------------------------------------------------------------------------------------------- -@interface GLView (PrivateMethods) -- (void)createFrameBuffer; -- (void)deleteFramebuffer; -@end - -//----------------------------------------------------------------------------------------------------------- -@implementation GLView - -@dynamic context; - -//----------------------------------------------------------------------------------------------------------- -// You must implement this method -+ (Class)layerClass -{ - return [CAEAGLLayer class]; -} - -//----------------------------------------------------------------------------------------------------------- -//The EAGL view is stored in the nib file. When it's unarchived it's sent -initWithCoder:. -- (id)initWithCoder:(NSCoder*)coder -{ - self = [super initWithCoder:coder]; - if (self) - { - CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer; - - eaglLayer.opaque = TRUE; - eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool:FALSE], kEAGLDrawablePropertyRetainedBacking, - kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, - nil]; - } - - return self; -} - -//----------------------------------------------------------------------------------------------------------- -- (void)dealloc -{ - [self deleteFramebuffer]; - [context release]; - - [super dealloc]; -} - -//----------------------------------------------------------------------------------------------------------- -- (EAGLContext *)context -{ - return context; -} - -//----------------------------------------------------------------------------------------------------------- -- (void)setContext:(EAGLContext *)newContext -{ - if (context != newContext) - { - [self deleteFramebuffer]; - [context release]; - - context = [newContext retain]; - [EAGLContext setCurrentContext:nil]; - } -} - -//----------------------------------------------------------------------------------------------------------- -- (void)createFrameBuffer -{ - if (context && !defaultFramebuffer) - { - [EAGLContext setCurrentContext:context]; - - // Create default framebuffer object. - glGenFramebuffers(1, &defaultFramebuffer); - glBindFramebuffer(GL_FRAMEBUFFER, defaultFramebuffer); - - // Create color render buffer and allocate backing store. - glGenRenderbuffers(1, &colorRenderbuffer); - glBindRenderbuffer(GL_RENDERBUFFER, colorRenderbuffer); - [context renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer *)self.layer]; - glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &framebufferWidth); - glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &framebufferHeight); - - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, colorRenderbuffer); - - if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) - NSLog(@"Failed to make complete framebuffer object %x", glCheckFramebufferStatus(GL_FRAMEBUFFER)); - } -} - -//----------------------------------------------------------------------------------------------------------- -- (void)deleteFramebuffer -{ - if (context) - { - [EAGLContext setCurrentContext:context]; - - if (defaultFramebuffer) - { - glDeleteFramebuffers(1, &defaultFramebuffer); - defaultFramebuffer = 0; - } - - if (colorRenderbuffer) - { - glDeleteRenderbuffers(1, &colorRenderbuffer); - colorRenderbuffer = 0; - } - } -} - -//----------------------------------------------------------------------------------------------------------- -- (void)setFramebuffer -{ - if (context) - { - [EAGLContext setCurrentContext:context]; - - if (!defaultFramebuffer) - [self createFrameBuffer]; - - glBindFramebuffer(GL_FRAMEBUFFER, defaultFramebuffer); - - glViewport(0, 0, framebufferWidth, framebufferHeight); - } -} - -//----------------------------------------------------------------------------------------------------------- -- (BOOL)presentFramebuffer -{ - BOOL success = FALSE; - - if (context) - { - [EAGLContext setCurrentContext:context]; - - glBindRenderbuffer(GL_RENDERBUFFER, colorRenderbuffer); - - success = [context presentRenderbuffer:GL_RENDERBUFFER]; - } - - return success; -} - -//----------------------------------------------------------------------------------------------------------- -- (void)layoutSubviews -{ - // The framebuffer will be re-created at the beginning of the next setFramebuffer method call. - [self deleteFramebuffer]; -} - -@end diff --git a/Littlest/Foundation/OSInterface/LittlestAppDelegate.h b/Littlest/Foundation/OSInterface/LittlestAppDelegate.h deleted file mode 100644 index 7f66aca..0000000 --- a/Littlest/Foundation/OSInterface/LittlestAppDelegate.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#import - -@class LittlestViewController; - -@interface LittlestAppDelegate : NSObject -{ - UIWindow* window; - LittlestViewController* viewController; -} - -@property (nonatomic, retain) IBOutlet UIWindow* window; -@property (nonatomic, retain) IBOutlet LittlestViewController* viewController; - -@end - diff --git a/Littlest/Foundation/OSInterface/LittlestAppDelegate.m b/Littlest/Foundation/OSInterface/LittlestAppDelegate.m deleted file mode 100644 index ad097b4..0000000 --- a/Littlest/Foundation/OSInterface/LittlestAppDelegate.m +++ /dev/null @@ -1,48 +0,0 @@ -#import "LittlestAppDelegate.h" -#import "LittlestViewController.h" - -@implementation LittlestAppDelegate - -@synthesize window; -@synthesize viewController; - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - [self.window addSubview:self.viewController.view]; - return YES; -} - -- (void)applicationWillResignActive:(UIApplication *)application -{ - [self.viewController stopAnimation]; -} - -- (void)applicationDidBecomeActive:(UIApplication *)application -{ - [self.viewController startAnimation]; -} - -- (void)applicationWillTerminate:(UIApplication *)application -{ - [self.viewController stopAnimation]; -} - -- (void)applicationDidEnterBackground:(UIApplication *)application -{ - // Handle any background procedures not related to animation here. -} - -- (void)applicationWillEnterForeground:(UIApplication *)application -{ - // Handle any foreground procedures not related to animation here. -} - -- (void)dealloc -{ - [viewController release]; - [window release]; - - [super dealloc]; -} - -@end diff --git a/Littlest/Foundation/OSInterface/LittlestViewController.h b/Littlest/Foundation/OSInterface/LittlestViewController.h deleted file mode 100644 index 3c3ab7d..0000000 --- a/Littlest/Foundation/OSInterface/LittlestViewController.h +++ /dev/null @@ -1,31 +0,0 @@ -#pragma once - -#import - -#import - -#import -#import -#import -#import - -@class CCDirector; - -@interface LittlestViewController : UIViewController -{ - EAGLContext *context; - GLuint program; - - BOOL animating; - NSInteger animationFrameInterval; - CADisplayLink *displayLink; -} - -@property (readonly, nonatomic, getter=isAnimating) BOOL animating; -@property (nonatomic) NSInteger animationFrameInterval; -@property (retain, nonatomic) CCDirector* director; - -- (void)startAnimation; -- (void)stopAnimation; - -@end diff --git a/Littlest/Foundation/OSInterface/LittlestViewController.m b/Littlest/Foundation/OSInterface/LittlestViewController.m deleted file mode 100644 index 29407af..0000000 --- a/Littlest/Foundation/OSInterface/LittlestViewController.m +++ /dev/null @@ -1,408 +0,0 @@ -#import - -#import "LittlestViewController.h" -#import "GLView.h" -#import "cocos2d/cocos2d.h" - - -//----------------------------------------------------------------------------------------------------------- -// Uniform index. -enum { - UNIFORM_TRANSLATE, - NUM_UNIFORMS -}; -GLint uniforms[NUM_UNIFORMS]; - -// Attribute index. -enum { - ATTRIB_VERTEX, - ATTRIB_COLOR, - NUM_ATTRIBUTES -}; - - -//----------------------------------------------------------------------------------------------------------- -@interface LittlestViewController () -@property (nonatomic, retain) EAGLContext *context; -@property (nonatomic, assign) CADisplayLink *displayLink; -- (BOOL)loadShaders; -- (BOOL)compileShader:(GLuint *)shader type:(GLenum)type file:(NSString *)file; -- (BOOL)linkProgram:(GLuint)prog; -- (BOOL)validateProgram:(GLuint)prog; -@end - - -//----------------------------------------------------------------------------------------------------------- -@implementation LittlestViewController - -@synthesize animating, context, displayLink, director; - -//----------------------------------------------------------------------------------------------------------- -- (void)awakeFromNib -{ - EAGLContext *aContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; - - if (!aContext) - { - aContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1]; - } - - if (!aContext) - NSLog(@"Failed to create ES context"); - else if (![EAGLContext setCurrentContext:aContext]) - NSLog(@"Failed to set ES context current"); - - self.context = aContext; - [aContext release]; - - [(GLView *)self.view setContext:context]; - [(GLView *)self.view setFramebuffer]; - - if ([context API] == kEAGLRenderingAPIOpenGLES2) - [self loadShaders]; - - animating = FALSE; - animationFrameInterval = 1; - self.displayLink = nil; -} - -//----------------------------------------------------------------------------------------------------------- -- (void)dealloc -{ - if (program) - { - glDeleteProgram(program); - program = 0; - } - - // Tear down context. - if ([EAGLContext currentContext] == context) - [EAGLContext setCurrentContext:nil]; - - [context release]; - - [super dealloc]; -} - -//----------------------------------------------------------------------------------------------------------- -- (void)viewWillAppear:(BOOL)animated -{ - [self startAnimation]; - - [super viewWillAppear:animated]; -} - -//----------------------------------------------------------------------------------------------------------- -- (void)viewWillDisappear:(BOOL)animated -{ - [self stopAnimation]; - - [super viewWillDisappear:animated]; -} - -//----------------------------------------------------------------------------------------------------------- -- (void)viewDidUnload -{ - [super viewDidUnload]; - - if (program) - { - glDeleteProgram(program); - program = 0; - } - - // Tear down context. - if ([EAGLContext currentContext] == context) - [EAGLContext setCurrentContext:nil]; - self.context = nil; -} - -//----------------------------------------------------------------------------------------------------------- -- (NSInteger)animationFrameInterval -{ - return animationFrameInterval; -} - -//----------------------------------------------------------------------------------------------------------- -- (void)setAnimationFrameInterval:(NSInteger)frameInterval -{ - /* - Frame interval defines how many display frames must pass between each time the display link fires. - The display link will only fire 30 times a second when the frame internal is two on a display that refreshes 60 times a second. The default frame interval setting of one will fire 60 times a second when the display refreshes at 60 times a second. A frame interval setting of less than one results in undefined behavior. - */ - if (frameInterval >= 1) - { - animationFrameInterval = frameInterval; - - if (animating) - { - [self stopAnimation]; - [self startAnimation]; - } - } -} - -//----------------------------------------------------------------------------------------------------------- -- (void)startAnimation -{ - if (!animating) - { - CADisplayLink *aDisplayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(drawFrame)]; - [aDisplayLink setFrameInterval:animationFrameInterval]; - [aDisplayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; - self.displayLink = aDisplayLink; - - animating = TRUE; - } -} - -//----------------------------------------------------------------------------------------------------------- -- (void)stopAnimation -{ - if (animating) - { - [self.displayLink invalidate]; - self.displayLink = nil; - animating = FALSE; - } -} - -//----------------------------------------------------------------------------------------------------------- -- (void)drawFrame -{ - [(GLView *)self.view setFramebuffer]; - - // Replace the implementation of this method to do your own custom drawing. - static const GLfloat squareVertices[] = { - -0.5f, -0.33f, - 0.5f, -0.33f, - -0.5f, 0.33f, - 0.5f, 0.33f, - }; - - static const GLubyte squareColors[] = { - 255, 255, 0, 255, - 0, 255, 255, 255, - 0, 0, 0, 0, - 255, 0, 255, 255, - }; - - static float transY = 0.0f; - - glClearColor(0.5f, 0.5f, 0.5f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - - if ([context API] == kEAGLRenderingAPIOpenGLES2) - { - // Use shader program. - glUseProgram(program); - - // Update uniform value. - glUniform1f(uniforms[UNIFORM_TRANSLATE], (GLfloat)transY); - transY += 0.075f; - - // Update attribute values. - glVertexAttribPointer(ATTRIB_VERTEX, 2, GL_FLOAT, 0, 0, squareVertices); - glEnableVertexAttribArray(ATTRIB_VERTEX); - glVertexAttribPointer(ATTRIB_COLOR, 4, GL_UNSIGNED_BYTE, 1, 0, squareColors); - glEnableVertexAttribArray(ATTRIB_COLOR); - - // Validate program before drawing. This is a good check, but only really necessary in a debug build. - // DEBUG macro must be defined in your debug configurations if that's not already the case. -#if defined(DEBUG) - if (![self validateProgram:program]) - { - NSLog(@"Failed to validate program: %d", program); - return; - } -#endif - } - else - { - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0f, (GLfloat)(sinf(transY)/2.0f), 0.0f); - transY += 0.075f; - - glVertexPointer(2, GL_FLOAT, 0, squareVertices); - glEnableClientState(GL_VERTEX_ARRAY); - glColorPointer(4, GL_UNSIGNED_BYTE, 0, squareColors); - glEnableClientState(GL_COLOR_ARRAY); - } - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - - [(GLView *)self.view presentFramebuffer]; -} - -//----------------------------------------------------------------------------------------------------------- -- (void)didReceiveMemoryWarning -{ - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc. that aren't in use. -} - -//----------------------------------------------------------------------------------------------------------- -- (BOOL)compileShader:(GLuint *)shader type:(GLenum)type file:(NSString *)file -{ - GLint status; - const GLchar *source; - - source = (GLchar *)[[NSString stringWithContentsOfFile:file encoding:NSUTF8StringEncoding error:nil] UTF8String]; - if (!source) - { - NSLog(@"Failed to load vertex shader"); - return FALSE; - } - - *shader = glCreateShader(type); - glShaderSource(*shader, 1, &source, NULL); - glCompileShader(*shader); - -#if defined(DEBUG) - GLint logLength; - glGetShaderiv(*shader, GL_INFO_LOG_LENGTH, &logLength); - if (logLength > 0) - { - GLchar *log = (GLchar *)malloc(logLength); - glGetShaderInfoLog(*shader, logLength, &logLength, log); - NSLog(@"Shader compile log:\n%s", log); - free(log); - } -#endif - - glGetShaderiv(*shader, GL_COMPILE_STATUS, &status); - if (status == 0) - { - glDeleteShader(*shader); - return FALSE; - } - - return TRUE; -} - -//----------------------------------------------------------------------------------------------------------- -- (BOOL)linkProgram:(GLuint)prog -{ - GLint status; - - glLinkProgram(prog); - -#if defined(DEBUG) - GLint logLength; - glGetProgramiv(prog, GL_INFO_LOG_LENGTH, &logLength); - if (logLength > 0) - { - GLchar *log = (GLchar *)malloc(logLength); - glGetProgramInfoLog(prog, logLength, &logLength, log); - NSLog(@"Program link log:\n%s", log); - free(log); - } -#endif - - glGetProgramiv(prog, GL_LINK_STATUS, &status); - if (status == 0) - return FALSE; - - return TRUE; -} - -//----------------------------------------------------------------------------------------------------------- -- (BOOL)validateProgram:(GLuint)prog -{ - GLint logLength, status; - - glValidateProgram(prog); - glGetProgramiv(prog, GL_INFO_LOG_LENGTH, &logLength); - if (logLength > 0) - { - GLchar *log = (GLchar *)malloc(logLength); - glGetProgramInfoLog(prog, logLength, &logLength, log); - NSLog(@"Program validate log:\n%s", log); - free(log); - } - - glGetProgramiv(prog, GL_VALIDATE_STATUS, &status); - if (status == 0) - return FALSE; - - return TRUE; -} - -//----------------------------------------------------------------------------------------------------------- -- (BOOL)loadShaders -{ - GLuint vertShader, fragShader; - NSString *vertShaderPathname, *fragShaderPathname; - - // Create shader program. - program = glCreateProgram(); - - // Create and compile vertex shader. - vertShaderPathname = [[NSBundle mainBundle] pathForResource:@"Shader" ofType:@"vsh"]; - if (![self compileShader:&vertShader type:GL_VERTEX_SHADER file:vertShaderPathname]) - { - NSLog(@"Failed to compile vertex shader"); - return FALSE; - } - - // Create and compile fragment shader. - fragShaderPathname = [[NSBundle mainBundle] pathForResource:@"Shader" ofType:@"fsh"]; - if (![self compileShader:&fragShader type:GL_FRAGMENT_SHADER file:fragShaderPathname]) - { - NSLog(@"Failed to compile fragment shader"); - return FALSE; - } - - // Attach vertex shader to program. - glAttachShader(program, vertShader); - - // Attach fragment shader to program. - glAttachShader(program, fragShader); - - // Bind attribute locations. - // This needs to be done prior to linking. - glBindAttribLocation(program, ATTRIB_VERTEX, "position"); - glBindAttribLocation(program, ATTRIB_COLOR, "color"); - - // Link program. - if (![self linkProgram:program]) - { - NSLog(@"Failed to link program: %d", program); - - if (vertShader) - { - glDeleteShader(vertShader); - vertShader = 0; - } - if (fragShader) - { - glDeleteShader(fragShader); - fragShader = 0; - } - if (program) - { - glDeleteProgram(program); - program = 0; - } - - return FALSE; - } - - // Get uniform locations. - uniforms[UNIFORM_TRANSLATE] = glGetUniformLocation(program, "translate"); - - // Release vertex and fragment shaders. - if (vertShader) - glDeleteShader(vertShader); - if (fragShader) - glDeleteShader(fragShader); - - return TRUE; -} - -@end diff --git a/Littlest/Foundation/Synchronization/Atomic32Bit.h b/Littlest/Foundation/Synchronization/Atomic32Bit.h deleted file mode 100755 index 2290a2c..0000000 --- a/Littlest/Foundation/Synchronization/Atomic32Bit.h +++ /dev/null @@ -1,99 +0,0 @@ -#pragma once - -#include "Foundation/Common/GlobalInclude.h" - -#if defined(__WINDOWS__) - -#include - -#pragma intrinsic(InterlockedIncrement) -#pragma intrinsic(InterlockedDecrement) -#pragma intrinsic(InterlockedExchange) -#pragma intrinsic(InterlockedExchangeAdd) -#pragma intrinsic(InterlockedExchangeSubtract) -#pragma intrinsic(InterlockedCompareExchange) -#pragma intrinsic(InterlockedAnd) -#pragma intrinsic(InterlockedOr) -#pragma intrinsic(InterlockedXor) - -class Atomic32Bit -{ -private: - __declspec(align(16)) uint32_t m_LockValue; - -public: - Atomic32Bit() - { - m_LockValue = 0; - } - - ~Atomic32Bit() - { - m_LockValue = 0; - } - - // use intrinsics instead since they r automatically defined for x64 and x86 structs - uint32_t Increment(const uint32_t lock_value) //returns current value - { - return InterlockedIncrement(&m_LockValue); - - /* - volatile unsigned int* p_temp = &m_Locker; - __asm - { - mov eax, 1 - mov edx, [p_temp] - lock xadd [edx],eax - } - */ - } - - uint32_t SetValue(const uint32_t value) - { - return InterlockedExchange(&m_LockValue, value); - - /* - volatile unsigned int* p_temp = &m_Locker; - __asm - { - mov eax, Value - mov edx, [p_temp] - lock xchg [edx],eax - } - */ - } - - uint32_t Decrement(const uint32_t lock_value) //returns current value - { - return InterlockedDecrement(&m_LockValue); - - /* - volatile unsigned int* p_temp = &m_Locker; - __asm - { - mov eax, -1 - mov edx, [p_temp] - lock xadd [edx],eax - } - */ - } - - void And(uint32_t& lock_value) - { - InterlockedAnd(&m_LockValue, lock_value); - lock_value = m_LockValue; - } - - // this function can be inlined as long as the volatile is here - slInline uint32_t GetValue() - { - volatile uint32_t* p_temp = &m_LockValue; - return (unsigned int)*p_temp; - } -}; - -#else - -#error Not yet implemented! - -#endif diff --git a/Littlest/Foundation/Synchronization/MemorySync.h b/Littlest/Foundation/Synchronization/MemorySync.h deleted file mode 100755 index 156060a..0000000 --- a/Littlest/Foundation/Synchronization/MemorySync.h +++ /dev/null @@ -1,28 +0,0 @@ -#pragma once - -#include "Foundation/Common/GlobalDefines.h" - -#if defined(__WINDOWS__) - -#include - -#define ReadWriteSync() MemoryBarrier() - -#elif defined(__ARM__) - -#define ReadWriteSync() __asm__("dsb") - -#elif defined(__PPC__) - -#define ReadWriteSync() __asm__("lwsync") - -#elif defined(__X86__) && defined(__iOS__) - -#include -#define ReadWriteSync() OSMemoryBarrier() - -#else - -#error MemorySync not yet implemented for this build! - -#endif diff --git a/Littlest/Game/Scene/Scene.h b/Littlest/Game/Scene/Scene.h deleted file mode 100644 index d9ed9a1..0000000 --- a/Littlest/Game/Scene/Scene.h +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once - -#import - -#import "cocos2d/cocos2d.h" - -@interface Scene : CCScene -{ - -} - - - -@end - - - -@end diff --git a/Littlest/HelloWorldLayer.h b/Littlest/HelloWorldLayer.h deleted file mode 100644 index d3327e8..0000000 --- a/Littlest/HelloWorldLayer.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// HelloWorldLayer.h -// Littlest -// -// Created by Doris Chen on 4/17/11. -// Copyright __MyCompanyName__ 2011. All rights reserved. -// - - -// When you import this file, you import all the cocos2d classes -#import "cocos2d.h" -#import "Box2D.h" - -#import "Engine/Render/GLES-Render.h" - -// HelloWorldLayer -@interface HelloWorldLayer : CCLayer -{ - b2World* world; - GLESDebugDraw* m_debugDraw; -} - -// returns a CCScene that contains the HelloWorldLayer as the only child -+(CCScene *) scene; -// adds a new sprite at a given coordinate --(void) addNewSpriteWithCoords:(CGPoint)p; - -@end diff --git a/Littlest/HelloWorldLayer.mm b/Littlest/HelloWorldLayer.mm deleted file mode 100644 index 2e527a5..0000000 --- a/Littlest/HelloWorldLayer.mm +++ /dev/null @@ -1,258 +0,0 @@ -// -// HelloWorldLayer.mm -// Littlest -// -// Created by Doris Chen on 4/17/11. -// Copyright __MyCompanyName__ 2011. All rights reserved. -// - - -// Import the interfaces -#import "HelloWorldLayer.h" - -//Pixel to metres ratio. Box2D uses metres as the unit for measurement. -//This ratio defines how many pixels correspond to 1 Box2D "metre" -//Box2D is optimized for objects of 1x1 metre therefore it makes sense -//to define the ratio so that your most common object type is 1x1 metre. -#define PTM_RATIO 32 - -// enums that will be used as tags -enum { - kTagTileMap = 1, - kTagBatchNode = 1, - kTagAnimation1 = 1, -}; - - -// HelloWorldLayer implementation -@implementation HelloWorldLayer - -+(CCScene *) scene -{ - // 'scene' is an autorelease object. - CCScene *scene = [CCScene node]; - - // 'layer' is an autorelease object. - HelloWorldLayer *layer = [HelloWorldLayer node]; - - // add layer as a child to scene - [scene addChild: layer]; - - // return the scene - return scene; -} - -// on "init" you need to initialize your instance --(id) init -{ - // always call "super" init - // Apple recommends to re-assign "self" with the "super" return value - if( (self=[super init])) { - - // enable touches - self.isTouchEnabled = YES; - - // enable accelerometer - self.isAccelerometerEnabled = YES; - - CGSize screenSize = [CCDirector sharedDirector].winSize; - CCLOG(@"Screen width %0.2f screen height %0.2f",screenSize.width,screenSize.height); - - // Define the gravity vector. - b2Vec2 gravity; - gravity.Set(0.0f, -10.0f); - - // Do we want to let bodies sleep? - // This will speed up the physics simulation - bool doSleep = true; - - // Construct a world object, which will hold and simulate the rigid bodies. - world = new b2World(gravity, doSleep); - - world->SetContinuousPhysics(true); - - // Debug Draw functions - m_debugDraw = new GLESDebugDraw( PTM_RATIO ); - world->SetDebugDraw(m_debugDraw); - - uint32 flags = 0; - flags += b2DebugDraw::e_shapeBit; -// flags += b2DebugDraw::e_jointBit; -// flags += b2DebugDraw::e_aabbBit; -// flags += b2DebugDraw::e_pairBit; -// flags += b2DebugDraw::e_centerOfMassBit; - m_debugDraw->SetFlags(flags); - - - // Define the ground body. - b2BodyDef groundBodyDef; - groundBodyDef.position.Set(0, 0); // bottom-left corner - - // Call the body factory which allocates memory for the ground body - // from a pool and creates the ground box shape (also from a pool). - // The body is also added to the world. - b2Body* groundBody = world->CreateBody(&groundBodyDef); - - // Define the ground box shape. - b2PolygonShape groundBox; - - // bottom - groundBox.SetAsEdge(b2Vec2(0,0), b2Vec2(screenSize.width/PTM_RATIO,0)); - groundBody->CreateFixture(&groundBox,0); - - // top - groundBox.SetAsEdge(b2Vec2(0,screenSize.height/PTM_RATIO), b2Vec2(screenSize.width/PTM_RATIO,screenSize.height/PTM_RATIO)); - groundBody->CreateFixture(&groundBox,0); - - // left - groundBox.SetAsEdge(b2Vec2(0,screenSize.height/PTM_RATIO), b2Vec2(0,0)); - groundBody->CreateFixture(&groundBox,0); - - // right - groundBox.SetAsEdge(b2Vec2(screenSize.width/PTM_RATIO,screenSize.height/PTM_RATIO), b2Vec2(screenSize.width/PTM_RATIO,0)); - groundBody->CreateFixture(&groundBox,0); - - - //Set up the block sprites - CCSpriteBatchNode *batch = [CCSpriteBatchNode batchNodeWithFile:@"blocks.png" capacity:150]; - [self addChild:batch z:0 tag:kTagBatchNode]; - - [self addNewSpriteWithCoords:ccp(screenSize.width/2, screenSize.height/2)]; - - CCLabelTTF *label = [CCLabelTTF labelWithString:@"Tap screen" fontName:@"Marker Felt" fontSize:32]; - [self addChild:label z:0]; - [label setColor:ccc3(0,0,255)]; - label.position = ccp( screenSize.width/2, screenSize.height-50); - - [self schedule: @selector(tick:)]; - } - return self; -} - --(void) draw -{ - // Default GL states: GL_TEXTURE_2D, GL_VERTEX_ARRAY, GL_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY - // Needed states: GL_VERTEX_ARRAY, - // Unneeded states: GL_TEXTURE_2D, GL_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY - glDisable(GL_TEXTURE_2D); - glDisableClientState(GL_COLOR_ARRAY); - glDisableClientState(GL_TEXTURE_COORD_ARRAY); - - world->DrawDebugData(); - - // restore default GL states - glEnable(GL_TEXTURE_2D); - glEnableClientState(GL_COLOR_ARRAY); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - -} - --(void) addNewSpriteWithCoords:(CGPoint)p -{ - CCLOG(@"Add sprite %0.2f x %02.f",p.x,p.y); - CCSpriteBatchNode *batch = (CCSpriteBatchNode*) [self getChildByTag:kTagBatchNode]; - - //We have a 64x64 sprite sheet with 4 different 32x32 images. The following code is - //just randomly picking one of the images - int idx = (CCRANDOM_0_1() > .5 ? 0:1); - int idy = (CCRANDOM_0_1() > .5 ? 0:1); - CCSprite *sprite = [CCSprite spriteWithBatchNode:batch rect:CGRectMake(32 * idx,32 * idy,32,32)]; - [batch addChild:sprite]; - - sprite.position = ccp( p.x, p.y); - - // Define the dynamic body. - //Set up a 1m squared box in the physics world - b2BodyDef bodyDef; - bodyDef.type = b2_dynamicBody; - - bodyDef.position.Set(p.x/PTM_RATIO, p.y/PTM_RATIO); - bodyDef.userData = sprite; - b2Body *body = world->CreateBody(&bodyDef); - - // Define another box shape for our dynamic body. - b2PolygonShape dynamicBox; - dynamicBox.SetAsBox(.5f, .5f);//These are mid points for our 1m box - - // Define the dynamic body fixture. - b2FixtureDef fixtureDef; - fixtureDef.shape = &dynamicBox; - fixtureDef.density = 1.0f; - fixtureDef.friction = 0.3f; - body->CreateFixture(&fixtureDef); -} - - - --(void) tick: (ccTime) dt -{ - //It is recommended that a fixed time step is used with Box2D for stability - //of the simulation, however, we are using a variable time step here. - //You need to make an informed choice, the following URL is useful - //http://gafferongames.com/game-physics/fix-your-timestep/ - - int32 velocityIterations = 8; - int32 positionIterations = 1; - - // Instruct the world to perform a single step of simulation. It is - // generally best to keep the time step and iterations fixed. - world->Step(dt, velocityIterations, positionIterations); - - - //Iterate over the bodies in the physics world - for (b2Body* b = world->GetBodyList(); b; b = b->GetNext()) - { - if (b->GetUserData() != NULL) { - //Synchronize the AtlasSprites position and rotation with the corresponding body - CCSprite *myActor = (CCSprite*)b->GetUserData(); - myActor.position = CGPointMake( b->GetPosition().x * PTM_RATIO, b->GetPosition().y * PTM_RATIO); - myActor.rotation = -1 * CC_RADIANS_TO_DEGREES(b->GetAngle()); - } - } -} - -- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event -{ - //Add a new body/atlas sprite at the touched location - for( UITouch *touch in touches ) { - CGPoint location = [touch locationInView: [touch view]]; - - location = [[CCDirector sharedDirector] convertToGL: location]; - - [self addNewSpriteWithCoords: location]; - } -} - -- (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration -{ - static float prevX=0, prevY=0; - - //#define kFilterFactor 0.05f -#define kFilterFactor 1.0f // don't use filter. the code is here just as an example - - float accelX = (float) acceleration.x * kFilterFactor + (1- kFilterFactor)*prevX; - float accelY = (float) acceleration.y * kFilterFactor + (1- kFilterFactor)*prevY; - - prevX = accelX; - prevY = accelY; - - // accelerometer values are in "Portrait" mode. Change them to Landscape left - // multiply the gravity by 10 - b2Vec2 gravity( -accelY * 10, accelX * 10); - - world->SetGravity( gravity ); -} - -// on "dealloc" you need to release all your retained objects -- (void) dealloc -{ - // in case you have something to dealloc, do it in this method - delete world; - world = NULL; - - delete m_debugDraw; - - // don't forget to call "super dealloc" - [super dealloc]; -} -@end diff --git a/Littlest/OS/GameConfig.h b/Littlest/OS/GameConfig.h deleted file mode 100644 index bad9b07..0000000 --- a/Littlest/OS/GameConfig.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// GameConfig.h -// Littlest -// -// Created by Doris Chen on 4/17/11. -// Copyright __MyCompanyName__ 2011. All rights reserved. -// - -#ifndef __GAME_CONFIG_H -#define __GAME_CONFIG_H - -// -// Supported Autorotations: -// None, -// UIViewController, -// CCDirector -// -#define kGameAutorotationNone 0 -#define kGameAutorotationCCDirector 1 -#define kGameAutorotationUIViewController 2 - -// -// Define here the type of autorotation that you want for your game -// -#define GAME_AUTOROTATION kGameAutorotationUIViewController - - -#endif // __GAME_CONFIG_H \ No newline at end of file diff --git a/Littlest/OS/RootViewController.h b/Littlest/OS/RootViewController.h deleted file mode 100644 index ca05da8..0000000 --- a/Littlest/OS/RootViewController.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// RootViewController.h -// Littlest -// -// Created by Doris Chen on 4/17/11. -// Copyright __MyCompanyName__ 2011. All rights reserved. -// - -#import - - -@interface RootViewController : UIViewController { - -} - -@end diff --git a/Littlest/OS/RootViewController.m b/Littlest/OS/RootViewController.m deleted file mode 100644 index db5f37e..0000000 --- a/Littlest/OS/RootViewController.m +++ /dev/null @@ -1,152 +0,0 @@ -// -// RootViewController.m -// Littlest -// -// Created by Doris Chen on 4/17/11. -// Copyright __MyCompanyName__ 2011. All rights reserved. -// - -// -// RootViewController + iAd -// If you want to support iAd, use this class as the controller of your iAd -// - -#import "cocos2d.h" - -#import "RootViewController.h" -#import "GameConfig.h" - -@implementation RootViewController - -/* - // The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. - - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { - if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { - // Custom initialization - } - return self; - } - */ - -/* - // Implement loadView to create a view hierarchy programmatically, without using a nib. - - (void)loadView { - } - */ - -/* - // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - - (void)viewDidLoad { - [super viewDidLoad]; - } - */ - - -// Override to allow orientations other than the default portrait orientation. -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - - // - // There are 2 ways to support auto-rotation: - // - The OpenGL / cocos2d way - // - Faster, but doesn't rotate the UIKit objects - // - The ViewController way - // - A bit slower, but the UiKit objects are placed in the right place - // - -#if GAME_AUTOROTATION==kGameAutorotationNone - // - // EAGLView won't be autorotated. - // Since this method should return YES in at least 1 orientation, - // we return YES only in the Portrait orientation - // - return ( interfaceOrientation == UIInterfaceOrientationPortrait ); - -#elif GAME_AUTOROTATION==kGameAutorotationCCDirector - // - // EAGLView will be rotated by cocos2d - // - // Sample: Autorotate only in landscape mode - // - if( interfaceOrientation == UIInterfaceOrientationLandscapeLeft ) { - [[CCDirector sharedDirector] setDeviceOrientation: kCCDeviceOrientationLandscapeRight]; - } else if( interfaceOrientation == UIInterfaceOrientationLandscapeRight) { - [[CCDirector sharedDirector] setDeviceOrientation: kCCDeviceOrientationLandscapeLeft]; - } - - // Since this method should return YES in at least 1 orientation, - // we return YES only in the Portrait orientation - return ( interfaceOrientation == UIInterfaceOrientationPortrait ); - -#elif GAME_AUTOROTATION == kGameAutorotationUIViewController - // - // EAGLView will be rotated by the UIViewController - // - // Sample: Autorotate only in landscpe mode - // - // return YES for the supported orientations - - return ( UIInterfaceOrientationIsLandscape( interfaceOrientation ) ); - -#else -#error Unknown value in GAME_AUTOROTATION - -#endif // GAME_AUTOROTATION - - - // Shold not happen - return NO; -} - -// -// This callback only will be called when GAME_AUTOROTATION == kGameAutorotationUIViewController -// -#if GAME_AUTOROTATION == kGameAutorotationUIViewController --(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration -{ - // - // Assuming that the main window has the size of the screen - // BUG: This won't work if the EAGLView is not fullscreen - /// - CGRect screenRect = [[UIScreen mainScreen] bounds]; - CGRect rect; - - if(toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) - rect = screenRect; - - else if(toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) - rect.size = CGSizeMake( screenRect.size.height, screenRect.size.width ); - - CCDirector *director = [CCDirector sharedDirector]; - EAGLView *glView = [director openGLView]; - float contentScaleFactor = [director contentScaleFactor]; - - if( contentScaleFactor != 1 ) { - rect.size.width *= contentScaleFactor; - rect.size.height *= contentScaleFactor; - } - glView.frame = rect; -} -#endif // GAME_AUTOROTATION == kGameAutorotationUIViewController - - -- (void)didReceiveMemoryWarning { - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -- (void)viewDidUnload { - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - - -- (void)dealloc { - [super dealloc]; -} - - -@end - diff --git a/Littlest/Prefix.pch b/Littlest/Prefix.pch deleted file mode 100644 index f2861ff..0000000 --- a/Littlest/Prefix.pch +++ /dev/null @@ -1,14 +0,0 @@ -// -// Prefix header for all source files of the 'Test' target in the 'Test' project -// - -#import - -#ifndef __IPHONE_3_0 -#warning "This project uses features only available in iPhone SDK 3.0 and later." -#endif - -#ifdef __OBJC__ -#import -#import -#endif diff --git a/Littlest/Resources/Default.png b/Littlest/Resources/Default.png deleted file mode 100644 index 8710d78ac8a00a3ea05bc35c3a3a1d568001a5a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30635 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 diff --git a/Littlest/Resources/Icon-72.png b/Littlest/Resources/Icon-72.png deleted file mode 100644 index 5b1ce47ad2cdad2bf3829b279ae371bdd1d86d78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11414 zcmV;HENRn;P)Oz@Z0f2-7z;ux~O9+4z06=<WDR*FRcSTFz- zW=q650N5=6FiBTtNC2?60Km==3$g$R3;-}uh=nNt1bYBr$Ri_o0EC$U6h`t_Jn<{8 z5a%iY0C<_QJh>z}MS)ugEpZ1|S1ukX&Pf+56gFW3VVXcL!g-k)GJ!M?;PcD?0HBc- z5#WRK{dmp}uFlRjj{U%*%WZ25jX z{P*?XzTzZ-GF^d31o+^>%=Ap99M6&ogks$0k4OBs3;+Bb(;~!4V!2o<6ys46agIcq zjPo+3B8fthDa9qy|77CdEc*jK-!%ZRYCZvbku9iQV*~a}ClFY4z~c7+0P?$U!PF=S z1Au6Q;m>#f??3%Vpd|o+W=WE9003S@Bra6Svp>fO002awfhw>;8}z{#EWidF!3EsG z3;bXU&9EIRU@z1_9W=mEXoiz;4lcq~xDGvV5BgyU zp1~-*fe8db$Osc*A=-!mVv1NJjtCc-h4>-CNCXm#Bp}I%6j35eku^v$Qi@a{RY)E3 zJ#qp$hg?Rwkvqr$GJ^buyhkyVfwECO)C{#lxu`c9ghrwZ&}4KmnvWKso6vH!8a<3Q zq36)6Xb;+tK10Vaz~~qUGsJ8#F2=(`u{bOVlVi)VBCHIn#u~6ztOL7=^<&SmcLWlF zMZgI*1b0FpVIDz9SWH+>*hr`#93(Um+6gxa1B6k+CnA%mOSC4s5&6UzVlpv@SV$}* z))J2sFA#f(L&P^E5{W}HC%KRUNwK6<(h|}}(r!{C=`5+6G)NjFlgZj-YqAG9lq?`C z$c5yc>d>VnA`E_*3F2Qp##d8RZb=H01_mm@+|Cqnc9PsG(F5HIG_C zt)aG3uTh7n6Et<2In9F>NlT@zqLtGcXcuVrX|L#Xx)I%#9!{6gSJKPrN9dR61N3(c z4Tcqi$B1Vr8Jidf7-t!G7_XR2rWwr)$3XQ?}=hpK0&Z&W{| zep&sA23f;Q!%st`QJ}G3cbou<7-yIK2z4nfCCCtN2-XOGSWo##{8Q{ATurxr~;I`ytDs%xbip}RzP zziy}Qn4Z2~fSycmr`~zJ=lUFdFa1>gZThG6M+{g7vkW8#+YHVaJjFF}Z#*3@$J_By zLtVo_L#1JrVVB{Ak-5=4qt!-@Mh}c>#$4kh<88)m#-k<%CLtzEP3leVno>={htGUuD;o7bD)w_sX$S}eAxwzy?UvgBH(S?;#HZiQMoS*2K2 zT3xe7t(~nU*1N5{rxB;QPLocnp4Ml>u<^FZwyC!nu;thW+pe~4wtZn|Vi#w(#jeBd zlf9FDx_yoPJqHbk*$%56S{;6Kv~mM9!g3B(KJ}#RZ#@)!hR|78Dq|Iq-afF%KE1Brn_fm;Im z_u$xr8UFki1L{Ox>G0o)(&RAZ;=|I=wN2l97;cLaHH6leTB-XXa*h%dBOEvi`+x zi?=Txl?TadvyiL>SuF~-LZ;|cS}4~l2eM~nS7yJ>iOM;atDY;(?aZ^v+mJV$@1Ote z62cPUlD4IWOIIx&SmwQ~YB{nzae3Pc;}r!fhE@iwJh+OsDs9zItL;~pu715HdQEGA zUct(O!LkCy1<%NCg+}G`0PgpNm-?d@-hMgNe6^V+j6x$b<6@S<$+<4_1hi}Ti zncS4LsjI}fWY1>OX6feMEuLErma3QLmkw?X+1j)X-&VBk_4Y;EFPF_I+q;9dL%E~B zJh;4Nr^(LEJ3myURP{Rblsw%57T)g973R8o)DE9*xN#~;4_o$q%o z4K@u`jhx2fBXC4{U8Qn{*%*B$Ge=nny$HAYq{=vy|sI0 z_vss+H_qMky?OB#|JK!>IX&II^LlUh#rO5!7TtbwC;iULyV-Xq?ybB}ykGP{?LpZ? z-G|jbTmIbG@7#ZCz;~eY(cDM(28Dyq{*m>M4?_iynUBkc4TkHUI6gT!;y-fz>HMcd z&t%Ugo)`Y2{>!cx7B7DI)$7;J(U{Spm-3gBzioV_{p!H$8L!*M!p0uH$#^p{Ui4P` z?ZJ24cOCDe-w#jZd?0@)|7iKK^;6KN`;!@ylm7$*nDhK&GcDTy000JJOGiWi{{a60 z|De66lK=n!32;bRa{vGf6951U69E94oEQKA00(qQO+^RV3K9=87&?)eMgRaH07*na zRCwCWe0!K3Rh92=?Y*ncqfbAQekJL=Lm&_m1OX92NEmdCgYQuuKDaZ=)lbI(XGTQ7 zd+&_;jpN)wxavh^e8FV`%7|A5eDD^OH-dyf64F4D?oM}-?)3AVQ&oGd`^Vl@r%tC6 zGOzDWLv@`>@3U*KRco*HTfe<_5pqAnH*5eAq34750sw}-cg|vM%!Nei&7|l=faVjC z1`&t|%|ElR|9}5T^OXo70uix*j0(#Z5&or3l3N!3mk0I$z{rgoAtLDg(0y}DHGJbn z>iyuoGW`8>7m(JQmC_qXDUdR7=TtG||0jURk466T=tz)_5h4&sHbxPFut1n0oIset zZ0{3mFYdkc{=KOV4pGp^P3Ke3`|pzB8#cU88GQ>W18stYl+vU$5jh1ltcMyM{3{eg zioh)Yu{xE!9ZAEASRld>wj#{dCb1Dtz=^%E_e1ynAk_r`(C`f#03v5OH*EMTWz64e z6EK-TDWyee15%1eDIrqcXi^0U01{B9COM3{BzqtNNi0)h86ERVsLjObwXvrS^fN%HC558d}ahi}|S5D^-=aU*&@crTpgm|JuZ zLg_%1F{HGCQW~TcNGSlyDTi_<{4cZt5kaA?h|@ptL%jX0W%%63&HzuBi< zA|e41<)@cF{fnQxX)Dr~zWE3~`>jW@d_gOIe)U_iW=)SolQk%JgMS|jnr)knX(l29 zW=pVEm=m%|0*+(hB!W#M;y78^M=jhwG@lx8x7*bl3 z&b86T{X3a}NEwjUn*o4^zJJb=ASmq8VIff_&^ic7n?RH{K-#g=0LZ%D+O zC$Y6r-NaFSiPG9!AJLq!dUi z=W~>zR5?UMAO+=pkUvP=2l#^|cTPWJjy3`!D8gIMT<)GOY5J4bbz@%9dHsw2`!Dd( z|8^&#QUKES|Jr-a8ng1UxN9$?Qj`luY+89;2sulY z)JDCv%IsL-@rM6<)&?%-!gqrwUKjxY862-kS9?1)u4=*RP9p&DtsifZGcUdg2y{A~ zMMRGJUO5QlzL&P~vN)YPbn74tc`H-W&;^~S0GdyVK#GXSg>oOuiO7K*0!W-(|Jzcc2L(wS<0|Gz~ZyCZd zZ~qPuXo5-Y_vr3**ft_g77ySkO$UfPj8V?a6ak=liiiwlX4$Y*?~%oacdz}1OBDZ~ zOEkPmkOTH}wGn|(!C?P^Y3V%g8+dBlNRwwB7_Uhw2&AuTJ~~T~H!drH2-rC=j;`~r zgTxk4F6a^#Ak>77D~bp;Fg_ij1!3RF|6X>?0SKzCR=P+YFEGVZ& z1C_fX9A=_5yj0%lWf09bmaGjC0WBd;{m{)cJ{=Je@L%7s3`8In0Sl>SuwwaC}9wh z_#cRfbH462!opbG*#Q;@Hxeu8EGeAW69@qO<<}mRC!X95G8!TxwR$48dV>5|k2K~( z3@tA^AveVitHl%*;HZEZ5fPO`dhFqsam~$70Ra8ci9OU+3CW6NTnQ18Wl5(}_HWw< zN4$e|T`>z(%)}g7l;*i`MKlaanRv<<6+bu(M{ZF2E}smZp15oo2- zwy-Q%}!J9nTCB1^Os~;*ojGqp~168lb2M&pf$D zZn*P#0Kj`rUg#GUq&a1o)sKikk;1--DOt6kTTWcohl!b*#MUD9OO_dn=C>oUR-DuX z5s{7}VbweX066_mZo%NbDFBe~{Omb#N$#ry#eX*oIx}aEMAtcL;RSUbR8pT<-7ZJ3TiwKRObR0xP^+d3y+n}Ib zKi1=fYi@Ze1Ct_ht{PM1C(myaR0OU<;x=?ddD@`0l zkrMA%nxX^|Nno_Jx0J-P^HmBYm0}_DRYVY@m9&-$O=BS_=ORwcc-jcc#~r2rrQ2e%q|QePW7Tfz*$i3qe(n4GE2 z$_?c3bNZ0KIcMF|(T0S%=`WTA3o9CJ1=n|H$vyMye)M}F&=78nHyv}1A8M90Yu6Zw z$|;3%9r=vdU1vOypB|)qh7KVr89aFZi`Y3ZP5^Mu>Q1W0Hd|6uO3{JIX}q#;)Mdt! z$8p&-aMTs0AfNn{Zf;X91SlAT%;9?sn=o)fOd)8Q*n*~m@5cpf`m83h><77-Z2=fC$D0LTdoDrhg6jENNy ziIPNK9yyR&g*cRxIi#Ee&y8b_HULBsp|w=-u{*_s0E?ibsAO$-AT0r*WC)f;9(rOo zffL!nLF@fRs|%=X@LYRZvT@K+-V36nP?Hp@prQ ztbjVp4n%(U_N|0UNHoiWnq|slMb4Ts=2SJYxM&Ou;7oIpv#?^Quw(Z)zV_`$5iV)R zSAY170FbUqi1{sn5MUj%3 zdL%h(6#%kp->7JhZe=f;-ZglAC6E*(GbE8ityh4!h5da;(PRSfo-iDa4mb zLCafC=s{c2fIZQ2BoOG9SPpF?0tt1S2P-pJHhkV@aEt%%t*8I1d`Z4OeI_+FKlyk6CCYvRJpM)pskt zs52d9!-t9pj3Ou^u+N`T>i`^2-QH3Hdy*_&L`bDo3RE--aWQ~6zS{Q(#HpOKmM;7Z zgJocPCUWC$q$tg~7n*X=986-Eri8ZX3k+wM+06wOv~a#7sp<)PS1u`Eltx*~hwwlX z1SG=~bsVfER5Dr?wil>i6s!P=df)e}J2Kg9fEhxp<}rbFcShe2~#_onAbLSf1o0wG~6?`?5D zD6(+8a>GjU{I6C77T}KOM)35WiP@YlmUI+x{_)*d)Luj_wuf-y1VS-T`1x}qcw*N$ z0HCL{LMI=y4Au&sd9I)O$7<*wvp8dMi1{Ujgavt`J3U#p066ckC`T_+v+Udi7L9{S z3>MdcfB{kd3~}k2q~su}lFlAMY#E_eLMrpaLN3|IWX#9@~lO$cjhd#3E7-HEn);5IgrzW6hd1_{mRxjFrn4 z$V=Owz$-hRB&|ca@1ft(7yjY@;E_EM&R85`UP(D$=tRvd$T)w6S+Kz^c?gSuJ$vop zval-?&MYVkFYHZ`9clsRnKX~u7{@JX!?xWMI4~WducJiLSb3zBqxr^zuRtKU>WYi; z<_)J25%8MVzYA@hO9=q>?Ae3UPd^@xh5gvMe;S)MZNeRQ z+>t%`)$9HMy-QERgLnQToqz7BIC0Giyzj%G$0K_pylGX@`*wo0jkUf~NZAz2TaZIa zUO9~@mT`kF7i*Z44CO`Pr5c2n3(|i}%Z0 z&U>AVj*iO7XI~<1ol6CP%*@Ql;>C+GI5>#DMT_Lom&c@k|BR${8wY1%dE})r>FMrH zl_NLbe6zgc9q*8b9(qXH+Pme9^WHCGV`I|Q*^bX%aR~s(j?qK{?Zy(b>&s}8N?Cga zcp0*^fOD1QoY#Zo_#m0Xo6D^Em;+Z3oU*zD0Pxa*8H7dwjmj?^tR~ntJcX0juf|(8 zo{j^fqga3XCbYJ9WAo_~EU$`XwR8 zd*AzB+;!JoIQ#6gannsVp|fWx7A!sv)oKl!&VL=|byV>3Sc1eS=JmvlsSqesx{9EJ zg02|EaRN14HgL1-`D8WMh_bMrf~AIX8h|QFaOMe}06_aEBdSI=V**31@cRMhkS~1a z2Gr^i6-yObb^I9^7#P4Mms~>3j4Q6VB6G;|=FOw4uDXh<^%z@+r=W=F*`X5#L|Tp-rk93W;dd**{Bf1R6R9zwVn;NyIj&1Z+T3~DtverYQK zpj~5C(&QOG2u;>vDiuPMiXp7ERB7uZ0CeV=XJ#zm(9jTV+O!F~ckc!O>gnmBWy_b- zz<8CW>Ing$Q%*jG0ASOmO<1~gY11V z1IWHtw+bQa)~%DzeeQFa6)jq{2%9%=&f4{KcguLq3i|-u+SZ!=t-rq?U;5IQ@R5&v zMDDrg9=Y_=OJUt2B5V?a07OyjQw);CLSh!I>kXu>;PBX+Pwm0+YdT;ZXcWqFwN7S6T_rJ-JgNg%Fd1wx#XNwLM-&gcaIjLpO}G*Kh%Hv+Yl0#s`eYV`Km!2v_xCrJjkLyRKJyt|fBp5e zapOi35h$goR-Hmrn}*gJ{kw)7M9?4xXyb|kI*LRSb=UtlKDi#K#hwsj;*`1JOBCA)gZmhTYpZy08NXd|NyIfChyY05aFPr%V$CtJ}3KJGlDiv_&uO0;e zw1g^4zn>b61pwZE-eRm+)rKUpDeWqh`k6E_&B>lG>QPNo3$rrop(QqATWsPGuXZJ=^Payjnu@K>h0aT7du~kkrvM@QESm) zVS9<5dg^x=8XB5ih?w=0BoXa;@pmW|i+Jp*7cew@0DWy51?@IQzH-oFI(GNE?$1sH zPu7vAG^7!!s7dC$E-)8R%xHkroAYcQ7Jwj0ti1WuF6r(F1%Ujve@se&mX2~Ly{#ec zdEhDR9T}CDN~=8o^u3bAQN}ptc@CwNTzB1d0zlR*XqD;6${SX82mtX>F5{xpGZD#? z5B^AmtrWumfBTi206^As8HriMGGxn0ECA#ymmM#yZ3fJ<82Lt|ZqOU4>`g#X<_1U& z8ieOO+#;Fa>W{1e06e&J6xEm!TgKbhF8~01{I9Ns(F%$P_uuhNu;Ztj7{^y$c?Dni z!WU2s4c0AcMQjDf^;EEAUJ19|b{qcsum8GH$?VThJorP5j`XA4QpSfbzZ&~TCvbds zfPyB3n()|wgB~X?ui%OcS0bK?4=YErtcU7CfBJ%+|Dm)dr4*5NoDF5WKGIzYbJz04 z5z{H_=i{G#Ie^irm`0`|tnX{1O2MFLG`8#+qdR`}2%UAtI&{r%!3)2Ckjj+~w03k8 z5#iZqpT%*<9Y+A@qSr1$rJ%tg!~&eOxRsvXGl{$IxepIK@Bpn_yM}Ca5L+Mrzu5J1 zKmF#h=ke!PeVvB)jbeF+#+oie0?@Vt2?i$}JMh9ko`nF7FrQy+%+{^NGp0UM5MdI_ zB+Ou&2<`jUdTYW!X`@92hLq88dsQjj>Emkz7@ZHd}~t&3p>hq>j_=dQwdQ|7=hNYaN`NkDI`)GP$&SG)8AbTyxhqgG3bAFh zghuvG*0F!8PBSq}OK50ndJ?O8TG3W+LBb5Jlnfu7z|Ot<>9wntNFfMl`{1xIn^7^a~f>bzUr8Lb|4TTwhXpz2cnHFY@8s8Vy2OA zthG8cN*e=hG?a15A+24xnxf{)>cf?pc@C!Qq6aZmwJ2zXkDk30l|tYu&2p=sj+|sX z@!~GbZ!Kfhf^JOL>ex0gjKCPITeb+>2Zk|SkD!$=AE4P!o)Bta-wfl?Jx)2Nu5QKS zUq2m5o#&`AnybjH5v0Xhuw`&!VG|3RB(PD!H2lAhx26y%Wi(9SH^3V0w_uXrID+hH z%-&L*-({>dNiAaPy67QP>yCH0;DmWt-P^X1{fzeqs4~!;j zSu6`FMaV7D=Qo{Fph;dDv$S=eOEJz~+m2s<^)w{YaaNdiggpe_fl!5U=5S>xDIF;!b5!N|%3LA{tYs>f6vl3O0~U8Wa{p&r$MC}^ zchlD0Lo_x$gV=JmwY;yh1AZA9o}{NZv0!n^X{vAoz#?P_!~#6LJIa*v{&Rcq>#v^* zI}>Ns^lrPH-vEl{>JITGE;$)9nZ@hEFDxds_iM-QH9^p;10yQXq}>z~x1qPOxh{ua z2$C|^(p+xU;C)Fe!h627Rql9V%&m+nU~RX-qBe~}U|>u@m0|(0wX%0?0{ODvoF8>0 zCXr~z%b|ZP!3+D7tj*tjXgOW^$4f9VZAI%wp@YhHHMw7kn(AAc$_j-AY%Q^6*u)Au zA4Ex<4Aan8SKn=nIZuZt0M&+2=}xW$hYE+B7Lou(*_?xl$v=DJi$JYusY@goR%v!m{oFU;aQJ zPFhi+C=rB#k}xoC_oh+MnqahoR)AKD$gRssZgZtymUoOLTP99in74@~8zo4RJE!r5;MuSYMoV1$HWtx_SEDMr^5ha2swuoXYwYo($N@%8*NG-BdttF_| z6IAQgt&XtBt&dIP-sj^cztB-s=qf8zLPDrBE1{T0>WR>JO)xxd5!r@OwG@CqT3?{^ z*Ow(qKw2x53kJoaLAhX1DrhMc42lI!rO-$iXbJ;`z$h3^&`LomSI*})y7(x@3`sb3 z&|+gtHnCUIz}3r_=)mmKfk~7xT5Cn5l|ZR%jo1pnEQl>5j+yE)qZV1I))LIr6HHeV zOjlz}Hxxtl*dmTu63Y+)3IR}$1dqIA@ys5^{wX=?mj(nH($_&aW2MHLUiTK7dg9jJ z0!Rt1C8?s6-%aTD&N$jjtOX}5Hc70F z6Jz6K2?4;+wX5z^MxX0m&*1jXgA||$3mB!{b14o!nC#0uCZu(1Uv z_Wp&J@7!Qqbl{6&X^@l^Sidn`xdJpIffA4qiBTYEf&`8wAp$gsXytZohl->cSPK30 zsz(;FRj|xrt&1vg;`S1h3xu_c6kf9gFmAm^61Un%freNHB`ip+i$OCnKp@eYpcRqU zBt{X1fkGkBC>1qIp+UK*rCcy5mjWsmv=l;3#XzADxJ`M60PRZuA>Ma@nY^PG2N;=H z_+kK{!E0Ax(d9cac+JZ9kyf{8ojPev7cf?i@#}@UNQI9O@iAAl> zs6`g_*rFaMh+;t$Gor*t<9yh%hsR8T72Zm(dBLTD7i zK%rn13ZZtE6KWJgr>rp4C>VvnXc$A@_YidYVupO(3^P0i61J9XVj-3j2@S2s&EbwK&%t}hMK>Gq7h^X|H5CB3&VB=yvvjPjqvItw}$gLH` zEU=bgS;Q%m$y(>^nFWbgkf*KFKt|-3N0obv1e}E`XhmW)!Dw$mT9Hu%?VYbXLzIhH zq$usDISKPy|G+FHmWA08TNayG63bUEx}yJa@S2qul2SJ- zt)R3@NGYw9a^TMK&S`OSwg(H+_}pC8FZuUF%&PR4j3toSq$q&7&D77TefW2GK8Jwq`Eky2GU!S3|zBfp(3@J6rD@Th5Rfp zYpUX$8Oz@Z0f2-7z;ux~O9+4z06=<WDR*FRcSTFz- zW=q650N5=6FiBTtNC2?60Km==3$g$R3;-}uh=nNt1bYBr$Ri_o0EC$U6h`t_Jn<{8 z5a%iY0C<_QJh>z}MS)ugEpZ1|S1ukX&Pf+56gFW3VVXcL!g-k)GJ!M?;PcD?0HBc- z5#WRK{dmp}uFlRjj{U%*%WZ25jX z{P*?XzTzZ-GF^d31o+^>%=Ap99M6&ogks$0k4OBs3;+Bb(;~!4V!2o<6ys46agIcq zjPo+3B8fthDa9qy|77CdEc*jK-!%ZRYCZvbku9iQV*~a}ClFY4z~c7+0P?$U!PF=S z1Au6Q;m>#f??3%Vpd|o+W=WE9003S@Bra6Svp>fO002awfhw>;8}z{#EWidF!3EsG z3;bXU&9EIRU@z1_9W=mEXoiz;4lcq~xDGvV5BgyU zp1~-*fe8db$Osc*A=-!mVv1NJjtCc-h4>-CNCXm#Bp}I%6j35eku^v$Qi@a{RY)E3 zJ#qp$hg?Rwkvqr$GJ^buyhkyVfwECO)C{#lxu`c9ghrwZ&}4KmnvWKso6vH!8a<3Q zq36)6Xb;+tK10Vaz~~qUGsJ8#F2=(`u{bOVlVi)VBCHIn#u~6ztOL7=^<&SmcLWlF zMZgI*1b0FpVIDz9SWH+>*hr`#93(Um+6gxa1B6k+CnA%mOSC4s5&6UzVlpv@SV$}* z))J2sFA#f(L&P^E5{W}HC%KRUNwK6<(h|}}(r!{C=`5+6G)NjFlgZj-YqAG9lq?`C z$c5yc>d>VnA`E_*3F2Qp##d8RZb=H01_mm@+|Cqnc9PsG(F5HIG_C zt)aG3uTh7n6Et<2In9F>NlT@zqLtGcXcuVrX|L#Xx)I%#9!{6gSJKPrN9dR61N3(c z4Tcqi$B1Vr8Jidf7-t!G7_XR2rWwr)$3XQ?}=hpK0&Z&W{| zep&sA23f;Q!%st`QJ}G3cbou<7-yIK2z4nfCCCtN2-XOGSWo##{8Q{ATurxr~;I`ytDs%xbip}RzP zziy}Qn4Z2~fSycmr`~zJ=lUFdFa1>gZThG6M+{g7vkW8#+YHVaJjFF}Z#*3@$J_By zLtVo_L#1JrVVB{Ak-5=4qt!-@Mh}c>#$4kh<88)m#-k<%CLtzEP3leVno>={htGUuD;o7bD)w_sX$S}eAxwzy?UvgBH(S?;#HZiQMoS*2K2 zT3xe7t(~nU*1N5{rxB;QPLocnp4Ml>u<^FZwyC!nu;thW+pe~4wtZn|Vi#w(#jeBd zlf9FDx_yoPJqHbk*$%56S{;6Kv~mM9!g3B(KJ}#RZ#@)!hR|78Dq|Iq-afF%KE1Brn_fm;Im z_u$xr8UFki1L{Ox>G0o)(&RAZ;=|I=wN2l97;cLaHH6leTB-XXa*h%dBOEvi`+x zi?=Txl?TadvyiL>SuF~-LZ;|cS}4~l2eM~nS7yJ>iOM;atDY;(?aZ^v+mJV$@1Ote z62cPUlD4IWOIIx&SmwQ~YB{nzae3Pc;}r!fhE@iwJh+OsDs9zItL;~pu715HdQEGA zUct(O!LkCy1<%NCg+}G`0PgpNm-?d@-hMgNe6^V+j6x$b<6@S<$+<4_1hi}Ti zncS4LsjI}fWY1>OX6feMEuLErma3QLmkw?X+1j)X-&VBk_4Y;EFPF_I+q;9dL%E~B zJh;4Nr^(LEJ3myURP{Rblsw%57T)g973R8o)DE9*xN#~;4_o$q%o z4K@u`jhx2fBXC4{U8Qn{*%*B$Ge=nny$HAYq{=vy|sI0 z_vss+H_qMky?OB#|JK!>IX&II^LlUh#rO5!7TtbwC;iULyV-Xq?ybB}ykGP{?LpZ? z-G|jbTmIbG@7#ZCz;~eY(cDM(28Dyq{*m>M4?_iynUBkc4TkHUI6gT!;y-fz>HMcd z&t%Ugo)`Y2{>!cx7B7DI)$7;J(U{Spm-3gBzioV_{p!H$8L!*M!p0uH$#^p{Ui4P` z?ZJ24cOCDe-w#jZd?0@)|7iKK^;6KN`;!@ylm7$*nDhK&GcDTy000JJOGiWi{{a60 z|De66lK=n!32;bRa{vGf6951U69E94oEQKA00(qQO+^RV3K9=91F7#}>i_^0T}ebi zRA}C%nt7BQ*LB{1_q|uu-80j(VE_yU3yF;jOo$5vQe3ovt?Xtv)+b_G` zTK6?$ql$46##peTf=F(dEI#Qi>{JD7gvc3^ETF3YAC5@N2^3YlN(i2ir39bWz0ZDU zsNkq=WTNIyO(aUE_&LPDrFa!y^Tx8xJZn(h_Q%B{=k0$=8Y97Iez)Z zA8_|i_VMmBS8(%nmvG5@*TY;B??awD`u27Kt%K5u=_@m!9${N3vWknL-$tn0O0|ILT^>{lKjnNKi1C0fMMasN9$Bfr*& z$rlx4Eyg*`ZH^FQuQFoH7Go@}#Fkcqi)nvZ9^E|aR11EkO-cf&_W>z6VXi5+|KlD7 z)L1K5y=#SR>NoP8AH2v1uKB(kIxq#*5|iFF(OjI zii$Bs$fcDR1vItD^NxRI5!$M%K^5B_lhsrG%3OE&iF*5!tu zy)dSiU;B5w{^}&QzoI_m_p26g>CF1#A8C75{GW*CNA46>R75I9B(D=7Dl9Hi4iyR* zZTv?*Y~~5)>S=HEjd|edZubAD+l`6FjVIJ)e(C~r}*IY zf6u{Jj$!-Co!|eq&nRr^sAVnoY1cS4bYL{UwPR(9z$_xD{UvQek!lH@X>ip|_wc~a z4)U>gt>m=fDjSBn_}6C-<3qq&$6&R}P{nY`DJ5PTo#G?^;U2~ho`C+!J3K=R6ffFR zd_eQu&lf@j(|I#*5+Je^Ngb#TK`|u@^ND=?%lESL$v61OmgREx>OMKKkg)xfKGrX* z$Z)kJsSh&L+e4*Xmi`i4xHe|bf#dSgFaCh~(K(Sy)WO5KywMIu&T+TIij%aGVBRcn z-YgfiwKg4`ZmfVcTz~UJ-1G2$F5A3}?WYc~kYp^cmRQyuQ%?iNbBs!*+zX=Z_uUdw5NhVR|Khd=+HyM$^PRb^(T zjug(f3%{HsSlB~zjub^MJ?Wg+WV+VO9mJ$8WRbRBEWB9#9H_L-j}Jpn~fL{&pjrCQ=U|L~$dvU^M~ z-8{&OYD^;wC#z#MBD&CMGBVi5$Y39}W{RR%V;Jb^Mg_6}kx|~gI_9zG$M~yzU)C4* zPw9_#jY4l(7m=a7MUv=SI3gztP|0(o0H+8FV#`kE$7cBB?>;3xPUQSk2dSq)Y+Fh! zA~2{*cPW;ha!I;NvGjJ82|-0w=`O`|$FYPENWIF6E+cFEEP!|)3;=n1aeI!x?xf3pynt2YplyiOOoE3#G# zg`*}fW*Sr}#g3k?l7lr^4#8IeBg{BoXIbluQz0-UMJ+YE|C@FwzvP52TKScP>ExS@|qzc zIX$nc8hT4P+JF4iA*dx_C6_C@#5P%KGq~0TiXs{$_fiys5Q27<9e;YqGji#b^1dDkIhG`-QjQ~ytd+VZElnss zK-s}i3GRPaU5o3hO*?H#b4Th@S?Z1l%&IqxyOVm(MB@&^(%kbLa zX(moAu%Em4bpDgKr26dP7I=e z2LeH1+uA;+YAOAd2(S9~<0xI6dwCz|t(1wKMb!{g2`I61)Ecv--XjI1q!^h570NCT z(}A&>9O?y>q)oS;lkIl731RWbBO<5)@1^8KtreURdH<$Cve0Iy7TzVYhN5;!P$l(w zAR}k7CU>CKvc}e6BSTP;W3zR7%T8h|+WKArBAb8L@tFpMP>@ht07)xPAhhXtNkl}0 zf~QT%-q2mPbd{XWH#3|y1Pu}jnsL@(1r8jWXaB@J%`9PASH#wJL-dqmnnFR#dE%Fy z<)6n+@Yt)zn5aPtbcttOKb$&LRwa*)&2@q?*#zYtA+>ZUA{`6KYD^ke)78f;x7!cb={CQk_-h( z&dP%?9nwceYx0S!e~l~Nf36-sx=)^X>P7wGjwd@su%7K!u7$`G7Hs4;9JTh?i)1x%H2jst8_c1>7!4Goo#lIxr zxbDWA_}0yTMixZQUN?vc>>fSNPv5A^xBtgq@wwmn&D`8DcPK#RCwlyfK0n?Tzp-6P~1v7ZkB-6fSF~fr;#%7y29}74m z`rPQ09@i3Iz3JEWip$@p=Un)4?)%{mee}^s^|o(*Lx2CPf28;BIj(cfOg*AMdg(Yf zed#~y=YH!q*}Z!=AG+cSee$^jY~FggZa-%epZwJiF*=9Vo0(=IkHg5aveM(QWl_|t zF4~qKE#^`!9BC(dr|t>_?;#RSU(-VXnQLTXjgVwsoSQV} z9GH;v-*W+*H*c0}uDON}fB3@y(o^jrip$c|w?dW;^e`~ctF;uZrHTi=?fZN6y8rqt zeO*@i24f}5TDFO_@}sbQQEPSJj$*!N1f`j9>AMD{uP0*9_#78+8pwyy#!xB8c%Ns~ zCqD5@eD99G);)Xn5XUjrS~hLks8O|#$*CF6>+2Ojuf6tKnV6VBRrL@4;Hv^?lB8{Y z)+!Y%x(yQxf%7)^bInKBE6oJ&!(xlkwzorTX6bC&T#{|vy$$Oso*bWz*Lef#(07iKu~ls=x^ zwTu1x_ve$9EW>*bz|7P*zA?q)Pw!=Fa*B~YM>A7iKJK~rtYv)WiZz7U2G$f&2p#n! z_+n5MiX3_KA(AtgsCvj!E<1OC3(n}{;k{GT(!eE~hj`?%=XmnjS7qwR9!^Y-wOiFF z$_H+@fA4Q(xEncp!?4tjj`P*8{fPiL=djjF(yZ~u-bdus{fD^Yt{=0iqV!fGUKq~@ z6}SG|GoUPl;6>Dv+Z2R$yRmrKFMf3R_pG&IoFU&yD5k2Nla~-gx+7L}Iqvw$7_l{+ zzkZO>qtonoW*?_-Sj9khN_TaTa#tS!*WdUBzJKT6@bU9bVX!M=SvBJJ`yS%h)C})F z_iQ5Od4AUq`QiOP;?Mv4JwDoe4fuQ{IAMWPvM<@6<7p-NaufiQaJHRnt z;=LDb<*Y56s8m<*@T1T1$j%*nbn6Pv9O-Aa-XwB{BhwA;eEJ9@r=H4SZ^Zok0*A*Y z=?MuJtgkRr5Bzkr$@{hr@W3B#quk}l8lKiBS9==l13t?Lnb)kDO4>|RCcnKkM5S14 z9IK5AM~tW}j>!Qe08zzqXspf!H}2x-WXcVft*2UX`m& zmiOx9Y>gu)W?8>tP-;n2_Z~hb`;R2dHqmm7tQs&n+*e{DQTg%y1{+7ZcM2ujH9HBMMYVBJT zlLSq?Y}{PcvsP8Ofj7rE-=vLq!dM1Yq8ETI(dTQvkN5NqYBdtbqS%^ko?V9%Ru7fsp0Avx+s+xl&!z>kb#VfngGyRC5<)<|m*BmI)QkPXM~1#+jE#&H z&G#S$1Tmchw_L4>QZ$bBOtx<9mWxm8<)N2m~ZT2O0{UwKbefBVW|hI&hqdMKAI<=7EBLll|3 z=P{y2iXAIeZ6$k_WcX$(X_7weG=zJD_uGs&8Zt4es_G3vMSWp>BMDk-q|7X&%q}D{ zyO8M2e8NIKLqp&fw-_Dnj(O_!l-DK#hu%n3fNCs6Hb+C#t1hH@$2QOf+fOlUUmxk| zBg(E9$FbIGPgg{LPfTxjEYv$;6y;WH#vd zj51YIX{Pzab$N^q^@t4j8XfKx2D?SP20b*HNbE#Qu_enEhlhfa8?Fc{s8z9`f)IkL z58h|q`Ybdw_`el^v0FA?Z>_z>#x9u1su*ikM124slq3z(NIkVi#(X_vzL7G&kTPG- zs5LTeq(PdA$A_Rc-`kfY4J3KZ0s$vT>_nXt3B{hLwIb!%YNcf9Dm&?^L{z&XdMb|Y zvdg0pS)3DfITxvD5Dn^mnu$*`wh3}9Ly}h1Ph-7isYmt)PVP{QSd-?gmMt$Dw`OG&$2wxt#Vc)F)V>fTeZ(rif%^S9e zF;|O`D@A0B7*i1lZ329&-|{FY$%r@qK24YW3hOPm0Xt@6?FPNI7)C>=tLn=d^ga#Y hZ%01A|K(2G{||rEhlWcno5uhE002ovPDHLkV1nCsRa5`~ diff --git a/Littlest/Resources/Icon-Small.png b/Littlest/Resources/Icon-Small.png deleted file mode 100644 index 1f11669597845b9ad3577ea779ad2319a10f5cc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4956 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 LNkvXXu0mjfBlTdB diff --git a/Littlest/Resources/Icon.png b/Littlest/Resources/Icon.png deleted file mode 100644 index def898328621934d3bdb81958d285dc74c3606c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9327 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 - - - - CFBundleDevelopmentRegion - English - CFBundleDisplayName - ${PRODUCT_NAME} - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIconFile - - CFBundleIdentifier - com.CompanyName.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleVersion - 1.0 - Icon files - - Icon.png - Icon@2x.png - Icon-72.png - Icon-Small-50.png - Icon-Small.png - Icon-Small@2x.png - - LSRequiresIPhoneOS - - UIPrerenderedIcon - - UIRequiredDeviceCapabilities - - accelerometer - - opengles-1 - - - UIStatusBarHidden - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - - diff --git a/Littlest/Resources/blocks.png b/Littlest/Resources/blocks.png deleted file mode 100755 index c409b3bbbd46d62e1fbdaf565af7f60cfefe0dc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2001 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 diff --git a/Littlest/Resources/iTunesArtwork b/Littlest/Resources/iTunesArtwork deleted file mode 100644 index b1cc056ba575a346e1bfa3baa189c20efbfe496b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61982 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 SlutY{?~w5D*Pu9-FCCu<>yh` zZDKC5sXEGMC3GDuA8qa)RX(socnZdn?S!o&{?9FwMrULM0PA}#nVSDqLiI%c&rU+n z?_2zRP9P>jCJWBP2N@ES$KO2}f6aLOU1+{~w>LWocs6;0`;oWM&NTWwjc;{`WGF~|UStHk+HL!aJ9vTG5;O)Fzjbdz zV<&s#6#<{`+tnpCJsN~;gx z_iSzW&-VAFC-t9Qi0J^EB}C0UJs;KtK1EDQ?8r{>VV)U0@|?^}0=xXMC+Tk1iP|NIzE^#1Y@L;qoAAA?^)!IeF^IRQF#6K2ICAIE@$m{ZGf0;pxkN zj~`Z5mZ~)sfdkhf1Vtf_%?q36?0RaOtbnSuFE31t?@blt44v0Lcwb<;N08aVZEa&k z|AOoI5lM^A#Iwxr0o#VmcW+J$o2xeZwZG$vGQ6JOIkowjLqTozknVfV0Nt0X{9v~K zcez}u?f#S3QkG4#+Pbx1@bM%nsM6XQm^8E|ox@=)Zns(6|L03huAYKQIID)aVf&p5 z09h|XH17AEk-rez1}G+{Nyg3Zi~ZB??jN}}_O-JWK>SX^gqs^_Adk4`DmGi-#(N6sWtin1<5^Hxu`K#1+0N)w$o_H6!`?zYo_IiQh>Q*@owhlj)c2_Y5R@ zhidb>r;qI_!CF#jdJ!4@WYcHAhW@*5>|t^QfXPEI!4*6)%s2m3eZi?Do9RiPOzfdZ zWie(ySH`usB?h|fMx%{99 zJX__{d{Mc_Ec2O;EpEEVd`loL58RN$vcGQ;i|dLd?i$F#hr+bk_s~@%l7Ga~pmEr+44GyniIi?f2(sBT{a;2uSHYD+qKu!2IW)w~LKp}V0tJ~9 zyC9kYkjvSzBwDUp&)D14yq`>GRD8kw{U1+X85ULdy?thAkPt+WRwBdAQm6UGj z?wU~)LOUG^?a?R6{Yl#IrbPci(rk35&UEwP2wf_3}Ko{-x*5HvSEPapmM{qov$ zpeHzB=XnCzf3ocIKaphm-_P3;Ec2t}j~D9>S<^AgZ8WXtg5<;Nd|37i-iHZqerxfwJ+JI=kcv2=NR5+{8Q8*62rjU_ z2@QC)5`xEe_kiuF;_@)q^24>n(&--%wT7arzN1|CXHv!ExNl{;u&2NbZjJw+86-w& z_OX7%Id`VXB;WennUTLd{#_%@tgE*Fcw$-Xl&)$8RACerjWRhB(jrct68ip>Q0yfvFae zkBfV*(?(;nd&xJvym0_dIn!3opPWRTk)^-(J5Tjk1FEMvY-^ubZ;XrI{%y}8F=1yC z3-J{nBkc4}i|db+`e$Bd-z5TQCRy(wE^aJmW!ZCp%g!cR7lLX^sy_rcq;L7gwSTG> z_-_eUD#;pyxZH1Qj~48^j`H^QhBeO44hnXzf_6Yjk%;`sZtFk45wwvhE0MpR8&U{s zdlyzv1`==DpUCR}>Cd*C5P^^Gtuo-jGiHCuAAH|0b}1PiYJ`VkSM2xTy+Xo&yBEDi z&}L@6y2x2Qv2T!M^+TysspvfO|LHU7V)-Cq^CfC!HJk_MU1Zmsts6Y)tr4ZE8|>t^ z@-BWlo;bi(;L@D#n7sd--C4zMP}SCOB?H6jkOvRfWeJ zGriz_k$1|mXG%~0g^I)vD={bl&0CS(3N0$dQCtE&B9V3@ux`uW&*Z#nMJ(iXxAn7g>KeKmV{8gmc6n+^v$ zx)vv*Hzm9w#B5Jz{fFcH&j;+c{~ReuEbjP4Aohio>BAgU2|I?{N48cK! ztODn{$etx!^{%|^)|1T>U`viDV01w3{XXff z2cVb&89Zt9OzNX({hsAb>afwQX5>rs0N zIO>)e3Xtssx}3<6H9sE?;vM19vj_(a3RL?>dcNb4_JsnYbJ7xz;Z^(kQdhUB2yNnB z!Y%^vs~hc+edSDphPs9M?LgZA_~be~p97JtiVq2tU2v2(J$g{_Uqbvcn&(hC%<@GW zMmm@aVVze&^+!qA>N=LM%F%f~t@5jZP#7U-JIZ|uJ$}T;IVF7|yvR zVs258{D_+-Z&%M>Dp}gZ_N5v%ZU6qU3%qNs#i5b~f<}GrYr{?%&C_^ko5KEkZ1?8N z;tLi*0gCLf-|k&#p0T!%AIBVpsiu>j=N~+Y@c{=l2dr-aQgBesoX>mjhf0y_A{oolzHF*HdaY78hoWXaDvioX_qC<$hd4NWRx4UXzy!(`<9IkeM0g!cGWc*{=A%+i>zwB zvEy0Smj5;mPzxYr8VMJ>f6YYMv%-Je%s;SJj-%{nun2OSyoF@H=mbog=)bZwEvR5^ z27#h)OMHlf!hTQAMq!!4RRbgcl_}j2YW0!vCL0zfP>jOA>zL@yajx_6J!$Q2E zAsyw9>75}-T&L9(+A~rWz^^!mK*s~C%`UDBT5d>?Z~6z=X#0n{N%`Z6CRuQQj)>p> zq_&)s#24#AdDd|kNI*fM)-&&0&}FuY&fV$MaSs9(+2znc-&D?>h*h|;3mxK*{no1f zj(QXV)m1RwgQ4?&mmX%n#~%5LXP~Z|N%bYx`oC9CQ?H~=CN_u>Q1&!w#JsHX3Z`?? zL@qsn3h1?0$)Sz{&f{IrL{2&9T{8|=eC9`-LiuB)9?1`;o6@VXurztMU$ZR`mRN-)i(UZJXbBXxSzp zhZ?hygZPhje0zW)DlFY<*w^$8)D&)q4y-;AkPl9Kg zW!BGqZ9Qc74YK4`&8B9OpYx<&`X;DnWK zcP>VG{4}JhT|1W&lj5Y*P}sbAHwy>gFK9%@6^{hon2TLMRgW9=(W{_r+SP{$YH@xk z1WLThEDDm$BV3)Qw~$7-A09N(K_@V0LlH2I6*eyqVezCRT`-Frob~nC`Mn=MM%I+NX zE;Dardx)f~Yg+xWE0+`2crR%6Q7RiU&UJocD6t9QRXv@bxB0yJ-QuS%H>{VsKILlSUF#^|n-`#qSM z-~LK&bVA1@g6HY#`s2m6!qv^#s$>Oy1hKiTi)n5Fs5o??@6uN!X$fF~vCJebNPhRH z{SrP>Z&?M$nXH)aG%^M7v*DzE@BO88jyhPh!`nD&qT%o?XDX)^xF8ceok}-(P5SL? z{NyEQtHTF#Pf0NF{WqqePCQeg(>>3tN?+aX{*9`Vl(0;fOL;OdIs6tVlkMM#_O*28 zGp0i0&MZLJP=ZFfkGz{pDc#j$s}9&$_5+}YIK1Q46A_nbvlo`D<_fvclB~d5tZ*T` zq`rVp{o341hQsW7!AsEfip=RUe#Ddj(xYm;iP1We=J_N^xw-ZjSMMgNzQcB zQ7RGdJ23LV8_A{{5s~bycg7 z0eUBmzjLgAU|4J89#big>-yz`omc=>i>eU5c-_9|;v8UqiP^XL6AENXwN`$y+iP-#|Cvp9Rz^Xcm9{8HSg#fB`+E5~jlwG>@WZXvPi1^1*B6vjAqX<}YkrX4`RMKZ}+Mip$xFX4q|t@f)=y*H4JEH(USRUu%AFFiXW11;1sj3IlOd z&yko*X$KEdzMZ3e)hvQkPZ-zNYsma>i=XwCOv*jR^k#Rr<4UpIN6HOHaQ;~2B>~WI ztb77JSw$k}%|?IBza;O{vc>YB8PmiBJx`s-d#+sWceKLm?%>*8n{tOEhb=A5VV?AP| z;0+k(0^Gqj?z!P(>!R5gM)sM-D)89Yw*l3ouQtgI!YPrJ0p$lW*P+8@BX)Rta^>7d zXof4hbhW(p8H|Ok15eWf5OS%Q6~*D5HQZUOt@yU52&gAP?aT5M+IZa%P*O_=*K!%X z8@ga#f|qyJP@dI6UJkn-t)5mGc_XYn!p|y+uIY0FAyMU%bZMWNIgUJqzUvtmfSDg3 zs5_aGD|%l+RQ6&%ESCCC78Pt9^bC2R$FbwFyu8+N(iWef1tcPM4PU6saXw|GXT0xS zweU(e*tpD`@S+FItG|D*OWwGZoppuUi2-&qD)jB!fz$8|6V9t=A_*nrXA{Z42vmLs zM_n9#y=9tiZm12{<^P+haCK!@0uZ)8b{_#khUX924@X8Wb>_L&iiSS@SE{eECN$-5 zmPQ%7YbBW2rtAH)o{}_8?pE8YQ_YQLx3_xuYJY=)hp3pns6%Z4Qpjc2vu-|EJvAkA z`qwybM)n1w@%v3lVycis6JgE(kaPDamGc|Yz0GA;lSwd{RoT^4fDiiC?0(DNM_6hG z=H0psEQ~wr?gjVZj4XRnaf=SP5g>(G>uj|(9WV{RJ@eb56${CQf~JCc04bIThJ++Q%U19116?WU1nEC zWKvnhH{^jHu9#I@7xv`?UKhA!>O`YDKa>h6a@&0PwOpuk7jn8`u6`3lp60>Va3>OF ztRbi&gkz^C@6od*7&GOxA5c3wi6FmcB~obV{6~}ayzLSB!=XB;g`|cJhv&xb224(^ z%{NqkzA6Loj;B<&T`fNZ=pE2UuwYG0(uey`Ybkp+mr^6w#sk)@CoMmdsuWMoLZAn> zd=X0i{4_EJS_p#|9GRg;b?n}boD|0kJ^5l4;G!s%71^Z@^V`Z2J2W-BN4rixTGB>A zGEUrdDq2dRwes%tWW(s%vdm(ZmuSrBfD_;KQ4sYWYxP9K-!f4CbE-VRA2^uYT;n?_ zZ+5>Xv7e|=O;>x*yy3YOCCOYTQSn4zFtq}Jy$hEmF7>0q*>OE~!_b9c6Q96ghw%C+ z@haeLe+Z(P{SHJ!qa18#q>8e1LxkO4mV3~-+e!&N7WH)>C7BW zwr)gXo@ijepN?wzgFmn?QoTZwj{9x)HB3d1M9V1SL0G_3fNy7XdXPFkfWP}=h{yR5 z%EuAy6HZ4VQ8^Cq;3_b>a<-{OfbBa~*k6kZ=ej+};nYUiOXiHo(~5Z66jx3#SW(-? zGsUD_qLEB)2dX{KQIo48K^>>U1q=>20H7dm`%UlZDaEZo+T@GoJ(IV2p{ERV$i+^I zr&X2LU#d@l&g0oPC>b(9jT+{FJD{aSc{WyS{l6L+SC}QmR*Gk@lDN@V{Z`bN=d_#? ze&*yT2OE9kU3uwTOIbhC8PX}%>l*^YSo7fxPPe%{v6Pa;T6{pxOLnIG1UPtBtm5b< zhy?e0^-?xI19Rfg)h>!X`9J8<{*>@v7n2+fK+^16oUgbca#{ z?JImRSn>JYl9i`j+Y30>1J|9Jt6l5|azack8bjUCquKEsA1kG)XF4$M%A)vJ;N~XC zAYs&?+7E<0Nz4KJG-cFJj&|W-HSMORW{-uPYJE0*l8lPBM zDLxiV-V_V|A_z0Me7W-C2MNd2Hs`Q%c?!TO=(N1s1MCkVo2u8Vi=WhQ8n@~-jTXR^ zHP0vmFVdlykP@@8puGdvlG7vCJR8f}jqGX}#JBu`{fVO#%y|YkqPHk~mRcOw_|j4Y z35dVLyW?jmFZZ&O#_U^BU7E{O2%#sFh}y+Ke|BI4$Q~mSFt!2iUrW>nI17x$SMtq{ zE(1pFGMab!#zR|UwH_vl{f%pF8?Po?*6n=GFV-j&(y*|vMz1rkc`VpR{Z% z{LejO4oTF%Q=$;?5K=Z-h0p|zzPbM2YPJ?-x&BPrdrdo?JP?6%K^OsAm3_Z@0-ezd zPTy&JD-{B%kuXb;ac!a8EphXXKdri^n4DY;mkR0{a))_tCWc$poj%X^m6Mc=WYW;E zp**#atW$Qk4!Wq){_@qmlB#kT>rdABtlRxlYj$xTJtV#CE=gtn2+F&19`owxv5YdC z23t-qCKQdiH$s`})V155OJ`h9;1e z>{ajKR$_nR8hUU3`vBN=$nY7$794G4RH zAncwF(pW1N4=uLJ>DPe2H9!wJ?1`;iI)0FBlJ56+7;eg8(i)Fz*SY5n?)IaDk*gl= z2?{>dI{GOwDtW;G>YLw4a-%81^{yx%Nw9y z3hnoDUTpu0xKY?)8qxQ{+JOTtBmWLe^nqEXRvSlIry8#IgTV8)vHZgm8=H)B;Z&Ib z8m7a`CEupPND7vo0n9~F7jh;rN2T<*qOb?16?oRi!QMf|m+i46s?jYxFBh(|lhTp_ zh$&W|0!$er+ttJFzoJ1a+yBaf5s|`eeZ7L_*0#CPBmZleIDPV@I=ptP3E%zqX}z1J zz|l&;zx@j|DXDk#9bscmYi;o(?1x0wiXFjy4SG^*@j0YU>~<9j#05)lpx4wyci)fI zkKK%8&2x+wBg<;}FHacAZT5C`5f3`Vqgn3u_%~F)OE3en6r8)2HcRntFR8gWnjljAuleyG5dSGM^s5|{B`&=Rbs zRDJ{eNMT&bOJJbtAfCL&xE^;a@bCT7!cCAEMAj8)!7CfjHz*c%aO$D??n4K1Zs3c% zZ}w8|_M_(9AuGS*0nA*WlKflkoR0S!2#47=+UPW+RPH82YC?V5zLs^RAE-kGAscJY zj+mXrG_IH$RXHeMo#7mXzE|SUqDlm6_Z=4{e=zOgLz#=RMtaW?Acr{P4?TS z-RrPR6=7D8PWjhh-+tk5ze0YLM4!q~n`qQ7o&P)!I7ju@+cF|qh&w#HPO${#jHLz& zX?G$Bnx`&m&!%=Pad(rL)UQY{EY!Usrsy4T;d)NTtzaLT;tOf5KvvR0i?4SKZaFfP zM;`w=GHU}O9t+As+Ha$dW&`7zFwd>5!~)L7GO7^@q#})F$5%L%UTb%lwdU&6+T10T zzqY-dfo^6(oif|n#&TYF;bl|lNBEb`Btig^U|RW5L4M$$pAk#x__nc5JM`0Xz8 z8v*mP9*3^af_@d4?N2vg&(`Bd_r_kNl~0{SD|rg~uwtUf`?AI)x^6ma(xm)~;tUZS zs3HtCfazKhP0SGpFxb_%JJ_nq%DJ_hA}ymmtfj!vE);A$Zs?Z( zT&LgdNx8KB`~8&dbalutc=3n3_p0{Mxg$ z`4ZGu7oHCJ?~BX3Rb$b z>=@;DI!GO|*(P1gE$Zvjm3q<`e6~FoN^6P7VIRg!p$FdkVhps!xaS5!uji^_t6b61 z#lf47xeYk280_&?Hu-I4+ZWwZ@v=dS+={yqeOZ(g#-%@V^Vo@oZa|n^PZH%q%1mvj z$!~Xdy%}8(r{jm$!y!G2FD1n3ls>b?K@#pFNbrhsrvTU&V!Tnvs$u<+iPRMl61if8 z!YGYPThj?sMyaTw`4kq4}WK*TRA$+|-Yy zMFiJ>+(-z5*VB%T=f8e@b$P5nuvrrkn6?h&$i zLYl(I^;Gh3jlN7$yh7li&V}=rmh*GVH)r2fZv@e@u=d1uR51!24=Z3gvYSUDszj=& ztHhKGY+gkBIF$rjA2PE&GVMaKCC!8Mz2Ml_5WlrNIr{1djq3vc2j#4@b%ez4N;MD_ zI-BGkN=Qq;`qozaSmU9@G!TWZ41N}OQ1cfZOt*4S zETsX*t!Z=qQXj)Ss=yA{M<%G`i;;2LGb;NAero6&``r>TEv8i~_=o6`;spzTMac`? zoRnS_?MCyxB0v51=T>#Ns_fk){(FXyl$qm3y=)!Xc69I4!F|k&_|t#zfvYBBE&&1?UjR5kx38sqBE(we#h}MhC5rh zGmO-C(#(S@^(nFN4tfM=GP?}x%XQ`T@;V*n&vE=6EoS7=Wmk0Cegecn0sAd+=EHr7F}CBl-x2#X!H!hu8*9*T^)t zKT$g?sBE+4S%<$~Apg}^+Hy_i!I(G-Rf`xb|Kd@zbFudJOC=UL~EMn z`#qZjM_?>h@!%hS7*-+Z>(13NO-+-LQCoZ2>%Mbq`SZTH^0ynmdN$xDu$G8cZgWeY()q_PHP7XrOTRcf++-}= zlX?iBJ*V;Vp#`m*8P4;{``?gHK9h`+c9z7CI+d>qJWrxi7V05>M5#9WSwdT~w~lU`+&W&Q2h+FK zlULnbuFAm1LoB2UMkrw=_lpJe3gXml0c2TbnwhSCqaZ1n%x~ciFw(~6QvTA>?*KNhW0OHCu?F!f>w zrE+y=?gR1bZre>(?L|u?`Y!FGJ;|1ubV2@JqD%}#arcW0DI_9q{#UPxTPLo0o2(+n z%W5wAjofa$NO!l2IJWJ&)5gQ2@zht)@H@)w zMDZRz>xI?4@xND?X1ede9zUKbte$n?UUdbDV7wvFmwWr@(kn6!KZsSzrL{LjPMg+& zrT+NI!VLV=hZ*f5muyDZr`$Yf1KS|Gga22Gm?Gz=Z+D`J^53=nv4Q zM1}&^*Z4?dAq87jCAU>`-92LN+mKjdd<5?fuCA^wstxPfaG+Pe`{!m2Fmr~F;VE*y z^HozWs+Vkcy1n@A0qk)($?`K1VlsKR@M+?J#GpbK^0tVFbOs~^7vzyI=(%wwAQu}4 zFWFkH-16JeZC^j{=;$a#;6qkL#l@}nrH{}Egk_A3x^u|oSv>X#?J9T~GhyO8^M;6w zhI}bR!JZV|wKOBhm*4}vCbe&;>he&uB_xmCkyjq+ZT!g(>TSMbWyqFX-D>)dTTU)vkR7i>|;0B0fVgzq3vX02ur8Z@-CPg$K)inU+2;c{#?6 zdb5{5ZAz(olvn1_Aq&D`JXgZBIAd6=3f0b=)w_k4eQwWD@y+|@1Y+u3ZVO;@Nboy5 z?i;fWtOUh5SI>lj1ZwH$Cr!_v=-~E=*Ab_p(h(J+1gbxVK>YJbcHilbYXO+a%9|G{ z?3|q1Sub2v>zfaQL36F2Pe7O`Rxd?GL`~^45qTdAi2x+8%ZT(6db!6;%AA-KLw$+p zX5f2`Lpj94sLmiBNYV}Lcy2Zj6GeO~XpkIVR}BzEAf`d;5L6W|^EfI2RrN}6m>UysIo<`GR&~C6#^-B5e<|M-8yAZgn zPK_sVN%Z3OgcU<+wWz`zUyoawNuAGMU@wsu&I@vqbseW-5a$aK0n18(UcVkq{R0(y z_(NOz6ki@EAnIJz^H^R|m-^$pygUe$iND`Jr~mK}HXdL0vy%{pv*FzM=0$bbBlsl( zN&vq1KBZ-jN1u21PkToPL7UvMp*II6CG9U`#YlCKAmmtvGYBkU%R5x9T3T8Np0lwz z>N4#h&SX9mHd3lW8q@uSnn*3{DKrT5MhV+b0`xQ;qt%7e%ymAM2 z8tgA2i>lhyFbT9u!EBtk^{bJ1+ii3hl;>=3W!vHL9o{YSv-GTmuQPzAJc`LI@%Or_ zc9k#oU`&65#n;!D?-?w_%d6fplLp$V-|J1nDs0WvN%;sXzwkv3+_?kHD368okr=sM z-Cs83Uu`kJ?KGOdDMyN-VbxfoS$~Y!@h{YcmZU3Smgvvu%4gdCFp3hE+jP}HBWkSzlZ zoQ3TXnh4y(0i#8%NGqOCTs7WaM>mn6aMVG^<@fxKE=z;s4j#g~kfaqk>(TOh%it*T#MAgr=rPW3N~Kbg6rKG8y}^c9Ir zBFUaBC;BKVm1@Lhs8PSy1X$hS4)}VORhhmY%_JDt5l^dG2?!&*_TL?7ER$l1jODkZZ zcv}pA-+?n;FnD&N)Wb&NI+^x3(uiU%akZAgT^HHuxvGmCra;;>ob$QQI@6w&o=eXu zN%x0Mp%v|5E$QIM4AE4`9p5|}!;U-+X#UOBqDF`Efd$%v2I)h|$Mf|9VmA~zO1UF^ zfX)B=^c(+pW2+9Mk=gz}CdLZH=fv0Uu^;G%tX?hf!jpawKN2JT;_PhtekrX9aW10t z3#gyp=NujLw(JI#@Q|pH1V&*_ZZQD3e%An5u4G>r3`IN-PKj-=0yX5iInFK_I8e*;nIPh3t zc~>hFTpREpu$TP0v*SNr@>2H3Y~P$acBzvBnLwr`6loM;Ubbfzn_OgHj3w-%GI;RG zYihS%h2U1|T&Y{BXG;ra`H13f4GWYG0SL(fe;m&9s z&^%5v1$9fQz(r(Ds^xTz?F6ff@43di=YG+tlyu?58#8rGbv~QBFGU_7)f14!Xhl=R zMBAeg$h}3@UKXGGwgr@oVZaNP99k7Q{2gW&Q_`%93c`@%yf zbR#HGBG{4w}JO7xWd`z7&qv^zJF-$VJ?W2Bj_C*;xYGc*oZWUs=lAA+#Ai8p3l zZ{b`GT_nI~Y~Ev3eO7lcYGh^8pYZAE6E~E7z$UmC zPh{SJ-{=X0Jglcg{yiC?jv$Ukys6#>ZZEF&oJ-W|d=8tNGgTE?NF^gy;SDse<_0$pj)K*5T_RgQmy_%(@MXp3^ zZr7|PPH0jOd`cqj-RrB!C(+x5ugOxZIW4$2rHWgKVYguQyan+pS8}dFE4x|H`6g%m z#jfgTC1Kw7=1G2L4ne@l&R#-(#zF!Umur%C5tT40*A)gS3K2D-cgbU=7NLnOn}p&Y zOsh`$UN7Q_+ugeaufcAvi%OS(+k3u)QLRtZGzCqERIz;3y7_D+EW}*u6y~Y(^}M|Q z+H@sixle6!A;0@S4AWFW5xs@N*r^r+Fz>-KJ$^^X=Px%3iF-u*8hHm#=o+6d6EZufI%@HB%CL- zDW}`jxZHzeD#b^@)jE5nj z$amUZ1#C>SM=)zvMa46K`J}&)Df5}aeqSTufzZy1Jpj(^pYr1fT}o#O@gdnlo!TZT1vc&aJ&xAr+|ZvGp`Yz7OLM% zLjPgW{!=7}wmR%^bAfxX-;x~gFA;Ua?HP3q<}HwolaKAMA34t{=-oQleXZjI>8d%D z!0ZdhFp|JH5kw|9vOH?!+6Jop?LRk*hrf;~c?8I7yUIJ9qfmt~aB0>&6It?3Bx{np zy%`MaOk>M*BU&?C`=X-PI+=P0MT&Dd|Y4OYzyc=&=0R2Vg|LiZ@B&j2HlR!w~-{{>L9>C*$W?Rw9~y6 zb^^{c`@ZzZrm=B~B6?IsR{(SN>-Xn6khqx0XxM(-*v2?StuR?9F4sMvZKikpQo7r{s3Y&pN1K!~#bm@4oH1rp%SzwOb>#`Ot_<+dxA1O=`2 z+kIN7rRKs|U7A3E-+3bv1Or*J<@ngon&8AsWceO_+1`V`NVE$$0VT?%W z$4GFo7F1IqQVYq;u4iv?ZkL*&h)p(0NCI?*?8w{uKUD4)KebT!Qt$;*HvD2l{MfvE&@80 z7NnRGkiXT`)XeSde)AE7+EfLErYh$tu;`j^ymyqMo|ABu%6|Z(lhY3t0grbM`Lt(3C&-N*g#(lCz@nKel-%kP(n$ov}gEzlh2mP z9kkuRjS%rvt~-FCx4QRIEzszx{F#IIRDLGmxQk%eZqVZIi)Z(Q5BQ0AOlK^;{6^!*MspV ztsWzc+X}KuZ&NByb|cVd)r6BgyFOhb`Olp3zanzGdF$IqB3Eb|E%%QzNEL(~AFNkA zM%Eq+w^PHsByA9K2tc_U{4-z2uEaw3DOg??CS=;*9X?nKe56%+Lra$a!w51xj$OTU zRBC2o<6tNr`a(Jn-cD=|;LzcGOAuL84Js~r*@+SPfQgwyQ~%HxyR`E6usS7XNv=^O zfAjmiGaI2b)-!(Q@`Nu@AyAyPwqD8h%^l<7?62z4QR5;io%8MU-hY#E#Jbl(e%6EC zdIZhmGz2c<@e_$8fou>VM`U2?Arcp3W;$1)C=(oKwQ)l;9I4e zuX=|;jBisX7Ed8FA3V#m5xddSfmH)V(0Ub1Q^h&HkS{H&G9-Qu^)DMtJWsLi0NeSE zQ{Kyk_}{|srt)3oJha%@`DP@UecF_!An9_hdTGo^-aA0h=hLTK$tj7yt%aLB$nYio z>eGFfAQ1QT6UJ~O`l(V?#oW6HM4%7x+;6|rG8FAh*~L)o%?<3-=eKkZwBEj508Mbw zx}_xDe=e%27yfyZire>)uOMu;ONYy+dm^wZUVvc=p3aInYb29Ax}8nEI*h3 zH6nA~)n>)kj&K)twS#Y9enY~P-VZeVfi1I>8W?=Z2Sai$^rn|05Gm9|pHF&wtd3Wd zZdai|Upac_obTod`u;q+NCQXQRRHul_s}ZdGqwcM!V2HRosXN_6lb9j-HVMuwy|Sa}+gEUV=Z^wb@%O4}EZx#cBu8BXSeuNkt^y&}H(;DsWr;vn zru`<|r(iw05(gamcq^vchqQo?(Ht||P$~ztAFM3^p3WT9XI+O$obua38MF8m+}N0v zYkBri&;}k1lc@FNc#@Nn8M?ffhoiC=9i<-;+;Lt1_sFL@ZdR;m z&({>yMXXuBqv9d{SMGjBh-+;CH0G+%H=E%25A;}Bs-2T%wO>pD)^DDd2;PKE!{$AY zv9-0F2#3dVPw_mpgUmZltp%DqSQyTW$v9dz-piB);a}ikVq!aYDW3b`RoWAtjh*{e zOUw^ps%;RJInZZk$qUQ14(#cNu|n}<3#muOUv4s*gG(becyH%u0Gy-J1CCc9aMv@W zHsmKj{mS7t_i}v7q~i7!*f_8epI3a)bnwv(m>ox*{@HuTsvdl#LS}Vz-uLTFYG8{A z0>CRwR_(lt>TuOf=E9Kk^>iDnF|*m^pQ0b!8O_y$80R9*g1ha^kZ<0|oLeV`ft}!a zKH|YqG22&sS_N8v#Y+Mc)Wb_GEZDuk zheov8jpEaAW2i_WEKyT@NV&oRcs6jgBUJM&k}&D4UWavd6qW8za^O^wm366*o0CWm zuyWlS|J28#NiM(tYpBb?csrCYfZx{%|6x`NeFhvx=orP+vKKF z1{$YedAtJtLej)Wq}>5{-b{S+OTD0t2Bz`A;sIkg*YnVZA76U#&Wun#d|QgNMGRgv zGt3Z}42DVQ+a9$zSy<4Z5$CEB_$z3j;!-Po4+-DX%cx!-)9C~|0*0)%%_hMulEpBq zpUMR-TF*a8Xx<{NxZLfH4fOXKc)O49pE26}fnNFskw4sgldG$m4~LpElqC2Pz@Y(k zZUw|qI9Ze?)mJtp-J!=X&yFx1fI75t^?i!?xu|51xH(0CLk=ndJot11sVxl0dD6N< z?>sfI!Q6A6mLzo@i}pA`#^D@0?byH!e~~WI%BoyiQqr;4iXeDs1`ImPZ-4ysu(&V3 zSl;XtHh-W zH_L!kT?6OrLYH-rMe*<=V|0q$R7}vkXZs$^;Uh73PbRu7`}*!8swQoc`yp~F! zex#nxn}M4}q9_&)o`+;Zx5UL?gRaW*D`K_inE(2BcE8LFw=u4cO<^vc68P(4E^DGF z$gOJxTeBpDJyeWjKE7{dX~t}O%6!wjxQ6EL_ScCRYM7vQ;J>YX`WatfdCoLmU`V#p zCA+25>PMvp9H3%)-=R8>;Oc>K)E}3bDuEqQ@I69@Lq~#d4q$$l5(UWE=Wx7CC=iWH%fgb(FV|K@j?`k3W%aM8=H zWjlZWerjJKIfl0HE2YY46vR78S)EspENlPSwh^LZYaL3%KkjIG5U=oYlrNw2oaLAT5XT^Z0y9 zw=;D|ZOqCJlbKY2DY*D7jrl8K!0LQf1vlsidOF89g7EI;kIn6ym2&li01y~9!CNA- zlg}7di2QtxW_({Hu}RB%Tq4+%-{C4keC+@MB5mpV5e|_nXW(+h?mi+}W>8Xgo#n;} zE1O;AAl^e;=E)b$hq#VWcgW;59g^-6{=tqJ`1L9mbQG{tIrx)b$ZG5+wyVMP+{`_V z&TKE50z*+w@wC48{LYu0?%M;8+_ry~{?#t8*;WdXI|u>MA<~gv{9s@LaAiR!6ATg6 zXz?1Bw4W!SLVG6rII8`}R&T_zflQq&2=taP&Ll02e8|y|`U}aTRZr_Vc#4 zbZOX!r|j_UPphptpPx5{<|p{6sGh}{=0G;|xL3OT_#|JAZq&y5=f`ZBS=>s9U`eG^3YBCt`CN()N23P^X2P*QS$bR#7oO4lfncmo1bB8(CQ zq&t7d&-eES57-~T&dz=A`-<1=d2RMG@G@QRrV+_O^LpXv)tA5i_SzKi<^H=_U=zTk zxg1aEExNd(j#}sqVe9_+jMC5ecUsHL@qz3Q>&-)RwkZmy9PKtdS^QrT|0m?MzQqVm z+#^Bi0UHjinQe`*i;2?2)vWsEd$sBM z-F7O!Avmxk_xtE5)xXV1pWF?Uf)0Gy5~g@|x&N6j)*#`ZM&|Ui4;k0l*;%`pBOOHi zA+94*ubNFv@WB5VJT#Ux%&+L5WV79??WoHp|N7zbYHO$jix0`v=k>H1vG@G-RX}KI6$x+RI;d5k=>3TvGER>vpnpFB1pGEmy zeg^GGu|F3Af?l^fm#Cpt@WH;r@S$5s=(L}HA;iCW#a)`F?RVu*UutuR}*|!rY zd=ykmOz@r)0{oMZ&RunS+mcYddnaVn@<|n6x@9>{1?+cHf(3r{?7evtm)&hv2SNBr zu51GctCrW}kan?EhN7)F*MAtAy#-~dR-oLX?8JNH@Kz4e=hg^&01wS5QM4~St?JG# zq8nv~)6PBjN6)Y3-8{jLpjQ2lwZ~)p5R1-s7KpY0ks1um!iIyPI|4#u113RtS?$72 zX6|xl#JEQBvv8?&9da0|t%VNu7Vn*}U@_+% z%f+Nqg`nXrem}mOazv{qSDi! zvG1xpiC^X;qO@K)e6QncZu{{azG3AnvFB?$GnDbU_jGr_epfX6)vEDE!D2iQ2&$OK zem8Pwsq5zS?*uI5nQu;s8p_z1^mTI((Z5Gxh{t*o)M|}RPsGNJfdM+sJed0Cs`@74 zll5G{Gh}^bm1gYmu7iEeO7lMt_0q@@C_c0MQl>BT3?v%eek#ck!~d?V2nqNc3oqyf zy9R3jcOa#F{-^$2r#~)oG}>}2;Uk*Kz{vmpVe|F7M=MLE67F6U3s;L;@9g3XnJ(kA z8M{H$7HBiVHn)3lZ=`oy{}VGepSPt~?b-jQKgJFOoHqz}W;ax-m}dU(lESVw0!J1X zcZ!_@Gj0E*N5SP&$Sb!xjjLv3GpiOt9y33+ciT3D&RA>7IRq@E;NO6LH7TzWRg=j> zul(xIvaKM$n z0?X~(`B(w?!=?w}K$pemINDnXkjDw|dl9$pD=uiUk^r^u6#wZ4)=`|_XJ? zd%E}bhe@kcTw1WtDSi&}lqAS)*JUHMM%n>ng@W-_blq7txJVWGph-TR<#J!@-owto zRycU^I)z*x4y*_wENWUf?o}_~1?w^1^fumPZc1*CppldZyf9P^yqF}xkQyM+$s2Qk zG+w0OW7IcYXKqShKt~RkI`RRXyoAI+LmUqv=)b#IczV^LhNR+&8AE-yzMOThwoOv2 z;v&eDpsiqOEfSk785urj#nnRnf84LquSWu)y{0RlhRet;%pvFu2O_0@R(H6Nj2~zW zE=m4anEW5H;Q6<0Hfyovj+T#T=c}{0^SFyNELcx9T#Z?3<*`C2*06_}`5b0?|6WPXIClt>3@* z_8sh9Yyx1QD3EFIMTKSCM+#6@mDh0pVq`tt+79g2ur)i}d)@JpymB=SaItWH4@i~V z1?RMXiP)ZXR5}OEU?ckFJFf(AAkYj4QZhY{&bEve-u&BIl`}6{9^U&Jf&{F`I#k8q zszk#=Kx>D~mBl>}NR)@0ppXZ1ZI>Ujyx^#bGEUr0*SAp7-HwCQBl^oUh^3mf!7Elf zHAOQ=mpnRl|M>LEQ&0qf1I0_}IXhtD<8qNX($}0bX?xY=QAZEcD)zs~Wy-AX zNXSTDN1MR7Q5|0txHh4nk>dHMIkdXp73dH6=;N^P@2R*iR~GQGR|Eq7@aE40PeT7r z2w2Fra8kj0WN(`F{&`o~%Z81`kT|;!K4#hEr5;nO%X%7LUtJLqJ>UI^3@-HSu`1+! zR}(ZXy?Sk@NTz?q#LPSTu`uxQbqfX$I}Al<;QOneP40kHFF{UXKVuPNMEGsl8*-y+4OLfK<@S57@<=` zg*&BPdoMzr`o9HtII<{#xnNF9?q0PM$%^mQzL=>eiW^jFPkWM}ddxrnX4XGb#CvPLSOG#y!r0v>AvFWy77J^gIuo0*RPEHvM`$Yt+y zj~MqK1M>$EtISn3qu<1KX(~hjHvifGMacgwKA_HaC}NbG;}OVDTH#F8N!b(5h{8uz ze-XL8D;(}zwM!$cj6+H%p=~FA{&z!r}cgWoy^E;@s3A_5wXT3@iXNWv&O}vslAE)-Hqb>iv z=T{DBlTo*di-rA5q@^V?pS{nk6OH7d{6hEntAFONIW!0tl6eyQ$e}y)DP;F8>{*4( zDdlkk&N$eMp!p}0#pmmBpFiTAVobGn$)E8JJDd*%3!C8Znyh5S_7@~c9{}Z!*9b|} zHVLuq4>X2L``qxkN;)34a`4j09T0Q?@4VvIeTd+%0g3X*AlDo8M}7D(YzcmIk9ocI zI&9PL`FGuaRK$PtC7eQa)P?|y-5Z>k# ztZ4w;Y}Z5EkL;a$>L33-UV7AZbH^PhZFQPq0YnGQ4GDm%i(H1y6BxRk3m2XWs73|i z?;j%92ML8BMr`%V!|b@GZoAhwUml2brnyHQM;Mr)*3Ms+?Fl%UUZK4C2%B%`UVeCW zz-;#t4$P>9PTn~+hGL&mWN-lGoeByq=E_|bD1b%nJ^z$hLPq1T_)L4*%t6i5`G4<8 zT!P0j=sRdMlGVBQ&L4arL0Fa`yH3$%`>+JakP~0A5F3y6$yQc7r=cSyy{;p;26q1} zw0{c??u}IRGb!MGzA^68mnSkq@_tMSU1g(3cbZk%d%&&f_oGe;I%WhK)AL&NE}A7@ zH|WC8qQ1jyGZ#cO#PG18!JeHr`7QJ4p9{^iW^;2^_;fYGzhR779pk%1JL?z3#4jO> z#XdKX7db@x?O#~+s}(bFeL`F&i^v z;}t%-){k6u8CrjdxRI z!x;_5v37?Bi$9dB3&-OVIyJtlBa5*4G%xBVq5q%Po%h1X&DXbapO7tGMz$cr{d#R& z#cir~s_4EH#kq7L%?A+9wfk+eYy$n|*U5kKP2{`_oc-`4CtQsce zDncISg0T+uq;y@-49xF{(@6QL>xvu`Eep8Aw7gi`m$z467jG25O-CSetoE53TR~wo z%ndFhMPvF~C7>r&G&H@*XKHogR9~>VwbNB$#B+bko+1bB0E z%YlK+McD?&5R1po-dj%pXpyT^!ytc0iTl0l zo)zfh-~82#F~9isgG(UjyU6dn&gZb??%nsnQfHSlqhu$Jcr?7u3c1%GN#AX|gAbe` zWmeB^F6+UumMxR-p~tB<*;F9)D$M{d$?h_yL>)L>x_a5KEE{qI`soI#F8|(XnC*NU zuoRbkJW<%o)${Jf{w9WV`4gdBe8%UKHcvXX<^$b-nV|PxaFARaUN;|?e_NeR1x@`V zxYOw^>#3vVtiIg?DZ0X;5HE(YrEU5ETusQV?2{a%uhE@V8`(#c_#UXK=a*(ZH8w*ikN>5mOo;=Fh0{ z?o&=p!!{edfUu9XY{1Y?$I$mJ@ulcQ066`RDA>+1H|F*Cm|3yWNFHxEh$HwuH51o9 zTt6iJ+h71hs)$GgO3;=1Jv+twl?_sjUJN~S78K7b8%2XGE-?PIqq(x0PTb?U+=@Lb zCnmi<`|ADtyIy|TLbM7Q$@3oCkYp%=MEoOw)g84U$*XGybKu>sGJ@Funy1GWBK4LB z!-#3u@IC(B{Efi$xPD1G60cZi$6Atqf6xZG<8Axg@^h-Jok2t%zdp2l1`Q?99ypvh z!RBsUtUD~+vP5URj9>q2ra>E-w2% zFm#OGaxxevMu9*rkYEyPYL-R>l4|?X`~S@OPLI1ENKCSKm;4sUVSgsVwnK@%fluFh zdEYdsBu0+>s6sKo>$#n*M8i8bvu3|ZRFj~LC2M&Vg9j&!RQz{u;aek}N6WzirF((T z^?rTPTzFwB^FSv4`wZ^ULy16or2o-xLm%uQ zyrQplWPQH=6nIzPh&cO|#i{*u{HgRziPb)};g`6e*J=Q;td1?v_-8?`$!|exT!dEd z{2$HYfM!eD@XLgfPaZgU3OpMpm#gG2X3~{G^UjdX0{aCev&%^EtuG8s^aNo=w|W0; zGk8|kJR;y%lKou6-+EUT0gqCJZot((MWK(BpaAaMDJK{?gVr|ck8g0@M;kb179tSD zF$%H{{L4*?|6aDUU2grD+F~eqSgzb0a4hDSIhczx2;_6yMAO1i)K;yH%A{)3B zV+@{7Di;i#Fn)^5ebktNc~?F9ZH)NiG?9~#5bWQti1nKts}sb>4vHRv8yk35fIH7p z{LFvg%oe?T4$o(Kbpz9TWjr$O;>`VEng$LXNMj3V{WU7)qr#O)$Q1g4DLl4c4M4XZ z8>X=kb!J#GA_Sx-i`Fw@28q>g&PVVVa;UmK>IL-wqy%;cfuP*oEDsQ6Idv2VvHWSF z`1}4bIh!3vg?8u0{bVu&-`KLt2gg*CCwjg2*gi+9epMaZZAV`@7 z?|T5C9`v&7ppUJ==idhhJqmVi(`JJoX%?~Vl|!kak`^r+fhcH z73+b7+j|2`mt z?$r6`L>#+pBY4DQSCHJ%$s;++`YMO`A%1#bZpz7bv%i!}gIg-Fuim@VVDs9|+WSpl zfIgZq7=%_M3!qq^)1*RSerP@kx@(+|qx#vs17k$jlt+Lcwev-CF0RS2wnB90g_jE` zylVUSJqgGpAzwH79$iHzG{AP6BK{DpdYj#76wdIRL$F82&3lyWzgWV*DQqhq)2EPY z>nR7euJl9?D#`}wa75+-+Gc9RGMA{?wA8ajcV}G=y4HX?IIfzgbqj5EmpVqr_aN$= zQ8Al{s%0$XYl)4Qi1umS;|pN*hLE6nmTC9Di@SZ*t!J%6!-4-y(eb(6A<3lgP4C<= zf`G>^ke=RpIm>9y_+G|1J1YDs!MFISo1srX+k`y@e?Vr(A^@Q5mk2VaD@GHXn zob}g2B!rkgj1k?w`fj{`mwp9P&r@E0JEm*g?}Pcr#DqK}IU=rs5^qQR4jr>{{-XxI z{B$Kj=Q89yg%B^&0pGuad}KyJL;dS~s*YaW&|3PpQ+49fr*)f8t(LanLAy)(b~`Wa zLYBUr!ilM#k>_Eow&$Qe zVP@WA_4d!L-~)e#Wv%%(j*J$qvkQZXh1_805k`4Uq0g5BKv5wJX<{3a-H4Y^>IhvoSj}BGM~NY#((^Vkj%rIX=l&*@yV~eQ&3G*)onxXb!NeQeX{*={nc%( zXH3K0ofG*YHb;H`3hQ8Z?$CR^Fo5$D-##Tq`%3O*>`w=$g($_98-6ad_5K$(pU25r zVnRPrE|maIllq}XyUVTV7=%WQIile2I?ZZ!vaVt0lH}aOv?bw!*7CeJm)!1<{Q>q; zTvPJCxwvVIHN(Wh+`E;dd;3W)pOa)R#5_{U=Sk5*%ujLY9n)_qFOM`%&neAD4t3cW z&3iyL2nc9U3O1I;=77aFu)4s)0Wyn~{59@9&tTHKkJ#9B1j~`J**$6b2AusPpHJpT z<8SsJGC;$z#S=G-{?>-mS?Nn|ylA!Pj?V?~+euD>)c8T&F0qJmiftuIN%#Ze7KYU$ zGbZn&$Xo1w7vo=V#$#zqX2+EN%4WN*xs?E;hP|l)v}~n=k)?g#;32!6#)ren?IR>_ zA?2FT7vGw62YPTXF-@e>DFUY^FBnfu7Vx7na6^F;;}3%Hyo75F+ltPqFzDZpA92YA5A$?ezg`Q0-VyBvG8rG z8f%=uJMb~Acx7MXZpM_S9=>NX-k*wrq?qOW}w8A_wKD zB2VxO{4T*sE-&tYL8dmy6y{=L3H?8Kl+rQCbs3Tw-kBk~{wsLd>E!UeuAuX#EppGV zpj9R6GCKD@(#lp`ki5`kzozB$YxDyY_UN+}0p{1iq4MUZMJ9T3f7s!jPvr*&w3q zZR4Xe`BGZE;0Lg!G+Gk$hf9B5|0|hsmp9A4$U~K2nYb3@4GHhaQ(pS{SydNsBBR4Y zCX4@|!6us~-_aMr?p)V@<6iGJ@UvCIyl*FIWEt3mcvdOZ@K6I8rA+yW#NkQ-kGgsx zdu;UT^a}L+JH20IM5D>Cm;TdT!^JFWQsB;**%vM&M*6LOUI{V-Iyz;=v#D6I(n0c& z)~TXNY+l<+4<17(l^8TM1z&0Xi1NB=<)eSKuQ_iBa4HL>6%28E0u-{95(5Vx`J$aG zVRWdIUcKHL&il6uR%dx4G*%qDOlh@pQ!u5Wv85Z4br#k7bv|C2bZc64tTm;t9)M&$ zx_+^F1}`f+SVzYi@%1X!rx)D~hmc;n{uN5|z;$fTqCEp22b}1$V?nb92RAzML?%@# zoEj(-R+kb*NMm_w-LN|`7#>K0JG}TgM=X_(58|!b(TR)vgNUrpHUk&J3s+#Xh@{^f zbMv6aUdBHT&_<@I1D@@8c~Z=XX)lbfpIH=uGX|Ox54IS!(`>H5kpi6kCyCtv6CKt> zFK=BCNHgd9_6(C+ooy%-E%;N9!`93o^@D7VLaqHwBlp#3Bs|S+C;gQ^Fi>MCD7K}o z{UNVeMDe9;lqx0_c|3Hk_4cZamwM2w5TBA@;R|oKeJZhB+j^s&ST;Sns-Cu zWWw#=gp|?(1+mHHEFbpq5j_`_tk*O;*TS1u%t<#t(82>Z@p{n>e)pc|61fzHb2r2N zm4(>M#q;|2HFPRQB)4?*@xpoVHj*gre^4+`-jjx9e#N_RaW*p$>pKpmXm4AM4975T z1n!0t*}z^HAer7N31cuWJB39GF!P}6Ti4CkXL~)pwn4Wrx|dzdvwJ7OE)cnk4wc;- zxidfI*V~^-X@#?%V@I9{KfSMl&6ubErR%#kp{ty9Vbo&dM0$NFyS7Ze)?jfxrwgob z111VSyEX@DQX=*&oSdZ@mz$N(Q4dnSG_s{&G!qkmX#aw=qV2g{$vwMyvN)4A@|4(y{~v;A_Y_Vz%L-zx_#gUBKL<&H z7O$MmVG3w>(z|#QkjBs4C}j#MUv~VSy`#r==JQ^d3Mxbr6Sx#Y+{z&W`5z?K(7Lup zoh_CZeJR*n!R@Mo0EC~q5~G-QK2xzc_i&zklb9^5RLP|v#H(`lriP)&|3hfyi)@W@ zuSaL^@ou6upX3k$Zc8Dg5Q~Q#D=5T|!B1DGmO!{ZUXdoD&18HsDM~TPxXA2;YysAO z-b%DR_(xy(VVMo5L4BaMik70RU-6vQY9k$a;@`FduQKR5ov4o>6+mBEmH@jAt*@9Z z`GPIpf6z>Z=b|xFk(GgE!^7$keb`%QcO|TTXBZS}1~y#5k>3;KZ@}v1F$hgsJk__g z4VtWXcI;JIc!2&P`_3giHc&y;mC?P>l?4vSSQhzrY237@jf9iiEFmfgvo5!(o<#F0 zQ3%(ZczqIvq{W~n`h%CY=uP)Ib<~c^0|oGd1MkYKuA`$Zbp=Lx^m7dH6Lr|kAVqaE-X)`r;b}NXNBSB+Dj~6dGEcDhWuL3k$kdf-U zJ7n61SBydk-(?1PG$9|{QUzBpj4sR&~J|8 zf;I)pp70DMEaYwKYxl@hkEVm=keonM87;%cC*=%}zsK1(Xb1v1oo$@2RBC7rgASdL#ODWXvb<=Kp?}hs<4yr(joJs9) zUbgc^s8-X{o^v`@(kNAiqOXtikGl%LUh_avJazhlT$rzTo3%G>7sY}X=67yLw?7UY zz|{Zv<{9l11H>FRP@I$1S?<_@eVca(zv}p<6%QVKe%!De$gn{coLNzyvhwk_`oL|! z<#H}+@!_-wK5B_;Yjx8KloJJ}oKzod+cM^mq#uW*{kNSUcw7N}HoQzPbAiU+-Ma*` z2$BHR9GMO|b}_1cf`(WadF0gks@~czPSULJHW#S@UR0bN5!m7c<>D6Z1gVg9|Kmv^ zr_=u$j`Kdwz))t(ofiO^%Zai%j7r`_pGbX>g+43Y$+iwP&(81^A+{a^QVjrYDxfO~ z_M1(URw&-$Drk$0RAHVIxo;ZgOb1rhN?qs$4LE5h} z7KBj=xl0kQ?JfgKQ)rb2`cmK%+Q6IN^~$ppUbQM9)odp{NA&D`QZ1TVfaq|;C+^P7 zrvG1eT)*E1hnXCx*hCECdFeE-b;RoL&ua9o?Gy2vr0L*!AcoN$f_#X`tJ{-A1}kvd z-0BUF-TvT(2$cxC-FW2tuQP(GJ$eUs&7@YB2=3&8wyCSXaXfhUNzMTf-bmfC7n9xS z=tP4`6M49n3eI4yNy1({4Ruw^@s0#m;>gyO^0{4pidOH<%O$!~-Ky~-UL2MMOa`_x z#iH?6A*N}@h;tK1PdwvERb^=2h5;(<@}A(aK%QegEyJws&c~uJ?5;VX>nLi|Vfxa! zRqe8`uU5@p%ptD|YWss1FY;#JhS!E_3gjH;Z=c%V-EAkEqE=}Cc(`Hk>l|YVF>pe{ zoPeG(0Qycp6_Tn0;ipO9+hU%=5PoI-y;A$j`BFHgJXfNq{g-~`sLHCFG{^Y7b$(uf zx3JBBdhN8@(Yd5%O&YyJSGdNItR2Wbnl!_3qG)`CHYz%}LV>XODBRr+#IUfKl=D#O zb5jg$awW%{4xHGzSV*xud0c><*q*7Aa1WKpjRWAy5RJ@Pp;ars(4O5EW5Ly*AzT%jr$<%`zf zeg}K&3le8G{qcJ!)|;tgJY3GWIj}2U3_Q3_f6O*2LCXwHG-Jbb1MC}L zKmr`53`aFlrVtn{eST8TNs3Ee3VlQt&Ibt{7M5s8T$WQ}zb6REP>D}D+SXqz+g$O_ zcZ|~-(hDgjYLBKF^vF_x#q0VaL5%btj23zehV@CV)>@9t(wg2s>;xxAV*<6t74E&ls z|6p)VFfG2i0`UVEpB-~uA_dhbRkG=mwDd8%@wK7H4Gr@}DRI~|T|)o8 z-Q^qFFRH*T=bKG@pNM*9#LpF##8E>5I)uwU472>%=sUG(yC_s3(IPdOiRA>XG;o;bi zPyU9AymJXh6Y~Lix{*qROM9M5#I#7CGZr>Ek%$@hGrX)gyFNa=!FNII%L@;3ho*OZwaVZcdeC+1;H9WAl<&|`nIVGp_9 zH>Zx4*ozmt2V(d814^b3|a0Opz9`unx z*8C#M5b~8I!OLS2`n$=EIRcs5{ko8w_{*X6>H%P~BplHpEOD(xz}cBpH0CbIOG(cl zg%MI&8825=b!|)gE9`d&L5KlQR@w>V+X1}e@O{N&>{ERF3)}(OG_ikzGa>|uzdObF z<4^{tPnNHgc|unBUv~Z>_3?eT%kfMjEq_^#6&C@PJPN!Tc)KnK%8xFu=ZBOoM;2bO zn;bxQto-IdtI1HV4*BJ#(fQJ#?Dmf)HrfqGj~`xHCsn&Ey@A?PFyd#}H_!>?88f17 zlQPyq{6<{JT(SNDfy?~?AQKP!8$U8fu0gn0f~|kFO~qh7IiVYC3tV&%m1;UQzwdw>havdAO}@( zu)=`q&8OC2e%Sy6;*hi(0n{fYfnPxM^87Waf_+CJ?O{uJ(q^a;=^I`hvzh1y6FuaB z3Dt4(V#Xh0hAgp8PS;!b#jR^vWt@+TxDR&ORS}yPLT70eQ*K^qAt21rE)45UmeV*5~tl7=ngS-dVx(AzH6~Qt-Ia%>U;66>|$)C zTs2k?rXMY@<=~qt!b>*1hc&%ynRKcd={#bPw5l0_K)@=m`lmm6l&~K?ZN9L%5a~TF z7)EJ1|KWxVU|MUT&159q9tIahn5cFVd8MTs(QTkLPN#msMP2dM{^M9Ij#1}Cc-_a} z`+UW*9ac72fbk>~NHbqe+n{#pqpQ+==VqbRXi8naUTmmfy0GXGc96$3l0XzJxDuxG z296@w$$g0T=a&9+Ua!mKG}59a*F5~|;vLc5R4#Dp24A_0L*ma~%V`tNZ|#8bRN=xL_~Jpf>UolJh03u~ zA?R1x7ZX6S@`spj*)jOEm-{rg3&hcGPWcSnC5Hq)t)Jp2zB|>*=TjBE?B9gvNCz=I z*eQp@J$LvJI#$I1ogA0wWXbDL?zBCRdg#q-W3HgZ0%(q(EA>cQv;OBii54tyc&Adp z@#h(N@)il(kIqL;aJ_D>?-&X=K+I_cZtZV# z1r0Qj+MXGWN|?*VF&uM8zr8B>d|NU)YpPgLcWa%0mxfsJ(Lk?A`KQ0_XkEA zTrPVkyr8`TLXUd5t%Nk9A(KvJxwcFrAUKfIb4icy>z}2wPCtrd$3DLEsAx2AIQH9( z?rZdD7*>ZLpTe7>RXUGCOX-_E|1bNtW&f%FI5w^c?igv{B^41WX~!Z{Yui%_)1OhD z&_M?B86PgR zi6guxgAbwWE;kVLN{9@I^qylVZzyo>2+D*g&7aWOn|DE8i?WR7ubWo zwB2q?2AajP#;*vhIyN8XxuKnA)^LYPvm~D;udJOGO2eD1C1V>{01d-Z!4)@^2)mBFF=1`@Q zIz@D;I2FeUX%)_x#1d~{GO0y>SAI4B6`EgFTWFGJ?^@A9&sR!)?>+(uM&cu^?EiEH z(&tG+x1=5kGb6vPoB+9a?zVRU8Y^H=zV((=nWJmEqH0eNB+dI$RZ8(3geI45hr%n< zK@a+KQ+A&H$xS|dvyU3?_P)PXzJXZZS3==?8(df@(2hej&Jg;EmbZTssdl_ec(y3? z4r>rb-uOxp&rD`@DMH1Bh1FB2d=hOcgR|IVB4VJFlHW2q&BEhTaG@{b^^Mxim)B}9 z!4;bdYpV;Sz)%8xkp#-GaqpJvmdGjAL=YRGWY);DCGU|alA55_3Eb@2W zI(LS{rEUoZ5}OQqG^}L%+bG}%r#%qQJXC>9{T!gvxSmcZG$wgKO(7iVHkT`STpeYC z-k>3Vkdgt#E|f_V(Tl@^ZZt#2!>w%f>9E4Vw=1Cd*Z0Y5ccE~^E`i`zzewy#)19Ft zZ_2I}GH{ph3eOCwun4$|yrqDNE7lC6V@zn(mh>oK(=eM3Hs#p-g%@0`qSZTwl(38^ zdNKbwE&0mCE>QH*&MPpC?lPo%O103yJjNjZbKfwbr_{(%kK**fn^LkELYMC-YE51{ zfgqor-h)0TAB3~Ss9KHfyRgA2iM--Otu>t#jPDbC+cpieTj*Cgccxh0x{vpiAv)Wl z`nic|l@v6x*Pt$5vJpK8p}%xX$MgtO)w}yrWrQ<0$oc(tCj_9GiqX{sLTK4Xoe7W# z9;oI%tAO7gLiq;-gY|5kmfYL-kAf+wGXRj$S*p^V9nP056|;a5K1?cYw;~o;!8`tdQa&}OL}&EFRrqc23Nz?aX9~; z`8inyR98FI<+QUe#s}E%8Bwv!&RF{LJr5{fp}v=``fKc6)KStifnV}CSO0E}wy7)2 zl1eyWCXrWV*mbL?zHJJ|yy>O!vyo?iG4&Qv=+xCH9+G!k z?$%zNK(&PqX&mmiQ4F}CT-Z}K7=dVEx-zZ~XDl;e5C8Vi+Tk;jIW>N!Qf%c!cVK8V zU?)z~xT1!Pc}q#)L*xl7ob^Yl4vZ2D*7$65l0G2NAH_^lp%HZ7$6&hOx}bCp-^4v) zqH}nbhg(Q=vGwPH=#9>KdyD1jJX{5Tvn(PT=68Htdxzh3G z`=9XR&5y@QAE_1MZ_LakIWvsZS9#WWI_c2)>|sE{UZd3gm+l0Di+`$jJpV2IkS7I^ zpTCMMn$e3(E#DmfKt+;34z4&j%e2dql>~K;B}?>KMSpLbLtOk$B&v2I7y9J1X^GvL zUc)Yb>Du&Iy0Mzr!KM8--83k2^_n}z5UdsN6GtMaF?-X2M4HV+_l9j?)4$+(q~nVk ziW2mT=cM)?n zc`sOp!gP#&BTK2|`K#*jaqd>in1&eW4x6hWRwHjESAN~;yFM^KzAs0%arF3UIFy)% zWH*z?M>hX~_F9KH)d56(vr+tgPp_E>CqYm;H@o~~;cIPAte65xyD=?ksMSzJN<~Wg zmZK>$oLfHfle8I|Z9eW=lCW0*Ro;j%u47G~-@SNg zM{)D0B8ZBX=_S^v;2B;OlVgny!dfer;Hol~AY6*9>%>#(&$Ey~{bFHJJ>|ALJ`Ct? zD#DxjwM2B16|Uw)I>H4vbRsP9amR1-dqJ}K^WW0NJ^}rODrH4fUrw2*i9^;fz8t1g z8Yml={Pz~BfdnZ$jCZHkcmiBbFUeHl?XPGbCVQxa*}2FCTT#g4H)wses_v(((070z zPkZe-zG*UK#U>FFoD#7*AB`c|*BB01IQ?(pfkU2@lN~-t^pkrBC&Bqxr!0j$UC4WL zz&2cjgW6m=@)ilYM4pOz^UQ!7tpn}RimjEV9Ow-`o6eDe!vjWh{_s7f3uHoYH{?4S z8$bS&Mfx(-9GHbZLyP=~=bCjQIOpCj zgSAioBESW?XM2UwW;`_&)QaW_ZP=;!N;}I7S^6*AiGmNuLOSb~8=Mb^?TZ^ZF`&MU z!3{3uf8=PtKLK3=1sv94q^*2HWxxUf&jLZdp@tw}OpV~3BNjv@=%}dg36OX-yYKNd zh}%Z-5wg{s!NbGnT4(HBv+I+xM>x83v# zjrv3SE%TtTL{-kyqeed!65m|7T4>g(DxK)ghaCdzfX}WrCyJc!$Bt^{9#OLJ!jcoj%qi5H8WhV0-w@iYC5XHVL2T-^ zN3s0eODVgd2V8KKA8XJ$e z2y-f+hLceFlen<@5c9RsHbqzB<9AAvlT&rmm2)ewQtzhQQ~kc}pG?gYQhSDP=d59M zE788*v5!S49doSwLV4lQf5xAvA8V&dh-$ccd?_WHxXrQtis#lkx6zay{#9l1l{)kH zJLKsh^iCZQnl-s&lJoUB=~q?RZXeJLyu6||;#ei17n-4x@mKb}W&9Vxd!?4*s899) zyojL2L@BHHEoq9ISHYY^7s7%7dZI{08*(jK0gViV6u}iFI1-90G~ZS>&>jt zDlxQsAeLmW+}ptji#A-!EPjuE6??Tpds$z_Gut0`V%3;WlNY6~3RorrkqCDwoKm3BGD~(&-89vHyzwAQfy*?U`xBUt(td zVQ!W~4Yr4okA}4&9SIDNK=iY?&C&=pLVA}^`}o}6ov4&^)4U2lZ(|N=`YZVR#m&O2 z9i$KP4dPRrTTV?L^b$tUuH2J!2hPQjz`D0-@4bHpQ1F=SXHOYo_o`~9G-i`!TPdEz zCC~t;T;b1j<>_9b*EijC(}it`HeFH5{500OQWu(`)miIzXV>=)5R9$Dvr513>YU3bB!S~{yM%Gc!Z-<9txHaqN76ZT-^m+5N%DK?%I ze7ivGIZrYvPu$|*=WQk!eDat+B_y$IshbPt+YmCmnk`BD&yrVcsx6_sRD!BLcipfvs;v?q56dqjcyHyj1Gl zAwE24-MEm`nf18t+;~#a2ikiM2VzT2a{!&&C%4$C+nJU=xIyx(;L9D@;!h%XvSfh; z0ne`m?QosSjw5N+2Na!2%;MDfMbkgALbg}UPeebbrDk|b-G!OmrWRaEusUux6kVjf zxtqF^!sOdntYG!LGTOqoVyZhcb=E&g*B7q-QMC=9Lpb_(8|6luaLyXZe)iJq$FPPV z6m&X7XmS0q!yPlx(P#KiQfYl&g{TnzW@uZ(URv1_ccJ*?-9z$T9FYe;!nQxlO zQr`|MofoF-8;qX6qvN~5T{@oTw-Cl!pm-VF``Yi?LDM|g`Im*5#c0feYp6TUj?~2+ z5(*1ll4~tNZCyelG9LnV(}@9&oUzA8*&%Tpu zZhxp$#w!`JFUy6{$j%A<2n{y)irnecBN&ZoyE?O-?LneeuaI#|D;?T93zQHgeMnF) z6v>H^s5$VMsd}!I@=N$B0VqIChXTqocuQ{edSG zAD^++g$iiWyJO%%h56lB{M-r?NnqRTO_%A1QIAre8RX`#q-!NX3*|4$hN9o7|K%kwWNJ$-CZM)?UZ0tNGsl(2aLqi!7iF?AHwd zwzkAv14J&QNx#hdMur6gzIpMK>lB}nM9@Yva`3A^_pK075Cj)0Ax@v+ zhYZORhi!+`L48hnvre>{{zQel)<%j*#kHA!)4QJjt>Gwz;a>@2B;{XiICyxe^GO zKaAvZL};D*>7X={#3Z+Fq3O)11^7g9XqvGMdk2O{zM#l>f5$r@6ZIY;vPO0N2#t&PTr_i%x?En4^bJ3 z`8@u=MHwz=t;I zF~uH1A>cy>d^m)tl@f*I&ncaRC_^-ax&IR;X&O+qV_+vgdg>;xI&vDKG`NVC8YS_b zznnbCI?9l|c%AgmkDk|#`vs+#2IvM#G0H51So%k)m;<0n?xRc`Kd2WS1;NKD@K=QL zvTfN=fFd8jlN*ArS*661(*B%MMBGp01D_KRfH#v+!ORX&PK*LSQdlAps_P+!`3Zm9 zA!1^RM_vdO$})*C;F9l5=z9*#?aud-Jtc%A41w1U%1lW{OG-m2 zq~Iw8-XKL%lKnkZ$U6`3AFmgOOW`LSx}^pmUjBmDLX=I4q|6W>N`gs=@TZs&E=z#; z-PQ#7)lGYWpbSvW%c3fvOD>`sU{b`2Gx1ujMJ5ue4?|4q(|ul&r!T~-i6AwLa=#?! zgMZEU@F9l)Jdjo^018lLNQ3yg=e;XmW5C@zR)d!l;0Oc&@;3Z_St6q*1w8n3a2`|@ zuz%CQNt8n>yt=@L6d;szQw1r26ygP=CKUT9@X9am`3JKaw6Z_SgFo+OmI41r(!c-L zM^Og+#hX(h5ViT_J}w~?oP_^bQ1b6V=yhCeYgko)A|HTl?!&p;Uh@k|xcvp&!%y6E zq?086un6|%&%Gx?AVdayNcKny*ICH_`Gq%C)&u@M0y&uXG0yr#5D1mp02zX>67-Uq6H8RQuaRJ&;s<`lC z|1LAaS0o=$bTC9v72=T(&s-YhflwNRGT6S|-gk*=VVB6+hw$WB$0E@}?p!(y6ww|K-RGiH0Q4R|5n}rMHnOA-R^HY~ z{NTVb2u~74GGHLP^9g#~>);6i3)CKPJE1B8@7;UP8yvzoApCLJ{SzTa0K$6^J$W{) z!0!jXV$2gF%8)3^{JcnM`XEE%2-_`?4P7(y1StP`P^N-`GK2%n3;@Dno|mQQ;g!Pk z7pME_z@Kn=2~;t;R1xmxvz>H#pFYl4ni5@+CU27K>qvC~#i z56ei>9>MSv_8_&drA#c|Wxz-BirLA9rFC3d0$OfLBGbo+20gGH28bz&NqNP7{iG!C z7XjJ>P1mJx3H5>2@g;l`3>IP%{QOw}-f$4Ff`A4&87?!Fgda^z7*IzkSrGm<-j~v0 z{w6MAx-GIw0Ye;^Ybb?q*lBOv?;;umQvpz@77g_bKx!FlDD@yoS)z$`q8^tt)=lfR+fE^(tv!CIISW zJ|Dcf3IN5qK!0p+f8sS@j|~ajw+0V zqAovufUv1YqUT-S^Vc;CqT&R>u(&^$lg3H^=Ky?wQY=XcjcOL)FP0hs`4WD3Lg3Fq z$R{Xp9~TOMxd7iEJzQo2w-snp|Q~?UwK$w_1VLWZh044GJDEQ5rXc1s3 z^Eo@hJOPiCEKw#A&|AkTg#-X$Fi~(!mr!3Za2&65Vriy0b1e3l4x59?4(uX)GevRy z0xKG^$vL$2V+)395FwO9g~|@X3P{jq6Dmogh8$Rnreq{)UPH=;0CYevR`r0%Ln2T& z$zf$|N%n_a&c}M*x@D>uxkKbi03MWuL_M|~4}5u^TK-p*`6+S;f*b@jDS)4k0Qvoa zZ}JmdAIjAG^9gv|bLRSpHGYI}nPVLJQ#D57+$lEM)9WvyN-CjztRF-GcQK2f1%JiJ z@t~9)ij03nr&zK5uQF#zlKwvdN)MJx{0l+|P&EQ#KwK;f*oT)KNco0CeCBSDB}yPq@SsGHb^SPjoPb8eSij)& z5T~2jO=P74r z3yF0kIw2roB8z69M3D!;mFy8kJRdwbiraFMHzQ#?ME3U8b@1M_Qk_TbN&0Mgo)|_T z96@kG67g6tcNAVdPY?u;Ur72Bi4Iq$s5n2BqQYNW!j1kVVDHZma-_iZL6Gw?*s3m0 zLzNqXl>+>Ps((woAWkKzolv=8n+jRulIIUK`0IKFASCIJRi2re|4&K#5~>ZTTxZBO z0%GNNsN3r*Ljm-?l#&C4&{e8(K7C$6c@jWa&z%bg1hPM68b`2Q1F2BB>6h;@iD5*z zOZedGP&tk(#GQm{!4gLyLJ}6mr;roxWQ9tx{!zE}y3b zzN}C9VH5wiEQWt6*QUhFGxL>HMx7^wGV@YYG5>Jz*T(Bb>A$$Y(*S+1PWsn&31rqO zKnnkhiG2D{0Ht`15WJTH|Kc?WikuG+Q3()x00bQa*&Irdv58+9ITUw{V;S~Vl$NJ&- ztfoS{Wf4TZx!tZ?YzW8_4@V*2dkTcN%<*~yIC6MErAjz7@E-k;0!xZ~A_FeG!Fv8Y z8Dh_oFY}~KhA^dKqcDb`5gG8=oDR{$W(kT2QtH_vqJX=58Zl>M(PiMkO;E6oD?T}@^Va_Ez1)LQBOke112<7!ue=ck?BKx_E-Z=?L?u6jAtJE`A z?)QOS5P(5wkb^~n`2&=S`)2yd2>Xf!{!!!p#fCrcrWCJ5lKvrdVD+m2_%wbl{$4H= zP`dj)4v7&Q0xnw{Ncmhd2V0wg?wM(yfNq>$~`VQWP>m5VzsQDN>;mQkXsReP6z!ymL zE~g9--;-za8eGcvJmC5d2wpz8eR}H!`xAQ?aE*sF{RLb>M&n3=uXqGM3-`8S9JE!LX9K2XXq=6HV$pDZ6hzWI*`V@q8JXsv!@NOYL}1 zU%yO>O(hC7M zGn#F^OrdFbBLJSbjw?3PDGQKt6C!YOe(_|*Mm_-`%d)&1Fc$9hun>UD{6M&UQ9ho} z5(mDi5HI;d5v~x!0)f;I^);hZ^7eV6AOf&jP0#@}FVV?ll9mN}nll0rI0z(4S6xjA zKo`GPdHKuaL##Uh886U3?4+XFdf|z`OpAbS< z%Akh%CtfrO1If$t;WKpscT5#AC}3ILS<8(=F60%GC_gMvH&bX19Z zj;H|ep0_H`fF%~L0?bA703qi9fHEh+D-mP~6~B&11SnTwz`hpzU2e{!fQcF|k!q0ia9v(~y9~;IE7O zQ$^#TQ0bpn1PXy_A1xF>#j%lmKEN%M;#&l?m96vVy9-7m0a8_fR|4Y4@0nZ!Lj5K` zkSYP#NptLA99~i~@ryrbj6+QA>%1;y!$$5Om6NDN7~@1EN7(%%ws90V;a=jQ8zoymAT9b*+ygVxgvE z9w*T=<#wtn1c^KlO-}+jgrI6=%$~FQb)Iyo;>{DnRN6te(s361+ll>WVE1qsYV9w4^+BBA*J z-vuG>rWF4~ASVT;CIR5{0)os>b^@Q*bcixBbz$~0lcY$9d<$dOCA`bc%&O=2#g4h; zy8J21P5n93BA*~sXf4aPz@=>FtHXTugdZvFD;UhY1S&Ky^0r~~Bm6`;&YKRdm8dLIVuSuvck5fCT8e$^c<50DDZ$@qA!+6(BF=bFaF3f;%r9r1ya6m3zBSCg2Vlt(qu7GoM)FB&1UItSU#wnsiQKQNd z1BIeQREedO`VD;`bc-b3oln7Px#)0dEHQPd4-KjzKU%L}1^7n5pKJD0O8TSU4UPM2 zv;GynK(P^!3Uteb0u-fzK@#6TgOJ~%z#by*F9r$lB$%M}gGdPUAptQ#ko|E}2AJUW z4iLX>?1giv80qBGM!0d0vNS0UtD`DeluP;&@3>5M0#QrG;=n-ywo4&`^JN-Rs507F zwE%)wPg$0%sM7~i7K76G;4rnpPf&D&#K+)L5?^-bfuC?;2Pu0WaxVc^^`nBP&#N6& zA{ydz0#$+`q+~%V5CGw8BIOl?I_%siYY5dfFq$ApVpbGrW45H6YCz-+ZjDzj!Lc?H0Ukl@I_27OYcM3ks>{wf6J z_owc$;s_o2yj}=I*Grmcf>O%iUW6y2lyct{O69&9Dv~aL|Hbvh@-Qlu)X@mxfJES5 z{Oh+s=|3w81=QPyN&nuq1xdz^5(-e|1MnnZFF;mNf9scUpzvT2`*HKjfwG9%FP+#Sso=s@&Y}$63^fJ z94PxnB|v1nLry_}(04!`8|M`SA@(hP$ss5FiAjM_Dg&~VuH05J#gXr~K_#%}!ytUv z!Rw~zQbocal|2V4-Dor6uP@n zK0`wE#Q7vQ(TnCiboQ-!a=MC8_>w!-jaPA&7YMPPDit;($`k^k_==0)S4i@{IwTQR>c>jcs^l{j zKhCROZJQFbj+0#;@f_rSDLmA=tbMY78PzcOr>O!AKj{ttqdI{k^~ z8xr?d<{=2g1=LFd42{3b`2f_PxThci;70P^1(21L;60H^01%!Rpa=;Bb(n%05RnLo zU`~Y_4U5#2@?T7;Q4gpT+ox0*T*>rHpyCgO$RHt2U?Z}}#|{`GQZpL{WQBFPFE^3p zHQ!@Zc$EG!jzk2BfKu|CkTFjwMMDEG)2qB=aafW}Y>1GIM-=a!@GXRupiG320FkQ$ z6huHQ>*H`%R5CQ)zK%yKJ$_21xI4`_1fYub%bpvF*j13I?)4mybDW$gn#BnD1VnQj zF}xs=4W-wu0Auc)_!4E2Fo@nin`8&*`x8Jx3;=}!pi0~%8e+gYIf}ds%EZb8cUdzJ zfr#y&g|c(uo<_vHGQy2`Q6vJgNq>}Uy!QWR?^;6by2|kPUrRtJijQc)WL7Ci3l;|w zDYO*q?MNuJD2QUwNsC^JBZZnmDA_w4uCYklAU{V#ny7?P+fcC~m^?~iB5nDQd;v&i7@)Ffmx}=F&~qpKPXs3_$QFGxN~+69xT zoj*J_+IM{@6#!bQHz{q7Yz`H-Q4k73loi1NiLg2T1lUwSGhuDJVUuy;Ef%n~B=kfj zz^DvmkRAsCf4a_p-d~`V08nFhK1&QFc>1Y_v1Mt4&dT!=QKBBigdz$QWD`4JWoje6 zLskOyf)2Hs;RVM@u=dpg(~;1LBXDCYHtEw8G(D0Bqq4w_COcNg5v7tnVkpkZ&i=;c zXG!K%M?M|*!kflyV&=!eu+F65AYiT)`1LVliTzyi?*#vs!Te|h{&26i;`cWqfa(Px zeeZreKpGV2lYpzl{1t$H%7kx75`ef)fF=QsOF*gtHa1|R4rN3@nc7Ab&|e@GrF3=5 z$&QtqY_~Xem^G}dKyf))9V%!NH7MF%mbBskDp)u?*pcc?p)KiKQzXHVjkTq1BHYRJ zMHqbZI)!ntSiFEnU3pK}*w#&MbWmPYz{dl9Bl|lAr1T==%lN)spYFz6439_J9yWW!MIK2z1t&Ibv zLn??Qo~8AzDhIK;I$Lb>Of2 z`n7ef704L;y<$Q5Ihen-D);Mxe;V```Tf~S1g0HuEgm2a3QS4Bdn+a2T_!x{cmK1# zPZ1YTRRaVa5N?4w5r|ZQm<*6J3x#{XOg+r3CxUC`}9o;}FPN-VC42IPnR-%Z%K#IxR_Z zss>Qt$M*#GRrkYdp0&>jRI^I}veLqZhs{-`G>ChI#Rb^nd6&dKNM+4l)gmK1<-G)X?kMR0KXaZ9VVXxKRSW{>sEgN{?CE=@yzm%lmj&S{Z%_))#kUg zC{I5L05Lxf(Ay0B(4_UD&n2*4kX_loa0|2%0c_F-r7GZ)fk+(?yAhd}DNAh$t6X?9 zi=)-T&LDA_YH?+6Nua=dBpoqJz6=?-CP12$_!4>XRSlrDBh`fUi%&%RRSC5y>CSBq zEoje`p`SOq;7e#q67=Trw*tSs$1eR@m&TnI5QHm5P*9|hB#VUDAj$;_v2TD9!Pi*BJMl` z8m_H2p^5I!lb24J|(p(S7+5m2fCgx{Q1bbVaU+?Ard4Jn^`GJvq+=M}nXyjaLq zm+=BBGYfM6uLP^Lua%8!q8GSy)1s1qP?6_boBz_f_duH}i;InC&;_5uqqFDui5D>S zmOJ-WPuQQ;1)xxTXw|L3rhZ*L{Q@@6z_e@ls@WB@t`7Q zFeCy}H7NaT#`=fnCa|VG2aB^;*SZ1DT^B>@4$#>FRGlNu9$*ch6g1zE`Njm#)YX;f z*5B>5K-nfC2f)a+>{vdcc7kJR>HguI<;{~K2xROD^?Y+OVF?YpWMp{V`+NTO5&+`@ zr~sLFO?e?9KaZeRd?;1`Ea;p2Cnum#04N1u+cG1Z_gxbVHw1K<%bpNsPR z+rd8$`ZJVB76K}*{n7&Wg91mB0NL#491-qjrWZkcKW(gcF8Vb$r~!^!pp6I=ssW@b z5Ca&i$w5wgU`}Li>b8uezpP=^uT1VL1z_L15H%Xg7D(OiU|3xCf7wwn2;?Xi+(=wn zJ|nHdXtw~hEl3&wTNXNQAX=U}GF8ss1_5ZX@;ytqY#LO1ceEv&MLa~7CXv%HGy(qF zg;3AD&8%zPbKZ~#3eWF_;?}+*a@;3giO0O)oyI;lAHNFtA?Qy4{y^^UlKl7o zbZ*ty=Q6ed{$Yo}VaHnpxCs&frz+okBw!`gUnb%Qz;v7m$IH^cu1lblM-#WekQP`x zkRtF;#0WU5Ku880u;<8^nX%WZG)9;*s*83ecM}Wgwd!hUA_bI&I;{PLo=06;=`?DA z5pD_gn~ezU3nL%nuZSDj!xU*=UwUvWqeughPqrup^p1B1S43MKU}ejIWh&h6iZH6p5wAQxG~ zvz&A!@6bf~OS6d{%R`wrzf08S&z5GP&f*(rN*gDXTZx@lIEo$Hgo>`Uem2lm>K0&!-?P#}Ls5T6h4^Ub;McgFRV@r)4<-1_68t$QW&rQzJ;qOc>_t_xZ2PDL^wi&Sk5Y>>#WO@z= zh)#JMV?{t*1Wec5O0|wW6*zshnC>=)R!`rP$)oUq zF;*~h-71}1uB|Bp+dhw1qBe_EPt)oed12f2QlLmtnA2Xn|7ryOGO^n@LSpK3woNnW zdmx+ue+i--eZB$g^Vo0Y`#L99za|pFv1SE-Fr*7$ZY2Plra_3~0)lb!^u;#-d|_|* z=(ibon!q1k&n)5pS1E&0e86C}7U_efdtih8u`(dI06RI_#70KXmLu*+51h$(xT%PS zO`jxJLL~}5r_34bek1nSiACy{0jhjw4X%QwZ4ejk2`$^kWAhyESyb?cY&qDn;g1Di zO}J^^x!_(p<-gPWYMRZ$Hs_BGOp@55?K$EK3Fzzp+)AH)z`y$MUjUv2_*r)9i?>Ps ziECj7@CSeo?A>>(wQ7~#DCN5rB|xsQqS1z`h57rx{3m@ke)s2pzxw&xKlD669|7TW zq*iYt&knBuL8uC3%7Fhzihmffs84h>E@L*ik}Bv(G{?#}{es6x=iDf}=i6+N@bUWy zRR7QB&6FLu>6l*kz8LVEK)(k3uGGIalI2NO|2+@zm%unzxB6Sb->LBDfjD9MIPQe=6vY1O9UWo&fV} zQCHDO^4HeA={L{<{+xin)5UC)1t25oVWaCuxdVy@La@PsAs8p)N}a34l+`1DZt%fULkL%KNU1_^b=3cmaJPKyWDNV~+^{e2NIC zz;uj(?}GSYDhg%~$3_vfr&Iyg5+eV>8-<|wL|9#sj?Y1WU>l-W%hfLC(K42?j2n&| zaR2U|eE_-vzXJNUGN1tdmjV0;;PZL)z)q{bJWm)nI3M`$69DB{n@j=#^LgYFh_VER z61!#bphAJLMBqFT9s$$s3_J$nuMy)gicVtMJrI$B&`ppL0>uMVB@aiHYV9_{XL$?!25QqKL`J;?QlQ%gBkSZ4-QKp z^MJ3(9pK3K%`O4dT?PUitt&$QNQVGC1mK%Q_+oK^dOH_Q4Zv4hf!{k{ZuPfG{+r{PP5Z$gKtTXnNq{OA zBzCK%2^JfZZO)y>28fvD79ueGa~ps!gYYl`_cW6Mj}Rm{Ok>-oZ4>er&ajMSEaL#M zeA4bCQe>Fx?19r1f&}z|S5`9ruK>PclK^VKKahkN9wgv?03UR7`zwT?l@yF71~Za~Wh`SE%h(<{*m5c% zxAhI+YRPa8%HlHsyvx8@Fi!1T`nc>@5}XG7;wlrX-++54`A-9X<`n_R0J@C?_#jLQ zq+^$Wrv@M`|Jy_aax!oTz`Y>cL%=Zr#{jw&VVQuI0zZAFfDfE3EMpnVSjKhd43pXf zHh_Hq_yZ9C7r=Q2&V%s^fO7z@)ya3BDtq8U$=C9uCg6&+W+Ai)htiak0EUXD49N z1@O*FN%%}g48j+?Qu=h3N^Nu#EeOk4#xia&rZC4L<|-Uufd2J;%N^HN01q(U1o$5S z-T-ikfxkyZf|^0!v-VqozuY_m{${IRo|J=%TCLy@F#b0H0+dC1H{bBc00000NkvXX Hu0mjfpM?{b diff --git a/Littlest/libs/Box2D/Box2D.h b/Littlest/libs/Box2D/Box2D.h deleted file mode 100644 index dc5701f..0000000 --- a/Littlest/libs/Box2D/Box2D.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BOX2D_H -#define BOX2D_H - -/** -\mainpage Box2D API Documentation - -\section intro_sec Getting Started - -For documentation please see http://box2d.org/documentation.html - -For discussion please visit http://box2d.org/forum -*/ - -// These include files constitute the main Box2D API - -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/Littlest/libs/Box2D/Collision/Shapes/b2CircleShape.cpp b/Littlest/libs/Box2D/Collision/Shapes/b2CircleShape.cpp deleted file mode 100644 index a950b0b..0000000 --- a/Littlest/libs/Box2D/Collision/Shapes/b2CircleShape.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/* -* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#include -#include - -b2Shape* b2CircleShape::Clone(b2BlockAllocator* allocator) const -{ - void* mem = allocator->Allocate(sizeof(b2CircleShape)); - b2CircleShape* clone = new (mem) b2CircleShape; - *clone = *this; - return clone; -} - -bool b2CircleShape::TestPoint(const b2Transform& transform, const b2Vec2& p) const -{ - b2Vec2 center = transform.position + b2Mul(transform.R, m_p); - b2Vec2 d = p - center; - return b2Dot(d, d) <= m_radius * m_radius; -} - -// Collision Detection in Interactive 3D Environments by Gino van den Bergen -// From Section 3.1.2 -// x = s + a * r -// norm(x) = radius -bool b2CircleShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input, const b2Transform& transform) const -{ - b2Vec2 position = transform.position + b2Mul(transform.R, m_p); - b2Vec2 s = input.p1 - position; - float32 b = b2Dot(s, s) - m_radius * m_radius; - - // Solve quadratic equation. - b2Vec2 r = input.p2 - input.p1; - float32 c = b2Dot(s, r); - float32 rr = b2Dot(r, r); - float32 sigma = c * c - rr * b; - - // Check for negative discriminant and short segment. - if (sigma < 0.0f || rr < b2_epsilon) - { - return false; - } - - // Find the point of intersection of the line with the circle. - float32 a = -(c + b2Sqrt(sigma)); - - // Is the intersection point on the segment? - if (0.0f <= a && a <= input.maxFraction * rr) - { - a /= rr; - output->fraction = a; - output->normal = s + a * r; - output->normal.Normalize(); - return true; - } - - return false; -} - -void b2CircleShape::ComputeAABB(b2AABB* aabb, const b2Transform& transform) const -{ - b2Vec2 p = transform.position + b2Mul(transform.R, m_p); - aabb->lowerBound.Set(p.x - m_radius, p.y - m_radius); - aabb->upperBound.Set(p.x + m_radius, p.y + m_radius); -} - -void b2CircleShape::ComputeMass(b2MassData* massData, float32 density) const -{ - massData->mass = density * b2_pi * m_radius * m_radius; - massData->center = m_p; - - // inertia about the local origin - massData->I = massData->mass * (0.5f * m_radius * m_radius + b2Dot(m_p, m_p)); -} diff --git a/Littlest/libs/Box2D/Collision/Shapes/b2CircleShape.h b/Littlest/libs/Box2D/Collision/Shapes/b2CircleShape.h deleted file mode 100644 index bb31da8..0000000 --- a/Littlest/libs/Box2D/Collision/Shapes/b2CircleShape.h +++ /dev/null @@ -1,87 +0,0 @@ -/* -* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef B2_CIRCLE_SHAPE_H -#define B2_CIRCLE_SHAPE_H - -#include - -/// A circle shape. -class b2CircleShape : public b2Shape -{ -public: - b2CircleShape(); - - /// Implement b2Shape. - b2Shape* Clone(b2BlockAllocator* allocator) const; - - /// Implement b2Shape. - bool TestPoint(const b2Transform& transform, const b2Vec2& p) const; - - /// Implement b2Shape. - bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input, const b2Transform& transform) const; - - /// @see b2Shape::ComputeAABB - void ComputeAABB(b2AABB* aabb, const b2Transform& transform) const; - - /// @see b2Shape::ComputeMass - void ComputeMass(b2MassData* massData, float32 density) const; - - /// Get the supporting vertex index in the given direction. - int32 GetSupport(const b2Vec2& d) const; - - /// Get the supporting vertex in the given direction. - const b2Vec2& GetSupportVertex(const b2Vec2& d) const; - - /// Get the vertex count. - int32 GetVertexCount() const { return 1; } - - /// Get a vertex by index. Used by b2Distance. - const b2Vec2& GetVertex(int32 index) const; - - /// Position - b2Vec2 m_p; -}; - -inline b2CircleShape::b2CircleShape() -{ - m_type = e_circle; - m_radius = 0.0f; - m_p.SetZero(); -} - -inline int32 b2CircleShape::GetSupport(const b2Vec2 &d) const -{ - B2_NOT_USED(d); - return 0; -} - -inline const b2Vec2& b2CircleShape::GetSupportVertex(const b2Vec2 &d) const -{ - B2_NOT_USED(d); - return m_p; -} - -inline const b2Vec2& b2CircleShape::GetVertex(int32 index) const -{ - B2_NOT_USED(index); - b2Assert(index == 0); - return m_p; -} - -#endif diff --git a/Littlest/libs/Box2D/Collision/Shapes/b2PolygonShape.cpp b/Littlest/libs/Box2D/Collision/Shapes/b2PolygonShape.cpp deleted file mode 100644 index 429e647..0000000 --- a/Littlest/libs/Box2D/Collision/Shapes/b2PolygonShape.cpp +++ /dev/null @@ -1,434 +0,0 @@ -/* -* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#include -#include - -b2Shape* b2PolygonShape::Clone(b2BlockAllocator* allocator) const -{ - void* mem = allocator->Allocate(sizeof(b2PolygonShape)); - b2PolygonShape* clone = new (mem) b2PolygonShape; - *clone = *this; - return clone; -} - -void b2PolygonShape::SetAsBox(float32 hx, float32 hy) -{ - m_vertexCount = 4; - m_vertices[0].Set(-hx, -hy); - m_vertices[1].Set( hx, -hy); - m_vertices[2].Set( hx, hy); - m_vertices[3].Set(-hx, hy); - m_normals[0].Set(0.0f, -1.0f); - m_normals[1].Set(1.0f, 0.0f); - m_normals[2].Set(0.0f, 1.0f); - m_normals[3].Set(-1.0f, 0.0f); - m_centroid.SetZero(); -} - -void b2PolygonShape::SetAsBox(float32 hx, float32 hy, const b2Vec2& center, float32 angle) -{ - m_vertexCount = 4; - m_vertices[0].Set(-hx, -hy); - m_vertices[1].Set( hx, -hy); - m_vertices[2].Set( hx, hy); - m_vertices[3].Set(-hx, hy); - m_normals[0].Set(0.0f, -1.0f); - m_normals[1].Set(1.0f, 0.0f); - m_normals[2].Set(0.0f, 1.0f); - m_normals[3].Set(-1.0f, 0.0f); - m_centroid = center; - - b2Transform xf; - xf.position = center; - xf.R.Set(angle); - - // Transform vertices and normals. - for (int32 i = 0; i < m_vertexCount; ++i) - { - m_vertices[i] = b2Mul(xf, m_vertices[i]); - m_normals[i] = b2Mul(xf.R, m_normals[i]); - } -} - -void b2PolygonShape::SetAsEdge(const b2Vec2& v1, const b2Vec2& v2) -{ - m_vertexCount = 2; - m_vertices[0] = v1; - m_vertices[1] = v2; - m_centroid = 0.5f * (v1 + v2); - m_normals[0] = b2Cross(v2 - v1, 1.0f); - m_normals[0].Normalize(); - m_normals[1] = -m_normals[0]; -} - -static b2Vec2 ComputeCentroid(const b2Vec2* vs, int32 count) -{ - b2Assert(count >= 2); - - b2Vec2 c; c.Set(0.0f, 0.0f); - float32 area = 0.0f; - - if (count == 2) - { - c = 0.5f * (vs[0] + vs[1]); - return c; - } - - // pRef is the reference point for forming triangles. - // It's location doesn't change the result (except for rounding error). - b2Vec2 pRef(0.0f, 0.0f); -#if 0 - // This code would put the reference point inside the polygon. - for (int32 i = 0; i < count; ++i) - { - pRef += vs[i]; - } - pRef *= 1.0f / count; -#endif - - const float32 inv3 = 1.0f / 3.0f; - - for (int32 i = 0; i < count; ++i) - { - // Triangle vertices. - b2Vec2 p1 = pRef; - b2Vec2 p2 = vs[i]; - b2Vec2 p3 = i + 1 < count ? vs[i+1] : vs[0]; - - b2Vec2 e1 = p2 - p1; - b2Vec2 e2 = p3 - p1; - - float32 D = b2Cross(e1, e2); - - float32 triangleArea = 0.5f * D; - area += triangleArea; - - // Area weighted centroid - c += triangleArea * inv3 * (p1 + p2 + p3); - } - - // Centroid - b2Assert(area > b2_epsilon); - c *= 1.0f / area; - return c; -} - -void b2PolygonShape::Set(const b2Vec2* vertices, int32 count) -{ - b2Assert(2 <= count && count <= b2_maxPolygonVertices); - m_vertexCount = count; - - // Copy vertices. - for (int32 i = 0; i < m_vertexCount; ++i) - { - m_vertices[i] = vertices[i]; - } - - // Compute normals. Ensure the edges have non-zero length. - for (int32 i = 0; i < m_vertexCount; ++i) - { - int32 i1 = i; - int32 i2 = i + 1 < m_vertexCount ? i + 1 : 0; - b2Vec2 edge = m_vertices[i2] - m_vertices[i1]; - b2Assert(edge.LengthSquared() > b2_epsilon * b2_epsilon); - m_normals[i] = b2Cross(edge, 1.0f); - m_normals[i].Normalize(); - } - -#ifdef _DEBUG - // Ensure the polygon is convex and the interior - // is to the left of each edge. - for (int32 i = 0; i < m_vertexCount; ++i) - { - int32 i1 = i; - int32 i2 = i + 1 < m_vertexCount ? i + 1 : 0; - b2Vec2 edge = m_vertices[i2] - m_vertices[i1]; - - for (int32 j = 0; j < m_vertexCount; ++j) - { - // Don't check vertices on the current edge. - if (j == i1 || j == i2) - { - continue; - } - - b2Vec2 r = m_vertices[j] - m_vertices[i1]; - - // Your polygon is non-convex (it has an indentation) or - // has colinear edges. - float32 s = b2Cross(edge, r); - b2Assert(s > 0.0f); - } - } -#endif - - // Compute the polygon centroid. - m_centroid = ComputeCentroid(m_vertices, m_vertexCount); -} - -bool b2PolygonShape::TestPoint(const b2Transform& xf, const b2Vec2& p) const -{ - b2Vec2 pLocal = b2MulT(xf.R, p - xf.position); - - for (int32 i = 0; i < m_vertexCount; ++i) - { - float32 dot = b2Dot(m_normals[i], pLocal - m_vertices[i]); - if (dot > 0.0f) - { - return false; - } - } - - return true; -} - -bool b2PolygonShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input, const b2Transform& xf) const -{ - // Put the ray into the polygon's frame of reference. - b2Vec2 p1 = b2MulT(xf.R, input.p1 - xf.position); - b2Vec2 p2 = b2MulT(xf.R, input.p2 - xf.position); - b2Vec2 d = p2 - p1; - - if (m_vertexCount == 2) - { - b2Vec2 v1 = m_vertices[0]; - b2Vec2 v2 = m_vertices[1]; - b2Vec2 normal = m_normals[0]; - - // q = p1 + t * d - // dot(normal, q - v1) = 0 - // dot(normal, p1 - v1) + t * dot(normal, d) = 0 - float32 numerator = b2Dot(normal, v1 - p1); - float32 denominator = b2Dot(normal, d); - - if (denominator == 0.0f) - { - return false; - } - - float32 t = numerator / denominator; - if (t < 0.0f || 1.0f < t) - { - return false; - } - - b2Vec2 q = p1 + t * d; - - // q = v1 + s * r - // s = dot(q - v1, r) / dot(r, r) - b2Vec2 r = v2 - v1; - float32 rr = b2Dot(r, r); - if (rr == 0.0f) - { - return false; - } - - float32 s = b2Dot(q - v1, r) / rr; - if (s < 0.0f || 1.0f < s) - { - return false; - } - - output->fraction = t; - if (numerator > 0.0f) - { - output->normal = -normal; - } - else - { - output->normal = normal; - } - return true; - } - else - { - float32 lower = 0.0f, upper = input.maxFraction; - - int32 index = -1; - - for (int32 i = 0; i < m_vertexCount; ++i) - { - // p = p1 + a * d - // dot(normal, p - v) = 0 - // dot(normal, p1 - v) + a * dot(normal, d) = 0 - float32 numerator = b2Dot(m_normals[i], m_vertices[i] - p1); - float32 denominator = b2Dot(m_normals[i], d); - - if (denominator == 0.0f) - { - if (numerator < 0.0f) - { - return false; - } - } - else - { - // Note: we want this predicate without division: - // lower < numerator / denominator, where denominator < 0 - // Since denominator < 0, we have to flip the inequality: - // lower < numerator / denominator <==> denominator * lower > numerator. - if (denominator < 0.0f && numerator < lower * denominator) - { - // Increase lower. - // The segment enters this half-space. - lower = numerator / denominator; - index = i; - } - else if (denominator > 0.0f && numerator < upper * denominator) - { - // Decrease upper. - // The segment exits this half-space. - upper = numerator / denominator; - } - } - - // The use of epsilon here causes the assert on lower to trip - // in some cases. Apparently the use of epsilon was to make edge - // shapes work, but now those are handled separately. - //if (upper < lower - b2_epsilon) - if (upper < lower) - { - return false; - } - } - - b2Assert(0.0f <= lower && lower <= input.maxFraction); - - if (index >= 0) - { - output->fraction = lower; - output->normal = b2Mul(xf.R, m_normals[index]); - return true; - } - } - - return false; -} - -void b2PolygonShape::ComputeAABB(b2AABB* aabb, const b2Transform& xf) const -{ - b2Vec2 lower = b2Mul(xf, m_vertices[0]); - b2Vec2 upper = lower; - - for (int32 i = 1; i < m_vertexCount; ++i) - { - b2Vec2 v = b2Mul(xf, m_vertices[i]); - lower = b2Min(lower, v); - upper = b2Max(upper, v); - } - - b2Vec2 r(m_radius, m_radius); - aabb->lowerBound = lower - r; - aabb->upperBound = upper + r; -} - -void b2PolygonShape::ComputeMass(b2MassData* massData, float32 density) const -{ - // Polygon mass, centroid, and inertia. - // Let rho be the polygon density in mass per unit area. - // Then: - // mass = rho * int(dA) - // centroid.x = (1/mass) * rho * int(x * dA) - // centroid.y = (1/mass) * rho * int(y * dA) - // I = rho * int((x*x + y*y) * dA) - // - // We can compute these integrals by summing all the integrals - // for each triangle of the polygon. To evaluate the integral - // for a single triangle, we make a change of variables to - // the (u,v) coordinates of the triangle: - // x = x0 + e1x * u + e2x * v - // y = y0 + e1y * u + e2y * v - // where 0 <= u && 0 <= v && u + v <= 1. - // - // We integrate u from [0,1-v] and then v from [0,1]. - // We also need to use the Jacobian of the transformation: - // D = cross(e1, e2) - // - // Simplification: triangle centroid = (1/3) * (p1 + p2 + p3) - // - // The rest of the derivation is handled by computer algebra. - - b2Assert(m_vertexCount >= 2); - - // A line segment has zero mass. - if (m_vertexCount == 2) - { - massData->center = 0.5f * (m_vertices[0] + m_vertices[1]); - massData->mass = 0.0f; - massData->I = 0.0f; - return; - } - - b2Vec2 center; center.Set(0.0f, 0.0f); - float32 area = 0.0f; - float32 I = 0.0f; - - // pRef is the reference point for forming triangles. - // It's location doesn't change the result (except for rounding error). - b2Vec2 pRef(0.0f, 0.0f); -#if 0 - // This code would put the reference point inside the polygon. - for (int32 i = 0; i < m_vertexCount; ++i) - { - pRef += m_vertices[i]; - } - pRef *= 1.0f / count; -#endif - - const float32 k_inv3 = 1.0f / 3.0f; - - for (int32 i = 0; i < m_vertexCount; ++i) - { - // Triangle vertices. - b2Vec2 p1 = pRef; - b2Vec2 p2 = m_vertices[i]; - b2Vec2 p3 = i + 1 < m_vertexCount ? m_vertices[i+1] : m_vertices[0]; - - b2Vec2 e1 = p2 - p1; - b2Vec2 e2 = p3 - p1; - - float32 D = b2Cross(e1, e2); - - float32 triangleArea = 0.5f * D; - area += triangleArea; - - // Area weighted centroid - center += triangleArea * k_inv3 * (p1 + p2 + p3); - - float32 px = p1.x, py = p1.y; - float32 ex1 = e1.x, ey1 = e1.y; - float32 ex2 = e2.x, ey2 = e2.y; - - float32 intx2 = k_inv3 * (0.25f * (ex1*ex1 + ex2*ex1 + ex2*ex2) + (px*ex1 + px*ex2)) + 0.5f*px*px; - float32 inty2 = k_inv3 * (0.25f * (ey1*ey1 + ey2*ey1 + ey2*ey2) + (py*ey1 + py*ey2)) + 0.5f*py*py; - - I += D * (intx2 + inty2); - } - - // Total mass - massData->mass = density * area; - - // Center of mass - b2Assert(area > b2_epsilon); - center *= 1.0f / area; - massData->center = center; - - // Inertia tensor relative to the local origin. - massData->I = density * I; -} diff --git a/Littlest/libs/Box2D/Collision/Shapes/b2PolygonShape.h b/Littlest/libs/Box2D/Collision/Shapes/b2PolygonShape.h deleted file mode 100644 index 564d4b0..0000000 --- a/Littlest/libs/Box2D/Collision/Shapes/b2PolygonShape.h +++ /dev/null @@ -1,131 +0,0 @@ -/* -* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef B2_POLYGON_SHAPE_H -#define B2_POLYGON_SHAPE_H - -#include - -/// A convex polygon. It is assumed that the interior of the polygon is to -/// the left of each edge. -class b2PolygonShape : public b2Shape -{ -public: - b2PolygonShape(); - - /// Implement b2Shape. - b2Shape* Clone(b2BlockAllocator* allocator) const; - - /// Copy vertices. This assumes the vertices define a convex polygon. - /// It is assumed that the exterior is the the right of each edge. - void Set(const b2Vec2* vertices, int32 vertexCount); - - /// Build vertices to represent an axis-aligned box. - /// @param hx the half-width. - /// @param hy the half-height. - void SetAsBox(float32 hx, float32 hy); - - /// Build vertices to represent an oriented box. - /// @param hx the half-width. - /// @param hy the half-height. - /// @param center the center of the box in local coordinates. - /// @param angle the rotation of the box in local coordinates. - void SetAsBox(float32 hx, float32 hy, const b2Vec2& center, float32 angle); - - /// Set this as a single edge. - void SetAsEdge(const b2Vec2& v1, const b2Vec2& v2); - - /// @see b2Shape::TestPoint - bool TestPoint(const b2Transform& transform, const b2Vec2& p) const; - - /// Implement b2Shape. - bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input, const b2Transform& transform) const; - - /// @see b2Shape::ComputeAABB - void ComputeAABB(b2AABB* aabb, const b2Transform& transform) const; - - /// @see b2Shape::ComputeMass - void ComputeMass(b2MassData* massData, float32 density) const; - - /// Get the supporting vertex index in the given direction. - int32 GetSupport(const b2Vec2& d) const; - - /// Get the supporting vertex in the given direction. - const b2Vec2& GetSupportVertex(const b2Vec2& d) const; - - /// Get the vertex count. - int32 GetVertexCount() const { return m_vertexCount; } - - /// Get a vertex by index. - const b2Vec2& GetVertex(int32 index) const; - - b2Vec2 m_centroid; - b2Vec2 m_vertices[b2_maxPolygonVertices]; - b2Vec2 m_normals[b2_maxPolygonVertices]; - int32 m_vertexCount; -}; - -inline b2PolygonShape::b2PolygonShape() -{ - m_type = e_polygon; - m_radius = b2_polygonRadius; - m_vertexCount = 0; - m_centroid.SetZero(); -} - -inline int32 b2PolygonShape::GetSupport(const b2Vec2& d) const -{ - int32 bestIndex = 0; - float32 bestValue = b2Dot(m_vertices[0], d); - for (int32 i = 1; i < m_vertexCount; ++i) - { - float32 value = b2Dot(m_vertices[i], d); - if (value > bestValue) - { - bestIndex = i; - bestValue = value; - } - } - - return bestIndex; -} - -inline const b2Vec2& b2PolygonShape::GetSupportVertex(const b2Vec2& d) const -{ - int32 bestIndex = 0; - float32 bestValue = b2Dot(m_vertices[0], d); - for (int32 i = 1; i < m_vertexCount; ++i) - { - float32 value = b2Dot(m_vertices[i], d); - if (value > bestValue) - { - bestIndex = i; - bestValue = value; - } - } - - return m_vertices[bestIndex]; -} - -inline const b2Vec2& b2PolygonShape::GetVertex(int32 index) const -{ - b2Assert(0 <= index && index < m_vertexCount); - return m_vertices[index]; -} - -#endif diff --git a/Littlest/libs/Box2D/Collision/Shapes/b2Shape.h b/Littlest/libs/Box2D/Collision/Shapes/b2Shape.h deleted file mode 100644 index 9082c0e..0000000 --- a/Littlest/libs/Box2D/Collision/Shapes/b2Shape.h +++ /dev/null @@ -1,95 +0,0 @@ -/* -* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef B2_SHAPE_H -#define B2_SHAPE_H - -#include -#include -#include - -/// This holds the mass data computed for a shape. -struct b2MassData -{ - /// The mass of the shape, usually in kilograms. - float32 mass; - - /// The position of the shape's centroid relative to the shape's origin. - b2Vec2 center; - - /// The rotational inertia of the shape about the local origin. - float32 I; -}; - -/// A shape is used for collision detection. You can create a shape however you like. -/// Shapes used for simulation in b2World are created automatically when a b2Fixture -/// is created. -class b2Shape -{ -public: - - enum Type - { - e_unknown= -1, - e_circle = 0, - e_polygon = 1, - e_typeCount = 2, - }; - - b2Shape() { m_type = e_unknown; } - virtual ~b2Shape() {} - - /// Clone the concrete shape using the provided allocator. - virtual b2Shape* Clone(b2BlockAllocator* allocator) const = 0; - - /// Get the type of this shape. You can use this to down cast to the concrete shape. - /// @return the shape type. - Type GetType() const; - - /// Test a point for containment in this shape. This only works for convex shapes. - /// @param xf the shape world transform. - /// @param p a point in world coordinates. - virtual bool TestPoint(const b2Transform& xf, const b2Vec2& p) const = 0; - - /// Cast a ray against this shape. - /// @param output the ray-cast results. - /// @param input the ray-cast input parameters. - /// @param transform the transform to be applied to the shape. - virtual bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input, const b2Transform& transform) const = 0; - - /// Given a transform, compute the associated axis aligned bounding box for this shape. - /// @param aabb returns the axis aligned box. - /// @param xf the world transform of the shape. - virtual void ComputeAABB(b2AABB* aabb, const b2Transform& xf) const = 0; - - /// Compute the mass properties of this shape using its dimensions and density. - /// The inertia tensor is computed about the local origin. - /// @param massData returns the mass data for this shape. - /// @param density the density in kilograms per meter squared. - virtual void ComputeMass(b2MassData* massData, float32 density) const = 0; - - Type m_type; - float32 m_radius; -}; - -inline b2Shape::Type b2Shape::GetType() const -{ - return m_type; -} - -#endif diff --git a/Littlest/libs/Box2D/Collision/b2BroadPhase.cpp b/Littlest/libs/Box2D/Collision/b2BroadPhase.cpp deleted file mode 100644 index 12c7967..0000000 --- a/Littlest/libs/Box2D/Collision/b2BroadPhase.cpp +++ /dev/null @@ -1,116 +0,0 @@ -/* -* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#include -#include - -b2BroadPhase::b2BroadPhase() -{ - m_proxyCount = 0; - - m_pairCapacity = 16; - m_pairCount = 0; - m_pairBuffer = (b2Pair*)b2Alloc(m_pairCapacity * sizeof(b2Pair)); - - m_moveCapacity = 16; - m_moveCount = 0; - m_moveBuffer = (int32*)b2Alloc(m_moveCapacity * sizeof(int32)); -} - -b2BroadPhase::~b2BroadPhase() -{ - b2Free(m_moveBuffer); - b2Free(m_pairBuffer); -} - -int32 b2BroadPhase::CreateProxy(const b2AABB& aabb, void* userData) -{ - int32 proxyId = m_tree.CreateProxy(aabb, userData); - ++m_proxyCount; - BufferMove(proxyId); - return proxyId; -} - -void b2BroadPhase::DestroyProxy(int32 proxyId) -{ - UnBufferMove(proxyId); - --m_proxyCount; - m_tree.DestroyProxy(proxyId); -} - -void b2BroadPhase::MoveProxy(int32 proxyId, const b2AABB& aabb, const b2Vec2& displacement) -{ - bool buffer = m_tree.MoveProxy(proxyId, aabb, displacement); - if (buffer) - { - BufferMove(proxyId); - } -} - -void b2BroadPhase::BufferMove(int32 proxyId) -{ - if (m_moveCount == m_moveCapacity) - { - int32* oldBuffer = m_moveBuffer; - m_moveCapacity *= 2; - m_moveBuffer = (int32*)b2Alloc(m_moveCapacity * sizeof(int32)); - memcpy(m_moveBuffer, oldBuffer, m_moveCount * sizeof(int32)); - b2Free(oldBuffer); - } - - m_moveBuffer[m_moveCount] = proxyId; - ++m_moveCount; -} - -void b2BroadPhase::UnBufferMove(int32 proxyId) -{ - for (int32 i = 0; i < m_moveCount; ++i) - { - if (m_moveBuffer[i] == proxyId) - { - m_moveBuffer[i] = e_nullProxy; - return; - } - } -} - -// This is called from b2DynamicTree::Query when we are gathering pairs. -bool b2BroadPhase::QueryCallback(int32 proxyId) -{ - // A proxy cannot form a pair with itself. - if (proxyId == m_queryProxyId) - { - return true; - } - - // Grow the pair buffer as needed. - if (m_pairCount == m_pairCapacity) - { - b2Pair* oldBuffer = m_pairBuffer; - m_pairCapacity *= 2; - m_pairBuffer = (b2Pair*)b2Alloc(m_pairCapacity * sizeof(b2Pair)); - memcpy(m_pairBuffer, oldBuffer, m_pairCount * sizeof(b2Pair)); - b2Free(oldBuffer); - } - - m_pairBuffer[m_pairCount].proxyIdA = b2Min(proxyId, m_queryProxyId); - m_pairBuffer[m_pairCount].proxyIdB = b2Max(proxyId, m_queryProxyId); - ++m_pairCount; - - return true; -} diff --git a/Littlest/libs/Box2D/Collision/b2BroadPhase.h b/Littlest/libs/Box2D/Collision/b2BroadPhase.h deleted file mode 100644 index bff188e..0000000 --- a/Littlest/libs/Box2D/Collision/b2BroadPhase.h +++ /dev/null @@ -1,229 +0,0 @@ -/* -* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef B2_BROAD_PHASE_H -#define B2_BROAD_PHASE_H - -#include -#include -#include -#include - -struct b2Pair -{ - int32 proxyIdA; - int32 proxyIdB; - int32 next; -}; - -/// The broad-phase is used for computing pairs and performing volume queries and ray casts. -/// This broad-phase does not persist pairs. Instead, this reports potentially new pairs. -/// It is up to the client to consume the new pairs and to track subsequent overlap. -class b2BroadPhase -{ -public: - - enum - { - e_nullProxy = -1, - }; - - b2BroadPhase(); - ~b2BroadPhase(); - - /// Create a proxy with an initial AABB. Pairs are not reported until - /// UpdatePairs is called. - int32 CreateProxy(const b2AABB& aabb, void* userData); - - /// Destroy a proxy. It is up to the client to remove any pairs. - void DestroyProxy(int32 proxyId); - - /// Call MoveProxy as many times as you like, then when you are done - /// call UpdatePairs to finalized the proxy pairs (for your time step). - void MoveProxy(int32 proxyId, const b2AABB& aabb, const b2Vec2& displacement); - - /// Get the fat AABB for a proxy. - const b2AABB& GetFatAABB(int32 proxyId) const; - - /// Get user data from a proxy. Returns NULL if the id is invalid. - void* GetUserData(int32 proxyId) const; - - /// Test overlap of fat AABBs. - bool TestOverlap(int32 proxyIdA, int32 proxyIdB) const; - - /// Get the number of proxies. - int32 GetProxyCount() const; - - /// Update the pairs. This results in pair callbacks. This can only add pairs. - template - void UpdatePairs(T* callback); - - /// Query an AABB for overlapping proxies. The callback class - /// is called for each proxy that overlaps the supplied AABB. - template - void Query(T* callback, const b2AABB& aabb) const; - - /// Ray-cast against the proxies in the tree. This relies on the callback - /// to perform a exact ray-cast in the case were the proxy contains a shape. - /// The callback also performs the any collision filtering. This has performance - /// roughly equal to k * log(n), where k is the number of collisions and n is the - /// number of proxies in the tree. - /// @param input the ray-cast input data. The ray extends from p1 to p1 + maxFraction * (p2 - p1). - /// @param callback a callback class that is called for each proxy that is hit by the ray. - template - void RayCast(T* callback, const b2RayCastInput& input) const; - - /// Compute the height of the embedded tree. - int32 ComputeHeight() const; - -private: - - friend class b2DynamicTree; - - void BufferMove(int32 proxyId); - void UnBufferMove(int32 proxyId); - - bool QueryCallback(int32 proxyId); - - b2DynamicTree m_tree; - - int32 m_proxyCount; - - int32* m_moveBuffer; - int32 m_moveCapacity; - int32 m_moveCount; - - b2Pair* m_pairBuffer; - int32 m_pairCapacity; - int32 m_pairCount; - - int32 m_queryProxyId; -}; - -/// This is used to sort pairs. -inline bool b2PairLessThan(const b2Pair& pair1, const b2Pair& pair2) -{ - if (pair1.proxyIdA < pair2.proxyIdA) - { - return true; - } - - if (pair1.proxyIdA == pair2.proxyIdA) - { - return pair1.proxyIdB < pair2.proxyIdB; - } - - return false; -} - -inline void* b2BroadPhase::GetUserData(int32 proxyId) const -{ - return m_tree.GetUserData(proxyId); -} - -inline bool b2BroadPhase::TestOverlap(int32 proxyIdA, int32 proxyIdB) const -{ - const b2AABB& aabbA = m_tree.GetFatAABB(proxyIdA); - const b2AABB& aabbB = m_tree.GetFatAABB(proxyIdB); - return b2TestOverlap(aabbA, aabbB); -} - -inline const b2AABB& b2BroadPhase::GetFatAABB(int32 proxyId) const -{ - return m_tree.GetFatAABB(proxyId); -} - -inline int32 b2BroadPhase::GetProxyCount() const -{ - return m_proxyCount; -} - -inline int32 b2BroadPhase::ComputeHeight() const -{ - return m_tree.ComputeHeight(); -} - -template -void b2BroadPhase::UpdatePairs(T* callback) -{ - // Reset pair buffer - m_pairCount = 0; - - // Perform tree queries for all moving proxies. - for (int32 i = 0; i < m_moveCount; ++i) - { - m_queryProxyId = m_moveBuffer[i]; - if (m_queryProxyId == e_nullProxy) - { - continue; - } - - // We have to query the tree with the fat AABB so that - // we don't fail to create a pair that may touch later. - const b2AABB& fatAABB = m_tree.GetFatAABB(m_queryProxyId); - - // Query tree, create pairs and add them pair buffer. - m_tree.Query(this, fatAABB); - } - - // Reset move buffer - m_moveCount = 0; - - // Sort the pair buffer to expose duplicates. - std::sort(m_pairBuffer, m_pairBuffer + m_pairCount, b2PairLessThan); - - // Send the pairs back to the client. - int32 i = 0; - while (i < m_pairCount) - { - b2Pair* primaryPair = m_pairBuffer + i; - void* userDataA = m_tree.GetUserData(primaryPair->proxyIdA); - void* userDataB = m_tree.GetUserData(primaryPair->proxyIdB); - - callback->AddPair(userDataA, userDataB); - ++i; - - // Skip any duplicate pairs. - while (i < m_pairCount) - { - b2Pair* pair = m_pairBuffer + i; - if (pair->proxyIdA != primaryPair->proxyIdA || pair->proxyIdB != primaryPair->proxyIdB) - { - break; - } - ++i; - } - } - - // Try to keep the tree balanced. - m_tree.Rebalance(4); -} - -template -inline void b2BroadPhase::Query(T* callback, const b2AABB& aabb) const -{ - m_tree.Query(callback, aabb); -} - -template -inline void b2BroadPhase::RayCast(T* callback, const b2RayCastInput& input) const -{ - m_tree.RayCast(callback, input); -} - -#endif diff --git a/Littlest/libs/Box2D/Collision/b2CollideCircle.cpp b/Littlest/libs/Box2D/Collision/b2CollideCircle.cpp deleted file mode 100644 index 6edf89d..0000000 --- a/Littlest/libs/Box2D/Collision/b2CollideCircle.cpp +++ /dev/null @@ -1,154 +0,0 @@ -/* -* Copyright (c) 2007-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#include -#include -#include - -void b2CollideCircles( - b2Manifold* manifold, - const b2CircleShape* circleA, const b2Transform& xfA, - const b2CircleShape* circleB, const b2Transform& xfB) -{ - manifold->pointCount = 0; - - b2Vec2 pA = b2Mul(xfA, circleA->m_p); - b2Vec2 pB = b2Mul(xfB, circleB->m_p); - - b2Vec2 d = pB - pA; - float32 distSqr = b2Dot(d, d); - float32 rA = circleA->m_radius, rB = circleB->m_radius; - float32 radius = rA + rB; - if (distSqr > radius * radius) - { - return; - } - - manifold->type = b2Manifold::e_circles; - manifold->localPoint = circleA->m_p; - manifold->localNormal.SetZero(); - manifold->pointCount = 1; - - manifold->points[0].localPoint = circleB->m_p; - manifold->points[0].id.key = 0; -} - -void b2CollidePolygonAndCircle( - b2Manifold* manifold, - const b2PolygonShape* polygonA, const b2Transform& xfA, - const b2CircleShape* circleB, const b2Transform& xfB) -{ - manifold->pointCount = 0; - - // Compute circle position in the frame of the polygon. - b2Vec2 c = b2Mul(xfB, circleB->m_p); - b2Vec2 cLocal = b2MulT(xfA, c); - - // Find the min separating edge. - int32 normalIndex = 0; - float32 separation = -b2_maxFloat; - float32 radius = polygonA->m_radius + circleB->m_radius; - int32 vertexCount = polygonA->m_vertexCount; - const b2Vec2* vertices = polygonA->m_vertices; - const b2Vec2* normals = polygonA->m_normals; - - for (int32 i = 0; i < vertexCount; ++i) - { - float32 s = b2Dot(normals[i], cLocal - vertices[i]); - - if (s > radius) - { - // Early out. - return; - } - - if (s > separation) - { - separation = s; - normalIndex = i; - } - } - - // Vertices that subtend the incident face. - int32 vertIndex1 = normalIndex; - int32 vertIndex2 = vertIndex1 + 1 < vertexCount ? vertIndex1 + 1 : 0; - b2Vec2 v1 = vertices[vertIndex1]; - b2Vec2 v2 = vertices[vertIndex2]; - - // If the center is inside the polygon ... - if (separation < b2_epsilon) - { - manifold->pointCount = 1; - manifold->type = b2Manifold::e_faceA; - manifold->localNormal = normals[normalIndex]; - manifold->localPoint = 0.5f * (v1 + v2); - manifold->points[0].localPoint = circleB->m_p; - manifold->points[0].id.key = 0; - return; - } - - // Compute barycentric coordinates - float32 u1 = b2Dot(cLocal - v1, v2 - v1); - float32 u2 = b2Dot(cLocal - v2, v1 - v2); - if (u1 <= 0.0f) - { - if (b2DistanceSquared(cLocal, v1) > radius * radius) - { - return; - } - - manifold->pointCount = 1; - manifold->type = b2Manifold::e_faceA; - manifold->localNormal = cLocal - v1; - manifold->localNormal.Normalize(); - manifold->localPoint = v1; - manifold->points[0].localPoint = circleB->m_p; - manifold->points[0].id.key = 0; - } - else if (u2 <= 0.0f) - { - if (b2DistanceSquared(cLocal, v2) > radius * radius) - { - return; - } - - manifold->pointCount = 1; - manifold->type = b2Manifold::e_faceA; - manifold->localNormal = cLocal - v2; - manifold->localNormal.Normalize(); - manifold->localPoint = v2; - manifold->points[0].localPoint = circleB->m_p; - manifold->points[0].id.key = 0; - } - else - { - b2Vec2 faceCenter = 0.5f * (v1 + v2); - float32 separation = b2Dot(cLocal - faceCenter, normals[vertIndex1]); - if (separation > radius) - { - return; - } - - manifold->pointCount = 1; - manifold->type = b2Manifold::e_faceA; - manifold->localNormal = normals[vertIndex1]; - manifold->localPoint = faceCenter; - manifold->points[0].localPoint = circleB->m_p; - manifold->points[0].id.key = 0; - } -} diff --git a/Littlest/libs/Box2D/Collision/b2CollidePolygon.cpp b/Littlest/libs/Box2D/Collision/b2CollidePolygon.cpp deleted file mode 100644 index b37b7ba..0000000 --- a/Littlest/libs/Box2D/Collision/b2CollidePolygon.cpp +++ /dev/null @@ -1,306 +0,0 @@ -/* -* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#include -#include - -// Find the separation between poly1 and poly2 for a give edge normal on poly1. -static float32 b2EdgeSeparation(const b2PolygonShape* poly1, const b2Transform& xf1, int32 edge1, - const b2PolygonShape* poly2, const b2Transform& xf2) -{ - int32 count1 = poly1->m_vertexCount; - const b2Vec2* vertices1 = poly1->m_vertices; - const b2Vec2* normals1 = poly1->m_normals; - - int32 count2 = poly2->m_vertexCount; - const b2Vec2* vertices2 = poly2->m_vertices; - - b2Assert(0 <= edge1 && edge1 < count1); - - // Convert normal from poly1's frame into poly2's frame. - b2Vec2 normal1World = b2Mul(xf1.R, normals1[edge1]); - b2Vec2 normal1 = b2MulT(xf2.R, normal1World); - - // Find support vertex on poly2 for -normal. - int32 index = 0; - float32 minDot = b2_maxFloat; - - for (int32 i = 0; i < count2; ++i) - { - float32 dot = b2Dot(vertices2[i], normal1); - if (dot < minDot) - { - minDot = dot; - index = i; - } - } - - b2Vec2 v1 = b2Mul(xf1, vertices1[edge1]); - b2Vec2 v2 = b2Mul(xf2, vertices2[index]); - float32 separation = b2Dot(v2 - v1, normal1World); - return separation; -} - -// Find the max separation between poly1 and poly2 using edge normals from poly1. -static float32 b2FindMaxSeparation(int32* edgeIndex, - const b2PolygonShape* poly1, const b2Transform& xf1, - const b2PolygonShape* poly2, const b2Transform& xf2) -{ - int32 count1 = poly1->m_vertexCount; - const b2Vec2* normals1 = poly1->m_normals; - - // Vector pointing from the centroid of poly1 to the centroid of poly2. - b2Vec2 d = b2Mul(xf2, poly2->m_centroid) - b2Mul(xf1, poly1->m_centroid); - b2Vec2 dLocal1 = b2MulT(xf1.R, d); - - // Find edge normal on poly1 that has the largest projection onto d. - int32 edge = 0; - float32 maxDot = -b2_maxFloat; - for (int32 i = 0; i < count1; ++i) - { - float32 dot = b2Dot(normals1[i], dLocal1); - if (dot > maxDot) - { - maxDot = dot; - edge = i; - } - } - - // Get the separation for the edge normal. - float32 s = b2EdgeSeparation(poly1, xf1, edge, poly2, xf2); - - // Check the separation for the previous edge normal. - int32 prevEdge = edge - 1 >= 0 ? edge - 1 : count1 - 1; - float32 sPrev = b2EdgeSeparation(poly1, xf1, prevEdge, poly2, xf2); - - // Check the separation for the next edge normal. - int32 nextEdge = edge + 1 < count1 ? edge + 1 : 0; - float32 sNext = b2EdgeSeparation(poly1, xf1, nextEdge, poly2, xf2); - - // Find the best edge and the search direction. - int32 bestEdge; - float32 bestSeparation; - int32 increment; - if (sPrev > s && sPrev > sNext) - { - increment = -1; - bestEdge = prevEdge; - bestSeparation = sPrev; - } - else if (sNext > s) - { - increment = 1; - bestEdge = nextEdge; - bestSeparation = sNext; - } - else - { - *edgeIndex = edge; - return s; - } - - // Perform a local search for the best edge normal. - for ( ; ; ) - { - if (increment == -1) - edge = bestEdge - 1 >= 0 ? bestEdge - 1 : count1 - 1; - else - edge = bestEdge + 1 < count1 ? bestEdge + 1 : 0; - - s = b2EdgeSeparation(poly1, xf1, edge, poly2, xf2); - - if (s > bestSeparation) - { - bestEdge = edge; - bestSeparation = s; - } - else - { - break; - } - } - - *edgeIndex = bestEdge; - return bestSeparation; -} - -static void b2FindIncidentEdge(b2ClipVertex c[2], - const b2PolygonShape* poly1, const b2Transform& xf1, int32 edge1, - const b2PolygonShape* poly2, const b2Transform& xf2) -{ - int32 count1 = poly1->m_vertexCount; - const b2Vec2* normals1 = poly1->m_normals; - - int32 count2 = poly2->m_vertexCount; - const b2Vec2* vertices2 = poly2->m_vertices; - const b2Vec2* normals2 = poly2->m_normals; - - b2Assert(0 <= edge1 && edge1 < count1); - - // Get the normal of the reference edge in poly2's frame. - b2Vec2 normal1 = b2MulT(xf2.R, b2Mul(xf1.R, normals1[edge1])); - - // Find the incident edge on poly2. - int32 index = 0; - float32 minDot = b2_maxFloat; - for (int32 i = 0; i < count2; ++i) - { - float32 dot = b2Dot(normal1, normals2[i]); - if (dot < minDot) - { - minDot = dot; - index = i; - } - } - - // Build the clip vertices for the incident edge. - int32 i1 = index; - int32 i2 = i1 + 1 < count2 ? i1 + 1 : 0; - - c[0].v = b2Mul(xf2, vertices2[i1]); - c[0].id.features.referenceEdge = (uint8)edge1; - c[0].id.features.incidentEdge = (uint8)i1; - c[0].id.features.incidentVertex = 0; - - c[1].v = b2Mul(xf2, vertices2[i2]); - c[1].id.features.referenceEdge = (uint8)edge1; - c[1].id.features.incidentEdge = (uint8)i2; - c[1].id.features.incidentVertex = 1; -} - -// Find edge normal of max separation on A - return if separating axis is found -// Find edge normal of max separation on B - return if separation axis is found -// Choose reference edge as min(minA, minB) -// Find incident edge -// Clip - -// The normal points from 1 to 2 -void b2CollidePolygons(b2Manifold* manifold, - const b2PolygonShape* polyA, const b2Transform& xfA, - const b2PolygonShape* polyB, const b2Transform& xfB) -{ - manifold->pointCount = 0; - float32 totalRadius = polyA->m_radius + polyB->m_radius; - - int32 edgeA = 0; - float32 separationA = b2FindMaxSeparation(&edgeA, polyA, xfA, polyB, xfB); - if (separationA > totalRadius) - return; - - int32 edgeB = 0; - float32 separationB = b2FindMaxSeparation(&edgeB, polyB, xfB, polyA, xfA); - if (separationB > totalRadius) - return; - - const b2PolygonShape* poly1; // reference polygon - const b2PolygonShape* poly2; // incident polygon - b2Transform xf1, xf2; - int32 edge1; // reference edge - uint8 flip; - const float32 k_relativeTol = 0.98f; - const float32 k_absoluteTol = 0.001f; - - if (separationB > k_relativeTol * separationA + k_absoluteTol) - { - poly1 = polyB; - poly2 = polyA; - xf1 = xfB; - xf2 = xfA; - edge1 = edgeB; - manifold->type = b2Manifold::e_faceB; - flip = 1; - } - else - { - poly1 = polyA; - poly2 = polyB; - xf1 = xfA; - xf2 = xfB; - edge1 = edgeA; - manifold->type = b2Manifold::e_faceA; - flip = 0; - } - - b2ClipVertex incidentEdge[2]; - b2FindIncidentEdge(incidentEdge, poly1, xf1, edge1, poly2, xf2); - - int32 count1 = poly1->m_vertexCount; - const b2Vec2* vertices1 = poly1->m_vertices; - - b2Vec2 v11 = vertices1[edge1]; - b2Vec2 v12 = edge1 + 1 < count1 ? vertices1[edge1+1] : vertices1[0]; - - b2Vec2 localTangent = v12 - v11; - localTangent.Normalize(); - - b2Vec2 localNormal = b2Cross(localTangent, 1.0f); - b2Vec2 planePoint = 0.5f * (v11 + v12); - - b2Vec2 tangent = b2Mul(xf1.R, localTangent); - b2Vec2 normal = b2Cross(tangent, 1.0f); - - v11 = b2Mul(xf1, v11); - v12 = b2Mul(xf1, v12); - - // Face offset. - float32 frontOffset = b2Dot(normal, v11); - - // Side offsets, extended by polytope skin thickness. - float32 sideOffset1 = -b2Dot(tangent, v11) + totalRadius; - float32 sideOffset2 = b2Dot(tangent, v12) + totalRadius; - - // Clip incident edge against extruded edge1 side edges. - b2ClipVertex clipPoints1[2]; - b2ClipVertex clipPoints2[2]; - int np; - - // Clip to box side 1 - np = b2ClipSegmentToLine(clipPoints1, incidentEdge, -tangent, sideOffset1); - - if (np < 2) - return; - - // Clip to negative box side 1 - np = b2ClipSegmentToLine(clipPoints2, clipPoints1, tangent, sideOffset2); - - if (np < 2) - { - return; - } - - // Now clipPoints2 contains the clipped points. - manifold->localNormal = localNormal; - manifold->localPoint = planePoint; - - int32 pointCount = 0; - for (int32 i = 0; i < b2_maxManifoldPoints; ++i) - { - float32 separation = b2Dot(normal, clipPoints2[i].v) - frontOffset; - - if (separation <= totalRadius) - { - b2ManifoldPoint* cp = manifold->points + pointCount; - cp->localPoint = b2MulT(xf2, clipPoints2[i].v); - cp->id = clipPoints2[i].id; - cp->id.features.flip = flip; - ++pointCount; - } - } - - manifold->pointCount = pointCount; -} diff --git a/Littlest/libs/Box2D/Collision/b2Collision.cpp b/Littlest/libs/Box2D/Collision/b2Collision.cpp deleted file mode 100644 index a86c7c5..0000000 --- a/Littlest/libs/Box2D/Collision/b2Collision.cpp +++ /dev/null @@ -1,250 +0,0 @@ -/* -* Copyright (c) 2007-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#include -#include - -void b2WorldManifold::Initialize(const b2Manifold* manifold, - const b2Transform& xfA, float32 radiusA, - const b2Transform& xfB, float32 radiusB) -{ - if (manifold->pointCount == 0) - { - return; - } - - switch (manifold->type) - { - case b2Manifold::e_circles: - { - normal.Set(1.0f, 0.0f); - b2Vec2 pointA = b2Mul(xfA, manifold->localPoint); - b2Vec2 pointB = b2Mul(xfB, manifold->points[0].localPoint); - if (b2DistanceSquared(pointA, pointB) > b2_epsilon * b2_epsilon) - { - normal = pointB - pointA; - normal.Normalize(); - } - - b2Vec2 cA = pointA + radiusA * normal; - b2Vec2 cB = pointB - radiusB * normal; - points[0] = 0.5f * (cA + cB); - } - break; - - case b2Manifold::e_faceA: - { - normal = b2Mul(xfA.R, manifold->localNormal); - b2Vec2 planePoint = b2Mul(xfA, manifold->localPoint); - - for (int32 i = 0; i < manifold->pointCount; ++i) - { - b2Vec2 clipPoint = b2Mul(xfB, manifold->points[i].localPoint); - b2Vec2 cA = clipPoint + (radiusA - b2Dot(clipPoint - planePoint, normal)) * normal; - b2Vec2 cB = clipPoint - radiusB * normal; - points[i] = 0.5f * (cA + cB); - } - } - break; - - case b2Manifold::e_faceB: - { - normal = b2Mul(xfB.R, manifold->localNormal); - b2Vec2 planePoint = b2Mul(xfB, manifold->localPoint); - - for (int32 i = 0; i < manifold->pointCount; ++i) - { - b2Vec2 clipPoint = b2Mul(xfA, manifold->points[i].localPoint); - b2Vec2 cB = clipPoint + (radiusB - b2Dot(clipPoint - planePoint, normal)) * normal; - b2Vec2 cA = clipPoint - radiusA * normal; - points[i] = 0.5f * (cA + cB); - } - - // Ensure normal points from A to B. - normal = -normal; - } - break; - } -} - -void b2GetPointStates(b2PointState state1[b2_maxManifoldPoints], b2PointState state2[b2_maxManifoldPoints], - const b2Manifold* manifold1, const b2Manifold* manifold2) -{ - for (int32 i = 0; i < b2_maxManifoldPoints; ++i) - { - state1[i] = b2_nullState; - state2[i] = b2_nullState; - } - - // Detect persists and removes. - for (int32 i = 0; i < manifold1->pointCount; ++i) - { - b2ContactID id = manifold1->points[i].id; - - state1[i] = b2_removeState; - - for (int32 j = 0; j < manifold2->pointCount; ++j) - { - if (manifold2->points[j].id.key == id.key) - { - state1[i] = b2_persistState; - break; - } - } - } - - // Detect persists and adds. - for (int32 i = 0; i < manifold2->pointCount; ++i) - { - b2ContactID id = manifold2->points[i].id; - - state2[i] = b2_addState; - - for (int32 j = 0; j < manifold1->pointCount; ++j) - { - if (manifold1->points[j].id.key == id.key) - { - state2[i] = b2_persistState; - break; - } - } - } -} - -// From Real-time Collision Detection, p179. -bool b2AABB::RayCast(b2RayCastOutput* output, const b2RayCastInput& input) const -{ - float32 tmin = -b2_maxFloat; - float32 tmax = b2_maxFloat; - - b2Vec2 p = input.p1; - b2Vec2 d = input.p2 - input.p1; - b2Vec2 absD = b2Abs(d); - - b2Vec2 normal; - - for (int32 i = 0; i < 2; ++i) - { - if (absD(i) < b2_epsilon) - { - // Parallel. - if (p(i) < lowerBound(i) || upperBound(i) < p(i)) - { - return false; - } - } - else - { - float32 inv_d = 1.0f / d(i); - float32 t1 = (lowerBound(i) - p(i)) * inv_d; - float32 t2 = (upperBound(i) - p(i)) * inv_d; - - // Sign of the normal vector. - float32 s = -1.0f; - - if (t1 > t2) - { - b2Swap(t1, t2); - s = 1.0f; - } - - // Push the min up - if (t1 > tmin) - { - normal.SetZero(); - normal(i) = s; - tmin = t1; - } - - // Pull the max down - tmax = b2Min(tmax, t2); - - if (tmin > tmax) - { - return false; - } - } - } - - // Does the ray start inside the box? - // Does the ray intersect beyond the max fraction? - if (tmin < 0.0f || input.maxFraction < tmin) - { - return false; - } - - // Intersection. - output->fraction = tmin; - output->normal = normal; - return true; -} - -// Sutherland-Hodgman clipping. -int32 b2ClipSegmentToLine(b2ClipVertex vOut[2], const b2ClipVertex vIn[2], - const b2Vec2& normal, float32 offset) -{ - // Start with no output points - int32 numOut = 0; - - // Calculate the distance of end points to the line - float32 distance0 = b2Dot(normal, vIn[0].v) - offset; - float32 distance1 = b2Dot(normal, vIn[1].v) - offset; - - // If the points are behind the plane - if (distance0 <= 0.0f) vOut[numOut++] = vIn[0]; - if (distance1 <= 0.0f) vOut[numOut++] = vIn[1]; - - // If the points are on different sides of the plane - if (distance0 * distance1 < 0.0f) - { - // Find intersection point of edge and plane - float32 interp = distance0 / (distance0 - distance1); - vOut[numOut].v = vIn[0].v + interp * (vIn[1].v - vIn[0].v); - if (distance0 > 0.0f) - { - vOut[numOut].id = vIn[0].id; - } - else - { - vOut[numOut].id = vIn[1].id; - } - ++numOut; - } - - return numOut; -} - -bool b2TestOverlap(const b2Shape* shapeA, const b2Shape* shapeB, - const b2Transform& xfA, const b2Transform& xfB) -{ - b2DistanceInput input; - input.proxyA.Set(shapeA); - input.proxyB.Set(shapeB); - input.transformA = xfA; - input.transformB = xfB; - input.useRadii = true; - - b2SimplexCache cache; - cache.count = 0; - - b2DistanceOutput output; - - b2Distance(&output, &cache, &input); - - return output.distance < 10.0f * b2_epsilon; -} diff --git a/Littlest/libs/Box2D/Collision/b2Collision.h b/Littlest/libs/Box2D/Collision/b2Collision.h deleted file mode 100644 index baffdbd..0000000 --- a/Littlest/libs/Box2D/Collision/b2Collision.h +++ /dev/null @@ -1,240 +0,0 @@ -/* -* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef B2_COLLISION_H -#define B2_COLLISION_H - -#include -#include - -/// @file -/// Structures and functions used for computing contact points, distance -/// queries, and TOI queries. - -class b2Shape; -class b2CircleShape; -class b2PolygonShape; - -const uint8 b2_nullFeature = UCHAR_MAX; - -/// Contact ids to facilitate warm starting. -union b2ContactID -{ - /// The features that intersect to form the contact point - struct Features - { - uint8 referenceEdge; ///< The edge that defines the outward contact normal. - uint8 incidentEdge; ///< The edge most anti-parallel to the reference edge. - uint8 incidentVertex; ///< The vertex (0 or 1) on the incident edge that was clipped. - uint8 flip; ///< A value of 1 indicates that the reference edge is on shape2. - } features; - uint32 key; ///< Used to quickly compare contact ids. -}; - -/// A manifold point is a contact point belonging to a contact -/// manifold. It holds details related to the geometry and dynamics -/// of the contact points. -/// The local point usage depends on the manifold type: -/// -e_circles: the local center of circleB -/// -e_faceA: the local center of cirlceB or the clip point of polygonB -/// -e_faceB: the clip point of polygonA -/// This structure is stored across time steps, so we keep it small. -/// Note: the impulses are used for internal caching and may not -/// provide reliable contact forces, especially for high speed collisions. -struct b2ManifoldPoint -{ - b2Vec2 localPoint; ///< usage depends on manifold type - float32 normalImpulse; ///< the non-penetration impulse - float32 tangentImpulse; ///< the friction impulse - b2ContactID id; ///< uniquely identifies a contact point between two shapes -}; - -/// A manifold for two touching convex shapes. -/// Box2D supports multiple types of contact: -/// - clip point versus plane with radius -/// - point versus point with radius (circles) -/// The local point usage depends on the manifold type: -/// -e_circles: the local center of circleA -/// -e_faceA: the center of faceA -/// -e_faceB: the center of faceB -/// Similarly the local normal usage: -/// -e_circles: not used -/// -e_faceA: the normal on polygonA -/// -e_faceB: the normal on polygonB -/// We store contacts in this way so that position correction can -/// account for movement, which is critical for continuous physics. -/// All contact scenarios must be expressed in one of these types. -/// This structure is stored across time steps, so we keep it small. -struct b2Manifold -{ - enum Type - { - e_circles, - e_faceA, - e_faceB - }; - - b2ManifoldPoint points[b2_maxManifoldPoints]; ///< the points of contact - b2Vec2 localNormal; ///< not use for Type::e_points - b2Vec2 localPoint; ///< usage depends on manifold type - Type type; - int32 pointCount; ///< the number of manifold points -}; - -/// This is used to compute the current state of a contact manifold. -struct b2WorldManifold -{ - /// Evaluate the manifold with supplied transforms. This assumes - /// modest motion from the original state. This does not change the - /// point count, impulses, etc. The radii must come from the shapes - /// that generated the manifold. - void Initialize(const b2Manifold* manifold, - const b2Transform& xfA, float32 radiusA, - const b2Transform& xfB, float32 radiusB); - - b2Vec2 normal; ///< world vector pointing from A to B - b2Vec2 points[b2_maxManifoldPoints]; ///< world contact point (point of intersection) -}; - -/// This is used for determining the state of contact points. -enum b2PointState -{ - b2_nullState, ///< point does not exist - b2_addState, ///< point was added in the update - b2_persistState, ///< point persisted across the update - b2_removeState ///< point was removed in the update -}; - -/// Compute the point states given two manifolds. The states pertain to the transition from manifold1 -/// to manifold2. So state1 is either persist or remove while state2 is either add or persist. -void b2GetPointStates(b2PointState state1[b2_maxManifoldPoints], b2PointState state2[b2_maxManifoldPoints], - const b2Manifold* manifold1, const b2Manifold* manifold2); - -/// Used for computing contact manifolds. -struct b2ClipVertex -{ - b2Vec2 v; - b2ContactID id; -}; - -/// Ray-cast input data. The ray extends from p1 to p1 + maxFraction * (p2 - p1). -struct b2RayCastInput -{ - b2Vec2 p1, p2; - float32 maxFraction; -}; - -/// Ray-cast output data. The ray hits at p1 + fraction * (p2 - p1), where p1 and p2 -/// come from b2RayCastInput. -struct b2RayCastOutput -{ - b2Vec2 normal; - float32 fraction; -}; - -/// An axis aligned bounding box. -struct b2AABB -{ - /// Verify that the bounds are sorted. - bool IsValid() const; - - /// Get the center of the AABB. - b2Vec2 GetCenter() const - { - return 0.5f * (lowerBound + upperBound); - } - - /// Get the extents of the AABB (half-widths). - b2Vec2 GetExtents() const - { - return 0.5f * (upperBound - lowerBound); - } - - /// Combine two AABBs into this one. - void Combine(const b2AABB& aabb1, const b2AABB& aabb2) - { - lowerBound = b2Min(aabb1.lowerBound, aabb2.lowerBound); - upperBound = b2Max(aabb1.upperBound, aabb2.upperBound); - } - - /// Does this aabb contain the provided AABB. - bool Contains(const b2AABB& aabb) const - { - bool result = true; - result = result && lowerBound.x <= aabb.lowerBound.x; - result = result && lowerBound.y <= aabb.lowerBound.y; - result = result && aabb.upperBound.x <= upperBound.x; - result = result && aabb.upperBound.y <= upperBound.y; - return result; - } - - bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input) const; - - b2Vec2 lowerBound; ///< the lower vertex - b2Vec2 upperBound; ///< the upper vertex -}; - -/// Compute the collision manifold between two circles. -void b2CollideCircles(b2Manifold* manifold, - const b2CircleShape* circle1, const b2Transform& xf1, - const b2CircleShape* circle2, const b2Transform& xf2); - -/// Compute the collision manifold between a polygon and a circle. -void b2CollidePolygonAndCircle(b2Manifold* manifold, - const b2PolygonShape* polygon, const b2Transform& xf1, - const b2CircleShape* circle, const b2Transform& xf2); - -/// Compute the collision manifold between two polygons. -void b2CollidePolygons(b2Manifold* manifold, - const b2PolygonShape* polygon1, const b2Transform& xf1, - const b2PolygonShape* polygon2, const b2Transform& xf2); - -/// Clipping for contact manifolds. -int32 b2ClipSegmentToLine(b2ClipVertex vOut[2], const b2ClipVertex vIn[2], - const b2Vec2& normal, float32 offset); - -/// Determine if two generic shapes overlap. -bool b2TestOverlap(const b2Shape* shapeA, const b2Shape* shapeB, - const b2Transform& xfA, const b2Transform& xfB); - -// ---------------- Inline Functions ------------------------------------------ - -inline bool b2AABB::IsValid() const -{ - b2Vec2 d = upperBound - lowerBound; - bool valid = d.x >= 0.0f && d.y >= 0.0f; - valid = valid && lowerBound.IsValid() && upperBound.IsValid(); - return valid; -} - -inline bool b2TestOverlap(const b2AABB& a, const b2AABB& b) -{ - b2Vec2 d1, d2; - d1 = b.lowerBound - a.upperBound; - d2 = a.lowerBound - b.upperBound; - - if (d1.x > 0.0f || d1.y > 0.0f) - return false; - - if (d2.x > 0.0f || d2.y > 0.0f) - return false; - - return true; -} - -#endif diff --git a/Littlest/libs/Box2D/Collision/b2Distance.cpp b/Littlest/libs/Box2D/Collision/b2Distance.cpp deleted file mode 100644 index 500e13f..0000000 --- a/Littlest/libs/Box2D/Collision/b2Distance.cpp +++ /dev/null @@ -1,571 +0,0 @@ -/* -* Copyright (c) 2007-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#include -#include -#include - -// GJK using Voronoi regions (Christer Ericson) and Barycentric coordinates. -int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters; - -void b2DistanceProxy::Set(const b2Shape* shape) -{ - switch (shape->GetType()) - { - case b2Shape::e_circle: - { - const b2CircleShape* circle = (b2CircleShape*)shape; - m_vertices = &circle->m_p; - m_count = 1; - m_radius = circle->m_radius; - } - break; - - case b2Shape::e_polygon: - { - const b2PolygonShape* polygon = (b2PolygonShape*)shape; - m_vertices = polygon->m_vertices; - m_count = polygon->m_vertexCount; - m_radius = polygon->m_radius; - } - break; - - default: - b2Assert(false); - } -} - - -struct b2SimplexVertex -{ - b2Vec2 wA; // support point in proxyA - b2Vec2 wB; // support point in proxyB - b2Vec2 w; // wB - wA - float32 a; // barycentric coordinate for closest point - int32 indexA; // wA index - int32 indexB; // wB index -}; - -struct b2Simplex -{ - void ReadCache( const b2SimplexCache* cache, - const b2DistanceProxy* proxyA, const b2Transform& transformA, - const b2DistanceProxy* proxyB, const b2Transform& transformB) - { - b2Assert(cache->count <= 3); - - // Copy data from cache. - m_count = cache->count; - b2SimplexVertex* vertices = &m_v1; - for (int32 i = 0; i < m_count; ++i) - { - b2SimplexVertex* v = vertices + i; - v->indexA = cache->indexA[i]; - v->indexB = cache->indexB[i]; - b2Vec2 wALocal = proxyA->GetVertex(v->indexA); - b2Vec2 wBLocal = proxyB->GetVertex(v->indexB); - v->wA = b2Mul(transformA, wALocal); - v->wB = b2Mul(transformB, wBLocal); - v->w = v->wB - v->wA; - v->a = 0.0f; - } - - // Compute the new simplex metric, if it is substantially different than - // old metric then flush the simplex. - if (m_count > 1) - { - float32 metric1 = cache->metric; - float32 metric2 = GetMetric(); - if (metric2 < 0.5f * metric1 || 2.0f * metric1 < metric2 || metric2 < b2_epsilon) - { - // Reset the simplex. - m_count = 0; - } - } - - // If the cache is empty or invalid ... - if (m_count == 0) - { - b2SimplexVertex* v = vertices + 0; - v->indexA = 0; - v->indexB = 0; - b2Vec2 wALocal = proxyA->GetVertex(0); - b2Vec2 wBLocal = proxyB->GetVertex(0); - v->wA = b2Mul(transformA, wALocal); - v->wB = b2Mul(transformB, wBLocal); - v->w = v->wB - v->wA; - m_count = 1; - } - } - - void WriteCache(b2SimplexCache* cache) const - { - cache->metric = GetMetric(); - cache->count = uint16(m_count); - const b2SimplexVertex* vertices = &m_v1; - for (int32 i = 0; i < m_count; ++i) - { - cache->indexA[i] = uint8(vertices[i].indexA); - cache->indexB[i] = uint8(vertices[i].indexB); - } - } - - b2Vec2 GetSearchDirection() const - { - switch (m_count) - { - case 1: - return -m_v1.w; - - case 2: - { - b2Vec2 e12 = m_v2.w - m_v1.w; - float32 sgn = b2Cross(e12, -m_v1.w); - if (sgn > 0.0f) - { - // Origin is left of e12. - return b2Cross(1.0f, e12); - } - else - { - // Origin is right of e12. - return b2Cross(e12, 1.0f); - } - } - - default: - b2Assert(false); - return b2Vec2_zero; - } - } - - b2Vec2 GetClosestPoint() const - { - switch (m_count) - { - case 0: - b2Assert(false); - return b2Vec2_zero; - - case 1: - return m_v1.w; - - case 2: - return m_v1.a * m_v1.w + m_v2.a * m_v2.w; - - case 3: - return b2Vec2_zero; - - default: - b2Assert(false); - return b2Vec2_zero; - } - } - - void GetWitnessPoints(b2Vec2* pA, b2Vec2* pB) const - { - switch (m_count) - { - case 0: - b2Assert(false); - break; - - case 1: - *pA = m_v1.wA; - *pB = m_v1.wB; - break; - - case 2: - *pA = m_v1.a * m_v1.wA + m_v2.a * m_v2.wA; - *pB = m_v1.a * m_v1.wB + m_v2.a * m_v2.wB; - break; - - case 3: - *pA = m_v1.a * m_v1.wA + m_v2.a * m_v2.wA + m_v3.a * m_v3.wA; - *pB = *pA; - break; - - default: - b2Assert(false); - break; - } - } - - float32 GetMetric() const - { - switch (m_count) - { - case 0: - b2Assert(false); - return 0.0f; - - case 1: - return 0.0f; - - case 2: - return b2Distance(m_v1.w, m_v2.w); - - case 3: - return b2Cross(m_v2.w - m_v1.w, m_v3.w - m_v1.w); - - default: - b2Assert(false); - return 0.0f; - } - } - - void Solve2(); - void Solve3(); - - b2SimplexVertex m_v1, m_v2, m_v3; - int32 m_count; -}; - - -// Solve a line segment using barycentric coordinates. -// -// p = a1 * w1 + a2 * w2 -// a1 + a2 = 1 -// -// The vector from the origin to the closest point on the line is -// perpendicular to the line. -// e12 = w2 - w1 -// dot(p, e) = 0 -// a1 * dot(w1, e) + a2 * dot(w2, e) = 0 -// -// 2-by-2 linear system -// [1 1 ][a1] = [1] -// [w1.e12 w2.e12][a2] = [0] -// -// Define -// d12_1 = dot(w2, e12) -// d12_2 = -dot(w1, e12) -// d12 = d12_1 + d12_2 -// -// Solution -// a1 = d12_1 / d12 -// a2 = d12_2 / d12 -void b2Simplex::Solve2() -{ - b2Vec2 w1 = m_v1.w; - b2Vec2 w2 = m_v2.w; - b2Vec2 e12 = w2 - w1; - - // w1 region - float32 d12_2 = -b2Dot(w1, e12); - if (d12_2 <= 0.0f) - { - // a2 <= 0, so we clamp it to 0 - m_v1.a = 1.0f; - m_count = 1; - return; - } - - // w2 region - float32 d12_1 = b2Dot(w2, e12); - if (d12_1 <= 0.0f) - { - // a1 <= 0, so we clamp it to 0 - m_v2.a = 1.0f; - m_count = 1; - m_v1 = m_v2; - return; - } - - // Must be in e12 region. - float32 inv_d12 = 1.0f / (d12_1 + d12_2); - m_v1.a = d12_1 * inv_d12; - m_v2.a = d12_2 * inv_d12; - m_count = 2; -} - -// Possible regions: -// - points[2] -// - edge points[0]-points[2] -// - edge points[1]-points[2] -// - inside the triangle -void b2Simplex::Solve3() -{ - b2Vec2 w1 = m_v1.w; - b2Vec2 w2 = m_v2.w; - b2Vec2 w3 = m_v3.w; - - // Edge12 - // [1 1 ][a1] = [1] - // [w1.e12 w2.e12][a2] = [0] - // a3 = 0 - b2Vec2 e12 = w2 - w1; - float32 w1e12 = b2Dot(w1, e12); - float32 w2e12 = b2Dot(w2, e12); - float32 d12_1 = w2e12; - float32 d12_2 = -w1e12; - - // Edge13 - // [1 1 ][a1] = [1] - // [w1.e13 w3.e13][a3] = [0] - // a2 = 0 - b2Vec2 e13 = w3 - w1; - float32 w1e13 = b2Dot(w1, e13); - float32 w3e13 = b2Dot(w3, e13); - float32 d13_1 = w3e13; - float32 d13_2 = -w1e13; - - // Edge23 - // [1 1 ][a2] = [1] - // [w2.e23 w3.e23][a3] = [0] - // a1 = 0 - b2Vec2 e23 = w3 - w2; - float32 w2e23 = b2Dot(w2, e23); - float32 w3e23 = b2Dot(w3, e23); - float32 d23_1 = w3e23; - float32 d23_2 = -w2e23; - - // Triangle123 - float32 n123 = b2Cross(e12, e13); - - float32 d123_1 = n123 * b2Cross(w2, w3); - float32 d123_2 = n123 * b2Cross(w3, w1); - float32 d123_3 = n123 * b2Cross(w1, w2); - - // w1 region - if (d12_2 <= 0.0f && d13_2 <= 0.0f) - { - m_v1.a = 1.0f; - m_count = 1; - return; - } - - // e12 - if (d12_1 > 0.0f && d12_2 > 0.0f && d123_3 <= 0.0f) - { - float32 inv_d12 = 1.0f / (d12_1 + d12_2); - m_v1.a = d12_1 * inv_d12; - m_v2.a = d12_2 * inv_d12; - m_count = 2; - return; - } - - // e13 - if (d13_1 > 0.0f && d13_2 > 0.0f && d123_2 <= 0.0f) - { - float32 inv_d13 = 1.0f / (d13_1 + d13_2); - m_v1.a = d13_1 * inv_d13; - m_v3.a = d13_2 * inv_d13; - m_count = 2; - m_v2 = m_v3; - return; - } - - // w2 region - if (d12_1 <= 0.0f && d23_2 <= 0.0f) - { - m_v2.a = 1.0f; - m_count = 1; - m_v1 = m_v2; - return; - } - - // w3 region - if (d13_1 <= 0.0f && d23_1 <= 0.0f) - { - m_v3.a = 1.0f; - m_count = 1; - m_v1 = m_v3; - return; - } - - // e23 - if (d23_1 > 0.0f && d23_2 > 0.0f && d123_1 <= 0.0f) - { - float32 inv_d23 = 1.0f / (d23_1 + d23_2); - m_v2.a = d23_1 * inv_d23; - m_v3.a = d23_2 * inv_d23; - m_count = 2; - m_v1 = m_v3; - return; - } - - // Must be in triangle123 - float32 inv_d123 = 1.0f / (d123_1 + d123_2 + d123_3); - m_v1.a = d123_1 * inv_d123; - m_v2.a = d123_2 * inv_d123; - m_v3.a = d123_3 * inv_d123; - m_count = 3; -} - -void b2Distance(b2DistanceOutput* output, - b2SimplexCache* cache, - const b2DistanceInput* input) -{ - ++b2_gjkCalls; - - const b2DistanceProxy* proxyA = &input->proxyA; - const b2DistanceProxy* proxyB = &input->proxyB; - - b2Transform transformA = input->transformA; - b2Transform transformB = input->transformB; - - // Initialize the simplex. - b2Simplex simplex; - simplex.ReadCache(cache, proxyA, transformA, proxyB, transformB); - - // Get simplex vertices as an array. - b2SimplexVertex* vertices = &simplex.m_v1; - const int32 k_maxIters = 20; - - // These store the vertices of the last simplex so that we - // can check for duplicates and prevent cycling. - int32 saveA[3], saveB[3]; - int32 saveCount = 0; - - b2Vec2 closestPoint = simplex.GetClosestPoint(); - float32 distanceSqr1 = closestPoint.LengthSquared(); - float32 distanceSqr2 = distanceSqr1; - - // Main iteration loop. - int32 iter = 0; - while (iter < k_maxIters) - { - // Copy simplex so we can identify duplicates. - saveCount = simplex.m_count; - for (int32 i = 0; i < saveCount; ++i) - { - saveA[i] = vertices[i].indexA; - saveB[i] = vertices[i].indexB; - } - - switch (simplex.m_count) - { - case 1: - break; - - case 2: - simplex.Solve2(); - break; - - case 3: - simplex.Solve3(); - break; - - default: - b2Assert(false); - } - - // If we have 3 points, then the origin is in the corresponding triangle. - if (simplex.m_count == 3) - { - break; - } - - // Compute closest point. - b2Vec2 p = simplex.GetClosestPoint(); - distanceSqr2 = p.LengthSquared(); - - // Ensure progress - if (distanceSqr2 >= distanceSqr1) - { - //break; - } - distanceSqr1 = distanceSqr2; - - // Get search direction. - b2Vec2 d = simplex.GetSearchDirection(); - - // Ensure the search direction is numerically fit. - if (d.LengthSquared() < b2_epsilon * b2_epsilon) - { - // The origin is probably contained by a line segment - // or triangle. Thus the shapes are overlapped. - - // We can't return zero here even though there may be overlap. - // In case the simplex is a point, segment, or triangle it is difficult - // to determine if the origin is contained in the CSO or very close to it. - break; - } - - // Compute a tentative new simplex vertex using support points. - b2SimplexVertex* vertex = vertices + simplex.m_count; - vertex->indexA = proxyA->GetSupport(b2MulT(transformA.R, -d)); - vertex->wA = b2Mul(transformA, proxyA->GetVertex(vertex->indexA)); - b2Vec2 wBLocal; - vertex->indexB = proxyB->GetSupport(b2MulT(transformB.R, d)); - vertex->wB = b2Mul(transformB, proxyB->GetVertex(vertex->indexB)); - vertex->w = vertex->wB - vertex->wA; - - // Iteration count is equated to the number of support point calls. - ++iter; - ++b2_gjkIters; - - // Check for duplicate support points. This is the main termination criteria. - bool duplicate = false; - for (int32 i = 0; i < saveCount; ++i) - { - if (vertex->indexA == saveA[i] && vertex->indexB == saveB[i]) - { - duplicate = true; - break; - } - } - - // If we found a duplicate support point we must exit to avoid cycling. - if (duplicate) - { - break; - } - - // New vertex is ok and needed. - ++simplex.m_count; - } - - b2_gjkMaxIters = b2Max(b2_gjkMaxIters, iter); - - // Prepare output. - simplex.GetWitnessPoints(&output->pointA, &output->pointB); - output->distance = b2Distance(output->pointA, output->pointB); - output->iterations = iter; - - // Cache the simplex. - simplex.WriteCache(cache); - - // Apply radii if requested. - if (input->useRadii) - { - float32 rA = proxyA->m_radius; - float32 rB = proxyB->m_radius; - - if (output->distance > rA + rB && output->distance > b2_epsilon) - { - // Shapes are still no overlapped. - // Move the witness points to the outer surface. - output->distance -= rA + rB; - b2Vec2 normal = output->pointB - output->pointA; - normal.Normalize(); - output->pointA += rA * normal; - output->pointB -= rB * normal; - } - else - { - // Shapes are overlapped when radii are considered. - // Move the witness points to the middle. - b2Vec2 p = 0.5f * (output->pointA + output->pointB); - output->pointA = p; - output->pointB = p; - output->distance = 0.0f; - } - } -} diff --git a/Littlest/libs/Box2D/Collision/b2Distance.h b/Littlest/libs/Box2D/Collision/b2Distance.h deleted file mode 100644 index e56ea0a..0000000 --- a/Littlest/libs/Box2D/Collision/b2Distance.h +++ /dev/null @@ -1,141 +0,0 @@ - -/* -* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef B2_DISTANCE_H -#define B2_DISTANCE_H - -#include -#include - -class b2Shape; - -/// A distance proxy is used by the GJK algorithm. -/// It encapsulates any shape. -struct b2DistanceProxy -{ - b2DistanceProxy() : m_vertices(NULL), m_count(0), m_radius(0.0f) {} - - /// Initialize the proxy using the given shape. The shape - /// must remain in scope while the proxy is in use. - void Set(const b2Shape* shape); - - /// Get the supporting vertex index in the given direction. - int32 GetSupport(const b2Vec2& d) const; - - /// Get the supporting vertex in the given direction. - const b2Vec2& GetSupportVertex(const b2Vec2& d) const; - - /// Get the vertex count. - int32 GetVertexCount() const; - - /// Get a vertex by index. Used by b2Distance. - const b2Vec2& GetVertex(int32 index) const; - - const b2Vec2* m_vertices; - int32 m_count; - float32 m_radius; -}; - -/// Used to warm start b2Distance. -/// Set count to zero on first call. -struct b2SimplexCache -{ - float32 metric; ///< length or area - uint16 count; - uint8 indexA[3]; ///< vertices on shape A - uint8 indexB[3]; ///< vertices on shape B -}; - -/// Input for b2Distance. -/// You have to option to use the shape radii -/// in the computation. Even -struct b2DistanceInput -{ - b2DistanceProxy proxyA; - b2DistanceProxy proxyB; - b2Transform transformA; - b2Transform transformB; - bool useRadii; -}; - -/// Output for b2Distance. -struct b2DistanceOutput -{ - b2Vec2 pointA; ///< closest point on shapeA - b2Vec2 pointB; ///< closest point on shapeB - float32 distance; - int32 iterations; ///< number of GJK iterations used -}; - -/// Compute the closest points between two shapes. Supports any combination of: -/// b2CircleShape, b2PolygonShape, b2EdgeShape. The simplex cache is input/output. -/// On the first call set b2SimplexCache.count to zero. -void b2Distance(b2DistanceOutput* output, - b2SimplexCache* cache, - const b2DistanceInput* input); - - -////////////////////////////////////////////////////////////////////////// - -inline int32 b2DistanceProxy::GetVertexCount() const -{ - return m_count; -} - -inline const b2Vec2& b2DistanceProxy::GetVertex(int32 index) const -{ - b2Assert(0 <= index && index < m_count); - return m_vertices[index]; -} - -inline int32 b2DistanceProxy::GetSupport(const b2Vec2& d) const -{ - int32 bestIndex = 0; - float32 bestValue = b2Dot(m_vertices[0], d); - for (int32 i = 1; i < m_count; ++i) - { - float32 value = b2Dot(m_vertices[i], d); - if (value > bestValue) - { - bestIndex = i; - bestValue = value; - } - } - - return bestIndex; -} - -inline const b2Vec2& b2DistanceProxy::GetSupportVertex(const b2Vec2& d) const -{ - int32 bestIndex = 0; - float32 bestValue = b2Dot(m_vertices[0], d); - for (int32 i = 1; i < m_count; ++i) - { - float32 value = b2Dot(m_vertices[i], d); - if (value > bestValue) - { - bestIndex = i; - bestValue = value; - } - } - - return m_vertices[bestIndex]; -} - -#endif diff --git a/Littlest/libs/Box2D/Collision/b2DynamicTree.cpp b/Littlest/libs/Box2D/Collision/b2DynamicTree.cpp deleted file mode 100644 index d8a05eb..0000000 --- a/Littlest/libs/Box2D/Collision/b2DynamicTree.cpp +++ /dev/null @@ -1,365 +0,0 @@ -/* -* Copyright (c) 2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#include -#include -#include - -b2DynamicTree::b2DynamicTree() -{ - m_root = b2_nullNode; - - m_nodeCapacity = 16; - m_nodeCount = 0; - m_nodes = (b2DynamicTreeNode*)b2Alloc(m_nodeCapacity * sizeof(b2DynamicTreeNode)); - memset(m_nodes, 0, m_nodeCapacity * sizeof(b2DynamicTreeNode)); - - // Build a linked list for the free list. - for (int32 i = 0; i < m_nodeCapacity - 1; ++i) - { - m_nodes[i].next = i + 1; - } - m_nodes[m_nodeCapacity-1].next = b2_nullNode; - m_freeList = 0; - - m_path = 0; - - m_insertionCount = 0; -} - -b2DynamicTree::~b2DynamicTree() -{ - // This frees the entire tree in one shot. - b2Free(m_nodes); -} - -// Allocate a node from the pool. Grow the pool if necessary. -int32 b2DynamicTree::AllocateNode() -{ - // Expand the node pool as needed. - if (m_freeList == b2_nullNode) - { - b2Assert(m_nodeCount == m_nodeCapacity); - - // The free list is empty. Rebuild a bigger pool. - b2DynamicTreeNode* oldNodes = m_nodes; - m_nodeCapacity *= 2; - m_nodes = (b2DynamicTreeNode*)b2Alloc(m_nodeCapacity * sizeof(b2DynamicTreeNode)); - memcpy(m_nodes, oldNodes, m_nodeCount * sizeof(b2DynamicTreeNode)); - b2Free(oldNodes); - - // Build a linked list for the free list. The parent - // pointer becomes the "next" pointer. - for (int32 i = m_nodeCount; i < m_nodeCapacity - 1; ++i) - { - m_nodes[i].next = i + 1; - } - m_nodes[m_nodeCapacity-1].next = b2_nullNode; - m_freeList = m_nodeCount; - } - - // Peel a node off the free list. - int32 nodeId = m_freeList; - m_freeList = m_nodes[nodeId].next; - m_nodes[nodeId].parent = b2_nullNode; - m_nodes[nodeId].child1 = b2_nullNode; - m_nodes[nodeId].child2 = b2_nullNode; - ++m_nodeCount; - return nodeId; -} - -// Return a node to the pool. -void b2DynamicTree::FreeNode(int32 nodeId) -{ - b2Assert(0 <= nodeId && nodeId < m_nodeCapacity); - b2Assert(0 < m_nodeCount); - m_nodes[nodeId].next = m_freeList; - m_freeList = nodeId; - --m_nodeCount; -} - -// Create a proxy in the tree as a leaf node. We return the index -// of the node instead of a pointer so that we can grow -// the node pool. -int32 b2DynamicTree::CreateProxy(const b2AABB& aabb, void* userData) -{ - int32 proxyId = AllocateNode(); - - // Fatten the aabb. - b2Vec2 r(b2_aabbExtension, b2_aabbExtension); - m_nodes[proxyId].aabb.lowerBound = aabb.lowerBound - r; - m_nodes[proxyId].aabb.upperBound = aabb.upperBound + r; - m_nodes[proxyId].userData = userData; - - InsertLeaf(proxyId); - - // Rebalance if necessary. - int32 iterationCount = m_nodeCount >> 4; - int32 tryCount = 0; - int32 height = ComputeHeight(); - while (height > 64 && tryCount < 10) - { - Rebalance(iterationCount); - height = ComputeHeight(); - ++tryCount; - } - - return proxyId; -} - -void b2DynamicTree::DestroyProxy(int32 proxyId) -{ - b2Assert(0 <= proxyId && proxyId < m_nodeCapacity); - b2Assert(m_nodes[proxyId].IsLeaf()); - - RemoveLeaf(proxyId); - FreeNode(proxyId); -} - -bool b2DynamicTree::MoveProxy(int32 proxyId, const b2AABB& aabb, const b2Vec2& displacement) -{ - b2Assert(0 <= proxyId && proxyId < m_nodeCapacity); - - b2Assert(m_nodes[proxyId].IsLeaf()); - - if (m_nodes[proxyId].aabb.Contains(aabb)) - { - return false; - } - - RemoveLeaf(proxyId); - - // Extend AABB. - b2AABB b = aabb; - b2Vec2 r(b2_aabbExtension, b2_aabbExtension); - b.lowerBound = b.lowerBound - r; - b.upperBound = b.upperBound + r; - - // Predict AABB displacement. - b2Vec2 d = b2_aabbMultiplier * displacement; - - if (d.x < 0.0f) - { - b.lowerBound.x += d.x; - } - else - { - b.upperBound.x += d.x; - } - - if (d.y < 0.0f) - { - b.lowerBound.y += d.y; - } - else - { - b.upperBound.y += d.y; - } - - m_nodes[proxyId].aabb = b; - - InsertLeaf(proxyId); - return true; -} - -void b2DynamicTree::InsertLeaf(int32 leaf) -{ - ++m_insertionCount; - - if (m_root == b2_nullNode) - { - m_root = leaf; - m_nodes[m_root].parent = b2_nullNode; - return; - } - - // Find the best sibling for this node. - b2Vec2 center = m_nodes[leaf].aabb.GetCenter(); - int32 sibling = m_root; - if (m_nodes[sibling].IsLeaf() == false) - { - do - { - int32 child1 = m_nodes[sibling].child1; - int32 child2 = m_nodes[sibling].child2; - - b2Vec2 delta1 = b2Abs(m_nodes[child1].aabb.GetCenter() - center); - b2Vec2 delta2 = b2Abs(m_nodes[child2].aabb.GetCenter() - center); - - float32 norm1 = delta1.x + delta1.y; - float32 norm2 = delta2.x + delta2.y; - - if (norm1 < norm2) - { - sibling = child1; - } - else - { - sibling = child2; - } - - } - while(m_nodes[sibling].IsLeaf() == false); - } - - // Create a parent for the siblings. - int32 node1 = m_nodes[sibling].parent; - int32 node2 = AllocateNode(); - m_nodes[node2].parent = node1; - m_nodes[node2].userData = NULL; - m_nodes[node2].aabb.Combine(m_nodes[leaf].aabb, m_nodes[sibling].aabb); - - if (node1 != b2_nullNode) - { - if (m_nodes[m_nodes[sibling].parent].child1 == sibling) - { - m_nodes[node1].child1 = node2; - } - else - { - m_nodes[node1].child2 = node2; - } - - m_nodes[node2].child1 = sibling; - m_nodes[node2].child2 = leaf; - m_nodes[sibling].parent = node2; - m_nodes[leaf].parent = node2; - - do - { - if (m_nodes[node1].aabb.Contains(m_nodes[node2].aabb)) - { - break; - } - - m_nodes[node1].aabb.Combine(m_nodes[m_nodes[node1].child1].aabb, m_nodes[m_nodes[node1].child2].aabb); - node2 = node1; - node1 = m_nodes[node1].parent; - } - while(node1 != b2_nullNode); - } - else - { - m_nodes[node2].child1 = sibling; - m_nodes[node2].child2 = leaf; - m_nodes[sibling].parent = node2; - m_nodes[leaf].parent = node2; - m_root = node2; - } -} - -void b2DynamicTree::RemoveLeaf(int32 leaf) -{ - if (leaf == m_root) - { - m_root = b2_nullNode; - return; - } - - int32 node2 = m_nodes[leaf].parent; - int32 node1 = m_nodes[node2].parent; - int32 sibling; - if (m_nodes[node2].child1 == leaf) - { - sibling = m_nodes[node2].child2; - } - else - { - sibling = m_nodes[node2].child1; - } - - if (node1 != b2_nullNode) - { - // Destroy node2 and connect node1 to sibling. - if (m_nodes[node1].child1 == node2) - { - m_nodes[node1].child1 = sibling; - } - else - { - m_nodes[node1].child2 = sibling; - } - m_nodes[sibling].parent = node1; - FreeNode(node2); - - // Adjust ancestor bounds. - while (node1 != b2_nullNode) - { - b2AABB oldAABB = m_nodes[node1].aabb; - m_nodes[node1].aabb.Combine(m_nodes[m_nodes[node1].child1].aabb, m_nodes[m_nodes[node1].child2].aabb); - - if (oldAABB.Contains(m_nodes[node1].aabb)) - { - break; - } - - node1 = m_nodes[node1].parent; - } - } - else - { - m_root = sibling; - m_nodes[sibling].parent = b2_nullNode; - FreeNode(node2); - } -} - -void b2DynamicTree::Rebalance(int32 iterations) -{ - if (m_root == b2_nullNode) - { - return; - } - - for (int32 i = 0; i < iterations; ++i) - { - int32 node = m_root; - - uint32 bit = 0; - while (m_nodes[node].IsLeaf() == false) - { - int32* children = &m_nodes[node].child1; - node = children[(m_path >> bit) & 1]; - bit = (bit + 1) & (8* sizeof(uint32) - 1); - } - ++m_path; - - RemoveLeaf(node); - InsertLeaf(node); - } -} - -// Compute the height of a sub-tree. -int32 b2DynamicTree::ComputeHeight(int32 nodeId) const -{ - if (nodeId == b2_nullNode) - { - return 0; - } - - b2Assert(0 <= nodeId && nodeId < m_nodeCapacity); - b2DynamicTreeNode* node = m_nodes + nodeId; - int32 height1 = ComputeHeight(node->child1); - int32 height2 = ComputeHeight(node->child2); - return 1 + b2Max(height1, height2); -} - -int32 b2DynamicTree::ComputeHeight() const -{ - return ComputeHeight(m_root); -} diff --git a/Littlest/libs/Box2D/Collision/b2DynamicTree.h b/Littlest/libs/Box2D/Collision/b2DynamicTree.h deleted file mode 100644 index b67686b..0000000 --- a/Littlest/libs/Box2D/Collision/b2DynamicTree.h +++ /dev/null @@ -1,286 +0,0 @@ -/* -* Copyright (c) 2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef B2_DYNAMIC_TREE_H -#define B2_DYNAMIC_TREE_H - -#include - -/// A dynamic AABB tree broad-phase, inspired by Nathanael Presson's btDbvt. - -#define b2_nullNode (-1) - -/// A node in the dynamic tree. The client does not interact with this directly. -struct b2DynamicTreeNode -{ - bool IsLeaf() const - { - return child1 == b2_nullNode; - } - - /// This is the fattened AABB. - b2AABB aabb; - - //int32 userData; - void* userData; - - union - { - int32 parent; - int32 next; - }; - - int32 child1; - int32 child2; -}; - -/// A dynamic tree arranges data in a binary tree to accelerate -/// queries such as volume queries and ray casts. Leafs are proxies -/// with an AABB. In the tree we expand the proxy AABB by b2_fatAABBFactor -/// so that the proxy AABB is bigger than the client object. This allows the client -/// object to move by small amounts without triggering a tree update. -/// -/// Nodes are pooled and relocatable, so we use node indices rather than pointers. -class b2DynamicTree -{ -public: - - /// Constructing the tree initializes the node pool. - b2DynamicTree(); - - /// Destroy the tree, freeing the node pool. - ~b2DynamicTree(); - - /// Create a proxy. Provide a tight fitting AABB and a userData pointer. - int32 CreateProxy(const b2AABB& aabb, void* userData); - - /// Destroy a proxy. This asserts if the id is invalid. - void DestroyProxy(int32 proxyId); - - /// Move a proxy with a swepted AABB. If the proxy has moved outside of its fattened AABB, - /// then the proxy is removed from the tree and re-inserted. Otherwise - /// the function returns immediately. - /// @return true if the proxy was re-inserted. - bool MoveProxy(int32 proxyId, const b2AABB& aabb1, const b2Vec2& displacement); - - /// Perform some iterations to re-balance the tree. - void Rebalance(int32 iterations); - - /// Get proxy user data. - /// @return the proxy user data or 0 if the id is invalid. - void* GetUserData(int32 proxyId) const; - - /// Get the fat AABB for a proxy. - const b2AABB& GetFatAABB(int32 proxyId) const; - - /// Compute the height of the tree. - int32 ComputeHeight() const; - - /// Query an AABB for overlapping proxies. The callback class - /// is called for each proxy that overlaps the supplied AABB. - template - void Query(T* callback, const b2AABB& aabb) const; - - /// Ray-cast against the proxies in the tree. This relies on the callback - /// to perform a exact ray-cast in the case were the proxy contains a shape. - /// The callback also performs the any collision filtering. This has performance - /// roughly equal to k * log(n), where k is the number of collisions and n is the - /// number of proxies in the tree. - /// @param input the ray-cast input data. The ray extends from p1 to p1 + maxFraction * (p2 - p1). - /// @param callback a callback class that is called for each proxy that is hit by the ray. - template - void RayCast(T* callback, const b2RayCastInput& input) const; - -private: - - int32 AllocateNode(); - void FreeNode(int32 node); - - void InsertLeaf(int32 node); - void RemoveLeaf(int32 node); - - int32 ComputeHeight(int32 nodeId) const; - - int32 m_root; - - b2DynamicTreeNode* m_nodes; - int32 m_nodeCount; - int32 m_nodeCapacity; - - int32 m_freeList; - - /// This is used incrementally traverse the tree for re-balancing. - uint32 m_path; - - int32 m_insertionCount; -}; - -inline void* b2DynamicTree::GetUserData(int32 proxyId) const -{ - b2Assert(0 <= proxyId && proxyId < m_nodeCapacity); - return m_nodes[proxyId].userData; -} - -inline const b2AABB& b2DynamicTree::GetFatAABB(int32 proxyId) const -{ - b2Assert(0 <= proxyId && proxyId < m_nodeCapacity); - return m_nodes[proxyId].aabb; -} - -template -inline void b2DynamicTree::Query(T* callback, const b2AABB& aabb) const -{ - const int32 k_stackSize = 128; - int32 stack[k_stackSize]; - - int32 count = 0; - stack[count++] = m_root; - - while (count > 0) - { - int32 nodeId = stack[--count]; - if (nodeId == b2_nullNode) - { - continue; - } - - const b2DynamicTreeNode* node = m_nodes + nodeId; - - if (b2TestOverlap(node->aabb, aabb)) - { - if (node->IsLeaf()) - { - bool proceed = callback->QueryCallback(nodeId); - if (proceed == false) - { - return; - } - } - else - { - if (count < k_stackSize) - { - stack[count++] = node->child1; - } - - if (count < k_stackSize) - { - stack[count++] = node->child2; - } - } - } - } -} - -template -inline void b2DynamicTree::RayCast(T* callback, const b2RayCastInput& input) const -{ - b2Vec2 p1 = input.p1; - b2Vec2 p2 = input.p2; - b2Vec2 r = p2 - p1; - b2Assert(r.LengthSquared() > 0.0f); - r.Normalize(); - - // v is perpendicular to the segment. - b2Vec2 v = b2Cross(1.0f, r); - b2Vec2 abs_v = b2Abs(v); - - // Separating axis for segment (Gino, p80). - // |dot(v, p1 - c)| > dot(|v|, h) - - float32 maxFraction = input.maxFraction; - - // Build a bounding box for the segment. - b2AABB segmentAABB; - { - b2Vec2 t = p1 + maxFraction * (p2 - p1); - segmentAABB.lowerBound = b2Min(p1, t); - segmentAABB.upperBound = b2Max(p1, t); - } - - const int32 k_stackSize = 128; - int32 stack[k_stackSize]; - - int32 count = 0; - stack[count++] = m_root; - - while (count > 0) - { - int32 nodeId = stack[--count]; - if (nodeId == b2_nullNode) - { - continue; - } - - const b2DynamicTreeNode* node = m_nodes + nodeId; - - if (b2TestOverlap(node->aabb, segmentAABB) == false) - { - continue; - } - - // Separating axis for segment (Gino, p80). - // |dot(v, p1 - c)| > dot(|v|, h) - b2Vec2 c = node->aabb.GetCenter(); - b2Vec2 h = node->aabb.GetExtents(); - float32 separation = b2Abs(b2Dot(v, p1 - c)) - b2Dot(abs_v, h); - if (separation > 0.0f) - { - continue; - } - - if (node->IsLeaf()) - { - b2RayCastInput subInput; - subInput.p1 = input.p1; - subInput.p2 = input.p2; - subInput.maxFraction = maxFraction; - - float32 value = callback->RayCastCallback(subInput, nodeId); - - if (value == 0.0f) - { - // The client has terminated the ray cast. - return; - } - - if (value > 0.0f) - { - // Update segment bounding box. - maxFraction = value; - b2Vec2 t = p1 + maxFraction * (p2 - p1); - segmentAABB.lowerBound = b2Min(p1, t); - segmentAABB.upperBound = b2Max(p1, t); - } - } - else - { - if (count < k_stackSize) - { - stack[count++] = node->child1; - } - - if (count < k_stackSize) - { - stack[count++] = node->child2; - } - } - } -} - -#endif diff --git a/Littlest/libs/Box2D/Collision/b2TimeOfImpact.cpp b/Littlest/libs/Box2D/Collision/b2TimeOfImpact.cpp deleted file mode 100644 index b1f2f4e..0000000 --- a/Littlest/libs/Box2D/Collision/b2TimeOfImpact.cpp +++ /dev/null @@ -1,483 +0,0 @@ -/* -* Copyright (c) 2007-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#include -#include -#include -#include -#include - -#include - -int32 b2_toiCalls, b2_toiIters, b2_toiMaxIters; -int32 b2_toiRootIters, b2_toiMaxRootIters; - -int32 b2_toiMaxOptIters; - -struct b2SeparationFunction -{ - enum Type - { - e_points, - e_faceA, - e_faceB - }; - - // TODO_ERIN might not need to return the separation - - float32 Initialize(const b2SimplexCache* cache, - const b2DistanceProxy* proxyA, const b2Sweep& sweepA, - const b2DistanceProxy* proxyB, const b2Sweep& sweepB) - { - m_proxyA = proxyA; - m_proxyB = proxyB; - int32 count = cache->count; - b2Assert(0 < count && count < 3); - - m_sweepA = sweepA; - m_sweepB = sweepB; - - b2Transform xfA, xfB; - m_sweepA.GetTransform(&xfA, 0.0f); - m_sweepB.GetTransform(&xfB, 0.0f); - - if (count == 1) - { - m_type = e_points; - b2Vec2 localPointA = m_proxyA->GetVertex(cache->indexA[0]); - b2Vec2 localPointB = m_proxyB->GetVertex(cache->indexB[0]); - b2Vec2 pointA = b2Mul(xfA, localPointA); - b2Vec2 pointB = b2Mul(xfB, localPointB); - m_axis = pointB - pointA; - float32 s = m_axis.Normalize(); - return s; - } - else if (cache->indexA[0] == cache->indexA[1]) - { - // Two points on B and one on A. - m_type = e_faceB; - b2Vec2 localPointB1 = proxyB->GetVertex(cache->indexB[0]); - b2Vec2 localPointB2 = proxyB->GetVertex(cache->indexB[1]); - - m_axis = b2Cross(localPointB2 - localPointB1, 1.0f); - m_axis.Normalize(); - b2Vec2 normal = b2Mul(xfB.R, m_axis); - - m_localPoint = 0.5f * (localPointB1 + localPointB2); - b2Vec2 pointB = b2Mul(xfB, m_localPoint); - - b2Vec2 localPointA = proxyA->GetVertex(cache->indexA[0]); - b2Vec2 pointA = b2Mul(xfA, localPointA); - - float32 s = b2Dot(pointA - pointB, normal); - if (s < 0.0f) - { - m_axis = -m_axis; - s = -s; - } - return s; - } - else - { - // Two points on A and one or two points on B. - m_type = e_faceA; - b2Vec2 localPointA1 = m_proxyA->GetVertex(cache->indexA[0]); - b2Vec2 localPointA2 = m_proxyA->GetVertex(cache->indexA[1]); - - m_axis = b2Cross(localPointA2 - localPointA1, 1.0f); - m_axis.Normalize(); - b2Vec2 normal = b2Mul(xfA.R, m_axis); - - m_localPoint = 0.5f * (localPointA1 + localPointA2); - b2Vec2 pointA = b2Mul(xfA, m_localPoint); - - b2Vec2 localPointB = m_proxyB->GetVertex(cache->indexB[0]); - b2Vec2 pointB = b2Mul(xfB, localPointB); - - float32 s = b2Dot(pointB - pointA, normal); - if (s < 0.0f) - { - m_axis = -m_axis; - s = -s; - } - return s; - } - } - - float32 FindMinSeparation(int32* indexA, int32* indexB, float32 t) const - { - b2Transform xfA, xfB; - m_sweepA.GetTransform(&xfA, t); - m_sweepB.GetTransform(&xfB, t); - - switch (m_type) - { - case e_points: - { - b2Vec2 axisA = b2MulT(xfA.R, m_axis); - b2Vec2 axisB = b2MulT(xfB.R, -m_axis); - - *indexA = m_proxyA->GetSupport(axisA); - *indexB = m_proxyB->GetSupport(axisB); - - b2Vec2 localPointA = m_proxyA->GetVertex(*indexA); - b2Vec2 localPointB = m_proxyB->GetVertex(*indexB); - - b2Vec2 pointA = b2Mul(xfA, localPointA); - b2Vec2 pointB = b2Mul(xfB, localPointB); - - float32 separation = b2Dot(pointB - pointA, m_axis); - return separation; - } - - case e_faceA: - { - b2Vec2 normal = b2Mul(xfA.R, m_axis); - b2Vec2 pointA = b2Mul(xfA, m_localPoint); - - b2Vec2 axisB = b2MulT(xfB.R, -normal); - - *indexA = -1; - *indexB = m_proxyB->GetSupport(axisB); - - b2Vec2 localPointB = m_proxyB->GetVertex(*indexB); - b2Vec2 pointB = b2Mul(xfB, localPointB); - - float32 separation = b2Dot(pointB - pointA, normal); - return separation; - } - - case e_faceB: - { - b2Vec2 normal = b2Mul(xfB.R, m_axis); - b2Vec2 pointB = b2Mul(xfB, m_localPoint); - - b2Vec2 axisA = b2MulT(xfA.R, -normal); - - *indexB = -1; - *indexA = m_proxyA->GetSupport(axisA); - - b2Vec2 localPointA = m_proxyA->GetVertex(*indexA); - b2Vec2 pointA = b2Mul(xfA, localPointA); - - float32 separation = b2Dot(pointA - pointB, normal); - return separation; - } - - default: - b2Assert(false); - *indexA = -1; - *indexB = -1; - return 0.0f; - } - } - - float32 Evaluate(int32 indexA, int32 indexB, float32 t) const - { - b2Transform xfA, xfB; - m_sweepA.GetTransform(&xfA, t); - m_sweepB.GetTransform(&xfB, t); - - switch (m_type) - { - case e_points: - { - b2Vec2 axisA = b2MulT(xfA.R, m_axis); - b2Vec2 axisB = b2MulT(xfB.R, -m_axis); - - b2Vec2 localPointA = m_proxyA->GetVertex(indexA); - b2Vec2 localPointB = m_proxyB->GetVertex(indexB); - - b2Vec2 pointA = b2Mul(xfA, localPointA); - b2Vec2 pointB = b2Mul(xfB, localPointB); - float32 separation = b2Dot(pointB - pointA, m_axis); - - return separation; - } - - case e_faceA: - { - b2Vec2 normal = b2Mul(xfA.R, m_axis); - b2Vec2 pointA = b2Mul(xfA, m_localPoint); - - b2Vec2 axisB = b2MulT(xfB.R, -normal); - - b2Vec2 localPointB = m_proxyB->GetVertex(indexB); - b2Vec2 pointB = b2Mul(xfB, localPointB); - - float32 separation = b2Dot(pointB - pointA, normal); - return separation; - } - - case e_faceB: - { - b2Vec2 normal = b2Mul(xfB.R, m_axis); - b2Vec2 pointB = b2Mul(xfB, m_localPoint); - - b2Vec2 axisA = b2MulT(xfA.R, -normal); - - b2Vec2 localPointA = m_proxyA->GetVertex(indexA); - b2Vec2 pointA = b2Mul(xfA, localPointA); - - float32 separation = b2Dot(pointA - pointB, normal); - return separation; - } - - default: - b2Assert(false); - return 0.0f; - } - } - - const b2DistanceProxy* m_proxyA; - const b2DistanceProxy* m_proxyB; - b2Sweep m_sweepA, m_sweepB; - Type m_type; - b2Vec2 m_localPoint; - b2Vec2 m_axis; -}; - -// CCD via the local separating axis method. This seeks progression -// by computing the largest time at which separation is maintained. -void b2TimeOfImpact(b2TOIOutput* output, const b2TOIInput* input) -{ - ++b2_toiCalls; - - output->state = b2TOIOutput::e_unknown; - output->t = input->tMax; - - const b2DistanceProxy* proxyA = &input->proxyA; - const b2DistanceProxy* proxyB = &input->proxyB; - - b2Sweep sweepA = input->sweepA; - b2Sweep sweepB = input->sweepB; - - // Large rotations can make the root finder fail, so we normalize the - // sweep angles. - sweepA.Normalize(); - sweepB.Normalize(); - - float32 tMax = input->tMax; - - float32 totalRadius = proxyA->m_radius + proxyB->m_radius; - float32 target = b2Max(b2_linearSlop, totalRadius - 3.0f * b2_linearSlop); - float32 tolerance = 0.25f * b2_linearSlop; - b2Assert(target > tolerance); - - float32 t1 = 0.0f; - const int32 k_maxIterations = 20; // TODO_ERIN b2Settings - int32 iter = 0; - - // Prepare input for distance query. - b2SimplexCache cache; - cache.count = 0; - b2DistanceInput distanceInput; - distanceInput.proxyA = input->proxyA; - distanceInput.proxyB = input->proxyB; - distanceInput.useRadii = false; - - // The outer loop progressively attempts to compute new separating axes. - // This loop terminates when an axis is repeated (no progress is made). - for(;;) - { - b2Transform xfA, xfB; - sweepA.GetTransform(&xfA, t1); - sweepB.GetTransform(&xfB, t1); - - // Get the distance between shapes. We can also use the results - // to get a separating axis. - distanceInput.transformA = xfA; - distanceInput.transformB = xfB; - b2DistanceOutput distanceOutput; - b2Distance(&distanceOutput, &cache, &distanceInput); - - // If the shapes are overlapped, we give up on continuous collision. - if (distanceOutput.distance <= 0.0f) - { - // Failure! - output->state = b2TOIOutput::e_overlapped; - output->t = 0.0f; - break; - } - - if (distanceOutput.distance < target + tolerance) - { - // Victory! - output->state = b2TOIOutput::e_touching; - output->t = t1; - break; - } - - // Initialize the separating axis. - b2SeparationFunction fcn; - fcn.Initialize(&cache, proxyA, sweepA, proxyB, sweepB); -#if 0 - // Dump the curve seen by the root finder - { - const int32 N = 100; - float32 dx = 1.0f / N; - float32 xs[N+1]; - float32 fs[N+1]; - - float32 x = 0.0f; - - for (int32 i = 0; i <= N; ++i) - { - sweepA.GetTransform(&xfA, x); - sweepB.GetTransform(&xfB, x); - float32 f = fcn.Evaluate(xfA, xfB) - target; - - printf("%g %g\n", x, f); - - xs[i] = x; - fs[i] = f; - - x += dx; - } - } -#endif - - // Compute the TOI on the separating axis. We do this by successively - // resolving the deepest point. This loop is bounded by the number of vertices. - bool done = false; - float32 t2 = tMax; - int32 pushBackIter = 0; - for (;;) - { - // Find the deepest point at t2. Store the witness point indices. - int32 indexA, indexB; - float32 s2 = fcn.FindMinSeparation(&indexA, &indexB, t2); - - // Is the final configuration separated? - if (s2 > target + tolerance) - { - // Victory! - output->state = b2TOIOutput::e_separated; - output->t = tMax; - done = true; - break; - } - - // Has the separation reached tolerance? - if (s2 > target - tolerance) - { - // Advance the sweeps - t1 = t2; - break; - } - - // Compute the initial separation of the witness points. - float32 s1 = fcn.Evaluate(indexA, indexB, t1); - - // Check for initial overlap. This might happen if the root finder - // runs out of iterations. - if (s1 < target - tolerance) - { - output->state = b2TOIOutput::e_failed; - output->t = t1; - done = true; - break; - } - - // Check for touching - if (s1 <= target + tolerance) - { - // Victory! t1 should hold the TOI (could be 0.0). - output->state = b2TOIOutput::e_touching; - output->t = t1; - done = true; - break; - } - - // Compute 1D root of: f(x) - target = 0 - int32 rootIterCount = 0; - float32 a1 = t1, a2 = t2; - for (;;) - { - // Use a mix of the secant rule and bisection. - float32 t; - if (rootIterCount & 1) - { - // Secant rule to improve convergence. - t = a1 + (target - s1) * (a2 - a1) / (s2 - s1); - } - else - { - // Bisection to guarantee progress. - t = 0.5f * (a1 + a2); - } - - float32 s = fcn.Evaluate(indexA, indexB, t); - - if (b2Abs(s - target) < tolerance) - { - // t2 holds a tentative value for t1 - t2 = t; - break; - } - - // Ensure we continue to bracket the root. - if (s > target) - { - a1 = t; - s1 = s; - } - else - { - a2 = t; - s2 = s; - } - - ++rootIterCount; - ++b2_toiRootIters; - - if (rootIterCount == 50) - { - break; - } - } - - b2_toiMaxRootIters = b2Max(b2_toiMaxRootIters, rootIterCount); - - ++pushBackIter; - - if (pushBackIter == b2_maxPolygonVertices) - { - break; - } - } - - ++iter; - ++b2_toiIters; - - if (done) - { - break; - } - - if (iter == k_maxIterations) - { - // Root finder got stuck. Semi-victory. - output->state = b2TOIOutput::e_failed; - output->t = t1; - break; - } - } - - b2_toiMaxIters = b2Max(b2_toiMaxIters, iter); -} diff --git a/Littlest/libs/Box2D/Collision/b2TimeOfImpact.h b/Littlest/libs/Box2D/Collision/b2TimeOfImpact.h deleted file mode 100644 index b59fb83..0000000 --- a/Littlest/libs/Box2D/Collision/b2TimeOfImpact.h +++ /dev/null @@ -1,59 +0,0 @@ -/* -* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef B2_TIME_OF_IMPACT_H -#define B2_TIME_OF_IMPACT_H - -#include -#include -#include - -/// Input parameters for b2TimeOfImpact -struct b2TOIInput -{ - b2DistanceProxy proxyA; - b2DistanceProxy proxyB; - b2Sweep sweepA; - b2Sweep sweepB; - float32 tMax; // defines sweep interval [0, tMax] -}; - -// Output parameters for b2TimeOfImpact. -struct b2TOIOutput -{ - enum State - { - e_unknown, - e_failed, - e_overlapped, - e_touching, - e_separated - }; - - State state; - float32 t; -}; - -/// Compute the upper bound on time before two shapes penetrate. Time is represented as -/// a fraction between [0,tMax]. This uses a swept separating axis and may miss some intermediate, -/// non-tunneling collision. If you change the time interval, you should call this function -/// again. -/// Note: use b2Distance to compute the contact point and normal at the time of impact. -void b2TimeOfImpact(b2TOIOutput* output, const b2TOIInput* input); - -#endif diff --git a/Littlest/libs/Box2D/Common/b2BlockAllocator.cpp b/Littlest/libs/Box2D/Common/b2BlockAllocator.cpp deleted file mode 100644 index ba06f04..0000000 --- a/Littlest/libs/Box2D/Common/b2BlockAllocator.cpp +++ /dev/null @@ -1,205 +0,0 @@ -/* -* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#include -#include -#include -#include -#include - -int32 b2BlockAllocator::s_blockSizes[b2_blockSizes] = -{ - 16, // 0 - 32, // 1 - 64, // 2 - 96, // 3 - 128, // 4 - 160, // 5 - 192, // 6 - 224, // 7 - 256, // 8 - 320, // 9 - 384, // 10 - 448, // 11 - 512, // 12 - 640, // 13 -}; -uint8 b2BlockAllocator::s_blockSizeLookup[b2_maxBlockSize + 1]; -bool b2BlockAllocator::s_blockSizeLookupInitialized; - -struct b2Chunk -{ - int32 blockSize; - b2Block* blocks; -}; - -struct b2Block -{ - b2Block* next; -}; - -b2BlockAllocator::b2BlockAllocator() -{ - b2Assert(b2_blockSizes < UCHAR_MAX); - - m_chunkSpace = b2_chunkArrayIncrement; - m_chunkCount = 0; - m_chunks = (b2Chunk*)b2Alloc(m_chunkSpace * sizeof(b2Chunk)); - - memset(m_chunks, 0, m_chunkSpace * sizeof(b2Chunk)); - memset(m_freeLists, 0, sizeof(m_freeLists)); - - if (s_blockSizeLookupInitialized == false) - { - int32 j = 0; - for (int32 i = 1; i <= b2_maxBlockSize; ++i) - { - b2Assert(j < b2_blockSizes); - if (i <= s_blockSizes[j]) - { - s_blockSizeLookup[i] = (uint8)j; - } - else - { - ++j; - s_blockSizeLookup[i] = (uint8)j; - } - } - - s_blockSizeLookupInitialized = true; - } -} - -b2BlockAllocator::~b2BlockAllocator() -{ - for (int32 i = 0; i < m_chunkCount; ++i) - { - b2Free(m_chunks[i].blocks); - } - - b2Free(m_chunks); -} - -void* b2BlockAllocator::Allocate(int32 size) -{ - if (size == 0) - return NULL; - - b2Assert(0 < size && size <= b2_maxBlockSize); - - int32 index = s_blockSizeLookup[size]; - b2Assert(0 <= index && index < b2_blockSizes); - - if (m_freeLists[index]) - { - b2Block* block = m_freeLists[index]; - m_freeLists[index] = block->next; - return block; - } - else - { - if (m_chunkCount == m_chunkSpace) - { - b2Chunk* oldChunks = m_chunks; - m_chunkSpace += b2_chunkArrayIncrement; - m_chunks = (b2Chunk*)b2Alloc(m_chunkSpace * sizeof(b2Chunk)); - memcpy(m_chunks, oldChunks, m_chunkCount * sizeof(b2Chunk)); - memset(m_chunks + m_chunkCount, 0, b2_chunkArrayIncrement * sizeof(b2Chunk)); - b2Free(oldChunks); - } - - b2Chunk* chunk = m_chunks + m_chunkCount; - chunk->blocks = (b2Block*)b2Alloc(b2_chunkSize); -#if defined(_DEBUG) - memset(chunk->blocks, 0xcd, b2_chunkSize); -#endif - int32 blockSize = s_blockSizes[index]; - chunk->blockSize = blockSize; - int32 blockCount = b2_chunkSize / blockSize; - b2Assert(blockCount * blockSize <= b2_chunkSize); - for (int32 i = 0; i < blockCount - 1; ++i) - { - b2Block* block = (b2Block*)((int8*)chunk->blocks + blockSize * i); - b2Block* next = (b2Block*)((int8*)chunk->blocks + blockSize * (i + 1)); - block->next = next; - } - b2Block* last = (b2Block*)((int8*)chunk->blocks + blockSize * (blockCount - 1)); - last->next = NULL; - - m_freeLists[index] = chunk->blocks->next; - ++m_chunkCount; - - return chunk->blocks; - } -} - -void b2BlockAllocator::Free(void* p, int32 size) -{ - if (size == 0) - { - return; - } - - b2Assert(0 < size && size <= b2_maxBlockSize); - - int32 index = s_blockSizeLookup[size]; - b2Assert(0 <= index && index < b2_blockSizes); - -#ifdef _DEBUG - // Verify the memory address and size is valid. - int32 blockSize = s_blockSizes[index]; - bool found = false; - for (int32 i = 0; i < m_chunkCount; ++i) - { - b2Chunk* chunk = m_chunks + i; - if (chunk->blockSize != blockSize) - { - b2Assert( (int8*)p + blockSize <= (int8*)chunk->blocks || - (int8*)chunk->blocks + b2_chunkSize <= (int8*)p); - } - else - { - if ((int8*)chunk->blocks <= (int8*)p && (int8*)p + blockSize <= (int8*)chunk->blocks + b2_chunkSize) - { - found = true; - } - } - } - - b2Assert(found); - - memset(p, 0xfd, blockSize); -#endif - - b2Block* block = (b2Block*)p; - block->next = m_freeLists[index]; - m_freeLists[index] = block; -} - -void b2BlockAllocator::Clear() -{ - for (int32 i = 0; i < m_chunkCount; ++i) - { - b2Free(m_chunks[i].blocks); - } - - m_chunkCount = 0; - memset(m_chunks, 0, m_chunkSpace * sizeof(b2Chunk)); - - memset(m_freeLists, 0, sizeof(m_freeLists)); -} diff --git a/Littlest/libs/Box2D/Common/b2BlockAllocator.h b/Littlest/libs/Box2D/Common/b2BlockAllocator.h deleted file mode 100644 index 93eb2e3..0000000 --- a/Littlest/libs/Box2D/Common/b2BlockAllocator.h +++ /dev/null @@ -1,59 +0,0 @@ -/* -* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef B2_BLOCK_ALLOCATOR_H -#define B2_BLOCK_ALLOCATOR_H - -#include - -const int32 b2_chunkSize = 4096; -const int32 b2_maxBlockSize = 640; -const int32 b2_blockSizes = 14; -const int32 b2_chunkArrayIncrement = 128; - -struct b2Block; -struct b2Chunk; - -// This is a small object allocator used for allocating small -// objects that persist for more than one time step. -// See: http://www.codeproject.com/useritems/Small_Block_Allocator.asp -class b2BlockAllocator -{ -public: - b2BlockAllocator(); - ~b2BlockAllocator(); - - void* Allocate(int32 size); - void Free(void* p, int32 size); - - void Clear(); - -private: - - b2Chunk* m_chunks; - int32 m_chunkCount; - int32 m_chunkSpace; - - b2Block* m_freeLists[b2_blockSizes]; - - static int32 s_blockSizes[b2_blockSizes]; - static uint8 s_blockSizeLookup[b2_maxBlockSize + 1]; - static bool s_blockSizeLookupInitialized; -}; - -#endif diff --git a/Littlest/libs/Box2D/Common/b2Math.cpp b/Littlest/libs/Box2D/Common/b2Math.cpp deleted file mode 100644 index f15a43b..0000000 --- a/Littlest/libs/Box2D/Common/b2Math.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* -* Copyright (c) 2007-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#include - -const b2Vec2 b2Vec2_zero(0.0f, 0.0f); -const b2Mat22 b2Mat22_identity(1.0f, 0.0f, 0.0f, 1.0f); -const b2Transform b2Transform_identity(b2Vec2_zero, b2Mat22_identity); - -/// Solve A * x = b, where b is a column vector. This is more efficient -/// than computing the inverse in one-shot cases. -b2Vec3 b2Mat33::Solve33(const b2Vec3& b) const -{ - float32 det = b2Dot(col1, b2Cross(col2, col3)); - if (det != 0.0f) - { - det = 1.0f / det; - } - b2Vec3 x; - x.x = det * b2Dot(b, b2Cross(col2, col3)); - x.y = det * b2Dot(col1, b2Cross(b, col3)); - x.z = det * b2Dot(col1, b2Cross(col2, b)); - return x; -} - -/// Solve A * x = b, where b is a column vector. This is more efficient -/// than computing the inverse in one-shot cases. -b2Vec2 b2Mat33::Solve22(const b2Vec2& b) const -{ - float32 a11 = col1.x, a12 = col2.x, a21 = col1.y, a22 = col2.y; - float32 det = a11 * a22 - a12 * a21; - if (det != 0.0f) - { - det = 1.0f / det; - } - b2Vec2 x; - x.x = det * (a22 * b.x - a12 * b.y); - x.y = det * (a11 * b.y - a21 * b.x); - return x; -} diff --git a/Littlest/libs/Box2D/Common/b2Math.h b/Littlest/libs/Box2D/Common/b2Math.h deleted file mode 100644 index c29f594..0000000 --- a/Littlest/libs/Box2D/Common/b2Math.h +++ /dev/null @@ -1,624 +0,0 @@ -/* -* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef B2_MATH_H -#define B2_MATH_H - -#include - -#include -#include -#include -#include - -/// This function is used to ensure that a floating point number is -/// not a NaN or infinity. -inline bool b2IsValid(float32 x) -{ - if (x != x) - { - // NaN. - return false; - } - - float32 infinity = std::numeric_limits::infinity(); - return -infinity < x && x < infinity; -} - -/// This is a approximate yet fast inverse square-root. -inline float32 b2InvSqrt(float32 x) -{ - union - { - float32 x; - int32 i; - } convert; - - convert.x = x; - float32 xhalf = 0.5f * x; - convert.i = 0x5f3759df - (convert.i >> 1); - x = convert.x; - x = x * (1.5f - xhalf * x * x); - return x; -} - -#define b2Sqrt(x) sqrtf(x) -#define b2Atan2(y, x) atan2f(y, x) - -inline float32 b2Abs(float32 a) -{ - return a > 0.0f ? a : -a; -} - -/// A 2D column vector. -struct b2Vec2 -{ - /// Default constructor does nothing (for performance). - b2Vec2() {} - - /// Construct using coordinates. - b2Vec2(float32 x, float32 y) : x(x), y(y) {} - - /// Set this vector to all zeros. - void SetZero() { x = 0.0f; y = 0.0f; } - - /// Set this vector to some specified coordinates. - void Set(float32 x_, float32 y_) { x = x_; y = y_; } - - /// Negate this vector. - b2Vec2 operator -() const { b2Vec2 v; v.Set(-x, -y); return v; } - - /// Read from and indexed element. - float32 operator () (int32 i) const - { - return (&x)[i]; - } - - /// Write to an indexed element. - float32& operator () (int32 i) - { - return (&x)[i]; - } - - /// Add a vector to this vector. - void operator += (const b2Vec2& v) - { - x += v.x; y += v.y; - } - - /// Subtract a vector from this vector. - void operator -= (const b2Vec2& v) - { - x -= v.x; y -= v.y; - } - - /// Multiply this vector by a scalar. - void operator *= (float32 a) - { - x *= a; y *= a; - } - - /// Get the length of this vector (the norm). - float32 Length() const - { - return b2Sqrt(x * x + y * y); - } - - /// Get the length squared. For performance, use this instead of - /// b2Vec2::Length (if possible). - float32 LengthSquared() const - { - return x * x + y * y; - } - - /// Convert this vector into a unit vector. Returns the length. - float32 Normalize() - { - float32 length = Length(); - if (length < b2_epsilon) - { - return 0.0f; - } - float32 invLength = 1.0f / length; - x *= invLength; - y *= invLength; - - return length; - } - - /// Does this vector contain finite coordinates? - bool IsValid() const - { - return b2IsValid(x) && b2IsValid(y); - } - - float32 x, y; -}; - -/// A 2D column vector with 3 elements. -struct b2Vec3 -{ - /// Default constructor does nothing (for performance). - b2Vec3() {} - - /// Construct using coordinates. - b2Vec3(float32 x, float32 y, float32 z) : x(x), y(y), z(z) {} - - /// Set this vector to all zeros. - void SetZero() { x = 0.0f; y = 0.0f; z = 0.0f; } - - /// Set this vector to some specified coordinates. - void Set(float32 x_, float32 y_, float32 z_) { x = x_; y = y_; z = z_; } - - /// Negate this vector. - b2Vec3 operator -() const { b2Vec3 v; v.Set(-x, -y, -z); return v; } - - /// Add a vector to this vector. - void operator += (const b2Vec3& v) - { - x += v.x; y += v.y; z += v.z; - } - - /// Subtract a vector from this vector. - void operator -= (const b2Vec3& v) - { - x -= v.x; y -= v.y; z -= v.z; - } - - /// Multiply this vector by a scalar. - void operator *= (float32 s) - { - x *= s; y *= s; z *= s; - } - - float32 x, y, z; -}; - -/// A 2-by-2 matrix. Stored in column-major order. -struct b2Mat22 -{ - /// The default constructor does nothing (for performance). - b2Mat22() {} - - /// Construct this matrix using columns. - b2Mat22(const b2Vec2& c1, const b2Vec2& c2) - { - col1 = c1; - col2 = c2; - } - - /// Construct this matrix using scalars. - b2Mat22(float32 a11, float32 a12, float32 a21, float32 a22) - { - col1.x = a11; col1.y = a21; - col2.x = a12; col2.y = a22; - } - - /// Construct this matrix using an angle. This matrix becomes - /// an orthonormal rotation matrix. - explicit b2Mat22(float32 angle) - { - // TODO_ERIN compute sin+cos together. - float32 c = cosf(angle), s = sinf(angle); - col1.x = c; col2.x = -s; - col1.y = s; col2.y = c; - } - - /// Initialize this matrix using columns. - void Set(const b2Vec2& c1, const b2Vec2& c2) - { - col1 = c1; - col2 = c2; - } - - /// Initialize this matrix using an angle. This matrix becomes - /// an orthonormal rotation matrix. - void Set(float32 angle) - { - float32 c = cosf(angle), s = sinf(angle); - col1.x = c; col2.x = -s; - col1.y = s; col2.y = c; - } - - /// Set this to the identity matrix. - void SetIdentity() - { - col1.x = 1.0f; col2.x = 0.0f; - col1.y = 0.0f; col2.y = 1.0f; - } - - /// Set this matrix to all zeros. - void SetZero() - { - col1.x = 0.0f; col2.x = 0.0f; - col1.y = 0.0f; col2.y = 0.0f; - } - - /// Extract the angle from this matrix (assumed to be - /// a rotation matrix). - float32 GetAngle() const - { - return b2Atan2(col1.y, col1.x); - } - - b2Mat22 GetInverse() const - { - float32 a = col1.x, b = col2.x, c = col1.y, d = col2.y; - b2Mat22 B; - float32 det = a * d - b * c; - if (det != 0.0f) - { - det = 1.0f / det; - } - B.col1.x = det * d; B.col2.x = -det * b; - B.col1.y = -det * c; B.col2.y = det * a; - return B; - } - - /// Solve A * x = b, where b is a column vector. This is more efficient - /// than computing the inverse in one-shot cases. - b2Vec2 Solve(const b2Vec2& b) const - { - float32 a11 = col1.x, a12 = col2.x, a21 = col1.y, a22 = col2.y; - float32 det = a11 * a22 - a12 * a21; - if (det != 0.0f) - { - det = 1.0f / det; - } - b2Vec2 x; - x.x = det * (a22 * b.x - a12 * b.y); - x.y = det * (a11 * b.y - a21 * b.x); - return x; - } - - b2Vec2 col1, col2; -}; - -/// A 3-by-3 matrix. Stored in column-major order. -struct b2Mat33 -{ - /// The default constructor does nothing (for performance). - b2Mat33() {} - - /// Construct this matrix using columns. - b2Mat33(const b2Vec3& c1, const b2Vec3& c2, const b2Vec3& c3) - { - col1 = c1; - col2 = c2; - col3 = c3; - } - - /// Set this matrix to all zeros. - void SetZero() - { - col1.SetZero(); - col2.SetZero(); - col3.SetZero(); - } - - /// Solve A * x = b, where b is a column vector. This is more efficient - /// than computing the inverse in one-shot cases. - b2Vec3 Solve33(const b2Vec3& b) const; - - /// Solve A * x = b, where b is a column vector. This is more efficient - /// than computing the inverse in one-shot cases. Solve only the upper - /// 2-by-2 matrix equation. - b2Vec2 Solve22(const b2Vec2& b) const; - - b2Vec3 col1, col2, col3; -}; - -/// A transform contains translation and rotation. It is used to represent -/// the position and orientation of rigid frames. -struct b2Transform -{ - /// The default constructor does nothing (for performance). - b2Transform() {} - - /// Initialize using a position vector and a rotation matrix. - b2Transform(const b2Vec2& position, const b2Mat22& R) : position(position), R(R) {} - - /// Set this to the identity transform. - void SetIdentity() - { - position.SetZero(); - R.SetIdentity(); - } - - /// Set this based on the position and angle. - void Set(const b2Vec2& p, float32 angle) - { - position = p; - R.Set(angle); - } - - /// Calculate the angle that the rotation matrix represents. - float32 GetAngle() const - { - return b2Atan2(R.col1.y, R.col1.x); - } - - b2Vec2 position; - b2Mat22 R; -}; - -/// This describes the motion of a body/shape for TOI computation. -/// Shapes are defined with respect to the body origin, which may -/// no coincide with the center of mass. However, to support dynamics -/// we must interpolate the center of mass position. -struct b2Sweep -{ - /// Get the interpolated transform at a specific time. - /// @param alpha is a factor in [0,1], where 0 indicates t0. - void GetTransform(b2Transform* xf, float32 alpha) const; - - /// Advance the sweep forward, yielding a new initial state. - /// @param t the new initial time. - void Advance(float32 t); - - /// Normalize the angles. - void Normalize(); - - b2Vec2 localCenter; ///< local center of mass position - b2Vec2 c0, c; ///< center world positions - float32 a0, a; ///< world angles -}; - - -extern const b2Vec2 b2Vec2_zero; -extern const b2Mat22 b2Mat22_identity; -extern const b2Transform b2Transform_identity; - -/// Perform the dot product on two vectors. -inline float32 b2Dot(const b2Vec2& a, const b2Vec2& b) -{ - return a.x * b.x + a.y * b.y; -} - -/// Perform the cross product on two vectors. In 2D this produces a scalar. -inline float32 b2Cross(const b2Vec2& a, const b2Vec2& b) -{ - return a.x * b.y - a.y * b.x; -} - -/// Perform the cross product on a vector and a scalar. In 2D this produces -/// a vector. -inline b2Vec2 b2Cross(const b2Vec2& a, float32 s) -{ - return b2Vec2(s * a.y, -s * a.x); -} - -/// Perform the cross product on a scalar and a vector. In 2D this produces -/// a vector. -inline b2Vec2 b2Cross(float32 s, const b2Vec2& a) -{ - return b2Vec2(-s * a.y, s * a.x); -} - -/// Multiply a matrix times a vector. If a rotation matrix is provided, -/// then this transforms the vector from one frame to another. -inline b2Vec2 b2Mul(const b2Mat22& A, const b2Vec2& v) -{ - return b2Vec2(A.col1.x * v.x + A.col2.x * v.y, A.col1.y * v.x + A.col2.y * v.y); -} - -/// Multiply a matrix transpose times a vector. If a rotation matrix is provided, -/// then this transforms the vector from one frame to another (inverse transform). -inline b2Vec2 b2MulT(const b2Mat22& A, const b2Vec2& v) -{ - return b2Vec2(b2Dot(v, A.col1), b2Dot(v, A.col2)); -} - -/// Add two vectors component-wise. -inline b2Vec2 operator + (const b2Vec2& a, const b2Vec2& b) -{ - return b2Vec2(a.x + b.x, a.y + b.y); -} - -/// Subtract two vectors component-wise. -inline b2Vec2 operator - (const b2Vec2& a, const b2Vec2& b) -{ - return b2Vec2(a.x - b.x, a.y - b.y); -} - -inline b2Vec2 operator * (float32 s, const b2Vec2& a) -{ - return b2Vec2(s * a.x, s * a.y); -} - -inline bool operator == (const b2Vec2& a, const b2Vec2& b) -{ - return a.x == b.x && a.y == b.y; -} - -inline float32 b2Distance(const b2Vec2& a, const b2Vec2& b) -{ - b2Vec2 c = a - b; - return c.Length(); -} - -inline float32 b2DistanceSquared(const b2Vec2& a, const b2Vec2& b) -{ - b2Vec2 c = a - b; - return b2Dot(c, c); -} - -inline b2Vec3 operator * (float32 s, const b2Vec3& a) -{ - return b2Vec3(s * a.x, s * a.y, s * a.z); -} - -/// Add two vectors component-wise. -inline b2Vec3 operator + (const b2Vec3& a, const b2Vec3& b) -{ - return b2Vec3(a.x + b.x, a.y + b.y, a.z + b.z); -} - -/// Subtract two vectors component-wise. -inline b2Vec3 operator - (const b2Vec3& a, const b2Vec3& b) -{ - return b2Vec3(a.x - b.x, a.y - b.y, a.z - b.z); -} - -/// Perform the dot product on two vectors. -inline float32 b2Dot(const b2Vec3& a, const b2Vec3& b) -{ - return a.x * b.x + a.y * b.y + a.z * b.z; -} - -/// Perform the cross product on two vectors. -inline b2Vec3 b2Cross(const b2Vec3& a, const b2Vec3& b) -{ - return b2Vec3(a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x); -} - -inline b2Mat22 operator + (const b2Mat22& A, const b2Mat22& B) -{ - return b2Mat22(A.col1 + B.col1, A.col2 + B.col2); -} - -// A * B -inline b2Mat22 b2Mul(const b2Mat22& A, const b2Mat22& B) -{ - return b2Mat22(b2Mul(A, B.col1), b2Mul(A, B.col2)); -} - -// A^T * B -inline b2Mat22 b2MulT(const b2Mat22& A, const b2Mat22& B) -{ - b2Vec2 c1(b2Dot(A.col1, B.col1), b2Dot(A.col2, B.col1)); - b2Vec2 c2(b2Dot(A.col1, B.col2), b2Dot(A.col2, B.col2)); - return b2Mat22(c1, c2); -} - -/// Multiply a matrix times a vector. -inline b2Vec3 b2Mul(const b2Mat33& A, const b2Vec3& v) -{ - return v.x * A.col1 + v.y * A.col2 + v.z * A.col3; -} - -inline b2Vec2 b2Mul(const b2Transform& T, const b2Vec2& v) -{ - float32 x = T.position.x + T.R.col1.x * v.x + T.R.col2.x * v.y; - float32 y = T.position.y + T.R.col1.y * v.x + T.R.col2.y * v.y; - - return b2Vec2(x, y); -} - -inline b2Vec2 b2MulT(const b2Transform& T, const b2Vec2& v) -{ - return b2MulT(T.R, v - T.position); -} - -inline b2Vec2 b2Abs(const b2Vec2& a) -{ - return b2Vec2(b2Abs(a.x), b2Abs(a.y)); -} - -inline b2Mat22 b2Abs(const b2Mat22& A) -{ - return b2Mat22(b2Abs(A.col1), b2Abs(A.col2)); -} - -template -inline T b2Min(T a, T b) -{ - return a < b ? a : b; -} - -inline b2Vec2 b2Min(const b2Vec2& a, const b2Vec2& b) -{ - return b2Vec2(b2Min(a.x, b.x), b2Min(a.y, b.y)); -} - -template -inline T b2Max(T a, T b) -{ - return a > b ? a : b; -} - -inline b2Vec2 b2Max(const b2Vec2& a, const b2Vec2& b) -{ - return b2Vec2(b2Max(a.x, b.x), b2Max(a.y, b.y)); -} - -template -inline T b2Clamp(T a, T low, T high) -{ - return b2Max(low, b2Min(a, high)); -} - -inline b2Vec2 b2Clamp(const b2Vec2& a, const b2Vec2& low, const b2Vec2& high) -{ - return b2Max(low, b2Min(a, high)); -} - -template inline void b2Swap(T& a, T& b) -{ - T tmp = a; - a = b; - b = tmp; -} - -/// "Next Largest Power of 2 -/// Given a binary integer value x, the next largest power of 2 can be computed by a SWAR algorithm -/// that recursively "folds" the upper bits into the lower bits. This process yields a bit vector with -/// the same most significant 1 as x, but all 1's below it. Adding 1 to that value yields the next -/// largest power of 2. For a 32-bit value:" -inline uint32 b2NextPowerOfTwo(uint32 x) -{ - x |= (x >> 1); - x |= (x >> 2); - x |= (x >> 4); - x |= (x >> 8); - x |= (x >> 16); - return x + 1; -} - -inline bool b2IsPowerOfTwo(uint32 x) -{ - bool result = x > 0 && (x & (x - 1)) == 0; - return result; -} - -inline void b2Sweep::GetTransform(b2Transform* xf, float32 alpha) const -{ - xf->position = (1.0f - alpha) * c0 + alpha * c; - float32 angle = (1.0f - alpha) * a0 + alpha * a; - xf->R.Set(angle); - - // Shift to origin - xf->position -= b2Mul(xf->R, localCenter); -} - -inline void b2Sweep::Advance(float32 t) -{ - c0 = (1.0f - t) * c0 + t * c; - a0 = (1.0f - t) * a0 + t * a; -} - -/// Normalize an angle in radians to be between -pi and pi -inline void b2Sweep::Normalize() -{ - float32 twoPi = 2.0f * b2_pi; - float32 d = twoPi * floorf(a0 / twoPi); - a0 -= d; - a -= d; -} - -#endif diff --git a/Littlest/libs/Box2D/Common/b2Settings.cpp b/Littlest/libs/Box2D/Common/b2Settings.cpp deleted file mode 100644 index da30814..0000000 --- a/Littlest/libs/Box2D/Common/b2Settings.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/* -* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#include -#include - -b2Version b2_version = {2, 1, 2}; - -// Memory allocators. Modify these to use your own allocator. -void* b2Alloc(int32 size) -{ - return malloc(size); -} - -void b2Free(void* mem) -{ - free(mem); -} diff --git a/Littlest/libs/Box2D/Common/b2Settings.h b/Littlest/libs/Box2D/Common/b2Settings.h deleted file mode 100644 index 1aa8c26..0000000 --- a/Littlest/libs/Box2D/Common/b2Settings.h +++ /dev/null @@ -1,151 +0,0 @@ -/* -* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef B2_SETTINGS_H -#define B2_SETTINGS_H - -#include -#include - -#define B2_NOT_USED(x) ((void)(x)) -#define b2Assert(A) assert(A) - -typedef signed char int8; -typedef signed short int16; -typedef signed int int32; -typedef unsigned char uint8; -typedef unsigned short uint16; -typedef unsigned int uint32; -typedef float float32; - -#define b2_maxFloat FLT_MAX -#define b2_epsilon FLT_EPSILON -#define b2_pi 3.14159265359f - -/// @file -/// Global tuning constants based on meters-kilograms-seconds (MKS) units. -/// - -// Collision - -/// The maximum number of contact points between two convex shapes. -#define b2_maxManifoldPoints 2 - -/// The maximum number of vertices on a convex polygon. -#define b2_maxPolygonVertices 8 - -/// This is used to fatten AABBs in the dynamic tree. This allows proxies -/// to move by a small amount without triggering a tree adjustment. -/// This is in meters. -#define b2_aabbExtension 0.1f - -/// This is used to fatten AABBs in the dynamic tree. This is used to predict -/// the future position based on the current displacement. -/// This is a dimensionless multiplier. -#define b2_aabbMultiplier 2.0f - -/// A small length used as a collision and constraint tolerance. Usually it is -/// chosen to be numerically significant, but visually insignificant. -#define b2_linearSlop 0.005f - -/// A small angle used as a collision and constraint tolerance. Usually it is -/// chosen to be numerically significant, but visually insignificant. -#define b2_angularSlop (2.0f / 180.0f * b2_pi) - -/// The radius of the polygon/edge shape skin. This should not be modified. Making -/// this smaller means polygons will have an insufficient buffer for continuous collision. -/// Making it larger may create artifacts for vertex collision. -#define b2_polygonRadius (2.0f * b2_linearSlop) - - -// Dynamics - -/// Maximum number of contacts to be handled to solve a TOI impact. -#define b2_maxTOIContacts 32 - -/// A velocity threshold for elastic collisions. Any collision with a relative linear -/// velocity below this threshold will be treated as inelastic. -#define b2_velocityThreshold 1.0f - -/// The maximum linear position correction used when solving constraints. This helps to -/// prevent overshoot. -#define b2_maxLinearCorrection 0.2f - -/// The maximum angular position correction used when solving constraints. This helps to -/// prevent overshoot. -#define b2_maxAngularCorrection (8.0f / 180.0f * b2_pi) - -/// The maximum linear velocity of a body. This limit is very large and is used -/// to prevent numerical problems. You shouldn't need to adjust this. -#define b2_maxTranslation 2.0f -#define b2_maxTranslationSquared (b2_maxTranslation * b2_maxTranslation) - -/// The maximum angular velocity of a body. This limit is very large and is used -/// to prevent numerical problems. You shouldn't need to adjust this. -#define b2_maxRotation (0.5f * b2_pi) -#define b2_maxRotationSquared (b2_maxRotation * b2_maxRotation) - -/// This scale factor controls how fast overlap is resolved. Ideally this would be 1 so -/// that overlap is removed in one time step. However using values close to 1 often lead -/// to overshoot. -#define b2_contactBaumgarte 0.2f - -// Sleep - -/// The time that a body must be still before it wi