diff --git a/Xcode/OpenSceneGraph/OpenSceneGraph.xcodeproj/project.pbxproj b/Xcode/OpenSceneGraph/OpenSceneGraph.xcodeproj/project.pbxproj index 2a7d3d48a..8c4e0e79d 100644 --- a/Xcode/OpenSceneGraph/OpenSceneGraph.xcodeproj/project.pbxproj +++ b/Xcode/OpenSceneGraph/OpenSceneGraph.xcodeproj/project.pbxproj @@ -270,7 +270,6 @@ 0007B99606C1929E00C884E1 /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; 0007B99706C1929E00C884E1 /* osgText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11876A05D75C2700EB53E5 /* osgText.framework */; }; 0007B99806C1929E00C884E1 /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; }; - 0007B99906C1929E00C884E1 /* osgProducer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098F3140652ED84007615E2 /* osgProducer.framework */; }; 0007B99A06C1929E00C884E1 /* osgGA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00557CE00624A947000A808A /* osgGA.framework */; }; 0007B99E06C192CB00C884E1 /* osganimate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0007B92306C1829E00C884E1 /* osganimate.cpp */; }; 0007B9E906C196E400C884E1 /* osg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE117FB305D63B3800EB53E5 /* osg.framework */; }; @@ -393,14 +392,12 @@ 000A264306CAE077009EE43A /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; 000A264406CAE077009EE43A /* osgText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11876A05D75C2700EB53E5 /* osgText.framework */; }; 000A264506CAE077009EE43A /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; }; - 000A264606CAE077009EE43A /* osgProducer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098F3140652ED84007615E2 /* osgProducer.framework */; }; 000A264706CAE077009EE43A /* osgGA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00557CE00624A947000A808A /* osgGA.framework */; }; 000A265C06CAE134009EE43A /* osggeodemo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 000A265906CAE134009EE43A /* osggeodemo.cpp */; }; 000A266806CAE225009EE43A /* osg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE117FB305D63B3800EB53E5 /* osg.framework */; }; 000A266906CAE225009EE43A /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; 000A266A06CAE225009EE43A /* osgText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11876A05D75C2700EB53E5 /* osgText.framework */; }; 000A266B06CAE225009EE43A /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; }; - 000A266C06CAE225009EE43A /* osgProducer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098F3140652ED84007615E2 /* osgProducer.framework */; }; 000A266D06CAE225009EE43A /* osgGA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00557CE00624A947000A808A /* osgGA.framework */; }; 000A267706CAE2C2009EE43A /* osggeometry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 000A267406CAE2C2009EE43A /* osggeometry.cpp */; }; 000A268306CAE333009EE43A /* osg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE117FB305D63B3800EB53E5 /* osg.framework */; }; @@ -420,14 +417,12 @@ 000A26BE06CAE489009EE43A /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; 000A26BF06CAE489009EE43A /* osgText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11876A05D75C2700EB53E5 /* osgText.framework */; }; 000A26C006CAE489009EE43A /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; }; - 000A26C106CAE489009EE43A /* osgProducer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098F3140652ED84007615E2 /* osgProducer.framework */; }; 000A26C206CAE489009EE43A /* osgGA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00557CE00624A947000A808A /* osgGA.framework */; }; 000A26CC06CAE535009EE43A /* osghud.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 000A26C906CAE535009EE43A /* osghud.cpp */; }; 000A26D806CAE58D009EE43A /* osg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE117FB305D63B3800EB53E5 /* osg.framework */; }; 000A26D906CAE58D009EE43A /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; 000A26DA06CAE58D009EE43A /* osgText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11876A05D75C2700EB53E5 /* osgText.framework */; }; 000A26DB06CAE58D009EE43A /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; }; - 000A26DC06CAE58D009EE43A /* osgProducer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098F3140652ED84007615E2 /* osgProducer.framework */; }; 000A26DD06CAE58D009EE43A /* osgGA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00557CE00624A947000A808A /* osgGA.framework */; }; 000A26E906CAE64A009EE43A /* osgimpostor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 000A26E406CAE649009EE43A /* osgimpostor.cpp */; }; 000A26EA06CAE64A009EE43A /* TestManipulator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 000A26E506CAE649009EE43A /* TestManipulator.cpp */; }; @@ -435,7 +430,6 @@ 000A26F806CAE6DA009EE43A /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; 000A26F906CAE6DA009EE43A /* osgText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11876A05D75C2700EB53E5 /* osgText.framework */; }; 000A26FA06CAE6DA009EE43A /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; }; - 000A26FB06CAE6DA009EE43A /* osgProducer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098F3140652ED84007615E2 /* osgProducer.framework */; }; 000A26FC06CAE6DA009EE43A /* osgGA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00557CE00624A947000A808A /* osgGA.framework */; }; 000A270B06CAE6E6009EE43A /* osg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE117FB305D63B3800EB53E5 /* osg.framework */; }; 000A270C06CAE6E6009EE43A /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; @@ -447,19 +441,16 @@ 000A272006CAE6F2009EE43A /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; 000A272106CAE6F2009EE43A /* osgText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11876A05D75C2700EB53E5 /* osgText.framework */; }; 000A272206CAE6F2009EE43A /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; }; - 000A272306CAE6F2009EE43A /* osgProducer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098F3140652ED84007615E2 /* osgProducer.framework */; }; 000A272406CAE6F2009EE43A /* osgGA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00557CE00624A947000A808A /* osgGA.framework */; }; 000A273306CAE6FE009EE43A /* osg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE117FB305D63B3800EB53E5 /* osg.framework */; }; 000A273406CAE6FE009EE43A /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; 000A273506CAE6FE009EE43A /* osgText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11876A05D75C2700EB53E5 /* osgText.framework */; }; 000A273606CAE6FE009EE43A /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; }; - 000A273706CAE6FE009EE43A /* osgProducer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098F3140652ED84007615E2 /* osgProducer.framework */; }; 000A273806CAE6FE009EE43A /* osgGA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00557CE00624A947000A808A /* osgGA.framework */; }; 000A274706CAE708009EE43A /* osg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE117FB305D63B3800EB53E5 /* osg.framework */; }; 000A274806CAE708009EE43A /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; 000A274906CAE708009EE43A /* osgText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11876A05D75C2700EB53E5 /* osgText.framework */; }; 000A274A06CAE708009EE43A /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; }; - 000A274B06CAE708009EE43A /* osgProducer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098F3140652ED84007615E2 /* osgProducer.framework */; }; 000A274C06CAE708009EE43A /* osgGA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00557CE00624A947000A808A /* osgGA.framework */; }; 000A275606CAE7B1009EE43A /* osgkeyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 000A275306CAE7B0009EE43A /* osgkeyboard.cpp */; }; 000A275D06CAE913009EE43A /* osgkeyboardmouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 000A275A06CAE913009EE43A /* osgkeyboardmouse.cpp */; }; @@ -471,19 +462,16 @@ 000A279706CAEDDE009EE43A /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; 000A279806CAEDDE009EE43A /* osgText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11876A05D75C2700EB53E5 /* osgText.framework */; }; 000A279906CAEDDE009EE43A /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; }; - 000A279A06CAEDDE009EE43A /* osgProducer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098F3140652ED84007615E2 /* osgProducer.framework */; }; 000A279B06CAEDDE009EE43A /* osgGA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00557CE00624A947000A808A /* osgGA.framework */; }; 000A27AA06CAEDEC009EE43A /* osg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE117FB305D63B3800EB53E5 /* osg.framework */; }; 000A27AB06CAEDEC009EE43A /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; 000A27AC06CAEDEC009EE43A /* osgText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11876A05D75C2700EB53E5 /* osgText.framework */; }; 000A27AD06CAEDEC009EE43A /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; }; - 000A27AE06CAEDEC009EE43A /* osgProducer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098F3140652ED84007615E2 /* osgProducer.framework */; }; 000A27AF06CAEDEC009EE43A /* osgGA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00557CE00624A947000A808A /* osgGA.framework */; }; 000A27BE06CAEDF7009EE43A /* osg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE117FB305D63B3800EB53E5 /* osg.framework */; }; 000A27BF06CAEDF7009EE43A /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; 000A27C006CAEDF7009EE43A /* osgText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11876A05D75C2700EB53E5 /* osgText.framework */; }; 000A27C106CAEDF7009EE43A /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; }; - 000A27C206CAEDF7009EE43A /* osgProducer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098F3140652ED84007615E2 /* osgProducer.framework */; }; 000A27C306CAEDF7009EE43A /* osgGA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00557CE00624A947000A808A /* osgGA.framework */; }; 000A27D206CAEE04009EE43A /* osg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE117FB305D63B3800EB53E5 /* osg.framework */; }; 000A27D306CAEE04009EE43A /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; @@ -495,7 +483,6 @@ 000A27E706CAEE13009EE43A /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; 000A27E806CAEE13009EE43A /* osgText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11876A05D75C2700EB53E5 /* osgText.framework */; }; 000A27E906CAEE13009EE43A /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; }; - 000A27EA06CAEE13009EE43A /* osgProducer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098F3140652ED84007615E2 /* osgProducer.framework */; }; 000A27EB06CAEE13009EE43A /* osgGA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00557CE00624A947000A808A /* osgGA.framework */; }; 000A280E06CAEE2D009EE43A /* osg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE117FB305D63B3800EB53E5 /* osg.framework */; }; 000A280F06CAEE2D009EE43A /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; @@ -1171,7 +1158,6 @@ 004099650924D09E009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 004099660924D0A6009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 004099690924D0B2009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; - 0040996A0924D0B8009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 0040996C0924D0C2009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; 0040996D0924D0C6009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 0040996E0924D0CD009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; @@ -1182,51 +1168,34 @@ 004099790924D170009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 0040997A0924D177009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 0040997C0924D186009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; - 0040997D0924D189009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; 0040997F0924D199009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 004099830924D1B2009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 004099840924D1CB009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; - 004099860924D1D1009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; 004099870924D1D6009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 004099880924D1DC009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; - 004099890924D1E0009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; 0040998B0924D1E9009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 0040998C0924D1F1009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; - 0040998D0924D1F4009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; - 0040998E0924D1FD009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; 0040998F0924D204009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 004099900924D20E009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; - 004099910924D211009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; 004099920924D219009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; 004099930924D21B009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 004099940924D223009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; - 004099950924D22F009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; 004099970924D249009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 004099990924D25F009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 0040999A0924D261009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; - 0040999B0924D27A009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; 0040999C0924D27C009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 0040999D0924D284009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; - 0040999E0924D285009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; 0040999F0924D28B009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; - 004099A00924D290009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; - 004099A10924D298009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; 004099A20924D29A009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 004099A30924D2A2009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 004099A40924D2A5009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; - 004099A50924D2AD009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; 004099A60924D2B1009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 004099A70924D2BA009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; - 004099A80924D2BC009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; - 004099A90924D2C4009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; 004099AA0924D2C6009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 004099AB0924D2CE009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; - 004099AC0924D2D0009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; 004099AD0924D2D7009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; 004099AE0924D2DA009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 004099AF0924D2E4009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; - 004099B00924D2E6009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; - 004099B10924D2EA009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; 004099B20924D2EE009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 004099B30924D2F5009ADD90 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 004099B40924D2F8009ADD90 /* Producer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099480924CE15009ADD90 /* Producer.framework */; }; @@ -1488,11 +1457,6 @@ 006CE7FF092195B500985402 /* OverlayNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0096C5FA0919637300B255F2 /* OverlayNode.cpp */; }; 006CE8260921965100985402 /* osgSim.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 005580E10624BBB3000A808A /* osgSim.framework */; }; 006CE834092197C400985402 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1182CF05D64A5900EB53E5 /* OpenGL.framework */; }; - 006CE9010921A83D00985402 /* osg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE117FB305D63B3800EB53E5 /* osg.framework */; }; - 006CE9020921A83D00985402 /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; - 006CE9030921A83D00985402 /* osgText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11876A05D75C2700EB53E5 /* osgText.framework */; }; - 006CE9040921A83D00985402 /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; }; - 006CE9060921A83D00985402 /* osgGA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00557CE00624A947000A808A /* osgGA.framework */; }; 006CE9160921AA0100985402 /* osgcamera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 006CE9130921AA0100985402 /* osgcamera.cpp */; }; 006CE92F0921AA9300985402 /* osg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE117FB305D63B3800EB53E5 /* osg.framework */; }; 006CE9300921AA9300985402 /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; @@ -1508,13 +1472,11 @@ 006CE9900921AC8700985402 /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; 006CE9910921AC8700985402 /* osgText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11876A05D75C2700EB53E5 /* osgText.framework */; }; 006CE9920921AC8700985402 /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; }; - 006CE9930921AC8700985402 /* osgProducer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098F3140652ED84007615E2 /* osgProducer.framework */; }; 006CE9940921AC8700985402 /* osgGA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00557CE00624A947000A808A /* osgGA.framework */; }; 006CE9AD0921ACED00985402 /* osg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE117FB305D63B3800EB53E5 /* osg.framework */; }; 006CE9AE0921ACED00985402 /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; 006CE9AF0921ACED00985402 /* osgText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11876A05D75C2700EB53E5 /* osgText.framework */; }; 006CE9B00921ACED00985402 /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; }; - 006CE9B10921ACED00985402 /* osgProducer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098F3140652ED84007615E2 /* osgProducer.framework */; }; 006CE9B20921ACED00985402 /* osgGA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00557CE00624A947000A808A /* osgGA.framework */; }; 006CE9CD0921AD3300985402 /* osg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE117FB305D63B3800EB53E5 /* osg.framework */; }; 006CE9CE0921AD3300985402 /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; @@ -1867,7 +1829,6 @@ 00A14F23084E65B3000150AD /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; 00A14F24084E65B3000150AD /* osgText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11876A05D75C2700EB53E5 /* osgText.framework */; }; 00A14F25084E65B3000150AD /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; }; - 00A14F26084E65B3000150AD /* osgProducer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098F3140652ED84007615E2 /* osgProducer.framework */; }; 00A14F27084E65B3000150AD /* osgGA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00557CE00624A947000A808A /* osgGA.framework */; }; 00A14F88084E66A7000150AD /* osglogicop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00A14F85084E66A7000150AD /* osglogicop.cpp */; }; 00A14F8F084E66DB000150AD /* osgparticleeffects.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00A14F8C084E66DA000150AD /* osgparticleeffects.cpp */; }; @@ -2196,7 +2157,6 @@ 00F239050767744100528CDD /* osgDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1188E705D764C400EB53E5 /* osgDB.framework */; }; 00F239060767744100528CDD /* osgText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11876A05D75C2700EB53E5 /* osgText.framework */; }; 00F239070767744100528CDD /* osgUtil.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE11849A05D7126100EB53E5 /* osgUtil.framework */; }; - 00F239080767744100528CDD /* osgProducer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098F3140652ED84007615E2 /* osgProducer.framework */; }; 00F239090767744100528CDD /* osgGA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00557CE00624A947000A808A /* osgGA.framework */; }; 00F239140767768300528CDD /* osglauncher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00F239110767768200528CDD /* osglauncher.cpp */; }; 00F23921076776DE00528CDD /* osg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE117FB305D63B3800EB53E5 /* osg.framework */; }; @@ -2527,13 +2487,31 @@ D403580A0B511E7600CB9E15 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; D40358180B511E8400CB9E15 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; D403581B0B511E9100CB9E15 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; + D40359230B512B6600CB9E15 /* GraphicsWindowCarbon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D40359220B512B6500CB9E15 /* GraphicsWindowCarbon.cpp */; }; + D40359250B512BF300CB9E15 /* GraphicsWindowCarbon in Resources */ = {isa = PBXBuildFile; fileRef = D40359240B512BF300CB9E15 /* GraphicsWindowCarbon */; }; + D4035B2E0B51522600CB9E15 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1182CF05D64A5900EB53E5 /* OpenGL.framework */; }; + D4035EBA0B52E9ED00CB9E15 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; + D4035F5B0B52E9FE00CB9E15 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; + D4035F630B52EA0F00CB9E15 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; + D4035F690B52EA2200CB9E15 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; + D4035F700B52EA3300CB9E15 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; + D4035F770B52EA4900CB9E15 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; + D4035F980B52EA6000CB9E15 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; + D4035F9F0B52EA7700CB9E15 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; + D4035FA60B52EA8600CB9E15 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; + D4035FAF0B52EA9C00CB9E15 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; + D4035FB40B52EABA00CB9E15 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; + D4035FBB0B52EAF300CB9E15 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; + D4035FD40B52EB1100CB9E15 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; + D4035FDA0B52EB2100CB9E15 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; + D4035FE10B52EB3A00CB9E15 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; + D4035FE20B52EB4D00CB9E15 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; + D4035FF00B52F10700CB9E15 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; D48EC6500B4EBF2F000E05A4 /* CompositeViewer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D48EC64B0B4EBF2E000E05A4 /* CompositeViewer.cpp */; }; - D48EC6510B4EBF2F000E05A4 /* GraphicsWindowCocoa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D48EC64C0B4EBF2F000E05A4 /* GraphicsWindowCocoa.cpp */; }; D48EC6520B4EBF2F000E05A4 /* Scene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D48EC64D0B4EBF2F000E05A4 /* Scene.cpp */; }; D48EC6530B4EBF2F000E05A4 /* View.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D48EC64E0B4EBF2F000E05A4 /* View.cpp */; }; D48EC6540B4EBF2F000E05A4 /* Viewer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D48EC64F0B4EBF2F000E05A4 /* Viewer.cpp */; }; D48EC65A0B4EBFCE000E05A4 /* CompositeViewer in Headers */ = {isa = PBXBuildFile; fileRef = D48EC6550B4EBFCD000E05A4 /* CompositeViewer */; settings = {ATTRIBUTES = (Public, ); }; }; - D48EC65B0B4EBFCE000E05A4 /* GraphicsWindowCocoa in Headers */ = {isa = PBXBuildFile; fileRef = D48EC6560B4EBFCD000E05A4 /* GraphicsWindowCocoa */; settings = {ATTRIBUTES = (); }; }; D48EC65C0B4EBFCE000E05A4 /* Scene in Headers */ = {isa = PBXBuildFile; fileRef = D48EC6570B4EBFCD000E05A4 /* Scene */; settings = {ATTRIBUTES = (Public, ); }; }; D48EC65D0B4EBFCE000E05A4 /* View in Headers */ = {isa = PBXBuildFile; fileRef = D48EC6580B4EBFCD000E05A4 /* View */; settings = {ATTRIBUTES = (Public, ); }; }; D48EC65E0B4EBFCE000E05A4 /* Viewer in Headers */ = {isa = PBXBuildFile; fileRef = D48EC6590B4EBFCD000E05A4 /* Viewer */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -2551,7 +2529,6 @@ D48EC7430B4FBCCB000E05A4 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; D48EC7470B4FBD17000E05A4 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; D48EC74B0B4FBD56000E05A4 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; - D48EC74F0B4FBDBF000E05A4 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; D48EC76C0B4FBE72000E05A4 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; D48EC7750B4FBF43000E05A4 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; D48EC7990B4FC38F000E05A4 /* osgViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00FB21010B015CF20052DD79 /* osgViewer.framework */; }; @@ -3360,13 +3337,6 @@ remoteGlobalIDString = 00557CDF0624A947000A808A; remoteInfo = osgGA; }; - 006CE98A0921AC8700985402 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0098F3130652ED84007615E2; - remoteInfo = osgProducer; - }; 006CE99E0921ACED00985402 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; @@ -3402,13 +3372,6 @@ remoteGlobalIDString = 00557CDF0624A947000A808A; remoteInfo = osgGA; }; - 006CE9A80921ACED00985402 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0098F3130652ED84007615E2; - remoteInfo = osgProducer; - }; 006CE9BE0921AD3300985402 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; @@ -6288,13 +6251,14 @@ BE11891B05D7665600EB53E5 /* SharedStateManager */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp; fileEncoding = 30; name = SharedStateManager; path = ../../include/osgDB/SharedStateManager; sourceTree = SOURCE_ROOT; }; BE11891C05D7665600EB53E5 /* Version */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp; fileEncoding = 30; name = Version; path = ../../include/osgDB/Version; sourceTree = SOURCE_ROOT; }; BE11891D05D7665600EB53E5 /* WriteFile */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp; fileEncoding = 30; name = WriteFile; path = ../../include/osgDB/WriteFile; sourceTree = SOURCE_ROOT; }; + D40359220B512B6500CB9E15 /* GraphicsWindowCarbon.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsWindowCarbon.cpp; sourceTree = ""; }; + D40359240B512BF300CB9E15 /* GraphicsWindowCarbon */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = GraphicsWindowCarbon; sourceTree = ""; }; D48EC64B0B4EBF2E000E05A4 /* CompositeViewer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CompositeViewer.cpp; sourceTree = ""; }; D48EC64C0B4EBF2F000E05A4 /* GraphicsWindowCocoa.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsWindowCocoa.cpp; sourceTree = ""; }; D48EC64D0B4EBF2F000E05A4 /* Scene.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Scene.cpp; sourceTree = ""; }; D48EC64E0B4EBF2F000E05A4 /* View.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = View.cpp; sourceTree = ""; }; D48EC64F0B4EBF2F000E05A4 /* Viewer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Viewer.cpp; sourceTree = ""; }; D48EC6550B4EBFCD000E05A4 /* CompositeViewer */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CompositeViewer; sourceTree = ""; }; - D48EC6560B4EBFCD000E05A4 /* GraphicsWindowCocoa */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = GraphicsWindowCocoa; sourceTree = ""; }; D48EC6570B4EBFCD000E05A4 /* Scene */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = Scene; sourceTree = ""; }; D48EC6580B4EBFCD000E05A4 /* View */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = View; sourceTree = ""; }; D48EC6590B4EBFCD000E05A4 /* Viewer */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = Viewer; sourceTree = ""; }; @@ -6307,9 +6271,9 @@ D48EC66A0B4EC1C6000E05A4 /* PolytopeIntersector */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = PolytopeIntersector; path = ../../include/osgUtil/PolytopeIntersector; sourceTree = SOURCE_ROOT; }; D48EC6D60B4ECD10000E05A4 /* PointSprite.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = PointSprite.cpp; sourceTree = ""; }; D48EC6D70B4ECD10000E05A4 /* PointSprite.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PointSprite.h; sourceTree = ""; }; - D48EC7B30B4FCA29000E05A4 /* UnitTestFramework.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = UnitTestFramework.cpp; path = ../../examples/osgunittests/UnitTestFramework.cpp; sourceTree = SOURCE_ROOT; }; - D48EC7B40B4FCA29000E05A4 /* UnitTestFramework.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = UnitTestFramework.h; path = ../../examples/osgunittests/UnitTestFramework.h; sourceTree = SOURCE_ROOT; }; - D48EC7B50B4FCA2A000E05A4 /* UnitTests_osg.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = UnitTests_osg.cpp; path = ../../examples/osgunittests/UnitTests_osg.cpp; sourceTree = SOURCE_ROOT; }; + D48EC7B30B4FCA29000E05A4 /* UnitTestFramework.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = UnitTestFramework.cpp; sourceTree = ""; }; + D48EC7B40B4FCA29000E05A4 /* UnitTestFramework.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = UnitTestFramework.h; sourceTree = ""; }; + D48EC7B50B4FCA2A000E05A4 /* UnitTests_osg.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = UnitTests_osg.cpp; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -6346,14 +6310,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D4035FF00B52F10700CB9E15 /* osgViewer.framework in Frameworks */, 0007B99506C1929E00C884E1 /* osg.framework in Frameworks */, 0007B99606C1929E00C884E1 /* osgDB.framework in Frameworks */, 0007B99706C1929E00C884E1 /* osgText.framework in Frameworks */, 0007B99806C1929E00C884E1 /* osgUtil.framework in Frameworks */, - 0007B99906C1929E00C884E1 /* osgProducer.framework in Frameworks */, 0007B99A06C1929E00C884E1 /* osgGA.framework in Frameworks */, 0040997C0924D186009ADD90 /* OpenThreads.framework in Frameworks */, - 0040997D0924D189009ADD90 /* Producer.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6613,13 +6576,12 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D4035EBA0B52E9ED00CB9E15 /* osgViewer.framework in Frameworks */, 000A264206CAE077009EE43A /* osg.framework in Frameworks */, 000A264306CAE077009EE43A /* osgDB.framework in Frameworks */, 000A264406CAE077009EE43A /* osgText.framework in Frameworks */, 000A264506CAE077009EE43A /* osgUtil.framework in Frameworks */, - 000A264606CAE077009EE43A /* osgProducer.framework in Frameworks */, 000A264706CAE077009EE43A /* osgGA.framework in Frameworks */, - 004099860924D1D1009ADD90 /* Producer.framework in Frameworks */, 004099870924D1D6009ADD90 /* OpenThreads.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -6628,14 +6590,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D4035F5B0B52E9FE00CB9E15 /* osgViewer.framework in Frameworks */, 000A266806CAE225009EE43A /* osg.framework in Frameworks */, 000A266906CAE225009EE43A /* osgDB.framework in Frameworks */, 000A266A06CAE225009EE43A /* osgText.framework in Frameworks */, 000A266B06CAE225009EE43A /* osgUtil.framework in Frameworks */, - 000A266C06CAE225009EE43A /* osgProducer.framework in Frameworks */, 000A266D06CAE225009EE43A /* osgGA.framework in Frameworks */, 004099880924D1DC009ADD90 /* OpenThreads.framework in Frameworks */, - 004099890924D1E0009ADD90 /* Producer.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6657,14 +6618,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D4035F630B52EA0F00CB9E15 /* osgViewer.framework in Frameworks */, 000A26BD06CAE489009EE43A /* osg.framework in Frameworks */, 000A26BE06CAE489009EE43A /* osgDB.framework in Frameworks */, 000A26BF06CAE489009EE43A /* osgText.framework in Frameworks */, 000A26C006CAE489009EE43A /* osgUtil.framework in Frameworks */, - 000A26C106CAE489009EE43A /* osgProducer.framework in Frameworks */, 000A26C206CAE489009EE43A /* osgGA.framework in Frameworks */, 0040998C0924D1F1009ADD90 /* OpenThreads.framework in Frameworks */, - 0040998D0924D1F4009ADD90 /* Producer.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6672,14 +6632,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D4035F690B52EA2200CB9E15 /* osgViewer.framework in Frameworks */, 000A26D806CAE58D009EE43A /* osg.framework in Frameworks */, 000A26D906CAE58D009EE43A /* osgDB.framework in Frameworks */, 000A26DA06CAE58D009EE43A /* osgText.framework in Frameworks */, 000A26DB06CAE58D009EE43A /* osgUtil.framework in Frameworks */, - 000A26DC06CAE58D009EE43A /* osgProducer.framework in Frameworks */, 000A26DD06CAE58D009EE43A /* osgGA.framework in Frameworks */, 00A14BD3084D64C3000150AD /* osgSim.framework in Frameworks */, - 0040998E0924D1FD009ADD90 /* Producer.framework in Frameworks */, 0040998F0924D204009ADD90 /* OpenThreads.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -6688,14 +6647,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D4035F700B52EA3300CB9E15 /* osgViewer.framework in Frameworks */, 000A26F706CAE6DA009EE43A /* osg.framework in Frameworks */, 000A26F806CAE6DA009EE43A /* osgDB.framework in Frameworks */, 000A26F906CAE6DA009EE43A /* osgText.framework in Frameworks */, 000A26FA06CAE6DA009EE43A /* osgUtil.framework in Frameworks */, - 000A26FB06CAE6DA009EE43A /* osgProducer.framework in Frameworks */, 000A26FC06CAE6DA009EE43A /* osgGA.framework in Frameworks */, 004099900924D20E009ADD90 /* OpenThreads.framework in Frameworks */, - 004099910924D211009ADD90 /* Producer.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6720,13 +6678,12 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D4035F980B52EA6000CB9E15 /* osgViewer.framework in Frameworks */, 000A271F06CAE6F2009EE43A /* osg.framework in Frameworks */, 000A272006CAE6F2009EE43A /* osgDB.framework in Frameworks */, 000A272106CAE6F2009EE43A /* osgText.framework in Frameworks */, 000A272206CAE6F2009EE43A /* osgUtil.framework in Frameworks */, - 000A272306CAE6F2009EE43A /* osgProducer.framework in Frameworks */, 000A272406CAE6F2009EE43A /* osgGA.framework in Frameworks */, - 0040999B0924D27A009ADD90 /* Producer.framework in Frameworks */, 0040999C0924D27C009ADD90 /* OpenThreads.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -6735,15 +6692,14 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D4035F9F0B52EA7700CB9E15 /* osgViewer.framework in Frameworks */, 000A273306CAE6FE009EE43A /* osg.framework in Frameworks */, 000A273406CAE6FE009EE43A /* osgDB.framework in Frameworks */, 000A273506CAE6FE009EE43A /* osgText.framework in Frameworks */, 000A273606CAE6FE009EE43A /* osgUtil.framework in Frameworks */, - 000A273706CAE6FE009EE43A /* osgProducer.framework in Frameworks */, 000A273806CAE6FE009EE43A /* osgGA.framework in Frameworks */, 000A277C06CAEBAF009EE43A /* osgSim.framework in Frameworks */, 0040999D0924D284009ADD90 /* OpenThreads.framework in Frameworks */, - 0040999E0924D285009ADD90 /* Producer.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6751,13 +6707,12 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D4035FAF0B52EA9C00CB9E15 /* osgViewer.framework in Frameworks */, 000A274706CAE708009EE43A /* osg.framework in Frameworks */, 000A274806CAE708009EE43A /* osgDB.framework in Frameworks */, 000A274906CAE708009EE43A /* osgText.framework in Frameworks */, 000A274A06CAE708009EE43A /* osgUtil.framework in Frameworks */, - 000A274B06CAE708009EE43A /* osgProducer.framework in Frameworks */, 000A274C06CAE708009EE43A /* osgGA.framework in Frameworks */, - 004099A10924D298009ADD90 /* Producer.framework in Frameworks */, 004099A20924D29A009ADD90 /* OpenThreads.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -6766,13 +6721,12 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D4035FB40B52EABA00CB9E15 /* osgViewer.framework in Frameworks */, 000A279606CAEDDE009EE43A /* osg.framework in Frameworks */, 000A279706CAEDDE009EE43A /* osgDB.framework in Frameworks */, 000A279806CAEDDE009EE43A /* osgText.framework in Frameworks */, 000A279906CAEDDE009EE43A /* osgUtil.framework in Frameworks */, - 000A279A06CAEDDE009EE43A /* osgProducer.framework in Frameworks */, 000A279B06CAEDDE009EE43A /* osgGA.framework in Frameworks */, - 004099A50924D2AD009ADD90 /* Producer.framework in Frameworks */, 004099A60924D2B1009ADD90 /* OpenThreads.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -6781,13 +6735,12 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D4035FD40B52EB1100CB9E15 /* osgViewer.framework in Frameworks */, 000A27AA06CAEDEC009EE43A /* osg.framework in Frameworks */, 000A27AB06CAEDEC009EE43A /* osgDB.framework in Frameworks */, 000A27AC06CAEDEC009EE43A /* osgText.framework in Frameworks */, 000A27AD06CAEDEC009EE43A /* osgUtil.framework in Frameworks */, - 000A27AE06CAEDEC009EE43A /* osgProducer.framework in Frameworks */, 000A27AF06CAEDEC009EE43A /* osgGA.framework in Frameworks */, - 004099A90924D2C4009ADD90 /* Producer.framework in Frameworks */, 004099AA0924D2C6009ADD90 /* OpenThreads.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -6796,14 +6749,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D4035FDA0B52EB2100CB9E15 /* osgViewer.framework in Frameworks */, 000A27BE06CAEDF7009EE43A /* osg.framework in Frameworks */, 000A27BF06CAEDF7009EE43A /* osgDB.framework in Frameworks */, 000A27C006CAEDF7009EE43A /* osgText.framework in Frameworks */, 000A27C106CAEDF7009EE43A /* osgUtil.framework in Frameworks */, - 000A27C206CAEDF7009EE43A /* osgProducer.framework in Frameworks */, 000A27C306CAEDF7009EE43A /* osgGA.framework in Frameworks */, 004099AB0924D2CE009ADD90 /* OpenThreads.framework in Frameworks */, - 004099AC0924D2D0009ADD90 /* Producer.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6826,14 +6778,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D4035FE20B52EB4D00CB9E15 /* osgViewer.framework in Frameworks */, 000A27E606CAEE13009EE43A /* osg.framework in Frameworks */, 000A27E706CAEE13009EE43A /* osgDB.framework in Frameworks */, 000A27E806CAEE13009EE43A /* osgText.framework in Frameworks */, 000A27E906CAEE13009EE43A /* osgUtil.framework in Frameworks */, - 000A27EA06CAEE13009EE43A /* osgProducer.framework in Frameworks */, 000A27EB06CAEE13009EE43A /* osgGA.framework in Frameworks */, 000A284506CAF681009EE43A /* osgParticle.framework in Frameworks */, - 004099B10924D2EA009ADD90 /* Producer.framework in Frameworks */, 004099B20924D2EE009ADD90 /* OpenThreads.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -7348,20 +7299,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 006CE9000921A83D00985402 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - D48EC74F0B4FBDBF000E05A4 /* osgViewer.framework in Frameworks */, - 006CE9010921A83D00985402 /* osg.framework in Frameworks */, - 006CE9020921A83D00985402 /* osgDB.framework in Frameworks */, - 006CE9030921A83D00985402 /* osgText.framework in Frameworks */, - 006CE9040921A83D00985402 /* osgUtil.framework in Frameworks */, - 006CE9060921A83D00985402 /* osgGA.framework in Frameworks */, - 0040996A0924D0B8009ADD90 /* OpenThreads.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 006CE92E0921AA9300985402 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -7394,14 +7331,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D4035FBB0B52EAF300CB9E15 /* osgViewer.framework in Frameworks */, 006CE98F0921AC8700985402 /* osg.framework in Frameworks */, 006CE9900921AC8700985402 /* osgDB.framework in Frameworks */, 006CE9910921AC8700985402 /* osgText.framework in Frameworks */, 006CE9920921AC8700985402 /* osgUtil.framework in Frameworks */, - 006CE9930921AC8700985402 /* osgProducer.framework in Frameworks */, 006CE9940921AC8700985402 /* osgGA.framework in Frameworks */, 004099A70924D2BA009ADD90 /* OpenThreads.framework in Frameworks */, - 004099A80924D2BC009ADD90 /* Producer.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -7409,14 +7345,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D4035FE10B52EB3A00CB9E15 /* osgViewer.framework in Frameworks */, 006CE9AD0921ACED00985402 /* osg.framework in Frameworks */, 006CE9AE0921ACED00985402 /* osgDB.framework in Frameworks */, 006CE9AF0921ACED00985402 /* osgText.framework in Frameworks */, 006CE9B00921ACED00985402 /* osgUtil.framework in Frameworks */, - 006CE9B10921ACED00985402 /* osgProducer.framework in Frameworks */, 006CE9B20921ACED00985402 /* osgGA.framework in Frameworks */, 004099AF0924D2E4009ADD90 /* OpenThreads.framework in Frameworks */, - 004099B00924D2E6009ADD90 /* Producer.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -7689,14 +7624,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D4035FA60B52EA8600CB9E15 /* osgViewer.framework in Frameworks */, 00A14F22084E65B3000150AD /* osg.framework in Frameworks */, 00A14F23084E65B3000150AD /* osgDB.framework in Frameworks */, 00A14F24084E65B3000150AD /* osgText.framework in Frameworks */, 00A14F25084E65B3000150AD /* osgUtil.framework in Frameworks */, - 00A14F26084E65B3000150AD /* osgProducer.framework in Frameworks */, 00A14F27084E65B3000150AD /* osgGA.framework in Frameworks */, 0040999F0924D28B009ADD90 /* OpenThreads.framework in Frameworks */, - 004099A00924D290009ADD90 /* Producer.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -8143,14 +8077,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D4035F770B52EA4900CB9E15 /* osgViewer.framework in Frameworks */, 00F239040767744100528CDD /* osg.framework in Frameworks */, 00F239050767744100528CDD /* osgDB.framework in Frameworks */, 00F239060767744100528CDD /* osgText.framework in Frameworks */, 00F239070767744100528CDD /* osgUtil.framework in Frameworks */, - 00F239080767744100528CDD /* osgProducer.framework in Frameworks */, 00F239090767744100528CDD /* osgGA.framework in Frameworks */, 004099940924D223009ADD90 /* OpenThreads.framework in Frameworks */, - 004099950924D22F009ADD90 /* Producer.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -8189,6 +8122,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D4035B2E0B51522600CB9E15 /* OpenGL.framework in Frameworks */, 00FB20FA0B015CF20052DD79 /* osg.framework in Frameworks */, 00FB20FB0B015CF20052DD79 /* osgUtil.framework in Frameworks */, 00FB20FC0B015CF20052DD79 /* OpenThreads.framework in Frameworks */, @@ -10506,6 +10440,9 @@ 00EF4F7B06CB14BB008ACEFF /* osgunittests */ = { isa = PBXGroup; children = ( + D48EC7B30B4FCA29000E05A4 /* UnitTestFramework.cpp */, + D48EC7B40B4FCA29000E05A4 /* UnitTestFramework.h */, + D48EC7B50B4FCA2A000E05A4 /* UnitTests_osg.cpp */, 00EF4F7E06CB14BE008ACEFF /* osgunittests.cpp */, 0081CFD70A5C556B006D3A13 /* performance.cpp */, 0081CFD80A5C556C006D3A13 /* performance.h */, @@ -10571,6 +10508,7 @@ 00FB210F0B015F4A0052DD79 /* osgViewer */ = { isa = PBXGroup; children = ( + D40359220B512B6500CB9E15 /* GraphicsWindowCarbon.cpp */, D48EC64B0B4EBF2E000E05A4 /* CompositeViewer.cpp */, D48EC64C0B4EBF2F000E05A4 /* GraphicsWindowCocoa.cpp */, D48EC64D0B4EBF2F000E05A4 /* Scene.cpp */, @@ -10586,8 +10524,8 @@ 00FB21160B0160380052DD79 /* osgViewer */ = { isa = PBXGroup; children = ( + D40359240B512BF300CB9E15 /* GraphicsWindowCarbon */, D48EC6550B4EBFCD000E05A4 /* CompositeViewer */, - D48EC6560B4EBFCD000E05A4 /* GraphicsWindowCocoa */, D48EC6570B4EBFCD000E05A4 /* Scene */, D48EC6580B4EBFCD000E05A4 /* View */, D48EC6590B4EBFCD000E05A4 /* Viewer */, @@ -10756,9 +10694,6 @@ 0867D691FE84028FC02AAC07 /* OpenSceneGraph */ = { isa = PBXGroup; children = ( - D48EC7B30B4FCA29000E05A4 /* UnitTestFramework.cpp */, - D48EC7B40B4FCA29000E05A4 /* UnitTestFramework.h */, - D48EC7B50B4FCA2A000E05A4 /* UnitTests_osg.cpp */, BE1181EC05D63BD300EB53E5 /* Include */, 08FB77ACFE841707C02AAC07 /* Source */, 00A14C40084E564C000150AD /* Applications */, @@ -12678,7 +12613,6 @@ buildActionMask = 2147483647; files = ( D48EC65A0B4EBFCE000E05A4 /* CompositeViewer in Headers */, - D48EC65B0B4EBFCE000E05A4 /* GraphicsWindowCocoa in Headers */, D48EC65C0B4EBFCE000E05A4 /* Scene in Headers */, D48EC65D0B4EBFCE000E05A4 /* View in Headers */, D48EC65E0B4EBFCE000E05A4 /* Viewer in Headers */, @@ -14427,7 +14361,6 @@ 006CE8FD0921A83D00985402 /* Headers */, 006CE8FE0921A83D00985402 /* Resources */, 006CE8FF0921A83D00985402 /* Sources */, - 006CE9000921A83D00985402 /* Frameworks */, ); buildRules = ( ); @@ -14508,7 +14441,6 @@ 006CE9830921AC8700985402 /* PBXTargetDependency */, 006CE9850921AC8700985402 /* PBXTargetDependency */, 006CE9870921AC8700985402 /* PBXTargetDependency */, - 006CE9890921AC8700985402 /* PBXTargetDependency */, ); name = osgmultiplecameras; productName = osgtext; @@ -14532,7 +14464,6 @@ 006CE9A10921ACED00985402 /* PBXTargetDependency */, 006CE9A30921ACED00985402 /* PBXTargetDependency */, 006CE9A50921ACED00985402 /* PBXTargetDependency */, - 006CE9A70921ACED00985402 /* PBXTargetDependency */, ); name = osgparametric; productName = osgtext; @@ -15596,7 +15527,6 @@ 00F238FC0767744100528CDD /* PBXTargetDependency */, 00F238FD0767744100528CDD /* PBXTargetDependency */, 00F238FE0767744100528CDD /* PBXTargetDependency */, - 00F238FF0767744100528CDD /* PBXTargetDependency */, ); name = osglauncher; productName = osgtext; @@ -16665,6 +16595,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + D40359250B512BF300CB9E15 /* GraphicsWindowCarbon in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -18351,10 +18282,10 @@ 00FB21140B015F4C0052DD79 /* SimpleViewer.cpp in Sources */, 00FB21150B015F4C0052DD79 /* Version.cpp in Sources */, D48EC6500B4EBF2F000E05A4 /* CompositeViewer.cpp in Sources */, - D48EC6510B4EBF2F000E05A4 /* GraphicsWindowCocoa.cpp in Sources */, D48EC6520B4EBF2F000E05A4 /* Scene.cpp in Sources */, D48EC6530B4EBF2F000E05A4 /* View.cpp in Sources */, D48EC6540B4EBF2F000E05A4 /* Viewer.cpp in Sources */, + D40359230B512B6600CB9E15 /* GraphicsWindowCarbon.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -19248,11 +19179,6 @@ target = 00557CDF0624A947000A808A /* osgGA */; targetProxy = 006CE9880921AC8700985402 /* PBXContainerItemProxy */; }; - 006CE9890921AC8700985402 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 0098F3130652ED84007615E2 /* osgProducer */; - targetProxy = 006CE98A0921AC8700985402 /* PBXContainerItemProxy */; - }; 006CE99D0921ACED00985402 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = BE117FB205D63B3800EB53E5 /* osg */; @@ -19278,11 +19204,6 @@ target = 00557CDF0624A947000A808A /* osgGA */; targetProxy = 006CE9A60921ACED00985402 /* PBXContainerItemProxy */; }; - 006CE9A70921ACED00985402 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 0098F3130652ED84007615E2 /* osgProducer */; - targetProxy = 006CE9A80921ACED00985402 /* PBXContainerItemProxy */; - }; 006CE9BD0921AD3300985402 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = BE117FB205D63B3800EB53E5 /* osg */; @@ -20403,11 +20324,6 @@ target = 00557CDF0624A947000A808A /* osgGA */; targetProxy = 001D06E5065AB7A5003310BF /* PBXContainerItemProxy */; }; - 00F238FF0767744100528CDD /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 0098F3130652ED84007615E2 /* osgProducer */; - targetProxy = 001D06E7065AB7A5003310BF /* PBXContainerItemProxy */; - }; 00F23917076776DE00528CDD /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = BE117FB205D63B3800EB53E5 /* osg */; @@ -36741,6 +36657,10 @@ 0x2049a000, "-framework", OpenThreads, + "-framework", + Carbon, + "-framework", + AGL, ); OTHER_REZFLAGS = ""; PRODUCT_NAME = osgViewer; @@ -37915,7 +37835,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; - 0011035D08736A190015C576 /* Build configuration list for PBXNativeTarget "osgtessellate" */ = { + 0011035D08736A190015C576 /* Build configuration list for PBXNativeTarget "osgtesselate" */ = { isa = XCConfigurationList; buildConfigurations = ( 0011035E08736A190015C576 /* Development */, diff --git a/include/osg/GraphicsContext b/include/osg/GraphicsContext index df455d0e4..c18354ad4 100644 --- a/include/osg/GraphicsContext +++ b/include/osg/GraphicsContext @@ -74,6 +74,7 @@ class OSG_EXPORT GraphicsContext : public Referenced level(0), face(0), mipMapGeneration(false), + vsync(true), sharedContext(0) {} // graphics context orginal and size @@ -110,6 +111,9 @@ class OSG_EXPORT GraphicsContext : public Referenced unsigned int face; unsigned int mipMapGeneration; + // V-sync + bool vsync; + // shared context GraphicsContext* sharedContext; }; diff --git a/include/osgViewer/GraphicsWindowCarbon b/include/osgViewer/GraphicsWindowCarbon new file mode 100644 index 000000000..ddf46aa51 --- /dev/null +++ b/include/osgViewer/GraphicsWindowCarbon @@ -0,0 +1,113 @@ +/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield + * + * This library is open source and may be redistributed and/or modified under + * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or + * (at your option) any later version. The full license is in LICENSE file + * included with this distribution, and on the openscenegraph.org website. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * OpenSceneGraph Public License for more details. +*/ + +/* Note, elements of GraphicsWindowX11 have used Prodcer/RenderSurface_X11.cpp as both + * a guide to use of X11/GLX and copiying directly in the case of setBorder(). + * These elements are license under OSGPL as above, with Copyright (C) 2001-2004 Don Burns. + */ + +#ifndef OSGVIEWER_GRAPHICSWINDOWCARBON +#define OSGVIEWER_GRAPHICSWINDOWCARBON 1 + +#ifdef __APPLE__ + +#include +#include +#include +namespace osgViewer +{ + +class GraphicsWindowCarbon : public osgViewer::GraphicsWindow +{ + public: + + GraphicsWindowCarbon(osg::GraphicsContext::Traits* traits): + _valid(false), + _initialized(false), + _realized(false) + { + _traits = traits; + + init(); + + if (valid()) + { + setState( new osg::State ); + getState()->setContextID( osg::GraphicsContext::createNewContextID() ); + } + } + + virtual bool valid() const { return _valid; } + + /** Realise the GraphicsContext.*/ + virtual bool realizeImplementation(); + + /** Return true if the graphics context has been realised and is ready to use.*/ + virtual bool isRealizedImplementation() const { return _realized; } + + /** Close the graphics context.*/ + virtual void closeImplementation(); + + /** Make this graphics context current.*/ + virtual bool makeCurrentImplementation(); + + /** Release the graphics context.*/ + virtual bool releaseContextImplementation(); + + /** Swap the front and back buffers.*/ + virtual void swapBuffersImplementation(); + + /** Check to see if any events have been generated.*/ + virtual void checkEvents(); + + /** Set Window decoration.*/ + virtual void setWindowDecoration(bool flag); + + /** Get focus.*/ + virtual void grabFocus(); + + /** Get focus on if the pointer is in this window.*/ + virtual void grabFocusIfPointerInWindow(); + + void requestClose() { _closeRequested = true; } + + virtual void resizedImplementation(int x, int y, int width, int height); + + protected: + + void init(); + + void transformMouseXY(float& x, float& y); + + + bool _valid; + bool _initialized; + bool _realized; + bool _useWindowDecoration; + + WindowRef _window; + AGLContext _context; + AGLPixelFormat _pixelFormat; + + private: + + void handleMouseEvent(EventRef theEvent); + void handleKeyboardEvent(EventRef theEvent); + + bool _closeRequested; +}; + +} + +#endif +#endif diff --git a/include/osgViewer/Viewer b/include/osgViewer/Viewer index 6ade36a5c..d7a71ba8a 100644 --- a/include/osgViewer/Viewer +++ b/include/osgViewer/Viewer @@ -62,8 +62,14 @@ class OSGVIEWER_EXPORT Viewer : public osgViewer::View * Setting to 0 switches off the feature.*/ void setKeySetsDone(int key) { _keySetsDone = key; } - /** Set the key value that the viewer checks on each frame to see if the viewer's done flag.*/ + /** get the key value that the viewer checks on each frame to see if the viewer's done flag.*/ int getKeySetsDone() const { return _keySetsDone; } + + /** if the flag is true, the viewer set its done flag when a QUIT_APPLICATION is received, false disables this feature */ + void setQuitEventSetsDone(bool flag) { _quitEventSetsDone = flag; } + + /** @return true if the viewer respond to the QUIT_APPLICATION-event */ + bool getQuitEventSetsDone() const { return _quitEventSetsDone; } /** Execute a main frame loop. * Equivialant to while (!viewer.done()) viewer.frame(); @@ -115,6 +121,7 @@ class OSGVIEWER_EXPORT Viewer : public osgViewer::View bool _done; int _keySetsDone; + bool _quitEventSetsDone; ThreadingModel _threadingModel; diff --git a/src/osgViewer/GNUmakefile b/src/osgViewer/GNUmakefile index d69407ed0..bfcf4d94f 100644 --- a/src/osgViewer/GNUmakefile +++ b/src/osgViewer/GNUmakefile @@ -11,12 +11,19 @@ CXXFILES = \ Version.cpp\ -CXXFILES += GraphicsWindowX11.cpp\ - -# CXXFILES += GraphicsWindowWin32.cpp\ - -# CXXFILES += GraphicsWindowCocoa.cpp\ - +ifeq ($(OS),Darwin) + CXXFILES += GraphicsWindowCarbon.cpp +else + ifeq ($(OS),MINGW) + CXXFILES += GraphicsWindowWin32.cpp + else + ifeq ($(OS),CYGWIN) + CXXFILES += GraphicsWindowWin32.cpp + else + CXXFILES += GraphicsWindowX11.cpp + endif + endif +endif DEF += -DOSGVIEWER_LIBRARY diff --git a/src/osgViewer/GraphicsWindowCarbon.cpp b/src/osgViewer/GraphicsWindowCarbon.cpp new file mode 100644 index 000000000..6162cdca8 --- /dev/null +++ b/src/osgViewer/GraphicsWindowCarbon.cpp @@ -0,0 +1,823 @@ +/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield + * + * This library is open source and may be redistributed and/or modified under + * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or + * (at your option) any later version. The full license is in LICENSE file + * included with this distribution, and on the openscenegraph.org website. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * OpenSceneGraph Public License for more details. +*/ + +#ifdef __APPLE__ + +#include +#include +#include +using namespace osgViewer; + + +// Carbon-Eventhandler to handle the click in the close-widget and the resize of windows + +static pascal OSStatus GraphicsWindowEventHandler(EventHandlerCallRef myHandler, EventRef event, void* userData) +{ + WindowRef window; + Rect bounds; + UInt32 whatHappened; + OSStatus result = eventNotHandledErr; /* report failure by default */ + + + GraphicsWindowCarbon* w = (GraphicsWindowCarbon*)userData; + if (!w) + return result; + + GetEventParameter(event, kEventParamDirectObject, typeWindowRef, NULL, + sizeof(window), NULL, &window); + + whatHappened = GetEventKind(event); + + + switch (whatHappened) + { + case kEventWindowBoundsChanging: + // left the code for live-resizing, but it is not used, because of window-refreshing issues... + GetEventParameter( event, kEventParamCurrentBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &bounds ); + + w->resized(bounds.left, bounds.top, bounds.right - bounds.left, bounds.bottom - bounds.top); + w->getEventQueue()->windowResize(bounds.left, bounds.top, bounds.right - bounds.left, bounds.bottom - bounds.top, w->getEventQueue()->getTime()); + w->requestRedraw(); + result = noErr; + break; + + case kEventWindowBoundsChanged: + InvalWindowRect(window, GetWindowPortBounds(window, &bounds)); + GetWindowBounds(window, kWindowContentRgn, &bounds); + w->resized(bounds.left, bounds.top, bounds.right - bounds.left, bounds.bottom - bounds.top); + w->getEventQueue()->windowResize(bounds.left, bounds.top, bounds.right - bounds.left, bounds.bottom - bounds.top, w->getEventQueue()->getTime()); + result = noErr; + break; + + case kEventWindowClosed: + w->requestClose(); + break; + + default: + /* If nobody handled the event, it gets propagated to the */ + /* application-level handler. */ + break; + + } + + return result; +} + +static bool s_quit_requested = false; + +// Application eventhandler -- listens for a quit-event +static pascal OSStatus ApplicationEventHandler(EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void *inUserData) +{ + + HICommand commandStruct; + + OSErr err = eventNotHandledErr; + + GetEventParameter (inEvent, kEventParamDirectObject, typeHICommand, NULL, sizeof(HICommand), NULL, &commandStruct); + + switch(commandStruct.commandID) { + case kHICommandQuit: + s_quit_requested = true; + err = noErr; + break; + + } + + return err; +} + +// AppleEventHandler, listens to the Quit-AppleEvent +static pascal OSErr QuitAppleEventHandler(const AppleEvent *theAppleEvent, AppleEvent *reply, long handlerRefcon ) { + s_quit_requested = true; + return (noErr); +} + + +namespace osgViewer +{ + +// small helper class which maps the raw key codes to osgGA::GUIEventAdapter::Keys + +class OSXKeyboardMap { + + public: + OSXKeyboardMap() + { + _keymap[53 ] = osgGA::GUIEventAdapter::KEY_Escape; + _keymap[115 ] = osgGA::GUIEventAdapter::KEY_Home; + _keymap[76 ] = osgGA::GUIEventAdapter::KEY_KP_Enter; + _keymap[119 ] = osgGA::GUIEventAdapter::KEY_End; + _keymap[36 ] = osgGA::GUIEventAdapter::KEY_Return; + _keymap[116 ] = osgGA::GUIEventAdapter::KEY_Page_Up; + _keymap[121 ] = osgGA::GUIEventAdapter::KEY_Page_Down; + _keymap[123 ] = osgGA::GUIEventAdapter::KEY_Left; + _keymap[124 ] = osgGA::GUIEventAdapter::KEY_Right; + _keymap[126 ] = osgGA::GUIEventAdapter::KEY_Up; + _keymap[125 ] = osgGA::GUIEventAdapter::KEY_Down; + _keymap[51 ] = osgGA::GUIEventAdapter::KEY_BackSpace; + _keymap[48 ] = osgGA::GUIEventAdapter::KEY_Tab; + _keymap[49 ] = osgGA::GUIEventAdapter::KEY_Space; + _keymap[117 ] = osgGA::GUIEventAdapter::KEY_Delete; + + _keymap[122 ] = osgGA::GUIEventAdapter::KEY_F1; + _keymap[120 ] = osgGA::GUIEventAdapter::KEY_F2; + _keymap[99 ] = osgGA::GUIEventAdapter::KEY_F3; + _keymap[118 ] = osgGA::GUIEventAdapter::KEY_F4; + _keymap[96 ] = osgGA::GUIEventAdapter::KEY_F5; + _keymap[97 ] = osgGA::GUIEventAdapter::KEY_F6; + _keymap[98 ] = osgGA::GUIEventAdapter::KEY_F7; + _keymap[100 ] = osgGA::GUIEventAdapter::KEY_F8; + _keymap[101 ] = osgGA::GUIEventAdapter::KEY_F9; + _keymap[109 ] = osgGA::GUIEventAdapter::KEY_F10; + _keymap[103 ] = osgGA::GUIEventAdapter::KEY_F11; + _keymap[111 ] = osgGA::GUIEventAdapter::KEY_F12; + + _keymap[75 ] = osgGA::GUIEventAdapter::KEY_KP_Divide; + _keymap[67 ] = osgGA::GUIEventAdapter::KEY_KP_Multiply; + _keymap[78 ] = osgGA::GUIEventAdapter::KEY_KP_Subtract; + _keymap[69 ] = osgGA::GUIEventAdapter::KEY_KP_Add; + _keymap[89 ] = osgGA::GUIEventAdapter::KEY_KP_Home; + _keymap[91 ] = osgGA::GUIEventAdapter::KEY_KP_Up; + _keymap[92 ] = osgGA::GUIEventAdapter::KEY_KP_Page_Up; + _keymap[86 ] = osgGA::GUIEventAdapter::KEY_KP_Left; + _keymap[87 ] = osgGA::GUIEventAdapter::KEY_KP_Begin; + _keymap[88 ] = osgGA::GUIEventAdapter::KEY_KP_Right; + _keymap[83 ] = osgGA::GUIEventAdapter::KEY_KP_End; + _keymap[84 ] = osgGA::GUIEventAdapter::KEY_KP_Down; + _keymap[85 ] = osgGA::GUIEventAdapter::KEY_KP_Page_Down; + _keymap[82 ] = osgGA::GUIEventAdapter::KEY_KP_Insert; + _keymap[65 ] = osgGA::GUIEventAdapter::KEY_KP_Delete; + + } + + ~OSXKeyboardMap() { + } + + unsigned int remapKey(unsigned int key, unsigned int rawkey) + { + KeyMap::iterator itr = _keymap.find(rawkey); + if (itr == _keymap.end()) return key; + else return itr->second; + } + private: + typedef std::map KeyMap; + KeyMap _keymap; +}; + +/** remaps a native os x keycode to a GUIEventAdapter-keycode */ +static unsigned int remapOSXKey(unsigned int key, unsigned int rawkey) +{ + static OSXKeyboardMap s_OSXKeyboardMap; + return s_OSXKeyboardMap.remapKey(key,rawkey); +} + +/** creates a pixelformat from a Trait */ +static AGLPixelFormat createPixelFormat(osg::GraphicsContext::Traits* traits) { + + std::vector attributes; + + attributes.push_back(AGL_NO_RECOVERY); + attributes.push_back(AGL_RGBA); + attributes.push_back(AGL_COMPLIANT); + + if (traits->doubleBuffer) attributes.push_back(AGL_DOUBLEBUFFER); + if (traits->quadBufferStereo) attributes.push_back(AGL_STEREO); + + attributes.push_back(AGL_RED_SIZE); attributes.push_back(traits->red); + attributes.push_back(AGL_GREEN_SIZE); attributes.push_back(traits->green); + attributes.push_back(AGL_BLUE_SIZE); attributes.push_back(traits->blue); + attributes.push_back(AGL_DEPTH_SIZE); attributes.push_back(traits->depth); + + if (traits->alpha) { attributes.push_back(AGL_ALPHA_SIZE); attributes.push_back(traits->alpha); } + + if (traits->stencil) { attributes.push_back(AGL_STENCIL_SIZE); attributes.push_back(traits->stencil); } + + // TODO + // missing accumulation-buffer-stuff + +#if defined(AGL_SAMPLE_BUFFERS_ARB) && defined (AGL_SAMPLES_ARB) + + if (traits->sampleBuffers) { attributes.push_back(AGL_SAMPLE_BUFFERS_ARB); attributes.push_back(traits->sampleBuffers); } + if (traits->sampleBuffers) { attributes.push_back(AGL_SAMPLES_ARB); attributes.push_back(traits->samples); } + +#endif + attributes.push_back(AGL_NONE); + + return aglChoosePixelFormat(NULL, 0, &(attributes.front())); +} + +/** This is the class we need to create for pbuffers, note its not a GraphicsWindow as it won't need any of the event handling and window mapping facilities.*/ +class GraphicsContextCarbon : public osg::GraphicsContext +{ + public: + + GraphicsContextCarbon(osg::GraphicsContext::Traits* traits): + _valid(false) + { + _traits = traits; + } + + virtual bool valid() const { return _valid; } + + /** Realise the GraphicsContext implementation, + * Pure virtual - must be implemented by concrate implementations of GraphicsContext. */ + virtual bool realizeImplementation() { osg::notify(osg::NOTICE)<<"GraphicsWindow::realizeImplementation() not implemented."<windowDecoration); + + // create the window + Rect bounds = {_traits->y, _traits->x, _traits->y + _traits->height, _traits->x + _traits->width}; + OSStatus err = 0; + WindowAttributes attr; + + if (_useWindowDecoration) + if (_traits->supportsResize) + attr = (kWindowStandardDocumentAttributes | kWindowStandardHandlerAttribute); + else + attr = (kWindowStandardDocumentAttributes | kWindowStandardHandlerAttribute) & ~kWindowResizableAttribute; + else { + attr = kWindowStandardHandlerAttribute; + if (_traits->supportsResize) + attr |= kWindowResizableAttribute; + } + + err = CreateNewWindow(kDocumentWindowClass, attr, &bounds, &_window); + if (err) { + osg::notify(osg::WARN) << "GraphicsWindowCarbon::realizeImplementation() failed creating a window: " << err << std::endl; + return false; + } + + // register window event handler to receive resize-events + EventTypeSpec windEventList[] = {{ kEventClassWindow, kEventWindowBoundsChanged},{ kEventClassWindow, kEventWindowClosed}}; + InstallWindowEventHandler(_window, NewEventHandlerUPP(GraphicsWindowEventHandler), 2, windEventList, this, NULL); + + // set the window title + if (!_traits->windowName.empty()) { + CFStringRef windowtitle = CFStringCreateWithBytes( kCFAllocatorDefault, (const UInt8*)(_traits->windowName.c_str()), _traits->windowName.length(),kCFStringEncodingUTF8, false ); + SetWindowTitleWithCFString( _window, windowtitle ); + } + + // create the context + _context = aglCreateContext (_pixelFormat, NULL); + if (!_context) { + osg::notify(osg::WARN) << "GraphicsWindowCarbon::realizeImplementation failed creating a context: " << aglGetError() << std::endl; + return false; + } + + makeCurrent(); + + // enable Multi-threaded OpenGL Execution: + CGLError cgerr = kCGLNoError; + CGLContextObj ctx = CGLGetCurrentContext(); + + cgerr = CGLEnable( ctx, kCGLCEMPEngine); + + if (cgerr != kCGLNoError ) + { + osg::notify(osg::INFO) << "GraphicsWindowCarbon:: Multi-threaded OpenGL Execution not available" << std::endl; + } + + aglSetDrawable(_context, GetWindowPort(_window)); + ShowWindow(_window); + + //enable vsync + if (_traits->vsync) { + GLint swap = 1; + aglSetInteger (_context, AGL_SWAP_INTERVAL, &swap); + } + + + _realized = true; + return _realized; +} + + + +bool GraphicsWindowCarbon::makeCurrentImplementation() +{ + + return (aglSetCurrentContext(_context) == GL_TRUE); +} + +bool GraphicsWindowCarbon::releaseContextImplementation() +{ + if (!_realized) + { + osg::notify(osg::NOTICE)<<"Warning: GraphicsWindow not realized, cannot do makeCurrent."<= 1)) { + MenuSelect(wheresMyMouse); + HiliteMenu(0); + return; + } + else if ((fwres != inContent) && (fwres > 0) && (mouseButton >= 1)) + { + return; + } + else + { + + // swap right and middle buttons so that middle button is 2, right button is 3. + if (mouseButton==3) mouseButton = 2; + else if (mouseButton==2) mouseButton = 3; + + // check tablet pointer device and map it to a musebutton + TabletProximityRec theTabletRecord; // The Tablet Proximity Record + // Extract the Tablet Proximity reccord from the event. + if(noErr == GetEventParameter(theEvent, kEventParamTabletProximityRec, + typeTabletProximityRec, NULL, + sizeof(TabletProximityRec), + NULL, (void *)&theTabletRecord)) + { + osgGA::GUIEventAdapter::TabletPointerType pointerType; + switch(theTabletRecord.pointerType) + { + case 1: // pen + pointerType = osgGA::GUIEventAdapter::PEN; + break; + + case 2: // puck + pointerType = osgGA::GUIEventAdapter::PUCK; + break; + + case 3: //eraser + pointerType = osgGA::GUIEventAdapter::ERASER; + break; + + default: + pointerType = osgGA::GUIEventAdapter::UNKNOWN; + break; + } + + getEventQueue()->penProximity(pointerType, (theTabletRecord.enterProximity != 0)); + } + + switch(GetEventKind(theEvent)) + { + case kEventMouseDown: + { + float mx =wheresMyMouse.h; + float my =wheresMyMouse.v; + transformMouseXY(mx, my); + getEventQueue()->mouseButtonPress(mx, my, mouseButton); + } + break; + case kEventMouseUp: + { + float mx =wheresMyMouse.h; + float my =wheresMyMouse.v; + transformMouseXY(mx, my); + getEventQueue()->mouseButtonRelease(mx, my, mouseButton); + } + break; + + case kEventMouseDragged: + { + // get pressure from the pen, only when mouse/pen is dragged + TabletPointRec theTabletRecord; + if(noErr == GetEventParameter(theEvent, kEventParamTabletPointRec, typeTabletPointRec, NULL, + sizeof(TabletPointRec), NULL, (void *)&theTabletRecord)) { + + getEventQueue()->penPressure(theTabletRecord.pressure / 65535.0f); + + } + + float mx =wheresMyMouse.h; + float my =wheresMyMouse.v; + transformMouseXY(mx, my); + getEventQueue()->mouseMotion(mx, my); + } + break; + + case kEventMouseMoved: + { + float mx = wheresMyMouse.h; + float my = wheresMyMouse.v; + transformMouseXY(mx, my); + getEventQueue()->mouseMotion(mx, my); + } + break; + + // mouse with scroll-wheels + case kEventMouseWheelMoved: + { + EventMouseWheelAxis axis; + SInt32 delta; + if (noErr == GetEventParameter( theEvent, kEventParamMouseWheelAxis, typeMouseWheelAxis, NULL, sizeof(axis), NULL, &axis )) { + if (noErr == GetEventParameter( theEvent, kEventParamMouseWheelDelta, typeLongInteger, NULL, sizeof(delta), NULL, &delta )) { + switch (axis) { + case kEventMouseWheelAxisX: + getEventQueue()->mouseScroll( (delta > 0) ? osgGA::GUIEventAdapter::SCROLL_RIGHT : osgGA::GUIEventAdapter::SCROLL_LEFT); + break; + case kEventMouseWheelAxisY: + getEventQueue()->mouseScroll( (delta < 0) ? osgGA::GUIEventAdapter::SCROLL_DOWN : osgGA::GUIEventAdapter::SCROLL_UP); + break; + } + } + } + } + break; + + // new trackpads and mighty mouse, (not officially documented, see http://developer.apple.com/qa/qa2005/qa1453.html ) + case 11: + { + enum + { + kEventParamMouseWheelSmoothVerticalDelta = 'saxy', // typeSInt32 + kEventParamMouseWheelSmoothHorizontalDelta = 'saxx', // typeSInt32 + }; + + SInt32 scroll_delta_x = 0; + SInt32 scroll_delta_y = 0; + OSErr err = noErr; + err = GetEventParameter( theEvent, kEventParamMouseWheelSmoothVerticalDelta, typeLongInteger, NULL, sizeof(scroll_delta_y), NULL, &scroll_delta_y ); + err = GetEventParameter( theEvent, kEventParamMouseWheelSmoothHorizontalDelta, typeLongInteger, NULL, sizeof(scroll_delta_x), NULL, &scroll_delta_x ); + + if ((scroll_delta_x != 0) || (scroll_delta_y != 0)) { + getEventQueue()->mouseScroll2D( scroll_delta_x, scroll_delta_y); + } + } + break; + + default: + return; + } + } +} + + + +void GraphicsWindowCarbon::handleKeyboardEvent(EventRef theEvent) +{ + + + OSStatus status; + + // Key modifiers, Numlock not supported... + + UInt32 modifierKeys; + unsigned int modifierMask = 0; + GetEventParameter (theEvent,kEventParamKeyModifiers,typeUInt32, NULL,sizeof(modifierKeys), NULL,&modifierKeys); + + + if( modifierKeys & shiftKey ) + { + modifierMask |= osgGA::GUIEventAdapter::MODKEY_SHIFT; + } + if( modifierKeys & alphaLock ) + { + modifierMask |= osgGA::GUIEventAdapter::MODKEY_CAPS_LOCK; + } + if( modifierKeys & controlKey ) + { + modifierMask |= osgGA::GUIEventAdapter::MODKEY_CTRL; + } + if( modifierKeys & optionKey ) + { + modifierMask |= osgGA::GUIEventAdapter::MODKEY_ALT; + } + + // we map the command-key to the META-key + if( modifierKeys & cmdKey ) + { + modifierMask |= osgGA::GUIEventAdapter::MODKEY_META; + } + + + UInt32 rawkey; + GetEventParameter (theEvent,kEventParamKeyCode,typeUInt32, NULL,sizeof(rawkey), NULL,&rawkey); + + // std::cout << "key code: " << rawkey << " modifiers: " << modifierKeys << std::endl; + + UInt32 dataSize; + /* jbw check return status so that we don't allocate a huge array */ + status = GetEventParameter( theEvent, kEventParamKeyUnicodes, typeUnicodeText, NULL, 0, &dataSize, NULL ); + if (status != noErr) return; + if (dataSize<=1) return; + + UniChar* uniChars = new UniChar[dataSize+1]; + GetEventParameter( theEvent, kEventParamKeyUnicodes, typeUnicodeText, NULL, dataSize, NULL, (void*)uniChars ); + + unsigned int keychar = remapOSXKey(static_cast(uniChars[0]), rawkey); + + switch(GetEventKind(theEvent)) + { + case kEventRawKeyDown: + case kEventRawKeyRepeat: + { + getEventQueue()->keyPress(keychar); + getEventQueue()->getCurrentEventState()->setModKeyMask(modifierMask); + break; + } + + case kEventRawKeyUp: + { + getEventQueue()->keyRelease(keychar); + getEventQueue()->getCurrentEventState()->setModKeyMask(modifierMask); + break; + } + + default: + break; + + } + + delete[] uniChars; + + return; +} + + + +void GraphicsWindowCarbon::checkEvents() +{ + if (!_realized) return; + + EventRef theEvent; + EventTargetRef theTarget = GetEventDispatcherTarget(); + while (ReceiveNextEvent(0, NULL, 0,true, &theEvent)== noErr) + { + switch(GetEventClass(theEvent)) + { + case kEventClassTablet: + case kEventClassMouse: + handleMouseEvent(theEvent); + break; + + case kEventClassKeyboard: + handleKeyboardEvent(theEvent); + break; + + case kEventClassApplication: + switch (GetEventKind(theEvent)) { + case kEventAppQuit: + getEventQueue()->quitApplication(); + break; + } + break; + + case kEventClassAppleEvent: + { + EventRecord eventRecord; + ConvertEventRefToEventRecord(theEvent, &eventRecord); + AEProcessAppleEvent(&eventRecord); + return; + } + break; + + } + SendEventToEventTarget (theEvent, theTarget); + ReleaseEvent(theEvent); + } + if (_closeRequested) + close(true); + + if (s_quit_requested) { + getEventQueue()->quitApplication(); + s_quit_requested = false; + } + +} + + + +void GraphicsWindowCarbon::grabFocus() +{ + SelectWindow(_window); +} + + + +void GraphicsWindowCarbon::grabFocusIfPointerInWindow() +{ + // TODO: implement +} + + + +void GraphicsWindowCarbon::transformMouseXY(float& x, float& y) +{ + if (getEventQueue()->getUseFixedMouseInputRange()) + { + osgGA::GUIEventAdapter* eventState = getEventQueue()->getCurrentEventState(); + x = eventState->getXmin() + (eventState->getXmax()-eventState->getXmin())*x/float(_traits->width); + y = eventState->getYmin() + (eventState->getYmax()-eventState->getYmin())*y/float(_traits->height); + } +} + + + +struct OSXCarbonWindowingSystemInterface : public osg::GraphicsContext::WindowingSystemInterface +{ + + OSXCarbonWindowingSystemInterface() : + _displayCount(0), + _displayIds(NULL) + { + if( CGGetActiveDisplayList( 0, NULL, &_displayCount ) != CGDisplayNoErr ) + osg::notify(osg::WARN) << "OSXCarbonWindowingSystemInterface: could not get # of screens" << std::endl; + + _displayIds = new CGDirectDisplayID[_displayCount]; + if( CGGetActiveDisplayList( _displayCount, _displayIds, &_displayCount ) != CGDisplayNoErr ) + osg::notify(osg::WARN) << "OSXCarbonWindowingSystemInterface: CGGetActiveDisplayList failed" << std::endl; + + // register application event handler and AppleEventHandler to get quit-events: + static const EventTypeSpec menueventSpec = {kEventClassCommand, kEventCommandProcess}; + OSErr status = InstallEventHandler(GetApplicationEventTarget(), NewEventHandlerUPP(ApplicationEventHandler), 1, &menueventSpec, 0, NULL); + status = AEInstallEventHandler( kCoreEventClass, kAEQuitApplication, NewAEEventHandlerUPP(QuitAppleEventHandler), 0, false); + } + + ~OSXCarbonWindowingSystemInterface() { + if (_displayIds) + delete[] _displayIds; + _displayIds = NULL; + } + + inline CGDirectDisplayID getDisplayID(const osg::GraphicsContext::ScreenIdentifier& si) { + return _displayIds[si.screenNum]; + } + + virtual unsigned int getNumScreens(const osg::GraphicsContext::ScreenIdentifier& si) + { + return _displayCount; + } + + virtual void getScreenResolution(const osg::GraphicsContext::ScreenIdentifier& si, unsigned int& width, unsigned int& height) + { + CGDirectDisplayID id = getDisplayID(si); + width = CGDisplayPixelsWide(id); + height = CGDisplayPixelsHigh(id); + } + + virtual osg::GraphicsContext* createGraphicsContext(osg::GraphicsContext::Traits* traits) + { + if (traits->pbuffer) + { + osg::ref_ptr pbuffer = new GraphicsContextCarbon(traits); + if (pbuffer->valid()) return pbuffer.release(); + else return 0; + } + else + { + osg::ref_ptr window = new GraphicsWindowCarbon(traits); + if (window->valid()) return window.release(); + else return 0; + } + } + + private: + CGDisplayCount _displayCount; + CGDirectDisplayID* _displayIds; +}; + + + +struct RegisterWindowingSystemInterfaceProxy +{ + RegisterWindowingSystemInterfaceProxy() + { + osg::GraphicsContext::setWindowingSystemInterface(new OSXCarbonWindowingSystemInterface); + } + + ~RegisterWindowingSystemInterfaceProxy() + { + osg::GraphicsContext::setWindowingSystemInterface(0); + } +}; + +RegisterWindowingSystemInterfaceProxy createWindowingSystemInterfaceProxy; + +#endif diff --git a/src/osgViewer/Viewer.cpp b/src/osgViewer/Viewer.cpp index 73deeac70..0c5782aee 100644 --- a/src/osgViewer/Viewer.cpp +++ b/src/osgViewer/Viewer.cpp @@ -27,6 +27,7 @@ Viewer::Viewer(): _firstFrame(true), _done(false), _keySetsDone(osgGA::GUIEventAdapter::KEY_Escape), + _quitEventSetsDone(true), _threadingModel(ThreadPerContext), _numThreadsOnBarrier(0) { @@ -720,7 +721,7 @@ void Viewer::eventTraversal() } } -#if 0 +#if 0 // pointer coordinate transform for(osgGA::EventQueue::Events::iterator itr = events.begin(); itr != events.end(); @@ -789,6 +790,11 @@ void Viewer::eventTraversal() case(osgGA::GUIEventAdapter::KEYUP): osg::notify(osg::NOTICE)<<" KEYUP '"<<(char)event->getKey()<<"'"<getWindowX()<<"/"<getWindowY()<<" x "<getWindowWidth()<<"/"<getWindowHeight() << std::endl; + break; + case(osgGA::GUIEventAdapter::QUIT_APPLICATION): + osg::notify(osg::NOTICE)<<" QUIT_APPLICATION " << std::endl; case(osgGA::GUIEventAdapter::RESIZE): osg::notify(osg::NOTICE)<<" RESIZE "<getKey()=='c') { setThreadingModel(ThreadPerCamera); } else if (event->getKey()=='w') { setThreadingModel(ThreadPerContext); } break; + + case(osgGA::GUIEventAdapter::QUIT_APPLICATION): + _done = true; + break; + default: break; }