├── .gitignore ├── .gitmodules ├── LICENSE ├── LiquidFunSample.xcodeproj ├── project.pbxproj └── project.xcworkspace │ └── contents.xcworkspacedata ├── LiquidFunSample ├── Base.lproj │ ├── Main_iPad.storyboard │ └── Main_iPhone.storyboard ├── Images.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── LaunchImage.launchimage │ │ └── Contents.json ├── LFSAppDelegate.h ├── LFSAppDelegate.m ├── LFSMyScene.h ├── LFSMyScene.mm ├── LFSViewController.h ├── LFSViewController.m ├── LiquidFunSample-Info.plist ├── LiquidFunSample-Prefix.pch ├── Spaceship.png ├── en.lproj │ └── InfoPlist.strings ├── main.m ├── spark.png └── water.sks ├── LiquidFunSampleTests ├── LiquidFunSampleTests-Info.plist ├── LiquidFunSampleTests.m └── en.lproj │ └── InfoPlist.strings ├── README.md └── liquidfun.gif /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | .DS_Store 3 | */build/* 4 | *.pbxuser 5 | !default.pbxuser 6 | *.mode1v3 7 | !default.mode1v3 8 | *.mode2v3 9 | !default.mode2v3 10 | *.perspectivev3 11 | !default.perspectivev3 12 | xcuserdata 13 | profile 14 | *.moved-aside 15 | DerivedData 16 | .idea/ 17 | *.hmap 18 | *.xccheckout 19 | 20 | #CocoaPods 21 | Pods 22 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "liquidfun"] 2 | path = liquidfun 3 | url = https://github.com/google/liquidfun.git 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 safx 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /LiquidFunSample.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 8D0492F2197C1BE4001A697B /* Box2DConfig.cmake.in in Resources */ = {isa = PBXBuildFile; fileRef = 8D04922C197C1BE4001A697B /* Box2DConfig.cmake.in */; }; 11 | 8D0492F3197C1BE4001A697B /* CMakeLists.txt in Resources */ = {isa = PBXBuildFile; fileRef = 8D04922D197C1BE4001A697B /* CMakeLists.txt */; }; 12 | 8D0492F4197C1BE4001A697B /* b2BroadPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D04922F197C1BE4001A697B /* b2BroadPhase.cpp */; }; 13 | 8D0492F5197C1BE4001A697B /* b2CollideCircle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D049231197C1BE4001A697B /* b2CollideCircle.cpp */; }; 14 | 8D0492F6197C1BE4001A697B /* b2CollideEdge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D049232197C1BE4001A697B /* b2CollideEdge.cpp */; }; 15 | 8D0492F7197C1BE4001A697B /* b2CollidePolygon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D049233197C1BE4001A697B /* b2CollidePolygon.cpp */; }; 16 | 8D0492F8197C1BE4001A697B /* b2Collision.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D049234197C1BE4001A697B /* b2Collision.cpp */; }; 17 | 8D0492F9197C1BE4001A697B /* b2Distance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D049236197C1BE4001A697B /* b2Distance.cpp */; }; 18 | 8D0492FA197C1BE4001A697B /* b2DynamicTree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D049238197C1BE4001A697B /* b2DynamicTree.cpp */; }; 19 | 8D0492FB197C1BE4001A697B /* b2TimeOfImpact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D04923A197C1BE4001A697B /* b2TimeOfImpact.cpp */; }; 20 | 8D0492FC197C1BE4001A697B /* b2ChainShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D04923D197C1BE4001A697B /* b2ChainShape.cpp */; }; 21 | 8D0492FD197C1BE4001A697B /* b2CircleShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D04923F197C1BE4001A697B /* b2CircleShape.cpp */; }; 22 | 8D0492FE197C1BE4001A697B /* b2EdgeShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D049241197C1BE4001A697B /* b2EdgeShape.cpp */; }; 23 | 8D0492FF197C1BE4001A697B /* b2PolygonShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D049243197C1BE4001A697B /* b2PolygonShape.cpp */; }; 24 | 8D049300197C1BE4001A697B /* b2BlockAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D049247197C1BE4001A697B /* b2BlockAllocator.cpp */; }; 25 | 8D049301197C1BE4001A697B /* b2Draw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D049249197C1BE4001A697B /* b2Draw.cpp */; }; 26 | 8D049302197C1BE4001A697B /* b2FreeList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D04924B197C1BE4001A697B /* b2FreeList.cpp */; }; 27 | 8D049303197C1BE4001A697B /* b2Math.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D049250197C1BE4001A697B /* b2Math.cpp */; }; 28 | 8D049304197C1BE4001A697B /* b2Settings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D049252197C1BE4001A697B /* b2Settings.cpp */; }; 29 | 8D049305197C1BE4001A697B /* b2StackAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D049255197C1BE4001A697B /* b2StackAllocator.cpp */; }; 30 | 8D049306197C1BE4001A697B /* b2Stat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D049257197C1BE4001A697B /* b2Stat.cpp */; }; 31 | 8D049307197C1BE4001A697B /* b2Timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D049259197C1BE4001A697B /* b2Timer.cpp */; }; 32 | 8D049308197C1BE4001A697B /* b2TrackedBlock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D04925B197C1BE4001A697B /* b2TrackedBlock.cpp */; }; 33 | 8D049309197C1BE4001A697B /* doxyfile in Resources */ = {isa = PBXBuildFile; fileRef = 8D04925F197C1BE4001A697B /* doxyfile */; }; 34 | 8D04930A197C1BE4001A697B /* Building.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D049261197C1BE4001A697B /* Building.md */; }; 35 | 8D04930B197C1BE4001A697B /* BuildingAndroid.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D049262197C1BE4001A697B /* BuildingAndroid.md */; }; 36 | 8D04930C197C1BE4001A697B /* BuildingiOS.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D049263197C1BE4001A697B /* BuildingiOS.md */; }; 37 | 8D04930D197C1BE4001A697B /* BuildingJavaScript.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D049264197C1BE4001A697B /* BuildingJavaScript.md */; }; 38 | 8D04930E197C1BE4001A697B /* BuildingLinux.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D049265197C1BE4001A697B /* BuildingLinux.md */; }; 39 | 8D04930F197C1BE4001A697B /* BuildingOSX.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D049266197C1BE4001A697B /* BuildingOSX.md */; }; 40 | 8D049310197C1BE4001A697B /* BuildingWindows.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D049267197C1BE4001A697B /* BuildingWindows.md */; }; 41 | 8D049311197C1BE4001A697B /* doxyfile in Resources */ = {isa = PBXBuildFile; fileRef = 8D049268197C1BE4001A697B /* doxyfile */; }; 42 | 8D049312197C1BE4001A697B /* PortingFromBox2D.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D049269197C1BE4001A697B /* PortingFromBox2D.md */; }; 43 | 8D049313197C1BE4001A697B /* footer.html in Resources */ = {isa = PBXBuildFile; fileRef = 8D04926A197C1BE4001A697B /* footer.html */; }; 44 | 8D049314197C1BE4001A697B /* Chapter01_Introduction.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D04926C197C1BE4001A697B /* Chapter01_Introduction.md */; }; 45 | 8D049315197C1BE4001A697B /* Chapter02_Hello_Box2D.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D04926D197C1BE4001A697B /* Chapter02_Hello_Box2D.md */; }; 46 | 8D049316197C1BE4001A697B /* Chapter03_Common.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D04926E197C1BE4001A697B /* Chapter03_Common.md */; }; 47 | 8D049317197C1BE4001A697B /* Chapter04_Collision_Module.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D04926F197C1BE4001A697B /* Chapter04_Collision_Module.md */; }; 48 | 8D049318197C1BE4001A697B /* Chapter05_Dynamics_Module.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D049270197C1BE4001A697B /* Chapter05_Dynamics_Module.md */; }; 49 | 8D049319197C1BE4001A697B /* Chapter06_Bodies.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D049271197C1BE4001A697B /* Chapter06_Bodies.md */; }; 50 | 8D04931A197C1BE4001A697B /* Chapter07_Fixtures.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D049272197C1BE4001A697B /* Chapter07_Fixtures.md */; }; 51 | 8D04931B197C1BE4001A697B /* Chapter08_Joints.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D049273197C1BE4001A697B /* Chapter08_Joints.md */; }; 52 | 8D04931C197C1BE4001A697B /* Chapter09_Contacts.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D049274197C1BE4001A697B /* Chapter09_Contacts.md */; }; 53 | 8D04931D197C1BE4001A697B /* Chapter10_World.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D049275197C1BE4001A697B /* Chapter10_World.md */; }; 54 | 8D04931E197C1BE4001A697B /* Chapter11_Particles.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D049276197C1BE4001A697B /* Chapter11_Particles.md */; }; 55 | 8D04931F197C1BE4001A697B /* Chapter12_Loose_Ends.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D049277197C1BE4001A697B /* Chapter12_Loose_Ends.md */; }; 56 | 8D049320197C1BE4001A697B /* Chapter13_Debug_Drawing.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D049278197C1BE4001A697B /* Chapter13_Debug_Drawing.md */; }; 57 | 8D049321197C1BE4001A697B /* Chapter14_Limitations.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D049279197C1BE4001A697B /* Chapter14_Limitations.md */; }; 58 | 8D049322197C1BE4001A697B /* Chapter15_References.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D04927A197C1BE4001A697B /* Chapter15_References.md */; }; 59 | 8D049323197C1BE4001A697B /* ContentLicense.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D04927B197C1BE4001A697B /* ContentLicense.md */; }; 60 | 8D049324197C1BE4001A697B /* doxyfile in Resources */ = {isa = PBXBuildFile; fileRef = 8D04927C197C1BE4001A697B /* doxyfile */; }; 61 | 8D049325197C1BE4001A697B /* image_0.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D04927D197C1BE4001A697B /* image_0.png */; }; 62 | 8D049326197C1BE4001A697B /* image_1.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D04927E197C1BE4001A697B /* image_1.png */; }; 63 | 8D049327197C1BE4001A697B /* image_10.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D04927F197C1BE4001A697B /* image_10.png */; }; 64 | 8D049328197C1BE4001A697B /* image_11.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D049280197C1BE4001A697B /* image_11.png */; }; 65 | 8D049329197C1BE4001A697B /* image_12.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D049281197C1BE4001A697B /* image_12.png */; }; 66 | 8D04932A197C1BE4001A697B /* image_13.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D049282197C1BE4001A697B /* image_13.png */; }; 67 | 8D04932B197C1BE4001A697B /* image_14.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D049283197C1BE4001A697B /* image_14.png */; }; 68 | 8D04932C197C1BE4001A697B /* image_15.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D049284197C1BE4001A697B /* image_15.png */; }; 69 | 8D04932D197C1BE4001A697B /* image_16.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D049285197C1BE4001A697B /* image_16.png */; }; 70 | 8D04932E197C1BE4001A697B /* image_17.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D049286197C1BE4001A697B /* image_17.png */; }; 71 | 8D04932F197C1BE4001A697B /* image_18.gif in Resources */ = {isa = PBXBuildFile; fileRef = 8D049287197C1BE4001A697B /* image_18.gif */; }; 72 | 8D049330197C1BE4001A697B /* image_19.gif in Resources */ = {isa = PBXBuildFile; fileRef = 8D049288197C1BE4001A697B /* image_19.gif */; }; 73 | 8D049331197C1BE4001A697B /* image_2.gif in Resources */ = {isa = PBXBuildFile; fileRef = 8D049289197C1BE4001A697B /* image_2.gif */; }; 74 | 8D049332197C1BE4001A697B /* image_20.gif in Resources */ = {isa = PBXBuildFile; fileRef = 8D04928A197C1BE4001A697B /* image_20.gif */; }; 75 | 8D049333197C1BE4001A697B /* image_21.gif in Resources */ = {isa = PBXBuildFile; fileRef = 8D04928B197C1BE4001A697B /* image_21.gif */; }; 76 | 8D049334197C1BE4001A697B /* image_22.gif in Resources */ = {isa = PBXBuildFile; fileRef = 8D04928C197C1BE4001A697B /* image_22.gif */; }; 77 | 8D049335197C1BE4001A697B /* image_23.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D04928D197C1BE4001A697B /* image_23.png */; }; 78 | 8D049336197C1BE4001A697B /* image_24.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D04928E197C1BE4001A697B /* image_24.png */; }; 79 | 8D049337197C1BE4001A697B /* image_3.gif in Resources */ = {isa = PBXBuildFile; fileRef = 8D04928F197C1BE4001A697B /* image_3.gif */; }; 80 | 8D049338197C1BE4001A697B /* image_4.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D049290197C1BE4001A697B /* image_4.png */; }; 81 | 8D049339197C1BE4001A697B /* image_5.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D049291197C1BE4001A697B /* image_5.png */; }; 82 | 8D04933A197C1BE4001A697B /* image_6.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D049292197C1BE4001A697B /* image_6.png */; }; 83 | 8D04933B197C1BE4001A697B /* image_7.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D049293197C1BE4001A697B /* image_7.png */; }; 84 | 8D04933C197C1BE4001A697B /* image_8.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D049294197C1BE4001A697B /* image_8.png */; }; 85 | 8D04933D197C1BE4001A697B /* image_9.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D049295197C1BE4001A697B /* image_9.png */; }; 86 | 8D04933E197C1BE4001A697B /* liquidfun-logo-horizontal-small.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D049296197C1BE4001A697B /* liquidfun-logo-horizontal-small.png */; }; 87 | 8D04933F197C1BE4001A697B /* liquidfun-logo-small.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D049297197C1BE4001A697B /* liquidfun-logo-small.png */; }; 88 | 8D049340197C1BE4001A697B /* liquidfun-logo-square-small.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D049298197C1BE4001A697B /* liquidfun-logo-square-small.png */; }; 89 | 8D049341197C1BE4001A697B /* liquidfun-logo.ai in Resources */ = {isa = PBXBuildFile; fileRef = 8D049299197C1BE4001A697B /* liquidfun-logo.ai */; }; 90 | 8D049342197C1BE4001A697B /* liquidfun-logo.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D04929A197C1BE4001A697B /* liquidfun-logo.png */; }; 91 | 8D049343197C1BE4001A697B /* Logo.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D04929B197C1BE4001A697B /* Logo.md */; }; 92 | 8D049344197C1BE4001A697B /* doxyfile in Resources */ = {isa = PBXBuildFile; fileRef = 8D04929D197C1BE4001A697B /* doxyfile */; }; 93 | 8D049345197C1BE4001A697B /* jquery.js in Sources */ = {isa = PBXBuildFile; fileRef = 8D04929E197C1BE4001A697B /* jquery.js */; }; 94 | 8D049346197C1BE4001A697B /* doxyfile in Resources */ = {isa = PBXBuildFile; fileRef = 8D0492A0197C1BE4001A697B /* doxyfile */; }; 95 | 8D049347197C1BE4001A697B /* jquery.js in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492A1197C1BE4001A697B /* jquery.js */; }; 96 | 8D049348197C1BE4001A697B /* doxyfile in Resources */ = {isa = PBXBuildFile; fileRef = 8D0492A3197C1BE4001A697B /* doxyfile */; }; 97 | 8D049349197C1BE4001A697B /* GettingStarted.md in Resources */ = {isa = PBXBuildFile; fileRef = 8D0492A4197C1BE4001A697B /* GettingStarted.md */; }; 98 | 8D04934A197C1BE4001A697B /* jquery.js in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492A5197C1BE4001A697B /* jquery.js */; }; 99 | 8D04934B197C1BE4001A697B /* liquidfunpaint.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 8D0492A6197C1BE4001A697B /* liquidfunpaint.jpg */; }; 100 | 8D04934C197C1BE4001A697B /* b2Body.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492A8197C1BE4001A697B /* b2Body.cpp */; }; 101 | 8D04934D197C1BE4001A697B /* b2ContactManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492AA197C1BE4001A697B /* b2ContactManager.cpp */; }; 102 | 8D04934E197C1BE4001A697B /* b2Fixture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492AC197C1BE4001A697B /* b2Fixture.cpp */; }; 103 | 8D04934F197C1BE4001A697B /* b2Island.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492AE197C1BE4001A697B /* b2Island.cpp */; }; 104 | 8D049350197C1BE4001A697B /* b2World.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492B1197C1BE4001A697B /* b2World.cpp */; }; 105 | 8D049351197C1BE4001A697B /* b2WorldCallbacks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492B3197C1BE4001A697B /* b2WorldCallbacks.cpp */; }; 106 | 8D049352197C1BE4001A697B /* b2ChainAndCircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492B6197C1BE4001A697B /* b2ChainAndCircleContact.cpp */; }; 107 | 8D049353197C1BE4001A697B /* b2ChainAndPolygonContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492B8197C1BE4001A697B /* b2ChainAndPolygonContact.cpp */; }; 108 | 8D049354197C1BE4001A697B /* b2CircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492BA197C1BE4001A697B /* b2CircleContact.cpp */; }; 109 | 8D049355197C1BE4001A697B /* b2Contact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492BC197C1BE4001A697B /* b2Contact.cpp */; }; 110 | 8D049356197C1BE4001A697B /* b2ContactSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492BE197C1BE4001A697B /* b2ContactSolver.cpp */; }; 111 | 8D049357197C1BE4001A697B /* b2EdgeAndCircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492C0197C1BE4001A697B /* b2EdgeAndCircleContact.cpp */; }; 112 | 8D049358197C1BE4001A697B /* b2EdgeAndPolygonContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492C2197C1BE4001A697B /* b2EdgeAndPolygonContact.cpp */; }; 113 | 8D049359197C1BE4001A697B /* b2PolygonAndCircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492C4197C1BE4001A697B /* b2PolygonAndCircleContact.cpp */; }; 114 | 8D04935A197C1BE4001A697B /* b2PolygonContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492C6197C1BE4001A697B /* b2PolygonContact.cpp */; }; 115 | 8D04935B197C1BE4001A697B /* b2DistanceJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492C9197C1BE4001A697B /* b2DistanceJoint.cpp */; }; 116 | 8D04935C197C1BE4001A697B /* b2FrictionJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492CB197C1BE4001A697B /* b2FrictionJoint.cpp */; }; 117 | 8D04935D197C1BE4001A697B /* b2GearJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492CD197C1BE4001A697B /* b2GearJoint.cpp */; }; 118 | 8D04935E197C1BE4001A697B /* b2Joint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492CF197C1BE4001A697B /* b2Joint.cpp */; }; 119 | 8D04935F197C1BE4001A697B /* b2MotorJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492D1197C1BE4001A697B /* b2MotorJoint.cpp */; }; 120 | 8D049360197C1BE4001A697B /* b2MouseJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492D3197C1BE4001A697B /* b2MouseJoint.cpp */; }; 121 | 8D049361197C1BE4001A697B /* b2PrismaticJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492D5197C1BE4001A697B /* b2PrismaticJoint.cpp */; }; 122 | 8D049362197C1BE4001A697B /* b2PulleyJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492D7197C1BE4001A697B /* b2PulleyJoint.cpp */; }; 123 | 8D049363197C1BE4001A697B /* b2RevoluteJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492D9197C1BE4001A697B /* b2RevoluteJoint.cpp */; }; 124 | 8D049364197C1BE4001A697B /* b2RopeJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492DB197C1BE4001A697B /* b2RopeJoint.cpp */; }; 125 | 8D049365197C1BE4001A697B /* b2WeldJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492DD197C1BE4001A697B /* b2WeldJoint.cpp */; }; 126 | 8D049366197C1BE4001A697B /* b2WheelJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492DF197C1BE4001A697B /* b2WheelJoint.cpp */; }; 127 | 8D049367197C1BE4001A697B /* b2Particle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492E2197C1BE4001A697B /* b2Particle.cpp */; }; 128 | 8D049368197C1BE4001A697B /* b2ParticleAssembly.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492E4197C1BE4001A697B /* b2ParticleAssembly.cpp */; }; 129 | 8D04936A197C1BE4001A697B /* b2ParticleGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492E7197C1BE4001A697B /* b2ParticleGroup.cpp */; }; 130 | 8D04936B197C1BE4001A697B /* b2ParticleSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492E9197C1BE4001A697B /* b2ParticleSystem.cpp */; }; 131 | 8D04936C197C1BE4001A697B /* b2VoronoiDiagram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492EC197C1BE4001A697B /* b2VoronoiDiagram.cpp */; }; 132 | 8D04936D197C1BE4001A697B /* b2Rope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8D0492EF197C1BE4001A697B /* b2Rope.cpp */; }; 133 | 8D04936E197C1BE4001A697B /* UseBox2D.cmake in Resources */ = {isa = PBXBuildFile; fileRef = 8D0492F1197C1BE4001A697B /* UseBox2D.cmake */; }; 134 | 8D663DE6188D36920061EB60 /* water.sks in Resources */ = {isa = PBXBuildFile; fileRef = 8D663DE4188D36920061EB60 /* water.sks */; }; 135 | 8D663DE7188D36920061EB60 /* spark.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D663DE5188D36920061EB60 /* spark.png */; }; 136 | 8D964B06188B7B1E004DFAC5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D964B05188B7B1E004DFAC5 /* Foundation.framework */; }; 137 | 8D964B08188B7B1E004DFAC5 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D964B07188B7B1E004DFAC5 /* CoreGraphics.framework */; }; 138 | 8D964B0A188B7B1E004DFAC5 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D964B09188B7B1E004DFAC5 /* UIKit.framework */; }; 139 | 8D964B0C188B7B1E004DFAC5 /* SpriteKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D964B0B188B7B1E004DFAC5 /* SpriteKit.framework */; }; 140 | 8D964B12188B7B1E004DFAC5 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8D964B10188B7B1E004DFAC5 /* InfoPlist.strings */; }; 141 | 8D964B14188B7B1E004DFAC5 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D964B13188B7B1E004DFAC5 /* main.m */; }; 142 | 8D964B18188B7B1E004DFAC5 /* LFSAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D964B17188B7B1E004DFAC5 /* LFSAppDelegate.m */; }; 143 | 8D964B1B188B7B1E004DFAC5 /* Main_iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8D964B19188B7B1E004DFAC5 /* Main_iPhone.storyboard */; }; 144 | 8D964B1E188B7B1E004DFAC5 /* Main_iPad.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8D964B1C188B7B1E004DFAC5 /* Main_iPad.storyboard */; }; 145 | 8D964B21188B7B1E004DFAC5 /* LFSViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D964B20188B7B1E004DFAC5 /* LFSViewController.m */; }; 146 | 8D964B24188B7B1E004DFAC5 /* LFSMyScene.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8D964B23188B7B1E004DFAC5 /* LFSMyScene.mm */; }; 147 | 8D964B26188B7B1E004DFAC5 /* Spaceship.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D964B25188B7B1E004DFAC5 /* Spaceship.png */; }; 148 | 8D964B28188B7B1E004DFAC5 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8D964B27188B7B1E004DFAC5 /* Images.xcassets */; }; 149 | 8D964B2F188B7B1E004DFAC5 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D964B2E188B7B1E004DFAC5 /* XCTest.framework */; }; 150 | 8D964B30188B7B1E004DFAC5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D964B05188B7B1E004DFAC5 /* Foundation.framework */; }; 151 | 8D964B31188B7B1E004DFAC5 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D964B09188B7B1E004DFAC5 /* UIKit.framework */; }; 152 | 8D964B39188B7B1E004DFAC5 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8D964B37188B7B1E004DFAC5 /* InfoPlist.strings */; }; 153 | 8D964B3B188B7B1E004DFAC5 /* LiquidFunSampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D964B3A188B7B1E004DFAC5 /* LiquidFunSampleTests.m */; }; 154 | /* End PBXBuildFile section */ 155 | 156 | /* Begin PBXContainerItemProxy section */ 157 | 8D964B32188B7B1E004DFAC5 /* PBXContainerItemProxy */ = { 158 | isa = PBXContainerItemProxy; 159 | containerPortal = 8D964AFA188B7B1E004DFAC5 /* Project object */; 160 | proxyType = 1; 161 | remoteGlobalIDString = 8D964B01188B7B1E004DFAC5; 162 | remoteInfo = LiquidFunSample; 163 | }; 164 | /* End PBXContainerItemProxy section */ 165 | 166 | /* Begin PBXFileReference section */ 167 | 8D04922B197C1BE4001A697B /* Box2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Box2D.h; sourceTree = ""; }; 168 | 8D04922C197C1BE4001A697B /* Box2DConfig.cmake.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Box2DConfig.cmake.in; sourceTree = ""; }; 169 | 8D04922D197C1BE4001A697B /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; 170 | 8D04922F197C1BE4001A697B /* b2BroadPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2BroadPhase.cpp; sourceTree = ""; }; 171 | 8D049230197C1BE4001A697B /* b2BroadPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2BroadPhase.h; sourceTree = ""; }; 172 | 8D049231197C1BE4001A697B /* b2CollideCircle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CollideCircle.cpp; sourceTree = ""; }; 173 | 8D049232197C1BE4001A697B /* b2CollideEdge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CollideEdge.cpp; sourceTree = ""; }; 174 | 8D049233197C1BE4001A697B /* b2CollidePolygon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CollidePolygon.cpp; sourceTree = ""; }; 175 | 8D049234197C1BE4001A697B /* b2Collision.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Collision.cpp; sourceTree = ""; }; 176 | 8D049235197C1BE4001A697B /* b2Collision.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Collision.h; sourceTree = ""; }; 177 | 8D049236197C1BE4001A697B /* b2Distance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Distance.cpp; sourceTree = ""; }; 178 | 8D049237197C1BE4001A697B /* b2Distance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Distance.h; sourceTree = ""; }; 179 | 8D049238197C1BE4001A697B /* b2DynamicTree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2DynamicTree.cpp; sourceTree = ""; }; 180 | 8D049239197C1BE4001A697B /* b2DynamicTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2DynamicTree.h; sourceTree = ""; }; 181 | 8D04923A197C1BE4001A697B /* b2TimeOfImpact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2TimeOfImpact.cpp; sourceTree = ""; }; 182 | 8D04923B197C1BE4001A697B /* b2TimeOfImpact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2TimeOfImpact.h; sourceTree = ""; }; 183 | 8D04923D197C1BE4001A697B /* b2ChainShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ChainShape.cpp; sourceTree = ""; }; 184 | 8D04923E197C1BE4001A697B /* b2ChainShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ChainShape.h; sourceTree = ""; }; 185 | 8D04923F197C1BE4001A697B /* b2CircleShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CircleShape.cpp; sourceTree = ""; }; 186 | 8D049240197C1BE4001A697B /* b2CircleShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2CircleShape.h; sourceTree = ""; }; 187 | 8D049241197C1BE4001A697B /* b2EdgeShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2EdgeShape.cpp; sourceTree = ""; }; 188 | 8D049242197C1BE4001A697B /* b2EdgeShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2EdgeShape.h; sourceTree = ""; }; 189 | 8D049243197C1BE4001A697B /* b2PolygonShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PolygonShape.cpp; sourceTree = ""; }; 190 | 8D049244197C1BE4001A697B /* b2PolygonShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PolygonShape.h; sourceTree = ""; }; 191 | 8D049245197C1BE4001A697B /* b2Shape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Shape.h; sourceTree = ""; }; 192 | 8D049247197C1BE4001A697B /* b2BlockAllocator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2BlockAllocator.cpp; sourceTree = ""; }; 193 | 8D049248197C1BE4001A697B /* b2BlockAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2BlockAllocator.h; sourceTree = ""; }; 194 | 8D049249197C1BE4001A697B /* b2Draw.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Draw.cpp; sourceTree = ""; }; 195 | 8D04924A197C1BE4001A697B /* b2Draw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Draw.h; sourceTree = ""; }; 196 | 8D04924B197C1BE4001A697B /* b2FreeList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2FreeList.cpp; sourceTree = ""; }; 197 | 8D04924C197C1BE4001A697B /* b2FreeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2FreeList.h; sourceTree = ""; }; 198 | 8D04924D197C1BE4001A697B /* b2GrowableBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2GrowableBuffer.h; sourceTree = ""; }; 199 | 8D04924E197C1BE4001A697B /* b2GrowableStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2GrowableStack.h; sourceTree = ""; }; 200 | 8D04924F197C1BE4001A697B /* b2IntrusiveList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2IntrusiveList.h; sourceTree = ""; }; 201 | 8D049250197C1BE4001A697B /* b2Math.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Math.cpp; sourceTree = ""; }; 202 | 8D049251197C1BE4001A697B /* b2Math.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Math.h; sourceTree = ""; }; 203 | 8D049252197C1BE4001A697B /* b2Settings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Settings.cpp; sourceTree = ""; }; 204 | 8D049253197C1BE4001A697B /* b2Settings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Settings.h; sourceTree = ""; }; 205 | 8D049254197C1BE4001A697B /* b2SlabAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2SlabAllocator.h; sourceTree = ""; }; 206 | 8D049255197C1BE4001A697B /* b2StackAllocator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2StackAllocator.cpp; sourceTree = ""; }; 207 | 8D049256197C1BE4001A697B /* b2StackAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2StackAllocator.h; sourceTree = ""; }; 208 | 8D049257197C1BE4001A697B /* b2Stat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Stat.cpp; sourceTree = ""; }; 209 | 8D049258197C1BE4001A697B /* b2Stat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Stat.h; sourceTree = ""; }; 210 | 8D049259197C1BE4001A697B /* b2Timer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Timer.cpp; sourceTree = ""; }; 211 | 8D04925A197C1BE4001A697B /* b2Timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Timer.h; sourceTree = ""; }; 212 | 8D04925B197C1BE4001A697B /* b2TrackedBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2TrackedBlock.cpp; sourceTree = ""; }; 213 | 8D04925C197C1BE4001A697B /* b2TrackedBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2TrackedBlock.h; sourceTree = ""; }; 214 | 8D04925F197C1BE4001A697B /* doxyfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = doxyfile; sourceTree = ""; }; 215 | 8D049261197C1BE4001A697B /* Building.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Building.md; sourceTree = ""; }; 216 | 8D049262197C1BE4001A697B /* BuildingAndroid.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = BuildingAndroid.md; sourceTree = ""; }; 217 | 8D049263197C1BE4001A697B /* BuildingiOS.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = BuildingiOS.md; sourceTree = ""; }; 218 | 8D049264197C1BE4001A697B /* BuildingJavaScript.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = BuildingJavaScript.md; sourceTree = ""; }; 219 | 8D049265197C1BE4001A697B /* BuildingLinux.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = BuildingLinux.md; sourceTree = ""; }; 220 | 8D049266197C1BE4001A697B /* BuildingOSX.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = BuildingOSX.md; sourceTree = ""; }; 221 | 8D049267197C1BE4001A697B /* BuildingWindows.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = BuildingWindows.md; sourceTree = ""; }; 222 | 8D049268197C1BE4001A697B /* doxyfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = doxyfile; sourceTree = ""; }; 223 | 8D049269197C1BE4001A697B /* PortingFromBox2D.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PortingFromBox2D.md; sourceTree = ""; }; 224 | 8D04926A197C1BE4001A697B /* footer.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = footer.html; sourceTree = ""; }; 225 | 8D04926C197C1BE4001A697B /* Chapter01_Introduction.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Chapter01_Introduction.md; sourceTree = ""; }; 226 | 8D04926D197C1BE4001A697B /* Chapter02_Hello_Box2D.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Chapter02_Hello_Box2D.md; sourceTree = ""; }; 227 | 8D04926E197C1BE4001A697B /* Chapter03_Common.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Chapter03_Common.md; sourceTree = ""; }; 228 | 8D04926F197C1BE4001A697B /* Chapter04_Collision_Module.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Chapter04_Collision_Module.md; sourceTree = ""; }; 229 | 8D049270197C1BE4001A697B /* Chapter05_Dynamics_Module.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Chapter05_Dynamics_Module.md; sourceTree = ""; }; 230 | 8D049271197C1BE4001A697B /* Chapter06_Bodies.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Chapter06_Bodies.md; sourceTree = ""; }; 231 | 8D049272197C1BE4001A697B /* Chapter07_Fixtures.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Chapter07_Fixtures.md; sourceTree = ""; }; 232 | 8D049273197C1BE4001A697B /* Chapter08_Joints.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Chapter08_Joints.md; sourceTree = ""; }; 233 | 8D049274197C1BE4001A697B /* Chapter09_Contacts.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Chapter09_Contacts.md; sourceTree = ""; }; 234 | 8D049275197C1BE4001A697B /* Chapter10_World.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Chapter10_World.md; sourceTree = ""; }; 235 | 8D049276197C1BE4001A697B /* Chapter11_Particles.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Chapter11_Particles.md; sourceTree = ""; }; 236 | 8D049277197C1BE4001A697B /* Chapter12_Loose_Ends.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Chapter12_Loose_Ends.md; sourceTree = ""; }; 237 | 8D049278197C1BE4001A697B /* Chapter13_Debug_Drawing.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Chapter13_Debug_Drawing.md; sourceTree = ""; }; 238 | 8D049279197C1BE4001A697B /* Chapter14_Limitations.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Chapter14_Limitations.md; sourceTree = ""; }; 239 | 8D04927A197C1BE4001A697B /* Chapter15_References.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Chapter15_References.md; sourceTree = ""; }; 240 | 8D04927B197C1BE4001A697B /* ContentLicense.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ContentLicense.md; sourceTree = ""; }; 241 | 8D04927C197C1BE4001A697B /* doxyfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = doxyfile; sourceTree = ""; }; 242 | 8D04927D197C1BE4001A697B /* image_0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = image_0.png; sourceTree = ""; }; 243 | 8D04927E197C1BE4001A697B /* image_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = image_1.png; sourceTree = ""; }; 244 | 8D04927F197C1BE4001A697B /* image_10.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = image_10.png; sourceTree = ""; }; 245 | 8D049280197C1BE4001A697B /* image_11.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = image_11.png; sourceTree = ""; }; 246 | 8D049281197C1BE4001A697B /* image_12.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = image_12.png; sourceTree = ""; }; 247 | 8D049282197C1BE4001A697B /* image_13.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = image_13.png; sourceTree = ""; }; 248 | 8D049283197C1BE4001A697B /* image_14.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = image_14.png; sourceTree = ""; }; 249 | 8D049284197C1BE4001A697B /* image_15.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = image_15.png; sourceTree = ""; }; 250 | 8D049285197C1BE4001A697B /* image_16.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = image_16.png; sourceTree = ""; }; 251 | 8D049286197C1BE4001A697B /* image_17.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = image_17.png; sourceTree = ""; }; 252 | 8D049287197C1BE4001A697B /* image_18.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = image_18.gif; sourceTree = ""; }; 253 | 8D049288197C1BE4001A697B /* image_19.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = image_19.gif; sourceTree = ""; }; 254 | 8D049289197C1BE4001A697B /* image_2.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = image_2.gif; sourceTree = ""; }; 255 | 8D04928A197C1BE4001A697B /* image_20.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = image_20.gif; sourceTree = ""; }; 256 | 8D04928B197C1BE4001A697B /* image_21.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = image_21.gif; sourceTree = ""; }; 257 | 8D04928C197C1BE4001A697B /* image_22.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = image_22.gif; sourceTree = ""; }; 258 | 8D04928D197C1BE4001A697B /* image_23.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = image_23.png; sourceTree = ""; }; 259 | 8D04928E197C1BE4001A697B /* image_24.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = image_24.png; sourceTree = ""; }; 260 | 8D04928F197C1BE4001A697B /* image_3.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = image_3.gif; sourceTree = ""; }; 261 | 8D049290197C1BE4001A697B /* image_4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = image_4.png; sourceTree = ""; }; 262 | 8D049291197C1BE4001A697B /* image_5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = image_5.png; sourceTree = ""; }; 263 | 8D049292197C1BE4001A697B /* image_6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = image_6.png; sourceTree = ""; }; 264 | 8D049293197C1BE4001A697B /* image_7.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = image_7.png; sourceTree = ""; }; 265 | 8D049294197C1BE4001A697B /* image_8.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = image_8.png; sourceTree = ""; }; 266 | 8D049295197C1BE4001A697B /* image_9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = image_9.png; sourceTree = ""; }; 267 | 8D049296197C1BE4001A697B /* liquidfun-logo-horizontal-small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "liquidfun-logo-horizontal-small.png"; sourceTree = ""; }; 268 | 8D049297197C1BE4001A697B /* liquidfun-logo-small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "liquidfun-logo-small.png"; sourceTree = ""; }; 269 | 8D049298197C1BE4001A697B /* liquidfun-logo-square-small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "liquidfun-logo-square-small.png"; sourceTree = ""; }; 270 | 8D049299197C1BE4001A697B /* liquidfun-logo.ai */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "liquidfun-logo.ai"; sourceTree = ""; }; 271 | 8D04929A197C1BE4001A697B /* liquidfun-logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "liquidfun-logo.png"; sourceTree = ""; }; 272 | 8D04929B197C1BE4001A697B /* Logo.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Logo.md; sourceTree = ""; }; 273 | 8D04929D197C1BE4001A697B /* doxyfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = doxyfile; sourceTree = ""; }; 274 | 8D04929E197C1BE4001A697B /* jquery.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = jquery.js; sourceTree = ""; }; 275 | 8D0492A0197C1BE4001A697B /* doxyfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = doxyfile; sourceTree = ""; }; 276 | 8D0492A1197C1BE4001A697B /* jquery.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = jquery.js; sourceTree = ""; }; 277 | 8D0492A3197C1BE4001A697B /* doxyfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = doxyfile; sourceTree = ""; }; 278 | 8D0492A4197C1BE4001A697B /* GettingStarted.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GettingStarted.md; sourceTree = ""; }; 279 | 8D0492A5197C1BE4001A697B /* jquery.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = jquery.js; sourceTree = ""; }; 280 | 8D0492A6197C1BE4001A697B /* liquidfunpaint.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = liquidfunpaint.jpg; sourceTree = ""; }; 281 | 8D0492A8197C1BE4001A697B /* b2Body.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Body.cpp; sourceTree = ""; }; 282 | 8D0492A9197C1BE4001A697B /* b2Body.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Body.h; sourceTree = ""; }; 283 | 8D0492AA197C1BE4001A697B /* b2ContactManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ContactManager.cpp; sourceTree = ""; }; 284 | 8D0492AB197C1BE4001A697B /* b2ContactManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ContactManager.h; sourceTree = ""; }; 285 | 8D0492AC197C1BE4001A697B /* b2Fixture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Fixture.cpp; sourceTree = ""; }; 286 | 8D0492AD197C1BE4001A697B /* b2Fixture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Fixture.h; sourceTree = ""; }; 287 | 8D0492AE197C1BE4001A697B /* b2Island.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Island.cpp; sourceTree = ""; }; 288 | 8D0492AF197C1BE4001A697B /* b2Island.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Island.h; sourceTree = ""; }; 289 | 8D0492B0197C1BE4001A697B /* b2TimeStep.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2TimeStep.h; sourceTree = ""; }; 290 | 8D0492B1197C1BE4001A697B /* b2World.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2World.cpp; sourceTree = ""; }; 291 | 8D0492B2197C1BE4001A697B /* b2World.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2World.h; sourceTree = ""; }; 292 | 8D0492B3197C1BE4001A697B /* b2WorldCallbacks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2WorldCallbacks.cpp; sourceTree = ""; }; 293 | 8D0492B4197C1BE4001A697B /* b2WorldCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2WorldCallbacks.h; sourceTree = ""; }; 294 | 8D0492B6197C1BE4001A697B /* b2ChainAndCircleContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ChainAndCircleContact.cpp; sourceTree = ""; }; 295 | 8D0492B7197C1BE4001A697B /* b2ChainAndCircleContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ChainAndCircleContact.h; sourceTree = ""; }; 296 | 8D0492B8197C1BE4001A697B /* b2ChainAndPolygonContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ChainAndPolygonContact.cpp; sourceTree = ""; }; 297 | 8D0492B9197C1BE4001A697B /* b2ChainAndPolygonContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ChainAndPolygonContact.h; sourceTree = ""; }; 298 | 8D0492BA197C1BE4001A697B /* b2CircleContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CircleContact.cpp; sourceTree = ""; }; 299 | 8D0492BB197C1BE4001A697B /* b2CircleContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2CircleContact.h; sourceTree = ""; }; 300 | 8D0492BC197C1BE4001A697B /* b2Contact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Contact.cpp; sourceTree = ""; }; 301 | 8D0492BD197C1BE4001A697B /* b2Contact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Contact.h; sourceTree = ""; }; 302 | 8D0492BE197C1BE4001A697B /* b2ContactSolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ContactSolver.cpp; sourceTree = ""; }; 303 | 8D0492BF197C1BE4001A697B /* b2ContactSolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ContactSolver.h; sourceTree = ""; }; 304 | 8D0492C0197C1BE4001A697B /* b2EdgeAndCircleContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2EdgeAndCircleContact.cpp; sourceTree = ""; }; 305 | 8D0492C1197C1BE4001A697B /* b2EdgeAndCircleContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2EdgeAndCircleContact.h; sourceTree = ""; }; 306 | 8D0492C2197C1BE4001A697B /* b2EdgeAndPolygonContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2EdgeAndPolygonContact.cpp; sourceTree = ""; }; 307 | 8D0492C3197C1BE4001A697B /* b2EdgeAndPolygonContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2EdgeAndPolygonContact.h; sourceTree = ""; }; 308 | 8D0492C4197C1BE4001A697B /* b2PolygonAndCircleContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PolygonAndCircleContact.cpp; sourceTree = ""; }; 309 | 8D0492C5197C1BE4001A697B /* b2PolygonAndCircleContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PolygonAndCircleContact.h; sourceTree = ""; }; 310 | 8D0492C6197C1BE4001A697B /* b2PolygonContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PolygonContact.cpp; sourceTree = ""; }; 311 | 8D0492C7197C1BE4001A697B /* b2PolygonContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PolygonContact.h; sourceTree = ""; }; 312 | 8D0492C9197C1BE4001A697B /* b2DistanceJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2DistanceJoint.cpp; sourceTree = ""; }; 313 | 8D0492CA197C1BE4001A697B /* b2DistanceJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2DistanceJoint.h; sourceTree = ""; }; 314 | 8D0492CB197C1BE4001A697B /* b2FrictionJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2FrictionJoint.cpp; sourceTree = ""; }; 315 | 8D0492CC197C1BE4001A697B /* b2FrictionJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2FrictionJoint.h; sourceTree = ""; }; 316 | 8D0492CD197C1BE4001A697B /* b2GearJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2GearJoint.cpp; sourceTree = ""; }; 317 | 8D0492CE197C1BE4001A697B /* b2GearJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2GearJoint.h; sourceTree = ""; }; 318 | 8D0492CF197C1BE4001A697B /* b2Joint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Joint.cpp; sourceTree = ""; }; 319 | 8D0492D0197C1BE4001A697B /* b2Joint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Joint.h; sourceTree = ""; }; 320 | 8D0492D1197C1BE4001A697B /* b2MotorJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2MotorJoint.cpp; sourceTree = ""; }; 321 | 8D0492D2197C1BE4001A697B /* b2MotorJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2MotorJoint.h; sourceTree = ""; }; 322 | 8D0492D3197C1BE4001A697B /* b2MouseJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2MouseJoint.cpp; sourceTree = ""; }; 323 | 8D0492D4197C1BE4001A697B /* b2MouseJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2MouseJoint.h; sourceTree = ""; }; 324 | 8D0492D5197C1BE4001A697B /* b2PrismaticJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PrismaticJoint.cpp; sourceTree = ""; }; 325 | 8D0492D6197C1BE4001A697B /* b2PrismaticJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PrismaticJoint.h; sourceTree = ""; }; 326 | 8D0492D7197C1BE4001A697B /* b2PulleyJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PulleyJoint.cpp; sourceTree = ""; }; 327 | 8D0492D8197C1BE4001A697B /* b2PulleyJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PulleyJoint.h; sourceTree = ""; }; 328 | 8D0492D9197C1BE4001A697B /* b2RevoluteJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2RevoluteJoint.cpp; sourceTree = ""; }; 329 | 8D0492DA197C1BE4001A697B /* b2RevoluteJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2RevoluteJoint.h; sourceTree = ""; }; 330 | 8D0492DB197C1BE4001A697B /* b2RopeJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2RopeJoint.cpp; sourceTree = ""; }; 331 | 8D0492DC197C1BE4001A697B /* b2RopeJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2RopeJoint.h; sourceTree = ""; }; 332 | 8D0492DD197C1BE4001A697B /* b2WeldJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2WeldJoint.cpp; sourceTree = ""; }; 333 | 8D0492DE197C1BE4001A697B /* b2WeldJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2WeldJoint.h; sourceTree = ""; }; 334 | 8D0492DF197C1BE4001A697B /* b2WheelJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2WheelJoint.cpp; sourceTree = ""; }; 335 | 8D0492E0197C1BE4001A697B /* b2WheelJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2WheelJoint.h; sourceTree = ""; }; 336 | 8D0492E2197C1BE4001A697B /* b2Particle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Particle.cpp; sourceTree = ""; }; 337 | 8D0492E3197C1BE4001A697B /* b2Particle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Particle.h; sourceTree = ""; }; 338 | 8D0492E4197C1BE4001A697B /* b2ParticleAssembly.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ParticleAssembly.cpp; sourceTree = ""; }; 339 | 8D0492E5197C1BE4001A697B /* b2ParticleAssembly.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ParticleAssembly.h; sourceTree = ""; }; 340 | 8D0492E7197C1BE4001A697B /* b2ParticleGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ParticleGroup.cpp; sourceTree = ""; }; 341 | 8D0492E8197C1BE4001A697B /* b2ParticleGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ParticleGroup.h; sourceTree = ""; }; 342 | 8D0492E9197C1BE4001A697B /* b2ParticleSystem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ParticleSystem.cpp; sourceTree = ""; }; 343 | 8D0492EA197C1BE4001A697B /* b2ParticleSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ParticleSystem.h; sourceTree = ""; }; 344 | 8D0492EB197C1BE4001A697B /* b2StackQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2StackQueue.h; sourceTree = ""; }; 345 | 8D0492EC197C1BE4001A697B /* b2VoronoiDiagram.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2VoronoiDiagram.cpp; sourceTree = ""; }; 346 | 8D0492ED197C1BE4001A697B /* b2VoronoiDiagram.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2VoronoiDiagram.h; sourceTree = ""; }; 347 | 8D0492EF197C1BE4001A697B /* b2Rope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Rope.cpp; sourceTree = ""; }; 348 | 8D0492F0197C1BE4001A697B /* b2Rope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Rope.h; sourceTree = ""; }; 349 | 8D0492F1197C1BE4001A697B /* UseBox2D.cmake */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = UseBox2D.cmake; sourceTree = ""; }; 350 | 8D663DE4188D36920061EB60 /* water.sks */ = {isa = PBXFileReference; lastKnownFileType = file.sks; path = water.sks; sourceTree = ""; }; 351 | 8D663DE5188D36920061EB60 /* spark.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = spark.png; sourceTree = ""; }; 352 | 8D964B02188B7B1E004DFAC5 /* LiquidFunSample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LiquidFunSample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 353 | 8D964B05188B7B1E004DFAC5 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 354 | 8D964B07188B7B1E004DFAC5 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 355 | 8D964B09188B7B1E004DFAC5 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 356 | 8D964B0B188B7B1E004DFAC5 /* SpriteKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SpriteKit.framework; path = System/Library/Frameworks/SpriteKit.framework; sourceTree = SDKROOT; }; 357 | 8D964B0F188B7B1E004DFAC5 /* LiquidFunSample-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "LiquidFunSample-Info.plist"; sourceTree = ""; }; 358 | 8D964B11188B7B1E004DFAC5 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 359 | 8D964B13188B7B1E004DFAC5 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 360 | 8D964B15188B7B1E004DFAC5 /* LiquidFunSample-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "LiquidFunSample-Prefix.pch"; sourceTree = ""; }; 361 | 8D964B16188B7B1E004DFAC5 /* LFSAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LFSAppDelegate.h; sourceTree = ""; }; 362 | 8D964B17188B7B1E004DFAC5 /* LFSAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LFSAppDelegate.m; sourceTree = ""; }; 363 | 8D964B1A188B7B1E004DFAC5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main_iPhone.storyboard; sourceTree = ""; }; 364 | 8D964B1D188B7B1E004DFAC5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main_iPad.storyboard; sourceTree = ""; }; 365 | 8D964B1F188B7B1E004DFAC5 /* LFSViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LFSViewController.h; sourceTree = ""; }; 366 | 8D964B20188B7B1E004DFAC5 /* LFSViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LFSViewController.m; sourceTree = ""; }; 367 | 8D964B22188B7B1E004DFAC5 /* LFSMyScene.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LFSMyScene.h; sourceTree = ""; }; 368 | 8D964B23188B7B1E004DFAC5 /* LFSMyScene.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = LFSMyScene.mm; sourceTree = ""; }; 369 | 8D964B25188B7B1E004DFAC5 /* Spaceship.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Spaceship.png; sourceTree = ""; }; 370 | 8D964B27188B7B1E004DFAC5 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 371 | 8D964B2D188B7B1E004DFAC5 /* LiquidFunSampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LiquidFunSampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 372 | 8D964B2E188B7B1E004DFAC5 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 373 | 8D964B36188B7B1E004DFAC5 /* LiquidFunSampleTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "LiquidFunSampleTests-Info.plist"; sourceTree = ""; }; 374 | 8D964B38188B7B1E004DFAC5 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 375 | 8D964B3A188B7B1E004DFAC5 /* LiquidFunSampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LiquidFunSampleTests.m; sourceTree = ""; }; 376 | /* End PBXFileReference section */ 377 | 378 | /* Begin PBXFrameworksBuildPhase section */ 379 | 8D964AFF188B7B1E004DFAC5 /* Frameworks */ = { 380 | isa = PBXFrameworksBuildPhase; 381 | buildActionMask = 2147483647; 382 | files = ( 383 | 8D964B08188B7B1E004DFAC5 /* CoreGraphics.framework in Frameworks */, 384 | 8D964B0A188B7B1E004DFAC5 /* UIKit.framework in Frameworks */, 385 | 8D964B0C188B7B1E004DFAC5 /* SpriteKit.framework in Frameworks */, 386 | 8D964B06188B7B1E004DFAC5 /* Foundation.framework in Frameworks */, 387 | ); 388 | runOnlyForDeploymentPostprocessing = 0; 389 | }; 390 | 8D964B2A188B7B1E004DFAC5 /* Frameworks */ = { 391 | isa = PBXFrameworksBuildPhase; 392 | buildActionMask = 2147483647; 393 | files = ( 394 | 8D964B2F188B7B1E004DFAC5 /* XCTest.framework in Frameworks */, 395 | 8D964B31188B7B1E004DFAC5 /* UIKit.framework in Frameworks */, 396 | 8D964B30188B7B1E004DFAC5 /* Foundation.framework in Frameworks */, 397 | ); 398 | runOnlyForDeploymentPostprocessing = 0; 399 | }; 400 | /* End PBXFrameworksBuildPhase section */ 401 | 402 | /* Begin PBXGroup section */ 403 | 8D04922A197C1BE4001A697B /* Box2D */ = { 404 | isa = PBXGroup; 405 | children = ( 406 | 8D04922B197C1BE4001A697B /* Box2D.h */, 407 | 8D04922C197C1BE4001A697B /* Box2DConfig.cmake.in */, 408 | 8D04922D197C1BE4001A697B /* CMakeLists.txt */, 409 | 8D04922E197C1BE4001A697B /* Collision */, 410 | 8D049246197C1BE4001A697B /* Common */, 411 | 8D04925D197C1BE4001A697B /* Documentation */, 412 | 8D0492A7197C1BE4001A697B /* Dynamics */, 413 | 8D0492E1197C1BE4001A697B /* Particle */, 414 | 8D0492EE197C1BE4001A697B /* Rope */, 415 | 8D0492F1197C1BE4001A697B /* UseBox2D.cmake */, 416 | ); 417 | name = Box2D; 418 | path = liquidfun/liquidfun/Box2D/Box2D; 419 | sourceTree = ""; 420 | }; 421 | 8D04922E197C1BE4001A697B /* Collision */ = { 422 | isa = PBXGroup; 423 | children = ( 424 | 8D04922F197C1BE4001A697B /* b2BroadPhase.cpp */, 425 | 8D049230197C1BE4001A697B /* b2BroadPhase.h */, 426 | 8D049231197C1BE4001A697B /* b2CollideCircle.cpp */, 427 | 8D049232197C1BE4001A697B /* b2CollideEdge.cpp */, 428 | 8D049233197C1BE4001A697B /* b2CollidePolygon.cpp */, 429 | 8D049234197C1BE4001A697B /* b2Collision.cpp */, 430 | 8D049235197C1BE4001A697B /* b2Collision.h */, 431 | 8D049236197C1BE4001A697B /* b2Distance.cpp */, 432 | 8D049237197C1BE4001A697B /* b2Distance.h */, 433 | 8D049238197C1BE4001A697B /* b2DynamicTree.cpp */, 434 | 8D049239197C1BE4001A697B /* b2DynamicTree.h */, 435 | 8D04923A197C1BE4001A697B /* b2TimeOfImpact.cpp */, 436 | 8D04923B197C1BE4001A697B /* b2TimeOfImpact.h */, 437 | 8D04923C197C1BE4001A697B /* Shapes */, 438 | ); 439 | path = Collision; 440 | sourceTree = ""; 441 | }; 442 | 8D04923C197C1BE4001A697B /* Shapes */ = { 443 | isa = PBXGroup; 444 | children = ( 445 | 8D04923D197C1BE4001A697B /* b2ChainShape.cpp */, 446 | 8D04923E197C1BE4001A697B /* b2ChainShape.h */, 447 | 8D04923F197C1BE4001A697B /* b2CircleShape.cpp */, 448 | 8D049240197C1BE4001A697B /* b2CircleShape.h */, 449 | 8D049241197C1BE4001A697B /* b2EdgeShape.cpp */, 450 | 8D049242197C1BE4001A697B /* b2EdgeShape.h */, 451 | 8D049243197C1BE4001A697B /* b2PolygonShape.cpp */, 452 | 8D049244197C1BE4001A697B /* b2PolygonShape.h */, 453 | 8D049245197C1BE4001A697B /* b2Shape.h */, 454 | ); 455 | path = Shapes; 456 | sourceTree = ""; 457 | }; 458 | 8D049246197C1BE4001A697B /* Common */ = { 459 | isa = PBXGroup; 460 | children = ( 461 | 8D049247197C1BE4001A697B /* b2BlockAllocator.cpp */, 462 | 8D049248197C1BE4001A697B /* b2BlockAllocator.h */, 463 | 8D049249197C1BE4001A697B /* b2Draw.cpp */, 464 | 8D04924A197C1BE4001A697B /* b2Draw.h */, 465 | 8D04924B197C1BE4001A697B /* b2FreeList.cpp */, 466 | 8D04924C197C1BE4001A697B /* b2FreeList.h */, 467 | 8D04924D197C1BE4001A697B /* b2GrowableBuffer.h */, 468 | 8D04924E197C1BE4001A697B /* b2GrowableStack.h */, 469 | 8D04924F197C1BE4001A697B /* b2IntrusiveList.h */, 470 | 8D049250197C1BE4001A697B /* b2Math.cpp */, 471 | 8D049251197C1BE4001A697B /* b2Math.h */, 472 | 8D049252197C1BE4001A697B /* b2Settings.cpp */, 473 | 8D049253197C1BE4001A697B /* b2Settings.h */, 474 | 8D049254197C1BE4001A697B /* b2SlabAllocator.h */, 475 | 8D049255197C1BE4001A697B /* b2StackAllocator.cpp */, 476 | 8D049256197C1BE4001A697B /* b2StackAllocator.h */, 477 | 8D049257197C1BE4001A697B /* b2Stat.cpp */, 478 | 8D049258197C1BE4001A697B /* b2Stat.h */, 479 | 8D049259197C1BE4001A697B /* b2Timer.cpp */, 480 | 8D04925A197C1BE4001A697B /* b2Timer.h */, 481 | 8D04925B197C1BE4001A697B /* b2TrackedBlock.cpp */, 482 | 8D04925C197C1BE4001A697B /* b2TrackedBlock.h */, 483 | ); 484 | path = Common; 485 | sourceTree = ""; 486 | }; 487 | 8D04925D197C1BE4001A697B /* Documentation */ = { 488 | isa = PBXGroup; 489 | children = ( 490 | 8D04925E197C1BE4001A697B /* API-Ref */, 491 | 8D049260197C1BE4001A697B /* Building */, 492 | 8D04926A197C1BE4001A697B /* footer.html */, 493 | 8D04926B197C1BE4001A697B /* Programmers-Guide */, 494 | 8D04929C197C1BE4001A697B /* Readme */, 495 | 8D04929F197C1BE4001A697B /* ReleaseNotes */, 496 | 8D0492A2197C1BE4001A697B /* SWIG */, 497 | ); 498 | path = Documentation; 499 | sourceTree = ""; 500 | }; 501 | 8D04925E197C1BE4001A697B /* API-Ref */ = { 502 | isa = PBXGroup; 503 | children = ( 504 | 8D04925F197C1BE4001A697B /* doxyfile */, 505 | ); 506 | path = "API-Ref"; 507 | sourceTree = ""; 508 | }; 509 | 8D049260197C1BE4001A697B /* Building */ = { 510 | isa = PBXGroup; 511 | children = ( 512 | 8D049261197C1BE4001A697B /* Building.md */, 513 | 8D049262197C1BE4001A697B /* BuildingAndroid.md */, 514 | 8D049263197C1BE4001A697B /* BuildingiOS.md */, 515 | 8D049264197C1BE4001A697B /* BuildingJavaScript.md */, 516 | 8D049265197C1BE4001A697B /* BuildingLinux.md */, 517 | 8D049266197C1BE4001A697B /* BuildingOSX.md */, 518 | 8D049267197C1BE4001A697B /* BuildingWindows.md */, 519 | 8D049268197C1BE4001A697B /* doxyfile */, 520 | 8D049269197C1BE4001A697B /* PortingFromBox2D.md */, 521 | ); 522 | path = Building; 523 | sourceTree = ""; 524 | }; 525 | 8D04926B197C1BE4001A697B /* Programmers-Guide */ = { 526 | isa = PBXGroup; 527 | children = ( 528 | 8D04926C197C1BE4001A697B /* Chapter01_Introduction.md */, 529 | 8D04926D197C1BE4001A697B /* Chapter02_Hello_Box2D.md */, 530 | 8D04926E197C1BE4001A697B /* Chapter03_Common.md */, 531 | 8D04926F197C1BE4001A697B /* Chapter04_Collision_Module.md */, 532 | 8D049270197C1BE4001A697B /* Chapter05_Dynamics_Module.md */, 533 | 8D049271197C1BE4001A697B /* Chapter06_Bodies.md */, 534 | 8D049272197C1BE4001A697B /* Chapter07_Fixtures.md */, 535 | 8D049273197C1BE4001A697B /* Chapter08_Joints.md */, 536 | 8D049274197C1BE4001A697B /* Chapter09_Contacts.md */, 537 | 8D049275197C1BE4001A697B /* Chapter10_World.md */, 538 | 8D049276197C1BE4001A697B /* Chapter11_Particles.md */, 539 | 8D049277197C1BE4001A697B /* Chapter12_Loose_Ends.md */, 540 | 8D049278197C1BE4001A697B /* Chapter13_Debug_Drawing.md */, 541 | 8D049279197C1BE4001A697B /* Chapter14_Limitations.md */, 542 | 8D04927A197C1BE4001A697B /* Chapter15_References.md */, 543 | 8D04927B197C1BE4001A697B /* ContentLicense.md */, 544 | 8D04927C197C1BE4001A697B /* doxyfile */, 545 | 8D04927D197C1BE4001A697B /* image_0.png */, 546 | 8D04927E197C1BE4001A697B /* image_1.png */, 547 | 8D04927F197C1BE4001A697B /* image_10.png */, 548 | 8D049280197C1BE4001A697B /* image_11.png */, 549 | 8D049281197C1BE4001A697B /* image_12.png */, 550 | 8D049282197C1BE4001A697B /* image_13.png */, 551 | 8D049283197C1BE4001A697B /* image_14.png */, 552 | 8D049284197C1BE4001A697B /* image_15.png */, 553 | 8D049285197C1BE4001A697B /* image_16.png */, 554 | 8D049286197C1BE4001A697B /* image_17.png */, 555 | 8D049287197C1BE4001A697B /* image_18.gif */, 556 | 8D049288197C1BE4001A697B /* image_19.gif */, 557 | 8D049289197C1BE4001A697B /* image_2.gif */, 558 | 8D04928A197C1BE4001A697B /* image_20.gif */, 559 | 8D04928B197C1BE4001A697B /* image_21.gif */, 560 | 8D04928C197C1BE4001A697B /* image_22.gif */, 561 | 8D04928D197C1BE4001A697B /* image_23.png */, 562 | 8D04928E197C1BE4001A697B /* image_24.png */, 563 | 8D04928F197C1BE4001A697B /* image_3.gif */, 564 | 8D049290197C1BE4001A697B /* image_4.png */, 565 | 8D049291197C1BE4001A697B /* image_5.png */, 566 | 8D049292197C1BE4001A697B /* image_6.png */, 567 | 8D049293197C1BE4001A697B /* image_7.png */, 568 | 8D049294197C1BE4001A697B /* image_8.png */, 569 | 8D049295197C1BE4001A697B /* image_9.png */, 570 | 8D049296197C1BE4001A697B /* liquidfun-logo-horizontal-small.png */, 571 | 8D049297197C1BE4001A697B /* liquidfun-logo-small.png */, 572 | 8D049298197C1BE4001A697B /* liquidfun-logo-square-small.png */, 573 | 8D049299197C1BE4001A697B /* liquidfun-logo.ai */, 574 | 8D04929A197C1BE4001A697B /* liquidfun-logo.png */, 575 | 8D04929B197C1BE4001A697B /* Logo.md */, 576 | ); 577 | path = "Programmers-Guide"; 578 | sourceTree = ""; 579 | }; 580 | 8D04929C197C1BE4001A697B /* Readme */ = { 581 | isa = PBXGroup; 582 | children = ( 583 | 8D04929D197C1BE4001A697B /* doxyfile */, 584 | 8D04929E197C1BE4001A697B /* jquery.js */, 585 | ); 586 | path = Readme; 587 | sourceTree = ""; 588 | }; 589 | 8D04929F197C1BE4001A697B /* ReleaseNotes */ = { 590 | isa = PBXGroup; 591 | children = ( 592 | 8D0492A0197C1BE4001A697B /* doxyfile */, 593 | 8D0492A1197C1BE4001A697B /* jquery.js */, 594 | ); 595 | path = ReleaseNotes; 596 | sourceTree = ""; 597 | }; 598 | 8D0492A2197C1BE4001A697B /* SWIG */ = { 599 | isa = PBXGroup; 600 | children = ( 601 | 8D0492A3197C1BE4001A697B /* doxyfile */, 602 | 8D0492A4197C1BE4001A697B /* GettingStarted.md */, 603 | 8D0492A5197C1BE4001A697B /* jquery.js */, 604 | 8D0492A6197C1BE4001A697B /* liquidfunpaint.jpg */, 605 | ); 606 | path = SWIG; 607 | sourceTree = ""; 608 | }; 609 | 8D0492A7197C1BE4001A697B /* Dynamics */ = { 610 | isa = PBXGroup; 611 | children = ( 612 | 8D0492A8197C1BE4001A697B /* b2Body.cpp */, 613 | 8D0492A9197C1BE4001A697B /* b2Body.h */, 614 | 8D0492AA197C1BE4001A697B /* b2ContactManager.cpp */, 615 | 8D0492AB197C1BE4001A697B /* b2ContactManager.h */, 616 | 8D0492AC197C1BE4001A697B /* b2Fixture.cpp */, 617 | 8D0492AD197C1BE4001A697B /* b2Fixture.h */, 618 | 8D0492AE197C1BE4001A697B /* b2Island.cpp */, 619 | 8D0492AF197C1BE4001A697B /* b2Island.h */, 620 | 8D0492B0197C1BE4001A697B /* b2TimeStep.h */, 621 | 8D0492B1197C1BE4001A697B /* b2World.cpp */, 622 | 8D0492B2197C1BE4001A697B /* b2World.h */, 623 | 8D0492B3197C1BE4001A697B /* b2WorldCallbacks.cpp */, 624 | 8D0492B4197C1BE4001A697B /* b2WorldCallbacks.h */, 625 | 8D0492B5197C1BE4001A697B /* Contacts */, 626 | 8D0492C8197C1BE4001A697B /* Joints */, 627 | ); 628 | path = Dynamics; 629 | sourceTree = ""; 630 | }; 631 | 8D0492B5197C1BE4001A697B /* Contacts */ = { 632 | isa = PBXGroup; 633 | children = ( 634 | 8D0492B6197C1BE4001A697B /* b2ChainAndCircleContact.cpp */, 635 | 8D0492B7197C1BE4001A697B /* b2ChainAndCircleContact.h */, 636 | 8D0492B8197C1BE4001A697B /* b2ChainAndPolygonContact.cpp */, 637 | 8D0492B9197C1BE4001A697B /* b2ChainAndPolygonContact.h */, 638 | 8D0492BA197C1BE4001A697B /* b2CircleContact.cpp */, 639 | 8D0492BB197C1BE4001A697B /* b2CircleContact.h */, 640 | 8D0492BC197C1BE4001A697B /* b2Contact.cpp */, 641 | 8D0492BD197C1BE4001A697B /* b2Contact.h */, 642 | 8D0492BE197C1BE4001A697B /* b2ContactSolver.cpp */, 643 | 8D0492BF197C1BE4001A697B /* b2ContactSolver.h */, 644 | 8D0492C0197C1BE4001A697B /* b2EdgeAndCircleContact.cpp */, 645 | 8D0492C1197C1BE4001A697B /* b2EdgeAndCircleContact.h */, 646 | 8D0492C2197C1BE4001A697B /* b2EdgeAndPolygonContact.cpp */, 647 | 8D0492C3197C1BE4001A697B /* b2EdgeAndPolygonContact.h */, 648 | 8D0492C4197C1BE4001A697B /* b2PolygonAndCircleContact.cpp */, 649 | 8D0492C5197C1BE4001A697B /* b2PolygonAndCircleContact.h */, 650 | 8D0492C6197C1BE4001A697B /* b2PolygonContact.cpp */, 651 | 8D0492C7197C1BE4001A697B /* b2PolygonContact.h */, 652 | ); 653 | path = Contacts; 654 | sourceTree = ""; 655 | }; 656 | 8D0492C8197C1BE4001A697B /* Joints */ = { 657 | isa = PBXGroup; 658 | children = ( 659 | 8D0492C9197C1BE4001A697B /* b2DistanceJoint.cpp */, 660 | 8D0492CA197C1BE4001A697B /* b2DistanceJoint.h */, 661 | 8D0492CB197C1BE4001A697B /* b2FrictionJoint.cpp */, 662 | 8D0492CC197C1BE4001A697B /* b2FrictionJoint.h */, 663 | 8D0492CD197C1BE4001A697B /* b2GearJoint.cpp */, 664 | 8D0492CE197C1BE4001A697B /* b2GearJoint.h */, 665 | 8D0492CF197C1BE4001A697B /* b2Joint.cpp */, 666 | 8D0492D0197C1BE4001A697B /* b2Joint.h */, 667 | 8D0492D1197C1BE4001A697B /* b2MotorJoint.cpp */, 668 | 8D0492D2197C1BE4001A697B /* b2MotorJoint.h */, 669 | 8D0492D3197C1BE4001A697B /* b2MouseJoint.cpp */, 670 | 8D0492D4197C1BE4001A697B /* b2MouseJoint.h */, 671 | 8D0492D5197C1BE4001A697B /* b2PrismaticJoint.cpp */, 672 | 8D0492D6197C1BE4001A697B /* b2PrismaticJoint.h */, 673 | 8D0492D7197C1BE4001A697B /* b2PulleyJoint.cpp */, 674 | 8D0492D8197C1BE4001A697B /* b2PulleyJoint.h */, 675 | 8D0492D9197C1BE4001A697B /* b2RevoluteJoint.cpp */, 676 | 8D0492DA197C1BE4001A697B /* b2RevoluteJoint.h */, 677 | 8D0492DB197C1BE4001A697B /* b2RopeJoint.cpp */, 678 | 8D0492DC197C1BE4001A697B /* b2RopeJoint.h */, 679 | 8D0492DD197C1BE4001A697B /* b2WeldJoint.cpp */, 680 | 8D0492DE197C1BE4001A697B /* b2WeldJoint.h */, 681 | 8D0492DF197C1BE4001A697B /* b2WheelJoint.cpp */, 682 | 8D0492E0197C1BE4001A697B /* b2WheelJoint.h */, 683 | ); 684 | path = Joints; 685 | sourceTree = ""; 686 | }; 687 | 8D0492E1197C1BE4001A697B /* Particle */ = { 688 | isa = PBXGroup; 689 | children = ( 690 | 8D0492E2197C1BE4001A697B /* b2Particle.cpp */, 691 | 8D0492E3197C1BE4001A697B /* b2Particle.h */, 692 | 8D0492E4197C1BE4001A697B /* b2ParticleAssembly.cpp */, 693 | 8D0492E5197C1BE4001A697B /* b2ParticleAssembly.h */, 694 | 8D0492E7197C1BE4001A697B /* b2ParticleGroup.cpp */, 695 | 8D0492E8197C1BE4001A697B /* b2ParticleGroup.h */, 696 | 8D0492E9197C1BE4001A697B /* b2ParticleSystem.cpp */, 697 | 8D0492EA197C1BE4001A697B /* b2ParticleSystem.h */, 698 | 8D0492EB197C1BE4001A697B /* b2StackQueue.h */, 699 | 8D0492EC197C1BE4001A697B /* b2VoronoiDiagram.cpp */, 700 | 8D0492ED197C1BE4001A697B /* b2VoronoiDiagram.h */, 701 | ); 702 | path = Particle; 703 | sourceTree = ""; 704 | }; 705 | 8D0492EE197C1BE4001A697B /* Rope */ = { 706 | isa = PBXGroup; 707 | children = ( 708 | 8D0492EF197C1BE4001A697B /* b2Rope.cpp */, 709 | 8D0492F0197C1BE4001A697B /* b2Rope.h */, 710 | ); 711 | path = Rope; 712 | sourceTree = ""; 713 | }; 714 | 8D964AF9188B7B1E004DFAC5 = { 715 | isa = PBXGroup; 716 | children = ( 717 | 8D04922A197C1BE4001A697B /* Box2D */, 718 | 8D964B0D188B7B1E004DFAC5 /* LiquidFunSample */, 719 | 8D964B34188B7B1E004DFAC5 /* LiquidFunSampleTests */, 720 | 8D964B04188B7B1E004DFAC5 /* Frameworks */, 721 | 8D964B03188B7B1E004DFAC5 /* Products */, 722 | ); 723 | sourceTree = ""; 724 | }; 725 | 8D964B03188B7B1E004DFAC5 /* Products */ = { 726 | isa = PBXGroup; 727 | children = ( 728 | 8D964B02188B7B1E004DFAC5 /* LiquidFunSample.app */, 729 | 8D964B2D188B7B1E004DFAC5 /* LiquidFunSampleTests.xctest */, 730 | ); 731 | name = Products; 732 | sourceTree = ""; 733 | }; 734 | 8D964B04188B7B1E004DFAC5 /* Frameworks */ = { 735 | isa = PBXGroup; 736 | children = ( 737 | 8D964B05188B7B1E004DFAC5 /* Foundation.framework */, 738 | 8D964B07188B7B1E004DFAC5 /* CoreGraphics.framework */, 739 | 8D964B09188B7B1E004DFAC5 /* UIKit.framework */, 740 | 8D964B0B188B7B1E004DFAC5 /* SpriteKit.framework */, 741 | 8D964B2E188B7B1E004DFAC5 /* XCTest.framework */, 742 | ); 743 | name = Frameworks; 744 | sourceTree = ""; 745 | }; 746 | 8D964B0D188B7B1E004DFAC5 /* LiquidFunSample */ = { 747 | isa = PBXGroup; 748 | children = ( 749 | 8D964B16188B7B1E004DFAC5 /* LFSAppDelegate.h */, 750 | 8D964B17188B7B1E004DFAC5 /* LFSAppDelegate.m */, 751 | 8D964B19188B7B1E004DFAC5 /* Main_iPhone.storyboard */, 752 | 8D964B1C188B7B1E004DFAC5 /* Main_iPad.storyboard */, 753 | 8D964B1F188B7B1E004DFAC5 /* LFSViewController.h */, 754 | 8D964B20188B7B1E004DFAC5 /* LFSViewController.m */, 755 | 8D964B22188B7B1E004DFAC5 /* LFSMyScene.h */, 756 | 8D964B23188B7B1E004DFAC5 /* LFSMyScene.mm */, 757 | 8D663DE4188D36920061EB60 /* water.sks */, 758 | 8D663DE5188D36920061EB60 /* spark.png */, 759 | 8D964B25188B7B1E004DFAC5 /* Spaceship.png */, 760 | 8D964B27188B7B1E004DFAC5 /* Images.xcassets */, 761 | 8D964B0E188B7B1E004DFAC5 /* Supporting Files */, 762 | ); 763 | path = LiquidFunSample; 764 | sourceTree = ""; 765 | }; 766 | 8D964B0E188B7B1E004DFAC5 /* Supporting Files */ = { 767 | isa = PBXGroup; 768 | children = ( 769 | 8D964B0F188B7B1E004DFAC5 /* LiquidFunSample-Info.plist */, 770 | 8D964B10188B7B1E004DFAC5 /* InfoPlist.strings */, 771 | 8D964B13188B7B1E004DFAC5 /* main.m */, 772 | 8D964B15188B7B1E004DFAC5 /* LiquidFunSample-Prefix.pch */, 773 | ); 774 | name = "Supporting Files"; 775 | sourceTree = ""; 776 | }; 777 | 8D964B34188B7B1E004DFAC5 /* LiquidFunSampleTests */ = { 778 | isa = PBXGroup; 779 | children = ( 780 | 8D964B3A188B7B1E004DFAC5 /* LiquidFunSampleTests.m */, 781 | 8D964B35188B7B1E004DFAC5 /* Supporting Files */, 782 | ); 783 | path = LiquidFunSampleTests; 784 | sourceTree = ""; 785 | }; 786 | 8D964B35188B7B1E004DFAC5 /* Supporting Files */ = { 787 | isa = PBXGroup; 788 | children = ( 789 | 8D964B36188B7B1E004DFAC5 /* LiquidFunSampleTests-Info.plist */, 790 | 8D964B37188B7B1E004DFAC5 /* InfoPlist.strings */, 791 | ); 792 | name = "Supporting Files"; 793 | sourceTree = ""; 794 | }; 795 | /* End PBXGroup section */ 796 | 797 | /* Begin PBXNativeTarget section */ 798 | 8D964B01188B7B1E004DFAC5 /* LiquidFunSample */ = { 799 | isa = PBXNativeTarget; 800 | buildConfigurationList = 8D964B3E188B7B1E004DFAC5 /* Build configuration list for PBXNativeTarget "LiquidFunSample" */; 801 | buildPhases = ( 802 | 8D964AFE188B7B1E004DFAC5 /* Sources */, 803 | 8D964AFF188B7B1E004DFAC5 /* Frameworks */, 804 | 8D964B00188B7B1E004DFAC5 /* Resources */, 805 | ); 806 | buildRules = ( 807 | ); 808 | dependencies = ( 809 | ); 810 | name = LiquidFunSample; 811 | productName = LiquidFunSample; 812 | productReference = 8D964B02188B7B1E004DFAC5 /* LiquidFunSample.app */; 813 | productType = "com.apple.product-type.application"; 814 | }; 815 | 8D964B2C188B7B1E004DFAC5 /* LiquidFunSampleTests */ = { 816 | isa = PBXNativeTarget; 817 | buildConfigurationList = 8D964B41188B7B1E004DFAC5 /* Build configuration list for PBXNativeTarget "LiquidFunSampleTests" */; 818 | buildPhases = ( 819 | 8D964B29188B7B1E004DFAC5 /* Sources */, 820 | 8D964B2A188B7B1E004DFAC5 /* Frameworks */, 821 | 8D964B2B188B7B1E004DFAC5 /* Resources */, 822 | ); 823 | buildRules = ( 824 | ); 825 | dependencies = ( 826 | 8D964B33188B7B1E004DFAC5 /* PBXTargetDependency */, 827 | ); 828 | name = LiquidFunSampleTests; 829 | productName = LiquidFunSampleTests; 830 | productReference = 8D964B2D188B7B1E004DFAC5 /* LiquidFunSampleTests.xctest */; 831 | productType = "com.apple.product-type.bundle.unit-test"; 832 | }; 833 | /* End PBXNativeTarget section */ 834 | 835 | /* Begin PBXProject section */ 836 | 8D964AFA188B7B1E004DFAC5 /* Project object */ = { 837 | isa = PBXProject; 838 | attributes = { 839 | CLASSPREFIX = LFS; 840 | LastUpgradeCheck = 0500; 841 | ORGANIZATIONNAME = "Safx Developers"; 842 | TargetAttributes = { 843 | 8D964B2C188B7B1E004DFAC5 = { 844 | TestTargetID = 8D964B01188B7B1E004DFAC5; 845 | }; 846 | }; 847 | }; 848 | buildConfigurationList = 8D964AFD188B7B1E004DFAC5 /* Build configuration list for PBXProject "LiquidFunSample" */; 849 | compatibilityVersion = "Xcode 3.2"; 850 | developmentRegion = English; 851 | hasScannedForEncodings = 0; 852 | knownRegions = ( 853 | en, 854 | Base, 855 | ); 856 | mainGroup = 8D964AF9188B7B1E004DFAC5; 857 | productRefGroup = 8D964B03188B7B1E004DFAC5 /* Products */; 858 | projectDirPath = ""; 859 | projectRoot = ""; 860 | targets = ( 861 | 8D964B01188B7B1E004DFAC5 /* LiquidFunSample */, 862 | 8D964B2C188B7B1E004DFAC5 /* LiquidFunSampleTests */, 863 | ); 864 | }; 865 | /* End PBXProject section */ 866 | 867 | /* Begin PBXResourcesBuildPhase section */ 868 | 8D964B00188B7B1E004DFAC5 /* Resources */ = { 869 | isa = PBXResourcesBuildPhase; 870 | buildActionMask = 2147483647; 871 | files = ( 872 | 8D04933F197C1BE4001A697B /* liquidfun-logo-small.png in Resources */, 873 | 8D049335197C1BE4001A697B /* image_23.png in Resources */, 874 | 8D04933D197C1BE4001A697B /* image_9.png in Resources */, 875 | 8D049329197C1BE4001A697B /* image_12.png in Resources */, 876 | 8D04931D197C1BE4001A697B /* Chapter10_World.md in Resources */, 877 | 8D049324197C1BE4001A697B /* doxyfile in Resources */, 878 | 8D049327197C1BE4001A697B /* image_10.png in Resources */, 879 | 8D049339197C1BE4001A697B /* image_5.png in Resources */, 880 | 8D049314197C1BE4001A697B /* Chapter01_Introduction.md in Resources */, 881 | 8D049334197C1BE4001A697B /* image_22.gif in Resources */, 882 | 8D049333197C1BE4001A697B /* image_21.gif in Resources */, 883 | 8D049323197C1BE4001A697B /* ContentLicense.md in Resources */, 884 | 8D04930B197C1BE4001A697B /* BuildingAndroid.md in Resources */, 885 | 8D049348197C1BE4001A697B /* doxyfile in Resources */, 886 | 8D04930A197C1BE4001A697B /* Building.md in Resources */, 887 | 8D04932D197C1BE4001A697B /* image_16.png in Resources */, 888 | 8D049330197C1BE4001A697B /* image_19.gif in Resources */, 889 | 8D049311197C1BE4001A697B /* doxyfile in Resources */, 890 | 8D663DE7188D36920061EB60 /* spark.png in Resources */, 891 | 8D04932F197C1BE4001A697B /* image_18.gif in Resources */, 892 | 8D04931A197C1BE4001A697B /* Chapter07_Fixtures.md in Resources */, 893 | 8D049342197C1BE4001A697B /* liquidfun-logo.png in Resources */, 894 | 8D049312197C1BE4001A697B /* PortingFromBox2D.md in Resources */, 895 | 8D049310197C1BE4001A697B /* BuildingWindows.md in Resources */, 896 | 8D049317197C1BE4001A697B /* Chapter04_Collision_Module.md in Resources */, 897 | 8D04936E197C1BE4001A697B /* UseBox2D.cmake in Resources */, 898 | 8D049338197C1BE4001A697B /* image_4.png in Resources */, 899 | 8D04931F197C1BE4001A697B /* Chapter12_Loose_Ends.md in Resources */, 900 | 8D04932E197C1BE4001A697B /* image_17.png in Resources */, 901 | 8D964B26188B7B1E004DFAC5 /* Spaceship.png in Resources */, 902 | 8D964B28188B7B1E004DFAC5 /* Images.xcassets in Resources */, 903 | 8D04931C197C1BE4001A697B /* Chapter09_Contacts.md in Resources */, 904 | 8D04934B197C1BE4001A697B /* liquidfunpaint.jpg in Resources */, 905 | 8D049325197C1BE4001A697B /* image_0.png in Resources */, 906 | 8D04932A197C1BE4001A697B /* image_13.png in Resources */, 907 | 8D04931B197C1BE4001A697B /* Chapter08_Joints.md in Resources */, 908 | 8D049322197C1BE4001A697B /* Chapter15_References.md in Resources */, 909 | 8D049346197C1BE4001A697B /* doxyfile in Resources */, 910 | 8D04931E197C1BE4001A697B /* Chapter11_Particles.md in Resources */, 911 | 8D049320197C1BE4001A697B /* Chapter13_Debug_Drawing.md in Resources */, 912 | 8D04930F197C1BE4001A697B /* BuildingOSX.md in Resources */, 913 | 8D049336197C1BE4001A697B /* image_24.png in Resources */, 914 | 8D04930D197C1BE4001A697B /* BuildingJavaScript.md in Resources */, 915 | 8D049341197C1BE4001A697B /* liquidfun-logo.ai in Resources */, 916 | 8D964B1E188B7B1E004DFAC5 /* Main_iPad.storyboard in Resources */, 917 | 8D049331197C1BE4001A697B /* image_2.gif in Resources */, 918 | 8D049340197C1BE4001A697B /* liquidfun-logo-square-small.png in Resources */, 919 | 8D04933E197C1BE4001A697B /* liquidfun-logo-horizontal-small.png in Resources */, 920 | 8D04932C197C1BE4001A697B /* image_15.png in Resources */, 921 | 8D04933C197C1BE4001A697B /* image_8.png in Resources */, 922 | 8D049309197C1BE4001A697B /* doxyfile in Resources */, 923 | 8D049349197C1BE4001A697B /* GettingStarted.md in Resources */, 924 | 8D049343197C1BE4001A697B /* Logo.md in Resources */, 925 | 8D964B1B188B7B1E004DFAC5 /* Main_iPhone.storyboard in Resources */, 926 | 8D049332197C1BE4001A697B /* image_20.gif in Resources */, 927 | 8D0492F2197C1BE4001A697B /* Box2DConfig.cmake.in in Resources */, 928 | 8D04932B197C1BE4001A697B /* image_14.png in Resources */, 929 | 8D049319197C1BE4001A697B /* Chapter06_Bodies.md in Resources */, 930 | 8D04933A197C1BE4001A697B /* image_6.png in Resources */, 931 | 8D049315197C1BE4001A697B /* Chapter02_Hello_Box2D.md in Resources */, 932 | 8D049326197C1BE4001A697B /* image_1.png in Resources */, 933 | 8D049344197C1BE4001A697B /* doxyfile in Resources */, 934 | 8D04930C197C1BE4001A697B /* BuildingiOS.md in Resources */, 935 | 8D049316197C1BE4001A697B /* Chapter03_Common.md in Resources */, 936 | 8D663DE6188D36920061EB60 /* water.sks in Resources */, 937 | 8D964B12188B7B1E004DFAC5 /* InfoPlist.strings in Resources */, 938 | 8D049318197C1BE4001A697B /* Chapter05_Dynamics_Module.md in Resources */, 939 | 8D049313197C1BE4001A697B /* footer.html in Resources */, 940 | 8D049321197C1BE4001A697B /* Chapter14_Limitations.md in Resources */, 941 | 8D049337197C1BE4001A697B /* image_3.gif in Resources */, 942 | 8D04930E197C1BE4001A697B /* BuildingLinux.md in Resources */, 943 | 8D0492F3197C1BE4001A697B /* CMakeLists.txt in Resources */, 944 | 8D049328197C1BE4001A697B /* image_11.png in Resources */, 945 | 8D04933B197C1BE4001A697B /* image_7.png in Resources */, 946 | ); 947 | runOnlyForDeploymentPostprocessing = 0; 948 | }; 949 | 8D964B2B188B7B1E004DFAC5 /* Resources */ = { 950 | isa = PBXResourcesBuildPhase; 951 | buildActionMask = 2147483647; 952 | files = ( 953 | 8D964B39188B7B1E004DFAC5 /* InfoPlist.strings in Resources */, 954 | ); 955 | runOnlyForDeploymentPostprocessing = 0; 956 | }; 957 | /* End PBXResourcesBuildPhase section */ 958 | 959 | /* Begin PBXSourcesBuildPhase section */ 960 | 8D964AFE188B7B1E004DFAC5 /* Sources */ = { 961 | isa = PBXSourcesBuildPhase; 962 | buildActionMask = 2147483647; 963 | files = ( 964 | 8D0492FF197C1BE4001A697B /* b2PolygonShape.cpp in Sources */, 965 | 8D0492F5197C1BE4001A697B /* b2CollideCircle.cpp in Sources */, 966 | 8D04935A197C1BE4001A697B /* b2PolygonContact.cpp in Sources */, 967 | 8D964B24188B7B1E004DFAC5 /* LFSMyScene.mm in Sources */, 968 | 8D0492F9197C1BE4001A697B /* b2Distance.cpp in Sources */, 969 | 8D049361197C1BE4001A697B /* b2PrismaticJoint.cpp in Sources */, 970 | 8D0492FC197C1BE4001A697B /* b2ChainShape.cpp in Sources */, 971 | 8D049357197C1BE4001A697B /* b2EdgeAndCircleContact.cpp in Sources */, 972 | 8D049303197C1BE4001A697B /* b2Math.cpp in Sources */, 973 | 8D049347197C1BE4001A697B /* jquery.js in Sources */, 974 | 8D049364197C1BE4001A697B /* b2RopeJoint.cpp in Sources */, 975 | 8D0492F6197C1BE4001A697B /* b2CollideEdge.cpp in Sources */, 976 | 8D049308197C1BE4001A697B /* b2TrackedBlock.cpp in Sources */, 977 | 8D049360197C1BE4001A697B /* b2MouseJoint.cpp in Sources */, 978 | 8D049352197C1BE4001A697B /* b2ChainAndCircleContact.cpp in Sources */, 979 | 8D049367197C1BE4001A697B /* b2Particle.cpp in Sources */, 980 | 8D0492FA197C1BE4001A697B /* b2DynamicTree.cpp in Sources */, 981 | 8D049306197C1BE4001A697B /* b2Stat.cpp in Sources */, 982 | 8D0492F8197C1BE4001A697B /* b2Collision.cpp in Sources */, 983 | 8D04935B197C1BE4001A697B /* b2DistanceJoint.cpp in Sources */, 984 | 8D049368197C1BE4001A697B /* b2ParticleAssembly.cpp in Sources */, 985 | 8D04934F197C1BE4001A697B /* b2Island.cpp in Sources */, 986 | 8D04934A197C1BE4001A697B /* jquery.js in Sources */, 987 | 8D049354197C1BE4001A697B /* b2CircleContact.cpp in Sources */, 988 | 8D049353197C1BE4001A697B /* b2ChainAndPolygonContact.cpp in Sources */, 989 | 8D049350197C1BE4001A697B /* b2World.cpp in Sources */, 990 | 8D049355197C1BE4001A697B /* b2Contact.cpp in Sources */, 991 | 8D0492F4197C1BE4001A697B /* b2BroadPhase.cpp in Sources */, 992 | 8D964B21188B7B1E004DFAC5 /* LFSViewController.m in Sources */, 993 | 8D04936A197C1BE4001A697B /* b2ParticleGroup.cpp in Sources */, 994 | 8D04936C197C1BE4001A697B /* b2VoronoiDiagram.cpp in Sources */, 995 | 8D04934C197C1BE4001A697B /* b2Body.cpp in Sources */, 996 | 8D0492F7197C1BE4001A697B /* b2CollidePolygon.cpp in Sources */, 997 | 8D0492FB197C1BE4001A697B /* b2TimeOfImpact.cpp in Sources */, 998 | 8D0492FD197C1BE4001A697B /* b2CircleShape.cpp in Sources */, 999 | 8D964B18188B7B1E004DFAC5 /* LFSAppDelegate.m in Sources */, 1000 | 8D04936D197C1BE4001A697B /* b2Rope.cpp in Sources */, 1001 | 8D04934E197C1BE4001A697B /* b2Fixture.cpp in Sources */, 1002 | 8D964B14188B7B1E004DFAC5 /* main.m in Sources */, 1003 | 8D049307197C1BE4001A697B /* b2Timer.cpp in Sources */, 1004 | 8D049358197C1BE4001A697B /* b2EdgeAndPolygonContact.cpp in Sources */, 1005 | 8D049351197C1BE4001A697B /* b2WorldCallbacks.cpp in Sources */, 1006 | 8D04935C197C1BE4001A697B /* b2FrictionJoint.cpp in Sources */, 1007 | 8D049302197C1BE4001A697B /* b2FreeList.cpp in Sources */, 1008 | 8D049345197C1BE4001A697B /* jquery.js in Sources */, 1009 | 8D049304197C1BE4001A697B /* b2Settings.cpp in Sources */, 1010 | 8D049359197C1BE4001A697B /* b2PolygonAndCircleContact.cpp in Sources */, 1011 | 8D049365197C1BE4001A697B /* b2WeldJoint.cpp in Sources */, 1012 | 8D04935E197C1BE4001A697B /* b2Joint.cpp in Sources */, 1013 | 8D049305197C1BE4001A697B /* b2StackAllocator.cpp in Sources */, 1014 | 8D049301197C1BE4001A697B /* b2Draw.cpp in Sources */, 1015 | 8D04936B197C1BE4001A697B /* b2ParticleSystem.cpp in Sources */, 1016 | 8D04935F197C1BE4001A697B /* b2MotorJoint.cpp in Sources */, 1017 | 8D049300197C1BE4001A697B /* b2BlockAllocator.cpp in Sources */, 1018 | 8D049363197C1BE4001A697B /* b2RevoluteJoint.cpp in Sources */, 1019 | 8D04934D197C1BE4001A697B /* b2ContactManager.cpp in Sources */, 1020 | 8D049356197C1BE4001A697B /* b2ContactSolver.cpp in Sources */, 1021 | 8D0492FE197C1BE4001A697B /* b2EdgeShape.cpp in Sources */, 1022 | 8D04935D197C1BE4001A697B /* b2GearJoint.cpp in Sources */, 1023 | 8D049366197C1BE4001A697B /* b2WheelJoint.cpp in Sources */, 1024 | 8D049362197C1BE4001A697B /* b2PulleyJoint.cpp in Sources */, 1025 | ); 1026 | runOnlyForDeploymentPostprocessing = 0; 1027 | }; 1028 | 8D964B29188B7B1E004DFAC5 /* Sources */ = { 1029 | isa = PBXSourcesBuildPhase; 1030 | buildActionMask = 2147483647; 1031 | files = ( 1032 | 8D964B3B188B7B1E004DFAC5 /* LiquidFunSampleTests.m in Sources */, 1033 | ); 1034 | runOnlyForDeploymentPostprocessing = 0; 1035 | }; 1036 | /* End PBXSourcesBuildPhase section */ 1037 | 1038 | /* Begin PBXTargetDependency section */ 1039 | 8D964B33188B7B1E004DFAC5 /* PBXTargetDependency */ = { 1040 | isa = PBXTargetDependency; 1041 | target = 8D964B01188B7B1E004DFAC5 /* LiquidFunSample */; 1042 | targetProxy = 8D964B32188B7B1E004DFAC5 /* PBXContainerItemProxy */; 1043 | }; 1044 | /* End PBXTargetDependency section */ 1045 | 1046 | /* Begin PBXVariantGroup section */ 1047 | 8D964B10188B7B1E004DFAC5 /* InfoPlist.strings */ = { 1048 | isa = PBXVariantGroup; 1049 | children = ( 1050 | 8D964B11188B7B1E004DFAC5 /* en */, 1051 | ); 1052 | name = InfoPlist.strings; 1053 | sourceTree = ""; 1054 | }; 1055 | 8D964B19188B7B1E004DFAC5 /* Main_iPhone.storyboard */ = { 1056 | isa = PBXVariantGroup; 1057 | children = ( 1058 | 8D964B1A188B7B1E004DFAC5 /* Base */, 1059 | ); 1060 | name = Main_iPhone.storyboard; 1061 | sourceTree = ""; 1062 | }; 1063 | 8D964B1C188B7B1E004DFAC5 /* Main_iPad.storyboard */ = { 1064 | isa = PBXVariantGroup; 1065 | children = ( 1066 | 8D964B1D188B7B1E004DFAC5 /* Base */, 1067 | ); 1068 | name = Main_iPad.storyboard; 1069 | sourceTree = ""; 1070 | }; 1071 | 8D964B37188B7B1E004DFAC5 /* InfoPlist.strings */ = { 1072 | isa = PBXVariantGroup; 1073 | children = ( 1074 | 8D964B38188B7B1E004DFAC5 /* en */, 1075 | ); 1076 | name = InfoPlist.strings; 1077 | sourceTree = ""; 1078 | }; 1079 | /* End PBXVariantGroup section */ 1080 | 1081 | /* Begin XCBuildConfiguration section */ 1082 | 8D964B3C188B7B1E004DFAC5 /* Debug */ = { 1083 | isa = XCBuildConfiguration; 1084 | buildSettings = { 1085 | ALWAYS_SEARCH_USER_PATHS = NO; 1086 | ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; 1087 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 1088 | CLANG_CXX_LIBRARY = "libc++"; 1089 | CLANG_ENABLE_MODULES = YES; 1090 | CLANG_ENABLE_OBJC_ARC = YES; 1091 | CLANG_WARN_BOOL_CONVERSION = YES; 1092 | CLANG_WARN_CONSTANT_CONVERSION = YES; 1093 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 1094 | CLANG_WARN_EMPTY_BODY = YES; 1095 | CLANG_WARN_ENUM_CONVERSION = YES; 1096 | CLANG_WARN_INT_CONVERSION = YES; 1097 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 1098 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 1099 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 1100 | COPY_PHASE_STRIP = NO; 1101 | GCC_C_LANGUAGE_STANDARD = gnu99; 1102 | GCC_DYNAMIC_NO_PIC = NO; 1103 | GCC_OPTIMIZATION_LEVEL = 0; 1104 | GCC_PREPROCESSOR_DEFINITIONS = ( 1105 | "DEBUG=1", 1106 | "$(inherited)", 1107 | ); 1108 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 1109 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 1110 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 1111 | GCC_WARN_UNDECLARED_SELECTOR = YES; 1112 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 1113 | GCC_WARN_UNUSED_FUNCTION = YES; 1114 | GCC_WARN_UNUSED_VARIABLE = YES; 1115 | HEADER_SEARCH_PATHS = ( 1116 | "$(inherited)", 1117 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 1118 | "$(PROJECT_DIR)/liquidfun/liquidfun/Box2D", 1119 | ); 1120 | IPHONEOS_DEPLOYMENT_TARGET = 7.0; 1121 | ONLY_ACTIVE_ARCH = YES; 1122 | SDKROOT = iphoneos; 1123 | TARGETED_DEVICE_FAMILY = "1,2"; 1124 | }; 1125 | name = Debug; 1126 | }; 1127 | 8D964B3D188B7B1E004DFAC5 /* Release */ = { 1128 | isa = XCBuildConfiguration; 1129 | buildSettings = { 1130 | ALWAYS_SEARCH_USER_PATHS = NO; 1131 | ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; 1132 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 1133 | CLANG_CXX_LIBRARY = "libc++"; 1134 | CLANG_ENABLE_MODULES = YES; 1135 | CLANG_ENABLE_OBJC_ARC = YES; 1136 | CLANG_WARN_BOOL_CONVERSION = YES; 1137 | CLANG_WARN_CONSTANT_CONVERSION = YES; 1138 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 1139 | CLANG_WARN_EMPTY_BODY = YES; 1140 | CLANG_WARN_ENUM_CONVERSION = YES; 1141 | CLANG_WARN_INT_CONVERSION = YES; 1142 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 1143 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 1144 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 1145 | COPY_PHASE_STRIP = YES; 1146 | ENABLE_NS_ASSERTIONS = NO; 1147 | GCC_C_LANGUAGE_STANDARD = gnu99; 1148 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 1149 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 1150 | GCC_WARN_UNDECLARED_SELECTOR = YES; 1151 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 1152 | GCC_WARN_UNUSED_FUNCTION = YES; 1153 | GCC_WARN_UNUSED_VARIABLE = YES; 1154 | HEADER_SEARCH_PATHS = ( 1155 | "$(inherited)", 1156 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 1157 | "$(PROJECT_DIR)/liquidfun/liquidfun/Box2D", 1158 | ); 1159 | IPHONEOS_DEPLOYMENT_TARGET = 7.0; 1160 | SDKROOT = iphoneos; 1161 | TARGETED_DEVICE_FAMILY = "1,2"; 1162 | VALIDATE_PRODUCT = YES; 1163 | }; 1164 | name = Release; 1165 | }; 1166 | 8D964B3F188B7B1E004DFAC5 /* Debug */ = { 1167 | isa = XCBuildConfiguration; 1168 | buildSettings = { 1169 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 1170 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 1171 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 1172 | GCC_PREFIX_HEADER = "LiquidFunSample/LiquidFunSample-Prefix.pch"; 1173 | INFOPLIST_FILE = "LiquidFunSample/LiquidFunSample-Info.plist"; 1174 | PRODUCT_NAME = "$(TARGET_NAME)"; 1175 | SPRITEKIT_TEXTURE_ATLAS_OUTPUT = YES; 1176 | WRAPPER_EXTENSION = app; 1177 | }; 1178 | name = Debug; 1179 | }; 1180 | 8D964B40188B7B1E004DFAC5 /* Release */ = { 1181 | isa = XCBuildConfiguration; 1182 | buildSettings = { 1183 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 1184 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 1185 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 1186 | GCC_PREFIX_HEADER = "LiquidFunSample/LiquidFunSample-Prefix.pch"; 1187 | INFOPLIST_FILE = "LiquidFunSample/LiquidFunSample-Info.plist"; 1188 | PRODUCT_NAME = "$(TARGET_NAME)"; 1189 | SPRITEKIT_TEXTURE_ATLAS_OUTPUT = YES; 1190 | WRAPPER_EXTENSION = app; 1191 | }; 1192 | name = Release; 1193 | }; 1194 | 8D964B42188B7B1E004DFAC5 /* Debug */ = { 1195 | isa = XCBuildConfiguration; 1196 | buildSettings = { 1197 | ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; 1198 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/LiquidFunSample.app/LiquidFunSample"; 1199 | FRAMEWORK_SEARCH_PATHS = ( 1200 | "$(SDKROOT)/Developer/Library/Frameworks", 1201 | "$(inherited)", 1202 | "$(DEVELOPER_FRAMEWORKS_DIR)", 1203 | ); 1204 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 1205 | GCC_PREFIX_HEADER = "LiquidFunSample/LiquidFunSample-Prefix.pch"; 1206 | GCC_PREPROCESSOR_DEFINITIONS = ( 1207 | "DEBUG=1", 1208 | "$(inherited)", 1209 | ); 1210 | INFOPLIST_FILE = "LiquidFunSampleTests/LiquidFunSampleTests-Info.plist"; 1211 | PRODUCT_NAME = "$(TARGET_NAME)"; 1212 | TEST_HOST = "$(BUNDLE_LOADER)"; 1213 | WRAPPER_EXTENSION = xctest; 1214 | }; 1215 | name = Debug; 1216 | }; 1217 | 8D964B43188B7B1E004DFAC5 /* Release */ = { 1218 | isa = XCBuildConfiguration; 1219 | buildSettings = { 1220 | ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; 1221 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/LiquidFunSample.app/LiquidFunSample"; 1222 | FRAMEWORK_SEARCH_PATHS = ( 1223 | "$(SDKROOT)/Developer/Library/Frameworks", 1224 | "$(inherited)", 1225 | "$(DEVELOPER_FRAMEWORKS_DIR)", 1226 | ); 1227 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 1228 | GCC_PREFIX_HEADER = "LiquidFunSample/LiquidFunSample-Prefix.pch"; 1229 | INFOPLIST_FILE = "LiquidFunSampleTests/LiquidFunSampleTests-Info.plist"; 1230 | PRODUCT_NAME = "$(TARGET_NAME)"; 1231 | TEST_HOST = "$(BUNDLE_LOADER)"; 1232 | WRAPPER_EXTENSION = xctest; 1233 | }; 1234 | name = Release; 1235 | }; 1236 | /* End XCBuildConfiguration section */ 1237 | 1238 | /* Begin XCConfigurationList section */ 1239 | 8D964AFD188B7B1E004DFAC5 /* Build configuration list for PBXProject "LiquidFunSample" */ = { 1240 | isa = XCConfigurationList; 1241 | buildConfigurations = ( 1242 | 8D964B3C188B7B1E004DFAC5 /* Debug */, 1243 | 8D964B3D188B7B1E004DFAC5 /* Release */, 1244 | ); 1245 | defaultConfigurationIsVisible = 0; 1246 | defaultConfigurationName = Release; 1247 | }; 1248 | 8D964B3E188B7B1E004DFAC5 /* Build configuration list for PBXNativeTarget "LiquidFunSample" */ = { 1249 | isa = XCConfigurationList; 1250 | buildConfigurations = ( 1251 | 8D964B3F188B7B1E004DFAC5 /* Debug */, 1252 | 8D964B40188B7B1E004DFAC5 /* Release */, 1253 | ); 1254 | defaultConfigurationIsVisible = 0; 1255 | defaultConfigurationName = Release; 1256 | }; 1257 | 8D964B41188B7B1E004DFAC5 /* Build configuration list for PBXNativeTarget "LiquidFunSampleTests" */ = { 1258 | isa = XCConfigurationList; 1259 | buildConfigurations = ( 1260 | 8D964B42188B7B1E004DFAC5 /* Debug */, 1261 | 8D964B43188B7B1E004DFAC5 /* Release */, 1262 | ); 1263 | defaultConfigurationIsVisible = 0; 1264 | defaultConfigurationName = Release; 1265 | }; 1266 | /* End XCConfigurationList section */ 1267 | }; 1268 | rootObject = 8D964AFA188B7B1E004DFAC5 /* Project object */; 1269 | } 1270 | -------------------------------------------------------------------------------- /LiquidFunSample.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /LiquidFunSample/Base.lproj/Main_iPad.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /LiquidFunSample/Base.lproj/Main_iPhone.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /LiquidFunSample/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "40x40", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "60x60", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "ipad", 20 | "size" : "29x29", 21 | "scale" : "1x" 22 | }, 23 | { 24 | "idiom" : "ipad", 25 | "size" : "29x29", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "ipad", 30 | "size" : "40x40", 31 | "scale" : "1x" 32 | }, 33 | { 34 | "idiom" : "ipad", 35 | "size" : "40x40", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "ipad", 40 | "size" : "76x76", 41 | "scale" : "1x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "76x76", 46 | "scale" : "2x" 47 | } 48 | ], 49 | "info" : { 50 | "version" : 1, 51 | "author" : "xcode" 52 | } 53 | } -------------------------------------------------------------------------------- /LiquidFunSample/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "2x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "subtype" : "retina4", 14 | "extent" : "full-screen", 15 | "minimum-system-version" : "7.0", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "orientation" : "portrait", 20 | "idiom" : "ipad", 21 | "extent" : "full-screen", 22 | "minimum-system-version" : "7.0", 23 | "scale" : "1x" 24 | }, 25 | { 26 | "orientation" : "landscape", 27 | "idiom" : "ipad", 28 | "extent" : "full-screen", 29 | "minimum-system-version" : "7.0", 30 | "scale" : "1x" 31 | }, 32 | { 33 | "orientation" : "portrait", 34 | "idiom" : "ipad", 35 | "extent" : "full-screen", 36 | "minimum-system-version" : "7.0", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "orientation" : "landscape", 41 | "idiom" : "ipad", 42 | "extent" : "full-screen", 43 | "minimum-system-version" : "7.0", 44 | "scale" : "2x" 45 | } 46 | ], 47 | "info" : { 48 | "version" : 1, 49 | "author" : "xcode" 50 | } 51 | } -------------------------------------------------------------------------------- /LiquidFunSample/LFSAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // LFSAppDelegate.h 3 | // LiquidFunSample 4 | // 5 | // Created by Safx Developer on 2014/01/19. 6 | // Copyright (c) 2014年 Safx Developers. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LFSAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /LiquidFunSample/LFSAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // LFSAppDelegate.m 3 | // LiquidFunSample 4 | // 5 | // Created by Safx Developer on 2014/01/19. 6 | // Copyright (c) 2014年 Safx Developers. All rights reserved. 7 | // 8 | 9 | #import "LFSAppDelegate.h" 10 | 11 | @implementation LFSAppDelegate 12 | 13 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 14 | { 15 | // Override point for customization after application launch. 16 | return YES; 17 | } 18 | 19 | - (void)applicationWillResignActive:(UIApplication *)application 20 | { 21 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 22 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 23 | } 24 | 25 | - (void)applicationDidEnterBackground:(UIApplication *)application 26 | { 27 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 28 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 29 | } 30 | 31 | - (void)applicationWillEnterForeground:(UIApplication *)application 32 | { 33 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 34 | } 35 | 36 | - (void)applicationDidBecomeActive:(UIApplication *)application 37 | { 38 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 39 | } 40 | 41 | - (void)applicationWillTerminate:(UIApplication *)application 42 | { 43 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /LiquidFunSample/LFSMyScene.h: -------------------------------------------------------------------------------- 1 | // 2 | // LFSMyScene.h 3 | // LiquidFunSample 4 | // 5 | 6 | // Copyright (c) 2014年 Safx Developers. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LFSMyScene : SKScene 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LiquidFunSample/LFSMyScene.mm: -------------------------------------------------------------------------------- 1 | // 2 | // LFSMyScene.m 3 | // LiquidFunSample 4 | // 5 | // Created by Safx Developer on 2014/01/19. 6 | // Copyright (c) 2014年 Safx Developers. All rights reserved. 7 | // 8 | 9 | #include 10 | #import "LFSMyScene.h" 11 | 12 | const float DISPLAY_SCALE = 32.0; 13 | 14 | @interface LFSMyScene () { 15 | b2World* _world; 16 | b2ParticleSystem* _particleSystem; 17 | } 18 | @end 19 | 20 | @implementation LFSMyScene 21 | 22 | -(id)initWithSize:(CGSize)size { 23 | if (self = [super initWithSize:size]) { 24 | /* Setup your scene here */ 25 | 26 | self.backgroundColor = [SKColor colorWithRed:0.15 green:0.15 blue:0.3 alpha:1.0]; 27 | 28 | // Creating a World 29 | b2Vec2 gravity(0.0f, -10.0f); 30 | _world = new b2World(gravity); 31 | 32 | const b2ParticleSystemDef particleSystemDef; 33 | _particleSystem = _world->CreateParticleSystem(&particleSystemDef); 34 | _particleSystem->SetRadius(1.0 / 8); 35 | 36 | // Creating a ground box 37 | CGSize s = UIScreen.mainScreen.bounds.size; 38 | 39 | b2BodyDef groundBodyDef; 40 | groundBodyDef.position.Set(s.width / DISPLAY_SCALE / 2, -10.0f); 41 | 42 | b2Body* groundBody = _world->CreateBody(&groundBodyDef); 43 | 44 | b2PolygonShape groundBox; 45 | groundBox.SetAsBox(s.width / DISPLAY_SCALE / 2, 10.0f); 46 | 47 | groundBody->CreateFixture(&groundBox, 0.0f); 48 | } 49 | return self; 50 | } 51 | 52 | -(void)dealloc { 53 | delete _world; 54 | } 55 | 56 | -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 57 | /* Called when a touch begins */ 58 | 59 | auto createFixtureWithValues = [](b2Body* body, const b2Shape* shape, float density, float friction, float restitution) { 60 | b2FixtureDef def; 61 | def.shape = shape; 62 | def.density = density; 63 | def.friction = friction; 64 | def.restitution = restitution; 65 | body->CreateFixture(&def); 66 | }; 67 | 68 | auto createDynamicBody = [self](const CGPoint& pos) -> b2Body* { 69 | b2BodyDef bodyDef; 70 | bodyDef.type = b2_dynamicBody; 71 | bodyDef.position.Set(pos.x / DISPLAY_SCALE, pos.y / DISPLAY_SCALE); 72 | return _world->CreateBody(&bodyDef); 73 | }; 74 | 75 | auto addBox = [self,createDynamicBody,createFixtureWithValues](const CGPoint& pos, CGFloat width, CGFloat height) { 76 | SKSpriteNode* node = [SKSpriteNode spriteNodeWithColor:UIColor.whiteColor size:CGSizeMake(width * DISPLAY_SCALE * 2, height * DISPLAY_SCALE * 2)]; 77 | node.position = pos; 78 | [self addChild:node]; 79 | 80 | b2Body* body = createDynamicBody(pos); 81 | b2PolygonShape boxShape; 82 | boxShape.SetAsBox(width, height); 83 | createFixtureWithValues(body, &boxShape, 0.3f, 0.3f, 0.1f); 84 | body->SetUserData((__bridge void*) node); 85 | }; 86 | 87 | auto addBall = [self,createDynamicBody,createFixtureWithValues](const CGPoint& pos, float radius) { 88 | const float r = radius * DISPLAY_SCALE; 89 | 90 | SKShapeNode* node = SKShapeNode.alloc.init; 91 | UIBezierPath* ovalPath = [UIBezierPath bezierPathWithOvalInRect: CGRectMake(-r, -r, r*2, r*2)]; 92 | node.path = ovalPath.CGPath; 93 | node.fillColor = UIColor.whiteColor; 94 | node.lineWidth = 0; 95 | node.position = pos; 96 | [self addChild:node]; 97 | 98 | b2Body* body = createDynamicBody(pos); 99 | b2CircleShape ballShape; 100 | ballShape.m_radius = radius; 101 | createFixtureWithValues(body, &ballShape, 1.0f, 0.8f, 0.8f); 102 | body->SetUserData((__bridge void*) node); 103 | }; 104 | 105 | auto addWater = [self](const CGPoint& pos) { 106 | b2CircleShape ballShape; 107 | ballShape.m_radius = 32 / DISPLAY_SCALE / 2; 108 | 109 | b2ParticleGroupDef groupDef; 110 | groupDef.shape = &ballShape; 111 | groupDef.flags = b2_tensileParticle; 112 | groupDef.position.Set(pos.x / DISPLAY_SCALE, pos.y / DISPLAY_SCALE); 113 | b2ParticleGroup* group = _particleSystem->CreateParticleGroup(groupDef); 114 | 115 | int32 offset = group->GetBufferIndex(); 116 | void** userdata = _particleSystem->GetUserDataBuffer() + offset; 117 | for (size_t i = 0; i < group->GetParticleCount(); ++i) { 118 | SKEmitterNode* node = [NSKeyedUnarchiver unarchiveObjectWithFile:[NSBundle.mainBundle pathForResource:@"water" ofType:@"sks"]]; 119 | node.position = pos; 120 | [self addChild:node]; 121 | *userdata = (__bridge void*) node; 122 | ++userdata; 123 | } 124 | }; 125 | 126 | static int count = 0; 127 | 128 | for (UITouch *touch in touches) { 129 | CGPoint location = [touch locationInNode:self]; 130 | switch (count % 3) { 131 | case 0: addBox(location, 0.5f, 0.5f); break; 132 | case 1: addBall(location, 0.5); break; 133 | case 2: addWater(location); break; 134 | } 135 | } 136 | ++count; 137 | } 138 | 139 | -(void)update:(CFTimeInterval)currentTime { 140 | /* Called before each frame is rendered */ 141 | static CFTimeInterval previousTime = 0; 142 | double duration = currentTime - previousTime; 143 | previousTime = currentTime; 144 | 145 | const float32 timeStep = duration; 146 | const int32 velocityIterations = 6; 147 | const int32 positionIterations = 2; 148 | 149 | _world->Step(timeStep, velocityIterations, positionIterations); 150 | 151 | for (b2Body* body = _world->GetBodyList(); body != nullptr; body = body->GetNext()) { 152 | const b2Vec2 position = body->GetPosition(); 153 | const float32 angle = body->GetAngle(); 154 | 155 | SKNode* node = (__bridge SKNode*) body->GetUserData(); 156 | node.position = CGPointMake(position.x * DISPLAY_SCALE, position.y * DISPLAY_SCALE); 157 | node.zRotation = angle; 158 | } 159 | 160 | b2Vec2* v = _particleSystem->GetPositionBuffer(); 161 | void** userdata = _particleSystem->GetUserDataBuffer(); 162 | for (uint32 i = 0; i < _particleSystem->GetParticleCount(); ++i, ++v, ++userdata) { 163 | const bool is_remove = v->y < 0; 164 | SKNode* node = (__bridge SKNode*) *userdata; 165 | if (is_remove) { 166 | _particleSystem->SetParticleFlags(i, b2_zombieParticle); 167 | [node removeFromParent]; 168 | } else { 169 | node.position = CGPointMake(v->x * DISPLAY_SCALE, v->y * DISPLAY_SCALE); 170 | } 171 | } 172 | } 173 | 174 | @end 175 | -------------------------------------------------------------------------------- /LiquidFunSample/LFSViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LFSViewController.h 3 | // LiquidFunSample 4 | // 5 | 6 | // Copyright (c) 2014年 Safx Developers. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface LFSViewController : UIViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /LiquidFunSample/LFSViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // LFSViewController.m 3 | // LiquidFunSample 4 | // 5 | // Created by Safx Developer on 2014/01/19. 6 | // Copyright (c) 2014年 Safx Developers. All rights reserved. 7 | // 8 | 9 | #import "LFSViewController.h" 10 | #import "LFSMyScene.h" 11 | 12 | @implementation LFSViewController 13 | 14 | - (void)viewDidLoad 15 | { 16 | [super viewDidLoad]; 17 | 18 | // Configure the view. 19 | SKView * skView = (SKView *)self.view; 20 | skView.showsFPS = YES; 21 | skView.showsNodeCount = YES; 22 | 23 | // Create and configure the scene. 24 | SKScene * scene = [LFSMyScene sceneWithSize:skView.bounds.size]; 25 | scene.scaleMode = SKSceneScaleModeAspectFill; 26 | 27 | // Present the scene. 28 | [skView presentScene:scene]; 29 | } 30 | 31 | - (BOOL)shouldAutorotate 32 | { 33 | return YES; 34 | } 35 | 36 | - (NSUInteger)supportedInterfaceOrientations 37 | { 38 | if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 39 | return UIInterfaceOrientationMaskAllButUpsideDown; 40 | } else { 41 | return UIInterfaceOrientationMaskAll; 42 | } 43 | } 44 | 45 | - (void)didReceiveMemoryWarning 46 | { 47 | [super didReceiveMemoryWarning]; 48 | // Release any cached data, images, etc that aren't in use. 49 | } 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /LiquidFunSample/LiquidFunSample-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | com.blogspot.safx-dev.${PRODUCT_NAME:rfc1034identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | UIMainStoryboardFile 28 | Main_iPhone 29 | UIMainStoryboardFile~ipad 30 | Main_iPad 31 | UIRequiredDeviceCapabilities 32 | 33 | armv7 34 | 35 | UIStatusBarHidden 36 | 37 | UISupportedInterfaceOrientations 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationLandscapeLeft 41 | UIInterfaceOrientationLandscapeRight 42 | 43 | UISupportedInterfaceOrientations~ipad 44 | 45 | UIInterfaceOrientationPortrait 46 | UIInterfaceOrientationPortraitUpsideDown 47 | UIInterfaceOrientationLandscapeLeft 48 | UIInterfaceOrientationLandscapeRight 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /LiquidFunSample/LiquidFunSample-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | #import 15 | #import 16 | #endif 17 | -------------------------------------------------------------------------------- /LiquidFunSample/Spaceship.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safx/liquidfun-ios-sample/ead13b9ba301f478d548d8d151de35644f308a9a/LiquidFunSample/Spaceship.png -------------------------------------------------------------------------------- /LiquidFunSample/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /LiquidFunSample/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // LiquidFunSample 4 | // 5 | // Created by Safx Developer on 2014/01/19. 6 | // Copyright (c) 2014年 Safx Developers. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "LFSAppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([LFSAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /LiquidFunSample/spark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safx/liquidfun-ios-sample/ead13b9ba301f478d548d8d151de35644f308a9a/LiquidFunSample/spark.png -------------------------------------------------------------------------------- /LiquidFunSample/water.sks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safx/liquidfun-ios-sample/ead13b9ba301f478d548d8d151de35644f308a9a/LiquidFunSample/water.sks -------------------------------------------------------------------------------- /LiquidFunSampleTests/LiquidFunSampleTests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | com.blogspot.safx-dev.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /LiquidFunSampleTests/LiquidFunSampleTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // LiquidFunSampleTests.m 3 | // LiquidFunSampleTests 4 | // 5 | // Created by Safx Developer on 2014/01/19. 6 | // Copyright (c) 2014年 Safx Developers. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LiquidFunSampleTests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation LiquidFunSampleTests 16 | 17 | - (void)setUp 18 | { 19 | [super setUp]; 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | } 22 | 23 | - (void)tearDown 24 | { 25 | // Put teardown code here. This method is called after the invocation of each test method in the class. 26 | [super tearDown]; 27 | } 28 | 29 | - (void)testExample 30 | { 31 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /LiquidFunSampleTests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | liquidfun-ios-sample 2 | ==================== 3 | 4 | Swift version is available at https://github.com/safx/liquidfun-swift-sample 5 | 6 | ## Screenshot 7 | 8 | ![](liquidfun.gif) 9 | 10 | ## How to build 11 | 12 | $ git clone https://github.com/safx/liquidfun-ios-sample.git 13 | $ cd liquidfun-ios-sample 14 | $ git submodule update --init 15 | $ open LiquidFunSample.xcodeproj 16 | 17 | -------------------------------------------------------------------------------- /liquidfun.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safx/liquidfun-ios-sample/ead13b9ba301f478d548d8d151de35644f308a9a/liquidfun.gif --------------------------------------------------------------------------------