diff --git a/Bridging-Header.h b/Bridging-Header.h index d6aa307..8b13789 100644 --- a/Bridging-Header.h +++ b/Bridging-Header.h @@ -1 +1 @@ -#import + diff --git a/BuddyBuildSDK.framework/BuddyBuildSDK b/BuddyBuildSDK.framework/BuddyBuildSDK deleted file mode 100644 index e10169d..0000000 Binary files a/BuddyBuildSDK.framework/BuddyBuildSDK and /dev/null differ diff --git a/BuddyBuildSDK.framework/Headers/BuddyBuildSDK.h b/BuddyBuildSDK.framework/Headers/BuddyBuildSDK.h deleted file mode 100644 index 2be7413..0000000 --- a/BuddyBuildSDK.framework/Headers/BuddyBuildSDK.h +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright (c) 2015 Doe Pics Hit, Inc. All rights reserved. - -#import -#import - -typedef NSString*(^BBReturnNSStringCallback)(void); -typedef BOOL (^BBReturnBooleanCallback)(void); -typedef void (^BBCallback)(void); - -@interface BuddyBuildSDK : NSObject - -// Deprecated -+ (void)setup:(id)bbAppDelegate; - -/** - * Initialize the SDK - * - * This should be called at (or near) the start of the appdelegate - */ -+ (void)setup; - -/* - * Associate arbitrary key/value pairs with your crash reports and user feedback - * which will be visible from the buddybuild dashboard - */ -+ (void)setMetadataObject:(id)object forKey:(NSString*)key; - -/* - * Programatically trigger the screenshot feedback UI without pressing the screenshot buttons - * If you have screenshot feedback disabled through the buddybuild setting, - * you can still trigger it by calling this method - */ - -+ (void)takeScreenshotAndShowFeedbackScreen; - -/* - * If you distribute a build to someone with their email address, buddybuild can - * figure out who they are and attach their info to feedback and crash reports. - * - * However, if you send out a build to a mailing list, or through TestFlight or - * the App Store we are unable to infer who they are. If you see 'Unknown User' - * this is likely the cause. - - * Often you'll know the identity of your user, for example, after they've - * logged in. You can provide buddybuild a callback to identify the current user. - */ - -+ (void)setUserDisplayNameCallback:(BBReturnNSStringCallback)bbCallback; - -/* - * You might have API keys and other secrets that your app needs to consume. - * However, you may not want to check these secrets into the source code. - * - * You can provide your secrets to buddybuild. Buddybuild can then expose them - * to you at build time through environment variables. These secrets can also be - * configured to be included into built app. We obfuscate the device keys to - * prevent unauthorized access. - */ -+ (NSString*)valueForDeviceKey:(NSString*)bbKey; - -/* - * To temporarily disable screenshot interception you can provide a callback - * here. - * - * When screenshotting is turned on through a buddybuild setting, and no - * callback is provided then screenshotting is by default on. - * - * If screenshotting is disabled through the buddybuild setting, then this - * callback has no effect - * - */ -+ (void)setScreenshotAllowedCallback:(BBReturnBooleanCallback)bbCallback; - -/* - * Once a piece of feedback is sent this callback will be called - * so you can take additional actions if necessary - */ -+ (void)setScreenshotFeedbackSentCallback:(BBCallback)bbCallback; - -/* - * Once a crash report is sent this callback will be called - * so you can take additional actions if necessary - */ -+ (void)setCrashReportSentCallback:(BBCallback)bbCallback; - -/* - * Buddybuild Build Number - */ -+ (NSString*)buildNumber; - -/* - * Scheme - */ -+ (NSString*)scheme; - -/* - * App ID - */ -+ (NSString*)appID; - -/* - * Build ID - */ -+ (NSString*)buildID; - -/* - * Build Configuration - */ - -+ (NSString*)buildConfiguration; - -/* - * Branch name for this build - */ - -+ (NSString*)branchName; - -/* - * Returns the user's email or more specifically, the email that was used to download and deploy the build. - * Returns "Unknown User" in cases where buddybuild is unable to identify the user. - * This is the same email seen in crash instances and feedbacks in the dashboard - * NOTE: To be called after [BuddyBuildSDK setup] - * this is different than the one returned in the user display name callback. - */ -+ (NSString*)userEmail; - -/* Manually invoke the screenshot tutorial - * If you don't want it to appear on app launch, disable it in the - * dashboard by going to settings -> buddybuildSDK -> Feature Settings and turning off the screenshot tutorial - * You will be able to show it at any time from anywhere in your app - */ -+ (void)showScreenshotTutorial; - - -+ (void)crash; - -/* - * Logs to the console only while the debugger is attached (when running in Xcode) - * They can be downloaded in crash instances and feedbacks in the dashboard - */ -+ (void)log:(NSString *)message; - -/* - * Starts recording video when running a UI test case. - * Should be called after each "[[[XCUIApplication alloc] init] launch];" in your UI tests codebase. - * Only run in buddybuild while the UI tests run. It will not run locally, on real iOS devices or on TestFlight and App Store installs. - */ -+ (void)startUITests; - -/* - * Stops recording video at the end of a UI test case. - * Should be called before each "[super tearDown];" in your UI tests codebase. - * Only run in buddybuild while the UI tests run. It will not run locally, on real iOS devices or on TestFlight and App Store installs. - - */ -+ (void)stopUITests; - -/* - * Should be called in your app delegate in -[UIApplication application:didReceiveRemoteNotification:fetchCompletionHandler]. - * Only run in buddybuild while the UI tests run. It will not run locally, on real iOS devices or on TestFlight and App Store installs. - */ -+ (void)uiTestsDidReceiveRemoteNotification:(NSDictionary *)userInfo; - -/* - * DEPRECATED IN SDK 1.0.16+, use setMetadataObject:forKey: - */ -+ (void)setCrashMetadataObject:(id)object forKey:(NSString*)key __deprecated_msg("Use setMetadataObject:forKey: instead"); - - -@end - -@interface UIView (BuddyBuildSDK) - -// Certain features of buddybuild involve capturing the screen (either through a static screenshot, or as a video for instant replays in crash reporting or video feedback. -// Your app may contain certain sensitive customer information that you do not want to be included in the video. -// If you set this property to be true, this view will be redacted from the screen capture and blacked out - -@property (nonatomic, assign) BOOL buddybuildViewIsPrivate; - -@end diff --git a/BuddyBuildSDK.framework/Modules/module.modulemap b/BuddyBuildSDK.framework/Modules/module.modulemap deleted file mode 100644 index 374fb8a..0000000 --- a/BuddyBuildSDK.framework/Modules/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -module BuddyBuildSDK { - umbrella header "Headers/BuddyBuildSDK.h" - - export * - module * { export * } -} diff --git a/BuddyBuildSDK.framework/build.num b/BuddyBuildSDK.framework/build.num deleted file mode 100644 index 14ea88c..0000000 --- a/BuddyBuildSDK.framework/build.num +++ /dev/null @@ -1 +0,0 @@ -03cf65e diff --git a/Cartfile b/Cartfile index 38609dd..518d7e3 100644 --- a/Cartfile +++ b/Cartfile @@ -1 +1,4 @@ github "mixpanel/mixpanel-iphone" +github "onekiloparsec/SwiftAA" +github "SwiftKickMobile/SwiftMessages" + diff --git a/Cartfile.resolved b/Cartfile.resolved index e200cef..b8f3d0b 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,2 +1,3 @@ -github "Thumbworks/SwiftAA" "10f9432e783b864a6a43f7c2868f384456fc03a5" -github "mixpanel/mixpanel-iphone" "v3.1.9" +github "SwiftKickMobile/SwiftMessages" "6.0.2" +github "mixpanel/mixpanel-iphone" "v3.4.5" +github "onekiloparsec/SwiftAA" "2.0.3" diff --git a/Design/AppStoreScreenShots.sketch b/Design/AppStoreScreenShots.sketch new file mode 100644 index 0000000..6e1cbae Binary files /dev/null and b/Design/AppStoreScreenShots.sketch differ diff --git a/Design/ClockIcon.sketch b/Design/ClockIcon.sketch new file mode 100644 index 0000000..c72aee5 Binary files /dev/null and b/Design/ClockIcon.sketch differ diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..7a118b4 --- /dev/null +++ b/Gemfile @@ -0,0 +1,3 @@ +source "https://rubygems.org" + +gem "fastlane" diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..49026f3 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,159 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.0) + addressable (2.6.0) + public_suffix (>= 2.0.2, < 4.0) + atomos (0.1.3) + babosa (1.0.2) + claide (1.0.2) + colored (1.2) + colored2 (3.1.2) + commander-fastlane (4.4.6) + highline (~> 1.7.2) + declarative (0.0.10) + declarative-option (0.1.0) + digest-crc (0.4.1) + domain_name (0.5.20180417) + unf (>= 0.0.5, < 1.0.0) + dotenv (2.7.2) + emoji_regex (1.0.1) + excon (0.62.0) + faraday (0.15.4) + multipart-post (>= 1.2, < 3) + faraday-cookie_jar (0.0.6) + faraday (>= 0.7.4) + http-cookie (~> 1.0.0) + faraday_middleware (0.13.1) + faraday (>= 0.7.4, < 1.0) + fastimage (2.1.5) + fastlane (2.119.0) + CFPropertyList (>= 2.3, < 4.0.0) + addressable (>= 2.3, < 3.0.0) + babosa (>= 1.0.2, < 2.0.0) + bundler (>= 1.12.0, < 3.0.0) + colored + commander-fastlane (>= 4.4.6, < 5.0.0) + dotenv (>= 2.1.1, < 3.0.0) + emoji_regex (>= 0.1, < 2.0) + excon (>= 0.45.0, < 1.0.0) + faraday (~> 0.9) + faraday-cookie_jar (~> 0.0.6) + faraday_middleware (~> 0.9) + fastimage (>= 2.1.0, < 3.0.0) + gh_inspector (>= 1.1.2, < 2.0.0) + google-api-client (>= 0.21.2, < 0.24.0) + google-cloud-storage (>= 1.15.0, < 2.0.0) + highline (>= 1.7.2, < 2.0.0) + json (< 3.0.0) + mini_magick (~> 4.5.1) + multi_json + multi_xml (~> 0.5) + multipart-post (~> 2.0.0) + plist (>= 3.1.0, < 4.0.0) + public_suffix (~> 2.0.0) + rubyzip (>= 1.2.2, < 2.0.0) + security (= 0.1.3) + simctl (~> 1.6.3) + slack-notifier (>= 2.0.0, < 3.0.0) + terminal-notifier (>= 2.0.0, < 3.0.0) + terminal-table (>= 1.4.5, < 2.0.0) + tty-screen (>= 0.6.3, < 1.0.0) + tty-spinner (>= 0.8.0, < 1.0.0) + word_wrap (~> 1.0.0) + xcodeproj (>= 1.8.1, < 2.0.0) + xcpretty (~> 0.3.0) + xcpretty-travis-formatter (>= 0.0.3) + gh_inspector (1.1.3) + google-api-client (0.23.9) + addressable (~> 2.5, >= 2.5.1) + googleauth (>= 0.5, < 0.7.0) + httpclient (>= 2.8.1, < 3.0) + mime-types (~> 3.0) + representable (~> 3.0) + retriable (>= 2.0, < 4.0) + signet (~> 0.9) + google-cloud-core (1.3.0) + google-cloud-env (~> 1.0) + google-cloud-env (1.0.5) + faraday (~> 0.11) + google-cloud-storage (1.16.0) + digest-crc (~> 0.4) + google-api-client (~> 0.23) + google-cloud-core (~> 1.2) + googleauth (>= 0.6.2, < 0.10.0) + googleauth (0.6.7) + faraday (~> 0.12) + jwt (>= 1.4, < 3.0) + memoist (~> 0.16) + multi_json (~> 1.11) + os (>= 0.9, < 2.0) + signet (~> 0.7) + highline (1.7.10) + http-cookie (1.0.3) + domain_name (~> 0.5) + httpclient (2.8.3) + json (2.2.0) + jwt (2.1.0) + memoist (0.16.0) + mime-types (3.2.2) + mime-types-data (~> 3.2015) + mime-types-data (3.2019.0331) + mini_magick (4.5.1) + multi_json (1.13.1) + multi_xml (0.6.0) + multipart-post (2.0.0) + nanaimo (0.2.6) + naturally (2.2.0) + os (1.0.0) + plist (3.5.0) + public_suffix (2.0.5) + representable (3.0.4) + declarative (< 0.1.0) + declarative-option (< 0.2.0) + uber (< 0.2.0) + retriable (3.1.2) + rouge (2.0.7) + rubyzip (1.2.2) + security (0.1.3) + signet (0.11.0) + addressable (~> 2.3) + faraday (~> 0.9) + jwt (>= 1.5, < 3.0) + multi_json (~> 1.10) + simctl (1.6.5) + CFPropertyList + naturally + slack-notifier (2.3.2) + terminal-notifier (2.0.0) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + tty-cursor (0.6.1) + tty-screen (0.6.5) + tty-spinner (0.9.0) + tty-cursor (~> 0.6.0) + uber (0.1.0) + unf (0.1.4) + unf_ext + unf_ext (0.0.7.5) + unicode-display_width (1.5.0) + word_wrap (1.0.0) + xcodeproj (1.8.2) + CFPropertyList (>= 2.3.3, < 4.0) + atomos (~> 0.1.3) + claide (>= 1.0.2, < 2.0) + colored2 (~> 3.1) + nanaimo (~> 0.2.6) + xcpretty (0.3.0) + rouge (~> 2.0.7) + xcpretty-travis-formatter (1.0.0) + xcpretty (~> 0.2, >= 0.0.7) + +PLATFORMS + ruby + +DEPENDENCIES + fastlane + +BUNDLED WITH + 2.0.1 diff --git a/SolarSystem.xcodeproj/project.pbxproj b/SolarSystem.xcodeproj/project.pbxproj index 83cb56c..5de6694 100644 --- a/SolarSystem.xcodeproj/project.pbxproj +++ b/SolarSystem.xcodeproj/project.pbxproj @@ -9,29 +9,37 @@ /* Begin PBXBuildFile section */ 17FC693338E5C451EEFBD6FA /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 39DFC5695AC98A1CFA61E623 /* AssetsLibrary.framework */; }; 36B36DE405C67DDC5ADFD0AB /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A6E595CD2E4C2C0D91515B6 /* QuartzCore.framework */; }; - 5F01E11B1F39419100BFF9B0 /* AboutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F01E11A1F39419100BFF9B0 /* AboutViewController.swift */; }; - 5F0662BB1F1D1F6600D66563 /* PlanetCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F0662BA1F1D1F6600D66563 /* PlanetCollectionViewController.swift */; }; 5F0CC2141F2814BD00E25474 /* Mixpanel.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F0CC2131F2814BD00E25474 /* Mixpanel.framework */; }; + 5F0E92072215D88B000D1EA9 /* PlanetCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5F0E92062215D88B000D1EA9 /* PlanetCell.xib */; }; + 5F0E92092215D895000D1EA9 /* PlanetCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F0E92082215D895000D1EA9 /* PlanetCell.swift */; }; + 5F1950D822323D720072B627 /* MenuContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F1950D722323D720072B627 /* MenuContainerView.swift */; }; + 5F1950DA22323D9D0072B627 /* MenuContainerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F1950D922323D9D0072B627 /* MenuContainerViewController.swift */; }; + 5F1BD274225559D10089A524 /* WhiteView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F1BD273225559D10089A524 /* WhiteView.swift */; }; 5F27FD181F061C5200498524 /* Mars.scn in Resources */ = {isa = PBXBuildFile; fileRef = 5F27FD171F061C5200498524 /* Mars.scn */; }; 5F28BC341F3388AF003E013F /* ScaleReference.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F28BC331F3388AF003E013F /* ScaleReference.swift */; }; - 5F2D207F1F5A007E005D2C3C /* TutorialViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F2D207E1F5A0031005D2C3C /* TutorialViewController.swift */; }; 5F30D4DC1F16CD68006A45B1 /* Planet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F30D4DB1F16CD68006A45B1 /* Planet.swift */; }; 5F30D4DD1F16CD7D006A45B1 /* Planet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F30D4DB1F16CD68006A45B1 /* Planet.swift */; }; 5F30D4DF1F16CDB7006A45B1 /* PlanetoidGroupNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F30D4DE1F16CDB7006A45B1 /* PlanetoidGroupNode.swift */; }; 5F30D4E01F16CDBD006A45B1 /* PlanetoidGroupNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F30D4DE1F16CDB7006A45B1 /* PlanetoidGroupNode.swift */; }; 5F39596E1EE9898200EDEBEE /* Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F39596D1EE934B200EDEBEE /* Utilities.swift */; }; + 5F3B3360220FEA5400F961C1 /* TutorialView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5F3B335F220FEA5400F961C1 /* TutorialView.xib */; }; + 5F3B33662213DD6D00F961C1 /* TutorialViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F3B33652213DD6D00F961C1 /* TutorialViewController.swift */; }; + 5F3B33682213DE0800F961C1 /* AboutView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5F3B33672213DE0800F961C1 /* AboutView.xib */; }; + 5F3B336D2213E15100F961C1 /* SwiftMessages.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F3B336C2213E15100F961C1 /* SwiftMessages.framework */; }; + 5F3B336F2213E1A800F961C1 /* AboutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F3B336E2213E1A800F961C1 /* AboutView.swift */; }; 5F78D70E1F3D222A0059FDA1 /* AppRater.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F78D70D1F3D222A0059FDA1 /* AppRater.swift */; }; - 5F8B38BD1F7474BC00F0F7D1 /* SwiftAA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F8B38BC1F7474B800F0F7D1 /* SwiftAA.framework */; }; - 5F8B38C01F74760B00F0F7D1 /* SwiftAA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F8B38BC1F7474B800F0F7D1 /* SwiftAA.framework */; }; - 5F8B38C11F74760B00F0F7D1 /* SwiftAA.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5F8B38BC1F7474B800F0F7D1 /* SwiftAA.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 5F7AED05225561130090E27D /* StatusLabelView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5F7AED04225561130090E27D /* StatusLabelView.xib */; }; + 5F7AED07225561570090E27D /* StatusLabelViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F7AED06225561570090E27D /* StatusLabelViewController.swift */; }; + 5F7AED09225561810090E27D /* StatusLabelView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F7AED08225561810090E27D /* StatusLabelView.swift */; }; + 5F86ACB7220EA5370011A98B /* SwiftAA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F86ACB6220EA5370011A98B /* SwiftAA.framework */; }; 5F8B38C61F74CAE600F0F7D1 /* FocusSquare.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F8B38C41F74CAD200F0F7D1 /* FocusSquare.swift */; }; 5F8B38C71F74CAE900F0F7D1 /* FocusSquareSegment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F8B38C51F74CAD200F0F7D1 /* FocusSquareSegment.swift */; }; 5F8B38C91F74CCEB00F0F7D1 /* VirtualObjectARView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F8B38C81F74CCE800F0F7D1 /* VirtualObjectARView.swift */; }; 5F9126B61F2F8EAE00678A8F /* PinchController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F9126B51F2F8EAE00678A8F /* PinchController.swift */; }; 5F9126B71F2F918100678A8F /* PinchController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F9126B51F2F8EAE00678A8F /* PinchController.swift */; }; - 5FA2CD1E1F5A7D5B00E870A5 /* nasalization-rg.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5FA2CD1C1F5A7B8E00E870A5 /* nasalization-rg.ttf */; }; 5FA91A731F02C5DC00D8AFC1 /* Saturn.scn in Resources */ = {isa = PBXBuildFile; fileRef = 5FA91A721F02C5DC00D8AFC1 /* Saturn.scn */; }; 5FA91A751F02C76C00D8AFC1 /* Uranus.scn in Resources */ = {isa = PBXBuildFile; fileRef = 5FA91A741F02C76C00D8AFC1 /* Uranus.scn */; }; + 5FAD1FB62232052200011A29 /* MenuContainerView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5FAD1FB52232052200011A29 /* MenuContainerView.xib */; }; 5FAD55E21F50852F0016B04E /* DatePickerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FAD55E11F50852F0016B04E /* DatePickerViewController.swift */; }; 5FB0E6771F05D26E00B3000B /* Venus.scn in Resources */ = {isa = PBXBuildFile; fileRef = 5FB0E6761F05D26E00B3000B /* Venus.scn */; }; 5FBAF96E1EE8B78400FAA54B /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FBAF96D1EE8B78400FAA54B /* AppDelegate.swift */; }; @@ -40,6 +48,7 @@ 5FBAF9751EE8B78400FAA54B /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5FBAF9731EE8B78400FAA54B /* Main.storyboard */; }; 5FBAF9771EE8B78400FAA54B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5FBAF9761EE8B78400FAA54B /* Assets.xcassets */; }; 5FBAF97A1EE8B78400FAA54B /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5FBAF9781EE8B78400FAA54B /* LaunchScreen.storyboard */; }; + 5FBD07DD221693B30060A6C0 /* PlanetDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FBD07DC221693B30060A6C0 /* PlanetDataSource.swift */; }; 5FC65CD81F01C93600D8C9CB /* Sun.scn in Resources */ = {isa = PBXBuildFile; fileRef = 5FC65CD71F01C93600D8C9CB /* Sun.scn */; }; 5FC65CDA1F01C98800D8C9CB /* Mercury.scn in Resources */ = {isa = PBXBuildFile; fileRef = 5FC65CD91F01C98800D8C9CB /* Mercury.scn */; }; 5FC65CDD1F02315000D8C9CB /* Jupiter.scn in Resources */ = {isa = PBXBuildFile; fileRef = 5FC65CDC1F02315000D8C9CB /* Jupiter.scn */; }; @@ -58,10 +67,12 @@ 5FDD81E51F0DBD2D00F0B92D /* Venus.scn in Resources */ = {isa = PBXBuildFile; fileRef = 5FB0E6761F05D26E00B3000B /* Venus.scn */; }; 5FDD81E61F0DBD2D00F0B92D /* Mars.scn in Resources */ = {isa = PBXBuildFile; fileRef = 5F27FD171F061C5200498524 /* Mars.scn */; }; 5FDD81E71F0DBD4000F0B92D /* art.scnassets in Resources */ = {isa = PBXBuildFile; fileRef = 5FBAF96F1EE8B78400FAA54B /* art.scnassets */; }; + 5FDE10942215B8DF00607C0A /* HUDView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5FDE10932215B8DF00607C0A /* HUDView.xib */; }; + 5FDE10962215B92200607C0A /* HUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FDE10952215B92200607C0A /* HUDView.swift */; }; + 5FDE10982215B99C00607C0A /* HUDViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FDE10972215B99C00607C0A /* HUDViewController.swift */; }; 5FF9CEF11EE9C00D00A84513 /* SceneKitExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FF9CEF01EE9C00D00A84513 /* SceneKitExtension.swift */; }; 65E69A70C61562F94B2514E1 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 46267284C2EBEFD65B20CCA6 /* CoreText.framework */; }; 81F43EDC0F64A38CEE5F37C2 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F19230B2264C6E45B5CA90A /* AVFoundation.framework */; }; - 857C7513D5A11193D90F0F17 /* BuddyBuildSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9C54F36D8B0BA965D4145B6 /* BuddyBuildSDK.framework */; }; 8F909B3F9BC3BA392B1542DF /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9EE6A4A4E0D34347FC052697 /* CoreMedia.framework */; }; 98E5F380AC90E1950A5C65FA /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84A97186C5D8E146BE8573A1 /* CoreTelephony.framework */; }; CD562CDF09A6E4A6A86EE518 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C6534EA2F6D7099D59E3BE61 /* CoreVideo.framework */; }; @@ -75,7 +86,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 5F8B38C11F74760B00F0F7D1 /* SwiftAA.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -88,25 +98,35 @@ 39DFC5695AC98A1CFA61E623 /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = System/Library/Frameworks/AssetsLibrary.framework; sourceTree = SDKROOT; }; 3F19230B2264C6E45B5CA90A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; 46267284C2EBEFD65B20CCA6 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; }; - 5F01E11A1F39419100BFF9B0 /* AboutViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutViewController.swift; sourceTree = ""; }; - 5F0662BA1F1D1F6600D66563 /* PlanetCollectionViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlanetCollectionViewController.swift; sourceTree = ""; }; 5F0CC2131F2814BD00E25474 /* Mixpanel.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Mixpanel.framework; path = Carthage/Build/iOS/Mixpanel.framework; sourceTree = ""; }; + 5F0E92062215D88B000D1EA9 /* PlanetCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PlanetCell.xib; sourceTree = ""; }; + 5F0E92082215D895000D1EA9 /* PlanetCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlanetCell.swift; sourceTree = ""; }; + 5F1950D722323D720072B627 /* MenuContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuContainerView.swift; sourceTree = ""; }; + 5F1950D922323D9D0072B627 /* MenuContainerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuContainerViewController.swift; sourceTree = ""; }; + 5F1BD273225559D10089A524 /* WhiteView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WhiteView.swift; sourceTree = ""; }; 5F255D8A1F2BA0A400E9F62E /* DocumentationScene.scn */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; name = DocumentationScene.scn; path = art.scnassets/DocumentationScene.scn; sourceTree = ""; }; 5F27FD171F061C5200498524 /* Mars.scn */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; name = Mars.scn; path = art.scnassets/Mars.scn; sourceTree = ""; }; 5F28BC331F3388AF003E013F /* ScaleReference.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScaleReference.swift; sourceTree = ""; }; - 5F2D207E1F5A0031005D2C3C /* TutorialViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TutorialViewController.swift; sourceTree = SOURCE_ROOT; }; 5F30D4DB1F16CD68006A45B1 /* Planet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Planet.swift; sourceTree = ""; }; 5F30D4DE1F16CDB7006A45B1 /* PlanetoidGroupNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlanetoidGroupNode.swift; sourceTree = ""; }; 5F39596D1EE934B200EDEBEE /* Utilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Utilities.swift; sourceTree = ""; }; + 5F3B335F220FEA5400F961C1 /* TutorialView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TutorialView.xib; sourceTree = ""; }; + 5F3B33652213DD6D00F961C1 /* TutorialViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TutorialViewController.swift; sourceTree = ""; }; + 5F3B33672213DE0800F961C1 /* AboutView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AboutView.xib; sourceTree = ""; }; + 5F3B336C2213E15100F961C1 /* SwiftMessages.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftMessages.framework; path = Carthage/Build/iOS/SwiftMessages.framework; sourceTree = ""; }; + 5F3B336E2213E1A800F961C1 /* AboutView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutView.swift; sourceTree = ""; }; 5F78D70D1F3D222A0059FDA1 /* AppRater.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppRater.swift; sourceTree = ""; }; - 5F8B38BC1F7474B800F0F7D1 /* SwiftAA.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SwiftAA.framework; sourceTree = ""; }; + 5F7AED04225561130090E27D /* StatusLabelView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = StatusLabelView.xib; sourceTree = ""; }; + 5F7AED06225561570090E27D /* StatusLabelViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusLabelViewController.swift; sourceTree = ""; }; + 5F7AED08225561810090E27D /* StatusLabelView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusLabelView.swift; sourceTree = ""; }; + 5F86ACB6220EA5370011A98B /* SwiftAA.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftAA.framework; path = Carthage/Build/iOS/SwiftAA.framework; sourceTree = ""; }; 5F8B38C41F74CAD200F0F7D1 /* FocusSquare.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FocusSquare.swift; sourceTree = ""; }; 5F8B38C51F74CAD200F0F7D1 /* FocusSquareSegment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FocusSquareSegment.swift; sourceTree = ""; }; 5F8B38C81F74CCE800F0F7D1 /* VirtualObjectARView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VirtualObjectARView.swift; sourceTree = ""; }; 5F9126B51F2F8EAE00678A8F /* PinchController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PinchController.swift; sourceTree = ""; }; - 5FA2CD1C1F5A7B8E00E870A5 /* nasalization-rg.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "nasalization-rg.ttf"; sourceTree = ""; }; 5FA91A721F02C5DC00D8AFC1 /* Saturn.scn */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; name = Saturn.scn; path = art.scnassets/Saturn.scn; sourceTree = ""; }; 5FA91A741F02C76C00D8AFC1 /* Uranus.scn */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; name = Uranus.scn; path = art.scnassets/Uranus.scn; sourceTree = ""; }; + 5FAD1FB52232052200011A29 /* MenuContainerView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MenuContainerView.xib; sourceTree = ""; }; 5FAD55E11F50852F0016B04E /* DatePickerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DatePickerViewController.swift; sourceTree = ""; }; 5FB0E6761F05D26E00B3000B /* Venus.scn */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; name = Venus.scn; path = art.scnassets/Venus.scn; sourceTree = ""; }; 5FBAF96A1EE8B78400FAA54B /* SolAR.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SolAR.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -117,6 +137,7 @@ 5FBAF9761EE8B78400FAA54B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 5FBAF9791EE8B78400FAA54B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 5FBAF97B1EE8B78400FAA54B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 5FBD07DC221693B30060A6C0 /* PlanetDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlanetDataSource.swift; sourceTree = ""; }; 5FC65CD71F01C93600D8C9CB /* Sun.scn */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; name = Sun.scn; path = art.scnassets/Sun.scn; sourceTree = ""; }; 5FC65CD91F01C98800D8C9CB /* Mercury.scn */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; name = Mercury.scn; path = art.scnassets/Mercury.scn; sourceTree = ""; }; 5FC65CDC1F02315000D8C9CB /* Jupiter.scn */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; name = Jupiter.scn; path = art.scnassets/Jupiter.scn; sourceTree = ""; }; @@ -128,11 +149,13 @@ 5FDD81D61F0DBB8C00F0B92D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 5FDD81D91F0DBB8C00F0B92D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 5FDD81DB1F0DBB8C00F0B92D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 5FDE10932215B8DF00607C0A /* HUDView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HUDView.xib; sourceTree = ""; }; + 5FDE10952215B92200607C0A /* HUDView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HUDView.swift; sourceTree = ""; }; + 5FDE10972215B99C00607C0A /* HUDViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HUDViewController.swift; sourceTree = ""; }; 5FF9CEF01EE9C00D00A84513 /* SceneKitExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneKitExtension.swift; sourceTree = ""; }; 84A97186C5D8E146BE8573A1 /* CoreTelephony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreTelephony.framework; path = System/Library/Frameworks/CoreTelephony.framework; sourceTree = SDKROOT; }; 8CADC108C15A59E1D0BE2296 /* Bridging-Header.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Bridging-Header.h"; sourceTree = ""; }; 9EE6A4A4E0D34347FC052697 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; - A9C54F36D8B0BA965D4145B6 /* BuddyBuildSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = BuddyBuildSDK.framework; sourceTree = ""; }; C6534EA2F6D7099D59E3BE61 /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = System/Library/Frameworks/CoreVideo.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ @@ -141,15 +164,14 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5F8B38BD1F7474BC00F0F7D1 /* SwiftAA.framework in Frameworks */, + 5F3B336D2213E15100F961C1 /* SwiftMessages.framework in Frameworks */, + 5F86ACB7220EA5370011A98B /* SwiftAA.framework in Frameworks */, 5F0CC2141F2814BD00E25474 /* Mixpanel.framework in Frameworks */, - 857C7513D5A11193D90F0F17 /* BuddyBuildSDK.framework in Frameworks */, 17FC693338E5C451EEFBD6FA /* AssetsLibrary.framework in Frameworks */, 65E69A70C61562F94B2514E1 /* CoreText.framework in Frameworks */, 98E5F380AC90E1950A5C65FA /* CoreTelephony.framework in Frameworks */, F86D392787AFEACCFF1323E9 /* SystemConfiguration.framework in Frameworks */, 36B36DE405C67DDC5ADFD0AB /* QuartzCore.framework in Frameworks */, - 5F8B38C01F74760B00F0F7D1 /* SwiftAA.framework in Frameworks */, 81F43EDC0F64A38CEE5F37C2 /* AVFoundation.framework in Frameworks */, 8F909B3F9BC3BA392B1542DF /* CoreMedia.framework in Frameworks */, CD562CDF09A6E4A6A86EE518 /* CoreVideo.framework in Frameworks */, @@ -169,9 +191,9 @@ 5F0CC2121F2814BD00E25474 /* Frameworks */ = { isa = PBXGroup; children = ( - 5F8B38BC1F7474B800F0F7D1 /* SwiftAA.framework */, + 5F3B336C2213E15100F961C1 /* SwiftMessages.framework */, + 5F86ACB6220EA5370011A98B /* SwiftAA.framework */, 5F0CC2131F2814BD00E25474 /* Mixpanel.framework */, - A9C54F36D8B0BA965D4145B6 /* BuddyBuildSDK.framework */, 39DFC5695AC98A1CFA61E623 /* AssetsLibrary.framework */, 46267284C2EBEFD65B20CCA6 /* CoreText.framework */, 84A97186C5D8E146BE8573A1 /* CoreTelephony.framework */, @@ -184,6 +206,37 @@ name = Frameworks; sourceTree = ""; }; + 5F3B335E220FEA3B00F961C1 /* Views */ = { + isa = PBXGroup; + children = ( + 5F3B335F220FEA5400F961C1 /* TutorialView.xib */, + 5F3B33672213DE0800F961C1 /* AboutView.xib */, + 5F3B336E2213E1A800F961C1 /* AboutView.swift */, + 5FDE10932215B8DF00607C0A /* HUDView.xib */, + 5FDE10952215B92200607C0A /* HUDView.swift */, + 5F0E92062215D88B000D1EA9 /* PlanetCell.xib */, + 5F0E92082215D895000D1EA9 /* PlanetCell.swift */, + 5FAD1FB52232052200011A29 /* MenuContainerView.xib */, + 5F1950D722323D720072B627 /* MenuContainerView.swift */, + 5F1BD273225559D10089A524 /* WhiteView.swift */, + 5F7AED04225561130090E27D /* StatusLabelView.xib */, + 5F7AED08225561810090E27D /* StatusLabelView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5F3B33692213DE5D00F961C1 /* ViewControllers */ = { + isa = PBXGroup; + children = ( + 5F3B33652213DD6D00F961C1 /* TutorialViewController.swift */, + 5FBAF9711EE8B78400FAA54B /* ViewController.swift */, + 5FDE10972215B99C00607C0A /* HUDViewController.swift */, + 5F1950D922323D9D0072B627 /* MenuContainerViewController.swift */, + 5F7AED06225561570090E27D /* StatusLabelViewController.swift */, + ); + path = ViewControllers; + sourceTree = ""; + }; 5F8B38C31F74CABC00F0F7D1 /* Focus Square */ = { isa = PBXGroup; children = ( @@ -216,14 +269,15 @@ 5FBAF96C1EE8B78400FAA54B /* SolarSystem */ = { isa = PBXGroup; children = ( + 5FBD07DB221693A40060A6C0 /* Data */, + 5F3B33692213DE5D00F961C1 /* ViewControllers */, + 5F3B335E220FEA3B00F961C1 /* Views */, 5F8B38C31F74CABC00F0F7D1 /* Focus Square */, 5F8B38C81F74CCE800F0F7D1 /* VirtualObjectARView.swift */, - 5F2D207E1F5A0031005D2C3C /* TutorialViewController.swift */, 5F30D4DE1F16CDB7006A45B1 /* PlanetoidGroupNode.swift */, 5FBAF96D1EE8B78400FAA54B /* AppDelegate.swift */, 5F39596D1EE934B200EDEBEE /* Utilities.swift */, 5FBAF96F1EE8B78400FAA54B /* art.scnassets */, - 5FBAF9711EE8B78400FAA54B /* ViewController.swift */, 5FBAF9731EE8B78400FAA54B /* Main.storyboard */, 5FBAF9761EE8B78400FAA54B /* Assets.xcassets */, 5FBAF9781EE8B78400FAA54B /* LaunchScreen.storyboard */, @@ -237,18 +291,23 @@ 5FB0E6761F05D26E00B3000B /* Venus.scn */, 5F27FD171F061C5200498524 /* Mars.scn */, 5F30D4DB1F16CD68006A45B1 /* Planet.swift */, - 5F0662BA1F1D1F6600D66563 /* PlanetCollectionViewController.swift */, 5F255D8A1F2BA0A400E9F62E /* DocumentationScene.scn */, 5F9126B51F2F8EAE00678A8F /* PinchController.swift */, 5F28BC331F3388AF003E013F /* ScaleReference.swift */, - 5F01E11A1F39419100BFF9B0 /* AboutViewController.swift */, 5F78D70D1F3D222A0059FDA1 /* AppRater.swift */, 5FAD55E11F50852F0016B04E /* DatePickerViewController.swift */, - 5FA2CD1C1F5A7B8E00E870A5 /* nasalization-rg.ttf */, ); path = SolarSystem; sourceTree = ""; }; + 5FBD07DB221693A40060A6C0 /* Data */ = { + isa = PBXGroup; + children = ( + 5FBD07DC221693B30060A6C0 /* PlanetDataSource.swift */, + ); + path = Data; + sourceTree = ""; + }; 5FDD81CC1F0DBB8C00F0B92D /* SolarSystemScene */ = { isa = PBXGroup; children = ( @@ -310,7 +369,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0900; - LastUpgradeCheck = 0900; + LastUpgradeCheck = 1010; ORGANIZATIONNAME = "Roderic Campbell"; TargetAttributes = { 5FBAF9691EE8B78400FAA54B = { @@ -345,14 +404,19 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 5FDE10942215B8DF00607C0A /* HUDView.xib in Resources */, 5FA91A751F02C76C00D8AFC1 /* Uranus.scn in Resources */, 5F27FD181F061C5200498524 /* Mars.scn in Resources */, - 5FA2CD1E1F5A7D5B00E870A5 /* nasalization-rg.ttf in Resources */, + 5F0E92072215D88B000D1EA9 /* PlanetCell.xib in Resources */, + 5F7AED05225561130090E27D /* StatusLabelView.xib in Resources */, + 5F3B3360220FEA5400F961C1 /* TutorialView.xib in Resources */, 5FBAF9701EE8B78400FAA54B /* art.scnassets in Resources */, 5FC65CDA1F01C98800D8C9CB /* Mercury.scn in Resources */, 5FBAF97A1EE8B78400FAA54B /* LaunchScreen.storyboard in Resources */, 5FC65CDD1F02315000D8C9CB /* Jupiter.scn in Resources */, + 5F3B33682213DE0800F961C1 /* AboutView.xib in Resources */, 5FC65CD81F01C93600D8C9CB /* Sun.scn in Resources */, + 5FAD1FB62232052200011A29 /* MenuContainerView.xib in Resources */, 5FBAF9771EE8B78400FAA54B /* Assets.xcassets in Resources */, 5FBAF9751EE8B78400FAA54B /* Main.storyboard in Resources */, 5FB0E6771F05D26E00B3000B /* Venus.scn in Resources */, @@ -389,13 +453,17 @@ ); inputPaths = ( "$(SRCROOT)/Carthage/Build/iOS/Mixpanel.framework", + "$(SRCROOT)/Carthage/Build/iOS/SwiftAA.framework", + "$(SRCROOT)/Carthage/Build/iOS/SwiftMessages.framework", ); outputPaths = ( "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Mixpanel.framework", + "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/SwiftAA.framework", + "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/SwiftMessages.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/usr/local/bin/carthage copy-frameworks"; + shellScript = "/usr/local/bin/carthage copy-frameworks\n"; }; 5F2641631F4C9C9000FE1F20 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -419,20 +487,28 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 5FBD07DD221693B30060A6C0 /* PlanetDataSource.swift in Sources */, + 5F1950DA22323D9D0072B627 /* MenuContainerViewController.swift in Sources */, 5F8B38C91F74CCEB00F0F7D1 /* VirtualObjectARView.swift in Sources */, - 5F0662BB1F1D1F6600D66563 /* PlanetCollectionViewController.swift in Sources */, + 5F3B336F2213E1A800F961C1 /* AboutView.swift in Sources */, 5F8B38C61F74CAE600F0F7D1 /* FocusSquare.swift in Sources */, 5F39596E1EE9898200EDEBEE /* Utilities.swift in Sources */, 5FF9CEF11EE9C00D00A84513 /* SceneKitExtension.swift in Sources */, 5F30D4DF1F16CDB7006A45B1 /* PlanetoidGroupNode.swift in Sources */, 5FBAF9721EE8B78400FAA54B /* ViewController.swift in Sources */, + 5FDE10982215B99C00607C0A /* HUDViewController.swift in Sources */, + 5F1950D822323D720072B627 /* MenuContainerView.swift in Sources */, 5FBAF96E1EE8B78400FAA54B /* AppDelegate.swift in Sources */, - 5F2D207F1F5A007E005D2C3C /* TutorialViewController.swift in Sources */, + 5F7AED07225561570090E27D /* StatusLabelViewController.swift in Sources */, 5F9126B61F2F8EAE00678A8F /* PinchController.swift in Sources */, + 5F1BD274225559D10089A524 /* WhiteView.swift in Sources */, + 5F7AED09225561810090E27D /* StatusLabelView.swift in Sources */, 5F28BC341F3388AF003E013F /* ScaleReference.swift in Sources */, + 5F3B33662213DD6D00F961C1 /* TutorialViewController.swift in Sources */, + 5FDE10962215B92200607C0A /* HUDView.swift in Sources */, + 5F0E92092215D895000D1EA9 /* PlanetCell.swift in Sources */, 5F8B38C71F74CAE900F0F7D1 /* FocusSquareSegment.swift in Sources */, 5FAD55E21F50852F0016B04E /* DatePickerViewController.swift in Sources */, - 5F01E11B1F39419100BFF9B0 /* AboutViewController.swift in Sources */, 5F78D70E1F3D222A0059FDA1 /* AppRater.swift in Sources */, 5F30D4DC1F16CD68006A45B1 /* Planet.swift in Sources */, ); @@ -503,6 +579,7 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -510,6 +587,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -537,7 +615,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -560,6 +638,7 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -567,6 +646,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -588,7 +668,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; @@ -600,6 +680,7 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = F4WTN36U2F; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -612,8 +693,9 @@ PRODUCT_BUNDLE_IDENTIFIER = io.thumbworks.AugmentedSolarSystem; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Bridging-Header.h"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; }; @@ -621,6 +703,7 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = F4WTN36U2F; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -633,8 +716,9 @@ PRODUCT_BUNDLE_IDENTIFIER = io.thumbworks.AugmentedSolarSystem; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Bridging-Header.h"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; }; name = Release; }; diff --git a/SolarSystem.xcodeproj/xcshareddata/xcschemes/SolarSystem.xcscheme b/SolarSystem.xcodeproj/xcshareddata/xcschemes/SolarSystem.xcscheme index c269ac5..1af6d46 100644 --- a/SolarSystem.xcodeproj/xcshareddata/xcschemes/SolarSystem.xcscheme +++ b/SolarSystem.xcodeproj/xcshareddata/xcschemes/SolarSystem.xcscheme @@ -1,6 +1,6 @@ @@ -46,7 +45,6 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/SolarSystem/AppDelegate.swift b/SolarSystem/AppDelegate.swift index 5928af4..03b58f7 100644 --- a/SolarSystem/AppDelegate.swift +++ b/SolarSystem/AppDelegate.swift @@ -14,12 +14,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { - // Tokens may be set within BuddyBuild device variables - BuddyBuildSDK.setup() - if let token = BuddyBuildSDK.value(forDeviceKey: "MIXPANEL_TOKEN") { - Mixpanel.sharedInstance(withToken: token) - } + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + Mixpanel.sharedInstance(withToken: "10c58d6d70784636ac9b3edc135a9e2f") return true } diff --git a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Contents.json b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Contents.json index a73de9f..56a97c0 100644 --- a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -57,7 +57,7 @@ { "size" : "20x20", "idiom" : "ipad", - "filename" : "Icon-20@2x-1.jpg", + "filename" : "Icon-20@2x.jpg", "scale" : "2x" }, { @@ -69,7 +69,7 @@ { "size" : "29x29", "idiom" : "ipad", - "filename" : "Icon-29@2x-1.jpg", + "filename" : "Icon-29@2x.jpg", "scale" : "2x" }, { @@ -81,7 +81,7 @@ { "size" : "40x40", "idiom" : "ipad", - "filename" : "Icon-40@2x-1.jpg", + "filename" : "Icon-40@2x.jpg", "scale" : "2x" }, { diff --git a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-1024.jpg b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-1024.jpg index 35715dc..ee8a6e2 100644 Binary files a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-1024.jpg and b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-1024.jpg differ diff --git a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-20.jpg b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-20.jpg index 94b5699..2dc5e30 100644 Binary files a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-20.jpg and b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-20.jpg differ diff --git a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-20@2x-1.jpg b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-20@2x-1.jpg deleted file mode 100644 index 4253c00..0000000 Binary files a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-20@2x-1.jpg and /dev/null differ diff --git a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-20@2x.jpg b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-20@2x.jpg index 4253c00..6334d68 100644 Binary files a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-20@2x.jpg and b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-20@2x.jpg differ diff --git a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-20@3x.jpg b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-20@3x.jpg index 3c111b7..60f2d62 100644 Binary files a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-20@3x.jpg and b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-20@3x.jpg differ diff --git a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-29.jpg b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-29.jpg index aa37000..35dc0df 100644 Binary files a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-29.jpg and b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-29.jpg differ diff --git a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-29@2x-1.jpg b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-29@2x-1.jpg deleted file mode 100644 index 71edbae..0000000 Binary files a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-29@2x-1.jpg and /dev/null differ diff --git a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.jpg b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.jpg index 71edbae..b30ce32 100644 Binary files a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.jpg and b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.jpg differ diff --git a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.jpg b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.jpg index bca183c..6d6b1c1 100644 Binary files a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.jpg and b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.jpg differ diff --git a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-40.jpg b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-40.jpg index 4253c00..98592f7 100644 Binary files a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-40.jpg and b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-40.jpg differ diff --git a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-40@2x-1.jpg b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-40@2x-1.jpg deleted file mode 100644 index f6f527f..0000000 Binary files a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-40@2x-1.jpg and /dev/null differ diff --git a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.jpg b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.jpg index f6f527f..99e9308 100644 Binary files a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.jpg and b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.jpg differ diff --git a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.jpg b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.jpg index 04e0ebd..bd138a7 100644 Binary files a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.jpg and b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.jpg differ diff --git a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.jpg b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.jpg index 04e0ebd..4d59eb6 100644 Binary files a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.jpg and b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.jpg differ diff --git a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.jpg b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.jpg index 445e9d3..d300ea4 100644 Binary files a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.jpg and b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.jpg differ diff --git a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-76.jpg b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-76.jpg index c20a348..675fbb9 100644 Binary files a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-76.jpg and b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-76.jpg differ diff --git a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.jpg b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.jpg index 7e74e14..c915286 100644 Binary files a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.jpg and b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.jpg differ diff --git a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.jpg b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.jpg index a9cc704..2a7c883 100644 Binary files a/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.jpg and b/SolarSystem/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.jpg differ diff --git a/SolarSystem/Assets.xcassets/Clock.imageset/Clock.pdf b/SolarSystem/Assets.xcassets/Clock.imageset/Clock.pdf new file mode 100644 index 0000000..5a023e7 Binary files /dev/null and b/SolarSystem/Assets.xcassets/Clock.imageset/Clock.pdf differ diff --git a/SolarSystem/Assets.xcassets/Clock.imageset/Clock.png b/SolarSystem/Assets.xcassets/Clock.imageset/Clock.png deleted file mode 100644 index ffcd1fc..0000000 Binary files a/SolarSystem/Assets.xcassets/Clock.imageset/Clock.png and /dev/null differ diff --git a/SolarSystem/Assets.xcassets/Clock.imageset/Clock@2x.png b/SolarSystem/Assets.xcassets/Clock.imageset/Clock@2x.png deleted file mode 100644 index 0c243ab..0000000 Binary files a/SolarSystem/Assets.xcassets/Clock.imageset/Clock@2x.png and /dev/null differ diff --git a/SolarSystem/Assets.xcassets/Clock.imageset/Clock@3x.png b/SolarSystem/Assets.xcassets/Clock.imageset/Clock@3x.png deleted file mode 100644 index e15501b..0000000 Binary files a/SolarSystem/Assets.xcassets/Clock.imageset/Clock@3x.png and /dev/null differ diff --git a/SolarSystem/Assets.xcassets/Clock.imageset/Contents.json b/SolarSystem/Assets.xcassets/Clock.imageset/Contents.json index 33a405f..7d2c86b 100644 --- a/SolarSystem/Assets.xcassets/Clock.imageset/Contents.json +++ b/SolarSystem/Assets.xcassets/Clock.imageset/Contents.json @@ -2,18 +2,7 @@ "images" : [ { "idiom" : "universal", - "filename" : "Clock.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "Clock@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "Clock@3x.png", - "scale" : "3x" + "filename" : "Clock.pdf" } ], "info" : { diff --git a/SolarSystem/Base.lproj/Main.storyboard b/SolarSystem/Base.lproj/Main.storyboard index 7a35297..42e6a57 100644 --- a/SolarSystem/Base.lproj/Main.storyboard +++ b/SolarSystem/Base.lproj/Main.storyboard @@ -1,142 +1,24 @@ - - + + - + + - - - DejaVuSans - - - HelveticaNeue-Thin - - - NasalizationRg-Regular - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -148,70 +30,18 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + - - - - - - - - - - - - - - - - - - @@ -220,510 +50,62 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + + + + + + - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - This Augmented Reality version of our Solar System based on ARKit provides a unique learning experience for those that are curious about our world and how it interacts with the Space around it. With a quick tap you can explore the Planets in a realistic scale which, we think you'll find, is very eye opening. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - We are a Software Development shop focusing on delightful iOS experiences. If you would like to talk to us about building an Augmented Reality or any other iOS app, feel free to reach out. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - + + + @@ -734,16 +116,4 @@ - - - - - - - - - - - - diff --git a/SolarSystem/Data/PlanetDataSource.swift b/SolarSystem/Data/PlanetDataSource.swift new file mode 100644 index 0000000..0221a88 --- /dev/null +++ b/SolarSystem/Data/PlanetDataSource.swift @@ -0,0 +1,45 @@ +// +// PlanetDataSource.swift +// SolAR +// +// Created by Roderic Campbell on 2/14/19. +// Copyright © 2019 Roderic Campbell. All rights reserved. +// + +import UIKit +import SceneKit + +class PlanetDataSource: NSObject, UICollectionViewDataSource { + let planets = Planet.allPlanets + + func pathForPlanet(with name: String) -> IndexPath? { + print("path for planet") + if let index = planets.index(where: { (planet) -> Bool in + return planet.name == name + }) { + return IndexPath(row: index, section: 0) + } + return nil + } + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return planets.count + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let planet = planets[indexPath.row] + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: PlanetCell.reuseIdentifier, for: indexPath) as! PlanetCell + let sceneString = "art.scnassets/\(planet.name).scn" + let scene = SCNScene(named: sceneString)! + cell.sceneView.scene = scene + + let aPlanetNode = scene.rootNode + let radianTilt = planet.axialTilt / 360 * 2*Float.pi + aPlanetNode.rotation = SCNVector4Make(0, 0, 1, radianTilt) + + let rotationDuration = 16.0 // seems like a good rotation + let action = SCNAction.createRotateAction(duration: rotationDuration) + aPlanetNode.runAction(action) + return cell + } +} diff --git a/SolarSystem/Focus Square/FocusSquare.swift b/SolarSystem/Focus Square/FocusSquare.swift index f38d659..e2615f0 100644 --- a/SolarSystem/Focus Square/FocusSquare.swift +++ b/SolarSystem/Focus Square/FocusSquare.swift @@ -265,7 +265,7 @@ class FocusSquare: SCNNode { // Open animation SCNTransaction.begin() - SCNTransaction.animationTimingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut) + SCNTransaction.animationTimingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeOut) SCNTransaction.animationDuration = FocusSquare.animationDuration / 4 positioningNode.opacity = 1.0 for segment in segments { @@ -280,7 +280,7 @@ class FocusSquare: SCNNode { // Add a scale/bounce animation. SCNTransaction.begin() - SCNTransaction.animationTimingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut) + SCNTransaction.animationTimingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeOut) SCNTransaction.animationDuration = FocusSquare.animationDuration / 4 positioningNode.simdScale = float3(FocusSquare.size) SCNTransaction.commit() @@ -294,14 +294,14 @@ class FocusSquare: SCNNode { positioningNode.removeAction(forKey: "pulse") positioningNode.opacity = 1.0 - // Close animation - SCNTransaction.begin() - SCNTransaction.animationTimingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut) - SCNTransaction.animationDuration = FocusSquare.animationDuration / 2 - positioningNode.opacity = 0.99 - SCNTransaction.completionBlock = { + // Close animation + SCNTransaction.begin() + SCNTransaction.animationTimingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeOut) + SCNTransaction.animationDuration = FocusSquare.animationDuration / 2 + positioningNode.opacity = 0.99 + SCNTransaction.completionBlock = { SCNTransaction.begin() - SCNTransaction.animationTimingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut) + SCNTransaction.animationTimingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeOut) SCNTransaction.animationDuration = FocusSquare.animationDuration / 4 for segment in self.segments { segment.close() @@ -334,9 +334,9 @@ class FocusSquare: SCNNode { private func scaleAnimation(for keyPath: String) -> CAKeyframeAnimation { let scaleAnimation = CAKeyframeAnimation(keyPath: keyPath) - let easeOut = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut) - let easeInOut = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) - let linear = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear) + let easeOut = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeOut) + let easeInOut = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut) + let linear = CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear) let size = FocusSquare.size let ts = FocusSquare.size * FocusSquare.scaleForClosedSquare diff --git a/SolarSystem/Info.plist b/SolarSystem/Info.plist index e685b87..2c563b0 100644 --- a/SolarSystem/Info.plist +++ b/SolarSystem/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.0.1 + 1.0.2 CFBundleVersion 13 ITSAppUsesNonExemptEncryption diff --git a/SolarSystem/Planet.swift b/SolarSystem/Planet.swift index 1ab13e7..39f35e9 100644 --- a/SolarSystem/Planet.swift +++ b/SolarSystem/Planet.swift @@ -18,8 +18,8 @@ extension Planet: Hashable { struct Planet: Equatable { - let type: SwiftAA.Planet.Type? - + let type: SwiftAA.Object.Type? + static func ==(lhs: Planet, rhs: Planet) -> Bool { return lhs.name == rhs.name && lhs.orbitalRadius == rhs.orbitalRadius && @@ -68,16 +68,35 @@ struct Planet: Equatable { static let uranusAA = Uranus(julianDay: JulianDay(Date())) static let plutoAA = Pluto(julianDay: JulianDay(Date())) - static let sun = Planet(type: nil, name: "Sun", orbitalRadius: 0, radius: 695700, rotationDuration: 1000, axialTilt: 1, orbitPeriod: 1) + static let sun: Planet = { + print("make sun") + return Planet(type: nil, + name: "Sun", + orbitalRadius: 0, + radius: 695700, + rotationDuration: 1000, + axialTilt: 1, + orbitPeriod: 1) + }() static let mercury = Planet(type: Mercury.self, name: mercuryAA.name, orbitalRadius: 57.9, radius: 2439.7, rotationDuration: 1407.6, axialTilt: 0.03, orbitPeriod: 0.240846) static let venus = Planet(type: Venus.self, name: venusAA.name, orbitalRadius: 108.2, radius: 6051.8, rotationDuration: 5832.6, axialTilt: 2.64, orbitPeriod: 0.615) - static let earth = Planet(type: Earth.self, name: "Earth", orbitalRadius: 149.6, radius: 6371, rotationDuration: 23.93, axialTilt: 23.44, orbitPeriod: 1) + + static let earth: Planet = { + print("make earth") + return Planet(type: Earth.self, + name: "Earth", + orbitalRadius: 149.6, + radius: 6371, + rotationDuration: 23.93, + axialTilt: 23.44, + orbitPeriod: 1) + }() static let mars = Planet(type: Mars.self, name: marsAA.name, orbitalRadius: 227.9, radius: 3389.5, rotationDuration: 24.62, axialTilt: 25.19, orbitPeriod: 1.881) static let jupiter = Planet(type: Jupiter.self, name: jupiterAA.name, orbitalRadius: 778.3, radius: 69911, rotationDuration: 9.93, axialTilt: 3.13, orbitPeriod: 11.86) static let saturn = Planet(type: Saturn.self, name: saturnAA.name, orbitalRadius: 1427, radius: 58232, rotationDuration: 10.66, axialTilt: 26.73, orbitPeriod: 29.46) static let uranus = Planet(type: Uranus.self, name: uranusAA.name, orbitalRadius: 2871, radius: 25362, rotationDuration: 17.24, axialTilt: 82.23, orbitPeriod: 84.01) static let neptune = Planet(type: Neptune.self, name: neptuneAA.name, orbitalRadius: 4497, radius: 24622, rotationDuration: 16.11, axialTilt: 28.32, orbitPeriod: 164.8) - static let pluto = Planet(type: Pluto.self, name: plutoAA.name, orbitalRadius: 5913, radius: 1186, rotationDuration: 153.29, axialTilt: 57.47, orbitPeriod: 248.1) - - static let allPlanets = [sun, mercury, venus, earth, mars, jupiter, saturn, uranus, neptune, pluto] +// static let pluto = Planet(type: Pluto.self, name: plutoAA.name, orbitalRadius: 5913, radius: 1186, rotationDuration: 153.29, axialTilt: 57.47, orbitPeriod: 248.1) + + static let allPlanets = [sun, mercury, venus, earth, mars, jupiter, saturn, uranus, neptune/*, pluto*/] } diff --git a/SolarSystem/PlanetCollectionViewController.swift b/SolarSystem/PlanetCollectionViewController.swift deleted file mode 100644 index e6fa087..0000000 --- a/SolarSystem/PlanetCollectionViewController.swift +++ /dev/null @@ -1,141 +0,0 @@ -// -// PlanetCollectionViewController.swift -// SolarSystem -// -// Created by Roderic Campbell on 7/17/17. -// Copyright © 2017 Roderic Campbell. All rights reserved. -// - -import Foundation -import UIKit -import SceneKit - -class PlanetCollectionViewController: UIViewController, UIScrollViewDelegate { - @IBOutlet var collectionView: UICollectionView! - @IBOutlet var dataSource: PlanetDataSource! - - @IBOutlet weak var name: UILabel! - @IBOutlet weak var axialTilt: UILabel! - @IBOutlet weak var rotationDuration: UILabel! - @IBOutlet weak var radius: UILabel! - @IBOutlet weak var distance: UILabel! - @IBOutlet weak var sizeReference: UILabel! - - var planetSelectionChanged: ((Planet) -> ())? - var currentPlanet: Planet? - - override func viewDidLoad() { - distance.text = "" - } - func updateDistance(_ distanceString: String) { - distance.text = distanceString - } - - func updateReferenceSize(_ sizes: [Planet:Float]) { - if let planet = currentPlanet, let meters = sizes[planet] { - sizeReference.text = ScaleReference.objectSizeDescription(for: meters) - } - } - - func changeToPlanet(name: String) { - if let indexPath = dataSource.pathForPlanet(with: name) { - collectionView.scrollToItem(at: indexPath, at: .centeredHorizontally, animated: true) - } - } - - func changePlanetSelection() { - print("change planet selection") - // find the center of the frame wrt the content offset. 10 is - let collectionViewSize = collectionView.frame.size - let centerXFrame = collectionView.contentOffset.x + collectionViewSize.width/2 - let point = CGPoint(x: centerXFrame, y: collectionViewSize.height / 2) - - guard let indexPath = collectionView.indexPathForItem(at: point) else { - print("no index path at center") - return - } - currentPlanet = dataSource.planets[indexPath.row] - - guard let currentPlanet = currentPlanet else { - print("unknown state here, what is our current planet derived from the index path?") - return - } - if let closure = planetSelectionChanged { - closure(currentPlanet) - } - - name.text = currentPlanet.name.uppercased() - axialTilt.text = "\(currentPlanet.axialTilt) degree tilt" - rotationDuration.text = "\(currentPlanet.rotationDuration) hour days" - radius.text = "\(currentPlanet.radius) km radius" - } - - func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) { - print("\n\nend scrolling, change labels \(collectionView.contentOffset)") - changePlanetSelection() - } - - func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { - print("\n\nend scrolling, change labels \(collectionView.contentOffset)") - changePlanetSelection() - } - override func viewDidAppear(_ animated: Bool) { - changePlanetSelection() - } - - func hintScrollable() { - UIView.animate(withDuration: 0.5, delay: 3, options: [], animations: { - self.collectionView.contentOffset = CGPoint(x: self.collectionView.frame.size.width / 2, y: 0) - }) { (completed) in - UIView.animate(withDuration: 0.5, animations: { - self.collectionView.contentOffset = CGPoint(x: 0, y: 0) - }) - } - } -} - -extension Float { - func format(f: String) -> String { - return String(format: "%\(f)f", self) - } -} - -class PlanetDataSource: NSObject, UICollectionViewDataSource { - let planets = Planet.allPlanets - - func pathForPlanet(with name: String) -> IndexPath? { - print("path for planet") - if let index = planets.index(where: { (planet) -> Bool in - return planet.name == name - }) { - return IndexPath(row: index, section: 0) - } - return nil - } - - func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { - return planets.count - } - - func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { - let planet = planets[indexPath.row] - let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "planetCell", for: indexPath) as! PlanetCell - - let sceneString = "art.scnassets/\(planet.name).scn" - let scene = SCNScene(named: sceneString)! - cell.sceneView.scene = scene - - let aPlanetNode = scene.rootNode - let radianTilt = planet.axialTilt / 360 * 2*Float.pi - aPlanetNode.rotation = SCNVector4Make(0, 0, 1, radianTilt) - - let rotationDuration = 16.0 // seems like a good rotation - let action = SCNAction.createRotateAction(duration: rotationDuration) - aPlanetNode.runAction(action) - return cell - } -} - -class PlanetCell: UICollectionViewCell { - @IBOutlet var sceneView: SCNView! -} diff --git a/SolarSystem/PlanetoidGroupNode.swift b/SolarSystem/PlanetoidGroupNode.swift index 5b9e988..896d9a4 100644 --- a/SolarSystem/PlanetoidGroupNode.swift +++ b/SolarSystem/PlanetoidGroupNode.swift @@ -162,26 +162,6 @@ struct SolarSystemNodes { } } - func updateSpeed(_ value: Double) { - _ = planetoids.map { (planet, node) in - if let planetNode = node.planetNode { - node.beginRotation(planet: planet, node: planetNode, multiplier: value) - } - } - } - - func updateLookat(selected planet: Planet, arrowNode: SCNNode) { - for (solarSystemPlanet, planetoidGroup) in planetoids { - if planet == solarSystemPlanet { - SCNTransaction.begin() - SCNTransaction.animationDuration = 0.5 - let lookat = SCNLookAtConstraint(target: planetoidGroup.planetNode) - arrowNode.constraints = [lookat] - SCNTransaction.commit() - } - } - } - func removeAllNodesFromParent() { for planetNode in planetoids { planetNode.value.removeFromParentNode() @@ -236,11 +216,9 @@ class PlanetoidGroupNode: SCNNode { } func updatePlanetLocation(_ coords: EclipticCoordinates) { - let latitude = Float(coords.celestialLatitude.magnitude) - let longitude = Float(coords.celestialLongitude.magnitude) - let latitudeInRadians = latitude * Float.pi / 180 - let longitudeInRadians = longitude * Float.pi / 180 - self.rotation = SCNVector4Make(0, 1, 0, longitudeInRadians) + let longitude = coords.celestialLongitude.magnitude.value + let longitudeInRadians = longitude * Double.pi / 180 + self.rotation = SCNVector4Make(0, 1, 0, Float(longitudeInRadians)) } func beginRotation(planet: Planet, node: SCNNode, multiplier: Double) { diff --git a/SolarSystem/SceneKitExtension.swift b/SolarSystem/SceneKitExtension.swift index d7133c9..3d9622b 100644 --- a/SolarSystem/SceneKitExtension.swift +++ b/SolarSystem/SceneKitExtension.swift @@ -125,18 +125,6 @@ extension SCNAction { extension SCNNode { - class func arrow() -> SCNNode { - let arrowScene = SCNScene(named: "art.scnassets/arrow.dae")! - let arrow = arrowScene.rootNode.childNodes.first! - arrow.position = SCNVector3Make(0, 0, -0.1) - arrow.scale = SCNVector3Make(0.0001, 0.0001, 0.0001) - arrow.categoryBitMask = 4 - for light in arrow.childNodes { - light.light?.categoryBitMask = 4 - } - arrow.name = "Arrow" - return arrow - } class func omniLight(_ vector: SCNVector3) -> SCNNode { let omniLight = SCNLight() omniLight.type = .omni @@ -181,9 +169,14 @@ extension SCNNode { return rotationNode } } -extension SwiftAA.Planet { - func position() -> (EclipticCoordinates) { - return self.heliocentricEclipticCoordinates +extension SwiftAA.Object { + func position() -> EclipticCoordinates { + if let planet = self as? SwiftAA.Planet { + return planet.heliocentricEclipticCoordinates + } else if let earth = self as? SwiftAA.Earth { + return earth.heliocentricEclipticCoordinates + } + return SwiftAA.EclipticCoordinates(celestialLongitude: 0, celestialLatitude: 0) } } @@ -246,10 +239,11 @@ extension Planet { let neptune = PlanetoidGroupNode(planet: Planet.neptune) neptune.updatePlanetLocation(neptuneAA.position()) - - let pluto = PlanetoidGroupNode(planet: Planet.pluto) - pluto.updatePlanetLocation(plutoAA.position()) - + + // Pluto lives matter +// let pluto = PlanetoidGroupNode(planet: Planet.pluto) +// pluto.updatePlanetLocation(plutoAA.position()) + nodes[Planet.mercury] = mercury nodes[Planet.venus] = venus nodes[Planet.earth] = earthNode @@ -258,8 +252,8 @@ extension Planet { nodes[Planet.saturn] = saturnNode nodes[Planet.uranus] = uranus nodes[Planet.neptune] = neptune - nodes[Planet.pluto] = pluto - +// nodes[Planet.pluto] = pluto + return SolarSystemNodes(lightNodes: [light], planetoids: nodes, moon: moon) } } diff --git a/SolarSystem/ViewControllers/HUDViewController.swift b/SolarSystem/ViewControllers/HUDViewController.swift new file mode 100644 index 0000000..aa3fc94 --- /dev/null +++ b/SolarSystem/ViewControllers/HUDViewController.swift @@ -0,0 +1,78 @@ +// +// HUDViewController.swift +// SolAR +// +// Created by Roderic Campbell on 2/14/19. +// Copyright © 2019 Roderic Campbell. All rights reserved. +// + +import UIKit + +extension UIView { + class func initFromNib() -> T { + return Bundle.main.loadNibNamed(String(describing: self), owner: nil, options: nil)?[0] as! T + } +} + +class HUDViewController: UIViewController { + init() { + super.init(nibName: nil, bundle: nil) + } + + let HUD = HUDView.instantiate() + let dataSource = PlanetDataSource() + + @available(*, unavailable) + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func loadView() { + view = HUD + view.translatesAutoresizingMaskIntoConstraints = false + } + + func update(with distances: [Planet: Float]) { + if let focusPath = HUD.collectionView.indexPathsForVisibleItems.first { + let focusPlanet = dataSource.planets[focusPath.row] + let metersAway = distances[focusPlanet] ?? 0 + HUD.distance.text = "\(metersAway.format(f: ".1")) real meters away" + } + } + + override func viewDidLoad() { + let reuse = PlanetCell.reuseIdentifier + let nib = UINib(nibName: reuse, + bundle: nil) + HUD.collectionView.register(nib, + forCellWithReuseIdentifier: reuse) + HUD.collectionView.dataSource = dataSource + HUD.collectionView.delegate = self + // set a default value + let viewModel = Planet.sun.hudViewModel() + HUD.updateWith(viewModel: viewModel) + } + + override func viewDidLayoutSubviews() { + if let layout = HUD.collectionView.collectionViewLayout as? UICollectionViewFlowLayout { + layout.itemSize = HUD.collectionView.frame.size + } + } +} + +extension HUDViewController: UICollectionViewDelegate { + func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { + let offset = scrollView.contentOffset + guard let indexPath = self.HUD.collectionView.indexPathForItem(at: offset) else { + return + } + let planet = dataSource.planets[indexPath.row] + HUD.updateWith(viewModel: planet.hudViewModel()) + } +} + +extension Float { + func format(f: String) -> String { + return String(format: "%\(f)f", self) + } +} diff --git a/SolarSystem/ViewControllers/MenuContainerViewController.swift b/SolarSystem/ViewControllers/MenuContainerViewController.swift new file mode 100644 index 0000000..53ff159 --- /dev/null +++ b/SolarSystem/ViewControllers/MenuContainerViewController.swift @@ -0,0 +1,18 @@ +import UIKit + +class MenuContainerViewController: UIViewController { + let menuContainer = MenuContainerView.instantiate() + + init() { + super.init(nibName: nil, bundle: nil) + } + + @available(*, unavailable) + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func loadView() { + view = menuContainer + } +} diff --git a/SolarSystem/ViewControllers/StatusLabelViewController.swift b/SolarSystem/ViewControllers/StatusLabelViewController.swift new file mode 100644 index 0000000..4456359 --- /dev/null +++ b/SolarSystem/ViewControllers/StatusLabelViewController.swift @@ -0,0 +1,47 @@ +// +// StatusLabelViewController.swift +// SolAR +// +// Created by Roderic Campbell on 4/3/19. +// Copyright © 2019 Roderic Campbell. All rights reserved. +// + +import UIKit + +struct StatusLabelViewModel { + let text: String? + static var searchForSurface = StatusLabelViewModel(text: "Searching for a surface") + static var tapToSetSolarSystem = StatusLabelViewModel(text: "Tap to set the Solar System") + static func inside(celestialObject: String) -> StatusLabelViewModel { + return StatusLabelViewModel(text: "You are inside \(celestialObject)") + } + static func limitedTracking(reason: String) -> StatusLabelViewModel { + return StatusLabelViewModel(text: "Tracking Limited: \(reason)") + } + static var trackingUnavailable = StatusLabelViewModel(text: "Tracking unavailable") + static var selectPlanet = StatusLabelViewModel(text: "Select a date to see the planet alignment at that point in time") +} + + + +class StatusLabelViewController: UIViewController { + init() { + super.init(nibName: nil, bundle: nil) + } + + let statusLabelView = StatusLabelView.instantiate() + + @available(*, unavailable) + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func loadView() { + view = statusLabelView + view.translatesAutoresizingMaskIntoConstraints = false + } + + func update(with viewModel: StatusLabelViewModel) { + statusLabelView.label.text = viewModel.text + } +} diff --git a/TutorialViewController.swift b/SolarSystem/ViewControllers/TutorialViewController.swift similarity index 91% rename from TutorialViewController.swift rename to SolarSystem/ViewControllers/TutorialViewController.swift index 7c75f5b..337f0d8 100644 --- a/TutorialViewController.swift +++ b/SolarSystem/ViewControllers/TutorialViewController.swift @@ -13,7 +13,15 @@ import SceneKit class TutorialViewController: UIViewController { @IBOutlet weak var sceneView: SCNView! - + init() { + super.init(nibName: nil, bundle: nil) + } + + @available(*, unavailable) + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + func createTutorial() { let scene = SCNScene() diff --git a/SolarSystem/ViewController.swift b/SolarSystem/ViewControllers/ViewController.swift similarity index 51% rename from SolarSystem/ViewController.swift rename to SolarSystem/ViewControllers/ViewController.swift index 800be22..9ce3511 100644 --- a/SolarSystem/ViewController.swift +++ b/SolarSystem/ViewControllers/ViewController.swift @@ -10,43 +10,41 @@ import UIKit import SceneKit import ARKit import Mixpanel +import SwiftMessages class ViewController: UIViewController { var startTime: TimeInterval = 0 var startDate = Date() var displayedDate = Date() - var displaySpeed: Double = 1 - + + var showingStatusConstraint: NSLayoutConstraint? + var hiddenStatusConstraint: NSLayoutConstraint? + var hiddenHUDConstraint: NSLayoutConstraint? + var showingHUDConstraint: NSLayoutConstraint? + var hiddenMenuConstraint: NSLayoutConstraint? + var showingMenuConstraint: NSLayoutConstraint? + lazy var dateFormatter = { () -> DateFormatter in - // TODO This should happen once. let formatter = DateFormatter() formatter.dateStyle = .medium formatter.timeStyle = .short return formatter } - + + let animationDuration = 0.3 var screenCenter: CGPoint { let bounds = sceneView.bounds return CGPoint(x: bounds.midX, y: bounds.midY) } var datePicker: DatePickerViewController? - - @IBOutlet var status: UILabel! - @IBOutlet var sceneView: VirtualObjectARView! + let hudViewController = HUDViewController() + let menuViewController = MenuContainerViewController() + let statusLabelViewController = StatusLabelViewController() + var done = false var scalingOrbitUp = false var scaleSizeUp = false - var lastUpdateTime: TimeInterval = 0 - - @IBOutlet var toggleViews: [UIView]! - - @IBOutlet weak var hideHUDButton: UIButton! - @IBOutlet weak var dateButton: UIButton! - @IBOutlet weak var pauseButton: UIButton! - @IBOutlet weak var planetScaleButton: UIButton! - @IBOutlet weak var orbitScaleButton: UIButton! - @IBOutlet weak var orbitShowButton: UIButton! var anchorWidth: Float? let cameraState: ARCamera.TrackingState = .normal @@ -58,52 +56,114 @@ class ViewController: UIViewController { let solarSystemNodes = Planet.buildSolarSystem() var pincher: PinchController? - - var arrowNode = SCNNode.arrow() - - @IBOutlet weak var hudHeightConstraint: NSLayoutConstraint! - @IBOutlet weak var hudBottomConstraint: NSLayoutConstraint! + + var sceneView: VirtualObjectARView = { + let view = VirtualObjectARView(frame: .zero) + view.translatesAutoresizingMaskIntoConstraints = false + view.backgroundColor = .clear + return view + }() + @IBOutlet weak var datePickerBottomConstraint: NSLayoutConstraint! @IBOutlet weak var datePickerHeightConstraint: NSLayoutConstraint! - #if DEBUG - // For debug purposes, count and color the discovered planes - var planeCount = 0 - let colors: [UIColor] = [.red, .orange, .yellow, .green, .blue, .purple] - var debugPlaneAnchorNode: SCNNode? - #endif - -// func updateDateString(_ date: Date) { -// let dateString = dateFormatter().string(from: date) -// dateButton.setTitle(dateString, for: .normal) -// } - override func viewDidLoad() { super.viewDidLoad() - + #if targetEnvironment(simulator) + view.backgroundColor = .gray + #endif pincher = PinchController(with: solarSystemNodes) - status.text = "" Mixpanel.sharedInstance()?.track("view did load") // hide the toggleviews - _ = toggleViews.map { (view) in - view.isHidden = true - } - + toggleMenu(toShowing: false) + view.insertSubview(sceneView, at: 0) + + sceneView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true + sceneView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true + sceneView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true + sceneView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true + + let pinch = UIPinchGestureRecognizer(target: self, action: #selector(pinchedScreen(_:))) + sceneView.addGestureRecognizer(pinch) + // Set the view's delegate sceneView.delegate = self - + // Set the scene to the view sceneView.scene = SCNScene() sceneView.scene.rootNode.addChildNode(focusSquare) -// updateDateString(displayedDate) + addSuplementalViews() - NotificationCenter.default.addObserver(self, selector: #selector(willEnterForeground), name: .UIApplicationWillEnterForeground, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(willEnterForeground), name: UIApplication.willEnterForegroundNotification, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(didEnterBackground), name: .UIApplicationDidEnterBackground, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(didEnterBackground), name: UIApplication.didEnterBackgroundNotification, object: nil) } - + + private func addStatusView() { + view.addSubview(statusLabelViewController.view) + + let statusView = statusLabelViewController.view + statusView?.leftAnchor.constraint(greaterThanOrEqualTo: view.leftAnchor, + constant: 20).isActive = true + statusView?.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true + statusView?.leftAnchor.constraint(greaterThanOrEqualTo: menuViewController.view.rightAnchor, + constant: 20).isActive = true + + showingStatusConstraint = + statusView?.topAnchor.constraint(equalTo: view.topAnchor, + constant: 20) + statusView?.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true + showingStatusConstraint?.priority = .defaultLow + showingStatusConstraint?.isActive = true + + hiddenStatusConstraint = statusView?.bottomAnchor.constraint(equalTo: view.topAnchor) + hiddenStatusConstraint?.priority = .defaultHigh + hiddenStatusConstraint?.isActive = true + } + + private func addHUDView() { + view.addSubview(hudViewController.view) + showingHUDConstraint = view.bottomAnchor + .constraint(equalTo: hudViewController.view.bottomAnchor) + showingHUDConstraint?.constant = 20 + showingHUDConstraint?.priority = .defaultLow + showingHUDConstraint?.isActive = true + + // hidden state + hiddenHUDConstraint = hudViewController.view.topAnchor + .constraint(equalTo: view.bottomAnchor) + hiddenHUDConstraint?.priority = .defaultHigh + hiddenHUDConstraint?.isActive = true + hudViewController.view.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true + } + + private func addMenuView() { + view.addSubview(menuViewController.view) + showingMenuConstraint = menuViewController.view.leftAnchor + .constraint(equalTo: view.safeAreaLayoutGuide.leftAnchor) + showingMenuConstraint?.constant = 10 + showingMenuConstraint?.priority = .defaultLow + showingMenuConstraint?.isActive = true + + // hidden state + hiddenMenuConstraint = menuViewController.view.rightAnchor + .constraint(equalTo: view.leftAnchor) + hiddenMenuConstraint?.priority = .defaultHigh + hiddenMenuConstraint?.isActive = true + + menuViewController.view.topAnchor + .constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true + menuViewController.menuContainer.delegate = self + } + + private func addSuplementalViews() { + addHUDView() + addMenuView() + addStatusView() + } + @objc func willEnterForeground() { restartEverything() } @@ -111,7 +171,6 @@ class ViewController: UIViewController { @objc func didEnterBackground() { // dismiss any view controller that is presented if let presented = self.presentedViewController { - print("presented view controller is \(presented)") self.dismiss(animated: false) } } @@ -122,14 +181,18 @@ class ViewController: UIViewController { sessionConfig.planeDetection = .horizontal sceneView.session.run(sessionConfig, options: [.resetTracking, .removeExistingAnchors]) focusSquare.unhide() - arrowNode.isHidden = true + } + + func restartSessionNoPlaneDetection() { + // configure session + let sessionConfig = ARWorldTrackingConfiguration() + sceneView.session.run(sessionConfig, options:[]) } func updateFocusSquare() { // We should always have a valid world position unless the sceen is just being initialized. guard let (worldPosition, planeAnchor, _) = sceneView.worldPosition(fromScreenPosition: screenCenter, objectPosition: focusSquare.lastPosition) else { - print("no world position, so still initializing") self.focusSquare.state = .initializing self.sceneView.pointOfView?.addChildNode(self.focusSquare) return @@ -150,28 +213,18 @@ class ViewController: UIViewController { fileprivate func restartEverything() { restartPlaneDetection() - - arrowNode.isHidden = true - - #if DEBUG - // clear the debug plane - debugPlaneAnchorNode?.removeFromParentNode() - debugPlaneAnchorNode = nil - #endif // reset hudBottomConstraint // start the hud out of view - toggleHUD(toShowingState: false, animated: false) + toggleHUD(toShowing: false, animated: false) - toggleDatePicker(toShowingState: false, animated: false) + toggleDatePicker(toShowing: false, animated: false) done = false // hide the toggleViews - _ = toggleViews.map({ (view) in - view.isHidden = true - }) - + toggleMenu(toShowing: false) + solarSystemNodes.removeAllNodesFromParent() // Create a session configuration @@ -183,14 +236,20 @@ class ViewController: UIViewController { updateLabel() resetToDetectedPlane() - collectionViewController?.changeToPlanet(name: Planet.sun.name) - self.performSegue(withIdentifier: "TutorialSegueID", sender: self) + #if !targetEnvironment(simulator) + let tutorial = TutorialViewController() + tutorial.definesPresentationContext = true + tutorial.modalPresentationStyle = .overCurrentContext + present(tutorial, animated: true) + #else + toggleHUD(toShowing: true) + toggleMenu(toShowing: true) + #endif } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) - toggleDatePicker(toShowingState: false) - toggleHUD(toShowingState: false, animated: false) + toggleDatePicker(toShowing: false, animated: false) } override func viewDidAppear(_ animated: Bool) { @@ -200,97 +259,202 @@ class ViewController: UIViewController { override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) - - // Pause the view's session -// sceneView.session.pause() restartEverything() } - - var collectionViewController: PlanetCollectionViewController? - + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - if let dest = segue.destination as? PlanetCollectionViewController { - dest.planetSelectionChanged = { (newlySelectedPlanet) in - self.solarSystemNodes.updateLookat(selected: newlySelectedPlanet, arrowNode: self.arrowNode) - } - collectionViewController = dest - } - if let dest = segue.destination as? DatePickerViewController { datePicker = dest - + dest.dateSelection = { (date, done) in self.displayedDate = date self.startTime = 0 self.startDate = date -// self.updateDateString(date) self.solarSystemNodes.updatePostions(to: date) - + if done { - self.toggleDatePicker(toShowingState: false) + self.toggleDatePicker(toShowing: false) + self.toggleMenu(toShowing: true) } } } } - func toggleDatePicker(toShowingState: Bool, animated: Bool = true) { - datePickerBottomConstraint.constant = toShowingState ? 0 : -datePickerHeightConstraint.constant - - let duration = animated ? 0.3 : 0.0 - - UIView.animate(withDuration: duration, delay: 0, options: .curveEaseInOut, animations: { - self.view.layoutIfNeeded() - }) - - if toShowingState == true { + func toggleDatePicker(toShowing: Bool, + animated: Bool = true) { + + let toggleDatePickerBlock = { + let duration = animated ? self.animationDuration : 0.0 + self.datePickerBottomConstraint.constant = toShowing ? 0 : -(self.datePickerHeightConstraint.constant + 40) + UIView.animate(withDuration: duration, delay: 0, options: .curveEaseInOut, animations: { + self.view.layoutIfNeeded() + }, completion: { success in + // only show the hud if we're not animating, this implies + // the view is appearing or disappearing and we likely don't want anything + // to be displayed + self.statusLabelViewController.update(with: .selectPlanet) + + // only trigger shoiwng the status label at the end of the date picker animation + if toShowing { + self.toggleStatusLabel(toShowing: true) + } + + if !toShowing && animated { + self.toggleHUD(toShowing: true) + } + }) + } + + if toShowing { + toggleHUD(toShowing: false, + animated: true, + completionBlock: toggleDatePickerBlock) + } else { + // trigger hiding the status label immediately + self.toggleStatusLabel(toShowing: false) + toggleDatePickerBlock() + } + + if toShowing { datePicker?.datePicker.setDate(displayedDate, animated: false) } - } - - func toggleHUD(toShowingState: Bool, animated: Bool = true) { - print("to showing state \(toShowingState)") - hudBottomConstraint.constant = toShowingState ? 0 : -hudHeightConstraint.constant - - let duration = animated ? 1.0 : 0.0 - - UIView.animate(withDuration: duration, delay: 0, options: .curveEaseInOut, animations: { + + func toggleMenu(toShowing: Bool, animated: Bool = true) { + if toShowing { + showingMenuConstraint?.priority = .defaultHigh + hiddenMenuConstraint?.priority = .defaultLow + } else { + showingMenuConstraint?.priority = .defaultLow + hiddenMenuConstraint?.priority = .defaultHigh + } + UIView.animate(withDuration: animated ? animationDuration : 0.0, + delay: 0, + options: .curveEaseInOut, + animations: { + self.view.layoutIfNeeded() + }) + } + + func toggleStatusLabel(toShowing: Bool, animated: Bool = true) { + if toShowing { + hiddenStatusConstraint?.priority = .defaultLow + showingStatusConstraint?.priority = .defaultHigh + } else { + hiddenStatusConstraint?.priority = .defaultHigh + showingStatusConstraint?.priority = .defaultLow + } + UIView.animate(withDuration: animated ? animationDuration : 0.0, + delay: 0, + options: .curveEaseInOut, + animations: { + self.view.layoutIfNeeded() + }) + } + + func toggleHUD(toShowing: Bool, + animated: Bool = true, + completionBlock: (() -> Void)? = nil) { + if toShowing { + hiddenHUDConstraint?.priority = .defaultLow + showingHUDConstraint?.priority = .defaultHigh + } else { + hiddenHUDConstraint?.priority = .defaultHigh + showingHUDConstraint?.priority = .defaultLow + } + UIView.animate(withDuration: animated ? animationDuration : 0.0, + delay: 0, + options: .curveEaseInOut, + animations: { self.view.layoutIfNeeded() - }) { (completed) in - let newTitle = toShowingState ? "▼" : "▲" - self.hideHUDButton.setTitle(newTitle, for: .normal) + }, completion: { _ in + completionBlock?() + }) + } + + private func resetToDetectedPlane() { + guard let anchorWidth = anchorWidth else { + print("Tapped reset without an anchorWidth") + return } + let radius = anchorWidth / 2 + scaleSizeUp = !scaleSizeUp + + solarSystemNodes.scalePlanets(to: radius) + + // show the orbits + solarSystemNodes.toggleOrbitPaths(hidden: false) } } -// IBActions -extension ViewController { - - @IBAction func toggleDateSelector(_ button: UIButton) { - let isUp = datePickerBottomConstraint.constant == 0 - toggleDatePicker(toShowingState: !isUp) +extension ViewController: MenuContainerViewDelegate { + func container(_ view: MenuContainerView, didTapInfoButton button: UIButton) { + let aboutView: AboutView + do { + aboutView = try SwiftMessages.viewFromNib(named: "AboutView") + } catch { + print("error \(error)") + return + } + //view.delegate = delegate + //view.update() + + var config = SwiftMessages.Config() + + config.presentationContext = .window(windowLevel: .alert) + config.duration = .forever + config.presentationStyle = .center + config.dimMode = .blur(style: .dark, + alpha: 1, + interactive: true) + SwiftMessages.show(config: config, view: aboutView) } - - @IBAction func toggleHUD(_ button: UIButton) { - let isShowing = hudBottomConstraint.constant == 0 - toggleHUD(toShowingState: !isShowing) + + func container(_ view: MenuContainerView, didTapDateButton button: UIButton) { + toggleMenu(toShowing: false) + toggleDatePicker(toShowing: true) } - - @IBAction func pausePressed(_ button: UIButton) { - displaySpeed = 0 - solarSystemNodes.updateSpeed(displaySpeed) + + func container(_ view: MenuContainerView, didTapResetButton button: UIButton) { + Mixpanel.sharedInstance()?.track("tapped reset to detected plane") + resetToDetectedPlane() } - - @IBAction func slowDown(_ sender: UIButton) { - displaySpeed = displaySpeed - 1 - solarSystemNodes.updateSpeed(displaySpeed) + + func container(_ view: MenuContainerView, didTapTogglePathsButton button: UIButton) { + Mixpanel.sharedInstance()?.track("toggled paths") + let currentlyShowing = solarSystemNodes.showingPaths() + solarSystemNodes.toggleOrbitPaths(hidden: !currentlyShowing) + button.setImage(!currentlyShowing ? #imageLiteral(resourceName: "Hide Orbit Selected") : #imageLiteral(resourceName: "Hide Orbit"), for: .normal) } - @IBAction func speedUp(_ sender: UIButton) { - displaySpeed = displaySpeed + 1 - solarSystemNodes.updateSpeed(displaySpeed) + + func container(_ view: MenuContainerView, didTapToggleOrbitScaleButton button: UIButton) { + Mixpanel.sharedInstance()?.track("change orbit scale") + + // toggle the state + scalingOrbitUp = !scalingOrbitUp + + button.setImage(scalingOrbitUp ? #imageLiteral(resourceName: "Scale Orbit Selected") : #imageLiteral(resourceName: "Scale Orbit"), for: .normal) + + solarSystemNodes.scaleOrbit(scalingUp: scalingOrbitUp) + } + + func container(_ view: MenuContainerView, didTapToggleSizeScaleButton button: UIButton) { + Mixpanel.sharedInstance()?.track("change size scale") + + // toggle the state + scaleSizeUp = !scaleSizeUp + + button.setImage(scaleSizeUp ? #imageLiteral(resourceName: "Scale Planets Selected") : #imageLiteral(resourceName: "Scale Planets"), for: .normal) + + // do the scale + solarSystemNodes.scaleNodes(scaleUp: scaleSizeUp) } +} + +// IBActions +extension ViewController { - @IBAction func pinchedScreen(_ sender: UIPinchGestureRecognizer) { + @objc func pinchedScreen(_ sender: UIPinchGestureRecognizer) { pincher?.pinch(with: sender) } @@ -304,16 +468,15 @@ extension ViewController { case .planeDetected(let anchorPosition, let planeAnchor, _): updateLabel() - print("set the sun here \(anchorPosition)") Mixpanel.sharedInstance()?.track("Tapped to set solar system") let root = sceneView.scene.rootNode let position = SCNVector3Make(anchorPosition.x, anchorPosition.y, anchorPosition.z) solarSystemNodes.placeSolarSystem(on: root, at: position) - + let width = planeAnchor.extent.x let depth = planeAnchor.extent.z - + // determine scale based on the size of the plane var radius: Float if depth < width { @@ -321,103 +484,20 @@ extension ViewController { } else { radius = width } - updateUIAfterPlacingObjects(root, radius: radius) + DispatchQueue.main.async { + self.updateUIAfterPlacingObjects(root, radius: radius) + } focusSquare.hide() } } @IBAction func tappedScreen(_ sender: UITapGestureRecognizer) { - if !done { addSolarSystemToFocusSquareLocation() - return - } - - // TODO something gets laggy whenever we tap, so this gets removed till we figure it out - return - - // determine if we've tapped a planet - if (sender.state == .ended) { - let location = sender.location(in: view) - let options: [SCNHitTestOption: Any] = [.searchMode: SCNHitTestSearchMode.all.rawValue] - let hittestResults = sceneView.hitTest(location, options: options) - let nodes = hittestResults.map({ (hitTest) -> SCNNode in - return hitTest.node - }) - - for node in nodes { - // see if it has a planetNode - if self.solarSystemNodes.planetoids.contains(where: { (planets) -> Bool in - return node == planets.value.planetNode - }) { - if let name = node.name { - print("tapped \(name))") - Mixpanel.sharedInstance()?.track("tracked a planet", properties: ["name" : name]) - - // now scroll to this node. We've got a name - self.collectionViewController?.changeToPlanet(name: name) - - // We only want the first one, so return out of the method - return - } - } - } } } - - // This is essentially reset - @IBAction func resetToDetectedPlane() { - Mixpanel.sharedInstance()?.track("tapped reset to detected plane") - guard let anchorWidth = anchorWidth else { - print("Tapped reset without an anchorWidth") - return - } - let radius = anchorWidth / 2 - scaleSizeUp = !scaleSizeUp - - solarSystemNodes.scalePlanets(to: radius) - - orbitShowButton.setImage(#imageLiteral(resourceName: "Hide Orbit"), for: .normal) - orbitScaleButton.setImage(#imageLiteral(resourceName: "Scale Orbit"), for: .normal) - planetScaleButton.setImage(#imageLiteral(resourceName: "Scale Planets"), for: .normal) - - // show the orbits - solarSystemNodes.toggleOrbitPaths(hidden: false) - orbitShowButton.setImage(#imageLiteral(resourceName: "Hide Orbit"), for: .normal) - } - - @IBAction func togglePaths(_ button: UIButton) { - Mixpanel.sharedInstance()?.track("toggled paths") - let currentlyShowing = solarSystemNodes.showingPaths() - solarSystemNodes.toggleOrbitPaths(hidden: !currentlyShowing) - button.setImage(!currentlyShowing ? #imageLiteral(resourceName: "Hide Orbit Selected") : #imageLiteral(resourceName: "Hide Orbit"), for: .normal) - } - - @IBAction func changeOrbitScaleTapped(_ button: UIButton) { - Mixpanel.sharedInstance()?.track("change orbit scale") - - // toggle the state - scalingOrbitUp = !scalingOrbitUp - - button.setImage(scalingOrbitUp ? #imageLiteral(resourceName: "Scale Orbit Selected") : #imageLiteral(resourceName: "Scale Orbit"), for: .normal) - - solarSystemNodes.scaleOrbit(scalingUp: scalingOrbitUp) - } - - @IBAction func changeSizeScaleTapped(_ button: UIButton) { - Mixpanel.sharedInstance()?.track("change size scale") - - // toggle the state - scaleSizeUp = !scaleSizeUp - - button.setImage(scaleSizeUp ? #imageLiteral(resourceName: "Scale Planets Selected") : #imageLiteral(resourceName: "Scale Planets"), for: .normal) - - // do the scale - solarSystemNodes.scaleNodes(scaleUp: scaleSizeUp) - } - + func updateLabel() { - switch cameraState { case .normal: if (!done) { @@ -426,47 +506,35 @@ extension ViewController { break case .featuresDetected(_, _): - status.text = "Searching for a surface" + statusLabelViewController.update(with: .searchForSurface) + toggleStatusLabel(toShowing: true) break case .planeDetected(_, _, _): - status.text = "Tap to set the Solar System" + statusLabelViewController.update(with: .tapToSetSolarSystem) + toggleStatusLabel(toShowing: true) } } else if let planet = insidePlanet { + toggleStatusLabel(toShowing: true) if planet == Planet.sun { - status.text = "You are inside the \(planet.name)" + statusLabelViewController + .update(with: StatusLabelViewModel.inside(celestialObject: "the \(planet.name)")) } else { - status.text = "You are inside \(planet.name)" + statusLabelViewController + .update(with: StatusLabelViewModel.inside(celestialObject: planet.name)) } - } else { - status.text = "" } case .notAvailable: - status.text = "Tracking unavailable" + toggleStatusLabel(toShowing: true) + statusLabelViewController.update(with: .trackingUnavailable) case .limited(let reason): - status.text = "Tracking Limited: \(reason)" + toggleStatusLabel(toShowing: true) + statusLabelViewController.update(with: .limitedTracking(reason: "\(reason)")) } } } - extension ViewController: ARSessionObserver { - func session(_ session: ARSession, didFailWithError error: Error) { - print("error \(error.localizedDescription)") - } - - /** - This is called when the camera's tracking state has changed. - - @param session The session being run. - @param camera The camera that changed tracking states. - */ - func session(_ session: ARSession, cameraDidChangeTrackingState camera: ARCamera) { - DispatchQueue.main.async { - self.updateLabel() - } - } - /** This is called when a session is interrupted. @@ -492,11 +560,7 @@ extension ViewController: ARSessionObserver { @param session The session that was interrupted. */ func sessionInterruptionEnded(_ session: ARSession) { - print("Session interruption ended") - let sessionConfig = ARWorldTrackingConfiguration() - session.run(sessionConfig, options: [.resetTracking, .removeExistingAnchors]) restartPlaneDetection() - status.text = "Resetting Session" } } @@ -508,10 +572,6 @@ extension ViewController: ARSCNViewDelegate { return } -// if !done { -// return -// } - if startTime == 0 { startTime = time } @@ -521,17 +581,16 @@ extension ViewController: ARSCNViewDelegate { // b) determine if we are inside of a node var distances = [Planet:Float]() var sizes = [Planet:Float]() - insidePlanet = nil let delta = (time - startTime) * 60 * 60 * 24 let newDate = startDate.addingTimeInterval(delta) displayedDate = newDate solarSystemNodes.updatePostions(to: newDate) + var newInsidePlanet: Planet? for (planet, node) in solarSystemNodes.planetoids { guard let planetNode = node.planetNode else { - print("\(planet.name ) doesn't have a node, bail") return } let distance = cameraNode.position.distance(receiver: planetNode.position) @@ -541,46 +600,29 @@ extension ViewController: ARSCNViewDelegate { if let sphere = planetNode.geometry as? SCNSphere { let radius = sphere.radius * CGFloat(planetNode.scale.x) if CGFloat(distance) < radius { - insidePlanet = planet + newInsidePlanet = planet } } } + if let newInsidePlanet = newInsidePlanet { + insidePlanet = newInsidePlanet + } else { + // if we used to have an insidePlanet, but now we do not, hide the status + if insidePlanet != nil { + insidePlanet = nil + DispatchQueue.main.async { + self.toggleStatusLabel(toShowing: false) + } + } + } + DispatchQueue.main.async { self.updateFocusSquare() self.updateLabel() -// self.updateDateString(newDate) - - self.lastUpdateTime = time - if let planet = self.collectionViewController?.currentPlanet, let meters = distances[planet] { - var distanceString = "" - distanceString = "\(meters.format(f: ".1")) real meters away" - self.collectionViewController?.updateDistance(distanceString) - } - //TODO come back to this -// self.collectionViewController?.updateReferenceSize(sizes) - let arrowNode = self.arrowNode - if let constraints = arrowNode.constraints { - let lookats: [SCNLookAtConstraint] = constraints.filter({ (constraint) -> Bool in - if let _ = constraint as? SCNLookAtConstraint { - return true - } - return false - }) as! [SCNLookAtConstraint] - - if let lookatTarget = lookats.first?.target { - self.arrowNode.isHidden = self.sceneView.isNode(lookatTarget, insideFrustumOf: cameraNode) || !self.done - } - } + self.hudViewController.update(with: distances) } } - #if DEBUG - @objc func handleDoubleTap(_ recognizer: UITapGestureRecognizer) { - guard let anchor = self.debugPlaneAnchorNode else {return} - anchor.isHidden = !anchor.isHidden - } - #endif - /** Called when a new node has been mapped to the given anchor. @@ -589,35 +631,22 @@ extension ViewController: ARSCNViewDelegate { @param anchor The added anchor. */ func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) { - DispatchQueue.main.async { - print("did add node, pushed to main queue") - - if let planeAnchor = anchor as? ARPlaneAnchor { - #if DEBUG - // DEBUG: Display all of the ARPlaneAnchors that we see - let pos = SCNVector3.positionFromTransform(planeAnchor.transform) - print("NEW SURFACE DETECTED AT \(pos.friendlyString())") - print("The box of the plane is before scaling is \(planeAnchor.extent)") - - // We get a plane, this should roughly match a tabletop or a floor - let plane = BorderedPlane(width: planeAnchor.extent.x, height: planeAnchor.extent.z, color: .blue) - self.debugPlaneAnchorNode = plane - node.addChildNode(plane) - - let borderMaterial = SCNMaterial() - borderMaterial.diffuse.contents = UIColor.blue - plane.addBorder(materials: [borderMaterial]) - - // once we are restarting a session, this needs to be checked - let tap = UITapGestureRecognizer(target: self, action: #selector(self.handleDoubleTap(_:))) - tap.numberOfTapsRequired = 3 - self.view.addGestureRecognizer(tap) - #endif - - if self.done { - return - } - Mixpanel.sharedInstance()?.track("Discovered an Anchor") + if let planeAnchor = anchor as? ARPlaneAnchor { + #if DEBUG || false + // We get a plane, this should roughly match a tabletop or a floor + let plane = BorderedPlane(width: planeAnchor.extent.x, height: planeAnchor.extent.z, color: .blue) + node.addChildNode(plane) + + let borderMaterial = SCNMaterial() + borderMaterial.diffuse.contents = UIColor.blue + plane.addBorder(materials: [borderMaterial]) + #endif + + if self.done { + return + } + Mixpanel.sharedInstance()?.track("Discovered an Anchor") + DispatchQueue.main.async { self.dismiss(animated: false) } } @@ -631,12 +660,11 @@ extension ViewController: ARSCNViewDelegate { @param anchor The anchor that was updated. */ func renderer(_ renderer: SCNSceneRenderer, willUpdate node: SCNNode, for anchor: ARAnchor) { -// print("will update node \(node) for anchor \(anchor.identifier)") - // Since we added our SCNPlane to the node as a child, we must find the first child // The anchor, of course, must be an ARPlaneAnchor // Update the SCNPlane geometry of this SCNNode to resemble our new understanding - if let thePlaneNode = node.childNodes.first, let planeAnchor = anchor as? ARPlaneAnchor { + if let thePlaneNode = node.childNodes.first, + let planeAnchor = anchor as? ARPlaneAnchor { for line in thePlaneNode.childNodes { line.removeFromParentNode() } @@ -651,34 +679,12 @@ extension ViewController: ARSCNViewDelegate { func updateUIAfterPlacingObjects(_ node: SCNNode, radius: Float) { // move the HUD so it's visible - self.toggleHUD(toShowingState: true) - - self.collectionViewController?.hintScrollable() - - // Make the bottom HUD show, hint that it is scrollable - // UIView.animate(withDuration: 0.3, delay: 2, options: .curveEaseInOut, animations: { - // self.view.layoutIfNeeded() - // }, completion: { (completed) in - // self.collectionViewController?.hintScrollable() - // }) - - if let cameraNode = self.sceneView.pointOfView { - self.arrowNode.categoryBitMask = 4 - cameraNode.addChildNode(self.arrowNode) - self.solarSystemNodes.updateLookat(selected: Planet.sun, arrowNode: self.arrowNode) - var lightVector = node.position - lightVector.y = 10 - let light = SCNNode.omniLight(lightVector) - node.addChildNode(light) - } - - // unhide the toggleViews - _ = self.toggleViews.map({ (view) in - view.isHidden = false - }) - self.done = true - self.solarSystemNodes.scalePlanets(to: radius / 2) - self.anchorWidth = radius + toggleHUD(toShowing: true) + toggleMenu(toShowing: true) + toggleStatusLabel(toShowing: false) + done = true + solarSystemNodes.scalePlanets(to: radius / 2) + anchorWidth = radius // At this point the planets are visible. Set a timer for the rating mechanism. // The thinking here is that they've seen the planets and are playing with them for a minute. @@ -688,14 +694,4 @@ extension ViewController: ARSCNViewDelegate { AppRater.requestEventIsAppropriate() } } - #if DEBUG - func nextMaterial() -> SCNMaterial { - let material = SCNMaterial() - let color = self.colors[self.planeCount % self.colors.count] - print("The color is \(color)") - material.diffuse.contents = color.withAlphaComponent(0.6) - self.planeCount = self.planeCount + 1 - return material - } - #endif } diff --git a/SolarSystem/AboutViewController.swift b/SolarSystem/Views/AboutView.swift similarity index 57% rename from SolarSystem/AboutViewController.swift rename to SolarSystem/Views/AboutView.swift index da63893..25073a4 100644 --- a/SolarSystem/AboutViewController.swift +++ b/SolarSystem/Views/AboutView.swift @@ -1,49 +1,48 @@ // -// AboutViewController.swift -// SolarSystem +// AboutView.swift +// SolAR // -// Created by Roderic Campbell on 8/7/17. -// Copyright © 2017 Roderic Campbell. All rights reserved. +// Created by Roderic Campbell on 2/12/19. +// Copyright © 2019 Roderic Campbell. All rights reserved. // -import Foundation -import UIKit +import SwiftMessages import Mixpanel -class AboutViewController: UIViewController { - +class AboutView: MessageView { @IBOutlet weak var bottomText: UITextView! @IBOutlet weak var topText: UITextView! - @IBOutlet weak var topTextHeightConstraint: NSLayoutConstraint! - - @IBOutlet weak var bottomTextHeightConstraint: NSLayoutConstraint! - override func viewDidLoad() { - Mixpanel.sharedInstance()?.track("About View Loaded") - } - - @IBAction func dismiss(_ sender: Any) { - self.dismiss(animated: true) + + required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) } - + @IBAction func visitThumbworks(_ sender: Any) { Mixpanel.sharedInstance()?.track("Tap Thumbworks") if let url = URL(string: "http://thumbworks.io") { UIApplication.shared.open(url, options:[:] ) } } - + + @IBAction func rateTheApp(_ sender: Any) { + Mixpanel.sharedInstance()?.track("Rate the app") + let appID = "1262856697" + if let url = URL(string: "itms-apps://itunes.apple.com/app/id\(appID)?action=write-review") { + UIApplication.shared.open(url, options:[:] ) + } + } + @IBAction func seeOtherApps(_ sender: Any) { Mixpanel.sharedInstance()?.track("See other apps") if let url = URL(string: "http://appstore.com/thumbworks") { UIApplication.shared.open(url, options:[:] ) } } - + @IBAction func visitTwitter(_ sender: Any) { if let url = URL(string: "twitter://user?screen_name=thumbworksinc") { if UIApplication.shared.canOpenURL(url) { Mixpanel.sharedInstance()?.track("Tap Twitter Native") - UIApplication.shared.open(url, options:[:] ) return } @@ -53,14 +52,4 @@ class AboutViewController: UIViewController { UIApplication.shared.open(url, options:[:] ) } } - - override func viewDidLayoutSubviews() { - super.viewDidLayoutSubviews() - - bottomTextHeightConstraint.constant = bottomText.contentSize.height - bottomText.layoutIfNeeded() - - topTextHeightConstraint.constant = topText.contentSize.height - topText.layoutIfNeeded() - } } diff --git a/SolarSystem/Views/AboutView.xib b/SolarSystem/Views/AboutView.xib new file mode 100644 index 0000000..6deedea --- /dev/null +++ b/SolarSystem/Views/AboutView.xib @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This Augmented Reality version of our Solar System based on ARKit provides a unique learning experience for those that are curious about our world and how it interacts with the its surroundings. With a quick tap you can explore the Planets in a realistic scale which, we think you'll find, is very eye opening. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + We are a Software Development shop focusing on delightful iOS experiences. If you would like to talk to us about building an Augmented Reality or any other iOS app, feel free to reach out. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SolarSystem/Views/HUDView.swift b/SolarSystem/Views/HUDView.swift new file mode 100644 index 0000000..63c64f5 --- /dev/null +++ b/SolarSystem/Views/HUDView.swift @@ -0,0 +1,51 @@ +// +// HudView.swift +// SolAR +// +// Created by Roderic Campbell on 2/14/19. +// Copyright © 2019 Roderic Campbell. All rights reserved. +// + +import UIKit + +extension UICollectionViewCell { + static var reuseIdentifier: String { + return String(describing: self) + } +} + +struct HUDViewModel { + let title: String + let axial: Float + let radius: Float + let distance: String +} + +class HUDView: UIView { + @IBOutlet weak var collectionView: UICollectionView! + @IBOutlet weak var title: UILabel! + @IBOutlet weak var axial: UILabel! + @IBOutlet weak var radius: UILabel! + @IBOutlet weak var distance: UILabel! + + static func instantiate() -> HUDView { + let view: HUDView = initFromNib() + return view + } + + func updateWith(viewModel: HUDViewModel) { + title.text = viewModel.title + axial.text = "\(viewModel.axial)° tilt" + radius.text = "\(viewModel.radius) km radius" + distance.text = viewModel.distance + } +} + +extension Planet { + func hudViewModel() -> HUDViewModel { + return HUDViewModel(title: name, + axial: axialTilt, + radius: radius, + distance: "tbd") + } +} diff --git a/SolarSystem/Views/HUDView.xib b/SolarSystem/Views/HUDView.xib new file mode 100644 index 0000000..f0a1268 --- /dev/null +++ b/SolarSystem/Views/HUDView.xib @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SolarSystem/Views/MenuContainerView.swift b/SolarSystem/Views/MenuContainerView.swift new file mode 100644 index 0000000..d88aa5a --- /dev/null +++ b/SolarSystem/Views/MenuContainerView.swift @@ -0,0 +1,59 @@ +import UIKit + + +protocol MenuContainerViewDelegate: class { + func container(_ view: MenuContainerView, didTapInfoButton button: UIButton) + func container(_ view: MenuContainerView, didTapDateButton button: UIButton) + func container(_ view: MenuContainerView, didTapResetButton button: UIButton) + func container(_ view: MenuContainerView, didTapTogglePathsButton button: UIButton) + func container(_ view: MenuContainerView, didTapToggleOrbitScaleButton button: UIButton) + func container(_ view: MenuContainerView, didTapToggleSizeScaleButton button: UIButton) +} + +class MenuContainerView: UIView { + + weak var delegate: MenuContainerViewDelegate? + + static func instantiate() -> MenuContainerView { + let view: MenuContainerView = initFromNib() + view.translatesAutoresizingMaskIntoConstraints = false + return view + } + + @IBAction func tappedInfo(_ button: UIButton) { + print("tapped info") + delegate?.container(self, didTapInfoButton: button) + } + + @IBAction func toggleDateSelector(_ button: UIButton) { + delegate?.container(self, didTapDateButton: button) + } + + @IBAction func resetToDetectedPlane(_ button: UIButton) { + print("reset to detected plane") + delegate?.container(self, didTapResetButton: button) + } + + @IBAction func togglePaths(_ button: UIButton) { + print("toggle paths") + delegate?.container(self, didTapTogglePathsButton: button) + } + + @IBAction func changeOrbitScaleTapped(_ button: UIButton) { + print("change orbit scale") + delegate?.container(self, didTapToggleOrbitScaleButton: button) + } + + @IBAction func changeSizeScaleTapped(_ button: UIButton) { + print("change size scale") + delegate?.container(self, didTapToggleSizeScaleButton: button) + } + + public func disableButtons() { + + } + + public func enableButtons() { + + } +} diff --git a/SolarSystem/Views/MenuContainerView.xib b/SolarSystem/Views/MenuContainerView.xib new file mode 100644 index 0000000..528d7a0 --- /dev/null +++ b/SolarSystem/Views/MenuContainerView.xib @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SolarSystem/Views/PlanetCell.swift b/SolarSystem/Views/PlanetCell.swift new file mode 100644 index 0000000..a933a29 --- /dev/null +++ b/SolarSystem/Views/PlanetCell.swift @@ -0,0 +1,19 @@ +// +// PlanetCell.swift +// SolAR +// +// Created by Roderic Campbell on 2/14/19. +// Copyright © 2019 Roderic Campbell. All rights reserved. +// + +import UIKit +import SceneKit + +class PlanetCell: UICollectionViewCell { + @IBOutlet var sceneView: SCNView! + + override func prepareForReuse() { + sceneView.scene = nil + } + +} diff --git a/SolarSystem/Views/PlanetCell.xib b/SolarSystem/Views/PlanetCell.xib new file mode 100644 index 0000000..5a996a8 --- /dev/null +++ b/SolarSystem/Views/PlanetCell.xib @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SolarSystem/Views/StatusLabelView.swift b/SolarSystem/Views/StatusLabelView.swift new file mode 100644 index 0000000..cbc2deb --- /dev/null +++ b/SolarSystem/Views/StatusLabelView.swift @@ -0,0 +1,17 @@ +// +// StatusLabelView.swift +// SolAR +// +// Created by Roderic Campbell on 4/3/19. +// Copyright © 2019 Roderic Campbell. All rights reserved. +// + +import UIKit + +class StatusLabelView: UIView { + @IBOutlet weak var label: UILabel! + static func instantiate() -> StatusLabelView { + let view: StatusLabelView = initFromNib() + return view + } +} diff --git a/SolarSystem/Views/StatusLabelView.xib b/SolarSystem/Views/StatusLabelView.xib new file mode 100644 index 0000000..eca3a5a --- /dev/null +++ b/SolarSystem/Views/StatusLabelView.xib @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SolarSystem/Views/TutorialView.xib b/SolarSystem/Views/TutorialView.xib new file mode 100644 index 0000000..25a3b79 --- /dev/null +++ b/SolarSystem/Views/TutorialView.xib @@ -0,0 +1,70 @@ + + + + + + + + + + + + + NasalizationRg-Regular + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SolarSystem/Views/WhiteView.swift b/SolarSystem/Views/WhiteView.swift new file mode 100644 index 0000000..9c6b09f --- /dev/null +++ b/SolarSystem/Views/WhiteView.swift @@ -0,0 +1,17 @@ +// +// WhiteView.swift +// SolAR +// +// Created by Roderic Campbell on 4/3/19. +// Copyright © 2019 Roderic Campbell. All rights reserved. +// + +import UIKit + +class WhiteView: UIView { + override func awakeFromNib() { + layer.cornerRadius = 20 + layer.masksToBounds = true + backgroundColor = .white + } +} diff --git a/SolarSystem/art.scnassets/Bump.jpg b/SolarSystem/art.scnassets/Bump.jpg index dc8c2c4..8213669 100644 Binary files a/SolarSystem/art.scnassets/Bump.jpg and b/SolarSystem/art.scnassets/Bump.jpg differ diff --git a/SolarSystem/art.scnassets/Clouds.png b/SolarSystem/art.scnassets/Clouds.png deleted file mode 100644 index 5d4d35e..0000000 Binary files a/SolarSystem/art.scnassets/Clouds.png and /dev/null differ diff --git a/SolarSystem/art.scnassets/Color+Map.jpg b/SolarSystem/art.scnassets/Color+Map.jpg index 446e14e..1251955 100644 Binary files a/SolarSystem/art.scnassets/Color+Map.jpg and b/SolarSystem/art.scnassets/Color+Map.jpg differ diff --git a/SolarSystem/art.scnassets/Earth.scn b/SolarSystem/art.scnassets/Earth.scn index 6844cba..a4a9d0f 100644 Binary files a/SolarSystem/art.scnassets/Earth.scn and b/SolarSystem/art.scnassets/Earth.scn differ diff --git a/SolarSystem/art.scnassets/Jupiter.scn b/SolarSystem/art.scnassets/Jupiter.scn index a74d7e5..9c9ac37 100644 Binary files a/SolarSystem/art.scnassets/Jupiter.scn and b/SolarSystem/art.scnassets/Jupiter.scn differ diff --git a/SolarSystem/art.scnassets/Mars.scn b/SolarSystem/art.scnassets/Mars.scn index 3b3e9dc..74b6f88 100644 Binary files a/SolarSystem/art.scnassets/Mars.scn and b/SolarSystem/art.scnassets/Mars.scn differ diff --git a/SolarSystem/art.scnassets/Mercury.scn b/SolarSystem/art.scnassets/Mercury.scn index 3e4c12c..3d04375 100644 Binary files a/SolarSystem/art.scnassets/Mercury.scn and b/SolarSystem/art.scnassets/Mercury.scn differ diff --git a/SolarSystem/art.scnassets/Neptune.scn b/SolarSystem/art.scnassets/Neptune.scn index a97322a..2475f0d 100644 Binary files a/SolarSystem/art.scnassets/Neptune.scn and b/SolarSystem/art.scnassets/Neptune.scn differ diff --git a/SolarSystem/art.scnassets/Night+Lights.jpg b/SolarSystem/art.scnassets/Night+Lights.jpg index ffb2a31..fabfb9d 100644 Binary files a/SolarSystem/art.scnassets/Night+Lights.jpg and b/SolarSystem/art.scnassets/Night+Lights.jpg differ diff --git a/SolarSystem/art.scnassets/Pluto.scn b/SolarSystem/art.scnassets/Pluto.scn index 9ab7c51..f0bf01b 100644 Binary files a/SolarSystem/art.scnassets/Pluto.scn and b/SolarSystem/art.scnassets/Pluto.scn differ diff --git a/SolarSystem/art.scnassets/Saturn.scn b/SolarSystem/art.scnassets/Saturn.scn index e5bc0d7..da660f8 100644 Binary files a/SolarSystem/art.scnassets/Saturn.scn and b/SolarSystem/art.scnassets/Saturn.scn differ diff --git a/SolarSystem/art.scnassets/Sun.scn b/SolarSystem/art.scnassets/Sun.scn index e8529cd..457c9c3 100644 Binary files a/SolarSystem/art.scnassets/Sun.scn and b/SolarSystem/art.scnassets/Sun.scn differ diff --git a/SolarSystem/art.scnassets/Uranus.scn b/SolarSystem/art.scnassets/Uranus.scn index 37a9806..e27b9b5 100644 Binary files a/SolarSystem/art.scnassets/Uranus.scn and b/SolarSystem/art.scnassets/Uranus.scn differ diff --git a/SolarSystem/art.scnassets/Venus.scn b/SolarSystem/art.scnassets/Venus.scn index 6532e68..a358f40 100644 Binary files a/SolarSystem/art.scnassets/Venus.scn and b/SolarSystem/art.scnassets/Venus.scn differ diff --git a/SolarSystem/art.scnassets/arrow.dae b/SolarSystem/art.scnassets/arrow.dae deleted file mode 100644 index 41d82b7..0000000 --- a/SolarSystem/art.scnassets/arrow.dae +++ /dev/null @@ -1,139 +0,0 @@ - - - - - SceneKit Collada Exporter v1.0 - - 2017-07-22T05:15:19Z - 2017-07-22T05:15:19Z - - Z_UP - - - - - - 0.982315 0.944091 0.935715 - 0 - 0 - 1 - - - - - 0 - 0 - 2 - 1000 - - - - - - - 0.723366 0.723366 0.723366 - 0 - 0 - 1 - - - - - 0 - 0 - 2 - 700 - - - - - - - - - - - - - - - - 0.498039 1 0 1 - - - 1 - - - 1 - - - - - - - 1 - 0 - - - - - - - - - 107 80.75 0 59.25 80.75 0 29.625 164.5 0 0 80.75 0 -47.75 80.75 0 0 0 0 59.25 0 0 29.625 164.5 33 -47.75 80.75 0 -47.75 80.75 33 29.625 164.5 0 29.625 164.5 0 107 80.75 33 107 80.75 0 29.625 164.5 33 107 80.75 33 59.25 80.75 0 107 80.75 0 59.25 80.75 33 59.25 80.75 0 59.25 0 33 59.25 0 0 59.25 80.75 33 59.25 0 33 0 0 0 59.25 0 0 0 0 33 0 80.75 33 0 0 0 0 0 33 0 80.75 0 0 80.75 33 -47.75 80.75 0 0 80.75 0 -47.75 80.75 33 59.25 0 33 0 80.75 33 0 0 33 29.625 164.5 33 59.25 80.75 33 107 80.75 33 -47.75 80.75 33 - - - - - - - - - - 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 -0.734509 0.678599 0 -0.734509 0.678599 0 -0.734509 0.678599 0 -0.734509 0.678599 0 0.734509 0.678599 0 0.734509 0.678599 0 0.734509 0.678599 0 0.734509 0.678599 0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 1 0 0 1 0 0 1 0 0 1 0 0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 - - - - - - - - - - - - - - - -

