From 9e3c064b72694fdd76c98e083e52e87c1313cf91 Mon Sep 17 00:00:00 2001 From: Rudi Date: Sun, 5 Feb 2012 20:09:44 +0100 Subject: [PATCH 1/7] Added NibDemo target. This demo shows how a nib or rather xib file can be used in combination with isgl3d. --- Default.png | Bin 0 -> 63822 bytes isgl3d.xcodeproj/project.pbxproj | 215 +++++++++++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 22902 bytes .../xcdebugger/Breakpoints.xcbkptlist | 21 + .../xcschemes/Accelerometer.xcscheme | 84 ++++ .../xcschemes/ActionsDemo.xcscheme | 84 ++++ .../xcschemes/BillboardTest.xcscheme | 84 ++++ .../xcschemes/CameraMovement.xcscheme | 84 ++++ .../xcschemes/CameraZoomAndFocus.xcscheme | 84 ++++ .../xcschemes/CubeOverCamera.xcscheme | 84 ++++ .../xcschemes/FollowCamera.xcscheme | 84 ++++ .../xcschemes/GesturesDemo.xcscheme | 84 ++++ .../KeyframeMeshAnimationTest.xcscheme | 84 ++++ .../KeyframePODAnimationTest.xcscheme | 84 ++++ .../xcschemes/Lighting.xcscheme | 84 ++++ .../xcschemes/NibDemo.xcscheme | 84 ++++ .../xcschemes/Occlusion.xcscheme | 84 ++++ .../xcschemes/PODTest.xcscheme | 84 ++++ .../xcschemes/ParticleSystem.xcscheme | 84 ++++ .../xcschemes/PhysicsTest.xcscheme | 84 ++++ .../xcschemes/PrimitivesDemo.xcscheme | 84 ++++ .../xcschemes/ShaderMaterialDemo.xcscheme | 84 ++++ .../xcschemes/ShadowMappingTest.xcscheme | 84 ++++ .../xcschemes/SkinningTest.xcscheme | 84 ++++ .../xcschemes/SpringCamera.xcscheme | 84 ++++ .../xcschemes/TerrainMeshTest.xcscheme | 84 ++++ .../xcschemes/TerrainPhysics.xcscheme | 84 ++++ .../xcschemes/TextureOptionsTest.xcscheme | 84 ++++ .../xcschemes/Tutorial1.xcscheme | 84 ++++ .../xcschemes/Tutorial2.xcscheme | 84 ++++ .../xcschemes/Tutorial3.xcscheme | 84 ++++ .../xcschemes/Tutorial4.xcscheme | 84 ++++ .../xcschemes/Tutorial5.xcscheme | 84 ++++ .../xcschemes/TweeningDemo.xcscheme | 84 ++++ .../xcschemes/UIDemo.xcscheme | 84 ++++ .../xcschemes/ViewportTest.xcscheme | 84 ++++ .../xcschemes/build all.xcscheme | 57 +++ .../xcschemes/isgl3d.xcscheme | 57 +++ .../xcschemes/isgl3dbullet.xcscheme | 57 +++ .../xcschemes/xcschememanagement.plist | 362 ++++++++++++++++++ tests/Isgl3dAppDelegate.h | 1 + tests/Isgl3dAppDelegate.mm | 4 +- tests/ui/nib/NibDemo.h | 64 ++++ tests/ui/nib/NibDemo.m | 217 +++++++++++ tests/ui/nib/TestView.xib | 190 +++++++++ tests/ui/nib/TestViewController.h | 15 + tests/ui/nib/TestViewController.m | 111 ++++++ 48 files changed, 4065 insertions(+), 1 deletion(-) create mode 100644 Default.png create mode 100644 isgl3d.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 isgl3d.xcodeproj/project.xcworkspace/xcuserdata/rudi.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Accelerometer.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ActionsDemo.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/BillboardTest.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CameraMovement.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CameraZoomAndFocus.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CubeOverCamera.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/FollowCamera.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/GesturesDemo.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/KeyframeMeshAnimationTest.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/KeyframePODAnimationTest.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Lighting.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/NibDemo.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Occlusion.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PODTest.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ParticleSystem.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PhysicsTest.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PrimitivesDemo.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ShaderMaterialDemo.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ShadowMappingTest.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/SkinningTest.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/SpringCamera.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TerrainMeshTest.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TerrainPhysics.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TextureOptionsTest.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial1.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial2.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial3.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial4.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial5.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TweeningDemo.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/UIDemo.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ViewportTest.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/build all.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/isgl3d.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/isgl3dbullet.xcscheme create mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 tests/ui/nib/NibDemo.h create mode 100644 tests/ui/nib/NibDemo.m create mode 100644 tests/ui/nib/TestView.xib create mode 100644 tests/ui/nib/TestViewController.h create mode 100644 tests/ui/nib/TestViewController.m diff --git a/Default.png b/Default.png new file mode 100644 index 0000000000000000000000000000000000000000..4c576fc312d4ea244a8a9a9e6b5c25586a49254a GIT binary patch literal 63822 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 jkd3QKAiQ)f&lBiO;3_4;?*Q659??VTCfaDW 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 Haqxctp3TOd literal 0 HcmV?d00001 diff --git a/isgl3d.xcodeproj/project.pbxproj b/isgl3d.xcodeproj/project.pbxproj index c07e915..d0d6748 100644 --- a/isgl3d.xcodeproj/project.pbxproj +++ b/isgl3d.xcodeproj/project.pbxproj @@ -1396,6 +1396,33 @@ 8BDBA1D714CCFABE00BAEB8A /* PVRTShader.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BDBA1C714CCFABE00BAEB8A /* PVRTShader.h */; }; 8BDBA1D814CCFABE00BAEB8A /* PVRTTextureAPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BDBA1C814CCFABE00BAEB8A /* PVRTTextureAPI.cpp */; }; 8BDBA1D914CCFABE00BAEB8A /* PVRTTextureAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BDBA1C914CCFABE00BAEB8A /* PVRTTextureAPI.h */; }; + 9B36749F14DEFBFC0086B496 /* NibDemo.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B36749414DEFBFB0086B496 /* NibDemo.h */; }; + 9B3674A014DEFBFC0086B496 /* NibDemo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B36749514DEFBFC0086B496 /* NibDemo.m */; }; + 9B3674A714DEFBFC0086B496 /* TestViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B36749D14DEFBFC0086B496 /* TestViewController.h */; }; + 9B3674A814DEFBFC0086B496 /* TestViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B36749E14DEFBFC0086B496 /* TestViewController.m */; }; + 9B3674B314DF017E0086B496 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17B7228312F8C8C000F80DFD /* UIKit.framework */; }; + 9B3674B414DF017E0086B496 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; }; + 9B3674B514DF017E0086B496 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17B7227D12F8C8C000F80DFD /* CoreGraphics.framework */; }; + 9B3674C914DF026C0086B496 /* NibDemo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B36749514DEFBFC0086B496 /* NibDemo.m */; }; + 9B3674CA14DF026C0086B496 /* TestViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B36749E14DEFBFC0086B496 /* TestViewController.m */; }; + 9B3674CB14DF026C0086B496 /* Isgl3dAppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1733546F13408C38000F26F0 /* Isgl3dAppDelegate.mm */; }; + 9B3674CC14DF026C0086B496 /* Isgl3dViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 17B720BF12F8BD7100F80DFD /* Isgl3dViewController.m */; }; + 9B3674CD14DF026C0086B496 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 17B71FE112F8B8F400F80DFD /* main.m */; }; + 9B3674CE14DF02920086B496 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17B7227F12F8C8C000F80DFD /* OpenGLES.framework */; }; + 9B3674CF14DF02B90086B496 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17B7228112F8C8C000F80DFD /* QuartzCore.framework */; }; + 9B3674D014DF02C20086B496 /* libisgl3d.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D2AAC07E0554694100DB518D /* libisgl3d.a */; }; + 9BC947A114DF03ED003F1FE6 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 175CD4DB13708A2100152EFE /* Default.png */; }; + 9BC947A214DF07C7003F1FE6 /* capture.fsh in Resources */ = {isa = PBXBuildFile; fileRef = 17F7A8A012FA0EB800C7BB82 /* capture.fsh */; }; + 9BC947A314DF07C7003F1FE6 /* capture.vsh in Resources */ = {isa = PBXBuildFile; fileRef = 17F7A8A112FA0EB800C7BB82 /* capture.vsh */; }; + 9BC947A414DF07C7003F1FE6 /* generic.fsh in Resources */ = {isa = PBXBuildFile; fileRef = 17F7A8A212FA0EB800C7BB82 /* generic.fsh */; }; + 9BC947A514DF07C7003F1FE6 /* generic.vsh in Resources */ = {isa = PBXBuildFile; fileRef = 17F7A8A312FA0EB800C7BB82 /* generic.vsh */; }; + 9BC947A614DF07C7003F1FE6 /* particle.fsh in Resources */ = {isa = PBXBuildFile; fileRef = 17F7A8A412FA0EB800C7BB82 /* particle.fsh */; }; + 9BC947A714DF07C7003F1FE6 /* particle.vsh in Resources */ = {isa = PBXBuildFile; fileRef = 17F7A8A512FA0EB800C7BB82 /* particle.vsh */; }; + 9BC947A814DF07C7003F1FE6 /* shadowMap.fsh in Resources */ = {isa = PBXBuildFile; fileRef = 17F7A8A612FA0EB800C7BB82 /* shadowMap.fsh */; }; + 9BC947A914DF07C7003F1FE6 /* shadowMap.vsh in Resources */ = {isa = PBXBuildFile; fileRef = 17F7A8A712FA0EB800C7BB82 /* shadowMap.vsh */; }; + 9BC947AA14DF07C7003F1FE6 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 175CD4DC13708A2100152EFE /* Icon.png */; }; + 9BC947AB14DF07C7003F1FE6 /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 175CD4DD13708A2100152EFE /* Icon@2x.png */; }; + 9BDA587A14DF0A6E00DC1CCB /* TestView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9B36749C14DEFBFC0086B496 /* TestView.xib */; }; AACBBE4A0F95108600F1A2B1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; }; /* End PBXBuildFile section */ @@ -1834,6 +1861,13 @@ remoteGlobalIDString = D2AAC07D0554694100DB518D; remoteInfo = isgl3d; }; + 9B3674C714DF01F50086B496 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D2AAC07D0554694100DB518D; + remoteInfo = isgl3d; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ @@ -2647,6 +2681,18 @@ 8BDBA1C814CCFABE00BAEB8A /* PVRTTextureAPI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PVRTTextureAPI.cpp; sourceTree = ""; }; 8BDBA1C914CCFABE00BAEB8A /* PVRTTextureAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVRTTextureAPI.h; sourceTree = ""; }; 8BDBA1DE14CD006200BAEB8A /* isgl3d-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "isgl3d-Prefix.pch"; sourceTree = ""; }; + 9B36749414DEFBFB0086B496 /* NibDemo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NibDemo.h; sourceTree = ""; }; + 9B36749514DEFBFC0086B496 /* NibDemo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NibDemo.m; sourceTree = ""; }; + 9B36749C14DEFBFC0086B496 /* TestView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TestView.xib; sourceTree = ""; }; + 9B36749D14DEFBFC0086B496 /* TestViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestViewController.h; sourceTree = ""; }; + 9B36749E14DEFBFC0086B496 /* TestViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestViewController.m; sourceTree = ""; }; + 9B3674B114DF017E0086B496 /* NibDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NibDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 9B3674B814DF017E0086B496 /* NibDemo-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "NibDemo-Info.plist"; sourceTree = ""; }; + 9B3674BA14DF017F0086B496 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 9B3674BC14DF017F0086B496 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 9B3674BE14DF017F0086B496 /* NibDemo-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NibDemo-Prefix.pch"; sourceTree = ""; }; + 9B3674BF14DF017F0086B496 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 9B3674C014DF017F0086B496 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; AACBBE490F95108600F1A2B1 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; D2AAC07E0554694100DB518D /* libisgl3d.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libisgl3d.a; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -3073,6 +3119,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 9B3674AE14DF017E0086B496 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 9B3674D014DF02C20086B496 /* libisgl3d.a in Frameworks */, + 9B3674CF14DF02B90086B496 /* QuartzCore.framework in Frameworks */, + 9B3674CE14DF02920086B496 /* OpenGLES.framework in Frameworks */, + 9B3674B314DF017E0086B496 /* UIKit.framework in Frameworks */, + 9B3674B414DF017E0086B496 /* Foundation.framework in Frameworks */, + 9B3674B514DF017E0086B496 /* CoreGraphics.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; D2AAC07C0554694100DB518D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -3122,6 +3181,7 @@ 17A481CE13F129880098AC3F /* ShaderMaterialDemo.app */, 17D0776413F4A643003F6E46 /* ActionsDemo.app */, 17C2F0D613F6CCEE0002C7D3 /* GesturesDemo.app */, + 9B3674B114DF017E0086B496 /* NibDemo.app */, ); name = Products; sourceTree = ""; @@ -3134,6 +3194,7 @@ 17F1D88512F88AD8008D39E8 /* external */, 17F1E05A12F88FFA008D39E8 /* Resources */, 17F1E05B12F88FFA008D39E8 /* tests */, + 9B3674B614DF017E0086B496 /* NibDemo */, 0867D69AFE84028FC02AAC07 /* Frameworks */, 034768DFFF38A50411DB9C8B /* Products */, 17116C1812FF1D9500C4BC65 /* LICENSE.bullet */, @@ -3678,6 +3739,7 @@ 1731240412FD62B200861D84 /* ui */ = { isa = PBXGroup; children = ( + 9B36749314DEFBFB0086B496 /* nib */, 1731240512FD62B200861D84 /* UITestView.h */, 1731240612FD62B200861D84 /* UITestView.m */, ); @@ -4473,6 +4535,39 @@ path = OGLES2; sourceTree = ""; }; + 9B36749314DEFBFB0086B496 /* nib */ = { + isa = PBXGroup; + children = ( + 9B36749414DEFBFB0086B496 /* NibDemo.h */, + 9B36749514DEFBFC0086B496 /* NibDemo.m */, + 9B36749C14DEFBFC0086B496 /* TestView.xib */, + 9B36749D14DEFBFC0086B496 /* TestViewController.h */, + 9B36749E14DEFBFC0086B496 /* TestViewController.m */, + ); + path = nib; + sourceTree = ""; + }; + 9B3674B614DF017E0086B496 /* NibDemo */ = { + isa = PBXGroup; + children = ( + 9B3674BF14DF017F0086B496 /* AppDelegate.h */, + 9B3674C014DF017F0086B496 /* AppDelegate.m */, + 9B3674B714DF017E0086B496 /* Supporting Files */, + ); + path = NibDemo; + sourceTree = ""; + }; + 9B3674B714DF017E0086B496 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 9B3674B814DF017E0086B496 /* NibDemo-Info.plist */, + 9B3674B914DF017F0086B496 /* InfoPlist.strings */, + 9B3674BC14DF017F0086B496 /* main.m */, + 9B3674BE14DF017F0086B496 /* NibDemo-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -4481,6 +4576,8 @@ buildActionMask = 2147483647; files = ( 17EDE05D13743C0A00652E35 /* Isgl3dGLView.h in Headers */, + 9B36749F14DEFBFC0086B496 /* NibDemo.h in Headers */, + 9B3674A714DEFBFC0086B496 /* TestViewController.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5473,6 +5570,24 @@ productReference = 17F7A88412FA0D6100C7BB82 /* Lighting.app */; productType = "com.apple.product-type.application"; }; + 9B3674B014DF017E0086B496 /* NibDemo */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9B3674C214DF017F0086B496 /* Build configuration list for PBXNativeTarget "NibDemo" */; + buildPhases = ( + 9B3674AD14DF017E0086B496 /* Sources */, + 9B3674AE14DF017E0086B496 /* Frameworks */, + 9B3674AF14DF017E0086B496 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9B3674C814DF01F50086B496 /* PBXTargetDependency */, + ); + name = NibDemo; + productName = NibDemo; + productReference = 9B3674B114DF017E0086B496 /* NibDemo.app */; + productType = "com.apple.product-type.application"; + }; D2AAC07D0554694100DB518D /* isgl3d */ = { isa = PBXNativeTarget; buildConfigurationList = 1DEB921E08733DC00010E9CD /* Build configuration list for PBXNativeTarget "isgl3d" */; @@ -5507,6 +5622,7 @@ Japanese, French, German, + en, ); mainGroup = 0867D691FE84028FC02AAC07 /* isgl3d */; productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; @@ -5547,6 +5663,7 @@ 17A481AD13F129880098AC3F /* ShaderMaterialDemo */, 17D0774313F4A643003F6E46 /* ActionsDemo */, 17C2F0B513F6CCEE0002C7D3 /* GesturesDemo */, + 9B3674B014DF017E0086B496 /* NibDemo */, ); }; /* End PBXProject section */ @@ -6197,6 +6314,25 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 9B3674AF14DF017E0086B496 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9BDA587A14DF0A6E00DC1CCB /* TestView.xib in Resources */, + 9BC947A214DF07C7003F1FE6 /* capture.fsh in Resources */, + 9BC947A314DF07C7003F1FE6 /* capture.vsh in Resources */, + 9BC947A414DF07C7003F1FE6 /* generic.fsh in Resources */, + 9BC947A514DF07C7003F1FE6 /* generic.vsh in Resources */, + 9BC947A614DF07C7003F1FE6 /* particle.fsh in Resources */, + 9BC947A714DF07C7003F1FE6 /* particle.vsh in Resources */, + 9BC947A814DF07C7003F1FE6 /* shadowMap.fsh in Resources */, + 9BC947A914DF07C7003F1FE6 /* shadowMap.vsh in Resources */, + 9BC947AA14DF07C7003F1FE6 /* Icon.png in Resources */, + 9BC947AB14DF07C7003F1FE6 /* Icon@2x.png in Resources */, + 9BC947A114DF03ED003F1FE6 /* Default.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -6459,6 +6595,8 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 9B3674A014DEFBFC0086B496 /* NibDemo.m in Sources */, + 9B3674A814DEFBFC0086B496 /* TestViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6696,6 +6834,18 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 9B3674AD14DF017E0086B496 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9B3674C914DF026C0086B496 /* NibDemo.m in Sources */, + 9B3674CA14DF026C0086B496 /* TestViewController.m in Sources */, + 9B3674CB14DF026C0086B496 /* Isgl3dAppDelegate.mm in Sources */, + 9B3674CC14DF026C0086B496 /* Isgl3dViewController.m in Sources */, + 9B3674CD14DF026C0086B496 /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; D2AAC07B0554694100DB518D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -7171,8 +7321,24 @@ target = D2AAC07D0554694100DB518D /* isgl3d */; targetProxy = 17F7A87212FA0D6100C7BB82 /* PBXContainerItemProxy */; }; + 9B3674C814DF01F50086B496 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = D2AAC07D0554694100DB518D /* isgl3d */; + targetProxy = 9B3674C714DF01F50086B496 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ +/* Begin PBXVariantGroup section */ + 9B3674B914DF017F0086B496 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 9B3674BA14DF017F0086B496 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + /* Begin XCBuildConfiguration section */ 1713BAD91357979B002C3288 /* Debug */ = { isa = XCBuildConfiguration; @@ -8801,6 +8967,46 @@ }; name = Release; }; + 9B3674C314DF017F0086B496 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; + INFOPLIST_FILE = Resources/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 4.3; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 9B3674C414DF017F0086B496 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; + INFOPLIST_FILE = Resources/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 4.3; + OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -9119,6 +9325,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 9B3674C214DF017F0086B496 /* Build configuration list for PBXNativeTarget "NibDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9B3674C314DF017F0086B496 /* Debug */, + 9B3674C414DF017F0086B496 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = 0867D690FE84028FC02AAC07 /* Project object */; diff --git a/isgl3d.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/isgl3d.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..b827f98 --- /dev/null +++ b/isgl3d.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/isgl3d.xcodeproj/project.xcworkspace/xcuserdata/rudi.xcuserdatad/UserInterfaceState.xcuserstate b/isgl3d.xcodeproj/project.xcworkspace/xcuserdata/rudi.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..09207e1575789e82cfd94aad3f1f4148c42bc12a GIT binary patch literal 22902 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 Vu^Rz_Z|8G=`~p3n-hca={|{7)6w?3z literal 0 HcmV?d00001 diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist new file mode 100644 index 0000000..a4c3031 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist @@ -0,0 +1,21 @@ + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Accelerometer.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Accelerometer.xcscheme new file mode 100644 index 0000000..e44ec38 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Accelerometer.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ActionsDemo.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ActionsDemo.xcscheme new file mode 100644 index 0000000..99dd41c --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ActionsDemo.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/BillboardTest.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/BillboardTest.xcscheme new file mode 100644 index 0000000..8341641 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/BillboardTest.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CameraMovement.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CameraMovement.xcscheme new file mode 100644 index 0000000..3db334a --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CameraMovement.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CameraZoomAndFocus.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CameraZoomAndFocus.xcscheme new file mode 100644 index 0000000..cf04ba5 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CameraZoomAndFocus.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CubeOverCamera.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CubeOverCamera.xcscheme new file mode 100644 index 0000000..60e4c76 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CubeOverCamera.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/FollowCamera.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/FollowCamera.xcscheme new file mode 100644 index 0000000..c68b785 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/FollowCamera.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/GesturesDemo.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/GesturesDemo.xcscheme new file mode 100644 index 0000000..6e0c5d8 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/GesturesDemo.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/KeyframeMeshAnimationTest.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/KeyframeMeshAnimationTest.xcscheme new file mode 100644 index 0000000..5cc8c7e --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/KeyframeMeshAnimationTest.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/KeyframePODAnimationTest.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/KeyframePODAnimationTest.xcscheme new file mode 100644 index 0000000..e837576 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/KeyframePODAnimationTest.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Lighting.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Lighting.xcscheme new file mode 100644 index 0000000..1c844e8 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Lighting.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/NibDemo.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/NibDemo.xcscheme new file mode 100644 index 0000000..8fe142c --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/NibDemo.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Occlusion.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Occlusion.xcscheme new file mode 100644 index 0000000..ac716a7 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Occlusion.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PODTest.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PODTest.xcscheme new file mode 100644 index 0000000..9cc8827 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PODTest.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ParticleSystem.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ParticleSystem.xcscheme new file mode 100644 index 0000000..b1fd2c3 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ParticleSystem.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PhysicsTest.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PhysicsTest.xcscheme new file mode 100644 index 0000000..23e8262 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PhysicsTest.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PrimitivesDemo.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PrimitivesDemo.xcscheme new file mode 100644 index 0000000..363c24b --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PrimitivesDemo.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ShaderMaterialDemo.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ShaderMaterialDemo.xcscheme new file mode 100644 index 0000000..53d5c95 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ShaderMaterialDemo.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ShadowMappingTest.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ShadowMappingTest.xcscheme new file mode 100644 index 0000000..43a0697 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ShadowMappingTest.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/SkinningTest.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/SkinningTest.xcscheme new file mode 100644 index 0000000..1cd8166 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/SkinningTest.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/SpringCamera.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/SpringCamera.xcscheme new file mode 100644 index 0000000..ebb8a91 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/SpringCamera.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TerrainMeshTest.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TerrainMeshTest.xcscheme new file mode 100644 index 0000000..5eb8c6e --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TerrainMeshTest.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TerrainPhysics.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TerrainPhysics.xcscheme new file mode 100644 index 0000000..48a2cef --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TerrainPhysics.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TextureOptionsTest.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TextureOptionsTest.xcscheme new file mode 100644 index 0000000..78f087d --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TextureOptionsTest.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial1.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial1.xcscheme new file mode 100644 index 0000000..b249e9a --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial1.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial2.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial2.xcscheme new file mode 100644 index 0000000..c835344 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial2.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial3.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial3.xcscheme new file mode 100644 index 0000000..4f65d50 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial3.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial4.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial4.xcscheme new file mode 100644 index 0000000..aa0730d --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial4.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial5.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial5.xcscheme new file mode 100644 index 0000000..9377a94 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial5.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TweeningDemo.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TweeningDemo.xcscheme new file mode 100644 index 0000000..ebfa6a6 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TweeningDemo.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/UIDemo.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/UIDemo.xcscheme new file mode 100644 index 0000000..fe6ac72 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/UIDemo.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ViewportTest.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ViewportTest.xcscheme new file mode 100644 index 0000000..639cd89 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ViewportTest.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/build all.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/build all.xcscheme new file mode 100644 index 0000000..ce1d416 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/build all.xcscheme @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/isgl3d.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/isgl3d.xcscheme new file mode 100644 index 0000000..2a1724a --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/isgl3d.xcscheme @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/isgl3dbullet.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/isgl3dbullet.xcscheme new file mode 100644 index 0000000..1e2c721 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/isgl3dbullet.xcscheme @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/xcschememanagement.plist b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..71e6d82 --- /dev/null +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,362 @@ + + + + + SchemeUserState + + Accelerometer.xcscheme + + orderHint + 31 + + ActionsDemo.xcscheme + + orderHint + 21 + + BillboardTest.xcscheme + + orderHint + 10 + + CameraMovement.xcscheme + + orderHint + 26 + + CameraZoomAndFocus.xcscheme + + orderHint + 0 + + CubeOverCamera.xcscheme + + orderHint + 29 + + FollowCamera.xcscheme + + orderHint + 7 + + GesturesDemo.xcscheme + + orderHint + 1 + + KeyframeMeshAnimationTest.xcscheme + + orderHint + 18 + + KeyframePODAnimationTest.xcscheme + + orderHint + 27 + + Lighting.xcscheme + + orderHint + 17 + + NibDemo.xcscheme + + orderHint + 34 + + Occlusion.xcscheme + + orderHint + 14 + + PODTest.xcscheme + + orderHint + 25 + + ParticleSystem.xcscheme + + orderHint + 15 + + PhysicsTest.xcscheme + + orderHint + 3 + + PrimitivesDemo.xcscheme + + orderHint + 8 + + ShaderMaterialDemo.xcscheme + + orderHint + 28 + + ShadowMappingTest.xcscheme + + orderHint + 13 + + SkinningTest.xcscheme + + orderHint + 9 + + SpringCamera.xcscheme + + orderHint + 23 + + TerrainMeshTest.xcscheme + + orderHint + 16 + + TerrainPhysics.xcscheme + + orderHint + 24 + + TextureOptionsTest.xcscheme + + orderHint + 6 + + Tutorial1.xcscheme + + orderHint + 2 + + Tutorial2.xcscheme + + orderHint + 22 + + Tutorial3.xcscheme + + orderHint + 5 + + Tutorial4.xcscheme + + orderHint + 12 + + Tutorial5.xcscheme + + orderHint + 4 + + TweeningDemo.xcscheme + + orderHint + 30 + + UIDemo.xcscheme + + orderHint + 20 + + ViewportTest.xcscheme + + orderHint + 11 + + build all.xcscheme + + orderHint + 19 + + isgl3d.xcscheme + + orderHint + 32 + + isgl3dbullet.xcscheme + + orderHint + 33 + + + SuppressBuildableAutocreation + + 1713BABD1357979B002C3288 + + primary + + + 1713BAE21358AFF6002C3288 + + primary + + + 171CB84913195C65003712F4 + + primary + + + 171CB8D713196403003712F4 + + primary + + + 171CB90913196613003712F4 + + primary + + + 171CB92F131966E7003712F4 + + primary + + + 171CB951131967C1003712F4 + + primary + + + 171CB97C13196880003712F4 + + primary + + + 1731213D12FB3D6500861D84 + + primary + + + 1731217812FB562900861D84 + + primary + + + 173121B312FB58A000861D84 + + primary + + + 1731225812FC764100861D84 + + primary + + + 1731229B12FC797300861D84 + + primary + + + 173122D612FC7B9300861D84 + + primary + + + 1731232012FC7DFA00861D84 + + primary + + + 1731237412FC82BD00861D84 + + primary + + + 173123A212FC841000861D84 + + primary + + + 173123EC12FD627B00861D84 + + primary + + + 1755358C1360B4B700C593E3 + + primary + + + 1762371712F9CE06008CDB4B + + primary + + + 17801A46131A955A0045803F + + primary + + + 178A62E31368558A00BEFD2C + + primary + + + 17A3E643135A1C380022BAD8 + + primary + + + 17A481AD13F129880098AC3F + + primary + + + 17AD09D113434FD7005F5F7F + + primary + + + 17BE1746132E94E400D053BA + + primary + + + 17C2F0B513F6CCEE0002C7D3 + + primary + + + 17CDF5AE136753FA00893070 + + primary + + + 17D0774313F4A643003F6E46 + + primary + + + 17F1D86112F88A4A008D39E8 + + primary + + + 17F1E06A12F89091008D39E8 + + primary + + + 17F7A83C12FA0BB000C7BB82 + + primary + + + 17F7A87012FA0D6100C7BB82 + + primary + + + 9B3674B014DF017E0086B496 + + primary + + + D2AAC07D0554694100DB518D + + primary + + + + + diff --git a/tests/Isgl3dAppDelegate.h b/tests/Isgl3dAppDelegate.h index 21e97b4..9dbcc88 100644 --- a/tests/Isgl3dAppDelegate.h +++ b/tests/Isgl3dAppDelegate.h @@ -33,6 +33,7 @@ } @property (nonatomic, retain) UIWindow * window; +@property (nonatomic, retain) Isgl3dViewController * viewController; - (void) createViews; diff --git a/tests/Isgl3dAppDelegate.mm b/tests/Isgl3dAppDelegate.mm index 572fcba..b85cfab 100644 --- a/tests/Isgl3dAppDelegate.mm +++ b/tests/Isgl3dAppDelegate.mm @@ -23,13 +23,15 @@ * */ +#import "Isgl3d.h" #import "Isgl3dAppDelegate.h" #import "Isgl3dViewController.h" -#import "Isgl3d.h" + @implementation Isgl3dAppDelegate @synthesize window = _window; +@synthesize viewController = _viewController; - (void) applicationDidFinishLaunching:(UIApplication*)application { diff --git a/tests/ui/nib/NibDemo.h b/tests/ui/nib/NibDemo.h new file mode 100644 index 0000000..33832d6 --- /dev/null +++ b/tests/ui/nib/NibDemo.h @@ -0,0 +1,64 @@ +/* + * iSGL3D: http://isgl3d.com + * + * Copyright (c) 2010-2011 Stuart Caunt + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ + +#import "isgl3d.h" + +@class Isgl3dDemoCameraController; + +@interface UIHUDView : Isgl3dBasic2DView { +} + +@end + + +@interface NibDemo : Isgl3dBasic3DView { + +@private + Isgl3dMeshNode * _3dText; +} + +@end + + +/* + * Principal class to be instantiated in main.h. + */ +#import "Isgl3dAppDelegate.h" + +@class TestViewController; + +@interface AppDelegate : Isgl3dAppDelegate +{ +@private + TestViewController* _testViewController; +} + +@property (nonatomic, retain) TestViewController *testViewController; + + +- (void) switchViews; +@end + + diff --git a/tests/ui/nib/NibDemo.m b/tests/ui/nib/NibDemo.m new file mode 100644 index 0000000..4eb3206 --- /dev/null +++ b/tests/ui/nib/NibDemo.m @@ -0,0 +1,217 @@ +/* + * iSGL3D: http://isgl3d.com + * + * Copyright (c) 2010-2011 Stuart Caunt + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ + +#import "NibDemo.h" +#import "TestViewController.h" +#import "Isgl3dViewController.h" + + +#pragma mark UIHUDView + +@implementation UIHUDView + +- (id) init { + + if ((self = [super init])) { + Isgl3dGLUIButton * button = [Isgl3dGLUIButton buttonWithMaterial:nil]; + [self.scene addChild:button]; + [button setX:8 andY:264]; + [button addEvent3DListener:self method:@selector(buttonPressed:) forEventType:TOUCH_EVENT]; + + } + + return self; +} + +- (void) dealloc { + + [super dealloc]; +} + +- (void) buttonPressed:(Isgl3dEvent3D *)event { + NSLog(@"Button pressed"); + AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; + if (appDelegate) { + [appDelegate switchViews]; + } + + + +} + + +@end + + +#pragma mark NibDemoe + +@implementation NibDemo + +- (id) init { + + + if ((self = [super init])) { + + // Translate the camera. + [self.camera setPosition:iv3(0, 3, 7)]; + + // Create texture material with text + Isgl3dTextureMaterial * material = [Isgl3dTextureMaterial materialWithText:@"Hello World!" fontName:@"Arial" fontSize:48]; + + // Create a UV Map so that only the rendered content of the texture is shown on plane + float uMax = material.contentSize.width / material.width; + float vMax = material.contentSize.height / material.height; + Isgl3dUVMap * uvMap = [Isgl3dUVMap uvMapWithUA:0 vA:0 uB:uMax vB:0 uC:0 vC:vMax]; + + // Create a plane with corresponding UV map + Isgl3dPlane * plane = [Isgl3dPlane meshWithGeometryAndUVMap:6 height:2 nx:2 ny:2 uvMap:uvMap]; + + // Create node to render the material on the plane (double sided to see back of plane) + _3dText = [self.scene createNodeWithMesh:plane andMaterial:material]; + _3dText.doubleSided = YES; + + [self schedule:@selector(tick:)]; + } + + + return self; +} + +- (void) dealloc { + [super dealloc]; +} + + +- (void) tick:(float)dt { + // Rotate the text around the y axis + _3dText.rotationY += 2; + +} + + +@end + + + +#pragma mark AppDelegate + +/* + * Implement principal class: simply override the createViews method to return the desired demo view. + */ +@implementation AppDelegate + +@synthesize testViewController = _testViewController; + + +- (void) applicationDidFinishLaunching:(UIApplication*)application { + + // Instantiate the Isgl3dDirector and set background color + [Isgl3dDirector sharedInstance].backgroundColorString = @"333333ff"; + + // Set the device orientation + [Isgl3dDirector sharedInstance].deviceOrientation = Isgl3dOrientationLandscapeLeft; + + // Set the director to display the FPS + [Isgl3dDirector sharedInstance].displayFPS = YES; + + + + // Create the UIWindow + self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; + + + self.testViewController = [[TestViewController alloc] initWithNibName:@"TestView" bundle:nil]; + self.testViewController.wantsFullScreenLayout = YES; + // Add view to window and make visible + [self.window addSubview:self.testViewController.view]; + [self.window makeKeyAndVisible]; + + + // Run the director + [[Isgl3dDirector sharedInstance] run]; +} + + +- (void) dealloc { + [_testViewController release]; + [super dealloc]; +} + + +- (void) switchViews +{ + if (self.viewController == nil || self.viewController.view.superview == nil) { + [self.testViewController.view removeFromSuperview]; + + if (!self.viewController) + { + // Create the UIViewController + self.viewController = [[Isgl3dViewController alloc] initWithNibName:nil bundle:nil]; + self.viewController.wantsFullScreenLayout = YES; + + // Create OpenGL view (here for OpenGL ES 1.1) + Isgl3dEAGLView * glView = [Isgl3dEAGLView viewWithFrameForES1:[self.window bounds]]; + + // Set view in director + [Isgl3dDirector sharedInstance].openGLView = glView; + + // Specify auto-rotation strategy if required (for example via the UIViewController and only landscape) + [Isgl3dDirector sharedInstance].autoRotationStrategy = Isgl3dAutoRotationByUIViewController; + [Isgl3dDirector sharedInstance].allowedAutoRotations = Isgl3dAllowedAutoRotationsLandscapeOnly; + + // Enable retina display : uncomment if desired + // [[Isgl3dDirector sharedInstance] enableRetinaDisplay:YES]; + + // Enables anti aliasing (MSAA) : uncomment if desired (note may not be available on all devices and can have performance cost) + // [Isgl3dDirector sharedInstance].antiAliasingEnabled = YES; + + // Set the animation frame rate + [[Isgl3dDirector sharedInstance] setAnimationInterval:1.0/60]; + + // Add the OpenGL view to the view controller + self.viewController.view = glView; + + // Creates the view(s) and adds them to the director + [[Isgl3dDirector sharedInstance] addView:[NibDemo view]]; + + // Create UI and add to Isgl3dDirector + Isgl3dView * ui = [UIHUDView view]; + [[Isgl3dDirector sharedInstance] addView:ui]; + } + [self.window addSubview:self.viewController.view]; + [self.window bringSubviewToFront:self.viewController.view]; + + + } else + { + [self.viewController.view removeFromSuperview]; + + [self.window addSubview:self.testViewController.view]; + [self.window bringSubviewToFront:self.testViewController.view]; + } +} + + +@end diff --git a/tests/ui/nib/TestView.xib b/tests/ui/nib/TestView.xib new file mode 100644 index 0000000..71a4c67 --- /dev/null +++ b/tests/ui/nib/TestView.xib @@ -0,0 +1,190 @@ + + + + 1280 + 11C74 + 1938 + 1138.23 + 567.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 933 + + + IBProxyObject + IBUIView + IBUIButton + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 292 + {{41, 25}, {227, 37}} + + + + _NS:225 + NO + IBCocoaTouchFramework + 0 + 0 + 1 + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + {{0, 20}, {480, 300}} + + + + + 3 + MQA + + 2 + + + + + 3 + 3 + + IBCocoaTouchFramework + + + + + + + view + + + + 4 + + + + buttonPressed + + + 7 + + 5 + + + + + + 0 + + + + + + 1 + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 3 + + + + + + + TestViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 5 + + + + + TestViewController + UIViewController + + buttonPressed + id + + + buttonPressed + + buttonPressed + id + + + + IBProjectSource + ./Classes/TestViewController.h + + + + + 0 + IBCocoaTouchFramework + YES + 3 + 933 + + diff --git a/tests/ui/nib/TestViewController.h b/tests/ui/nib/TestViewController.h new file mode 100644 index 0000000..eb44c12 --- /dev/null +++ b/tests/ui/nib/TestViewController.h @@ -0,0 +1,15 @@ +// +// TestViewController.h +// Isgl3dXIBSample +// +// Created by Nemrude Verzano on 14.01.12. +// Copyright (c) 2012 __MyCompanyName__. All rights reserved. +// + +#import + +@interface TestViewController : UIViewController + +- (IBAction)buttonPressed; + +@end diff --git a/tests/ui/nib/TestViewController.m b/tests/ui/nib/TestViewController.m new file mode 100644 index 0000000..aa81102 --- /dev/null +++ b/tests/ui/nib/TestViewController.m @@ -0,0 +1,111 @@ +// +// TestViewController.m +// Isgl3dXIBSample +// +// Created by Nemrude Verzano on 14.01.12. +// Copyright (c) 2012 __MyCompanyName__. All rights reserved. +// + +#import "TestViewController.h" +#import "NibDemo.h" + +#import "isgl3d.h" + +@implementation TestViewController + +- (void)dealloc { + [super dealloc]; +} + + +- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + + isgl3dAllowedAutoRotations allowedAutoRotations = [Isgl3dDirector sharedInstance].allowedAutoRotations; + if ([Isgl3dDirector sharedInstance].autoRotationStrategy == Isgl3dAutoRotationNone) { + return NO; + + } else if ([Isgl3dDirector sharedInstance].autoRotationStrategy == Isgl3dAutoRotationByIsgl3dDirector) { + + if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft && allowedAutoRotations != Isgl3dAllowedAutoRotationsPortraitOnly) { + [Isgl3dDirector sharedInstance].deviceOrientation = Isgl3dOrientationLandscapeRight; + + } else if (interfaceOrientation == UIInterfaceOrientationLandscapeRight && allowedAutoRotations != Isgl3dAllowedAutoRotationsPortraitOnly) { + [Isgl3dDirector sharedInstance].deviceOrientation = Isgl3dOrientationLandscapeLeft; + + } else if (interfaceOrientation == UIInterfaceOrientationPortrait && allowedAutoRotations != Isgl3dAllowedAutoRotationsLandscapeOnly) { + [Isgl3dDirector sharedInstance].deviceOrientation = Isgl3dOrientationPortrait; + + } else if (interfaceOrientation == UIDeviceOrientationPortraitUpsideDown && allowedAutoRotations != Isgl3dAllowedAutoRotationsLandscapeOnly) { + [Isgl3dDirector sharedInstance].deviceOrientation = Isgl3dOrientationPortraitUpsideDown; + } + + // Return true only for portrait + return (interfaceOrientation == UIInterfaceOrientationPortrait); + + } else if ([Isgl3dDirector sharedInstance].autoRotationStrategy == Isgl3dAutoRotationByUIViewController) { + if (UIInterfaceOrientationIsLandscape(interfaceOrientation) && allowedAutoRotations != Isgl3dAllowedAutoRotationsPortraitOnly) { + return YES; + + } else if (UIInterfaceOrientationIsPortrait(interfaceOrientation) && allowedAutoRotations != Isgl3dAllowedAutoRotationsLandscapeOnly) { + return YES; + + } else { + return NO; + } + + } else { + NSLog(@"Isgl3dViewController:: ERROR : Unknown auto rotation strategy of Isgl3dDirector."); + return NO; + } +} + +- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + + if ([Isgl3dDirector sharedInstance].autoRotationStrategy == Isgl3dAutoRotationByUIViewController) { + CGRect screenRect = [[UIScreen mainScreen] bounds]; + CGRect rect = CGRectZero; + + if (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) { + rect = screenRect; + + } else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) { + rect.size = CGSizeMake( screenRect.size.height, screenRect.size.width ); + } + + UIView * glView = [Isgl3dDirector sharedInstance].openGLView; + float contentScaleFactor = [Isgl3dDirector sharedInstance].contentScaleFactor; + + if (contentScaleFactor != 1) { + rect.size.width *= contentScaleFactor; + rect.size.height *= contentScaleFactor; + } + glView.frame = rect; + } +} + +- (void) viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; +} + +- (void) viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; +} + +- (void) viewDidUnload { + [super viewDidUnload]; +} + +- (void) didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; +} + + +- (IBAction)buttonPressed +{ + AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; + if (appDelegate) { + [appDelegate switchViews]; + } +} + +@end From 61b0e62ae480156d8a3f7b34fac47e18bd4a36db Mon Sep 17 00:00:00 2001 From: Rudi Date: Mon, 6 Feb 2012 21:15:15 +0100 Subject: [PATCH 2/7] Minor adjustments to finish the nib demo. --- Default.png | Bin 63822 -> 0 bytes isgl3d.xcodeproj/project.pbxproj | 39 -------------- .../UserInterfaceState.xcuserstate | Bin 22902 -> 26016 bytes .../xcdebugger/Breakpoints.xcbkptlist | 16 ------ tests/ui/nib/NibDemo.m | 50 +++++++++--------- tests/ui/nib/TestView.xib | 30 +++++------ 6 files changed, 40 insertions(+), 95 deletions(-) delete mode 100644 Default.png diff --git a/Default.png b/Default.png deleted file mode 100644 index 4c576fc312d4ea244a8a9a9e6b5c25586a49254a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63822 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 jkd3QKAiQ)f&lBiO;3_4;?*Q659??VTCfaDW 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 Haqxctp3TOd diff --git a/isgl3d.xcodeproj/project.pbxproj b/isgl3d.xcodeproj/project.pbxproj index d0d6748..a7aea45 100644 --- a/isgl3d.xcodeproj/project.pbxproj +++ b/isgl3d.xcodeproj/project.pbxproj @@ -2687,12 +2687,6 @@ 9B36749D14DEFBFC0086B496 /* TestViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestViewController.h; sourceTree = ""; }; 9B36749E14DEFBFC0086B496 /* TestViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestViewController.m; sourceTree = ""; }; 9B3674B114DF017E0086B496 /* NibDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NibDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 9B3674B814DF017E0086B496 /* NibDemo-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "NibDemo-Info.plist"; sourceTree = ""; }; - 9B3674BA14DF017F0086B496 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - 9B3674BC14DF017F0086B496 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 9B3674BE14DF017F0086B496 /* NibDemo-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NibDemo-Prefix.pch"; sourceTree = ""; }; - 9B3674BF14DF017F0086B496 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 9B3674C014DF017F0086B496 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; AACBBE490F95108600F1A2B1 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; D2AAC07E0554694100DB518D /* libisgl3d.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libisgl3d.a; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -3194,7 +3188,6 @@ 17F1D88512F88AD8008D39E8 /* external */, 17F1E05A12F88FFA008D39E8 /* Resources */, 17F1E05B12F88FFA008D39E8 /* tests */, - 9B3674B614DF017E0086B496 /* NibDemo */, 0867D69AFE84028FC02AAC07 /* Frameworks */, 034768DFFF38A50411DB9C8B /* Products */, 17116C1812FF1D9500C4BC65 /* LICENSE.bullet */, @@ -4547,27 +4540,6 @@ path = nib; sourceTree = ""; }; - 9B3674B614DF017E0086B496 /* NibDemo */ = { - isa = PBXGroup; - children = ( - 9B3674BF14DF017F0086B496 /* AppDelegate.h */, - 9B3674C014DF017F0086B496 /* AppDelegate.m */, - 9B3674B714DF017E0086B496 /* Supporting Files */, - ); - path = NibDemo; - sourceTree = ""; - }; - 9B3674B714DF017E0086B496 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 9B3674B814DF017E0086B496 /* NibDemo-Info.plist */, - 9B3674B914DF017F0086B496 /* InfoPlist.strings */, - 9B3674BC14DF017F0086B496 /* main.m */, - 9B3674BE14DF017F0086B496 /* NibDemo-Prefix.pch */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -7328,17 +7300,6 @@ }; /* End PBXTargetDependency section */ -/* Begin PBXVariantGroup section */ - 9B3674B914DF017F0086B496 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 9B3674BA14DF017F0086B496 /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - /* Begin XCBuildConfiguration section */ 1713BAD91357979B002C3288 /* Debug */ = { isa = XCBuildConfiguration; diff --git a/isgl3d.xcodeproj/project.xcworkspace/xcuserdata/rudi.xcuserdatad/UserInterfaceState.xcuserstate b/isgl3d.xcodeproj/project.xcworkspace/xcuserdata/rudi.xcuserdatad/UserInterfaceState.xcuserstate index 09207e1575789e82cfd94aad3f1f4148c42bc12a..0eeb1a6954c9bd5130ba79fbee562ef534c96185 100644 GIT binary patch literal 26016 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 W9ip=W!EH_AKlY;Z*Z#Y1=l=r-uhX^w literal 22902 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 Vu^Rz_Z|8G=`~p3n-hca={|{7)6w?3z diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist index a4c3031..05301bc 100644 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist +++ b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist @@ -2,20 +2,4 @@ - - - - diff --git a/tests/ui/nib/NibDemo.m b/tests/ui/nib/NibDemo.m index 4eb3206..670635a 100644 --- a/tests/ui/nib/NibDemo.m +++ b/tests/ui/nib/NibDemo.m @@ -37,7 +37,7 @@ - (id) init { if ((self = [super init])) { Isgl3dGLUIButton * button = [Isgl3dGLUIButton buttonWithMaterial:nil]; [self.scene addChild:button]; - [button setX:8 andY:264]; + [button setX:8 andY:self.viewport.size.height/2]; [button addEvent3DListener:self method:@selector(buttonPressed:) forEventType:TOUCH_EVENT]; } @@ -55,10 +55,7 @@ - (void) buttonPressed:(Isgl3dEvent3D *)event { AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; if (appDelegate) { [appDelegate switchViews]; - } - - - + } } @@ -117,9 +114,6 @@ - (void) tick:(float)dt { #pragma mark AppDelegate -/* - * Implement principal class: simply override the createViews method to return the desired demo view. - */ @implementation AppDelegate @synthesize testViewController = _testViewController; @@ -137,14 +131,28 @@ - (void) applicationDidFinishLaunching:(UIApplication*)application { [Isgl3dDirector sharedInstance].displayFPS = YES; + // Specify auto-rotation strategy if required (for example via the UIViewController and only landscape) + [Isgl3dDirector sharedInstance].autoRotationStrategy = Isgl3dAutoRotationByUIViewController; + [Isgl3dDirector sharedInstance].allowedAutoRotations = Isgl3dAllowedAutoRotationsLandscapeOnly; + + // Enable retina display : uncomment if desired + // [[Isgl3dDirector sharedInstance] enableRetinaDisplay:YES]; + + // Enables anti aliasing (MSAA) : uncomment if desired (note may not be available on all devices and can have performance cost) + // [Isgl3dDirector sharedInstance].antiAliasingEnabled = YES; + + // Set the animation frame rate + [[Isgl3dDirector sharedInstance] setAnimationInterval:1.0/60]; + // Create the UIWindow self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - + + // Create the controller with the provided nib file TestView.xib self.testViewController = [[TestViewController alloc] initWithNibName:@"TestView" bundle:nil]; self.testViewController.wantsFullScreenLayout = YES; - // Add view to window and make visible + // Add the view of the controller to the window and make it visible [self.window addSubview:self.testViewController.view]; [self.window makeKeyAndVisible]; @@ -160,6 +168,13 @@ - (void) dealloc { } + + +/** A very simple method to show how interaction between a isgl3d and + * a UIViewController can be implemented. This method just switch between + * the TestViewController and the UIViewController that has the Isgl3dEAGLView instance + * assigned. + */ - (void) switchViews { if (self.viewController == nil || self.viewController.view.superview == nil) { @@ -177,23 +192,10 @@ - (void) switchViews // Set view in director [Isgl3dDirector sharedInstance].openGLView = glView; - // Specify auto-rotation strategy if required (for example via the UIViewController and only landscape) - [Isgl3dDirector sharedInstance].autoRotationStrategy = Isgl3dAutoRotationByUIViewController; - [Isgl3dDirector sharedInstance].allowedAutoRotations = Isgl3dAllowedAutoRotationsLandscapeOnly; - - // Enable retina display : uncomment if desired - // [[Isgl3dDirector sharedInstance] enableRetinaDisplay:YES]; - - // Enables anti aliasing (MSAA) : uncomment if desired (note may not be available on all devices and can have performance cost) - // [Isgl3dDirector sharedInstance].antiAliasingEnabled = YES; - - // Set the animation frame rate - [[Isgl3dDirector sharedInstance] setAnimationInterval:1.0/60]; - // Add the OpenGL view to the view controller self.viewController.view = glView; - // Creates the view(s) and adds them to the director + // Creates the view and adds them to the director [[Isgl3dDirector sharedInstance] addView:[NibDemo view]]; // Create UI and add to Isgl3dDirector diff --git a/tests/ui/nib/TestView.xib b/tests/ui/nib/TestView.xib index 71a4c67..6aa0475 100644 --- a/tests/ui/nib/TestView.xib +++ b/tests/ui/nib/TestView.xib @@ -2,10 +2,10 @@ 1280 - 11C74 + 11D50b 1938 - 1138.23 - 567.00 + 1138.32 + 568.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 933 @@ -35,13 +35,12 @@ 274 - + 292 - {{41, 25}, {227, 37}} + {{204, 131}, {72, 37}} - _NS:225 NO IBCocoaTouchFramework @@ -71,10 +70,10 @@ - {{0, 20}, {480, 300}} + {480, 300} - + 3 MQA @@ -82,7 +81,6 @@ 2 - 3 3 @@ -103,11 +101,11 @@ buttonPressed - + 7 - 5 + 7 @@ -122,7 +120,7 @@ 1 - + @@ -138,8 +136,8 @@ - 3 - + 6 + @@ -150,13 +148,13 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 5 + 7 From 5cd9582c0c05986f7e1c97cdd4635c0deff00adb Mon Sep 17 00:00:00 2001 From: Rudi Date: Tue, 7 Feb 2012 23:18:00 +0100 Subject: [PATCH 3/7] Changed GLKit prefix to GLK prefix. GLKit prefix does not work due to the reason that there is no method in the GLKit framework that starts with this prefix. --- isgl3d/math/Isgl3dMatrix.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/isgl3d/math/Isgl3dMatrix.h b/isgl3d/math/Isgl3dMatrix.h index e0ae83a..8b3955d 100644 --- a/isgl3d/math/Isgl3dMatrix.h +++ b/isgl3d/math/Isgl3dMatrix.h @@ -39,10 +39,10 @@ #pragma mark - GLKit compatible definitions # -#define Isgl3dMatrix4Transpose GLKitMatrix4Transpose -#define Isgl3dMatrix4Multiply GLKitMatrix4Multiply -#define Isgl3dMatrix4Add GLKitMatrix4Add -#define Isgl3dMatrix4Subtract GLKitMatrix4Subtract +#define Isgl3dMatrix4Transpose GLKMatrix4Transpose +#define Isgl3dMatrix4Multiply GLKMatrix4Multiply +#define Isgl3dMatrix4Add GLKMatrix4Add +#define Isgl3dMatrix4Subtract GLKMatrix4Subtract #else From eb23a288490c6e109439d7f56a00aee209964f6e Mon Sep 17 00:00:00 2001 From: Rudi Date: Tue, 7 Feb 2012 23:31:22 +0100 Subject: [PATCH 4/7] Adjustments for GCC_INPUT_FILETYPE Objective-C++ Added some casts to avoid error messages that complain about pointer types if you use Objective-C++ instead of 'According to File Type' for the GCC_INPUT_FILETYPE setting. --- isgl3d/actions/Isgl3dActionMove.m | 6 +++--- isgl3d/core/Isgl3dDirector.h | 6 ++++++ isgl3d/core/Isgl3dDirector.m | 10 ++++++---- isgl3d/core/Isgl3dGLMesh.m | 8 ++++---- isgl3d/core/Isgl3dGLTextureFactory.m | 15 ++++++++------- isgl3d/core/v2.0/Isgl3dGLTextureFactoryState2.m | 12 ++++++------ isgl3d/primitives/Isgl3dPlane.m | 8 ++++---- isgl3d/primitives/Isgl3dTerrainMesh.m | 4 ++-- isgl3d/view/Isgl3dView.m | 5 ++--- 9 files changed, 41 insertions(+), 33 deletions(-) diff --git a/isgl3d/actions/Isgl3dActionMove.m b/isgl3d/actions/Isgl3dActionMove.m index 1dd54d2..524b462 100644 --- a/isgl3d/actions/Isgl3dActionMove.m +++ b/isgl3d/actions/Isgl3dActionMove.m @@ -64,7 +64,7 @@ -(void) startWithTarget:(id)target { } - (void) update:(float)progress { - [_target setPosition:iv3(_initialPosition.x + progress * _vector.x, _initialPosition.y + progress * _vector.y, _initialPosition.z + progress * _vector.z)]; + [(Isgl3dNode*)_target setPosition:iv3(_initialPosition.x + progress * _vector.x, _initialPosition.y + progress * _vector.y, _initialPosition.z + progress * _vector.z)]; } @end @@ -102,7 +102,7 @@ -(void) startWithTarget:(id)target { } - (void) update:(float)progress { - [_target setPosition:iv3(_initialPosition.x + progress * _vector.x, _initialPosition.y + progress * _vector.y, _initialPosition.z + progress * _vector.z)]; + [(Isgl3dNode*)_target setPosition:iv3(_initialPosition.x + progress * _vector.x, _initialPosition.y + progress * _vector.y, _initialPosition.z + progress * _vector.z)]; } @end @@ -135,7 +135,7 @@ - (id) copyWithZone:(NSZone*)zone { } - (void) update:(float)progress { - [_target setPosition:_finalPosition]; + [(Isgl3dNode*)_target setPosition:_finalPosition]; } @end diff --git a/isgl3d/core/Isgl3dDirector.h b/isgl3d/core/Isgl3dDirector.h index f84e7c3..9f32939 100644 --- a/isgl3d/core/Isgl3dDirector.h +++ b/isgl3d/core/Isgl3dDirector.h @@ -255,6 +255,12 @@ @property (nonatomic) BOOL antiAliasingEnabled; +/** + * Returns the assigned views of the instance. + */ +@property (nonatomic, readonly) NSMutableArray * views; + + /** * Returns the singleton instance of the Isgl3dDirector. * @return The singleton instance of the Isgl3dDirector. diff --git a/isgl3d/core/Isgl3dDirector.m b/isgl3d/core/Isgl3dDirector.m index ce423eb..f8216a3 100644 --- a/isgl3d/core/Isgl3dDirector.m +++ b/isgl3d/core/Isgl3dDirector.m @@ -73,6 +73,8 @@ @implementation Isgl3dDirector @synthesize renderPhaseCallback = _renderPhaseCallback; @synthesize gestureManager = _gestureManager; +@synthesize views = _views; + - (id) init { NSLog(@"Isgl3dDirector::init should not be called on singleton. Instance should be accessed via sharedInstance"); @@ -226,19 +228,19 @@ - (void) setDeviceOrientation:(isgl3dOrientation)orientation { if (orientation != _deviceOrientation) { _deviceOrientation = orientation; if (_deviceOrientation == Isgl3dOrientation0) { - [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:NO]; + [[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationPortrait animated:NO]; Isgl3dLog(Info, @"Isgl3dDirector : setting device orientation to portrait"); } else if (_deviceOrientation == Isgl3dOrientation180) { - [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortraitUpsideDown animated:NO]; + [[UIApplication sharedApplication] setStatusBarOrientation: (UIInterfaceOrientation)UIDeviceOrientationPortraitUpsideDown animated:NO]; Isgl3dLog(Info, @"Isgl3dDirector : setting device orientation to portrait upside down"); } else if (_deviceOrientation == Isgl3dOrientation90CounterClockwise) { - [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:NO]; + [[UIApplication sharedApplication] setStatusBarOrientation: (UIInterfaceOrientation)UIDeviceOrientationLandscapeLeft animated:NO]; Isgl3dLog(Info, @"Isgl3dDirector : setting device orientation to landscape left"); } else if (_deviceOrientation == Isgl3dOrientation90Clockwise) { - [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:NO]; + [[UIApplication sharedApplication] setStatusBarOrientation: (UIInterfaceOrientation)UIDeviceOrientationLandscapeRight animated:NO]; Isgl3dLog(Info, @"Isgl3dDirector : setting device orientation to landscape right"); } else { diff --git a/isgl3d/core/Isgl3dGLMesh.m b/isgl3d/core/Isgl3dGLMesh.m index 91362d6..c43fb9a 100644 --- a/isgl3d/core/Isgl3dGLMesh.m +++ b/isgl3d/core/Isgl3dGLMesh.m @@ -108,7 +108,7 @@ - (void) setVertexData:(unsigned char *)vertexData withSize:(unsigned int)vertex free(_vertexData); } - _vertexData = malloc(vertexDataSize); + _vertexData = (unsigned char*)malloc(vertexDataSize); memcpy(_vertexData, vertexData, vertexDataSize); _vertexDataSize = vertexDataSize; } @@ -122,7 +122,7 @@ - (void) setIndices:(unsigned char *)indices withSize:(unsigned int)indexDataSiz free(_indices); } - _indices = malloc(indexDataSize); + _indices = (unsigned char*)malloc(indexDataSize); memcpy(_indices, indices, indexDataSize); _indexDataSize = indexDataSize; _numberOfElements = numberOfElements; @@ -160,7 +160,7 @@ - (void) setVertices:(unsigned char *)vertexData withVertexDataSize:(unsigned in free(_vertexData); } - _vertexData = malloc(vertexDataSize); + _vertexData = (unsigned char*)malloc(vertexDataSize); memcpy(_vertexData, vertexData, vertexDataSize); _vertexDataSize = vertexDataSize; @@ -169,7 +169,7 @@ - (void) setVertices:(unsigned char *)vertexData withVertexDataSize:(unsigned in free(_indices); } - _indices = malloc(indexDataSize); + _indices = (unsigned char*)malloc(indexDataSize); memcpy(_indices, indices, indexDataSize); _indexDataSize = indexDataSize; _numberOfElements = numberOfElements; diff --git a/isgl3d/core/Isgl3dGLTextureFactory.m b/isgl3d/core/Isgl3dGLTextureFactory.m index d9ef7d4..99c58b9 100644 --- a/isgl3d/core/Isgl3dGLTextureFactory.m +++ b/isgl3d/core/Isgl3dGLTextureFactory.m @@ -376,17 +376,17 @@ - (Isgl3dGLTexture *) createCubemapTextureFromFiles:(NSArray *)files precision:( void * data = malloc(stride * 6); unsigned int offset = 0; - [self copyImage:posXImage toRawData:data + offset width:width height:height]; + [self copyImage:posXImage toRawData:(char*)data + offset width:width height:height]; offset += stride; - [self copyImage:negXImage toRawData:data + offset width:width height:height]; + [self copyImage:negXImage toRawData:(char*)data + offset width:width height:height]; offset += stride; - [self copyImage:posYImage toRawData:data + offset width:width height:height]; + [self copyImage:posYImage toRawData:(char*)data + offset width:width height:height]; offset += stride; - [self copyImage:negYImage toRawData:data + offset width:width height:height]; + [self copyImage:negYImage toRawData:(char*)data + offset width:width height:height]; offset += stride; - [self copyImage:posZImage toRawData:data + offset width:width height:height]; + [self copyImage:posZImage toRawData:(char*)data + offset width:width height:height]; offset += stride; - [self copyImage:negZImage toRawData:data + offset width:width height:height]; + [self copyImage:negZImage toRawData:(char*)data + offset width:width height:height]; unsigned int textureId = [_state createCubemapTextureFromRawData:data width:width mipmap:YES precision:precision repeatX:repeatX repeatY:repeatY]; @@ -491,8 +491,9 @@ - (BOOL) imageIsHD:(NSString *)path { NSString * extension = [path pathExtension]; NSString * origFileName = [path stringByDeletingPathExtension]; + NSString * fileName = origFileName; if ([Isgl3dDirector sharedInstance].retinaDisplayEnabled) { - NSString *fileName = [origFileName stringByAppendingString:@"-hd"]; + fileName = [origFileName stringByAppendingString:@"-hd"]; NSString * filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:extension]; if (filePath && [[NSFileManager defaultManager] fileExistsAtPath:filePath]) { diff --git a/isgl3d/core/v2.0/Isgl3dGLTextureFactoryState2.m b/isgl3d/core/v2.0/Isgl3dGLTextureFactoryState2.m index 4d6f1fd..4ab7798 100644 --- a/isgl3d/core/v2.0/Isgl3dGLTextureFactoryState2.m +++ b/isgl3d/core/v2.0/Isgl3dGLTextureFactoryState2.m @@ -124,17 +124,17 @@ - (unsigned int) createCubemapTextureFromRawData:(void *)data width:(int)width m unsigned int stride = width * width * 4; unsigned int offset = 0; - glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGBA, width, width, 0, GL_RGBA, GL_UNSIGNED_BYTE, data + offset); + glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGBA, width, width, 0, GL_RGBA, GL_UNSIGNED_BYTE, (char*)data + offset); offset += stride; - glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGBA, width, width, 0, GL_RGBA, GL_UNSIGNED_BYTE, data + offset); + glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGBA, width, width, 0, GL_RGBA, GL_UNSIGNED_BYTE, (char*)data + offset); offset += stride; - glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGBA, width, width, 0, GL_RGBA, GL_UNSIGNED_BYTE, data + offset); + glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGBA, width, width, 0, GL_RGBA, GL_UNSIGNED_BYTE, (char*)data + offset); offset += stride; - glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGBA, width, width, 0, GL_RGBA, GL_UNSIGNED_BYTE, data + offset); + glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGBA, width, width, 0, GL_RGBA, GL_UNSIGNED_BYTE, (char*)data + offset); offset += stride; - glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGBA, width, width, 0, GL_RGBA, GL_UNSIGNED_BYTE, data + offset); + glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGBA, width, width, 0, GL_RGBA, GL_UNSIGNED_BYTE, (char*)data + offset); offset += stride; - glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGBA, width, width, 0, GL_RGBA, GL_UNSIGNED_BYTE, data + offset); + glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGBA, width, width, 0, GL_RGBA, GL_UNSIGNED_BYTE, (char*)data + offset); [self handleParameters:GL_TEXTURE_CUBE_MAP precision:precision repeatX:repeatX repeatY:repeatY]; diff --git a/isgl3d/primitives/Isgl3dPlane.m b/isgl3d/primitives/Isgl3dPlane.m index 2b3a319..e5110b6 100644 --- a/isgl3d/primitives/Isgl3dPlane.m +++ b/isgl3d/primitives/Isgl3dPlane.m @@ -41,7 +41,7 @@ + (id) meshWithGeometry:(float)width height:(float)height nx:(int)nx ny:(int)ny return [[[self alloc] initWithGeometry:width height:height nx:nx ny:ny] autorelease]; } -+ (id) meshWithGeometryAndUVMap:(float)width height:(float)height nx:(int)nx ny:(int)ny uvMap:(Isgl3dUVMap *)uvMap { ++ (id) meshWithGeometryAndUVMap:(float)width height:(float)height nx:(int)nx ny:(int)ny uvMap:(const Isgl3dUVMap *)uvMap { return [[[self alloc] initWithGeometryAndUVMap:width height:height nx:nx ny:ny uvMap:uvMap] autorelease]; } @@ -54,7 +54,7 @@ - (id) initWithGeometry:(float)width height:(float)height nx:(int)nx ny:(int)ny return self; } -- (id) initWithGeometryAndUVMap:(float)width height:(float)height nx:(int)nx ny:(int)ny uvMap:(Isgl3dUVMap *)uvMap { +- (id) initWithGeometryAndUVMap:(float)width height:(float)height nx:(int)nx ny:(int)ny uvMap:(const Isgl3dUVMap *)uvMap { if ((self = [super init])) { _width = width; _height = height; @@ -62,9 +62,9 @@ - (id) initWithGeometryAndUVMap:(float)width height:(float)height nx:(int)nx ny: _ny = ny; if (uvMap) { - _uvMap = [uvMap retain]; + _uvMap = (Isgl3dUVMap*)[uvMap retain]; } else { - _uvMap = [[Isgl3dUVMap standardUVMap] retain]; + _uvMap = (Isgl3dUVMap*)[[Isgl3dUVMap standardUVMap] retain]; } [self constructVBOData]; diff --git a/isgl3d/primitives/Isgl3dTerrainMesh.m b/isgl3d/primitives/Isgl3dTerrainMesh.m index b276d1f..1e42b2a 100644 --- a/isgl3d/primitives/Isgl3dTerrainMesh.m +++ b/isgl3d/primitives/Isgl3dTerrainMesh.m @@ -73,7 +73,7 @@ - (void) fillVertexData:(Isgl3dFloatArray *)vertexData andIndices:(Isgl3dUShortA // Get raw data from image unsigned int imageWidth = terrainDataImage.size.width; unsigned int imageHeight = terrainDataImage.size.height; - unsigned char * pixelData = malloc(imageWidth * imageHeight * 4); + unsigned char * pixelData = (unsigned char*)(malloc(imageWidth * imageHeight * 4)); CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef context = CGBitmapContextCreate(pixelData, imageWidth, imageHeight, 8, imageWidth * 4, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big); @@ -86,7 +86,7 @@ - (void) fillVertexData:(Isgl3dFloatArray *)vertexData andIndices:(Isgl3dUShortA unsigned int heightDataNx = _nx + 1; unsigned int heightDataNy = _nz + 1; - float * terrainHeightData = malloc(heightDataNx * heightDataNy * sizeof(float)); + float * terrainHeightData = (float*)(malloc(heightDataNx * heightDataNy * sizeof(float))); // Iterate once to get all terrain data needed in a simple array for (int j = 0; j <= _nz; j++) { diff --git a/isgl3d/view/Isgl3dView.m b/isgl3d/view/Isgl3dView.m index fa7f81d..b6d2233 100644 --- a/isgl3d/view/Isgl3dView.m +++ b/isgl3d/view/Isgl3dView.m @@ -74,8 +74,7 @@ - (id) init { self.backgroundColorString = [Isgl3dDirector sharedInstance].backgroundColorString; - _isEventCaptureEnabled = YES; - + _isEventCaptureEnabled = YES; _sceneAmbient = @"333333ff"; } @@ -137,7 +136,7 @@ - (isgl3dOrientation) viewOrientation { - (void) setViewOrientation:(isgl3dOrientation)orientation { _viewOrientation = orientation; - _deviceViewOrientation = ([Isgl3dDirector sharedInstance].deviceOrientation - _viewOrientation) % 4; + _deviceViewOrientation = (isgl3dOrientation)(([Isgl3dDirector sharedInstance].deviceOrientation - _viewOrientation) % 4); // Update camera orientation if (_camera) { From c39aae9e03786f48a9f8af321a8509b12bcae083 Mon Sep 17 00:00:00 2001 From: Rudi Date: Wed, 8 Feb 2012 21:48:41 +0100 Subject: [PATCH 5/7] Removed user data. --- .../UserInterfaceState.xcuserstate | Bin 26016 -> 57961 bytes .../xcdebugger/Breakpoints.xcbkptlist | 5 - .../xcschemes/Accelerometer.xcscheme | 84 ---- .../xcschemes/ActionsDemo.xcscheme | 84 ---- .../xcschemes/BillboardTest.xcscheme | 84 ---- .../xcschemes/CameraMovement.xcscheme | 84 ---- .../xcschemes/CameraZoomAndFocus.xcscheme | 84 ---- .../xcschemes/CubeOverCamera.xcscheme | 84 ---- .../xcschemes/FollowCamera.xcscheme | 84 ---- .../xcschemes/GesturesDemo.xcscheme | 84 ---- .../KeyframeMeshAnimationTest.xcscheme | 84 ---- .../KeyframePODAnimationTest.xcscheme | 84 ---- .../xcschemes/Lighting.xcscheme | 84 ---- .../xcschemes/NibDemo.xcscheme | 84 ---- .../xcschemes/Occlusion.xcscheme | 84 ---- .../xcschemes/PODTest.xcscheme | 84 ---- .../xcschemes/ParticleSystem.xcscheme | 84 ---- .../xcschemes/PhysicsTest.xcscheme | 84 ---- .../xcschemes/PrimitivesDemo.xcscheme | 84 ---- .../xcschemes/ShaderMaterialDemo.xcscheme | 84 ---- .../xcschemes/ShadowMappingTest.xcscheme | 84 ---- .../xcschemes/SkinningTest.xcscheme | 84 ---- .../xcschemes/SpringCamera.xcscheme | 84 ---- .../xcschemes/TerrainMeshTest.xcscheme | 84 ---- .../xcschemes/TerrainPhysics.xcscheme | 84 ---- .../xcschemes/TextureOptionsTest.xcscheme | 84 ---- .../xcschemes/Tutorial1.xcscheme | 84 ---- .../xcschemes/Tutorial2.xcscheme | 84 ---- .../xcschemes/Tutorial3.xcscheme | 84 ---- .../xcschemes/Tutorial4.xcscheme | 84 ---- .../xcschemes/Tutorial5.xcscheme | 84 ---- .../xcschemes/TweeningDemo.xcscheme | 84 ---- .../xcschemes/UIDemo.xcscheme | 84 ---- .../xcschemes/ViewportTest.xcscheme | 84 ---- .../xcschemes/build all.xcscheme | 57 --- .../xcschemes/isgl3d.xcscheme | 57 --- .../xcschemes/isgl3dbullet.xcscheme | 57 --- .../xcschemes/xcschememanagement.plist | 362 ------------------ 38 files changed, 3226 deletions(-) delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Accelerometer.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ActionsDemo.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/BillboardTest.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CameraMovement.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CameraZoomAndFocus.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CubeOverCamera.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/FollowCamera.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/GesturesDemo.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/KeyframeMeshAnimationTest.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/KeyframePODAnimationTest.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Lighting.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/NibDemo.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Occlusion.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PODTest.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ParticleSystem.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PhysicsTest.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PrimitivesDemo.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ShaderMaterialDemo.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ShadowMappingTest.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/SkinningTest.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/SpringCamera.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TerrainMeshTest.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TerrainPhysics.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TextureOptionsTest.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial1.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial2.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial3.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial4.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial5.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TweeningDemo.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/UIDemo.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ViewportTest.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/build all.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/isgl3d.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/isgl3dbullet.xcscheme delete mode 100644 isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/isgl3d.xcodeproj/project.xcworkspace/xcuserdata/rudi.xcuserdatad/UserInterfaceState.xcuserstate b/isgl3d.xcodeproj/project.xcworkspace/xcuserdata/rudi.xcuserdatad/UserInterfaceState.xcuserstate index 0eeb1a6954c9bd5130ba79fbee562ef534c96185..7d02d3f5f1bca1fef334e5e5400a2f183ac78d8c 100644 GIT binary patch literal 57961 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 literal 26016 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 W9ip=W!EH_AKlY;Z*Z#Y1=l=r-uhX^w diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist deleted file mode 100644 index 05301bc..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Accelerometer.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Accelerometer.xcscheme deleted file mode 100644 index e44ec38..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Accelerometer.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ActionsDemo.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ActionsDemo.xcscheme deleted file mode 100644 index 99dd41c..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ActionsDemo.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/BillboardTest.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/BillboardTest.xcscheme deleted file mode 100644 index 8341641..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/BillboardTest.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CameraMovement.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CameraMovement.xcscheme deleted file mode 100644 index 3db334a..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CameraMovement.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CameraZoomAndFocus.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CameraZoomAndFocus.xcscheme deleted file mode 100644 index cf04ba5..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CameraZoomAndFocus.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CubeOverCamera.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CubeOverCamera.xcscheme deleted file mode 100644 index 60e4c76..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/CubeOverCamera.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/FollowCamera.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/FollowCamera.xcscheme deleted file mode 100644 index c68b785..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/FollowCamera.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/GesturesDemo.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/GesturesDemo.xcscheme deleted file mode 100644 index 6e0c5d8..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/GesturesDemo.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/KeyframeMeshAnimationTest.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/KeyframeMeshAnimationTest.xcscheme deleted file mode 100644 index 5cc8c7e..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/KeyframeMeshAnimationTest.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/KeyframePODAnimationTest.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/KeyframePODAnimationTest.xcscheme deleted file mode 100644 index e837576..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/KeyframePODAnimationTest.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Lighting.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Lighting.xcscheme deleted file mode 100644 index 1c844e8..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Lighting.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/NibDemo.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/NibDemo.xcscheme deleted file mode 100644 index 8fe142c..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/NibDemo.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Occlusion.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Occlusion.xcscheme deleted file mode 100644 index ac716a7..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Occlusion.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PODTest.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PODTest.xcscheme deleted file mode 100644 index 9cc8827..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PODTest.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ParticleSystem.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ParticleSystem.xcscheme deleted file mode 100644 index b1fd2c3..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ParticleSystem.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PhysicsTest.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PhysicsTest.xcscheme deleted file mode 100644 index 23e8262..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PhysicsTest.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PrimitivesDemo.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PrimitivesDemo.xcscheme deleted file mode 100644 index 363c24b..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/PrimitivesDemo.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ShaderMaterialDemo.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ShaderMaterialDemo.xcscheme deleted file mode 100644 index 53d5c95..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ShaderMaterialDemo.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ShadowMappingTest.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ShadowMappingTest.xcscheme deleted file mode 100644 index 43a0697..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ShadowMappingTest.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/SkinningTest.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/SkinningTest.xcscheme deleted file mode 100644 index 1cd8166..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/SkinningTest.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/SpringCamera.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/SpringCamera.xcscheme deleted file mode 100644 index ebb8a91..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/SpringCamera.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TerrainMeshTest.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TerrainMeshTest.xcscheme deleted file mode 100644 index 5eb8c6e..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TerrainMeshTest.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TerrainPhysics.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TerrainPhysics.xcscheme deleted file mode 100644 index 48a2cef..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TerrainPhysics.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TextureOptionsTest.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TextureOptionsTest.xcscheme deleted file mode 100644 index 78f087d..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TextureOptionsTest.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial1.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial1.xcscheme deleted file mode 100644 index b249e9a..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial1.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial2.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial2.xcscheme deleted file mode 100644 index c835344..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial2.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial3.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial3.xcscheme deleted file mode 100644 index 4f65d50..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial3.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial4.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial4.xcscheme deleted file mode 100644 index aa0730d..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial4.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial5.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial5.xcscheme deleted file mode 100644 index 9377a94..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/Tutorial5.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TweeningDemo.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TweeningDemo.xcscheme deleted file mode 100644 index ebfa6a6..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/TweeningDemo.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/UIDemo.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/UIDemo.xcscheme deleted file mode 100644 index fe6ac72..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/UIDemo.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ViewportTest.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ViewportTest.xcscheme deleted file mode 100644 index 639cd89..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/ViewportTest.xcscheme +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/build all.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/build all.xcscheme deleted file mode 100644 index ce1d416..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/build all.xcscheme +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/isgl3d.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/isgl3d.xcscheme deleted file mode 100644 index 2a1724a..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/isgl3d.xcscheme +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/isgl3dbullet.xcscheme b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/isgl3dbullet.xcscheme deleted file mode 100644 index 1e2c721..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/isgl3dbullet.xcscheme +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/xcschememanagement.plist b/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 71e6d82..0000000 --- a/isgl3d.xcodeproj/xcuserdata/rudi.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,362 +0,0 @@ - - - - - SchemeUserState - - Accelerometer.xcscheme - - orderHint - 31 - - ActionsDemo.xcscheme - - orderHint - 21 - - BillboardTest.xcscheme - - orderHint - 10 - - CameraMovement.xcscheme - - orderHint - 26 - - CameraZoomAndFocus.xcscheme - - orderHint - 0 - - CubeOverCamera.xcscheme - - orderHint - 29 - - FollowCamera.xcscheme - - orderHint - 7 - - GesturesDemo.xcscheme - - orderHint - 1 - - KeyframeMeshAnimationTest.xcscheme - - orderHint - 18 - - KeyframePODAnimationTest.xcscheme - - orderHint - 27 - - Lighting.xcscheme - - orderHint - 17 - - NibDemo.xcscheme - - orderHint - 34 - - Occlusion.xcscheme - - orderHint - 14 - - PODTest.xcscheme - - orderHint - 25 - - ParticleSystem.xcscheme - - orderHint - 15 - - PhysicsTest.xcscheme - - orderHint - 3 - - PrimitivesDemo.xcscheme - - orderHint - 8 - - ShaderMaterialDemo.xcscheme - - orderHint - 28 - - ShadowMappingTest.xcscheme - - orderHint - 13 - - SkinningTest.xcscheme - - orderHint - 9 - - SpringCamera.xcscheme - - orderHint - 23 - - TerrainMeshTest.xcscheme - - orderHint - 16 - - TerrainPhysics.xcscheme - - orderHint - 24 - - TextureOptionsTest.xcscheme - - orderHint - 6 - - Tutorial1.xcscheme - - orderHint - 2 - - Tutorial2.xcscheme - - orderHint - 22 - - Tutorial3.xcscheme - - orderHint - 5 - - Tutorial4.xcscheme - - orderHint - 12 - - Tutorial5.xcscheme - - orderHint - 4 - - TweeningDemo.xcscheme - - orderHint - 30 - - UIDemo.xcscheme - - orderHint - 20 - - ViewportTest.xcscheme - - orderHint - 11 - - build all.xcscheme - - orderHint - 19 - - isgl3d.xcscheme - - orderHint - 32 - - isgl3dbullet.xcscheme - - orderHint - 33 - - - SuppressBuildableAutocreation - - 1713BABD1357979B002C3288 - - primary - - - 1713BAE21358AFF6002C3288 - - primary - - - 171CB84913195C65003712F4 - - primary - - - 171CB8D713196403003712F4 - - primary - - - 171CB90913196613003712F4 - - primary - - - 171CB92F131966E7003712F4 - - primary - - - 171CB951131967C1003712F4 - - primary - - - 171CB97C13196880003712F4 - - primary - - - 1731213D12FB3D6500861D84 - - primary - - - 1731217812FB562900861D84 - - primary - - - 173121B312FB58A000861D84 - - primary - - - 1731225812FC764100861D84 - - primary - - - 1731229B12FC797300861D84 - - primary - - - 173122D612FC7B9300861D84 - - primary - - - 1731232012FC7DFA00861D84 - - primary - - - 1731237412FC82BD00861D84 - - primary - - - 173123A212FC841000861D84 - - primary - - - 173123EC12FD627B00861D84 - - primary - - - 1755358C1360B4B700C593E3 - - primary - - - 1762371712F9CE06008CDB4B - - primary - - - 17801A46131A955A0045803F - - primary - - - 178A62E31368558A00BEFD2C - - primary - - - 17A3E643135A1C380022BAD8 - - primary - - - 17A481AD13F129880098AC3F - - primary - - - 17AD09D113434FD7005F5F7F - - primary - - - 17BE1746132E94E400D053BA - - primary - - - 17C2F0B513F6CCEE0002C7D3 - - primary - - - 17CDF5AE136753FA00893070 - - primary - - - 17D0774313F4A643003F6E46 - - primary - - - 17F1D86112F88A4A008D39E8 - - primary - - - 17F1E06A12F89091008D39E8 - - primary - - - 17F7A83C12FA0BB000C7BB82 - - primary - - - 17F7A87012FA0D6100C7BB82 - - primary - - - 9B3674B014DF017E0086B496 - - primary - - - D2AAC07D0554694100DB518D - - primary - - - - - From 958ec2dbec20a92bd74e52f11d7dc9592e7804a7 Mon Sep 17 00:00:00 2001 From: Rudi Date: Tue, 14 Feb 2012 21:44:44 +0100 Subject: [PATCH 6/7] Fixed issue #8 according to submeshes. --- isgl3d/importers/Isgl3dPODImporter.h | 24 ++++++++++ isgl3d/importers/Isgl3dPODImporter.mm | 69 +++++++++++++++++++++++++-- 2 files changed, 90 insertions(+), 3 deletions(-) diff --git a/isgl3d/importers/Isgl3dPODImporter.h b/isgl3d/importers/Isgl3dPODImporter.h index d690912..9e7dcf8 100644 --- a/isgl3d/importers/Isgl3dPODImporter.h +++ b/isgl3d/importers/Isgl3dPODImporter.h @@ -88,6 +88,8 @@ class CPVRTModelPOD; BOOL _meshesAndMaterialsComplete; } +@property CPVRTModelPOD* podScene; + /** * Allocates and initialises (autorelease) importer with the POD data file path. * @param path The path to the POD data file. @@ -129,6 +131,10 @@ class CPVRTModelPOD; */ - (unsigned int) numberOfFrames; +- (unsigned int) numberOfTextures; + +- (NSString*) nameOfTexture:(unsigned int)index; + /** * Builds all the scene objects in the POD file without adding them to the scene. The POD objects can * then be used afterwards by retreiving them with the necessary accessors. @@ -178,6 +184,16 @@ class CPVRTModelPOD; */ - (Isgl3dMeshNode *) meshNodeWithName:(NSString *)nodeName; + +/** + * Returns the Isgl3dMeshNode corresponding to a node index (as defined in the POD file). + * All node indices can be obtained via printPODInfo. + * @param meshNodeIndex the index of the node as defined in the POD file. + * @return The Corresponding Isgl3dMeshNode. + */ +- (Isgl3dMeshNode *) meshNodeAtIndex:(unsigned int)meshNodeIndex; + + /** * Returns the Isgl3dMaterial corresponding to a material name (as defined in the POD file). * All material names can be obtained via printPODInfo. @@ -186,6 +202,14 @@ class CPVRTModelPOD; */ - (Isgl3dMaterial *) materialWithName:(NSString *)materialName; + +/** + * Get the indexed material. + * @param materialIndex the index of the material. + * @return The Corresponding Isgl3dMaterial. + */ +- (Isgl3dMaterial *) materialWithIndex:(unsigned int)materialIndex; + /** * Returns the Isgl3dCamera corresponding to a camera index (as defined in the POD file). * All camera indices can be obtained via printPODInfo. diff --git a/isgl3d/importers/Isgl3dPODImporter.mm b/isgl3d/importers/Isgl3dPODImporter.mm index 11d5621..2875d9f 100644 --- a/isgl3d/importers/Isgl3dPODImporter.mm +++ b/isgl3d/importers/Isgl3dPODImporter.mm @@ -39,6 +39,8 @@ #import "isgl3dArray.h" #import "Isgl3dLog.h" +#include "PVRTTrans.h" + @interface Isgl3dPODImporter (PrivateMethods) /** @@ -65,6 +67,8 @@ - (void) buildMeshNodes; @implementation Isgl3dPODImporter +@synthesize podScene = _podScene; + + (id) podImporterWithFile:(NSString *)path { return [[[self alloc] initWithFile:path] autorelease]; } @@ -216,6 +220,21 @@ - (unsigned int) numberOfFrames { return _podScene->nNumFrame; } +- (unsigned int) numberOfTextures +{ + return _podScene->nNumTexture; +} + +- (NSString*) nameOfTexture:(unsigned int)index +{ + if (index >= _podScene->nNumTexture) { + return nil; + } + + SPODTexture & textureInfo = _podScene->pTexture[index]; + NSString * textureFileName = [NSString stringWithUTF8String:textureInfo.pszName]; + return textureFileName; +} - (void) addMeshesToScene:(Isgl3dNode *)scene { @@ -229,7 +248,7 @@ - (void) addMeshesToScene:(Isgl3dNode *)scene { for (int i = 0; i < _podScene->nNumMeshNode; i++) { SPODNode & nodeInfo = _podScene->pNode[i]; - NSLog(@"Adding node: %s:", nodeInfo.pszName); + NSLog(@"Adding node: %s: parent index:%i", nodeInfo.pszName, nodeInfo.nIdxParent); Isgl3dNode * node = [_meshNodes objectForKey:[NSString stringWithUTF8String:nodeInfo.pszName]]; @@ -240,6 +259,8 @@ - (void) addMeshesToScene:(Isgl3dNode *)scene { if (parent) { [parent addChild:node]; + if([scene.children containsObject:parent] == FALSE) + [scene addChild:parent]; } else { } } @@ -259,6 +280,15 @@ - (Isgl3dMeshNode *) meshNodeWithName:(NSString *)nodeName { return node; } +- (Isgl3dMeshNode *) meshNodeAtIndex:(unsigned int)meshNodeIndex { + if (meshNodeIndex >= _podScene->nNumMeshNode) { + NSLog(@"Mesh at index %i not available: POD scene contains %i meshses", meshNodeIndex, _podScene->nNumMeshNode); + return nil; + } + return [_meshNodes.allValues objectAtIndex:meshNodeIndex]; +} + + - (Isgl3dGLMesh *) meshFromNodeWithName:(NSString *)nodeName { Isgl3dMeshNode * meshNode = [self meshNodeWithName:nodeName]; if (meshNode) { @@ -298,6 +328,22 @@ - (Isgl3dMaterial *) materialWithName:(NSString *)materialName { } + +- (Isgl3dMaterial *) materialWithIndex:(unsigned int)materialIndex { + Isgl3dMaterial * material; + + if (materialIndex < [_materials count]) { + material = [_materials objectAtIndex:materialIndex]; + } + + if (!material) { + NSLog(@"Unable to find material with index: %i", materialIndex); + } + return material; +} + + + - (Isgl3dCamera *) cameraAtIndex:(unsigned int)cameraIndex { if (!_buildSceneObjectsComplete) { [self buildSceneObjects]; @@ -427,7 +473,15 @@ - (void) buildMeshesAndMaterials { if (!materialInfo.pszEffectFile) { if (materialInfo.nIdxTexDiffuse >= 0 && materialInfo.nIdxTexDiffuse < [_textures count]) { NSString * textureFileName = [_textures objectAtIndex:materialInfo.nIdxTexDiffuse]; - + + NSFileManager *fileManager = [[NSFileManager alloc] init]; + BOOL exists = [fileManager fileExistsAtPath:textureFileName]; + if (!exists) { + textureFileName = [NSString stringWithFormat:@"%@/%@", [_podPath stringByDeletingLastPathComponent], textureFileName]; + exists = [fileManager fileExistsAtPath:textureFileName]; + } + [fileManager release]; + material = [Isgl3dTextureMaterial materialWithTextureFile:textureFileName shininess:0 precision:Isgl3dTexturePrecisionMedium repeatX:YES repeatY:YES]; } else { @@ -556,6 +610,7 @@ - (void) buildMeshNodes { [_meshNodes setObject:node forKey:[NSString stringWithUTF8String:meshNodeInfo.pszName]]; } + NSLog(@"IndexedNode mesh node: %s: index:%i", meshNodeInfo.pszName, meshNodeInfo.nIdx); [_indexedNodes setObject:node forKey:[NSNumber numberWithInteger:meshNodeInfo.nIdx]]; // Add node alpha @@ -574,12 +629,20 @@ - (void) buildMeshNodes { // Create all non-mesh nodes for (int i = 0; i < _podScene->nNumNode; i++) { SPODNode & nodeInfo = _podScene->pNode[i]; + NSLog(@"Node mesh node: %s: index:%i parent:%i", nodeInfo.pszName, nodeInfo.nIdx, nodeInfo.nIdxParent); // See if node already exists as a mesh node, otherise create simple node if (![_indexedNodes objectForKey:[NSNumber numberWithInteger:nodeInfo.nIdx]]) { Isgl3dNode * node = [Isgl3dNode node]; + NSLog(@"Additional IndexedNode mesh node: %s: index:%i", nodeInfo.pszName, nodeInfo.nIdx); [_indexedNodes setObject:node forKey:[NSNumber numberWithInteger:nodeInfo.nIdx]]; - } + } else if (nodeInfo.nIdxParent != -1 && ![_indexedNodes objectForKey:[NSNumber numberWithInteger:nodeInfo.nIdxParent]]) + { + // add the parent node + Isgl3dNode * node = [Isgl3dNode node]; + NSLog(@"Additional IndexedNode mesh node: %s: parent index:%i", nodeInfo.pszName, nodeInfo.nIdxParent); + [_indexedNodes setObject:node forKey:[NSNumber numberWithInteger:nodeInfo.nIdxParent]]; + } } From 776a029028007aa518fb140fa51ae929f60e0977 Mon Sep 17 00:00:00 2001 From: Rudi Date: Sun, 26 Feb 2012 19:59:52 +0100 Subject: [PATCH 7/7] Updated Nib demo. --- tests/ui/nib/NibDemo.h | 2 +- tests/ui/nib/NibDemo.m | 23 +++++++---------------- tests/ui/nib/TestView.xib | 11 ++++++----- 3 files changed, 14 insertions(+), 22 deletions(-) diff --git a/tests/ui/nib/NibDemo.h b/tests/ui/nib/NibDemo.h index 33832d6..4ed1a4a 100644 --- a/tests/ui/nib/NibDemo.h +++ b/tests/ui/nib/NibDemo.h @@ -36,7 +36,7 @@ @interface NibDemo : Isgl3dBasic3DView { @private - Isgl3dMeshNode * _3dText; + Isgl3dMultiMaterialCube * _cube; } @end diff --git a/tests/ui/nib/NibDemo.m b/tests/ui/nib/NibDemo.m index 670635a..ed13c26 100644 --- a/tests/ui/nib/NibDemo.m +++ b/tests/ui/nib/NibDemo.m @@ -74,20 +74,11 @@ - (id) init { // Translate the camera. [self.camera setPosition:iv3(0, 3, 7)]; - // Create texture material with text - Isgl3dTextureMaterial * material = [Isgl3dTextureMaterial materialWithText:@"Hello World!" fontName:@"Arial" fontSize:48]; - - // Create a UV Map so that only the rendered content of the texture is shown on plane - float uMax = material.contentSize.width / material.width; - float vMax = material.contentSize.height / material.height; - Isgl3dUVMap * uvMap = [Isgl3dUVMap uvMapWithUA:0 vA:0 uB:uMax vB:0 uC:0 vC:vMax]; - - // Create a plane with corresponding UV map - Isgl3dPlane * plane = [Isgl3dPlane meshWithGeometryAndUVMap:6 height:2 nx:2 ny:2 uvMap:uvMap]; - - // Create node to render the material on the plane (double sided to see back of plane) - _3dText = [self.scene createNodeWithMesh:plane andMaterial:material]; - _3dText.doubleSided = YES; + // Create an Isgl3dMultiMaterialCube with random colors. + _cube = [Isgl3dMultiMaterialCube cubeWithDimensionsAndRandomColors:3 height:3 depth:3 nSegmentWidth:2 nSegmentHeight:2 nSegmentDepth:2]; + + // Add the cube to the scene. + [self.scene addChild:_cube]; [self schedule:@selector(tick:)]; } @@ -102,8 +93,8 @@ - (void) dealloc { - (void) tick:(float)dt { - // Rotate the text around the y axis - _3dText.rotationY += 2; + // Rotate the cube around the y axis + _cube.rotationY += 1; } diff --git a/tests/ui/nib/TestView.xib b/tests/ui/nib/TestView.xib index 6aa0475..96454f5 100644 --- a/tests/ui/nib/TestView.xib +++ b/tests/ui/nib/TestView.xib @@ -41,6 +41,7 @@ {{204, 131}, {72, 37}} + _NS:225 NO IBCocoaTouchFramework @@ -53,7 +54,7 @@ 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA 3 @@ -61,11 +62,11 @@ 2 - 15 + 2 Helvetica-Bold - 15 + 18 16 @@ -73,7 +74,7 @@ {480, 300} - + 3 MQA @@ -154,7 +155,7 @@ - 7 + 8