0 1 2 2 3 4 3 2 5 5 2 6 6 2 1 7 8 9 8 7 10 11 12 13 12 11 14 15 16 17 16 15 18 19 20 21 20 19 22 23 24 25 24 23 26 27 28 29 28 27 30 31 32 33 32 31 34 35 36 37 36 35 38 38 35 39 38 39 40 38 41 36

-
-
-
-
- - - - - - - - - - - - 0.9999999 0 0 -332.1812 0 0.9999999 0 -1055.881 0 0 0.9999999 -583.5449 0 0 0 1 - - - - 1 0 0 558.9993 0 1 0 -1210.837 0 0 1 687.438 0 0 0 1 - - - - - - - - -
diff --git a/SolarSystem/nasalization-rg.ttf b/SolarSystem/nasalization-rg.ttf deleted file mode 100755 index 8cfa31e..0000000 Binary files a/SolarSystem/nasalization-rg.ttf and /dev/null differ diff --git a/SwiftAA.framework/Headers/KPCAA2DCoordinate.h b/SwiftAA.framework/Headers/KPCAA2DCoordinate.h deleted file mode 100644 index 57d6fac..0000000 --- a/SwiftAA.framework/Headers/KPCAA2DCoordinate.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// CAA2DCoordinate.h -// SwiftAA -// -// Created by Cédric Foellmi on 03/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct KPCAA2DCoordinateComponents { - double X; - double Y; -} KPCAA2DCoordinateComponents; - -// Because we can't (and don't want) import C++ header in this one, one must go through the exposition of all vars. -KPCAA2DCoordinateComponents KPCAA2DCoordinateComponentsMake(double X, double Y); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAA3DCoordinate.h b/SwiftAA.framework/Headers/KPCAA3DCoordinate.h deleted file mode 100644 index 9508d9d..0000000 --- a/SwiftAA.framework/Headers/KPCAA3DCoordinate.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// KPCAA3DCoordinate.h -// SwiftAA -// -// Created by Cédric Foellmi on 04/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct KPCAA3DCoordinateComponents { - double X; - double Y; - double Z; -} KPCAA3DCoordinateComponents; - -// Because we can't (and don't want) import C++ header in this one, one must go through the exposition of all vars. -KPCAA3DCoordinateComponents KPCAA3DCoordinateComponentsMake(double X, double Y, double Z); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAAberration.h b/SwiftAA.framework/Headers/KPCAAAberration.h deleted file mode 100644 index 11b7891..0000000 --- a/SwiftAA.framework/Headers/KPCAAAberration.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// KPCAAAberration.h -// SwiftAA -// -// Created by Cédric Foellmi on 04/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import -#import "KPCAA2DCoordinate.h" -#import "KPCAA3DCoordinate.h" - -#ifdef __cplusplus -extern "C" { -#endif - -// 3D -KPCAA3DCoordinateComponents KPCAAAberration_EarthVelocity(double JD, BOOL highPrecision); - -// 2D -KPCAA2DCoordinateComponents KPCAAAberration_EquatorialAberration(double Alpha, double Delta, double JD, BOOL highPrecision); -KPCAA2DCoordinateComponents KPCAAAberration_EclipticAberration(double Lambda, double Beta, double JD, BOOL highPrecision); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAAngularSeparation.h b/SwiftAA.framework/Headers/KPCAAAngularSeparation.h deleted file mode 100644 index 1aad14b..0000000 --- a/SwiftAA.framework/Headers/KPCAAAngularSeparation.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// KPCAAAngularSeparation.h -// SwiftAA -// -// Created by Cédric Foellmi on 04/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAAngularSeparation_Separation(double Alpha1, double Delta1, double Alpha2, double Delta2); - -double KPCAAAngularSeparation_PositionAngle(double Alpha1, double Delta1, double Alpha2, double Delta2); - -double KPCAAAngularSeparation_DistanceFromGreatArc(double Alpha1, double Delta1, double Alpha2, double Delta2, double Alpha3, double Delta3); - -double KPCAAAngularSeparation_SmallestCircle(double Alpha1, double Delta1, double Alpha2, double Delta2, double Alpha3, double Delta3, bool *bType1); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAABinaryStar.h b/SwiftAA.framework/Headers/KPCAABinaryStar.h deleted file mode 100644 index d047ff8..0000000 --- a/SwiftAA.framework/Headers/KPCAABinaryStar.h +++ /dev/null @@ -1,42 +0,0 @@ -// -// KPCAABinaryStar.h -// SwiftAA -// -// Created by Cédric Foellmi on 04/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct KPCAABinaryStarDetails { - double r; - double Theta; - double Rho; -} KPCAABinaryStarDetails; - -/** Units: - * t (time): decimal years - * P (Period): mean solar years - * T (time of periastron): decimal year - * e (eccentricity): n.a. - * a (semi major axis): arcseconds - * i (inclination): degrees - * Omega (position angle of ascending nodes): degrees - * w (longitude of periastron): degrees - */ -KPCAABinaryStarDetails KPCAABinaryStar_CalculateDetails(double t, double P, double T, double e, double a, double i, double Omega, double w); - -/** Units: - * e: n.a. - * i: degrees - * w: degrees - */ -double KPCAABinaryStar_ApparentEccentricity(double e, double i, double w); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAACoordinateTransformation.h b/SwiftAA.framework/Headers/KPCAACoordinateTransformation.h deleted file mode 100644 index b5f17e7..0000000 --- a/SwiftAA.framework/Headers/KPCAACoordinateTransformation.h +++ /dev/null @@ -1,50 +0,0 @@ -// -// KPCAACoordinateTransformation.h -// SwiftAA -// -// Created by Cédric Foellmi on 04/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import -#import "KPCAA2DCoordinate.h" - -#ifdef __cplusplus -extern "C" { -#endif - -// Alpha=R.A., Delta=Declination, Epsilon=Obliquity (not epoch) -KPCAA2DCoordinateComponents KPCAACoordinateTransformation_Equatorial2Ecliptic(double Alpha, double Delta, double Epsilon); - -// Lambda=Celestial Longitude, Beta=Celestial Latitude, Epsilon=Obliquity (not epoch) -KPCAA2DCoordinateComponents KPCAACoordinateTransformation_Ecliptic2Equatorial(double Lambda, double Beta, double Epsilon); - -// lha=Local Hour Angle, Delta=Declination, latitude=Latitude -KPCAA2DCoordinateComponents KPCAACoordinateTransformation_Equatorial2Horizontal(double lha, double Delta, double latitude); - -// A=Azimuth, h=Altitude, latitude=latitude -KPCAA2DCoordinateComponents KPCAACoordinateTransformation_Horizontal2Equatorial(double A, double h, double latitude); - -// Alpha=R.A., Delta=Declination -KPCAA2DCoordinateComponents KPCAACoordinateTransformation_Equatorial2Galactic(double Alpha, double Delta); - -// l=Galactic Longitude, b=Galactic Latitude; -KPCAA2DCoordinateComponents KPCAACoordinateTransformation_Galactic2Equatorial(double l, double b); - -double DegreesToRadians(double Degrees); -double RadiansToDegrees(double Radians); -double RadiansToHours(double Radians); -double HoursToRadians(double Hours); -double HoursToDegrees(double Hours); -double DegreesToHours(double Degrees); -double PI(); -double MapTo0To360Range(double Degrees); -double MapToMinus90To90Range(double Degrees); -double MapTo0To24Range(double HourAngle); -double MapTo0To2PIRange(double Angle); -double DMSToDegrees(double Degrees, double Minutes, double Seconds, bool bPositive); - - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAADate.h b/SwiftAA.framework/Headers/KPCAADate.h deleted file mode 100644 index c693383..0000000 --- a/SwiftAA.framework/Headers/KPCAADate.h +++ /dev/null @@ -1,83 +0,0 @@ -// -// KPCAADate.h -// SwiftAA -// -// Created by Cédric Foellmi on 04/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -typedef struct KPCAACalendarDate { - long Year; - long Month; - long Day; -} KPCAACalendarDate; - - -typedef NS_ENUM(NSUInteger, DAY_OF_WEEK) { - SUNDAY, - MONDAY, - TUESDAY, - WEDNESDAY, - THURSDAY, - FRIDAY, - SATURDAY -}; - -@interface KPCAADate : NSObject - -// Constructors - -- (instancetype)initWithYear:(long)Year month:(long)Month day:(double)Day usingGregorianCalendar:(BOOL)gregorianCalendar; - -- (instancetype)initWithYear:(long)Year month:(long)Month day:(double)Day hour:(double)Hour minute:(double)Minute second:(double)Second usingGregorianCalendar:(BOOL)gregorianCalendar; - -- (instancetype)initWithJulianDay:(double)JD usingGregorianCalendar:(BOOL)gregorianCalendar; - -// Class methods (~ 'static' in C++) - -+ (double)DateToJDForYear:(long)Year month:(long)Month day:(double)Day usingGregorianCalendar:(BOOL)gregorianCalendar; - -+ (BOOL)IsLeapForYear:(long)Year usingGregorianCalendar:(BOOL)gregorianCalendar; - -+ (void)DayOfYearToDayAndMonth:(long)DayOfYear leap:(BOOL)leapYear dayOfMonth:(long *)DayOfMonth month:(long *)Month; - -+ (KPCAACalendarDate)JulianToGregorianForYear:(long)Year month:(long)Month day:(long)Day; - -+ (KPCAACalendarDate)GregorianToJulianForYear:(long)Year month:(long)Month day:(long)Day; - -// Instance methods (~ 'non static' in C++) - -- (double)Julian; -- (long)Day; -- (long)Month; -- (long)Year; -- (long)Hour; -- (long)Minute; -- (double)Second; - -- (void)setDateWithYear:(long)Year month:(long)Month day:(double)Day hour:(double)Hour minute:(double)Minute second:(double)Second usingGregorianCalendar:(BOOL)gregorianCalendar; - -- (void)setDateWithJulianDay:(double)JD usingGregorianCalendar:(BOOL)gregorianCalendar; - -- (void)setInGregorianCalendar:(BOOL)gregorianCalendar; - -- (void)getDateWithYear:(long *)Year month:(long *)Month day:(long *)Day hour:(long *)Hour minute:(long *)Minute second:(double *)Second; - -- (DAY_OF_WEEK)DayOfWeek; -- (double)DayOfYear; -- (long)DaysInMonth; -- (long)DaysInYear; -- (BOOL)Leap; -- (BOOL)InGregorianCalendar; -- (double)FractionalYear; - -@end - -@interface KPCAADate (SwiftAAAdditions) - -- (instancetype)initWithGregorianCalendarDate:(NSDate *)date; - -@end - diff --git a/SwiftAA.framework/Headers/KPCAADiameters.h b/SwiftAA.framework/Headers/KPCAADiameters.h deleted file mode 100644 index aad3e2c..0000000 --- a/SwiftAA.framework/Headers/KPCAADiameters.h +++ /dev/null @@ -1,52 +0,0 @@ -// -// KPCAADiameters.h -// SwiftAA -// -// Created by Cédric Foellmi on 04/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import -#import "KPCAASwiftAdditions.h" - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAADiameters_SunSemidiameterA(double Delta); -double KPCAADiameters_MercurySemidiameterA(double Delta); -double KPCAADiameters_VenusSemidiameterA(double Delta); -double KPCAADiameters_MarsSemidiameterA(double Delta); -double KPCAADiameters_JupiterEquatorialSemidiameterA(double Delta); -double KPCAADiameters_JupiterPolarSemidiameterA(double Delta); -double KPCAADiameters_SaturnEquatorialSemidiameterA(double Delta); -double KPCAADiameters_SaturnPolarSemidiameterA(double Delta); -double KPCAADiameters_ApparentSaturnPolarSemidiameterA(double Delta, double B); -double KPCAADiameters_UranusSemidiameterA(double Delta); -double KPCAADiameters_NeptuneSemidiameterA(double Delta); - -double KPCAADiameters_MercurySemidiameterB(double Delta); -double KPCAADiameters_VenusSemidiameterB(double Delta); -double KPCAADiameters_MarsSemidiameterB(double Delta); -double KPCAADiameters_JupiterEquatorialSemidiameterB(double Delta); -double KPCAADiameters_JupiterPolarSemidiameterB(double Delta); -double KPCAADiameters_SaturnEquatorialSemidiameterB(double Delta); -double KPCAADiameters_SaturnPolarSemidiameterB(double Delta); -double KPCAADiameters_ApparentSaturnPolarSemidiameterB(double Delta, double B); -double KPCAADiameters_UranusSemidiameterB(double Delta); -double KPCAADiameters_NeptuneSemidiameterB(double Delta); -double KPCAADiameters_PlutoSemidiameterB(double Delta); - -double KPCAADiameters_GeocentricMoonSemidiameter(double Delta); -double KPCAADiameters_TopocentricMoonSemidiameter(double DistanceDelta, double Delta, double H, double Latitude, double Height); -double KPCAADiameters_AsteroidDiameter(double H, double A); -double KPCAADiameters_ApparentAsteroidDiameter(double H, double A); - -// SwiftAA Additions - -double KPCAADiameters_EquatorialSemiDiameterB(KPCAAPlanet planet, double Delta); -double KPCAADiameters_PolarSemiDiameterB(KPCAAPlanet planet, double Delta); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAADynamicalTime.h b/SwiftAA.framework/Headers/KPCAADynamicalTime.h deleted file mode 100644 index 76725b0..0000000 --- a/SwiftAA.framework/Headers/KPCAADynamicalTime.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// KPCAADynamicalTime.h -// SwiftAA -// -// Created by Cédric Foellmi on 04/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAADynamicalTime_DeltaT(double JD); -double KPCAADynamicalTime_CumulativeLeapSeconds(double JD); -double KPCAADynamicalTime_TT2UTC(double JD); -double KPCAADynamicalTime_UTC2TT(double JD); -double KPCAADynamicalTime_TT2TAI(double JD); -double KPCAADynamicalTime_TAI2TT(double JD); -double KPCAADynamicalTime_TT2UT1(double JD); -double KPCAADynamicalTime_UT12TT(double JD); -double KPCAADynamicalTime_UT1MinusUTC(double JD); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAEarth.h b/SwiftAA.framework/Headers/KPCAAEarth.h deleted file mode 100644 index f8e21ff..0000000 --- a/SwiftAA.framework/Headers/KPCAAEarth.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// KPCAAEarth.h -// SwiftAA -// -// Created by Cédric Foellmi on 04/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAEarth_EclipticLongitude(double JD, BOOL highPrecision); -double KPCAAEarth_EclipticLatitude(double JD, BOOL highPrecision); -double KPCAAEarth_RadiusVector(double JD, BOOL highPrecision); - -// AA+ what for? -double KPCAAEarth_SunMeanAnomaly(double JD); - -// AA+ Lower precision than double CAAElementsPlanetaryOrbit::EarthEccentricity(double JD)? -double KPCAAEarth_Eccentricity(double JD); - -double KPCAAEarth_EclipticLongitudeJ2000(double JD, BOOL highPrecision); -double KPCAAEarth_EclipticLatitudeJ2000(double JD, BOOL highPrecision); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAEclipses.h b/SwiftAA.framework/Headers/KPCAAEclipses.h deleted file mode 100644 index bab9a94..0000000 --- a/SwiftAA.framework/Headers/KPCAAEclipses.h +++ /dev/null @@ -1,44 +0,0 @@ -// -// KPCAAEclipses.h -// SwiftAA -// -// Created by Cédric Foellmi on 04/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct KPCAASolarEclipseDetails { - unsigned int Flags; - double TimeOfMaximumEclipse; - double F; - double u; - double gamma; - double GreatestMagnitude; -} KPCAASolarEclipseDetails; - -typedef struct KPCAALunarEclipseDetails { - BOOL eclipse; - double TimeOfMaximumEclipse; - double F; - double u; - double gamma; - double PenumbralRadii; - double UmbralRadii; - double PenumbralMagnitude; - double UmbralMagnitude; - double PartialPhaseSemiDuration; - double TotalPhaseSemiDuration; - double PartialPhasePenumbraSemiDuration; -} KPCAALunarEclipseDetails; - -KPCAASolarEclipseDetails KPCAAEclipses_CalculateSolar(double k); -KPCAALunarEclipseDetails KPCAAEclipses_CalculateLunar(double k); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAEclipticalElements.h b/SwiftAA.framework/Headers/KPCAAEclipticalElements.h deleted file mode 100644 index 6ff8fde..0000000 --- a/SwiftAA.framework/Headers/KPCAAEclipticalElements.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// KPCAAEclipticalElements.h -// SwiftAA -// -// Created by Cédric Foellmi on 05/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import -#import "KPCAASwiftAdditions.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct KPCAAEclipticalElementDetails { - double i; - double w; - double omega; -} KPCAAEclipticalElementDetails; - -KPCAAEclipticalElementDetails KPCAAEclipticalElement_CalculateDetails(double i0, double w0, double omega0, double JD0, double JD); -KPCAAEclipticalElementDetails KPCAAEclipticalElement_FK4B1950ToFK5J2000(double i0, double w0, double omega0); - - -// SwiftAA Additions -// WARNING: These are HELIOCENTRIC ecliptical coordinates. -// To not be confused with 'regular' (geocentric) ecliptical coordinates. See AA+ p233. - -double KPCAAEclipticalElement_EclipticLongitude(double JD, KPCAAPlanet planet, BOOL highPrecision); -double KPCAAEclipticalElement_EclipticLatitude(double JD, KPCAAPlanet planet, BOOL highPrecision); -double KPCAAEclipticalElement_RadiusVector(double JD, KPCAAPlanet planet, BOOL highPrecision); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAElementsPlanetaryOrbit.h b/SwiftAA.framework/Headers/KPCAAElementsPlanetaryOrbit.h deleted file mode 100644 index 8485aad..0000000 --- a/SwiftAA.framework/Headers/KPCAAElementsPlanetaryOrbit.h +++ /dev/null @@ -1,133 +0,0 @@ -// -// KPCAAElementsPlanetaryOrbit.h -// SwiftAA -// -// Created by Cédric Foellmi on 05/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import -#import "KPCAASwiftAdditions.h" - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAElementsPlanetaryOrbit_MercuryMeanLongitude(double JD); -double KPCAAElementsPlanetaryOrbit_MercurySemimajorAxis(double JD); -double KPCAAElementsPlanetaryOrbit_MercuryEccentricity(double JD); -double KPCAAElementsPlanetaryOrbit_MercuryInclination(double JD); -double KPCAAElementsPlanetaryOrbit_MercuryLongitudeAscendingNode(double JD); -double KPCAAElementsPlanetaryOrbit_MercuryLongitudePerihelion(double JD); - -double KPCAAElementsPlanetaryOrbit_VenusMeanLongitude(double JD); -double KPCAAElementsPlanetaryOrbit_VenusSemimajorAxis(double JD); -double KPCAAElementsPlanetaryOrbit_VenusEccentricity(double JD); -double KPCAAElementsPlanetaryOrbit_VenusInclination(double JD); -double KPCAAElementsPlanetaryOrbit_VenusLongitudeAscendingNode(double JD); -double KPCAAElementsPlanetaryOrbit_VenusLongitudePerihelion(double JD); - -double KPCAAElementsPlanetaryOrbit_EarthMeanLongitude(double JD); -double KPCAAElementsPlanetaryOrbit_EarthSemimajorAxis(double JD); -double KPCAAElementsPlanetaryOrbit_EarthEccentricity(double JD); -double KPCAAElementsPlanetaryOrbit_EarthInclination(double JD); - -double KPCAAElementsPlanetaryOrbit_EarthLongitudePerihelion(double JD); - -double KPCAAElementsPlanetaryOrbit_MarsMeanLongitude(double JD); -double KPCAAElementsPlanetaryOrbit_MarsSemimajorAxis(double JD); -double KPCAAElementsPlanetaryOrbit_MarsEccentricity(double JD); -double KPCAAElementsPlanetaryOrbit_MarsInclination(double JD); -double KPCAAElementsPlanetaryOrbit_MarsLongitudeAscendingNode(double JD); -double KPCAAElementsPlanetaryOrbit_MarsLongitudePerihelion(double JD); - -double KPCAAElementsPlanetaryOrbit_JupiterMeanLongitude(double JD); -double KPCAAElementsPlanetaryOrbit_JupiterSemimajorAxis(double JD); -double KPCAAElementsPlanetaryOrbit_JupiterEccentricity(double JD); -double KPCAAElementsPlanetaryOrbit_JupiterInclination(double JD); -double KPCAAElementsPlanetaryOrbit_JupiterLongitudeAscendingNode(double JD); -double KPCAAElementsPlanetaryOrbit_JupiterLongitudePerihelion(double JD); - -double KPCAAElementsPlanetaryOrbit_SaturnMeanLongitude(double JD); -double KPCAAElementsPlanetaryOrbit_SaturnSemimajorAxis(double JD); -double KPCAAElementsPlanetaryOrbit_SaturnEccentricity(double JD); -double KPCAAElementsPlanetaryOrbit_SaturnInclination(double JD); -double KPCAAElementsPlanetaryOrbit_SaturnLongitudeAscendingNode(double JD); -double KPCAAElementsPlanetaryOrbit_SaturnLongitudePerihelion(double JD); - -double KPCAAElementsPlanetaryOrbit_UranusMeanLongitude(double JD); -double KPCAAElementsPlanetaryOrbit_UranusSemimajorAxis(double JD); -double KPCAAElementsPlanetaryOrbit_UranusEccentricity(double JD); -double KPCAAElementsPlanetaryOrbit_UranusInclination(double JD); -double KPCAAElementsPlanetaryOrbit_UranusLongitudeAscendingNode(double JD); -double KPCAAElementsPlanetaryOrbit_UranusLongitudePerihelion(double JD); - -double KPCAAElementsPlanetaryOrbit_NeptuneMeanLongitude(double JD); -double KPCAAElementsPlanetaryOrbit_NeptuneSemimajorAxis(double JD); -double KPCAAElementsPlanetaryOrbit_NeptuneEccentricity(double JD); -double KPCAAElementsPlanetaryOrbit_NeptuneInclination(double JD); -double KPCAAElementsPlanetaryOrbit_NeptuneLongitudeAscendingNode(double JD); -double KPCAAElementsPlanetaryOrbit_NeptuneLongitudePerihelion(double JD); - - -double KPCAAElementsPlanetaryOrbit_MercuryMeanLongitudeJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_MercuryInclinationJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_MercuryLongitudeAscendingNodeJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_MercuryLongitudePerihelionJ2000(double JD); - -double KPCAAElementsPlanetaryOrbit_VenusMeanLongitudeJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_VenusInclinationJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_VenusLongitudeAscendingNodeJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_VenusLongitudePerihelionJ2000(double JD); - -double KPCAAElementsPlanetaryOrbit_EarthMeanLongitudeJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_EarthInclinationJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_EarthLongitudeAscendingNodeJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_EarthLongitudePerihelionJ2000(double JD); - -double KPCAAElementsPlanetaryOrbit_MarsMeanLongitudeJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_MarsInclinationJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_MarsLongitudeAscendingNodeJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_MarsLongitudePerihelionJ2000(double JD); - -double KPCAAElementsPlanetaryOrbit_JupiterMeanLongitudeJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_JupiterInclinationJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_JupiterLongitudeAscendingNodeJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_JupiterLongitudePerihelionJ2000(double JD); - -double KPCAAElementsPlanetaryOrbit_SaturnMeanLongitudeJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_SaturnInclinationJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_SaturnLongitudeAscendingNodeJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_SaturnLongitudePerihelionJ2000(double JD); - -double KPCAAElementsPlanetaryOrbit_UranusMeanLongitudeJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_UranusInclinationJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_UranusLongitudeAscendingNodeJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_UranusLongitudePerihelionJ2000(double JD); - -double KPCAAElementsPlanetaryOrbit_NeptuneMeanLongitudeJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_NeptuneInclinationJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_NeptuneLongitudeAscendingNodeJ2000(double JD); -double KPCAAElementsPlanetaryOrbit_NeptuneLongitudePerihelionJ2000(double JD); - - -// SwiftAA Additions - -double KPCAAElementsPlanetaryOrbit_MeanLongitude(KPCAAPlanetStrict planet, double JD); -double KPCAAElementsPlanetaryOrbit_MeanLongitudeJ2000(KPCAAPlanetStrict planet, double JD); - -double KPCAAElementsPlanetaryOrbit_SemimajorAxis(KPCAAPlanetStrict planet, double JD); -double KPCAAElementsPlanetaryOrbit_Eccentricity(KPCAAPlanetStrict planet, double JD); - -double KPCAAElementsPlanetaryOrbit_Inclination(KPCAAPlanetStrict planet, double JD); -double KPCAAElementsPlanetaryOrbit_InclinationJ2000(KPCAAPlanetStrict planet, double JD); - -double KPCAAElementsPlanetaryOrbit_LongitudeAscendingNode(KPCAAPlanetStrict planet, double JD); -double KPCAAElementsPlanetaryOrbit_LongitudeAscendingNodeJ2000(KPCAAPlanetStrict planet, double JD); - -double KPCAAElementsPlanetaryOrbit_LongitudePerihelion(KPCAAPlanetStrict planet, double JD); -double KPCAAElementsPlanetaryOrbit_LongitudePerihelionJ2000(KPCAAPlanetStrict planet, double JD); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAElliptical.h b/SwiftAA.framework/Headers/KPCAAElliptical.h deleted file mode 100644 index c4567ee..0000000 --- a/SwiftAA.framework/Headers/KPCAAElliptical.h +++ /dev/null @@ -1,72 +0,0 @@ -// -// KPCAAElliptical.h -// SwiftAA -// -// Created by Cédric Foellmi on 06/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import -#import "KPCAA3DCoordinate.h" -#import "KPCAAPlanetaryPhenomena.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct KPCAAEllipticalObjectElements { - double a; - double e; - double i; - double w; - double omega; - double JDEquinox; - double T; -} KPCAAEllipticalObjectElements; - -typedef struct KPCAAEllipticalPlanetaryDetails { - double ApparentGeocentricLongitude; - double ApparentGeocentricLatitude; - double ApparentGeocentricDistance; - double ApparentLightTime; - double ApparentGeocentricRA; - double ApparentGeocentricDeclination; -} KPCAAEllipticalPlanetaryDetails; - -typedef struct KPCAAEllipticalObjectDetails { - KPCAA3DCoordinateComponents HeliocentricRectangularEquatorialCoordinateComponents; - KPCAA3DCoordinateComponents HeliocentricRectangularEclipticalCoordinateComponents; - double HeliocentricEclipticLongitude; - double HeliocentricEclipticLatitude; - double TrueGeocentricRA; - double TrueGeocentricDeclination; - double TrueGeocentricDistance; - double TrueGeocentricLightTime; - double AstrometricGeocentricRA; - double AstrometricGeocentricDeclination; - double AstrometricGeocentricDistance; - double AstrometricGeocentricLightTime; - double Elongation; - double PhaseAngle; -} KPCAAEllipticalObjectDetails; - - -double KPCAAElliptical_DistanceToLightTime(double Distance); -KPCAAEllipticalPlanetaryDetails KPCAAElliptical_CalculatePlanetaryDetails(double JD, KPCPlanetaryObject object, BOOL highPrecision); -double KPCAAElliptical_SemiMajorAxisFromPerihelionDistance(double q, double e); -double KPCAAElliptical_MeanMotionFromSemiMajorAxis(double a); -KPCAAEllipticalObjectDetails KPCAAElliptical_CalculateObjectDetails(double JD, KPCAAEllipticalObjectElements *elements, BOOL highPrecision); -KPCAAEllipticalObjectDetails KPCAAElliptical_CalculateObjectDetailsNoElements(double JD, BOOL highPrecision); -double KPCAAElliptical_InstantaneousVelocity(double r, double a); -double KPCAAElliptical_VelocityAtPerihelion(double e, double a); -double KPCAAElliptical_VelocityAtAphelion(double e, double a); -double KPCAAElliptical_LengthOfEllipse(double e, double a); -double KPCAAElliptical_CometMagnitude(double g, double delta, double k, double r); -double KPCAAElliptical_MinorPlanetMagnitude(double H, double delta, double G, double r, double PhaseAngle); - - -#if __cplusplus -} -#endif - - diff --git a/SwiftAA.framework/Headers/KPCAAEquationOfTime.h b/SwiftAA.framework/Headers/KPCAAEquationOfTime.h deleted file mode 100644 index 8e1a37e..0000000 --- a/SwiftAA.framework/Headers/KPCAAEquationOfTime.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// KPCAAEquationOfTime.h -// SwiftAA -// -// Created by Cédric Foellmi on 06/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAEquationOfTime_Calculate(double JD, BOOL highPrecision); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAEquinoxesAndSolstices.h b/SwiftAA.framework/Headers/KPCAAEquinoxesAndSolstices.h deleted file mode 100644 index ffa0871..0000000 --- a/SwiftAA.framework/Headers/KPCAAEquinoxesAndSolstices.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// KPCAAEquinoxesAndSolstices.h -// SwiftAA -// -// Created by Cédric Foellmi on 06/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAEquinoxesAndSolstices_NorthwardEquinox(long Year, BOOL highPrecision); -double KPCAAEquinoxesAndSolstices_NorthernSolstice(long Year, BOOL highPrecision); -double KPCAAEquinoxesAndSolstices_SouthwardEquinox(long Year, BOOL highPrecision); -double KPCAAEquinoxesAndSolstices_SouthernSolstice(long Year, BOOL highPrecision); - -double KPCAAEquinoxesAndSolstices_LengthOfSpring(long Year, BOOL northernHemisphere, BOOL highPrecision); -double KPCAAEquinoxesAndSolstices_LengthOfSummer(long Year, BOOL northernHemisphere, BOOL highPrecision); -double KPCAAEquinoxesAndSolstices_LengthOfAutumn(long Year, BOOL northernHemisphere, BOOL highPrecision); -double KPCAAEquinoxesAndSolstices_LengthOfWinter(long Year, BOOL northernHemisphere, BOOL highPrecision); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAFK5.h b/SwiftAA.framework/Headers/KPCAAFK5.h deleted file mode 100644 index d9e2b64..0000000 --- a/SwiftAA.framework/Headers/KPCAAFK5.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// KPCAAFK5.h -// SwiftAA -// -// Created by Cédric Foellmi on 06/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import -#import "KPCAA3DCoordinate.h" - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAFK5_CorrectionInLongitude(double Longitude, double Latitude, double JD); -double KPCAAFK5_CorrectionInLatitude(double Longitude, double JD); - -KPCAA3DCoordinateComponents KPCAAFK5_ConvertVSOPToFK5J2000(KPCAA3DCoordinateComponents components); -KPCAA3DCoordinateComponents KPCAAFK5_ConvertVSOPToFK5B1950(KPCAA3DCoordinateComponents components); -KPCAA3DCoordinateComponents KPCAAFK5_ConvertVSOPToFK5AnyEquinox(KPCAA3DCoordinateComponents components, double JDEquinox); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAGalileanMoons.h b/SwiftAA.framework/Headers/KPCAAGalileanMoons.h deleted file mode 100644 index b2c83bf..0000000 --- a/SwiftAA.framework/Headers/KPCAAGalileanMoons.h +++ /dev/null @@ -1,41 +0,0 @@ -// -// KPCAAGalileanMoons.h -// SwiftAA -// -// Created by Cédric Foellmi on 08/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import -#import "KPCAA3DCoordinate.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct KPCAAGalileanMoonDetails { - double MeanLongitude; - double TrueLongitude; - double TropicalLongitude; - double EquatorialLatitude; - double r; - KPCAA3DCoordinateComponents TrueRectangularCoordinateComponents; - KPCAA3DCoordinateComponents ApparentRectangularCoordinateComponents; - BOOL inTransit; - BOOL inOccultation; - BOOL inEclipse; - BOOL inShadowTransit; -} KPCAAGalileanMoonDetails; - -typedef struct KPCAAGalileanMoonsDetails { - KPCAAGalileanMoonDetails Satellite1; - KPCAAGalileanMoonDetails Satellite2; - KPCAAGalileanMoonDetails Satellite3; - KPCAAGalileanMoonDetails Satellite4; -} KPCAAGalileanMoonsDetails; - -KPCAAGalileanMoonsDetails KPCAAGalileanMoons_CalculateDetails(double JD, BOOL highPrecision); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAGlobe.h b/SwiftAA.framework/Headers/KPCAAGlobe.h deleted file mode 100644 index fe4a26b..0000000 --- a/SwiftAA.framework/Headers/KPCAAGlobe.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// KPCAAGlobe.h -// SwiftAA -// -// Created by Cédric Foellmi on 08/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAGlobe_RhoSinThetaPrime(double GeographicalLatitude, double Height); -double KPCAAGlobe_RhoCosThetaPrime(double GeographicalLatitude, double Height); -double KPCAAGlobe_RadiusOfParallelOfLatitude(double GeographicalLatitude); -double KPCAAGlobe_RadiusOfCurvature(double GeographicalLatitude); - -double KPCAAGlobe_DistanceBetweenPoints(double GeographicalLatitude1, - double GeographicalLongitude1, - double GeographicalLatitude2, - double GeographicalLongitude2); - - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAIlluminatedFraction.h b/SwiftAA.framework/Headers/KPCAAIlluminatedFraction.h deleted file mode 100644 index 900a461..0000000 --- a/SwiftAA.framework/Headers/KPCAAIlluminatedFraction.h +++ /dev/null @@ -1,44 +0,0 @@ -// -// KPCAAIlluminatedFraction.h -// SwiftAA -// -// Created by Cédric Foellmi on 09/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import -#import "KPCAASwiftAdditions.h" - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAIlluminatedFraction_PhaseAngle(double r, double R, double Delta); -double KPCAAIlluminatedFraction_PhaseAngle_bis(double R, double R0, double B, double L, double L0, double Delta); -double KPCAAIlluminatedFraction_PhaseAngleRectangular(double x, double y, double z, double B, double L, double Delta); -double KPCAAIlluminatedFraction_IlluminatedFraction(double PhaseAngle); -double KPCAAIlluminatedFraction_IlluminatedFraction_bis(double r, double R, double Delta); - -double KPCAAIlluminatedFraction_MercuryMagnitudeMuller(double r, double Delta, double i); -double KPCAAIlluminatedFraction_VenusMagnitudeMuller(double r, double Delta, double i); -double KPCAAIlluminatedFraction_MarsMagnitudeMuller(double r, double Delta, double i); -double KPCAAIlluminatedFraction_JupiterMagnitudeMuller(double r, double Delta); -double KPCAAIlluminatedFraction_SaturnMagnitudeMuller(double r, double Delta, double DeltaU, double B); -double KPCAAIlluminatedFraction_UranusMagnitudeMuller(double r, double Delta); -double KPCAAIlluminatedFraction_NeptuneMagnitudeMuller(double r, double Delta); - -double KPCAAIlluminatedFraction_MercuryMagnitudeAA(double r, double Delta, double i); -double KPCAAIlluminatedFraction_VenusMagnitudeAA(double r, double Delta, double i); -double KPCAAIlluminatedFraction_MarsMagnitudeAA(double r, double Delta, double i); -double KPCAAIlluminatedFraction_JupiterMagnitudeAA(double r, double Delta, double i); -double KPCAAIlluminatedFraction_SaturnMagnitudeAA(double r, double Delta, double DeltaU, double B); -double KPCAAIlluminatedFraction_UranusMagnitudeAA(double r, double Delta); -double KPCAAIlluminatedFraction_NeptuneMagnitudeAA(double r, double Delta); - -// SwiftAddition -double KPCAAIlluminatedFraction_MagnitudeMuller(KPCPlanetaryObject planet, double r, double Delta, double i); -double KPCAAIlluminatedFraction_MagnitudeAA(KPCPlanetaryObject planet, double r, double Delta, double i); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAInterpolate.h b/SwiftAA.framework/Headers/KPCAAInterpolate.h deleted file mode 100644 index dc5d342..0000000 --- a/SwiftAA.framework/Headers/KPCAAInterpolate.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// KPCAAInterpolate.h -// SwiftAA -// -// Created by Cédric Foellmi on 09/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAInterpolate_Interpolate_1234(double n, double Y1, double Y2, double Y3); -double KPCAAInterpolate_Interpolate_12345(double n, double Y1, double Y2, double Y3, double Y4, double Y5); -double KPCAAInterpolate_InterpolateToHalves(double Y1, double Y2, double Y3, double Y4); -double KPCAAInterpolate_LagrangeInterpolate(double X, int n, double *pX, double *pY); -double KPCAAInterpolate_Extremum_123(double Y1, double Y2, double Y3, double *nm); -double KPCAAInterpolate_Extremum_12345(double Y1, double Y2, double Y3, double Y4, double Y5, double *nm); -double KPCAAInterpolate_Zero_123(double Y1, double Y2, double Y3); -double KPCAAInterpolate_Zero_12345(double Y1, double Y2, double Y3, double Y4, double Y5); -double KPCAAInterpolate_Zero2_123(double Y1, double Y2, double Y3); -double KPCAAInterpolate_Zero2_12345(double Y1, double Y2, double Y3, double Y4, double Y5); - -#if __cplusplus -} -#endif - diff --git a/SwiftAA.framework/Headers/KPCAAJupiter.h b/SwiftAA.framework/Headers/KPCAAJupiter.h deleted file mode 100644 index 7c705af..0000000 --- a/SwiftAA.framework/Headers/KPCAAJupiter.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// KPCAAJupiter.h -// SwiftAA -// -// Created by Cédric Foellmi on 09/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAJupiter_EclipticLongitude(double JD, BOOL highPrecision); -double KPCAAJupiter_EclipticLatitude(double JD, BOOL highPrecision); -double KPCAAJupiter_RadiusVector(double JD, BOOL highPrecision); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAKepler.h b/SwiftAA.framework/Headers/KPCAAKepler.h deleted file mode 100644 index 1413233..0000000 --- a/SwiftAA.framework/Headers/KPCAAKepler.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// KPCAAKepler.h -// SwiftAA -// -// Created by Cédric Foellmi on 09/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -// Pass nIterations=0 to use default (53). -// M = mean anomaly -// e = eccentricity of planet orbit. -double KPCAAKepler_Calculate(double M, double e, int nIterations); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAMars.h b/SwiftAA.framework/Headers/KPCAAMars.h deleted file mode 100644 index 8b5e556..0000000 --- a/SwiftAA.framework/Headers/KPCAAMars.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// KPCAAMars.h -// SwiftAA -// -// Created by Cédric Foellmi on 09/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAMars_EclipticLongitude(double JD, BOOL highPrecision); -double KPCAAMars_EclipticLatitude(double JD, BOOL highPrecision); -double KPCAAMars_RadiusVector(double JD, BOOL highPrecision); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAMercury.h b/SwiftAA.framework/Headers/KPCAAMercury.h deleted file mode 100644 index 305d24d..0000000 --- a/SwiftAA.framework/Headers/KPCAAMercury.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// KPCAAMercury.h -// SwiftAA -// -// Created by Cédric Foellmi on 09/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAMercury_EclipticLongitude(double JD, BOOL highPrecision); -double KPCAAMercury_EclipticLatitude(double JD, BOOL highPrecision); -double KPCAAMercury_RadiusVector(double JD, BOOL highPrecision); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAMoon.h b/SwiftAA.framework/Headers/KPCAAMoon.h deleted file mode 100644 index 24b0bf4..0000000 --- a/SwiftAA.framework/Headers/KPCAAMoon.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// KPCAAMoon.h -// SwiftAA -// -// Created by Cédric Foellmi on 09/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAMoon_MeanLongitude(double JD); -double KPCAAMoon_MeanElongation(double JD); -double KPCAAMoon_MeanAnomaly(double JD); -double KPCAAMoon_ArgumentOfLatitude(double JD); -double KPCAAMoon_MeanLongitudeAscendingNode(double JD); -double KPCAAMoon_MeanLongitudePerigee(double JD); -double KPCAAMoon_TrueLongitudeAscendingNode(double JD); - -double KPCAAMoon_EclipticLongitude(double JD); -double KPCAAMoon_EclipticLatitude(double JD); -double KPCAAMoon_RadiusVector(double JD); - -double KPCAAMoon_RadiusVectorToHorizontalParallax(double RadiusVector); -double KPCAAMoon_HorizontalParallaxToRadiusVector(double Parallax); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAMoonIlluminatedFraction.h b/SwiftAA.framework/Headers/KPCAAMoonIlluminatedFraction.h deleted file mode 100644 index 5e82f29..0000000 --- a/SwiftAA.framework/Headers/KPCAAMoonIlluminatedFraction.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// KPCAAMoonIlluminatedFraction.h -// SwiftAA -// -// Created by Cédric Foellmi on 09/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAMoonIlluminatedFraction_GeocentricElongation(double ObjectAlpha, double ObjectDelta, double SunAlpha, double SunDelta); - -double KPCAAMoonIlluminatedFraction_PhaseAngle(double GeocentricElongation, double EarthObjectDistance, double EarthSunDistance); - -double KPCAAMoonIlluminatedFraction_IlluminatedFraction(double PhaseAngle); - -double KPCAAMoonIlluminatedFraction_PositionAngle(double Alpha0, double Delta0, double Alpha, double Delta); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAMoonMaxDeclinations.h b/SwiftAA.framework/Headers/KPCAAMoonMaxDeclinations.h deleted file mode 100644 index 5fd81fe..0000000 --- a/SwiftAA.framework/Headers/KPCAAMoonMaxDeclinations.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// KPCAAMoonMaxDeclinations.h -// SwiftAA -// -// Created by Cédric Foellmi on 09/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAMoonMaxDeclinations_K(double Year); -double KPCAAMoonMaxDeclinations_MeanGreatestDeclination(double k, BOOL northerly); -double KPCAAMoonMaxDeclinations_MeanGreatestDeclinationValue(double k); -double KPCAAMoonMaxDeclinations_TrueGreatestDeclination(double k, BOOL northerly); -double KPCAAMoonMaxDeclinations_TrueGreatestDeclinationValue(double k, BOOL northerly); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAMoonNodes.h b/SwiftAA.framework/Headers/KPCAAMoonNodes.h deleted file mode 100644 index 2183cfc..0000000 --- a/SwiftAA.framework/Headers/KPCAAMoonNodes.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// KPCAAMoonNodes.h -// SwiftAA -// -// Created by Cédric Foellmi on 09/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAMoonNodes_K(double Year); -double KPCAAMoonNodes_PassageThroNode(double k); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAMoonPerigeeApogee.h b/SwiftAA.framework/Headers/KPCAAMoonPerigeeApogee.h deleted file mode 100644 index 5bc53ba..0000000 --- a/SwiftAA.framework/Headers/KPCAAMoonPerigeeApogee.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// KPCAAMoonPerigeeApogee.h -// SwiftAA -// -// Created by Cédric Foellmi on 09/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAMoonPerigeeApogee_K(double Year); -double KPCAAMoonPerigeeApogee_MeanPerigee(double k); -double KPCAAMoonPerigeeApogee_MeanApogee(double k); -double KPCAAMoonPerigeeApogee_TruePerigee(double k); -double KPCAAMoonPerigeeApogee_TrueApogee(double k); -double KPCAAMoonPerigeeApogee_PerigeeParallax(double k); -double KPCAAMoonPerigeeApogee_ApogeeParallax(double k); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAMoonPhases.h b/SwiftAA.framework/Headers/KPCAAMoonPhases.h deleted file mode 100644 index 5deade7..0000000 --- a/SwiftAA.framework/Headers/KPCAAMoonPhases.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// KPCAAMoonPhases.h -// SwiftAA -// -// Created by Cédric Foellmi on 09/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAMoonPhases_K(double Year); -double KPCAAMoonPhases_MeanPhase(double k); -double KPCAAMoonPhases_TruePhase(double k); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAANearParabolic.h b/SwiftAA.framework/Headers/KPCAANearParabolic.h deleted file mode 100644 index cb163bf..0000000 --- a/SwiftAA.framework/Headers/KPCAANearParabolic.h +++ /dev/null @@ -1,50 +0,0 @@ -// -// KPCAANearParabolic.h -// SwiftAA -// -// Created by Cédric Foellmi on 09/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import -#import "KPCAA3DCoordinate.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct KPCAANearParabolicObjectElements { - double q; - double i; - double w; - double omega; - double JDEquinox; - double T; - double e; -} KPCAANearParabolicObjectElements; - - -typedef struct KPCAANearParabolicObjectDetails { - KPCAA3DCoordinateComponents HeliocentricRectangularEquatorialCoordinateComponents; - KPCAA3DCoordinateComponents HeliocentricRectangularEclipticalCoordinateComponents; - double HeliocentricEclipticLongitude; - double HeliocentricEclipticLatitude; - double TrueGeocentricRA; - double TrueGeocentricDeclination; - double TrueGeocentricDistance; - double TrueGeocentricLightTime; - double AstrometricGeocentricRA; - double AstrometricGeocentricDeclination; - double AstrometricGeocentricDistance; - double AstrometricGeocentricLightTime; - double Elongation; - double PhaseAngle; -} KPCAANearParabolicObjectDetails; - - -KPCAANearParabolicObjectDetails KPCAANearParabolic_CalculateObjectDetails(double JD, KPCAANearParabolicObjectElements elements, BOOL highPrecision); -void KPCAANearParabolic_CalulateTrueAnnomalyAndRadius(double JD, struct KPCAANearParabolicObjectElements elements, double *v, double *r); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAANeptune.h b/SwiftAA.framework/Headers/KPCAANeptune.h deleted file mode 100644 index 399a378..0000000 --- a/SwiftAA.framework/Headers/KPCAANeptune.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// KPCAANeptune.h -// SwiftAA -// -// Created by Cédric Foellmi on 09/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAANeptune_EclipticLongitude(double JD, BOOL highPrecision); -double KPCAANeptune_EclipticLatitude(double JD, BOOL highPrecision); -double KPCAANeptune_RadiusVector(double JD, BOOL highPrecision); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAANodes.h b/SwiftAA.framework/Headers/KPCAANodes.h deleted file mode 100644 index 177fe12..0000000 --- a/SwiftAA.framework/Headers/KPCAANodes.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// KPCAANodes.h -// SwiftAA -// -// Created by Cédric Foellmi on 09/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import -#import "KPCAAElliptical.h" -#import "KPCAAParabolic.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct KPCAANodeObjectDetails { - double t; - double radius; -} KPCAANodeObjectDetails; - -KPCAANodeObjectDetails KPCAANodes_PassageThroAscendingNodeForEllipticalElements(KPCAAEllipticalObjectElements *elements); -KPCAANodeObjectDetails KPCAANodes_PassageThroDescendingNodeForEllipticalElements(KPCAAEllipticalObjectElements *elements); - -KPCAANodeObjectDetails KPCAANodes_PassageThroAscendingNodeForParabolicElements(KPCAAParabolicObjectElements *elements); -KPCAANodeObjectDetails KPCAANodes_PassageThroDescendingNodeForParabolicElements(KPCAAParabolicObjectElements *elements); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAANutation.h b/SwiftAA.framework/Headers/KPCAANutation.h deleted file mode 100644 index afbbf3a..0000000 --- a/SwiftAA.framework/Headers/KPCAANutation.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// KPCAANutation.h -// SwiftAA -// -// Created by Cédric Foellmi on 09/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAANutation_NutationInLongitude(double JD); -double KPCAANutation_NutationInObliquity(double JD); -double KPCAANutation_NutationInRightAscension(double Alpha, double Delta, double Obliquity, double NutationInLongitude, double NutationInObliquity); -double KPCAANutation_NutationInDeclination(double Alpha, double Obliquity, double NutationInLongitude, double NutationInObliquity); -double KPCAANutation_MeanObliquityOfEcliptic(double JD); -double KPCAANutation_TrueObliquityOfEcliptic(double JD); - -/* SwiftAA Additions */ - -double KPCAANutation_ObliquityOfEcliptic(BOOL mean, double JD); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAParabolic.h b/SwiftAA.framework/Headers/KPCAAParabolic.h deleted file mode 100644 index 0b3fc90..0000000 --- a/SwiftAA.framework/Headers/KPCAAParabolic.h +++ /dev/null @@ -1,49 +0,0 @@ -// -// KPCAAParabolic.h -// SwiftAA -// -// Created by Cédric Foellmi on 09/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import -#import "KPCAA3DCoordinate.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct KPCAAParabolicObjectElements { - double q; - double i; - double w; - double omega; - double JDEquinox; - double T; -} KPCAAParabolicObjectElements; - - -typedef struct KPCAAParabolicObjectDetails { - KPCAA3DCoordinateComponents HeliocentricRectangularEquatorialCoordinateComponents; - KPCAA3DCoordinateComponents HeliocentricRectangularEclipticalCoordinateComponents; - double HeliocentricEclipticLongitude; - double HeliocentricEclipticLatitude; - double TrueGeocentricRA; - double TrueGeocentricDeclination; - double TrueGeocentricDistance; - double TrueGeocentricLightTime; - double AstrometricGeocentricRA; - double AstrometricGeocentricDeclination; - double AstrometricGeocentricDistance; - double AstrometricGeocentricLightTime; - double Elongation; - double PhaseAngle; -} KPCAAParabolicObjectDetails; - - -double KPCAAParabolic_CalculateBarkers(double W); -KPCAAParabolicObjectDetails KPCAAParabolic_CalculateDetails(double JD, struct KPCAAParabolicObjectElements elements, BOOL highPrecision); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAParallactic.h b/SwiftAA.framework/Headers/KPCAAParallactic.h deleted file mode 100644 index 861761a..0000000 --- a/SwiftAA.framework/Headers/KPCAAParallactic.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// KPCAAParallactic.h -// SwiftAA -// -// Created by Cédric Foellmi on 09/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAParallactic_ParallacticAngle(double HourAngle, double Latitude, double delta); -double KPCAAParallactic_EclipticLongitudeOnHorizon(double LocalSiderealTime, double ObliquityOfEcliptic, double Latitude); -double KPCAAParallactic_AngleBetweenEclipticAndHorizon(double LocalSiderealTime, double ObliquityOfEcliptic, double Latitude); -double KPCAAParallactic_AngleBetweenNorthCelestialPoleAndNorthPoleOfEcliptic(double Lambda, double Beta, double ObliquityOfEcliptic); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAParallax.h b/SwiftAA.framework/Headers/KPCAAParallax.h deleted file mode 100644 index 0193195..0000000 --- a/SwiftAA.framework/Headers/KPCAAParallax.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// KPCAAParallax.h -// SwiftAA -// -// Created by Cédric Foellmi on 09/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import -#import "KPCAA2DCoordinate.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct KPCAATopocentricEclipticDetails { - double Lambda; - double Beta; - double Semidiameter; -} KPCAATopocentricEclipticDetails; - -KPCAA2DCoordinateComponents KPCAAParallax_Equatorial2TopocentricDelta(double Alpha, double Delta, double Distance, double Longitude, double Latitude, double Height, double JD); - -KPCAA2DCoordinateComponents KPCAAParallax_Equatorial2Topocentric(double Alpha, double Delta, double Distance, double Longitude, double Latitude, double Height, double JD); - -KPCAATopocentricEclipticDetails KPCAAParallax_Ecliptic2Topocentric(double Lambda, double Beta, double Semidiameter, double Distance, double Epsilon, double Latitude, double Height, double JD); - -double KPCAAParallax_ParallaxToDistance(double Parallax); -double KPCAAParallax_DistanceToParallax(double Distance); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAPhysicalJupiter.h b/SwiftAA.framework/Headers/KPCAAPhysicalJupiter.h deleted file mode 100644 index fc3b1dd..0000000 --- a/SwiftAA.framework/Headers/KPCAAPhysicalJupiter.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// KPCAAPhysicalJupiter.h -// SwiftAA -// -// Created by Cédric Foellmi on 10/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct KPCAAPhysicalJupiterDetails { - double DE; - double DS; - double Geometricw1; - double Geometricw2; - double Apparentw1; - double Apparentw2; - double P; -} KPCAAPhysicalJupiterDetails; - -KPCAAPhysicalJupiterDetails KPCAAPhysicalJupiter_CalculateDetails(double JD, BOOL highPrecision); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAPhysicalMars.h b/SwiftAA.framework/Headers/KPCAAPhysicalMars.h deleted file mode 100644 index f3d6e30..0000000 --- a/SwiftAA.framework/Headers/KPCAAPhysicalMars.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// KPCPhysicalMars.h -// SwiftAA -// -// Created by Cédric Foellmi on 10/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct KPCAAPhysicalMarsDetails { - double DE; - double DS; - double w; - double P; - double X; - double k; - double q; - double d; -} KPCAAPhysicalMarsDetails; - -KPCAAPhysicalMarsDetails KPCAAPhysicalMars_CalculateDetails(double JD, BOOL highPrecision); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAPhysicalMoon.h b/SwiftAA.framework/Headers/KPCAAPhysicalMoon.h deleted file mode 100644 index 75802b1..0000000 --- a/SwiftAA.framework/Headers/KPCAAPhysicalMoon.h +++ /dev/null @@ -1,42 +0,0 @@ -// -// KPCAAPhysicalMoon.h -// SwiftAA -// -// Created by Cédric Foellmi on 10/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct KPCAAPhysicalMoonDetails { - double ldash; - double bdash; - double ldash2; - double bdash2; - double l; - double b; - double P; -} KPCAAPhysicalMoonDetails; - -typedef struct KPCAASelenographicMoonDetails { - double l0; - double b0; - double c0; -} KPCAASelenographicMoonDetails; - - -KPCAAPhysicalMoonDetails KPCPhysicalMoon_CalculateGeocentric(double JD); -KPCAAPhysicalMoonDetails KPCPhysicalMoon_CalculateTopocentric(double JD, double Longitude, double Latitude); -KPCAASelenographicMoonDetails KPCPhysicalMoon_SelenographicPositionOfSun(double JD, BOOL highPrecision); - -double KPCPhysicalMoon_AltitudeOfSun(double JD, double Longitude, double Latitude, BOOL highPrecision); -double KPCPhysicalMoon_TimeOfSunrise(double JD, double Longitude, double Latitude, BOOL highPrecision); -double KPCPhysicalMoon_TimeOfSunset(double JD, double Longitude, double Latitude, BOOL highPrecision); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAPhysicalSun.h b/SwiftAA.framework/Headers/KPCAAPhysicalSun.h deleted file mode 100644 index 66605e4..0000000 --- a/SwiftAA.framework/Headers/KPCAAPhysicalSun.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// KPCAAPhysicalSun.h -// SwiftAA -// -// Created by Cédric Foellmi on 10/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct KPCAAPhysicalSunDetails { - double P; - double B0; - double L0; -} KPCAAPhysicalSunDetails; - -KPCAAPhysicalSunDetails KPCAAPhysicalSun_CalculateDetails(double JD, BOOL highPrecision); -double KPCAAPhysicalSun_TimeOfStartOfRotation(long C); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAPlanetPerihelionAphelion.h b/SwiftAA.framework/Headers/KPCAAPlanetPerihelionAphelion.h deleted file mode 100644 index b53f2ad..0000000 --- a/SwiftAA.framework/Headers/KPCAAPlanetPerihelionAphelion.h +++ /dev/null @@ -1,57 +0,0 @@ -// -// KPCAAPlanetPerihelionAphelion.h -// SwiftAA -// -// Created by Cédric Foellmi on 10/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import -#import "KPCAASwiftAdditions.h" - -#ifdef __cplusplus -extern "C" { -#endif - -long KPCAAPlanetPerihelionAphelion_MercuryK(double Year); -double KPCAAPlanetPerihelionAphelion_MercuryPerihelion(long k); -double KPCAAPlanetPerihelionAphelion_MercuryAphelion(long k); - -long KPCAAPlanetPerihelionAphelion_VenusK(double Year); -double KPCAAPlanetPerihelionAphelion_VenusPerihelion(long k); -double KPCAAPlanetPerihelionAphelion_VenusAphelion(long k); - -long KPCAAPlanetPerihelionAphelion_EarthK(double Year); -double KPCAAPlanetPerihelionAphelion_EarthPerihelion(long k, BOOL barycentric); -double KPCAAPlanetPerihelionAphelion_EarthAphelion(long k, BOOL barycentric); - -long KPCAAPlanetPerihelionAphelion_MarsK(double Year); -double KPCAAPlanetPerihelionAphelion_MarsPerihelion(long k); -double KPCAAPlanetPerihelionAphelion_MarsAphelion(long k); - -long KPCAAPlanetPerihelionAphelion_JupiterK(double Year); -double KPCAAPlanetPerihelionAphelion_JupiterPerihelion(long k); -double KPCAAPlanetPerihelionAphelion_JupiterAphelion(long k); - -long KPCAAPlanetPerihelionAphelion_SaturnK(double Year); -double KPCAAPlanetPerihelionAphelion_SaturnPerihelion(long k); -double KPCAAPlanetPerihelionAphelion_SaturnAphelion(long k); - -long KPCAAPlanetPerihelionAphelion_UranusK(double Year); -double KPCAAPlanetPerihelionAphelion_UranusPerihelion(long k); -double KPCAAPlanetPerihelionAphelion_UranusAphelion(long k); - -long KPCAAPlanetPerihelionAphelion_NeptuneK(double Year); -double KPCAAPlanetPerihelionAphelion_NeptunePerihelion(long k); -double KPCAAPlanetPerihelionAphelion_NeptuneAphelion(long k); - - -// SwiftAA Additions - -long KPCAAPlanetPerihelionAphelion_K(double Year, KPCAAPlanetStrict planet); -double KPCAAPlanetPerihelionAphelion_Perihelion(long k, KPCAAPlanetStrict planet); -double KPCAAPlanetPerihelionAphelion_Aphelion(long k, KPCAAPlanetStrict planet); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAPlanetaryPhenomena.h b/SwiftAA.framework/Headers/KPCAAPlanetaryPhenomena.h deleted file mode 100644 index 460bcc6..0000000 --- a/SwiftAA.framework/Headers/KPCAAPlanetaryPhenomena.h +++ /dev/null @@ -1,51 +0,0 @@ -// -// KPCAAPlanetaryPhenomena.h -// SwiftAA -// -// Created by Cédric Foellmi on 10/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -typedef NS_ENUM(NSUInteger, KPCPlanetaryObject) { - MERCURY, - VENUS, - MARS, - JUPITER, - SATURN, - URANUS, - NEPTUNE, - UNDEFINED = 999 // Swift Addition -}; - -typedef NS_ENUM(NSUInteger, KPCPlanetaryEventType) { - INFERIOR_CONJUNCTION, - SUPERIOR_CONJUNCTION, - OPPOSITION, - CONJUNCTION, - EASTERN_ELONGATION, - WESTERN_ELONGATION, - STATION1, - STATION2 -}; - - -double KPCAAPlanetaryPhenomena_K(double Year, KPCPlanetaryObject object, KPCPlanetaryEventType type); -double KPCAAPlanetaryPhenomena_Mean(double k, KPCPlanetaryObject object, KPCPlanetaryEventType type); -double KPCAAPlanetaryPhenomena_True(double k, KPCPlanetaryObject object, KPCPlanetaryEventType type); -double KPCAAPlanetaryPhenomena_ElongationValue(double k, KPCPlanetaryObject object, BOOL eastern); - - - -/* SwiftAA Aditions */ - -double KPCAAPlanetaryPhenomena(BOOL mean, double Year, KPCPlanetaryObject object, KPCPlanetaryEventType type); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAPluto.h b/SwiftAA.framework/Headers/KPCAAPluto.h deleted file mode 100644 index 385c2d7..0000000 --- a/SwiftAA.framework/Headers/KPCAAPluto.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// KPCAAPluto.h -// SwiftAA -// -// Created by Cédric Foellmi on 10/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAPluto_EclipticLongitude(double JD); -double KPCAAPluto_EclipticLatitude(double JD); -double KPCAAPluto_RadiusVector(double JD); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAPrecession.h b/SwiftAA.framework/Headers/KPCAAPrecession.h deleted file mode 100644 index 9914358..0000000 --- a/SwiftAA.framework/Headers/KPCAAPrecession.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// KPCAAPrecession.h -// SwiftAA -// -// Created by Cédric Foellmi on 10/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import -#import "KPCAA2DCoordinate.h" - -#ifdef __cplusplus -extern "C" { -#endif - -KPCAA2DCoordinateComponents KPCAAPrecession_PrecessEquatorial(double Alpha, double Delta, double JD0, double JD); -KPCAA2DCoordinateComponents KPCAAPrecession_PrecessEquatorialFK4(double Alpha, double Delta, double JD0, double JD); -KPCAA2DCoordinateComponents KPCAAPrecession_PrecessEcliptic(double Lambda, double Beta, double JD0, double JD); - -KPCAA2DCoordinateComponents KPCAAPrecession_EquatorialPMToEcliptic(double Alpha, double Delta, double Beta, double PMAlpha, double PMDelta, double Epsilon); - -KPCAA2DCoordinateComponents KPCAAPrecession_AdjustPositionUsingUniformProperMotion(double t, double Alpha, double Delta, double PMAlpha, double PMDelta); - -KPCAA2DCoordinateComponents KPCAAPrecession_AdjustPositionUsingMotionInSpace(double r, double deltar, double t, double Alpha, double Delta, double PMAlpha, double PMDelta); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAARefraction.h b/SwiftAA.framework/Headers/KPCAARefraction.h deleted file mode 100644 index 9e9699f..0000000 --- a/SwiftAA.framework/Headers/KPCAARefraction.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// KPCAARefraction.h -// SwiftAA -// -// Created by Cédric Foellmi on 10/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -// Standard Pressure = 1010 -// Standard Temperature = 10 - -double KPCAARefraction_RefractionFromApparentWithAltitude(double Altitude, double Pressure, double Temperature); -double KPCAARefraction_RefractionFromTrueWithAltitude(double Altitude, double Pressure, double Temperature); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAARiseTransitSet.h b/SwiftAA.framework/Headers/KPCAARiseTransitSet.h deleted file mode 100644 index a1cc39a..0000000 --- a/SwiftAA.framework/Headers/KPCAARiseTransitSet.h +++ /dev/null @@ -1,37 +0,0 @@ -// -// KPCAARiseTransitSet.h -// SwiftAA -// -// Created by Cédric Foellmi on 10/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct KPCAARiseTransitSetDetails { - BOOL isRiseValid; - double Rise; - BOOL isTransitAboveHorizon; - double Transit; - BOOL isSetValid; - double Set; -} KPCAARiseTransitSetDetails; - -KPCAARiseTransitSetDetails KPCAARiseTransitSet_Calculate(double JD, - double Alpha1, - double Delta1, - double Alpha2, - double Delta2, - double Alpha3, - double Delta3, - double Longitude, - double Latitude, - double h0); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAASaturn.h b/SwiftAA.framework/Headers/KPCAASaturn.h deleted file mode 100644 index a174d2a..0000000 --- a/SwiftAA.framework/Headers/KPCAASaturn.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// KPCAASaturn.h -// SwiftAA -// -// Created by Cédric Foellmi on 10/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAASaturn_EclipticLongitude(double JD, BOOL highPrecision); -double KPCAASaturn_EclipticLatitude(double JD, BOOL highPrecision); -double KPCAASaturn_RadiusVector(double JD, BOOL highPrecision); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAASaturnMoons.h b/SwiftAA.framework/Headers/KPCAASaturnMoons.h deleted file mode 100644 index 076d857..0000000 --- a/SwiftAA.framework/Headers/KPCAASaturnMoons.h +++ /dev/null @@ -1,41 +0,0 @@ -// -// KPCAASaturnMoons.h -// SwiftAA -// -// Created by Cédric Foellmi on 10/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import -#import "KPCAA3DCoordinate.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct KPCAASaturnMoonDetails { - KPCAA3DCoordinateComponents TrueRectangularCoordinateComponents; - KPCAA3DCoordinateComponents ApparentRectangularCoordinateComponents; - BOOL inTransit; - BOOL inOccultation; - BOOL inEclipse; - BOOL inShadowTransit; -} KPCAASaturnMoonDetails; - - -typedef struct KPCAASaturnMoonsDetails { - KPCAASaturnMoonDetails Satellite1; - KPCAASaturnMoonDetails Satellite2; - KPCAASaturnMoonDetails Satellite3; - KPCAASaturnMoonDetails Satellite4; - KPCAASaturnMoonDetails Satellite5; - KPCAASaturnMoonDetails Satellite6; - KPCAASaturnMoonDetails Satellite7; - KPCAASaturnMoonDetails Satellite8; -} KPCAASaturnMoonsDetails; - -KPCAASaturnMoonsDetails KPCAASaturnMoonsDetails_Calculate(double JD, BOOL highPrecision); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAASaturnRings.h b/SwiftAA.framework/Headers/KPCAASaturnRings.h deleted file mode 100644 index e3cb8d9..0000000 --- a/SwiftAA.framework/Headers/KPCAASaturnRings.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// KPCAASaturnRings.h -// SwiftAA -// -// Created by Cédric Foellmi on 10/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct KPCAASaturnRingDetails { - double B; - double Bdash; - double P; - double a; - double b; - double DeltaU; -} KPCAASaturnRingDetails; - -KPCAASaturnRingDetails KPCAASaturnRings_Calculate(double JD, BOOL highPrecision); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAASidereal.h b/SwiftAA.framework/Headers/KPCAASidereal.h deleted file mode 100644 index 1c9ceb0..0000000 --- a/SwiftAA.framework/Headers/KPCAASidereal.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// KPCAASidereal.h -// SwiftAA -// -// Created by Cédric Foellmi on 10/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAASidereal_MeanGreenwichSiderealTime(double JD); -double KPCAASidereal_ApparentGreenwichSiderealTime(double JD); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAStellarMagnitudes.h b/SwiftAA.framework/Headers/KPCAAStellarMagnitudes.h deleted file mode 100644 index dadcac9..0000000 --- a/SwiftAA.framework/Headers/KPCAAStellarMagnitudes.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// KPCAAStellarMagnitudes.h -// SwiftAA -// -// Created by Cédric Foellmi on 10/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAStellarMagnitudes_CombinedMagnitude(double m1, double m2); -double KPCAAStellarMagnitudes_BrightnessRatio(double m1, double m2); -double KPCAAStellarMagnitudes_MagnitudeDifference(double brightnessRatio); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAASun.h b/SwiftAA.framework/Headers/KPCAASun.h deleted file mode 100644 index 91f3e69..0000000 --- a/SwiftAA.framework/Headers/KPCAASun.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// KPCAASun.h -// SwiftAA -// -// Created by Cédric Foellmi on 10/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import -#import "KPCAA3DCoordinate.h" - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAASun_GeometricEclipticLongitude(double JD, BOOL highPrecision); -double KPCAASun_GeometricEclipticLatitude(double JD, BOOL highPrecision); -double KPCAASun_GeometricEclipticLongitudeJ2000(double JD, BOOL highPrecision); -double KPCAASun_GeometricEclipticLatitudeJ2000(double JD, BOOL highPrecision); -double KPCAASun_GeometricFK5EclipticLongitude(double JD, BOOL highPrecision); -double KPCAASun_GeometricFK5EclipticLatitude(double JD, BOOL highPrecision); -double KPCAASun_ApparentEclipticLongitude(double JD, BOOL highPrecision); -double KPCAASun_ApparentEclipticLatitude(double JD, BOOL highPrecision); - -KPCAA3DCoordinateComponents KPCAASun_EquatorialRectangularCoordinatesMeanEquinox(double JD, BOOL highPrecision); -KPCAA3DCoordinateComponents KPCAASun_EclipticRectangularCoordinatesJ2000(double JD, BOOL highPrecision); -KPCAA3DCoordinateComponents KPCAASun_EquatorialRectangularCoordinatesJ2000(double JD, BOOL highPrecision); -KPCAA3DCoordinateComponents KPCAASun_EquatorialRectangularCoordinatesB1950(double JD, BOOL highPrecision); -KPCAA3DCoordinateComponents KPCAASun_EquatorialRectangularCoordinatesAnyEquinox(double JD, double JDEquinox, BOOL highPrecision); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAASwiftAdditions.h b/SwiftAA.framework/Headers/KPCAASwiftAdditions.h deleted file mode 100644 index 71b7852..0000000 --- a/SwiftAA.framework/Headers/KPCAASwiftAdditions.h +++ /dev/null @@ -1,44 +0,0 @@ -// -// KPCAASwiftAdditions.h -// SwiftAA -// -// Created by Cédric Foellmi on 26/06/16. -// Copyright © 2016 onekiloparsec. All rights reserved. -// - -#ifndef KPCAASwiftAdditions_h -#define KPCAASwiftAdditions_h - -#import "KPCAAPlanetaryPhenomena.h" - -// SwiftAA Aditions -// The trick here is that CAPITALS are used in the C++ code for PlanetaryObject -// The Obj-C code respects that. To extend it here to include Earth and Pluto, -// We use the normal case. - -typedef NS_ENUM(NSInteger, KPCAAPlanetStrict) { - mercury = MERCURY, - venus = VENUS, - earth = 99, - mars = MARS, - jupiter = JUPITER, - saturn = SATURN, - uranus = URANUS, - neptune = NEPTUNE, - undefined = -1 -}; - -typedef NS_ENUM(NSInteger, KPCAAPlanet) { - Mercury = mercury, - Venus = venus, - Earth = earth, - Mars = mars, - Jupiter = jupiter, - Saturn = saturn, - Uranus = uranus, - Neptune = neptune, - Pluto = 999, - Undefined = -1 -}; - -#endif /* KPCAASwiftAdditions_h */ diff --git a/SwiftAA.framework/Headers/KPCAAUranus.h b/SwiftAA.framework/Headers/KPCAAUranus.h deleted file mode 100644 index a8beef3..0000000 --- a/SwiftAA.framework/Headers/KPCAAUranus.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// KPCAAUranus.h -// SwiftAA -// -// Created by Cédric Foellmi on 10/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAUranus_EclipticLongitude(double JD, BOOL highPrecision); -double KPCAAUranus_EclipticLatitude(double JD, BOOL highPrecision); -double KPCAAUranus_RadiusVector(double JD, BOOL highPrecision); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/KPCAAVenus.h b/SwiftAA.framework/Headers/KPCAAVenus.h deleted file mode 100644 index beae433..0000000 --- a/SwiftAA.framework/Headers/KPCAAVenus.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// KPCAAVenus.h -// SwiftAA -// -// Created by Cédric Foellmi on 10/07/15. -// Licensed under the MIT License (see LICENSE file) -// - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -double KPCAAVenus_EclipticLongitude(double JD, BOOL highPrecision); -double KPCAAVenus_EclipticLatitude(double JD, BOOL highPrecision); -double KPCAAVenus_RadiusVector(double JD, BOOL highPrecision); - -#if __cplusplus -} -#endif diff --git a/SwiftAA.framework/Headers/SwiftAA-Swift.h b/SwiftAA.framework/Headers/SwiftAA-Swift.h deleted file mode 100644 index 5f90aeb..0000000 --- a/SwiftAA.framework/Headers/SwiftAA-Swift.h +++ /dev/null @@ -1,187 +0,0 @@ -// Generated by Apple Swift version 4.0 (swiftlang-900.0.65 clang-900.0.37) -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgcc-compat" - -#if !defined(__has_include) -# define __has_include(x) 0 -#endif -#if !defined(__has_attribute) -# define __has_attribute(x) 0 -#endif -#if !defined(__has_feature) -# define __has_feature(x) 0 -#endif -#if !defined(__has_warning) -# define __has_warning(x) 0 -#endif - -#if __has_attribute(external_source_symbol) -# define SWIFT_STRINGIFY(str) #str -# define SWIFT_MODULE_NAMESPACE_PUSH(module_name) _Pragma(SWIFT_STRINGIFY(clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in=module_name, generated_declaration))), apply_to=any(function, enum, objc_interface, objc_category, objc_protocol)))) -# define SWIFT_MODULE_NAMESPACE_POP _Pragma("clang attribute pop") -#else -# define SWIFT_MODULE_NAMESPACE_PUSH(module_name) -# define SWIFT_MODULE_NAMESPACE_POP -#endif - -#if __has_include() -# include -#endif - -#pragma clang diagnostic ignored "-Wauto-import" -#include -#include -#include -#include - -#if !defined(SWIFT_TYPEDEFS) -# define SWIFT_TYPEDEFS 1 -# if __has_include() -# include -# elif !defined(__cplusplus) || __cplusplus < 201103L -typedef uint_least16_t char16_t; -typedef uint_least32_t char32_t; -# endif -typedef float swift_float2 __attribute__((__ext_vector_type__(2))); -typedef float swift_float3 __attribute__((__ext_vector_type__(3))); -typedef float swift_float4 __attribute__((__ext_vector_type__(4))); -typedef double swift_double2 __attribute__((__ext_vector_type__(2))); -typedef double swift_double3 __attribute__((__ext_vector_type__(3))); -typedef double swift_double4 __attribute__((__ext_vector_type__(4))); -typedef int swift_int2 __attribute__((__ext_vector_type__(2))); -typedef int swift_int3 __attribute__((__ext_vector_type__(3))); -typedef int swift_int4 __attribute__((__ext_vector_type__(4))); -typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); -typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); -typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); -#endif - -#if !defined(SWIFT_PASTE) -# define SWIFT_PASTE_HELPER(x, y) x##y -# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) -#endif -#if !defined(SWIFT_METATYPE) -# define SWIFT_METATYPE(X) Class -#endif -#if !defined(SWIFT_CLASS_PROPERTY) -# if __has_feature(objc_class_property) -# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ -# else -# define SWIFT_CLASS_PROPERTY(...) -# endif -#endif - -#if __has_attribute(objc_runtime_name) -# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) -#else -# define SWIFT_RUNTIME_NAME(X) -#endif -#if __has_attribute(swift_name) -# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) -#else -# define SWIFT_COMPILE_NAME(X) -#endif -#if __has_attribute(objc_method_family) -# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) -#else -# define SWIFT_METHOD_FAMILY(X) -#endif -#if __has_attribute(noescape) -# define SWIFT_NOESCAPE __attribute__((noescape)) -#else -# define SWIFT_NOESCAPE -#endif -#if __has_attribute(warn_unused_result) -# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) -#else -# define SWIFT_WARN_UNUSED_RESULT -#endif -#if __has_attribute(noreturn) -# define SWIFT_NORETURN __attribute__((noreturn)) -#else -# define SWIFT_NORETURN -#endif -#if !defined(SWIFT_CLASS_EXTRA) -# define SWIFT_CLASS_EXTRA -#endif -#if !defined(SWIFT_PROTOCOL_EXTRA) -# define SWIFT_PROTOCOL_EXTRA -#endif -#if !defined(SWIFT_ENUM_EXTRA) -# define SWIFT_ENUM_EXTRA -#endif -#if !defined(SWIFT_CLASS) -# if __has_attribute(objc_subclassing_restricted) -# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA -# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA -# else -# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA -# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA -# endif -#endif - -#if !defined(SWIFT_PROTOCOL) -# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA -# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA -#endif - -#if !defined(SWIFT_EXTENSION) -# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) -#endif - -#if !defined(OBJC_DESIGNATED_INITIALIZER) -# if __has_attribute(objc_designated_initializer) -# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) -# else -# define OBJC_DESIGNATED_INITIALIZER -# endif -#endif -#if !defined(SWIFT_ENUM_ATTR) -# if defined(__has_attribute) && __has_attribute(enum_extensibility) -# define SWIFT_ENUM_ATTR __attribute__((enum_extensibility(open))) -# else -# define SWIFT_ENUM_ATTR -# endif -#endif -#if !defined(SWIFT_ENUM) -# define SWIFT_ENUM(_type, _name) enum _name : _type _name; enum SWIFT_ENUM_ATTR SWIFT_ENUM_EXTRA _name : _type -# if __has_feature(generalized_swift_name) -# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR SWIFT_ENUM_EXTRA _name : _type -# else -# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) SWIFT_ENUM(_type, _name) -# endif -#endif -#if !defined(SWIFT_UNAVAILABLE) -# define SWIFT_UNAVAILABLE __attribute__((unavailable)) -#endif -#if !defined(SWIFT_UNAVAILABLE_MSG) -# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) -#endif -#if !defined(SWIFT_AVAILABILITY) -# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) -#endif -#if !defined(SWIFT_DEPRECATED) -# define SWIFT_DEPRECATED __attribute__((deprecated)) -#endif -#if !defined(SWIFT_DEPRECATED_MSG) -# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) -#endif -#if __has_feature(attribute_diagnose_if_objc) -# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) -#else -# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) -#endif -#if __has_feature(modules) -#endif - -#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" -#pragma clang diagnostic ignored "-Wduplicate-method-arg" -#if __has_warning("-Wpragma-clang-attribute") -# pragma clang diagnostic ignored "-Wpragma-clang-attribute" -#endif -#pragma clang diagnostic ignored "-Wunknown-pragmas" -#pragma clang diagnostic ignored "-Wnullability" - -SWIFT_MODULE_NAMESPACE_PUSH("SwiftAA") -SWIFT_MODULE_NAMESPACE_POP -#pragma clang diagnostic pop diff --git a/SwiftAA.framework/Headers/SwiftAA.h b/SwiftAA.framework/Headers/SwiftAA.h deleted file mode 100644 index c51dc78..0000000 --- a/SwiftAA.framework/Headers/SwiftAA.h +++ /dev/null @@ -1,75 +0,0 @@ -// -// SwiftAA.h -// SwiftAA -// -// Created by Cédric Foellmi on 20/12/15. -// Copyright © 2015 onekiloparsec. All rights reserved. -// - -#import - -//! Project version number for SwiftAA. -FOUNDATION_EXPORT double SwiftAAVersionNumber; - -//! Project version string for SwiftAA. -FOUNDATION_EXPORT const unsigned char SwiftAAVersionString[]; - -#import - -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import - diff --git a/SwiftAA.framework/Info.plist b/SwiftAA.framework/Info.plist deleted file mode 100644 index a550979..0000000 Binary files a/SwiftAA.framework/Info.plist and /dev/null differ diff --git a/SwiftAA.framework/Modules/SwiftAA.swiftmodule/arm.swiftdoc b/SwiftAA.framework/Modules/SwiftAA.swiftmodule/arm.swiftdoc deleted file mode 100644 index e14344e..0000000 Binary files a/SwiftAA.framework/Modules/SwiftAA.swiftmodule/arm.swiftdoc and /dev/null differ diff --git a/SwiftAA.framework/Modules/SwiftAA.swiftmodule/arm.swiftmodule b/SwiftAA.framework/Modules/SwiftAA.swiftmodule/arm.swiftmodule deleted file mode 100644 index 5036d3f..0000000 Binary files a/SwiftAA.framework/Modules/SwiftAA.swiftmodule/arm.swiftmodule and /dev/null differ diff --git a/SwiftAA.framework/Modules/SwiftAA.swiftmodule/arm64.swiftdoc b/SwiftAA.framework/Modules/SwiftAA.swiftmodule/arm64.swiftdoc deleted file mode 100644 index 5ec8963..0000000 Binary files a/SwiftAA.framework/Modules/SwiftAA.swiftmodule/arm64.swiftdoc and /dev/null differ diff --git a/SwiftAA.framework/Modules/SwiftAA.swiftmodule/arm64.swiftmodule b/SwiftAA.framework/Modules/SwiftAA.swiftmodule/arm64.swiftmodule deleted file mode 100644 index 4681523..0000000 Binary files a/SwiftAA.framework/Modules/SwiftAA.swiftmodule/arm64.swiftmodule and /dev/null differ diff --git a/SwiftAA.framework/Modules/module.modulemap b/SwiftAA.framework/Modules/module.modulemap deleted file mode 100644 index 8c1f676..0000000 --- a/SwiftAA.framework/Modules/module.modulemap +++ /dev/null @@ -1,11 +0,0 @@ -framework module SwiftAA { - umbrella header "SwiftAA.h" - - export * - module * { export * } -} - -module SwiftAA.Swift { - header "SwiftAA-Swift.h" - requires objc -} diff --git a/SwiftAA.framework/SwiftAA b/SwiftAA.framework/SwiftAA deleted file mode 100755 index cce8221..0000000 Binary files a/SwiftAA.framework/SwiftAA and /dev/null differ diff --git a/fastlane/Appfile b/fastlane/Appfile new file mode 100644 index 0000000..c37d4a2 --- /dev/null +++ b/fastlane/Appfile @@ -0,0 +1,8 @@ +app_identifier("io.thumbworks.AugmentedSolarSystem") # The bundle identifier of your app +apple_id("roderic@thumbworks.io") # Your Apple email address + +itc_team_id("118119288") # App Store Connect Team ID +team_id("F4WTN36U2F") # Developer Portal Team ID + +# For more information about the Appfile, see: +# https://docs.fastlane.tools/advanced/#appfile diff --git a/fastlane/Deliverfile b/fastlane/Deliverfile new file mode 100644 index 0000000..8800e1f --- /dev/null +++ b/fastlane/Deliverfile @@ -0,0 +1,5 @@ +# The Deliverfile allows you to store various App Store Connect metadata +# For more information, check out the docs +# https://docs.fastlane.tools/actions/deliver/ + +force true diff --git a/fastlane/Fastfile b/fastlane/Fastfile new file mode 100644 index 0000000..7a016e3 --- /dev/null +++ b/fastlane/Fastfile @@ -0,0 +1,78 @@ +# This file contains the fastlane.tools configuration +# You can find the documentation at https://docs.fastlane.tools +# +# For a list of all available actions, check out +# +# https://docs.fastlane.tools/actions +# +# For a list of all available plugins, check out +# +# https://docs.fastlane.tools/plugins/available-plugins +# + +# Uncomment the line if you want fastlane to automatically update itself +# update_fastlane + +default_platform(:ios) +desc "This will increment the build number based on what is in our .plist files. To override (like if someone else incremented in a different repo) you would pass in the build number you'd like:" + +desc "#### Options" +desc " ***`build`**: The build to set in the *.plist files (`CFBundleVersion`)" +desc "#### Example:" +desc "```fastlane update_build build:69```" + +lane :update_build do |options| + increment_build_number( + build_number: options[:build], + ) +end + +desc "Sets the version of the project" +desc "#### Options" +desc " **`version`**: The version to set in the *.plist (`CFBundleShortVersionString`)" +desc "#### Example:" +desc "```fastlane update_version version:1.0.4```" + +lane :update_version do |options| + increment_version_number( + version_number: options[:version], + ) +end + +desc "update plists, tag, build, distribute to iTC" +desc "#### Options" +desc " **`version`**: The version to set in the *.plist (`CFBundleShortVersionString`)" +desc " **`build`**: The build to set in the *.plist (`CFBundleVersion`)" +desc "#### Example:" +desc "```fastlane release build:68 version:1.0.4```" + +lane :release do |options| + # call our other lane to update the build + if !options[:version] + options[:version] = prompt( + text: "Enter version number (e.g. 1.0.6)" + ) + end + + if !options[:build] + options[:build] = prompt( + text: "Enter Build number (e.g. 79)" + ) + end + + update_version(options) + update_build(options) + + tagName = options[:version]+"b"+options[:build] + + add_git_tag( + tag: tagName + ) + + push_git_tags( + tag: tagName + ) + + build_app(scheme: "SolarSystem") + upload_to_app_store # upload your app to App Store Connect +end diff --git a/fastlane/README.md b/fastlane/README.md new file mode 100644 index 0000000..003a15a --- /dev/null +++ b/fastlane/README.md @@ -0,0 +1,64 @@ +fastlane documentation +================ +# Installation + +Make sure you have the latest version of the Xcode command line tools installed: + +``` +xcode-select --install +``` + +Install _fastlane_ using +``` +[sudo] gem install fastlane -NV +``` +or alternatively using `brew cask install fastlane` + +# Available Actions +### update_build +``` +fastlane update_build +``` +This will increment the build number based on what is in our .plist files. To override (like if someone else incremented in a different repo) you would pass in the build number you'd like: + +#### Options + + ***`build`**: The build to set in the *.plist files (`CFBundleVersion`) + +#### Example: + +```fastlane update_build build:69``` +### update_version +``` +fastlane update_version +``` +Sets the version of the project + +#### Options + + **`version`**: The version to set in the *.plist (`CFBundleShortVersionString`) + +#### Example: + +```fastlane update_version version:1.0.4``` +### release +``` +fastlane release +``` +update plists, tag, build, distribute to iTC + +#### Options + + **`version`**: The version to set in the *.plist (`CFBundleShortVersionString`) + + **`build`**: The build to set in the *.plist (`CFBundleVersion`) + +#### Example: + +```fastlane release build:68 version:1.0.4``` + +---- + +This README.md is auto-generated and will be re-generated every time [fastlane](https://fastlane.tools) is run. +More information about fastlane can be found on [fastlane.tools](https://fastlane.tools). +The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools). diff --git a/fastlane/metadata/app_icon.jpg b/fastlane/metadata/app_icon.jpg new file mode 100644 index 0000000..cff34a6 Binary files /dev/null and b/fastlane/metadata/app_icon.jpg differ diff --git a/fastlane/metadata/copyright.txt b/fastlane/metadata/copyright.txt new file mode 100644 index 0000000..5befe81 --- /dev/null +++ b/fastlane/metadata/copyright.txt @@ -0,0 +1 @@ +2019 Thumbworks Inc. diff --git a/fastlane/metadata/en-US/description.txt b/fastlane/metadata/en-US/description.txt new file mode 100644 index 0000000..5afb2ee --- /dev/null +++ b/fastlane/metadata/en-US/description.txt @@ -0,0 +1,5 @@ +This ARKit version of our Solar System provides a unique learning experience for those that are curious about our world and how it interacts with the Space around it. With a quick tap you can explore the Planets in a realistic scale which, we think you'll find, is very eye opening. + +With realistic sun lighting and city lighting (earth only for city lights....for now). You can scale the size of the planets to see just how insignificant we on earth are. You can also scale the orbit radius as well, so you can see how far from anything and alone we are. + +Get the best Augmented Reality Orrery right here. diff --git a/fastlane/metadata/en-US/keywords.txt b/fastlane/metadata/en-US/keywords.txt new file mode 100644 index 0000000..8cea008 --- /dev/null +++ b/fastlane/metadata/en-US/keywords.txt @@ -0,0 +1 @@ +ARKit,Space,Solar System,Planets,Sun,Earth,augmented reality,astronomy,orbit,orrery,3d diff --git a/fastlane/metadata/en-US/marketing_url.txt b/fastlane/metadata/en-US/marketing_url.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/fastlane/metadata/en-US/marketing_url.txt @@ -0,0 +1 @@ + diff --git a/fastlane/metadata/en-US/name.txt b/fastlane/metadata/en-US/name.txt new file mode 100644 index 0000000..77100de --- /dev/null +++ b/fastlane/metadata/en-US/name.txt @@ -0,0 +1 @@ +Augmented Reality Solar System diff --git a/fastlane/metadata/en-US/privacy_url.txt b/fastlane/metadata/en-US/privacy_url.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/fastlane/metadata/en-US/privacy_url.txt @@ -0,0 +1 @@ + diff --git a/fastlane/metadata/en-US/promotional_text.txt b/fastlane/metadata/en-US/promotional_text.txt new file mode 100644 index 0000000..e69de29 diff --git a/fastlane/metadata/en-US/release_notes.txt b/fastlane/metadata/en-US/release_notes.txt new file mode 100644 index 0000000..6074e6a --- /dev/null +++ b/fastlane/metadata/en-US/release_notes.txt @@ -0,0 +1 @@ +A new look and feel. This one's cleaner and more natural looking diff --git a/fastlane/metadata/en-US/subtitle.txt b/fastlane/metadata/en-US/subtitle.txt new file mode 100644 index 0000000..d6a4eb3 --- /dev/null +++ b/fastlane/metadata/en-US/subtitle.txt @@ -0,0 +1 @@ +ARKit Solar System at home! diff --git a/fastlane/metadata/en-US/support_url.txt b/fastlane/metadata/en-US/support_url.txt new file mode 100644 index 0000000..aebcb20 --- /dev/null +++ b/fastlane/metadata/en-US/support_url.txt @@ -0,0 +1 @@ +http://thumbworks.io diff --git a/fastlane/metadata/primary_category.txt b/fastlane/metadata/primary_category.txt new file mode 100644 index 0000000..5fa011d --- /dev/null +++ b/fastlane/metadata/primary_category.txt @@ -0,0 +1 @@ +MZGenre.Education diff --git a/fastlane/metadata/primary_first_sub_category.txt b/fastlane/metadata/primary_first_sub_category.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/fastlane/metadata/primary_first_sub_category.txt @@ -0,0 +1 @@ + diff --git a/fastlane/metadata/primary_second_sub_category.txt b/fastlane/metadata/primary_second_sub_category.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/fastlane/metadata/primary_second_sub_category.txt @@ -0,0 +1 @@ + diff --git a/fastlane/metadata/review_information/demo_password.txt b/fastlane/metadata/review_information/demo_password.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/fastlane/metadata/review_information/demo_password.txt @@ -0,0 +1 @@ + diff --git a/fastlane/metadata/review_information/demo_user.txt b/fastlane/metadata/review_information/demo_user.txt new file mode 100644 index 0000000..4b4aa1e --- /dev/null +++ b/fastlane/metadata/review_information/demo_user.txt @@ -0,0 +1 @@ +Roderic Campbell diff --git a/fastlane/metadata/review_information/email_address.txt b/fastlane/metadata/review_information/email_address.txt new file mode 100644 index 0000000..c201002 --- /dev/null +++ b/fastlane/metadata/review_information/email_address.txt @@ -0,0 +1 @@ +roderic@thumbworks.io diff --git a/fastlane/metadata/review_information/first_name.txt b/fastlane/metadata/review_information/first_name.txt new file mode 100644 index 0000000..f716fa4 --- /dev/null +++ b/fastlane/metadata/review_information/first_name.txt @@ -0,0 +1 @@ +Roderic diff --git a/fastlane/metadata/review_information/last_name.txt b/fastlane/metadata/review_information/last_name.txt new file mode 100644 index 0000000..f7b3287 --- /dev/null +++ b/fastlane/metadata/review_information/last_name.txt @@ -0,0 +1 @@ +Campbell diff --git a/fastlane/metadata/review_information/notes.txt b/fastlane/metadata/review_information/notes.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/fastlane/metadata/review_information/notes.txt @@ -0,0 +1 @@ + diff --git a/fastlane/metadata/review_information/phone_number.txt b/fastlane/metadata/review_information/phone_number.txt new file mode 100644 index 0000000..19ea55c --- /dev/null +++ b/fastlane/metadata/review_information/phone_number.txt @@ -0,0 +1 @@ +5858020632 diff --git a/fastlane/metadata/secondary_category.txt b/fastlane/metadata/secondary_category.txt new file mode 100644 index 0000000..1261ae2 --- /dev/null +++ b/fastlane/metadata/secondary_category.txt @@ -0,0 +1 @@ +MZGenre.Reference diff --git a/fastlane/metadata/secondary_first_sub_category.txt b/fastlane/metadata/secondary_first_sub_category.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/fastlane/metadata/secondary_first_sub_category.txt @@ -0,0 +1 @@ + diff --git a/fastlane/metadata/secondary_second_sub_category.txt b/fastlane/metadata/secondary_second_sub_category.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/fastlane/metadata/secondary_second_sub_category.txt @@ -0,0 +1 @@ + diff --git a/fastlane/metadata/trade_representative_contact_information/address_line1.txt b/fastlane/metadata/trade_representative_contact_information/address_line1.txt new file mode 100644 index 0000000..f6d0d99 --- /dev/null +++ b/fastlane/metadata/trade_representative_contact_information/address_line1.txt @@ -0,0 +1 @@ +1553 Arbutus Dr diff --git a/fastlane/metadata/trade_representative_contact_information/address_line2.txt b/fastlane/metadata/trade_representative_contact_information/address_line2.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/fastlane/metadata/trade_representative_contact_information/address_line2.txt @@ -0,0 +1 @@ + diff --git a/fastlane/metadata/trade_representative_contact_information/address_line3.txt b/fastlane/metadata/trade_representative_contact_information/address_line3.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/fastlane/metadata/trade_representative_contact_information/address_line3.txt @@ -0,0 +1 @@ + diff --git a/fastlane/metadata/trade_representative_contact_information/city_name.txt b/fastlane/metadata/trade_representative_contact_information/city_name.txt new file mode 100644 index 0000000..af0d23c --- /dev/null +++ b/fastlane/metadata/trade_representative_contact_information/city_name.txt @@ -0,0 +1 @@ +Walnut Creek diff --git a/fastlane/metadata/trade_representative_contact_information/country.txt b/fastlane/metadata/trade_representative_contact_information/country.txt new file mode 100644 index 0000000..e0f84d0 --- /dev/null +++ b/fastlane/metadata/trade_representative_contact_information/country.txt @@ -0,0 +1 @@ +United States diff --git a/fastlane/metadata/trade_representative_contact_information/email_address.txt b/fastlane/metadata/trade_representative_contact_information/email_address.txt new file mode 100644 index 0000000..c201002 --- /dev/null +++ b/fastlane/metadata/trade_representative_contact_information/email_address.txt @@ -0,0 +1 @@ +roderic@thumbworks.io diff --git a/fastlane/metadata/trade_representative_contact_information/first_name.txt b/fastlane/metadata/trade_representative_contact_information/first_name.txt new file mode 100644 index 0000000..f716fa4 --- /dev/null +++ b/fastlane/metadata/trade_representative_contact_information/first_name.txt @@ -0,0 +1 @@ +Roderic diff --git a/fastlane/metadata/trade_representative_contact_information/is_displayed_on_app_store.txt b/fastlane/metadata/trade_representative_contact_information/is_displayed_on_app_store.txt new file mode 100644 index 0000000..c508d53 --- /dev/null +++ b/fastlane/metadata/trade_representative_contact_information/is_displayed_on_app_store.txt @@ -0,0 +1 @@ +false diff --git a/fastlane/metadata/trade_representative_contact_information/last_name.txt b/fastlane/metadata/trade_representative_contact_information/last_name.txt new file mode 100644 index 0000000..f7b3287 --- /dev/null +++ b/fastlane/metadata/trade_representative_contact_information/last_name.txt @@ -0,0 +1 @@ +Campbell diff --git a/fastlane/metadata/trade_representative_contact_information/phone_number.txt b/fastlane/metadata/trade_representative_contact_information/phone_number.txt new file mode 100644 index 0000000..19ea55c --- /dev/null +++ b/fastlane/metadata/trade_representative_contact_information/phone_number.txt @@ -0,0 +1 @@ +5858020632 diff --git a/fastlane/metadata/trade_representative_contact_information/postal_code.txt b/fastlane/metadata/trade_representative_contact_information/postal_code.txt new file mode 100644 index 0000000..6c67544 --- /dev/null +++ b/fastlane/metadata/trade_representative_contact_information/postal_code.txt @@ -0,0 +1 @@ +94595 diff --git a/fastlane/metadata/trade_representative_contact_information/state.txt b/fastlane/metadata/trade_representative_contact_information/state.txt new file mode 100644 index 0000000..60ee227 --- /dev/null +++ b/fastlane/metadata/trade_representative_contact_information/state.txt @@ -0,0 +1 @@ +California diff --git a/fastlane/metadata/trade_representative_contact_information/trade_name.txt b/fastlane/metadata/trade_representative_contact_information/trade_name.txt new file mode 100644 index 0000000..95a2110 --- /dev/null +++ b/fastlane/metadata/trade_representative_contact_information/trade_name.txt @@ -0,0 +1 @@ +Thumb Works diff --git a/fastlane/report.xml b/fastlane/report.xml new file mode 100644 index 0000000..fee46cc --- /dev/null +++ b/fastlane/report.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fastlane/screenshots/README.txt b/fastlane/screenshots/README.txt new file mode 100644 index 0000000..8b015ec --- /dev/null +++ b/fastlane/screenshots/README.txt @@ -0,0 +1,7 @@ +Put all screenshots you want to use inside the folder of its language (e.g. en-US). +The device type will automatically be recognized using the image resolution. Apple TV screenshots +should be stored in a subdirectory named appleTV with language folders inside of it. iMessage +screenshots, like Apple TV screenshots, should also be stored in a subdirectory named iMessage +with language folders inside of it. + +The screenshots can be named whatever you want, but keep in mind they are sorted alphabetically. diff --git a/fastlane/screenshots/en-US/1_Learn Details iPad.png b/fastlane/screenshots/en-US/1_Learn Details iPad.png new file mode 100644 index 0000000..5338cbd Binary files /dev/null and b/fastlane/screenshots/en-US/1_Learn Details iPad.png differ diff --git a/fastlane/screenshots/en-US/1_Learn Details.png b/fastlane/screenshots/en-US/1_Learn Details.png new file mode 100644 index 0000000..f2f9a00 Binary files /dev/null and b/fastlane/screenshots/en-US/1_Learn Details.png differ diff --git a/fastlane/screenshots/en-US/2_Planets In Living Room iPad.png b/fastlane/screenshots/en-US/2_Planets In Living Room iPad.png new file mode 100644 index 0000000..0df12ca Binary files /dev/null and b/fastlane/screenshots/en-US/2_Planets In Living Room iPad.png differ diff --git a/fastlane/screenshots/en-US/2_Planets In Living Room.png b/fastlane/screenshots/en-US/2_Planets In Living Room.png new file mode 100644 index 0000000..0f9dda3 Binary files /dev/null and b/fastlane/screenshots/en-US/2_Planets In Living Room.png differ diff --git a/fastlane/screenshots/en-US/3_Walk right up iPad.png b/fastlane/screenshots/en-US/3_Walk right up iPad.png new file mode 100644 index 0000000..d098ea2 Binary files /dev/null and b/fastlane/screenshots/en-US/3_Walk right up iPad.png differ diff --git a/fastlane/screenshots/en-US/3_Walk up close.png b/fastlane/screenshots/en-US/3_Walk up close.png new file mode 100644 index 0000000..3128ab0 Binary files /dev/null and b/fastlane/screenshots/en-US/3_Walk up close.png differ