├── ProjectSettings
├── ProjectVersion.txt
├── ClusterInputManager.asset
├── EditorBuildSettings.asset
├── NetworkManager.asset
├── TimeManager.asset
├── AudioManager.asset
├── EditorSettings.asset
├── TagManager.asset
├── DynamicsManager.asset
├── UnityConnectSettings.asset
├── NavMeshAreas.asset
├── Physics2DSettings.asset
├── GraphicsSettings.asset
├── QualitySettings.asset
├── InputManager.asset
└── ProjectSettings.asset
├── Assets
├── Plugins
│ ├── libOverride_iOS.a
│ ├── DeepLink.cs.meta
│ ├── DeepLink.cs
│ └── libOverride_iOS.a.meta
├── Fonts
│ ├── Source Sans Pro (Black).ttf
│ ├── Source Sans Pro (Light).ttf
│ ├── Source Sans Pro (Black).ttf.meta
│ └── Source Sans Pro (Light).ttf.meta
├── Scene.unity.meta
├── Editor.meta
├── Fonts.meta
├── Plugins.meta
├── Editor
│ ├── BuildPostProcessor.cs.meta
│ └── BuildPostProcessor.cs
└── Scene.unity
├── README.md
├── OSX
└── Override_OSX
│ ├── Override_OSX.xcodeproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcuserdata
│ │ │ └── eppz.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ ├── xcuserdata
│ │ └── eppz.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── xcschememanagement.plist
│ │ │ ├── Override_OSX.xcscheme
│ │ │ └── Override_OSX_Sandbox.xcscheme
│ └── project.pbxproj
│ ├── Override_OSX_Sandbox
│ ├── main.m
│ ├── PlayerAppDelegate.h
│ ├── PlayerAppDelegate.m
│ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ └── Info.plist
│ └── Override_OSX
│ ├── Info.plist
│ ├── OverrideAppDelegate.h
│ ├── DeepLink.h
│ ├── DeepLink_C++.mm
│ ├── UnityString_C++.mm
│ ├── Override_OSX.h
│ ├── OverrideAppDelegate.m
│ ├── DeepLink.m
│ ├── Override_OSX.m
│ ├── EPPZSwizzler.h
│ └── EPPZSwizzler.m
├── iOS
└── Override_iOS
│ ├── Override_iOS.xcodeproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcuserdata
│ │ │ └── eppz.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ ├── xcuserdata
│ │ └── eppz.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── xcschememanagement.plist
│ │ │ └── Override_iOS.xcscheme
│ └── project.pbxproj
│ └── Override_iOS
│ ├── Override_iOS.h
│ ├── DeepLink.h
│ ├── DeepLink_C++.mm
│ ├── UnityString_C++.mm
│ ├── DeepLink.m
│ ├── OverrideAppDelegate.h
│ ├── Override_iOS.m
│ ├── OverrideAppDelegate.m
│ ├── EPPZSwizzler.h
│ └── EPPZSwizzler.m
├── .gitignore
└── .vscode
└── settings.json
/ProjectSettings/ProjectVersion.txt:
--------------------------------------------------------------------------------
1 | m_EditorVersion: 5.5.0f3
2 |
--------------------------------------------------------------------------------
/Assets/Plugins/libOverride_iOS.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Geri-Borbas/Unity.Blog.Override_App_Delegate/HEAD/Assets/Plugins/libOverride_iOS.a
--------------------------------------------------------------------------------
/Assets/Fonts/Source Sans Pro (Black).ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Geri-Borbas/Unity.Blog.Override_App_Delegate/HEAD/Assets/Fonts/Source Sans Pro (Black).ttf
--------------------------------------------------------------------------------
/Assets/Fonts/Source Sans Pro (Light).ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Geri-Borbas/Unity.Blog.Override_App_Delegate/HEAD/Assets/Fonts/Source Sans Pro (Light).ttf
--------------------------------------------------------------------------------
/ProjectSettings/ClusterInputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!236 &1
4 | ClusterInputManager:
5 | m_ObjectHideFlags: 0
6 | m_Inputs: []
7 |
--------------------------------------------------------------------------------
/ProjectSettings/EditorBuildSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1045 &1
4 | EditorBuildSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Scenes: []
8 |
--------------------------------------------------------------------------------
/ProjectSettings/NetworkManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!149 &1
4 | NetworkManager:
5 | m_ObjectHideFlags: 0
6 | m_DebugLevel: 0
7 | m_Sendrate: 15
8 | m_AssetToPrefab: {}
9 |
--------------------------------------------------------------------------------
/Assets/Scene.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4fe2f98d156ca4350a406cabe7a6211d
3 | timeCreated: 1494083627
4 | licenseType: Free
5 | DefaultImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7dc963aa0d490424ab072c2683066aaa
3 | folderAsset: yes
4 | timeCreated: 1494104982
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/Fonts.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 71d873eab432942269c3cdbf9fd1c4a9
3 | folderAsset: yes
4 | timeCreated: 1494083432
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/Plugins.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 00075ab2458b2420b9ff0f15cc0dea12
3 | folderAsset: yes
4 | timeCreated: 1494086407
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Example project for **Override app delegate in Unity for iOS and OSX** tutorial series. Read (much) more on [**Override app delegate in Unity for iOS and OSX (1/4)** Plugin workflow](http://eppz.eu/blog/override-app-delegate-unity-ios-osx-1/).
2 |
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/iOS/Override_iOS/Override_iOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ProjectSettings/TimeManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!5 &1
4 | TimeManager:
5 | m_ObjectHideFlags: 0
6 | Fixed Timestep: 0.02
7 | Maximum Allowed Timestep: 0.33333334
8 | m_TimeScale: 1
9 | Maximum Particle Timestep: 0.03
10 |
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX.xcodeproj/project.xcworkspace/xcuserdata/eppz.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Geri-Borbas/Unity.Blog.Override_App_Delegate/HEAD/OSX/Override_OSX/Override_OSX.xcodeproj/project.xcworkspace/xcuserdata/eppz.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/iOS/Override_iOS/Override_iOS.xcodeproj/project.xcworkspace/xcuserdata/eppz.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Geri-Borbas/Unity.Blog.Override_App_Delegate/HEAD/iOS/Override_iOS/Override_iOS.xcodeproj/project.xcworkspace/xcuserdata/eppz.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/Assets/Plugins/DeepLink.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: cb73512c827624a5b8aa148dd5d9d973
3 | timeCreated: 1494106901
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/Editor/BuildPostProcessor.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 95478fae7b9f349a5ae64a64b516eda9
3 | timeCreated: 1494104998
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/ProjectSettings/AudioManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!11 &1
4 | AudioManager:
5 | m_ObjectHideFlags: 0
6 | m_Volume: 1
7 | Rolloff Scale: 1
8 | Doppler Factor: 1
9 | Default Speaker Mode: 2
10 | m_SampleRate: 0
11 | m_DSPBufferSize: 0
12 | m_VirtualVoiceCount: 512
13 | m_RealVoiceCount: 32
14 | m_SpatializerPlugin:
15 | m_DisableAudio: 0
16 | m_VirtualizeEffects: 1
17 |
--------------------------------------------------------------------------------
/ProjectSettings/EditorSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!159 &1
4 | EditorSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 3
7 | m_ExternalVersionControlSupport: Hidden Meta Files
8 | m_SerializationMode: 2
9 | m_DefaultBehaviorMode: 0
10 | m_SpritePackerMode: 2
11 | m_SpritePackerPaddingPower: 1
12 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd
13 | m_ProjectGenerationRootNamespace:
14 | m_UserGeneratedProjectSuffix:
15 |
--------------------------------------------------------------------------------
/ProjectSettings/TagManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!78 &1
4 | TagManager:
5 | serializedVersion: 2
6 | tags: []
7 | layers:
8 | - Default
9 | - TransparentFX
10 | - Ignore Raycast
11 | -
12 | - Water
13 | - UI
14 | -
15 | -
16 | -
17 | -
18 | -
19 | -
20 | -
21 | -
22 | -
23 | -
24 | -
25 | -
26 | -
27 | -
28 | -
29 | -
30 | -
31 | -
32 | -
33 | -
34 | -
35 | -
36 | -
37 | -
38 | -
39 | -
40 | m_SortingLayers:
41 | - name: Default
42 | uniqueID: 0
43 | locked: 0
44 |
--------------------------------------------------------------------------------
/iOS/Override_iOS/Override_iOS.xcodeproj/xcuserdata/eppz.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | Override_iOS.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 552856311EBE63180043CD02
16 |
17 | primary
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Assets/Fonts/Source Sans Pro (Black).ttf.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 379e1cda5590e45b892c512af4992e73
3 | timeCreated: 1494083439
4 | licenseType: Free
5 | TrueTypeFontImporter:
6 | serializedVersion: 4
7 | fontSize: 16
8 | forceTextureCase: -2
9 | characterSpacing: 0
10 | characterPadding: 1
11 | includeFontData: 1
12 | fontName: Source Sans Pro
13 | fontNames:
14 | - Source Sans Pro (Black)
15 | fallbackFontReferences:
16 | - {fileID: 12800000, guid: eaf6ebecc70a24a08bcf6fdfd75e4af7, type: 3}
17 | customCharacters:
18 | fontRenderingMode: 0
19 | ascentCalculationMode: 1
20 | userData:
21 | assetBundleName:
22 | assetBundleVariant:
23 |
--------------------------------------------------------------------------------
/Assets/Fonts/Source Sans Pro (Light).ttf.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: eaf6ebecc70a24a08bcf6fdfd75e4af7
3 | timeCreated: 1494083473
4 | licenseType: Free
5 | TrueTypeFontImporter:
6 | serializedVersion: 4
7 | fontSize: 16
8 | forceTextureCase: -2
9 | characterSpacing: 0
10 | characterPadding: 1
11 | includeFontData: 1
12 | fontName: Source Sans Pro
13 | fontNames:
14 | - Source Sans Pro (Light)
15 | fallbackFontReferences:
16 | - {fileID: 12800000, guid: 379e1cda5590e45b892c512af4992e73, type: 3}
17 | customCharacters:
18 | fontRenderingMode: 0
19 | ascentCalculationMode: 1
20 | userData:
21 | assetBundleName:
22 | assetBundleVariant:
23 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by https://www.gitignore.io
2 |
3 | # Unity
4 | Library/
5 | Temp/
6 | obj/
7 | Build/
8 | Builds/
9 |
10 | /Library/
11 | /Temp/
12 | /obj/
13 | /Build/
14 | /Builds/
15 |
16 | # Additions from http://answers.unity3d.com/questions/408802/help-with-using-git-for-version-control.html
17 | # Metadata can go as long as set Visible Meta Files http://docs.unity3d.com/Manual/ExternalVersionControlSystemSupport.html
18 |
19 | # Autogenerated VS/MD solution and project files
20 | *.csproj
21 | *.unityproj
22 | *.sln
23 | *.suo
24 | *.tmp
25 | *.user
26 | *.userprefs
27 | *.pidb
28 | *.booproj
29 |
30 | # Unity3D generated meta files
31 | *.pidb.meta
32 |
33 | # Unity3D Generated File On Crash Reports
34 | sysinfo.txt
35 |
36 | # OSX
37 | .DS_Store
38 |
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX_Sandbox/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2017 eppz! mobile, Gergely Borbás (SP)
3 | //
4 | // http://www.twitter.com/_eppz
5 | //
6 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
7 | // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
8 | // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
9 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
10 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
11 | // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 | //
13 |
14 | #import
15 |
16 | int main(int argc, const char * argv[]) {
17 | return NSApplicationMain(argc, argv);
18 | }
19 |
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX_Sandbox/PlayerAppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2017 eppz! mobile, Gergely Borbás (SP)
3 | //
4 | // http://www.twitter.com/_eppz
5 | //
6 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
7 | // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
8 | // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
9 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
10 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
11 | // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 | //
13 |
14 | #import
15 |
16 |
17 | @interface PlayerAppDelegate : NSObject
18 | @end
19 |
20 |
--------------------------------------------------------------------------------
/ProjectSettings/DynamicsManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!55 &1
4 | PhysicsManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 3
7 | m_Gravity: {x: 0, y: -9.81, z: 0}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_BounceThreshold: 2
10 | m_SleepThreshold: 0.005
11 | m_DefaultContactOffset: 0.01
12 | m_DefaultSolverIterations: 6
13 | m_DefaultSolverVelocityIterations: 1
14 | m_QueriesHitBackfaces: 0
15 | m_QueriesHitTriggers: 1
16 | m_EnableAdaptiveForce: 0
17 | m_EnablePCM: 1
18 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
19 |
--------------------------------------------------------------------------------
/ProjectSettings/UnityConnectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!310 &1
4 | UnityConnectSettings:
5 | m_ObjectHideFlags: 0
6 | m_Enabled: 0
7 | m_TestMode: 0
8 | m_TestEventUrl:
9 | m_TestConfigUrl:
10 | CrashReportingSettings:
11 | m_EventUrl: https://perf-events.cloud.unity3d.com/api/events/crashes
12 | m_Enabled: 0
13 | m_CaptureEditorExceptions: 1
14 | UnityPurchasingSettings:
15 | m_Enabled: 0
16 | m_TestMode: 0
17 | UnityAnalyticsSettings:
18 | m_Enabled: 0
19 | m_InitializeOnStartup: 1
20 | m_TestMode: 0
21 | m_TestEventUrl:
22 | m_TestConfigUrl:
23 | UnityAdsSettings:
24 | m_Enabled: 0
25 | m_InitializeOnStartup: 1
26 | m_TestMode: 0
27 | m_EnabledPlatforms: 4294967295
28 | m_IosGameId:
29 | m_AndroidGameId:
30 |
--------------------------------------------------------------------------------
/iOS/Override_iOS/Override_iOS/Override_iOS.h:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2017 eppz! mobile, Gergely Borbás (SP)
3 | //
4 | // http://www.twitter.com/_eppz
5 | //
6 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
7 | // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
8 | // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
9 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
10 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
11 | // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 | //
13 |
14 | #import
15 | #import
16 | #import "EPPZSwizzler.h"
17 | #import "OverrideAppDelegate.h"
18 |
19 |
20 | @interface Override_iOS : NSObject
21 | @end
22 |
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX.xcodeproj/xcuserdata/eppz.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | Override_OSX.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 | Override_OSX_Sandbox.xcscheme
13 |
14 | orderHint
15 | 1
16 |
17 |
18 | SuppressBuildableAutocreation
19 |
20 | 554696A21EC32084005DE88B
21 |
22 | primary
23 |
24 |
25 | 554696D21EC32723005DE88B
26 |
27 | primary
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX_Sandbox/PlayerAppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2017 eppz! mobile, Gergely Borbás (SP)
3 | //
4 | // http://www.twitter.com/_eppz
5 | //
6 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
7 | // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
8 | // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
9 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
10 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
11 | // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 | //
13 |
14 | #import "PlayerAppDelegate.h"
15 |
16 |
17 | @interface PlayerAppDelegate ()
18 | @end
19 |
20 |
21 | @implementation PlayerAppDelegate
22 |
23 |
24 | -(void)applicationDidFinishLaunching:(NSNotification*) notification
25 | { return; }
26 |
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/iOS/Override_iOS/Override_iOS/DeepLink.h:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2017 eppz! mobile, Gergely Borbás (SP)
3 | //
4 | // http://www.twitter.com/_eppz
5 | //
6 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
7 | // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
8 | // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
9 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
10 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
11 | // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 | //
13 |
14 | #import
15 |
16 |
17 | @interface DeepLink : NSObject
18 |
19 |
20 | @property (nonatomic, strong) NSString *URL;
21 | @property (nonatomic, strong) NSString *sourceAppliaction;
22 | @property (nonatomic, strong) id annotation;
23 |
24 | +(DeepLink*)instance;
25 | -(void)reset;
26 |
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | $(CURRENT_PROJECT_VERSION)
23 | NSHumanReadableCopyright
24 | Copyright © 2017 eppz!. All rights reserved.
25 | NSPrincipalClass
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX/OverrideAppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2016 eppz! mobile, Gergely Borbás (SP)
3 | //
4 | // http://www.twitter.com/_eppz
5 | //
6 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
7 | // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
8 | // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
9 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
10 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
11 | // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 | //
13 |
14 | #import
15 | #import
16 | #import "Override_OSX.h"
17 | #import "DeepLink.h"
18 |
19 |
20 | @interface OverrideAppDelegate : NSObject
21 |
22 |
23 | -(void)applicationDidFinishLaunching:(NSNotification*) notification;
24 | -(void)_original_saved_by_Override_applicationDidFinishLaunching:(NSNotification*) notification;
25 |
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX/DeepLink.h:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2017 eppz! mobile, Gergely Borbás (SP)
3 | //
4 | // http://www.twitter.com/_eppz
5 | //
6 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
7 | // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
8 | // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
9 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
10 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
11 | // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 | //
13 |
14 | #import
15 |
16 |
17 | @interface DeepLink : NSObject
18 |
19 |
20 | @property (nonatomic, strong) NSString *URL;
21 | @property (nonatomic, strong) NSString *sourceAppliaction;
22 | @property (nonatomic, strong) id annotation;
23 |
24 | +(DeepLink*)instance;
25 | -(void)reset;
26 | -(void)handleGetURLEvent:(NSAppleEventDescriptor*) event
27 | withReplyEvent:(NSAppleEventDescriptor*) replyEvent;
28 |
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX/DeepLink_C++.mm:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2017 eppz! mobile, Gergely Borbás (SP)
3 | //
4 | // http://www.twitter.com/_eppz
5 | //
6 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
7 | // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
8 | // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
9 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
10 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
11 | // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 | //
13 |
14 | #import "UnityString_C++.mm"
15 | #import "DeepLink.h"
16 |
17 |
18 | extern "C"
19 | {
20 |
21 |
22 | void DeepLink_Reset()
23 | { return [[DeepLink instance] reset]; }
24 |
25 | const char* DeepLink_GetURL()
26 | { return UnityStringFromNSString([[DeepLink instance] URL]); }
27 |
28 | const char* DeepLink_GetSourceApplication()
29 | { return UnityStringFromNSString([[DeepLink instance] sourceAppliaction]); }
30 |
31 |
32 | }
33 |
34 |
--------------------------------------------------------------------------------
/iOS/Override_iOS/Override_iOS/DeepLink_C++.mm:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2017 eppz! mobile, Gergely Borbás (SP)
3 | //
4 | // http://www.twitter.com/_eppz
5 | //
6 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
7 | // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
8 | // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
9 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
10 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
11 | // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 | //
13 |
14 | #import "UnityString_C++.mm"
15 | #import "DeepLink.h"
16 |
17 |
18 | extern "C"
19 | {
20 |
21 |
22 | void DeepLink_Reset()
23 | { return [[DeepLink instance] reset]; }
24 |
25 | const char* DeepLink_GetURL()
26 | { return UnityStringFromNSString([[DeepLink instance] URL]); }
27 |
28 | const char* DeepLink_GetSourceApplication()
29 | { return UnityStringFromNSString([[DeepLink instance] sourceAppliaction]); }
30 |
31 |
32 | }
33 |
34 |
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX/UnityString_C++.mm:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2016 eppz! mobile, Gergely Borbás (SP)
3 | //
4 | // http://www.twitter.com/_eppz
5 | //
6 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
7 | // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
8 | // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
9 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
10 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
11 | // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 | //
13 |
14 | #import
15 |
16 |
17 | const char* UnityStringFromNSString(NSString* string)
18 | {
19 | const char* cString = string.UTF8String;
20 | char* _unityString = (char*)malloc(strlen(cString) + 1);
21 | strcpy(_unityString, cString);
22 | return _unityString;
23 | }
24 |
25 | NSString* NSStringFromUnityString(const char* unityString_)
26 | {
27 | if (unityString_ == nil) return [NSString new];
28 | return [NSString stringWithUTF8String:unityString_];
29 | }
--------------------------------------------------------------------------------
/iOS/Override_iOS/Override_iOS/UnityString_C++.mm:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2016 eppz! mobile, Gergely Borbás (SP)
3 | //
4 | // http://www.twitter.com/_eppz
5 | //
6 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
7 | // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
8 | // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
9 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
10 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
11 | // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 | //
13 |
14 | #import
15 |
16 |
17 | const char* UnityStringFromNSString(NSString* string)
18 | {
19 | const char* cString = string.UTF8String;
20 | char* _unityString = (char*)malloc(strlen(cString) + 1);
21 | strcpy(_unityString, cString);
22 | return _unityString;
23 | }
24 |
25 | NSString* NSStringFromUnityString(const char* unityString_)
26 | {
27 | if (unityString_ == nil) return [NSString new];
28 | return [NSString stringWithUTF8String:unityString_];
29 | }
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX_Sandbox/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "mac",
5 | "size" : "16x16",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "mac",
10 | "size" : "16x16",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "mac",
15 | "size" : "32x32",
16 | "scale" : "1x"
17 | },
18 | {
19 | "idiom" : "mac",
20 | "size" : "32x32",
21 | "scale" : "2x"
22 | },
23 | {
24 | "idiom" : "mac",
25 | "size" : "128x128",
26 | "scale" : "1x"
27 | },
28 | {
29 | "idiom" : "mac",
30 | "size" : "128x128",
31 | "scale" : "2x"
32 | },
33 | {
34 | "idiom" : "mac",
35 | "size" : "256x256",
36 | "scale" : "1x"
37 | },
38 | {
39 | "idiom" : "mac",
40 | "size" : "256x256",
41 | "scale" : "2x"
42 | },
43 | {
44 | "idiom" : "mac",
45 | "size" : "512x512",
46 | "scale" : "1x"
47 | },
48 | {
49 | "idiom" : "mac",
50 | "size" : "512x512",
51 | "scale" : "2x"
52 | }
53 | ],
54 | "info" : {
55 | "version" : 1,
56 | "author" : "xcode"
57 | }
58 | }
--------------------------------------------------------------------------------
/ProjectSettings/NavMeshAreas.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!126 &1
4 | NavMeshProjectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | areas:
8 | - name: Walkable
9 | cost: 1
10 | - name: Not Walkable
11 | cost: 1
12 | - name: Jump
13 | cost: 2
14 | - name:
15 | cost: 1
16 | - name:
17 | cost: 1
18 | - name:
19 | cost: 1
20 | - name:
21 | cost: 1
22 | - name:
23 | cost: 1
24 | - name:
25 | cost: 1
26 | - name:
27 | cost: 1
28 | - name:
29 | cost: 1
30 | - name:
31 | cost: 1
32 | - name:
33 | cost: 1
34 | - name:
35 | cost: 1
36 | - name:
37 | cost: 1
38 | - name:
39 | cost: 1
40 | - name:
41 | cost: 1
42 | - name:
43 | cost: 1
44 | - name:
45 | cost: 1
46 | - name:
47 | cost: 1
48 | - name:
49 | cost: 1
50 | - name:
51 | cost: 1
52 | - name:
53 | cost: 1
54 | - name:
55 | cost: 1
56 | - name:
57 | cost: 1
58 | - name:
59 | cost: 1
60 | - name:
61 | cost: 1
62 | - name:
63 | cost: 1
64 | - name:
65 | cost: 1
66 | - name:
67 | cost: 1
68 | - name:
69 | cost: 1
70 | - name:
71 | cost: 1
72 |
--------------------------------------------------------------------------------
/iOS/Override_iOS/Override_iOS/DeepLink.m:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2017 eppz! mobile, Gergely Borbás (SP)
3 | //
4 | // http://www.twitter.com/_eppz
5 | //
6 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
7 | // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
8 | // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
9 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
10 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
11 | // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 | //
13 |
14 | #import "DeepLink.h"
15 |
16 |
17 | __strong DeepLink *_instance;
18 |
19 |
20 | @implementation DeepLink
21 |
22 |
23 | +(void)load
24 | {
25 | NSLog(@"[DeepLink load]");
26 | _instance = [DeepLink new];
27 | }
28 |
29 | +(DeepLink*)instance
30 | { return _instance; }
31 |
32 | -(instancetype)init
33 | {
34 | self = [super init];
35 | if (self) [self reset];
36 | return self;
37 | }
38 |
39 | -(void)reset
40 | {
41 | self.URL = [NSString new];
42 | self.sourceAppliaction = [NSString new];
43 | self.annotation = [NSDictionary new];
44 | }
45 |
46 | @end
47 |
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX/Override_OSX.h:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2017 eppz! mobile, Gergely Borbás (SP)
3 | //
4 | // http://www.twitter.com/_eppz
5 | //
6 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
7 | // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
8 | // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
9 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
10 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
11 | // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 | //
13 |
14 | #import
15 | #import
16 | #import
17 |
18 | //! Project version number for Override_OSX.
19 | FOUNDATION_EXPORT double Override_OSXVersionNumber;
20 |
21 | //! Project version string for Override_OSX.
22 | FOUNDATION_EXPORT const unsigned char Override_OSXVersionString[];
23 |
24 | // In this header, you should import all the public headers of your framework using statements like #import
25 |
26 | #import "EPPZSwizzler.h"
27 | #import "OverrideAppDelegate.h"
28 |
29 |
30 | @interface Override_OSX : NSObject
31 | @end
32 |
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX/OverrideAppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2016 eppz! mobile, Gergely Borbás (SP)
3 | //
4 | // http://www.twitter.com/_eppz
5 | //
6 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
7 | // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
8 | // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
9 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
10 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
11 | // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 | //
13 |
14 | #import "OverrideAppDelegate.h"
15 |
16 |
17 | @implementation OverrideAppDelegate
18 |
19 |
20 | #pragma mark Override implementations
21 |
22 | -(void)applicationDidFinishLaunching:(NSNotification*) notification
23 | {
24 | NSLog(@"[OverrideAppDelegate applicationDidFinishLaunching:%@]", notification);
25 | return [self _original_saved_by_Override_applicationDidFinishLaunching:notification];
26 | }
27 |
28 |
29 | #pragma mark Original implementation placeholders
30 |
31 | -(void)_original_saved_by_Override_applicationDidFinishLaunching:(NSNotification*) notification
32 | { return; }
33 |
34 |
35 | @end
36 |
--------------------------------------------------------------------------------
/Assets/Plugins/DeepLink.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2016 eppz! mobile, Gergely Borbás (SP)
3 | //
4 | // http://www.twitter.com/_eppz
5 | //
6 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
7 | // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
8 | // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
9 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
10 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
11 | // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 | //
13 |
14 | using UnityEngine;
15 | using UnityEngine.UI;
16 | using System.Runtime.InteropServices;
17 |
18 |
19 | public class DeepLink : MonoBehaviour
20 | {
21 |
22 |
23 | public Text label;
24 |
25 |
26 | #if !UNITY_EDITOR && (UNITY_IOS || UNITY_STANDALONE_OSX)
27 |
28 | [DllImport("__Internal")]
29 | static extern void DeepLink_Reset();
30 |
31 | [DllImport("__Internal")]
32 | static extern string DeepLink_GetURL();
33 |
34 | [DllImport("__Internal")]
35 | static extern string DeepLink_GetSourceApplication();
36 |
37 |
38 | void Update()
39 | {
40 | if (DeepLink_GetURL() == "") return;
41 | label.text = DeepLink_GetURL().Replace("override://", "");
42 | DeepLink_Reset();
43 | }
44 |
45 | #endif
46 |
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/ProjectSettings/Physics2DSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!19 &1
4 | Physics2DSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Gravity: {x: 0, y: -9.81}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_VelocityIterations: 8
10 | m_PositionIterations: 3
11 | m_VelocityThreshold: 1
12 | m_MaxLinearCorrection: 0.2
13 | m_MaxAngularCorrection: 8
14 | m_MaxTranslationSpeed: 100
15 | m_MaxRotationSpeed: 360
16 | m_MinPenetrationForPenalty: 0.01
17 | m_BaumgarteScale: 0.2
18 | m_BaumgarteTimeOfImpactScale: 0.75
19 | m_TimeToSleep: 0.5
20 | m_LinearSleepTolerance: 0.01
21 | m_AngularSleepTolerance: 2
22 | m_QueriesHitTriggers: 1
23 | m_QueriesStartInColliders: 1
24 | m_ChangeStopsCallbacks: 0
25 | m_AlwaysShowColliders: 0
26 | m_ShowColliderSleep: 1
27 | m_ShowColliderContacts: 0
28 | m_ShowColliderAABB: 0
29 | m_ContactArrowScale: 0.2
30 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
31 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
32 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
33 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
34 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
35 |
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX_Sandbox/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleURLTypes
24 |
25 |
26 | CFBundleTypeRole
27 | Editor
28 | CFBundleURLSchemes
29 |
30 | overridesandbox
31 |
32 |
33 |
34 | CFBundleVersion
35 | 1
36 | LSMinimumSystemVersion
37 | $(MACOSX_DEPLOYMENT_TARGET)
38 | NSHumanReadableCopyright
39 | Copyright © 2017 eppz!. All rights reserved.
40 | NSMainStoryboardFile
41 | Main
42 | NSPrincipalClass
43 | NSApplication
44 |
45 |
46 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "files.exclude":
3 | {
4 | "**/.DS_Store":true,
5 | "**/.git":true,
6 | "**/.gitignore":true,
7 | "**/.gitmodules":true,
8 | "**/*.booproj":true,
9 | "**/*.pidb":true,
10 | "**/*.suo":true,
11 | "**/*.user":true,
12 | "**/*.userprefs":true,
13 | "**/*.unityproj":true,
14 | "**/*.dll":true,
15 | "**/*.exe":true,
16 | "**/*.pdf":true,
17 | "**/*.mid":true,
18 | "**/*.midi":true,
19 | "**/*.wav":true,
20 | "**/*.gif":true,
21 | "**/*.ico":true,
22 | "**/*.jpg":true,
23 | "**/*.jpeg":true,
24 | "**/*.png":true,
25 | "**/*.psd":true,
26 | "**/*.tga":true,
27 | "**/*.tif":true,
28 | "**/*.tiff":true,
29 | "**/*.3ds":true,
30 | "**/*.3DS":true,
31 | "**/*.fbx":true,
32 | "**/*.FBX":true,
33 | "**/*.lxo":true,
34 | "**/*.LXO":true,
35 | "**/*.ma":true,
36 | "**/*.MA":true,
37 | "**/*.obj":true,
38 | "**/*.OBJ":true,
39 | "**/*.asset":true,
40 | "**/*.cubemap":true,
41 | "**/*.flare":true,
42 | "**/*.mat":true,
43 | "**/*.meta":true,
44 | "**/*.prefab":true,
45 | "**/*.unity":true,
46 | "build/":true,
47 | "Build/":true,
48 | "Library/":true,
49 | "library/":true,
50 | "obj/":true,
51 | "Obj/":true,
52 | "ProjectSettings/":true,
53 | "temp/":true,
54 | "Temp/":true
55 | }
56 | }
--------------------------------------------------------------------------------
/Assets/Plugins/libOverride_iOS.a.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5663d422986504565bc7072197d5eb6c
3 | timeCreated: 1494101504
4 | licenseType: Free
5 | PluginImporter:
6 | serializedVersion: 1
7 | iconMap: {}
8 | executionOrder: {}
9 | isPreloaded: 0
10 | isOverridable: 0
11 | platformData:
12 | Android:
13 | enabled: 0
14 | settings:
15 | CPU: ARMv7
16 | Any:
17 | enabled: 0
18 | settings:
19 | Exclude Android: 1
20 | Exclude Editor: 1
21 | Exclude Linux: 1
22 | Exclude Linux64: 1
23 | Exclude LinuxUniversal: 1
24 | Exclude OSXIntel: 1
25 | Exclude OSXIntel64: 1
26 | Exclude OSXUniversal: 1
27 | Exclude Win: 1
28 | Exclude Win64: 1
29 | Exclude iOS: 0
30 | Editor:
31 | enabled: 0
32 | settings:
33 | CPU: AnyCPU
34 | DefaultValueInitialized: true
35 | OS: AnyOS
36 | Linux:
37 | enabled: 0
38 | settings:
39 | CPU: x86
40 | Linux64:
41 | enabled: 0
42 | settings:
43 | CPU: x86_64
44 | LinuxUniversal:
45 | enabled: 0
46 | settings:
47 | CPU: None
48 | OSXIntel:
49 | enabled: 0
50 | settings:
51 | CPU: AnyCPU
52 | OSXIntel64:
53 | enabled: 0
54 | settings:
55 | CPU: AnyCPU
56 | OSXUniversal:
57 | enabled: 0
58 | settings:
59 | CPU: None
60 | Win:
61 | enabled: 0
62 | settings:
63 | CPU: AnyCPU
64 | Win64:
65 | enabled: 0
66 | settings:
67 | CPU: AnyCPU
68 | iOS:
69 | enabled: 1
70 | settings:
71 | CompileFlags:
72 | FrameworkDependencies:
73 | userData:
74 | assetBundleName:
75 | assetBundleVariant:
76 |
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX/DeepLink.m:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2017 eppz! mobile, Gergely Borbás (SP)
3 | //
4 | // http://www.twitter.com/_eppz
5 | //
6 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
7 | // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
8 | // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
9 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
10 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
11 | // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 | //
13 |
14 | #import "DeepLink.h"
15 |
16 |
17 | __strong DeepLink *_instance;
18 |
19 |
20 | @implementation DeepLink
21 |
22 |
23 | +(void)load
24 | {
25 | NSLog(@"[DeepLink load]");
26 | _instance = [DeepLink new];
27 | [[NSAppleEventManager sharedAppleEventManager] setEventHandler:_instance
28 | andSelector:@selector(handleGetURLEvent:withReplyEvent:)
29 | forEventClass:kInternetEventClass
30 | andEventID:kAEGetURL];
31 | }
32 |
33 | +(DeepLink*)instance
34 | { return _instance; }
35 |
36 | -(instancetype)init
37 | {
38 | self = [super init];
39 | if (self) [self reset];
40 | return self;
41 | }
42 |
43 | -(void)reset
44 | {
45 | self.URL = [NSString new];
46 | self.sourceAppliaction = [NSString new];
47 | self.annotation = [NSDictionary new];
48 | }
49 |
50 | -(void)handleGetURLEvent:(NSAppleEventDescriptor*) event withReplyEvent:(NSAppleEventDescriptor*) replyEvent
51 | {
52 | NSLog(@"[DeepLink handleGetURLEvent:%@ withReplyEvent:%@]", event, replyEvent);
53 | self.URL = [event paramDescriptorForKeyword:keyDirectObject].stringValue;
54 | NSLog(@"[[DeepLink URL] %@]", self.URL);
55 | }
56 |
57 | @end
58 |
--------------------------------------------------------------------------------
/iOS/Override_iOS/Override_iOS/OverrideAppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2016 eppz! mobile, Gergely Borbás (SP)
3 | //
4 | // http://www.twitter.com/_eppz
5 | //
6 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
7 | // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
8 | // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
9 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
10 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
11 | // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 | //
13 |
14 | #import
15 | #import
16 | #import "Override_iOS.h"
17 | #import "DeepLink.h"
18 |
19 |
20 | @interface OverrideAppDelegate : NSObject
21 |
22 |
23 | -(BOOL)application:(UIApplication*) application didFinishLaunchingWithOptions:(NSDictionary*) launchOptions;
24 | -(BOOL)application:(UIApplication*) application
25 | openURL:(NSURL*) url
26 | options:(NSDictionary*) options;
27 | -(BOOL)application:(UIApplication*) application
28 | openURL:(NSURL*) url
29 | sourceApplication:(NSString*) sourceApplication
30 | annotation:(id) annotation;
31 |
32 | -(BOOL)_original_saved_by_Override_application:(UIApplication*) application
33 | didFinishLaunchingWithOptions:(NSDictionary*) launchOptions;
34 | -(BOOL)_original_saved_by_Override_application:(UIApplication*) application
35 | openURL:(NSURL*) url
36 | options:(NSDictionary*) options;
37 | -(BOOL)_original_saved_by_Override_application:(UIApplication*) application
38 | openURL:(NSURL*) url
39 | sourceApplication:(NSString*) sourceApplication
40 | annotation:(id) annotation;
41 |
42 |
43 | @end
44 |
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX/Override_OSX.m:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2017 eppz! mobile, Gergely Borbás (SP)
3 | //
4 | // http://www.twitter.com/_eppz
5 | //
6 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
7 | // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
8 | // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
9 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
10 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
11 | // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 | //
13 |
14 | #import "Override_OSX.h"
15 |
16 |
17 | @implementation Override_OSX
18 |
19 |
20 | +(void)load
21 | {
22 | NSLog(@"[Override_OSX load]");
23 | [self swizzle];
24 | }
25 |
26 | +(void)swizzle
27 | {
28 | NSLog(@"[Override_OSX swizzle]");
29 | [self replaceAppDelegateMethod:@selector(applicationDidFinishLaunching:)
30 | fromClass:OverrideAppDelegate.class
31 | savingOriginalTo:@selector(_original_saved_by_Override_applicationDidFinishLaunching:)];
32 |
33 | }
34 |
35 | +(void)replaceAppDelegateMethod:(SEL) unitySelector
36 | fromClass:(Class) overrideAppDelegate
37 | savingOriginalTo:(SEL) savingOriginalSelector
38 | {
39 | // The Unity base app controller class (the class name stored in `AppControllerClassName`).
40 | Class unityAppDelegate = NSClassFromString(@"PlayerAppDelegate");
41 |
42 | // See log messages for the sake of this tutorial.
43 | [EPPZSwizzler setLogging:YES];
44 |
45 | // Add empty placholder to Unity app delegate.
46 | [EPPZSwizzler addInstanceMethod:savingOriginalSelector
47 | toClass:unityAppDelegate
48 | fromClass:overrideAppDelegate];
49 |
50 | // Save the original Unity app delegate implementation into.
51 | [EPPZSwizzler swapInstanceMethod:savingOriginalSelector
52 | withInstanceMethod:unitySelector
53 | ofClass:unityAppDelegate];
54 |
55 | // Replace Unity app delegate with ours.
56 | [EPPZSwizzler replaceInstanceMethod:unitySelector
57 | ofClass:unityAppDelegate
58 | fromClass:overrideAppDelegate];
59 | }
60 |
61 |
62 | @end
63 |
--------------------------------------------------------------------------------
/ProjectSettings/GraphicsSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!30 &1
4 | GraphicsSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 9
7 | m_Deferred:
8 | m_Mode: 1
9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
10 | m_DeferredReflections:
11 | m_Mode: 1
12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
13 | m_ScreenSpaceShadows:
14 | m_Mode: 1
15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
16 | m_LegacyDeferred:
17 | m_Mode: 1
18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
19 | m_DepthNormals:
20 | m_Mode: 1
21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
22 | m_MotionVectors:
23 | m_Mode: 1
24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
25 | m_LightHalo:
26 | m_Mode: 1
27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
28 | m_LensFlare:
29 | m_Mode: 1
30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
31 | m_AlwaysIncludedShaders:
32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
38 | - {fileID: 10782, guid: 0000000000000000f000000000000000, type: 0}
39 | m_PreloadedShaders: []
40 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
41 | type: 0}
42 | m_TierSettings_Tier1:
43 | renderingPath: 1
44 | useCascadedShadowMaps: 1
45 | m_TierSettings_Tier2:
46 | renderingPath: 1
47 | useCascadedShadowMaps: 1
48 | m_TierSettings_Tier3:
49 | renderingPath: 1
50 | useCascadedShadowMaps: 1
51 | m_DefaultRenderingPath: 1
52 | m_DefaultMobileRenderingPath: 1
53 | m_TierSettings: []
54 | m_LightmapStripping: 0
55 | m_FogStripping: 0
56 | m_LightmapKeepPlain: 1
57 | m_LightmapKeepDirCombined: 1
58 | m_LightmapKeepDirSeparate: 1
59 | m_LightmapKeepDynamicPlain: 1
60 | m_LightmapKeepDynamicDirCombined: 1
61 | m_LightmapKeepDynamicDirSeparate: 1
62 | m_FogKeepLinear: 1
63 | m_FogKeepExp: 1
64 | m_FogKeepExp2: 1
65 |
--------------------------------------------------------------------------------
/Assets/Editor/BuildPostProcessor.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2017 eppz! mobile, Gergely Borbás (SP)
3 | //
4 | // http://www.twitter.com/_eppz
5 | //
6 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
7 | // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
8 | // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
9 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
10 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
11 | // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 | //
13 |
14 | using System.IO;
15 | using UnityEngine;
16 | using UnityEditor;
17 | using UnityEditor.Callbacks;
18 | using UnityEditor.iOS.Xcode;
19 |
20 |
21 | public class BuildPostProcessor
22 | {
23 |
24 |
25 | [PostProcessBuildAttribute(1)]
26 | public static void OnPostProcessBuild(BuildTarget target, string path)
27 | {
28 | if (target == BuildTarget.iOS)
29 | {
30 | // Read.
31 | string projectPath = PBXProject.GetPBXProjectPath(path);
32 | PBXProject project = new PBXProject();
33 | project.ReadFromString(File.ReadAllText(projectPath));
34 | string targetName = PBXProject.GetUnityTargetName();
35 | string projectTarget = project.TargetGuidByName(targetName);
36 |
37 | AddFrameworks(project, projectTarget);
38 |
39 | // Write.
40 | File.WriteAllText(projectPath, project.WriteToString());
41 | }
42 |
43 | if (target == BuildTarget.StandaloneOSXIntel ||
44 | target == BuildTarget.StandaloneOSXIntel64 ||
45 | target == BuildTarget.StandaloneOSXUniversal)
46 | {
47 | // Read.
48 | string plistDocumentPath = path + "/Contents/Info.plist";
49 | PlistDocument plistDocument = new PlistDocument();
50 | plistDocument.ReadFromString(File.ReadAllText(plistDocumentPath));
51 | PlistElementDict rootElement = plistDocument.root;
52 |
53 | // Add scheme.
54 | PlistElementDict urlSchemeArrayElement = rootElement.CreateArray("CFBundleURLTypes").AddDict();
55 | urlSchemeArrayElement.SetString("CFBundleURLName", "");
56 | urlSchemeArrayElement.CreateArray("CFBundleURLSchemes").AddString("override");
57 |
58 | // Write.
59 | File.WriteAllText(plistDocumentPath, plistDocument.WriteToString());
60 | }
61 | }
62 |
63 | static void AddFrameworks(PBXProject project, string target)
64 | {
65 | // Add `-ObjC` to "Other Linker Flags".
66 | project.AddBuildProperty(target, "OTHER_LDFLAGS", "-ObjC");
67 | }
68 | }
--------------------------------------------------------------------------------
/iOS/Override_iOS/Override_iOS/Override_iOS.m:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2017 eppz! mobile, Gergely Borbás (SP)
3 | //
4 | // http://www.twitter.com/_eppz
5 | //
6 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
7 | // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
8 | // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
9 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
10 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
11 | // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 | //
13 |
14 | #import "Override_iOS.h"
15 |
16 |
17 | @implementation Override_iOS
18 |
19 |
20 | +(void)load
21 | {
22 | NSLog(@"[Override_iOS load]");
23 | [self swizzle];
24 | }
25 |
26 | +(void)swizzle
27 | {
28 | NSLog(@"[Override_iOS swizzle]");
29 | [self replaceAppDelegateMethod:@selector(application:didFinishLaunchingWithOptions:)
30 | fromClass:OverrideAppDelegate.class
31 | savingOriginalTo:@selector(_original_saved_by_Override_application:didFinishLaunchingWithOptions:)];
32 |
33 | [self replaceAppDelegateMethod:@selector(application:openURL:options:)
34 | fromClass:OverrideAppDelegate.class
35 | savingOriginalTo:@selector(_original_saved_by_Override_application:openURL:options:)];
36 |
37 | [self replaceAppDelegateMethod:@selector(application:openURL:sourceApplication:annotation:)
38 | fromClass:OverrideAppDelegate.class
39 | savingOriginalTo:@selector(_original_saved_by_Override_application:openURL:sourceApplication:annotation:)];
40 | }
41 |
42 | +(void)replaceAppDelegateMethod:(SEL) unitySelector
43 | fromClass:(Class) overrideAppDelegate
44 | savingOriginalTo:(SEL) savingOriginalSelector
45 | {
46 | // The Unity base app controller class (the class name stored in `AppControllerClassName`).
47 | Class unityAppDelegate = NSClassFromString(@"UnityAppController");
48 |
49 | // See log messages for the sake of this tutorial.
50 | [EPPZSwizzler setLogging:YES];
51 |
52 | // Add empty placholder to Unity app delegate.
53 | [EPPZSwizzler addInstanceMethod:savingOriginalSelector
54 | toClass:unityAppDelegate
55 | fromClass:overrideAppDelegate];
56 |
57 | // Save the original Unity app delegate implementation into.
58 | [EPPZSwizzler swapInstanceMethod:savingOriginalSelector
59 | withInstanceMethod:unitySelector
60 | ofClass:unityAppDelegate];
61 |
62 | // Replace Unity app delegate with ours.
63 | [EPPZSwizzler replaceInstanceMethod:unitySelector
64 | ofClass:unityAppDelegate
65 | fromClass:overrideAppDelegate];
66 | }
67 |
68 |
69 | @end
70 |
--------------------------------------------------------------------------------
/iOS/Override_iOS/Override_iOS.xcodeproj/xcuserdata/eppz.xcuserdatad/xcschemes/Override_iOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
34 |
35 |
45 |
46 |
52 |
53 |
54 |
55 |
56 |
57 |
63 |
64 |
70 |
71 |
72 |
73 |
75 |
76 |
79 |
80 |
81 |
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX.xcodeproj/xcuserdata/eppz.xcuserdatad/xcschemes/Override_OSX.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
34 |
35 |
45 |
46 |
52 |
53 |
54 |
55 |
56 |
57 |
63 |
64 |
70 |
71 |
72 |
73 |
75 |
76 |
79 |
80 |
81 |
--------------------------------------------------------------------------------
/iOS/Override_iOS/Override_iOS/OverrideAppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) 2016 eppz! mobile, Gergely Borbás (SP)
3 | //
4 | // http://www.twitter.com/_eppz
5 | //
6 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
7 | // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
8 | // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
9 | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
10 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
11 | // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 | //
13 |
14 | #import "OverrideAppDelegate.h"
15 |
16 |
17 | @implementation OverrideAppDelegate
18 |
19 |
20 | #pragma mark Override implementations
21 |
22 | -(BOOL)application:(UIApplication*) application didFinishLaunchingWithOptions:(NSDictionary*) launchOptions
23 | {
24 | NSLog(@"[OverrideAppDelegate application:%@ didFinishLaunchingWithOptions:%@]", application, launchOptions);
25 | return [self _original_saved_by_Override_application:application
26 | didFinishLaunchingWithOptions:launchOptions];
27 | }
28 |
29 | -(BOOL)application:(UIApplication*) application
30 | openURL:(NSURL*) url
31 | options:(NSDictionary*) options
32 | {
33 | NSLog(@"[OverrideAppDelegate application:%@ openURL:%@ options:%@]", application, url, options);
34 | [DeepLink instance].URL = url.absoluteString;
35 | [DeepLink instance].sourceAppliaction = options[UIApplicationOpenURLOptionsSourceApplicationKey];
36 | [DeepLink instance].annotation = options[UIApplicationOpenURLOptionsAnnotationKey];
37 | return [self _original_saved_by_Override_application:application
38 | openURL:url
39 | options:options];
40 | }
41 |
42 | -(BOOL)application:(UIApplication*) application
43 | openURL:(NSURL*) url
44 | sourceApplication:(NSString*) sourceApplication
45 | annotation:(id) annotation
46 | {
47 | NSLog(@"[OverrideAppDelegate application:%@ openURL:%@ sourceApplication:%@ annotation:%@]", application, url, sourceApplication, annotation);
48 | [DeepLink instance].URL = url.absoluteString;
49 | [DeepLink instance].sourceAppliaction = sourceApplication;
50 | [DeepLink instance].annotation = annotation;
51 | return [self _original_saved_by_Override_application:application
52 | openURL:url
53 | sourceApplication:sourceApplication
54 | annotation:(annotation) ? annotation : [NSDictionary new]];
55 | }
56 |
57 |
58 | #pragma mark Original implementation placeholders
59 |
60 | -(BOOL)_original_saved_by_Override_application:(UIApplication*) application
61 | didFinishLaunchingWithOptions:(NSDictionary*) launchOptions
62 | { return YES; }
63 |
64 |
65 | -(BOOL)_original_saved_by_Override_application:(UIApplication*) application
66 | openURL:(NSURL*) url
67 | options:(NSDictionary*) options
68 | { return YES; }
69 |
70 |
71 | -(BOOL)_original_saved_by_Override_application:(UIApplication*) application
72 | openURL:(NSURL*) url
73 | sourceApplication:(NSString*) sourceApplication
74 | annotation:(id) annotation
75 | { return YES; }
76 |
77 |
78 | @end
79 |
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX.xcodeproj/xcuserdata/eppz.xcuserdatad/xcschemes/Override_OSX_Sandbox.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
43 |
44 |
54 |
56 |
62 |
63 |
64 |
65 |
66 |
67 |
73 |
75 |
81 |
82 |
83 |
84 |
86 |
87 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/ProjectSettings/QualitySettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!47 &1
4 | QualitySettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 5
7 | m_CurrentQuality: 5
8 | m_QualitySettings:
9 | - serializedVersion: 2
10 | name: Fastest
11 | pixelLightCount: 0
12 | shadows: 0
13 | shadowResolution: 0
14 | shadowProjection: 1
15 | shadowCascades: 1
16 | shadowDistance: 15
17 | shadowNearPlaneOffset: 3
18 | shadowCascade2Split: 0.33333334
19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
20 | blendWeights: 1
21 | textureQuality: 1
22 | anisotropicTextures: 0
23 | antiAliasing: 0
24 | softParticles: 0
25 | softVegetation: 0
26 | realtimeReflectionProbes: 0
27 | billboardsFaceCameraPosition: 0
28 | vSyncCount: 0
29 | lodBias: 0.3
30 | maximumLODLevel: 0
31 | particleRaycastBudget: 4
32 | asyncUploadTimeSlice: 2
33 | asyncUploadBufferSize: 4
34 | excludedTargetPlatforms: []
35 | - serializedVersion: 2
36 | name: Fast
37 | pixelLightCount: 0
38 | shadows: 0
39 | shadowResolution: 0
40 | shadowProjection: 1
41 | shadowCascades: 1
42 | shadowDistance: 20
43 | shadowNearPlaneOffset: 3
44 | shadowCascade2Split: 0.33333334
45 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
46 | blendWeights: 2
47 | textureQuality: 0
48 | anisotropicTextures: 0
49 | antiAliasing: 0
50 | softParticles: 0
51 | softVegetation: 0
52 | realtimeReflectionProbes: 0
53 | billboardsFaceCameraPosition: 0
54 | vSyncCount: 0
55 | lodBias: 0.4
56 | maximumLODLevel: 0
57 | particleRaycastBudget: 16
58 | asyncUploadTimeSlice: 2
59 | asyncUploadBufferSize: 4
60 | excludedTargetPlatforms: []
61 | - serializedVersion: 2
62 | name: Simple
63 | pixelLightCount: 1
64 | shadows: 1
65 | shadowResolution: 0
66 | shadowProjection: 1
67 | shadowCascades: 1
68 | shadowDistance: 20
69 | shadowNearPlaneOffset: 3
70 | shadowCascade2Split: 0.33333334
71 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
72 | blendWeights: 2
73 | textureQuality: 0
74 | anisotropicTextures: 1
75 | antiAliasing: 0
76 | softParticles: 0
77 | softVegetation: 0
78 | realtimeReflectionProbes: 0
79 | billboardsFaceCameraPosition: 0
80 | vSyncCount: 1
81 | lodBias: 0.7
82 | maximumLODLevel: 0
83 | particleRaycastBudget: 64
84 | asyncUploadTimeSlice: 2
85 | asyncUploadBufferSize: 4
86 | excludedTargetPlatforms: []
87 | - serializedVersion: 2
88 | name: Good
89 | pixelLightCount: 2
90 | shadows: 2
91 | shadowResolution: 1
92 | shadowProjection: 1
93 | shadowCascades: 2
94 | shadowDistance: 40
95 | shadowNearPlaneOffset: 3
96 | shadowCascade2Split: 0.33333334
97 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
98 | blendWeights: 2
99 | textureQuality: 0
100 | anisotropicTextures: 1
101 | antiAliasing: 0
102 | softParticles: 0
103 | softVegetation: 1
104 | realtimeReflectionProbes: 1
105 | billboardsFaceCameraPosition: 1
106 | vSyncCount: 1
107 | lodBias: 1
108 | maximumLODLevel: 0
109 | particleRaycastBudget: 256
110 | asyncUploadTimeSlice: 2
111 | asyncUploadBufferSize: 4
112 | excludedTargetPlatforms: []
113 | - serializedVersion: 2
114 | name: Beautiful
115 | pixelLightCount: 3
116 | shadows: 2
117 | shadowResolution: 2
118 | shadowProjection: 1
119 | shadowCascades: 2
120 | shadowDistance: 70
121 | shadowNearPlaneOffset: 3
122 | shadowCascade2Split: 0.33333334
123 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
124 | blendWeights: 4
125 | textureQuality: 0
126 | anisotropicTextures: 2
127 | antiAliasing: 2
128 | softParticles: 1
129 | softVegetation: 1
130 | realtimeReflectionProbes: 1
131 | billboardsFaceCameraPosition: 1
132 | vSyncCount: 1
133 | lodBias: 1.5
134 | maximumLODLevel: 0
135 | particleRaycastBudget: 1024
136 | asyncUploadTimeSlice: 2
137 | asyncUploadBufferSize: 4
138 | excludedTargetPlatforms: []
139 | - serializedVersion: 2
140 | name: Fantastic
141 | pixelLightCount: 4
142 | shadows: 2
143 | shadowResolution: 2
144 | shadowProjection: 1
145 | shadowCascades: 4
146 | shadowDistance: 150
147 | shadowNearPlaneOffset: 3
148 | shadowCascade2Split: 0.33333334
149 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
150 | blendWeights: 4
151 | textureQuality: 0
152 | anisotropicTextures: 2
153 | antiAliasing: 2
154 | softParticles: 1
155 | softVegetation: 1
156 | realtimeReflectionProbes: 1
157 | billboardsFaceCameraPosition: 1
158 | vSyncCount: 1
159 | lodBias: 2
160 | maximumLODLevel: 0
161 | particleRaycastBudget: 4096
162 | asyncUploadTimeSlice: 2
163 | asyncUploadBufferSize: 4
164 | excludedTargetPlatforms: []
165 | m_PerPlatformDefaultQuality:
166 | Android: 2
167 | Nintendo 3DS: 5
168 | PS4: 5
169 | PSM: 5
170 | PSP2: 2
171 | Samsung TV: 2
172 | Standalone: 5
173 | Tizen: 2
174 | Web: 5
175 | WebGL: 3
176 | WiiU: 5
177 | Windows Store Apps: 5
178 | XboxOne: 5
179 | iPhone: 2
180 | tvOS: 5
181 |
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX/EPPZSwizzler.h:
--------------------------------------------------------------------------------
1 | //
2 | // EPPZSwizzler.h
3 | // eppz!swizzler
4 | //
5 | // Created by Borbás Geri on 27/02/14
6 | // Copyright (c) 2013 eppz! development, LLC.
7 | //
8 | // follow http://www.twitter.com/_eppz
9 | //
10 | // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
11 | // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
12 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
13 | //
14 |
15 | #import
16 | #import
17 |
18 |
19 | typedef enum
20 | {
21 | assign = OBJC_ASSOCIATION_ASSIGN,
22 | nonatomic_retain = OBJC_ASSOCIATION_RETAIN_NONATOMIC,
23 | nonatomic_copy = OBJC_ASSOCIATION_COPY_NONATOMIC,
24 | retain = OBJC_ASSOCIATION_RETAIN,
25 | copy = OBJC_ASSOCIATION_COPY
26 | } EPPZSwizzlerProperryAssociationPolicy;
27 |
28 |
29 | @interface EPPZSwizzler : NSObject
30 |
31 |
32 | #pragma mark - Logging
33 |
34 |
35 | /*! Toggle swizzling logs. */
36 | +(void)setLogging:(BOOL) isOn;
37 |
38 | /*! Used for unit testing. */
39 | +(NSString*)latestErrorMessage;
40 |
41 |
42 | #pragma mark - Method swizzlers
43 |
44 |
45 | /*!
46 |
47 | Swaps instance method implementations.
48 |
49 | @param oneSelector A selector to swap its implementation.
50 | @param otherSelector Another selector to swap implementation with.
51 | @param class The class to operate on.
52 |
53 | */
54 | +(void)swapInstanceMethod:(SEL) oneSelector
55 | withInstanceMethod:(SEL) otherSelector
56 | ofClass:(Class) _class;
57 |
58 |
59 | /*!
60 |
61 | Swaps class method implementations.
62 |
63 | @param oneSelector A selector to swap its implementation.
64 | @param otherSelector Another selector to swap implementation with.
65 | @param class The class to operate on.
66 |
67 | */
68 | +(void)swapClassMethod:(SEL) oneSelector
69 | withClassMethod:(SEL) otherSelector
70 | ofClass:(Class) _class;
71 |
72 |
73 | /*!
74 |
75 | Replace class method implementation with implementation
76 | picked from another class (for the same method). Does nothing
77 | if the method is not implemented already on the target class.
78 |
79 | @param selector Selector to replace in target class, and to look for in source class.
80 | @param targetClass Class to operate on.
81 | @param sourceClass Class the implementation is picked from.
82 |
83 | */
84 | +(void)replaceClassMethod:(SEL) selector
85 | ofClass:(Class) targetClass
86 | fromClass:(Class) sourceClass;
87 |
88 |
89 | /*!
90 |
91 | Replace instance method implementation with implementation
92 | picked from another class (for the same method). Does nothing
93 | if the method is not implemented already on the target class.
94 |
95 | @param selector Selector to replace in target class, and to look for in source class.
96 | @param targetClass Class to operate on.
97 | @param sourceClass Class the implementation is picked from.
98 |
99 | */
100 | +(void)replaceInstanceMethod:(SEL) selector
101 | ofClass:(Class) targetClass
102 | fromClass:(Class) sourceClass;
103 |
104 |
105 | /*!
106 |
107 | Add class method implementation with implementation
108 | picked from another class (for the same method). Does
109 | nothing if the method already exist on the target class.
110 |
111 | @param selector Selector to replace in target class, and to look for in source class.
112 | @param targetClass Class to operate on.
113 | @param sourceClass Class the implementation is picked from.
114 |
115 | */
116 | +(void)addClassMethod:(SEL) selector
117 | toClass:(Class) targetClass
118 | fromClass:(Class) sourceClass;
119 |
120 |
121 | /*!
122 |
123 | Add instance method implementation with implementation
124 | picked from another class (for the same method). Does
125 | nothing if the method already exist on the target class.
126 |
127 | @param selector Selector to replace in target class, and to look for in source class.
128 | @param targetClass Class to operate on.
129 | @param sourceClass Class the implementation is picked from.
130 |
131 | */
132 | +(void)addInstanceMethod:(SEL) selector
133 | toClass:(Class) targetClass
134 | fromClass:(Class) sourceClass;
135 |
136 |
137 | #pragma mark - Property swizzlers
138 |
139 |
140 | /*!
141 |
142 | Add property picked from another class (for the same method).
143 | Does nothing if the method already exist on the target class.
144 |
145 | @param propertyName Name of the property to look for in source class.
146 | @param targetClass Class to operate on.
147 | @param sourceClass Class the property is picked from.
148 |
149 | */
150 | +(void)addPropertyNamed:(NSString*) propertyName
151 | toClass:(Class) targetClass
152 | fromClass:(Class) sourceClass;
153 |
154 |
155 | /*!
156 |
157 | Creates (synthesizes) a property for the given class with the
158 | given properties.
159 |
160 | As it uses associated object API under the hood, you can only
161 | synthesize object properties (for now).
162 |
163 | To preserve IDE consistency, you may define
164 | the property in the class interface, or in a category for class,
165 | then mark property as \@dynamic in the implementation (like
166 | Core Data NSManagedObject properties).
167 |
168 | @param propertyName Name for the property to be created.
169 | @param kind Class to represent the kind of the property to be created.
170 | @param targetClass Class to operate on.
171 |
172 | */
173 | +(void)synthesizePropertyNamed:(NSString*) propertyName
174 | ofKind:(Class) kind
175 | forClass:(Class) targetClass
176 | withPolicy:(EPPZSwizzlerProperryAssociationPolicy) policy;
177 |
178 |
179 | @end
180 |
--------------------------------------------------------------------------------
/iOS/Override_iOS/Override_iOS/EPPZSwizzler.h:
--------------------------------------------------------------------------------
1 | //
2 | // EPPZSwizzler.h
3 | // eppz!swizzler
4 | //
5 | // Created by Borbás Geri on 27/02/14
6 | // Copyright (c) 2013 eppz! development, LLC.
7 | //
8 | // follow http://www.twitter.com/_eppz
9 | //
10 | // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
11 | // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
12 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
13 | //
14 |
15 | #import
16 | #import
17 |
18 |
19 | typedef enum
20 | {
21 | assign = OBJC_ASSOCIATION_ASSIGN,
22 | nonatomic_retain = OBJC_ASSOCIATION_RETAIN_NONATOMIC,
23 | nonatomic_copy = OBJC_ASSOCIATION_COPY_NONATOMIC,
24 | retain = OBJC_ASSOCIATION_RETAIN,
25 | copy = OBJC_ASSOCIATION_COPY
26 | } EPPZSwizzlerProperryAssociationPolicy;
27 |
28 |
29 | @interface EPPZSwizzler : NSObject
30 |
31 |
32 | #pragma mark - Logging
33 |
34 |
35 | /*! Toggle swizzling logs. */
36 | +(void)setLogging:(BOOL) isOn;
37 |
38 | /*! Used for unit testing. */
39 | +(NSString*)latestErrorMessage;
40 |
41 |
42 | #pragma mark - Method swizzlers
43 |
44 |
45 | /*!
46 |
47 | Swaps instance method implementations.
48 |
49 | @param oneSelector A selector to swap its implementation.
50 | @param otherSelector Another selector to swap implementation with.
51 | @param class The class to operate on.
52 |
53 | */
54 | +(void)swapInstanceMethod:(SEL) oneSelector
55 | withInstanceMethod:(SEL) otherSelector
56 | ofClass:(Class) _class;
57 |
58 |
59 | /*!
60 |
61 | Swaps class method implementations.
62 |
63 | @param oneSelector A selector to swap its implementation.
64 | @param otherSelector Another selector to swap implementation with.
65 | @param class The class to operate on.
66 |
67 | */
68 | +(void)swapClassMethod:(SEL) oneSelector
69 | withClassMethod:(SEL) otherSelector
70 | ofClass:(Class) _class;
71 |
72 |
73 | /*!
74 |
75 | Replace class method implementation with implementation
76 | picked from another class (for the same method). Does nothing
77 | if the method is not implemented already on the target class.
78 |
79 | @param selector Selector to replace in target class, and to look for in source class.
80 | @param targetClass Class to operate on.
81 | @param sourceClass Class the implementation is picked from.
82 |
83 | */
84 | +(void)replaceClassMethod:(SEL) selector
85 | ofClass:(Class) targetClass
86 | fromClass:(Class) sourceClass;
87 |
88 |
89 | /*!
90 |
91 | Replace instance method implementation with implementation
92 | picked from another class (for the same method). Does nothing
93 | if the method is not implemented already on the target class.
94 |
95 | @param selector Selector to replace in target class, and to look for in source class.
96 | @param targetClass Class to operate on.
97 | @param sourceClass Class the implementation is picked from.
98 |
99 | */
100 | +(void)replaceInstanceMethod:(SEL) selector
101 | ofClass:(Class) targetClass
102 | fromClass:(Class) sourceClass;
103 |
104 |
105 | /*!
106 |
107 | Add class method implementation with implementation
108 | picked from another class (for the same method). Does
109 | nothing if the method already exist on the target class.
110 |
111 | @param selector Selector to replace in target class, and to look for in source class.
112 | @param targetClass Class to operate on.
113 | @param sourceClass Class the implementation is picked from.
114 |
115 | */
116 | +(void)addClassMethod:(SEL) selector
117 | toClass:(Class) targetClass
118 | fromClass:(Class) sourceClass;
119 |
120 |
121 | /*!
122 |
123 | Add instance method implementation with implementation
124 | picked from another class (for the same method). Does
125 | nothing if the method already exist on the target class.
126 |
127 | @param selector Selector to replace in target class, and to look for in source class.
128 | @param targetClass Class to operate on.
129 | @param sourceClass Class the implementation is picked from.
130 |
131 | */
132 | +(void)addInstanceMethod:(SEL) selector
133 | toClass:(Class) targetClass
134 | fromClass:(Class) sourceClass;
135 |
136 |
137 | #pragma mark - Property swizzlers
138 |
139 |
140 | /*!
141 |
142 | Add property picked from another class (for the same method).
143 | Does nothing if the method already exist on the target class.
144 |
145 | @param propertyName Name of the property to look for in source class.
146 | @param targetClass Class to operate on.
147 | @param sourceClass Class the property is picked from.
148 |
149 | */
150 | +(void)addPropertyNamed:(NSString*) propertyName
151 | toClass:(Class) targetClass
152 | fromClass:(Class) sourceClass;
153 |
154 |
155 | /*!
156 |
157 | Creates (synthesizes) a property for the given class with the
158 | given properties.
159 |
160 | As it uses associated object API under the hood, you can only
161 | synthesize object properties (for now).
162 |
163 | To preserve IDE consistency, you may define
164 | the property in the class interface, or in a category for class,
165 | then mark property as \@dynamic in the implementation (like
166 | Core Data NSManagedObject properties).
167 |
168 | @param propertyName Name for the property to be created.
169 | @param kind Class to represent the kind of the property to be created.
170 | @param targetClass Class to operate on.
171 |
172 | */
173 | +(void)synthesizePropertyNamed:(NSString*) propertyName
174 | ofKind:(Class) kind
175 | forClass:(Class) targetClass
176 | withPolicy:(EPPZSwizzlerProperryAssociationPolicy) policy;
177 |
178 |
179 | @end
180 |
--------------------------------------------------------------------------------
/ProjectSettings/InputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!13 &1
4 | InputManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Axes:
8 | - serializedVersion: 3
9 | m_Name: Horizontal
10 | descriptiveName:
11 | descriptiveNegativeName:
12 | negativeButton: left
13 | positiveButton: right
14 | altNegativeButton: a
15 | altPositiveButton: d
16 | gravity: 3
17 | dead: 0.001
18 | sensitivity: 3
19 | snap: 1
20 | invert: 0
21 | type: 0
22 | axis: 0
23 | joyNum: 0
24 | - serializedVersion: 3
25 | m_Name: Vertical
26 | descriptiveName:
27 | descriptiveNegativeName:
28 | negativeButton: down
29 | positiveButton: up
30 | altNegativeButton: s
31 | altPositiveButton: w
32 | gravity: 3
33 | dead: 0.001
34 | sensitivity: 3
35 | snap: 1
36 | invert: 0
37 | type: 0
38 | axis: 0
39 | joyNum: 0
40 | - serializedVersion: 3
41 | m_Name: Fire1
42 | descriptiveName:
43 | descriptiveNegativeName:
44 | negativeButton:
45 | positiveButton: left ctrl
46 | altNegativeButton:
47 | altPositiveButton: mouse 0
48 | gravity: 1000
49 | dead: 0.001
50 | sensitivity: 1000
51 | snap: 0
52 | invert: 0
53 | type: 0
54 | axis: 0
55 | joyNum: 0
56 | - serializedVersion: 3
57 | m_Name: Fire2
58 | descriptiveName:
59 | descriptiveNegativeName:
60 | negativeButton:
61 | positiveButton: left alt
62 | altNegativeButton:
63 | altPositiveButton: mouse 1
64 | gravity: 1000
65 | dead: 0.001
66 | sensitivity: 1000
67 | snap: 0
68 | invert: 0
69 | type: 0
70 | axis: 0
71 | joyNum: 0
72 | - serializedVersion: 3
73 | m_Name: Fire3
74 | descriptiveName:
75 | descriptiveNegativeName:
76 | negativeButton:
77 | positiveButton: left shift
78 | altNegativeButton:
79 | altPositiveButton: mouse 2
80 | gravity: 1000
81 | dead: 0.001
82 | sensitivity: 1000
83 | snap: 0
84 | invert: 0
85 | type: 0
86 | axis: 0
87 | joyNum: 0
88 | - serializedVersion: 3
89 | m_Name: Jump
90 | descriptiveName:
91 | descriptiveNegativeName:
92 | negativeButton:
93 | positiveButton: space
94 | altNegativeButton:
95 | altPositiveButton:
96 | gravity: 1000
97 | dead: 0.001
98 | sensitivity: 1000
99 | snap: 0
100 | invert: 0
101 | type: 0
102 | axis: 0
103 | joyNum: 0
104 | - serializedVersion: 3
105 | m_Name: Mouse X
106 | descriptiveName:
107 | descriptiveNegativeName:
108 | negativeButton:
109 | positiveButton:
110 | altNegativeButton:
111 | altPositiveButton:
112 | gravity: 0
113 | dead: 0
114 | sensitivity: 0.1
115 | snap: 0
116 | invert: 0
117 | type: 1
118 | axis: 0
119 | joyNum: 0
120 | - serializedVersion: 3
121 | m_Name: Mouse Y
122 | descriptiveName:
123 | descriptiveNegativeName:
124 | negativeButton:
125 | positiveButton:
126 | altNegativeButton:
127 | altPositiveButton:
128 | gravity: 0
129 | dead: 0
130 | sensitivity: 0.1
131 | snap: 0
132 | invert: 0
133 | type: 1
134 | axis: 1
135 | joyNum: 0
136 | - serializedVersion: 3
137 | m_Name: Mouse ScrollWheel
138 | descriptiveName:
139 | descriptiveNegativeName:
140 | negativeButton:
141 | positiveButton:
142 | altNegativeButton:
143 | altPositiveButton:
144 | gravity: 0
145 | dead: 0
146 | sensitivity: 0.1
147 | snap: 0
148 | invert: 0
149 | type: 1
150 | axis: 2
151 | joyNum: 0
152 | - serializedVersion: 3
153 | m_Name: Horizontal
154 | descriptiveName:
155 | descriptiveNegativeName:
156 | negativeButton:
157 | positiveButton:
158 | altNegativeButton:
159 | altPositiveButton:
160 | gravity: 0
161 | dead: 0.19
162 | sensitivity: 1
163 | snap: 0
164 | invert: 0
165 | type: 2
166 | axis: 0
167 | joyNum: 0
168 | - serializedVersion: 3
169 | m_Name: Vertical
170 | descriptiveName:
171 | descriptiveNegativeName:
172 | negativeButton:
173 | positiveButton:
174 | altNegativeButton:
175 | altPositiveButton:
176 | gravity: 0
177 | dead: 0.19
178 | sensitivity: 1
179 | snap: 0
180 | invert: 1
181 | type: 2
182 | axis: 1
183 | joyNum: 0
184 | - serializedVersion: 3
185 | m_Name: Fire1
186 | descriptiveName:
187 | descriptiveNegativeName:
188 | negativeButton:
189 | positiveButton: joystick button 0
190 | altNegativeButton:
191 | altPositiveButton:
192 | gravity: 1000
193 | dead: 0.001
194 | sensitivity: 1000
195 | snap: 0
196 | invert: 0
197 | type: 0
198 | axis: 0
199 | joyNum: 0
200 | - serializedVersion: 3
201 | m_Name: Fire2
202 | descriptiveName:
203 | descriptiveNegativeName:
204 | negativeButton:
205 | positiveButton: joystick button 1
206 | altNegativeButton:
207 | altPositiveButton:
208 | gravity: 1000
209 | dead: 0.001
210 | sensitivity: 1000
211 | snap: 0
212 | invert: 0
213 | type: 0
214 | axis: 0
215 | joyNum: 0
216 | - serializedVersion: 3
217 | m_Name: Fire3
218 | descriptiveName:
219 | descriptiveNegativeName:
220 | negativeButton:
221 | positiveButton: joystick button 2
222 | altNegativeButton:
223 | altPositiveButton:
224 | gravity: 1000
225 | dead: 0.001
226 | sensitivity: 1000
227 | snap: 0
228 | invert: 0
229 | type: 0
230 | axis: 0
231 | joyNum: 0
232 | - serializedVersion: 3
233 | m_Name: Jump
234 | descriptiveName:
235 | descriptiveNegativeName:
236 | negativeButton:
237 | positiveButton: joystick button 3
238 | altNegativeButton:
239 | altPositiveButton:
240 | gravity: 1000
241 | dead: 0.001
242 | sensitivity: 1000
243 | snap: 0
244 | invert: 0
245 | type: 0
246 | axis: 0
247 | joyNum: 0
248 | - serializedVersion: 3
249 | m_Name: Submit
250 | descriptiveName:
251 | descriptiveNegativeName:
252 | negativeButton:
253 | positiveButton: return
254 | altNegativeButton:
255 | altPositiveButton: joystick button 0
256 | gravity: 1000
257 | dead: 0.001
258 | sensitivity: 1000
259 | snap: 0
260 | invert: 0
261 | type: 0
262 | axis: 0
263 | joyNum: 0
264 | - serializedVersion: 3
265 | m_Name: Submit
266 | descriptiveName:
267 | descriptiveNegativeName:
268 | negativeButton:
269 | positiveButton: enter
270 | altNegativeButton:
271 | altPositiveButton: space
272 | gravity: 1000
273 | dead: 0.001
274 | sensitivity: 1000
275 | snap: 0
276 | invert: 0
277 | type: 0
278 | axis: 0
279 | joyNum: 0
280 | - serializedVersion: 3
281 | m_Name: Cancel
282 | descriptiveName:
283 | descriptiveNegativeName:
284 | negativeButton:
285 | positiveButton: escape
286 | altNegativeButton:
287 | altPositiveButton: joystick button 1
288 | gravity: 1000
289 | dead: 0.001
290 | sensitivity: 1000
291 | snap: 0
292 | invert: 0
293 | type: 0
294 | axis: 0
295 | joyNum: 0
296 |
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX/EPPZSwizzler.m:
--------------------------------------------------------------------------------
1 | //
2 | // EPPZSwizzler.m
3 | // eppz!swizzler
4 | //
5 | // Created by Borbás Geri on 27/02/14
6 | // Copyright (c) 2013 eppz! development, LLC.
7 | //
8 | // follow http://www.twitter.com/_eppz
9 | //
10 | // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
11 | // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
12 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
13 | //
14 |
15 | #import "EPPZSwizzler.h"
16 |
17 |
18 | #define log(...) [self log:[NSString stringWithFormat:__VA_ARGS__]]
19 | #define error(...) [self error:[NSString stringWithFormat:__VA_ARGS__]]
20 |
21 |
22 | static BOOL _eppzSwizzlerLogging;
23 | static NSString *_eppzSwizzlerLatestErrorMessage;
24 |
25 |
26 | static char associationKeyKey;
27 |
28 |
29 | @interface EPPZSwizzler ()
30 | +(NSString*)setterMethodNameForPropertyName:(NSString*) propertyName;
31 | @end
32 |
33 |
34 | @implementation EPPZSwizzler
35 |
36 |
37 |
38 | #pragma mark - Logging
39 |
40 | +(void)setLogging:(BOOL) isOn
41 | { _eppzSwizzlerLogging = isOn; }
42 |
43 | +(void)log:(NSString*) message
44 | {
45 | if (_eppzSwizzlerLogging == NO) return; // Checks
46 | NSLog(@"%@", message); // Show
47 | }
48 |
49 | +(void)error:(NSString*) errorMessage
50 | {
51 | _eppzSwizzlerLatestErrorMessage = errorMessage; // Reference
52 |
53 | if (_eppzSwizzlerLogging == NO) return; // Checks
54 | NSLog(@"%@", errorMessage); // Show
55 | }
56 |
57 | +(NSString*)latestErrorMessage
58 | { return _eppzSwizzlerLatestErrorMessage; }
59 |
60 |
61 | #pragma mark - Method swizzlers
62 |
63 | +(void)swapInstanceMethod:(SEL) oneSelector
64 | withInstanceMethod:(SEL) otherSelector
65 | ofClass:(Class) class
66 | {
67 | // Get methods.
68 | Method oneMethod = class_getInstanceMethod(class, oneSelector);
69 | Method otherMethod = class_getInstanceMethod(class, otherSelector);
70 |
71 | // Checks.
72 | if (oneMethod == nil)
73 | { error(@"Instance method `%@` not found on class %@", NSStringFromSelector(oneSelector), class); return; };
74 | if (otherMethod == nil)
75 | { error(@"Instance method `%@` not found on class %@", NSStringFromSelector(otherSelector), class); return; };
76 |
77 | // Exchange.
78 | method_exchangeImplementations(oneMethod, otherMethod);
79 |
80 | log(@"Exchanged instance method `%@` with `%@` in %@", NSStringFromSelector(oneSelector), NSStringFromSelector(otherSelector), class);
81 | }
82 |
83 | +(void)swapClassMethod:(SEL) oneSelector
84 | withClassMethod:(SEL) otherSelector
85 | ofClass:(Class) class
86 | {
87 | // Get methods.
88 | Method oneMethod = class_getClassMethod(class, oneSelector);
89 | Method otherMethod = class_getClassMethod(class, otherSelector);
90 |
91 | // Checks.
92 | if (oneMethod == nil)
93 | { error(@"Class method `%@` not found on class %@", NSStringFromSelector(oneSelector), class); return; };
94 | if (otherMethod == nil)
95 | { error(@"Class method `%@` not found on class %@", NSStringFromSelector(otherSelector), class); return; };
96 |
97 | // Exchange.
98 | method_exchangeImplementations(oneMethod, otherMethod);
99 |
100 | log(@"Exchanged class method `%@` with `%@` in %@", NSStringFromSelector(oneSelector), NSStringFromSelector(otherSelector), class);
101 | }
102 |
103 | +(void)replaceClassMethod:(SEL) selector
104 | ofClass:(Class) targetClass
105 | fromClass:(Class) sourceClass
106 | {
107 | // Get methods.
108 | Method targetMethod = class_getClassMethod(targetClass, selector);
109 | Method sourceMethod = class_getClassMethod(sourceClass, selector);
110 |
111 | // Checks.
112 | if (sourceMethod == nil)
113 | { error(@"Class method `%@` not found on source class %@", NSStringFromSelector(selector), sourceClass); return; };
114 |
115 | if (targetMethod == nil)
116 | { error(@"Class method `%@` not found on target class %@", NSStringFromSelector(selector), targetClass); return; };
117 |
118 | // Replace target method.
119 | IMP previousTargetMethod = method_setImplementation(targetMethod,
120 | method_getImplementation(sourceMethod));
121 |
122 | log(@"Replaced method `%@` of %@ from %@ with %@", NSStringFromSelector(selector), sourceClass, targetClass, (previousTargetMethod) ? @"success" : @"error");
123 | }
124 |
125 | +(void)replaceInstanceMethod:(SEL) selector
126 | ofClass:(Class) targetClass
127 | fromClass:(Class) sourceClass
128 | {
129 | // Get methods.
130 | Method targetMethod = class_getInstanceMethod(targetClass, selector);
131 | Method sourceMethod = class_getInstanceMethod(sourceClass, selector);
132 |
133 | // Checks.
134 | if (sourceMethod == nil)
135 | { error(@"Instance method `%@` not found on source class %@", NSStringFromSelector(selector), sourceClass); return; };
136 |
137 | if (targetMethod == nil)
138 | { error(@"Instance method `%@` not found on target class %@", NSStringFromSelector(selector), targetClass); return; };
139 |
140 | // Replace target method.
141 | IMP previousTargetMethod = method_setImplementation(targetMethod,
142 | method_getImplementation(sourceMethod));
143 |
144 | log(@"Replaced instance method `%@` of %@ from %@ with %@", NSStringFromSelector(selector), sourceClass, targetClass, (previousTargetMethod) ? @"success" : @"error");
145 | }
146 |
147 | +(void)addClassMethod:(SEL) selector
148 | toClass:(Class) targetClass
149 | fromClass:(Class) sourceClass
150 | {
151 |
152 | // Get methods.
153 | Method method = class_getClassMethod(sourceClass, selector);
154 |
155 | // Checks.
156 | if (method == nil)
157 | { error(@"Class method `%@` not found on source class %@", NSStringFromSelector(selector), sourceClass); return; };
158 |
159 | targetClass = object_getClass((id)targetClass);
160 | BOOL success = class_addMethod(targetClass,
161 | selector,
162 | method_getImplementation(method),
163 | method_getTypeEncoding(method));
164 |
165 | log(@"Added class method `%@` of %@ to %@ with %@", NSStringFromSelector(selector), sourceClass, targetClass, (success) ? @"success" : @"error");
166 | }
167 |
168 | +(void)addInstanceMethod:(SEL) selector
169 | toClass:(Class) targetClass
170 | fromClass:(Class) sourceClass
171 | {
172 | [self addInstanceMethod:selector
173 | toClass:targetClass
174 | fromClass:sourceClass
175 | as:selector];
176 | }
177 |
178 | +(void)addInstanceMethod:(SEL) selector
179 | toClass:(Class) targetClass
180 | fromClass:(Class) sourceClass
181 | as:(SEL) targetSelector
182 | {
183 | // Get method.
184 | Method method = class_getInstanceMethod(sourceClass, selector);
185 |
186 | // Checks.
187 | if (method == nil)
188 | { error(@"Instance method `%@` not found on source class %@", NSStringFromSelector(selector), sourceClass); return; };
189 |
190 | // Add method.
191 | BOOL success = class_addMethod(targetClass,
192 | targetSelector,
193 | method_getImplementation(method),
194 | method_getTypeEncoding(method));
195 |
196 | log(@"Added instance method `%@` of %@ to %@ with %@", NSStringFromSelector(selector), sourceClass, targetClass, (success) ? @"success" : @"error");
197 | }
198 |
199 |
200 | #pragma mark - Property swizzlers
201 |
202 | +(NSString*)setterMethodNameForPropertyName:(NSString*) propertyName
203 | {
204 | // Checks.
205 | if (propertyName.length == 0) return propertyName;
206 |
207 | NSString *firstChar = [[propertyName substringToIndex:1] capitalizedString];
208 | NSString *andTheRest = [propertyName substringFromIndex:1];
209 | return [NSString stringWithFormat:@"set%@%@:", firstChar, andTheRest];
210 | }
211 |
212 | +(void)addPropertyNamed:(NSString*) propertyName
213 | toClass:(Class) targetClass
214 | fromClass:(Class) sourceClass
215 | {
216 | // Get property.
217 | const char *name = propertyName.UTF8String;
218 | objc_property_t property = class_getProperty(sourceClass, name);
219 | unsigned int attributesCount = 0;
220 | objc_property_attribute_t *attributes = property_copyAttributeList(property, &attributesCount);
221 |
222 | // Checks.
223 | if (property == nil)
224 | { error(@"Property `%@` not found on source class %@", propertyName, sourceClass); return; };
225 |
226 | // Add (or replace) property.
227 | BOOL success = class_addProperty(targetClass, name, attributes, attributesCount);
228 | if (success == NO)
229 | {
230 | class_replaceProperty(targetClass, name, attributes, attributesCount);
231 | log(@"Replaced property `%@` of %@ to %@ with %@", propertyName, sourceClass, targetClass, (success) ? @"success" : @"error");
232 | }
233 | else
234 | { log(@"Added property `%@` of %@ to %@ with %@", propertyName, sourceClass, targetClass, (success) ? @"success" : @"error"); }
235 |
236 | // Add getter.
237 | [self addInstanceMethod:NSSelectorFromString(propertyName) toClass:targetClass fromClass:sourceClass];
238 |
239 | // Add setter.
240 | NSString *setterMethodName = [self setterMethodNameForPropertyName:propertyName];
241 | [self addInstanceMethod:NSSelectorFromString(setterMethodName) toClass:targetClass fromClass:sourceClass];
242 | }
243 |
244 | +(void)synthesizePropertyNamed:(NSString*) propertyName
245 | ofKind:(Class) kind
246 | forClass:(Class) targetClass
247 | withPolicy:(EPPZSwizzlerProperryAssociationPolicy) policy
248 | {
249 | // Get type encoding.
250 | const char *typeEncoding = @encode(typeof(kind));
251 |
252 | // Associate the key for the property to the class itself.
253 | NSString *keyObject = [NSString stringWithFormat:@"%@Key", propertyName];
254 | void *key = (__bridge void*)keyObject;
255 | objc_setAssociatedObject(targetClass, &associationKeyKey, keyObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
256 |
257 | // Getter implementation.
258 | IMP getterImplementation = imp_implementationWithBlock(^(id self)
259 | { return (id)objc_getAssociatedObject(self, key); });
260 |
261 | // Setter implementation.
262 | IMP setterImplementation = imp_implementationWithBlock(^(id self, id value)
263 | { objc_setAssociatedObject(self, key, value, policy); });
264 |
265 | // Add getter.
266 | BOOL success = class_addMethod(targetClass,
267 | NSSelectorFromString(propertyName),
268 | getterImplementation,
269 | typeEncoding);
270 |
271 | log(@"Added synthesized getter `%@` to %@ with %@", propertyName, targetClass, (success) ? @"success" : @"error");
272 |
273 | // Add setter.
274 | NSString *setterMethodName = [self setterMethodNameForPropertyName:propertyName];
275 | success = class_addMethod(targetClass,
276 | NSSelectorFromString(setterMethodName),
277 | setterImplementation,
278 | typeEncoding);
279 |
280 | log(@"Added synthesized setter `%@` to %@ with %@", setterMethodName, targetClass, (success) ? @"success" : @"error");
281 | }
282 |
283 |
284 |
285 | @end
286 |
--------------------------------------------------------------------------------
/iOS/Override_iOS/Override_iOS/EPPZSwizzler.m:
--------------------------------------------------------------------------------
1 | //
2 | // EPPZSwizzler.m
3 | // eppz!swizzler
4 | //
5 | // Created by Borbás Geri on 27/02/14
6 | // Copyright (c) 2013 eppz! development, LLC.
7 | //
8 | // follow http://www.twitter.com/_eppz
9 | //
10 | // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
11 | // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
12 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
13 | //
14 |
15 | #import "EPPZSwizzler.h"
16 |
17 |
18 | #define log(...) [self log:[NSString stringWithFormat:__VA_ARGS__]]
19 | #define error(...) [self error:[NSString stringWithFormat:__VA_ARGS__]]
20 |
21 |
22 | static BOOL _eppzSwizzlerLogging;
23 | static NSString *_eppzSwizzlerLatestErrorMessage;
24 |
25 |
26 | static char associationKeyKey;
27 |
28 |
29 | @interface EPPZSwizzler ()
30 | +(NSString*)setterMethodNameForPropertyName:(NSString*) propertyName;
31 | @end
32 |
33 |
34 | @implementation EPPZSwizzler
35 |
36 |
37 |
38 | #pragma mark - Logging
39 |
40 | +(void)setLogging:(BOOL) isOn
41 | { _eppzSwizzlerLogging = isOn; }
42 |
43 | +(void)log:(NSString*) message
44 | {
45 | if (_eppzSwizzlerLogging == NO) return; // Checks
46 | NSLog(@"%@", message); // Show
47 | }
48 |
49 | +(void)error:(NSString*) errorMessage
50 | {
51 | _eppzSwizzlerLatestErrorMessage = errorMessage; // Reference
52 |
53 | if (_eppzSwizzlerLogging == NO) return; // Checks
54 | NSLog(@"%@", errorMessage); // Show
55 | }
56 |
57 | +(NSString*)latestErrorMessage
58 | { return _eppzSwizzlerLatestErrorMessage; }
59 |
60 |
61 | #pragma mark - Method swizzlers
62 |
63 | +(void)swapInstanceMethod:(SEL) oneSelector
64 | withInstanceMethod:(SEL) otherSelector
65 | ofClass:(Class) class
66 | {
67 | // Get methods.
68 | Method oneMethod = class_getInstanceMethod(class, oneSelector);
69 | Method otherMethod = class_getInstanceMethod(class, otherSelector);
70 |
71 | // Checks.
72 | if (oneMethod == nil)
73 | { error(@"Instance method `%@` not found on class %@", NSStringFromSelector(oneSelector), class); return; };
74 | if (otherMethod == nil)
75 | { error(@"Instance method `%@` not found on class %@", NSStringFromSelector(otherSelector), class); return; };
76 |
77 | // Exchange.
78 | method_exchangeImplementations(oneMethod, otherMethod);
79 |
80 | log(@"Exchanged instance method `%@` with `%@` in %@", NSStringFromSelector(oneSelector), NSStringFromSelector(otherSelector), class);
81 | }
82 |
83 | +(void)swapClassMethod:(SEL) oneSelector
84 | withClassMethod:(SEL) otherSelector
85 | ofClass:(Class) class
86 | {
87 | // Get methods.
88 | Method oneMethod = class_getClassMethod(class, oneSelector);
89 | Method otherMethod = class_getClassMethod(class, otherSelector);
90 |
91 | // Checks.
92 | if (oneMethod == nil)
93 | { error(@"Class method `%@` not found on class %@", NSStringFromSelector(oneSelector), class); return; };
94 | if (otherMethod == nil)
95 | { error(@"Class method `%@` not found on class %@", NSStringFromSelector(otherSelector), class); return; };
96 |
97 | // Exchange.
98 | method_exchangeImplementations(oneMethod, otherMethod);
99 |
100 | log(@"Exchanged class method `%@` with `%@` in %@", NSStringFromSelector(oneSelector), NSStringFromSelector(otherSelector), class);
101 | }
102 |
103 | +(void)replaceClassMethod:(SEL) selector
104 | ofClass:(Class) targetClass
105 | fromClass:(Class) sourceClass
106 | {
107 | // Get methods.
108 | Method targetMethod = class_getClassMethod(targetClass, selector);
109 | Method sourceMethod = class_getClassMethod(sourceClass, selector);
110 |
111 | // Checks.
112 | if (sourceMethod == nil)
113 | { error(@"Class method `%@` not found on source class %@", NSStringFromSelector(selector), sourceClass); return; };
114 |
115 | if (targetMethod == nil)
116 | { error(@"Class method `%@` not found on target class %@", NSStringFromSelector(selector), targetClass); return; };
117 |
118 | // Replace target method.
119 | IMP previousTargetMethod = method_setImplementation(targetMethod,
120 | method_getImplementation(sourceMethod));
121 |
122 | log(@"Replaced method `%@` of %@ from %@ with %@", NSStringFromSelector(selector), sourceClass, targetClass, (previousTargetMethod) ? @"success" : @"error");
123 | }
124 |
125 | +(void)replaceInstanceMethod:(SEL) selector
126 | ofClass:(Class) targetClass
127 | fromClass:(Class) sourceClass
128 | {
129 | // Get methods.
130 | Method targetMethod = class_getInstanceMethod(targetClass, selector);
131 | Method sourceMethod = class_getInstanceMethod(sourceClass, selector);
132 |
133 | // Checks.
134 | if (sourceMethod == nil)
135 | { error(@"Instance method `%@` not found on source class %@", NSStringFromSelector(selector), sourceClass); return; };
136 |
137 | if (targetMethod == nil)
138 | { error(@"Instance method `%@` not found on target class %@", NSStringFromSelector(selector), targetClass); return; };
139 |
140 | // Replace target method.
141 | IMP previousTargetMethod = method_setImplementation(targetMethod,
142 | method_getImplementation(sourceMethod));
143 |
144 | log(@"Replaced instance method `%@` of %@ from %@ with %@", NSStringFromSelector(selector), sourceClass, targetClass, (previousTargetMethod) ? @"success" : @"error");
145 | }
146 |
147 | +(void)addClassMethod:(SEL) selector
148 | toClass:(Class) targetClass
149 | fromClass:(Class) sourceClass
150 | {
151 |
152 | // Get methods.
153 | Method method = class_getClassMethod(sourceClass, selector);
154 |
155 | // Checks.
156 | if (method == nil)
157 | { error(@"Class method `%@` not found on source class %@", NSStringFromSelector(selector), sourceClass); return; };
158 |
159 | targetClass = object_getClass((id)targetClass);
160 | BOOL success = class_addMethod(targetClass,
161 | selector,
162 | method_getImplementation(method),
163 | method_getTypeEncoding(method));
164 |
165 | log(@"Added class method `%@` of %@ to %@ with %@", NSStringFromSelector(selector), sourceClass, targetClass, (success) ? @"success" : @"error");
166 | }
167 |
168 | +(void)addInstanceMethod:(SEL) selector
169 | toClass:(Class) targetClass
170 | fromClass:(Class) sourceClass
171 | {
172 | [self addInstanceMethod:selector
173 | toClass:targetClass
174 | fromClass:sourceClass
175 | as:selector];
176 | }
177 |
178 | +(void)addInstanceMethod:(SEL) selector
179 | toClass:(Class) targetClass
180 | fromClass:(Class) sourceClass
181 | as:(SEL) targetSelector
182 | {
183 | // Get method.
184 | Method method = class_getInstanceMethod(sourceClass, selector);
185 |
186 | // Checks.
187 | if (method == nil)
188 | { error(@"Instance method `%@` not found on source class %@", NSStringFromSelector(selector), sourceClass); return; };
189 |
190 | // Add method.
191 | BOOL success = class_addMethod(targetClass,
192 | targetSelector,
193 | method_getImplementation(method),
194 | method_getTypeEncoding(method));
195 |
196 | log(@"Added instance method `%@` of %@ to %@ with %@", NSStringFromSelector(selector), sourceClass, targetClass, (success) ? @"success" : @"error");
197 | }
198 |
199 |
200 | #pragma mark - Property swizzlers
201 |
202 | +(NSString*)setterMethodNameForPropertyName:(NSString*) propertyName
203 | {
204 | // Checks.
205 | if (propertyName.length == 0) return propertyName;
206 |
207 | NSString *firstChar = [[propertyName substringToIndex:1] capitalizedString];
208 | NSString *andTheRest = [propertyName substringFromIndex:1];
209 | return [NSString stringWithFormat:@"set%@%@:", firstChar, andTheRest];
210 | }
211 |
212 | +(void)addPropertyNamed:(NSString*) propertyName
213 | toClass:(Class) targetClass
214 | fromClass:(Class) sourceClass
215 | {
216 | // Get property.
217 | const char *name = propertyName.UTF8String;
218 | objc_property_t property = class_getProperty(sourceClass, name);
219 | unsigned int attributesCount = 0;
220 | objc_property_attribute_t *attributes = property_copyAttributeList(property, &attributesCount);
221 |
222 | // Checks.
223 | if (property == nil)
224 | { error(@"Property `%@` not found on source class %@", propertyName, sourceClass); return; };
225 |
226 | // Add (or replace) property.
227 | BOOL success = class_addProperty(targetClass, name, attributes, attributesCount);
228 | if (success == NO)
229 | {
230 | class_replaceProperty(targetClass, name, attributes, attributesCount);
231 | log(@"Replaced property `%@` of %@ to %@ with %@", propertyName, sourceClass, targetClass, (success) ? @"success" : @"error");
232 | }
233 | else
234 | { log(@"Added property `%@` of %@ to %@ with %@", propertyName, sourceClass, targetClass, (success) ? @"success" : @"error"); }
235 |
236 | // Add getter.
237 | [self addInstanceMethod:NSSelectorFromString(propertyName) toClass:targetClass fromClass:sourceClass];
238 |
239 | // Add setter.
240 | NSString *setterMethodName = [self setterMethodNameForPropertyName:propertyName];
241 | [self addInstanceMethod:NSSelectorFromString(setterMethodName) toClass:targetClass fromClass:sourceClass];
242 | }
243 |
244 | +(void)synthesizePropertyNamed:(NSString*) propertyName
245 | ofKind:(Class) kind
246 | forClass:(Class) targetClass
247 | withPolicy:(EPPZSwizzlerProperryAssociationPolicy) policy
248 | {
249 | // Get type encoding.
250 | const char *typeEncoding = @encode(__typeof__(kind));
251 |
252 | // Associate the key for the property to the class itself.
253 | NSString *keyObject = [NSString stringWithFormat:@"%@Key", propertyName];
254 | void *key = (__bridge void*)keyObject;
255 | objc_setAssociatedObject(targetClass, &associationKeyKey, keyObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
256 |
257 | // Getter implementation.
258 | IMP getterImplementation = imp_implementationWithBlock(^(id self)
259 | { return (id)objc_getAssociatedObject(self, key); });
260 |
261 | // Setter implementation.
262 | IMP setterImplementation = imp_implementationWithBlock(^(id self, id value)
263 | { objc_setAssociatedObject(self, key, value, policy); });
264 |
265 | // Add getter.
266 | BOOL success = class_addMethod(targetClass,
267 | NSSelectorFromString(propertyName),
268 | getterImplementation,
269 | typeEncoding);
270 |
271 | log(@"Added synthesized getter `%@` to %@ with %@", propertyName, targetClass, (success) ? @"success" : @"error");
272 |
273 | // Add setter.
274 | NSString *setterMethodName = [self setterMethodNameForPropertyName:propertyName];
275 | success = class_addMethod(targetClass,
276 | NSSelectorFromString(setterMethodName),
277 | setterImplementation,
278 | typeEncoding);
279 |
280 | log(@"Added synthesized setter `%@` to %@ with %@", setterMethodName, targetClass, (success) ? @"success" : @"error");
281 | }
282 |
283 |
284 |
285 | @end
286 |
--------------------------------------------------------------------------------
/iOS/Override_iOS/Override_iOS.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 552856361EBE63190043CD02 /* Override_iOS.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 552856351EBE63190043CD02 /* Override_iOS.h */; };
11 | 5528563F1EBE652C0043CD02 /* libOverride_iOS.a in CopyFiles */ = {isa = PBXBuildFile; fileRef = 552856321EBE63180043CD02 /* libOverride_iOS.a */; };
12 | 554BE3B71EBE779F00EB767C /* UnityString_C++.mm in Sources */ = {isa = PBXBuildFile; fileRef = 554BE3B61EBE779F00EB767C /* UnityString_C++.mm */; };
13 | 554BE3BD1EBE7DDC00EB767C /* libOverride_iOS.a in CopyFiles */ = {isa = PBXBuildFile; fileRef = 552856321EBE63180043CD02 /* libOverride_iOS.a */; };
14 | 55526F331EBFF1D300A02158 /* Override_iOS.m in Sources */ = {isa = PBXBuildFile; fileRef = 552856371EBE63190043CD02 /* Override_iOS.m */; };
15 | 559CA6E91EC27F1800492DC3 /* DeepLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 559CA6E81EC27F1800492DC3 /* DeepLink.m */; };
16 | 559CA6EC1EC281EF00492DC3 /* DeepLink_C++.mm in Sources */ = {isa = PBXBuildFile; fileRef = 559CA6EB1EC281EF00492DC3 /* DeepLink_C++.mm */; };
17 | 55D086B31EC1EFEC00974E70 /* EPPZSwizzler.m in Sources */ = {isa = PBXBuildFile; fileRef = 55D086B11EC1EFEC00974E70 /* EPPZSwizzler.m */; };
18 | 55D086B61EC1F54700974E70 /* OverrideAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 55D086B51EC1F54700974E70 /* OverrideAppDelegate.m */; };
19 | /* End PBXBuildFile section */
20 |
21 | /* Begin PBXCopyFilesBuildPhase section */
22 | 552856301EBE63180043CD02 /* CopyFiles */ = {
23 | isa = PBXCopyFilesBuildPhase;
24 | buildActionMask = 2147483647;
25 | dstPath = "include/$(PRODUCT_NAME)";
26 | dstSubfolderSpec = 16;
27 | files = (
28 | 552856361EBE63190043CD02 /* Override_iOS.h in CopyFiles */,
29 | );
30 | runOnlyForDeploymentPostprocessing = 0;
31 | };
32 | 5528563E1EBE64F50043CD02 /* CopyFiles */ = {
33 | isa = PBXCopyFilesBuildPhase;
34 | buildActionMask = 2147483647;
35 | dstPath = "~/Projects/Unity/Blog/Override_App_Delegate/Assets/Plugins";
36 | dstSubfolderSpec = 0;
37 | files = (
38 | 5528563F1EBE652C0043CD02 /* libOverride_iOS.a in CopyFiles */,
39 | );
40 | runOnlyForDeploymentPostprocessing = 0;
41 | };
42 | 554BE3BC1EBE7DD100EB767C /* CopyFiles */ = {
43 | isa = PBXCopyFilesBuildPhase;
44 | buildActionMask = 2147483647;
45 | dstPath = "~/Projects/Unity/Blog/Override_App_Delegate/Build/iOS/Override/Libraries/Plugins";
46 | dstSubfolderSpec = 0;
47 | files = (
48 | 554BE3BD1EBE7DDC00EB767C /* libOverride_iOS.a in CopyFiles */,
49 | );
50 | runOnlyForDeploymentPostprocessing = 0;
51 | };
52 | /* End PBXCopyFilesBuildPhase section */
53 |
54 | /* Begin PBXFileReference section */
55 | 552856321EBE63180043CD02 /* libOverride_iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libOverride_iOS.a; sourceTree = BUILT_PRODUCTS_DIR; };
56 | 552856351EBE63190043CD02 /* Override_iOS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Override_iOS.h; sourceTree = ""; };
57 | 552856371EBE63190043CD02 /* Override_iOS.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Override_iOS.m; sourceTree = ""; };
58 | 554BE3B61EBE779F00EB767C /* UnityString_C++.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "UnityString_C++.mm"; sourceTree = ""; };
59 | 559CA6E71EC27F1800492DC3 /* DeepLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeepLink.h; sourceTree = ""; };
60 | 559CA6E81EC27F1800492DC3 /* DeepLink.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DeepLink.m; sourceTree = ""; };
61 | 559CA6EB1EC281EF00492DC3 /* DeepLink_C++.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "DeepLink_C++.mm"; sourceTree = ""; };
62 | 55D086B11EC1EFEC00974E70 /* EPPZSwizzler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EPPZSwizzler.m; sourceTree = ""; };
63 | 55D086B21EC1EFEC00974E70 /* EPPZSwizzler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EPPZSwizzler.h; sourceTree = ""; };
64 | 55D086B41EC1F54700974E70 /* OverrideAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OverrideAppDelegate.h; sourceTree = ""; };
65 | 55D086B51EC1F54700974E70 /* OverrideAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OverrideAppDelegate.m; sourceTree = ""; };
66 | /* End PBXFileReference section */
67 |
68 | /* Begin PBXFrameworksBuildPhase section */
69 | 5528562F1EBE63180043CD02 /* Frameworks */ = {
70 | isa = PBXFrameworksBuildPhase;
71 | buildActionMask = 2147483647;
72 | files = (
73 | );
74 | runOnlyForDeploymentPostprocessing = 0;
75 | };
76 | /* End PBXFrameworksBuildPhase section */
77 |
78 | /* Begin PBXGroup section */
79 | 552856291EBE63180043CD02 = {
80 | isa = PBXGroup;
81 | children = (
82 | 552856341EBE63180043CD02 /* Override_iOS */,
83 | 552856331EBE63180043CD02 /* Products */,
84 | );
85 | sourceTree = "";
86 | };
87 | 552856331EBE63180043CD02 /* Products */ = {
88 | isa = PBXGroup;
89 | children = (
90 | 552856321EBE63180043CD02 /* libOverride_iOS.a */,
91 | );
92 | name = Products;
93 | sourceTree = "";
94 | };
95 | 552856341EBE63180043CD02 /* Override_iOS */ = {
96 | isa = PBXGroup;
97 | children = (
98 | 55D086AD1EC1EFBF00974E70 /* eppz! swizzler */,
99 | 552856351EBE63190043CD02 /* Override_iOS.h */,
100 | 552856371EBE63190043CD02 /* Override_iOS.m */,
101 | 554BE3B61EBE779F00EB767C /* UnityString_C++.mm */,
102 | 55D086B41EC1F54700974E70 /* OverrideAppDelegate.h */,
103 | 55D086B51EC1F54700974E70 /* OverrideAppDelegate.m */,
104 | 559CA6E71EC27F1800492DC3 /* DeepLink.h */,
105 | 559CA6E81EC27F1800492DC3 /* DeepLink.m */,
106 | 559CA6EB1EC281EF00492DC3 /* DeepLink_C++.mm */,
107 | );
108 | path = Override_iOS;
109 | sourceTree = "";
110 | };
111 | 55D086AD1EC1EFBF00974E70 /* eppz! swizzler */ = {
112 | isa = PBXGroup;
113 | children = (
114 | 55D086B21EC1EFEC00974E70 /* EPPZSwizzler.h */,
115 | 55D086B11EC1EFEC00974E70 /* EPPZSwizzler.m */,
116 | );
117 | name = "eppz! swizzler";
118 | sourceTree = "";
119 | };
120 | /* End PBXGroup section */
121 |
122 | /* Begin PBXNativeTarget section */
123 | 552856311EBE63180043CD02 /* Override_iOS */ = {
124 | isa = PBXNativeTarget;
125 | buildConfigurationList = 5528563B1EBE63190043CD02 /* Build configuration list for PBXNativeTarget "Override_iOS" */;
126 | buildPhases = (
127 | 5528562E1EBE63180043CD02 /* Sources */,
128 | 5528562F1EBE63180043CD02 /* Frameworks */,
129 | 552856301EBE63180043CD02 /* CopyFiles */,
130 | 5528563E1EBE64F50043CD02 /* CopyFiles */,
131 | 554BE3BC1EBE7DD100EB767C /* CopyFiles */,
132 | );
133 | buildRules = (
134 | );
135 | dependencies = (
136 | );
137 | name = Override_iOS;
138 | productName = Override_iOS;
139 | productReference = 552856321EBE63180043CD02 /* libOverride_iOS.a */;
140 | productType = "com.apple.product-type.library.static";
141 | };
142 | /* End PBXNativeTarget section */
143 |
144 | /* Begin PBXProject section */
145 | 5528562A1EBE63180043CD02 /* Project object */ = {
146 | isa = PBXProject;
147 | attributes = {
148 | LastUpgradeCheck = 0730;
149 | ORGANIZATIONNAME = "eppz!";
150 | TargetAttributes = {
151 | 552856311EBE63180043CD02 = {
152 | CreatedOnToolsVersion = 7.3.1;
153 | };
154 | };
155 | };
156 | buildConfigurationList = 5528562D1EBE63180043CD02 /* Build configuration list for PBXProject "Override_iOS" */;
157 | compatibilityVersion = "Xcode 3.2";
158 | developmentRegion = English;
159 | hasScannedForEncodings = 0;
160 | knownRegions = (
161 | en,
162 | );
163 | mainGroup = 552856291EBE63180043CD02;
164 | productRefGroup = 552856331EBE63180043CD02 /* Products */;
165 | projectDirPath = "";
166 | projectRoot = "";
167 | targets = (
168 | 552856311EBE63180043CD02 /* Override_iOS */,
169 | );
170 | };
171 | /* End PBXProject section */
172 |
173 | /* Begin PBXSourcesBuildPhase section */
174 | 5528562E1EBE63180043CD02 /* Sources */ = {
175 | isa = PBXSourcesBuildPhase;
176 | buildActionMask = 2147483647;
177 | files = (
178 | 55526F331EBFF1D300A02158 /* Override_iOS.m in Sources */,
179 | 559CA6E91EC27F1800492DC3 /* DeepLink.m in Sources */,
180 | 554BE3B71EBE779F00EB767C /* UnityString_C++.mm in Sources */,
181 | 55D086B31EC1EFEC00974E70 /* EPPZSwizzler.m in Sources */,
182 | 55D086B61EC1F54700974E70 /* OverrideAppDelegate.m in Sources */,
183 | 559CA6EC1EC281EF00492DC3 /* DeepLink_C++.mm in Sources */,
184 | );
185 | runOnlyForDeploymentPostprocessing = 0;
186 | };
187 | /* End PBXSourcesBuildPhase section */
188 |
189 | /* Begin XCBuildConfiguration section */
190 | 552856391EBE63190043CD02 /* Debug */ = {
191 | isa = XCBuildConfiguration;
192 | buildSettings = {
193 | ALWAYS_SEARCH_USER_PATHS = NO;
194 | CLANG_ANALYZER_NONNULL = YES;
195 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
196 | CLANG_CXX_LIBRARY = "libc++";
197 | CLANG_ENABLE_MODULES = YES;
198 | CLANG_ENABLE_OBJC_ARC = YES;
199 | CLANG_WARN_BOOL_CONVERSION = YES;
200 | CLANG_WARN_CONSTANT_CONVERSION = YES;
201 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
202 | CLANG_WARN_EMPTY_BODY = YES;
203 | CLANG_WARN_ENUM_CONVERSION = YES;
204 | CLANG_WARN_INT_CONVERSION = YES;
205 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
206 | CLANG_WARN_UNREACHABLE_CODE = YES;
207 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
208 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
209 | COPY_PHASE_STRIP = NO;
210 | DEBUG_INFORMATION_FORMAT = dwarf;
211 | ENABLE_STRICT_OBJC_MSGSEND = YES;
212 | ENABLE_TESTABILITY = YES;
213 | GCC_C_LANGUAGE_STANDARD = gnu99;
214 | GCC_DYNAMIC_NO_PIC = NO;
215 | GCC_NO_COMMON_BLOCKS = YES;
216 | GCC_OPTIMIZATION_LEVEL = 0;
217 | GCC_PREPROCESSOR_DEFINITIONS = (
218 | "DEBUG=1",
219 | "$(inherited)",
220 | );
221 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
222 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
223 | GCC_WARN_UNDECLARED_SELECTOR = YES;
224 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
225 | GCC_WARN_UNUSED_FUNCTION = YES;
226 | GCC_WARN_UNUSED_VARIABLE = YES;
227 | IPHONEOS_DEPLOYMENT_TARGET = 9.3;
228 | MTL_ENABLE_DEBUG_INFO = YES;
229 | ONLY_ACTIVE_ARCH = YES;
230 | SDKROOT = iphoneos;
231 | };
232 | name = Debug;
233 | };
234 | 5528563A1EBE63190043CD02 /* Release */ = {
235 | isa = XCBuildConfiguration;
236 | buildSettings = {
237 | ALWAYS_SEARCH_USER_PATHS = NO;
238 | CLANG_ANALYZER_NONNULL = YES;
239 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
240 | CLANG_CXX_LIBRARY = "libc++";
241 | CLANG_ENABLE_MODULES = YES;
242 | CLANG_ENABLE_OBJC_ARC = YES;
243 | CLANG_WARN_BOOL_CONVERSION = YES;
244 | CLANG_WARN_CONSTANT_CONVERSION = YES;
245 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
246 | CLANG_WARN_EMPTY_BODY = YES;
247 | CLANG_WARN_ENUM_CONVERSION = YES;
248 | CLANG_WARN_INT_CONVERSION = YES;
249 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
250 | CLANG_WARN_UNREACHABLE_CODE = YES;
251 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
252 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
253 | COPY_PHASE_STRIP = NO;
254 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
255 | ENABLE_NS_ASSERTIONS = NO;
256 | ENABLE_STRICT_OBJC_MSGSEND = YES;
257 | GCC_C_LANGUAGE_STANDARD = gnu99;
258 | GCC_NO_COMMON_BLOCKS = YES;
259 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
260 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
261 | GCC_WARN_UNDECLARED_SELECTOR = YES;
262 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
263 | GCC_WARN_UNUSED_FUNCTION = YES;
264 | GCC_WARN_UNUSED_VARIABLE = YES;
265 | IPHONEOS_DEPLOYMENT_TARGET = 9.3;
266 | MTL_ENABLE_DEBUG_INFO = NO;
267 | SDKROOT = iphoneos;
268 | VALIDATE_PRODUCT = YES;
269 | };
270 | name = Release;
271 | };
272 | 5528563C1EBE63190043CD02 /* Debug */ = {
273 | isa = XCBuildConfiguration;
274 | buildSettings = {
275 | OTHER_LDFLAGS = "-ObjC";
276 | PRODUCT_NAME = "$(TARGET_NAME)";
277 | SKIP_INSTALL = YES;
278 | };
279 | name = Debug;
280 | };
281 | 5528563D1EBE63190043CD02 /* Release */ = {
282 | isa = XCBuildConfiguration;
283 | buildSettings = {
284 | OTHER_LDFLAGS = "-ObjC";
285 | PRODUCT_NAME = "$(TARGET_NAME)";
286 | SKIP_INSTALL = YES;
287 | };
288 | name = Release;
289 | };
290 | /* End XCBuildConfiguration section */
291 |
292 | /* Begin XCConfigurationList section */
293 | 5528562D1EBE63180043CD02 /* Build configuration list for PBXProject "Override_iOS" */ = {
294 | isa = XCConfigurationList;
295 | buildConfigurations = (
296 | 552856391EBE63190043CD02 /* Debug */,
297 | 5528563A1EBE63190043CD02 /* Release */,
298 | );
299 | defaultConfigurationIsVisible = 0;
300 | defaultConfigurationName = Release;
301 | };
302 | 5528563B1EBE63190043CD02 /* Build configuration list for PBXNativeTarget "Override_iOS" */ = {
303 | isa = XCConfigurationList;
304 | buildConfigurations = (
305 | 5528563C1EBE63190043CD02 /* Debug */,
306 | 5528563D1EBE63190043CD02 /* Release */,
307 | );
308 | defaultConfigurationIsVisible = 0;
309 | defaultConfigurationName = Release;
310 | };
311 | /* End XCConfigurationList section */
312 | };
313 | rootObject = 5528562A1EBE63180043CD02 /* Project object */;
314 | }
315 |
--------------------------------------------------------------------------------
/ProjectSettings/ProjectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!129 &1
4 | PlayerSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 10
7 | productGUID: bbb21ae8808d448b3842f82ea376e56f
8 | AndroidProfiler: 0
9 | defaultScreenOrientation: 4
10 | targetDevice: 2
11 | useOnDemandResources: 0
12 | accelerometerFrequency: 60
13 | companyName: eppz! mobile, SP
14 | productName: Override
15 | defaultCursor: {fileID: 0}
16 | cursorHotspot: {x: 0, y: 0}
17 | m_SplashScreenBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21176471, a: 1}
18 | m_ShowUnitySplashScreen: 1
19 | m_ShowUnitySplashLogo: 1
20 | m_SplashScreenOverlayOpacity: 1
21 | m_SplashScreenAnimation: 1
22 | m_SplashScreenLogoStyle: 1
23 | m_SplashScreenDrawMode: 0
24 | m_SplashScreenBackgroundAnimationZoom: 1
25 | m_SplashScreenLogoAnimationZoom: 1
26 | m_SplashScreenBackgroundLandscapeAspect: 1
27 | m_SplashScreenBackgroundPortraitAspect: 1
28 | m_SplashScreenBackgroundLandscapeUvs:
29 | serializedVersion: 2
30 | x: 0
31 | y: 0
32 | width: 1
33 | height: 1
34 | m_SplashScreenBackgroundPortraitUvs:
35 | serializedVersion: 2
36 | x: 0
37 | y: 0
38 | width: 1
39 | height: 1
40 | m_SplashScreenLogos: []
41 | m_SplashScreenBackgroundLandscape: {fileID: 0}
42 | m_SplashScreenBackgroundPortrait: {fileID: 0}
43 | m_VirtualRealitySplashScreen: {fileID: 0}
44 | m_HolographicTrackingLossScreen: {fileID: 0}
45 | defaultScreenWidth: 1024
46 | defaultScreenHeight: 768
47 | defaultScreenWidthWeb: 960
48 | defaultScreenHeightWeb: 600
49 | m_StereoRenderingPath: 0
50 | m_ActiveColorSpace: 0
51 | m_MTRendering: 1
52 | m_MobileMTRendering: 0
53 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000
54 | iosShowActivityIndicatorOnLoading: -1
55 | androidShowActivityIndicatorOnLoading: -1
56 | tizenShowActivityIndicatorOnLoading: -1
57 | iosAppInBackgroundBehavior: 0
58 | displayResolutionDialog: 1
59 | iosAllowHTTPDownload: 1
60 | allowedAutorotateToPortrait: 1
61 | allowedAutorotateToPortraitUpsideDown: 1
62 | allowedAutorotateToLandscapeRight: 1
63 | allowedAutorotateToLandscapeLeft: 1
64 | useOSAutorotation: 1
65 | use32BitDisplayBuffer: 1
66 | disableDepthAndStencilBuffers: 0
67 | defaultIsFullScreen: 1
68 | defaultIsNativeResolution: 1
69 | runInBackground: 0
70 | captureSingleScreen: 0
71 | muteOtherAudioSources: 0
72 | Prepare IOS For Recording: 0
73 | submitAnalytics: 1
74 | usePlayerLog: 1
75 | bakeCollisionMeshes: 0
76 | forceSingleInstance: 0
77 | resizableWindow: 0
78 | useMacAppStoreValidation: 0
79 | gpuSkinning: 0
80 | graphicsJobs: 0
81 | xboxPIXTextureCapture: 0
82 | xboxEnableAvatar: 0
83 | xboxEnableKinect: 0
84 | xboxEnableKinectAutoTracking: 0
85 | xboxEnableFitness: 0
86 | visibleInBackground: 0
87 | allowFullscreenSwitch: 1
88 | macFullscreenMode: 2
89 | d3d9FullscreenMode: 1
90 | d3d11FullscreenMode: 1
91 | xboxSpeechDB: 0
92 | xboxEnableHeadOrientation: 0
93 | xboxEnableGuest: 0
94 | xboxEnablePIXSampling: 0
95 | n3dsDisableStereoscopicView: 0
96 | n3dsEnableSharedListOpt: 1
97 | n3dsEnableVSync: 0
98 | uiUse16BitDepthBuffer: 0
99 | ignoreAlphaClear: 0
100 | xboxOneResolution: 0
101 | xboxOneMonoLoggingLevel: 0
102 | xboxOneLoggingLevel: 1
103 | videoMemoryForVertexBuffers: 0
104 | psp2PowerMode: 0
105 | psp2AcquireBGM: 1
106 | wiiUTVResolution: 0
107 | wiiUGamePadMSAA: 1
108 | wiiUSupportsNunchuk: 0
109 | wiiUSupportsClassicController: 0
110 | wiiUSupportsBalanceBoard: 0
111 | wiiUSupportsMotionPlus: 0
112 | wiiUSupportsProController: 0
113 | wiiUAllowScreenCapture: 1
114 | wiiUControllerCount: 0
115 | m_SupportedAspectRatios:
116 | 4:3: 1
117 | 5:4: 1
118 | 16:10: 1
119 | 16:9: 1
120 | Others: 1
121 | bundleIdentifier: com.eppz.Override
122 | bundleVersion: 1.4
123 | preloadedAssets: []
124 | metroInputSource: 0
125 | m_HolographicPauseOnTrackingLoss: 1
126 | xboxOneDisableKinectGpuReservation: 0
127 | protectGraphicsMemory: 0
128 | AndroidBundleVersionCode: 1
129 | AndroidMinSdkVersion: 9
130 | AndroidPreferredInstallLocation: 1
131 | aotOptions:
132 | apiCompatibilityLevel: 2
133 | stripEngineCode: 1
134 | iPhoneStrippingLevel: 0
135 | iPhoneScriptCallOptimization: 0
136 | iPhoneBuildNumber: 0
137 | ForceInternetPermission: 0
138 | ForceSDCardPermission: 0
139 | CreateWallpaper: 0
140 | APKExpansionFiles: 0
141 | preloadShaders: 0
142 | StripUnusedMeshComponents: 0
143 | VertexChannelCompressionMask:
144 | serializedVersion: 2
145 | m_Bits: 238
146 | iPhoneSdkVersion: 989
147 | iOSTargetOSVersionString: 7.0
148 | tvOSSdkVersion: 0
149 | tvOSRequireExtendedGameController: 0
150 | tvOSTargetOSVersionString:
151 | uIPrerenderedIcon: 0
152 | uIRequiresPersistentWiFi: 0
153 | uIRequiresFullScreen: 1
154 | uIStatusBarHidden: 1
155 | uIExitOnSuspend: 0
156 | uIStatusBarStyle: 0
157 | iPhoneSplashScreen: {fileID: 0}
158 | iPhoneHighResSplashScreen: {fileID: 0}
159 | iPhoneTallHighResSplashScreen: {fileID: 0}
160 | iPhone47inSplashScreen: {fileID: 0}
161 | iPhone55inPortraitSplashScreen: {fileID: 0}
162 | iPhone55inLandscapeSplashScreen: {fileID: 0}
163 | iPadPortraitSplashScreen: {fileID: 0}
164 | iPadHighResPortraitSplashScreen: {fileID: 0}
165 | iPadLandscapeSplashScreen: {fileID: 0}
166 | iPadHighResLandscapeSplashScreen: {fileID: 0}
167 | appleTVSplashScreen: {fileID: 0}
168 | tvOSSmallIconLayers: []
169 | tvOSLargeIconLayers: []
170 | tvOSTopShelfImageLayers: []
171 | tvOSTopShelfImageWideLayers: []
172 | iOSLaunchScreenType: 0
173 | iOSLaunchScreenPortrait: {fileID: 0}
174 | iOSLaunchScreenLandscape: {fileID: 0}
175 | iOSLaunchScreenBackgroundColor:
176 | serializedVersion: 2
177 | rgba: 0
178 | iOSLaunchScreenFillPct: 100
179 | iOSLaunchScreenSize: 100
180 | iOSLaunchScreenCustomXibPath:
181 | iOSLaunchScreeniPadType: 0
182 | iOSLaunchScreeniPadImage: {fileID: 0}
183 | iOSLaunchScreeniPadBackgroundColor:
184 | serializedVersion: 2
185 | rgba: 0
186 | iOSLaunchScreeniPadFillPct: 100
187 | iOSLaunchScreeniPadSize: 100
188 | iOSLaunchScreeniPadCustomXibPath:
189 | iOSDeviceRequirements: []
190 | iOSURLSchemes:
191 | - override
192 | iOSBackgroundModes: 0
193 | iOSMetalForceHardShadows: 0
194 | appleDeveloperTeamID:
195 | AndroidTargetDevice: 0
196 | AndroidSplashScreenScale: 0
197 | androidSplashScreen: {fileID: 0}
198 | AndroidKeystoreName:
199 | AndroidKeyaliasName:
200 | AndroidTVCompatibility: 1
201 | AndroidIsGame: 1
202 | androidEnableBanner: 1
203 | m_AndroidBanners:
204 | - width: 320
205 | height: 180
206 | banner: {fileID: 0}
207 | androidGamepadSupportLevel: 0
208 | resolutionDialogBanner: {fileID: 0}
209 | m_BuildTargetIcons: []
210 | m_BuildTargetBatching: []
211 | m_BuildTargetGraphicsAPIs: []
212 | m_BuildTargetVRSettings: []
213 | openGLRequireES31: 0
214 | openGLRequireES31AEP: 0
215 | webPlayerTemplate: APPLICATION:Default
216 | m_TemplateCustomTags: {}
217 | wiiUTitleID: 0005000011000000
218 | wiiUGroupID: 00010000
219 | wiiUCommonSaveSize: 4096
220 | wiiUAccountSaveSize: 2048
221 | wiiUOlvAccessKey: 0
222 | wiiUTinCode: 0
223 | wiiUJoinGameId: 0
224 | wiiUJoinGameModeMask: 0000000000000000
225 | wiiUCommonBossSize: 0
226 | wiiUAccountBossSize: 0
227 | wiiUAddOnUniqueIDs: []
228 | wiiUMainThreadStackSize: 3072
229 | wiiULoaderThreadStackSize: 1024
230 | wiiUSystemHeapSize: 128
231 | wiiUTVStartupScreen: {fileID: 0}
232 | wiiUGamePadStartupScreen: {fileID: 0}
233 | wiiUDrcBufferDisabled: 0
234 | wiiUProfilerLibPath:
235 | actionOnDotNetUnhandledException: 1
236 | enableInternalProfiler: 0
237 | logObjCUncaughtExceptions: 1
238 | enableCrashReportAPI: 0
239 | cameraUsageDescription:
240 | locationUsageDescription:
241 | microphoneUsageDescription:
242 | XboxTitleId:
243 | XboxImageXexPath:
244 | XboxSpaPath:
245 | XboxGenerateSpa: 0
246 | XboxDeployKinectResources: 0
247 | XboxSplashScreen: {fileID: 0}
248 | xboxEnableSpeech: 0
249 | xboxAdditionalTitleMemorySize: 0
250 | xboxDeployKinectHeadOrientation: 0
251 | xboxDeployKinectHeadPosition: 0
252 | ps4NPAgeRating: 12
253 | ps4NPTitleSecret:
254 | ps4NPTrophyPackPath:
255 | ps4ParentalLevel: 1
256 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000
257 | ps4Category: 0
258 | ps4MasterVersion: 01.00
259 | ps4AppVersion: 01.00
260 | ps4AppType: 0
261 | ps4ParamSfxPath:
262 | ps4VideoOutPixelFormat: 0
263 | ps4VideoOutInitialWidth: 1920
264 | ps4VideoOutReprojectionRate: 120
265 | ps4PronunciationXMLPath:
266 | ps4PronunciationSIGPath:
267 | ps4BackgroundImagePath:
268 | ps4StartupImagePath:
269 | ps4SaveDataImagePath:
270 | ps4SdkOverride:
271 | ps4BGMPath:
272 | ps4ShareFilePath:
273 | ps4ShareOverlayImagePath:
274 | ps4PrivacyGuardImagePath:
275 | ps4NPtitleDatPath:
276 | ps4RemotePlayKeyAssignment: -1
277 | ps4RemotePlayKeyMappingDir:
278 | ps4PlayTogetherPlayerCount: 0
279 | ps4EnterButtonAssignment: 1
280 | ps4ApplicationParam1: 0
281 | ps4ApplicationParam2: 0
282 | ps4ApplicationParam3: 0
283 | ps4ApplicationParam4: 0
284 | ps4DownloadDataSize: 0
285 | ps4GarlicHeapSize: 2048
286 | ps4Passcode: BlQ9wQj99nsQzldVI5ZuGXbEWRK5RhRX
287 | ps4UseDebugIl2cppLibs: 0
288 | ps4pnSessions: 1
289 | ps4pnPresence: 1
290 | ps4pnFriends: 1
291 | ps4pnGameCustomData: 1
292 | playerPrefsSupport: 0
293 | restrictedAudioUsageRights: 0
294 | ps4UseResolutionFallback: 0
295 | ps4ReprojectionSupport: 0
296 | ps4UseAudio3dBackend: 0
297 | ps4SocialScreenEnabled: 0
298 | ps4ScriptOptimizationLevel: 3
299 | ps4Audio3dVirtualSpeakerCount: 14
300 | ps4attribCpuUsage: 0
301 | ps4PatchPkgPath:
302 | ps4PatchLatestPkgPath:
303 | ps4PatchChangeinfoPath:
304 | ps4PatchDayOne: 0
305 | ps4attribUserManagement: 0
306 | ps4attribMoveSupport: 0
307 | ps4attrib3DSupport: 0
308 | ps4attribShareSupport: 0
309 | ps4attribExclusiveVR: 0
310 | ps4disableAutoHideSplash: 0
311 | ps4IncludedModules: []
312 | monoEnv:
313 | psp2Splashimage: {fileID: 0}
314 | psp2NPTrophyPackPath:
315 | psp2NPSupportGBMorGJP: 0
316 | psp2NPAgeRating: 12
317 | psp2NPTitleDatPath:
318 | psp2NPCommsID:
319 | psp2NPCommunicationsID:
320 | psp2NPCommsPassphrase:
321 | psp2NPCommsSig:
322 | psp2ParamSfxPath:
323 | psp2ManualPath:
324 | psp2LiveAreaGatePath:
325 | psp2LiveAreaBackroundPath:
326 | psp2LiveAreaPath:
327 | psp2LiveAreaTrialPath:
328 | psp2PatchChangeInfoPath:
329 | psp2PatchOriginalPackage:
330 | psp2PackagePassword: dCdG5nG5azdNMK66MuCV6GXi5xr84P2R
331 | psp2KeystoneFile:
332 | psp2MemoryExpansionMode: 0
333 | psp2DRMType: 0
334 | psp2StorageType: 0
335 | psp2MediaCapacity: 0
336 | psp2DLCConfigPath:
337 | psp2ThumbnailPath:
338 | psp2BackgroundPath:
339 | psp2SoundPath:
340 | psp2TrophyCommId:
341 | psp2TrophyPackagePath:
342 | psp2PackagedResourcesPath:
343 | psp2SaveDataQuota: 10240
344 | psp2ParentalLevel: 1
345 | psp2ShortTitle: Not Set
346 | psp2ContentID: IV0000-ABCD12345_00-0123456789ABCDEF
347 | psp2Category: 0
348 | psp2MasterVersion: 01.00
349 | psp2AppVersion: 01.00
350 | psp2TVBootMode: 0
351 | psp2EnterButtonAssignment: 2
352 | psp2TVDisableEmu: 0
353 | psp2AllowTwitterDialog: 1
354 | psp2Upgradable: 0
355 | psp2HealthWarning: 0
356 | psp2UseLibLocation: 0
357 | psp2InfoBarOnStartup: 0
358 | psp2InfoBarColor: 0
359 | psp2UseDebugIl2cppLibs: 0
360 | psmSplashimage: {fileID: 0}
361 | splashScreenBackgroundSourceLandscape: {fileID: 0}
362 | splashScreenBackgroundSourcePortrait: {fileID: 0}
363 | spritePackerPolicy:
364 | webGLMemorySize: 256
365 | webGLExceptionSupport: 1
366 | webGLDataCaching: 0
367 | webGLDebugSymbols: 0
368 | webGLEmscriptenArgs:
369 | webGLModulesDirectory:
370 | webGLTemplate: APPLICATION:Default
371 | webGLAnalyzeBuildSize: 0
372 | webGLUseEmbeddedResources: 0
373 | webGLUseWasm: 0
374 | webGLCompressionFormat: 1
375 | scriptingDefineSymbols: {}
376 | platformArchitecture: {}
377 | scriptingBackend: {}
378 | incrementalIl2cppBuild: {}
379 | additionalIl2CppArgs:
380 | m_RenderingPath: 1
381 | m_MobileRenderingPath: 1
382 | metroPackageName: Override_App_Delegate
383 | metroPackageVersion:
384 | metroCertificatePath:
385 | metroCertificatePassword:
386 | metroCertificateSubject:
387 | metroCertificateIssuer:
388 | metroCertificateNotAfter: 0000000000000000
389 | metroApplicationDescription: Override_App_Delegate
390 | wsaImages: {}
391 | metroTileShortName:
392 | metroCommandLineArgsFile:
393 | metroTileShowName: 0
394 | metroMediumTileShowName: 0
395 | metroLargeTileShowName: 0
396 | metroWideTileShowName: 0
397 | metroDefaultTileSize: 1
398 | metroTileForegroundText: 2
399 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
400 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628,
401 | a: 1}
402 | metroSplashScreenUseBackgroundColor: 0
403 | platformCapabilities: {}
404 | metroFTAName:
405 | metroFTAFileTypes: []
406 | metroProtocolName:
407 | metroCompilationOverrides: 1
408 | tizenProductDescription:
409 | tizenProductURL:
410 | tizenSigningProfileName:
411 | tizenGPSPermissions: 0
412 | tizenMicrophonePermissions: 0
413 | tizenDeploymentTarget:
414 | tizenDeploymentTargetType: 0
415 | tizenMinOSVersion: 0
416 | n3dsUseExtSaveData: 0
417 | n3dsCompressStaticMem: 1
418 | n3dsExtSaveDataNumber: 0x12345
419 | n3dsStackSize: 131072
420 | n3dsTargetPlatform: 2
421 | n3dsRegion: 7
422 | n3dsMediaSize: 0
423 | n3dsLogoStyle: 3
424 | n3dsTitle: GameName
425 | n3dsProductCode:
426 | n3dsApplicationId: 0xFF3FF
427 | stvDeviceAddress:
428 | stvProductDescription:
429 | stvProductAuthor:
430 | stvProductAuthorEmail:
431 | stvProductLink:
432 | stvProductCategory: 0
433 | XboxOneProductId:
434 | XboxOneUpdateKey:
435 | XboxOneSandboxId:
436 | XboxOneContentId:
437 | XboxOneTitleId:
438 | XboxOneSCId:
439 | XboxOneGameOsOverridePath:
440 | XboxOnePackagingOverridePath:
441 | XboxOneAppManifestOverridePath:
442 | XboxOnePackageEncryption: 0
443 | XboxOnePackageUpdateGranularity: 2
444 | XboxOneDescription:
445 | XboxOneLanguage:
446 | - enus
447 | XboxOneCapability: []
448 | XboxOneGameRating: {}
449 | XboxOneIsContentPackage: 0
450 | XboxOneEnableGPUVariability: 0
451 | XboxOneSockets: {}
452 | XboxOneSplashScreen: {fileID: 0}
453 | XboxOneAllowedProductIds: []
454 | XboxOnePersistentLocalStorageSize: 0
455 | vrEditorSettings: {}
456 | cloudServicesEnabled: {}
457 | cloudProjectId:
458 | projectName:
459 | organizationId:
460 | cloudEnabled: 0
461 |
--------------------------------------------------------------------------------
/Assets/Scene.unity:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!29 &1
4 | OcclusionCullingSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_OcclusionBakeSettings:
8 | smallestOccluder: 5
9 | smallestHole: 0.25
10 | backfaceThreshold: 100
11 | m_SceneGUID: 00000000000000000000000000000000
12 | m_OcclusionCullingData: {fileID: 0}
13 | --- !u!104 &2
14 | RenderSettings:
15 | m_ObjectHideFlags: 0
16 | serializedVersion: 7
17 | m_Fog: 0
18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
19 | m_FogMode: 3
20 | m_FogDensity: 0.01
21 | m_LinearFogStart: 0
22 | m_LinearFogEnd: 300
23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
26 | m_AmbientIntensity: 1
27 | m_AmbientMode: 0
28 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
29 | m_HaloStrength: 0.5
30 | m_FlareStrength: 1
31 | m_FlareFadeSpeed: 3
32 | m_HaloTexture: {fileID: 0}
33 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
34 | m_DefaultReflectionMode: 0
35 | m_DefaultReflectionResolution: 128
36 | m_ReflectionBounces: 1
37 | m_ReflectionIntensity: 1
38 | m_CustomReflection: {fileID: 0}
39 | m_Sun: {fileID: 0}
40 | m_IndirectSpecularColor: {r: 0.44659364, g: 0.4964301, b: 0.5748256, a: 1}
41 | --- !u!157 &3
42 | LightmapSettings:
43 | m_ObjectHideFlags: 0
44 | serializedVersion: 7
45 | m_GIWorkflowMode: 0
46 | m_GISettings:
47 | serializedVersion: 2
48 | m_BounceScale: 1
49 | m_IndirectOutputScale: 1
50 | m_AlbedoBoost: 1
51 | m_TemporalCoherenceThreshold: 1
52 | m_EnvironmentLightingMode: 0
53 | m_EnableBakedLightmaps: 1
54 | m_EnableRealtimeLightmaps: 1
55 | m_LightmapEditorSettings:
56 | serializedVersion: 4
57 | m_Resolution: 2
58 | m_BakeResolution: 40
59 | m_TextureWidth: 1024
60 | m_TextureHeight: 1024
61 | m_AO: 0
62 | m_AOMaxDistance: 1
63 | m_CompAOExponent: 1
64 | m_CompAOExponentDirect: 0
65 | m_Padding: 2
66 | m_LightmapParameters: {fileID: 0}
67 | m_LightmapsBakeMode: 1
68 | m_TextureCompression: 1
69 | m_DirectLightInLightProbes: 1
70 | m_FinalGather: 0
71 | m_FinalGatherFiltering: 1
72 | m_FinalGatherRayCount: 256
73 | m_ReflectionCompression: 2
74 | m_LightingDataAsset: {fileID: 0}
75 | m_RuntimeCPUUsage: 25
76 | --- !u!196 &4
77 | NavMeshSettings:
78 | serializedVersion: 2
79 | m_ObjectHideFlags: 0
80 | m_BuildSettings:
81 | serializedVersion: 2
82 | agentTypeID: 0
83 | agentRadius: 0.5
84 | agentHeight: 2
85 | agentSlope: 45
86 | agentClimb: 0.4
87 | ledgeDropHeight: 0
88 | maxJumpAcrossDistance: 0
89 | minRegionArea: 2
90 | manualCellSize: 0
91 | cellSize: 0.16666667
92 | accuratePlacement: 0
93 | m_NavMeshData: {fileID: 0}
94 | --- !u!1 &413933673
95 | GameObject:
96 | m_ObjectHideFlags: 0
97 | m_PrefabParentObject: {fileID: 0}
98 | m_PrefabInternal: {fileID: 0}
99 | serializedVersion: 5
100 | m_Component:
101 | - component: {fileID: 413933677}
102 | - component: {fileID: 413933676}
103 | - component: {fileID: 413933675}
104 | - component: {fileID: 413933674}
105 | m_Layer: 5
106 | m_Name: Canvas
107 | m_TagString: Untagged
108 | m_Icon: {fileID: 0}
109 | m_NavMeshLayer: 0
110 | m_StaticEditorFlags: 0
111 | m_IsActive: 1
112 | --- !u!114 &413933674
113 | MonoBehaviour:
114 | m_ObjectHideFlags: 0
115 | m_PrefabParentObject: {fileID: 0}
116 | m_PrefabInternal: {fileID: 0}
117 | m_GameObject: {fileID: 413933673}
118 | m_Enabled: 1
119 | m_EditorHideFlags: 0
120 | m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
121 | m_Name:
122 | m_EditorClassIdentifier:
123 | m_IgnoreReversedGraphics: 1
124 | m_BlockingObjects: 0
125 | m_BlockingMask:
126 | serializedVersion: 2
127 | m_Bits: 4294967295
128 | --- !u!114 &413933675
129 | MonoBehaviour:
130 | m_ObjectHideFlags: 0
131 | m_PrefabParentObject: {fileID: 0}
132 | m_PrefabInternal: {fileID: 0}
133 | m_GameObject: {fileID: 413933673}
134 | m_Enabled: 1
135 | m_EditorHideFlags: 0
136 | m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
137 | m_Name:
138 | m_EditorClassIdentifier:
139 | m_UiScaleMode: 0
140 | m_ReferencePixelsPerUnit: 100
141 | m_ScaleFactor: 1
142 | m_ReferenceResolution: {x: 800, y: 600}
143 | m_ScreenMatchMode: 0
144 | m_MatchWidthOrHeight: 0
145 | m_PhysicalUnit: 3
146 | m_FallbackScreenDPI: 96
147 | m_DefaultSpriteDPI: 96
148 | m_DynamicPixelsPerUnit: 1
149 | --- !u!223 &413933676
150 | Canvas:
151 | m_ObjectHideFlags: 0
152 | m_PrefabParentObject: {fileID: 0}
153 | m_PrefabInternal: {fileID: 0}
154 | m_GameObject: {fileID: 413933673}
155 | m_Enabled: 1
156 | serializedVersion: 2
157 | m_RenderMode: 1
158 | m_Camera: {fileID: 559747474}
159 | m_PlaneDistance: 100
160 | m_PixelPerfect: 0
161 | m_ReceivesEvents: 1
162 | m_OverrideSorting: 0
163 | m_OverridePixelPerfect: 0
164 | m_SortingBucketNormalizedSize: 0
165 | m_SortingLayerID: 0
166 | m_SortingOrder: 0
167 | m_TargetDisplay: 0
168 | --- !u!224 &413933677
169 | RectTransform:
170 | m_ObjectHideFlags: 0
171 | m_PrefabParentObject: {fileID: 0}
172 | m_PrefabInternal: {fileID: 0}
173 | m_GameObject: {fileID: 413933673}
174 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
175 | m_LocalPosition: {x: 0, y: 0, z: 0}
176 | m_LocalScale: {x: 0, y: 0, z: 0}
177 | m_Children:
178 | - {fileID: 1851320517}
179 | - {fileID: 965650478}
180 | m_Father: {fileID: 0}
181 | m_RootOrder: 2
182 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
183 | m_AnchorMin: {x: 0, y: 0}
184 | m_AnchorMax: {x: 0, y: 0}
185 | m_AnchoredPosition: {x: 0, y: 0}
186 | m_SizeDelta: {x: 0, y: 0}
187 | m_Pivot: {x: 0, y: 0}
188 | --- !u!1 &559747473
189 | GameObject:
190 | m_ObjectHideFlags: 0
191 | m_PrefabParentObject: {fileID: 0}
192 | m_PrefabInternal: {fileID: 0}
193 | serializedVersion: 5
194 | m_Component:
195 | - component: {fileID: 559747478}
196 | - component: {fileID: 559747474}
197 | - component: {fileID: 559747477}
198 | - component: {fileID: 559747476}
199 | - component: {fileID: 559747475}
200 | m_Layer: 0
201 | m_Name: Main Camera
202 | m_TagString: MainCamera
203 | m_Icon: {fileID: 0}
204 | m_NavMeshLayer: 0
205 | m_StaticEditorFlags: 0
206 | m_IsActive: 1
207 | --- !u!20 &559747474
208 | Camera:
209 | m_ObjectHideFlags: 0
210 | m_PrefabParentObject: {fileID: 0}
211 | m_PrefabInternal: {fileID: 0}
212 | m_GameObject: {fileID: 559747473}
213 | m_Enabled: 1
214 | serializedVersion: 2
215 | m_ClearFlags: 1
216 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
217 | m_NormalizedViewPortRect:
218 | serializedVersion: 2
219 | x: 0
220 | y: 0
221 | width: 1
222 | height: 1
223 | near clip plane: 0.3
224 | far clip plane: 1000
225 | field of view: 60
226 | orthographic: 0
227 | orthographic size: 5
228 | m_Depth: -1
229 | m_CullingMask:
230 | serializedVersion: 2
231 | m_Bits: 4294967295
232 | m_RenderingPath: -1
233 | m_TargetTexture: {fileID: 0}
234 | m_TargetDisplay: 0
235 | m_TargetEye: 3
236 | m_HDR: 0
237 | m_OcclusionCulling: 1
238 | m_StereoConvergence: 10
239 | m_StereoSeparation: 0.022
240 | m_StereoMirrorMode: 0
241 | --- !u!81 &559747475
242 | AudioListener:
243 | m_ObjectHideFlags: 0
244 | m_PrefabParentObject: {fileID: 0}
245 | m_PrefabInternal: {fileID: 0}
246 | m_GameObject: {fileID: 559747473}
247 | m_Enabled: 1
248 | --- !u!124 &559747476
249 | Behaviour:
250 | m_ObjectHideFlags: 0
251 | m_PrefabParentObject: {fileID: 0}
252 | m_PrefabInternal: {fileID: 0}
253 | m_GameObject: {fileID: 559747473}
254 | m_Enabled: 1
255 | --- !u!92 &559747477
256 | Behaviour:
257 | m_ObjectHideFlags: 0
258 | m_PrefabParentObject: {fileID: 0}
259 | m_PrefabInternal: {fileID: 0}
260 | m_GameObject: {fileID: 559747473}
261 | m_Enabled: 1
262 | --- !u!4 &559747478
263 | Transform:
264 | m_ObjectHideFlags: 0
265 | m_PrefabParentObject: {fileID: 0}
266 | m_PrefabInternal: {fileID: 0}
267 | m_GameObject: {fileID: 559747473}
268 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
269 | m_LocalPosition: {x: 0, y: 1, z: -10}
270 | m_LocalScale: {x: 1, y: 1, z: 1}
271 | m_Children: []
272 | m_Father: {fileID: 0}
273 | m_RootOrder: 0
274 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
275 | --- !u!1 &965650477
276 | GameObject:
277 | m_ObjectHideFlags: 0
278 | m_PrefabParentObject: {fileID: 0}
279 | m_PrefabInternal: {fileID: 0}
280 | serializedVersion: 5
281 | m_Component:
282 | - component: {fileID: 965650478}
283 | - component: {fileID: 965650480}
284 | - component: {fileID: 965650479}
285 | m_Layer: 5
286 | m_Name: Bottom
287 | m_TagString: Untagged
288 | m_Icon: {fileID: 0}
289 | m_NavMeshLayer: 0
290 | m_StaticEditorFlags: 0
291 | m_IsActive: 1
292 | --- !u!224 &965650478
293 | RectTransform:
294 | m_ObjectHideFlags: 0
295 | m_PrefabParentObject: {fileID: 0}
296 | m_PrefabInternal: {fileID: 0}
297 | m_GameObject: {fileID: 965650477}
298 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
299 | m_LocalPosition: {x: 0, y: 0, z: 0}
300 | m_LocalScale: {x: 1, y: 1, z: 1}
301 | m_Children: []
302 | m_Father: {fileID: 413933677}
303 | m_RootOrder: 1
304 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
305 | m_AnchorMin: {x: 0.1, y: 0.1}
306 | m_AnchorMax: {x: 0.9, y: 0.4}
307 | m_AnchoredPosition: {x: 0, y: 0}
308 | m_SizeDelta: {x: 154, y: 204}
309 | m_Pivot: {x: 0.5, y: 0.5}
310 | --- !u!114 &965650479
311 | MonoBehaviour:
312 | m_ObjectHideFlags: 0
313 | m_PrefabParentObject: {fileID: 0}
314 | m_PrefabInternal: {fileID: 0}
315 | m_GameObject: {fileID: 965650477}
316 | m_Enabled: 1
317 | m_EditorHideFlags: 0
318 | m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
319 | m_Name:
320 | m_EditorClassIdentifier:
321 | m_Material: {fileID: 0}
322 | m_Color: {r: 0.9058824, g: 1, b: 1, a: 1}
323 | m_RaycastTarget: 1
324 | m_OnCullStateChanged:
325 | m_PersistentCalls:
326 | m_Calls: []
327 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
328 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
329 | m_FontData:
330 | m_Font: {fileID: 12800000, guid: eaf6ebecc70a24a08bcf6fdfd75e4af7, type: 3}
331 | m_FontSize: 260
332 | m_FontStyle: 0
333 | m_BestFit: 0
334 | m_MinSize: 1
335 | m_MaxSize: 300
336 | m_Alignment: 4
337 | m_AlignByGeometry: 0
338 | m_RichText: 1
339 | m_HorizontalOverflow: 0
340 | m_VerticalOverflow: 0
341 | m_LineSpacing: 0.8
342 | m_Text:
343 | --- !u!222 &965650480
344 | CanvasRenderer:
345 | m_ObjectHideFlags: 0
346 | m_PrefabParentObject: {fileID: 0}
347 | m_PrefabInternal: {fileID: 0}
348 | m_GameObject: {fileID: 965650477}
349 | --- !u!1 &1209443202
350 | GameObject:
351 | m_ObjectHideFlags: 0
352 | m_PrefabParentObject: {fileID: 0}
353 | m_PrefabInternal: {fileID: 0}
354 | serializedVersion: 5
355 | m_Component:
356 | - component: {fileID: 1209443204}
357 | - component: {fileID: 1209443203}
358 | m_Layer: 0
359 | m_Name: DeepLink
360 | m_TagString: Untagged
361 | m_Icon: {fileID: 0}
362 | m_NavMeshLayer: 0
363 | m_StaticEditorFlags: 0
364 | m_IsActive: 1
365 | --- !u!114 &1209443203
366 | MonoBehaviour:
367 | m_ObjectHideFlags: 0
368 | m_PrefabParentObject: {fileID: 0}
369 | m_PrefabInternal: {fileID: 0}
370 | m_GameObject: {fileID: 1209443202}
371 | m_Enabled: 1
372 | m_EditorHideFlags: 0
373 | m_Script: {fileID: 11500000, guid: cb73512c827624a5b8aa148dd5d9d973, type: 3}
374 | m_Name:
375 | m_EditorClassIdentifier:
376 | label: {fileID: 965650479}
377 | --- !u!4 &1209443204
378 | Transform:
379 | m_ObjectHideFlags: 0
380 | m_PrefabParentObject: {fileID: 0}
381 | m_PrefabInternal: {fileID: 0}
382 | m_GameObject: {fileID: 1209443202}
383 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
384 | m_LocalPosition: {x: 0, y: 0, z: 0}
385 | m_LocalScale: {x: 1, y: 1, z: 1}
386 | m_Children: []
387 | m_Father: {fileID: 0}
388 | m_RootOrder: 4
389 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
390 | --- !u!1 &1288652115
391 | GameObject:
392 | m_ObjectHideFlags: 0
393 | m_PrefabParentObject: {fileID: 0}
394 | m_PrefabInternal: {fileID: 0}
395 | serializedVersion: 5
396 | m_Component:
397 | - component: {fileID: 1288652118}
398 | - component: {fileID: 1288652117}
399 | - component: {fileID: 1288652116}
400 | m_Layer: 0
401 | m_Name: EventSystem
402 | m_TagString: Untagged
403 | m_Icon: {fileID: 0}
404 | m_NavMeshLayer: 0
405 | m_StaticEditorFlags: 0
406 | m_IsActive: 1
407 | --- !u!114 &1288652116
408 | MonoBehaviour:
409 | m_ObjectHideFlags: 0
410 | m_PrefabParentObject: {fileID: 0}
411 | m_PrefabInternal: {fileID: 0}
412 | m_GameObject: {fileID: 1288652115}
413 | m_Enabled: 1
414 | m_EditorHideFlags: 0
415 | m_Script: {fileID: 1077351063, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
416 | m_Name:
417 | m_EditorClassIdentifier:
418 | m_HorizontalAxis: Horizontal
419 | m_VerticalAxis: Vertical
420 | m_SubmitButton: Submit
421 | m_CancelButton: Cancel
422 | m_InputActionsPerSecond: 10
423 | m_RepeatDelay: 0.5
424 | m_ForceModuleActive: 0
425 | --- !u!114 &1288652117
426 | MonoBehaviour:
427 | m_ObjectHideFlags: 0
428 | m_PrefabParentObject: {fileID: 0}
429 | m_PrefabInternal: {fileID: 0}
430 | m_GameObject: {fileID: 1288652115}
431 | m_Enabled: 1
432 | m_EditorHideFlags: 0
433 | m_Script: {fileID: -619905303, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
434 | m_Name:
435 | m_EditorClassIdentifier:
436 | m_FirstSelected: {fileID: 0}
437 | m_sendNavigationEvents: 1
438 | m_DragThreshold: 5
439 | --- !u!4 &1288652118
440 | Transform:
441 | m_ObjectHideFlags: 0
442 | m_PrefabParentObject: {fileID: 0}
443 | m_PrefabInternal: {fileID: 0}
444 | m_GameObject: {fileID: 1288652115}
445 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
446 | m_LocalPosition: {x: 0, y: 0, z: 0}
447 | m_LocalScale: {x: 1, y: 1, z: 1}
448 | m_Children: []
449 | m_Father: {fileID: 0}
450 | m_RootOrder: 3
451 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
452 | --- !u!1 &1485557121
453 | GameObject:
454 | m_ObjectHideFlags: 0
455 | m_PrefabParentObject: {fileID: 0}
456 | m_PrefabInternal: {fileID: 0}
457 | serializedVersion: 5
458 | m_Component:
459 | - component: {fileID: 1485557123}
460 | - component: {fileID: 1485557122}
461 | m_Layer: 0
462 | m_Name: Directional Light
463 | m_TagString: Untagged
464 | m_Icon: {fileID: 0}
465 | m_NavMeshLayer: 0
466 | m_StaticEditorFlags: 0
467 | m_IsActive: 1
468 | --- !u!108 &1485557122
469 | Light:
470 | m_ObjectHideFlags: 0
471 | m_PrefabParentObject: {fileID: 0}
472 | m_PrefabInternal: {fileID: 0}
473 | m_GameObject: {fileID: 1485557121}
474 | m_Enabled: 1
475 | serializedVersion: 7
476 | m_Type: 1
477 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
478 | m_Intensity: 1
479 | m_Range: 10
480 | m_SpotAngle: 30
481 | m_CookieSize: 10
482 | m_Shadows:
483 | m_Type: 2
484 | m_Resolution: -1
485 | m_CustomResolution: -1
486 | m_Strength: 1
487 | m_Bias: 0.05
488 | m_NormalBias: 0.4
489 | m_NearPlane: 0.2
490 | m_Cookie: {fileID: 0}
491 | m_DrawHalo: 0
492 | m_Flare: {fileID: 0}
493 | m_RenderMode: 0
494 | m_CullingMask:
495 | serializedVersion: 2
496 | m_Bits: 4294967295
497 | m_Lightmapping: 4
498 | m_AreaSize: {x: 1, y: 1}
499 | m_BounceIntensity: 1
500 | m_ShadowRadius: 0
501 | m_ShadowAngle: 0
502 | --- !u!4 &1485557123
503 | Transform:
504 | m_ObjectHideFlags: 0
505 | m_PrefabParentObject: {fileID: 0}
506 | m_PrefabInternal: {fileID: 0}
507 | m_GameObject: {fileID: 1485557121}
508 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
509 | m_LocalPosition: {x: 0, y: 3, z: 0}
510 | m_LocalScale: {x: 1, y: 1, z: 1}
511 | m_Children: []
512 | m_Father: {fileID: 0}
513 | m_RootOrder: 1
514 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
515 | --- !u!1 &1851320516
516 | GameObject:
517 | m_ObjectHideFlags: 0
518 | m_PrefabParentObject: {fileID: 0}
519 | m_PrefabInternal: {fileID: 0}
520 | serializedVersion: 5
521 | m_Component:
522 | - component: {fileID: 1851320517}
523 | - component: {fileID: 1851320519}
524 | - component: {fileID: 1851320518}
525 | m_Layer: 5
526 | m_Name: Top
527 | m_TagString: Untagged
528 | m_Icon: {fileID: 0}
529 | m_NavMeshLayer: 0
530 | m_StaticEditorFlags: 0
531 | m_IsActive: 1
532 | --- !u!224 &1851320517
533 | RectTransform:
534 | m_ObjectHideFlags: 0
535 | m_PrefabParentObject: {fileID: 0}
536 | m_PrefabInternal: {fileID: 0}
537 | m_GameObject: {fileID: 1851320516}
538 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
539 | m_LocalPosition: {x: 0, y: 0, z: 0}
540 | m_LocalScale: {x: 0.999978, y: 0.999978, z: 0.999978}
541 | m_Children: []
542 | m_Father: {fileID: 413933677}
543 | m_RootOrder: 0
544 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
545 | m_AnchorMin: {x: 0.1, y: 0.6}
546 | m_AnchorMax: {x: 0.9, y: 0.9}
547 | m_AnchoredPosition: {x: 0.5, y: 0}
548 | m_SizeDelta: {x: 153, y: 204}
549 | m_Pivot: {x: 0.5, y: 0.5}
550 | --- !u!114 &1851320518
551 | MonoBehaviour:
552 | m_ObjectHideFlags: 0
553 | m_PrefabParentObject: {fileID: 0}
554 | m_PrefabInternal: {fileID: 0}
555 | m_GameObject: {fileID: 1851320516}
556 | m_Enabled: 1
557 | m_EditorHideFlags: 0
558 | m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
559 | m_Name:
560 | m_EditorClassIdentifier:
561 | m_Material: {fileID: 0}
562 | m_Color: {r: 0.2647059, g: 0.25108135, b: 0.23940313, a: 1}
563 | m_RaycastTarget: 1
564 | m_OnCullStateChanged:
565 | m_PersistentCalls:
566 | m_Calls: []
567 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
568 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
569 | m_FontData:
570 | m_Font: {fileID: 12800000, guid: 379e1cda5590e45b892c512af4992e73, type: 3}
571 | m_FontSize: 148
572 | m_FontStyle: 0
573 | m_BestFit: 0
574 | m_MinSize: 1
575 | m_MaxSize: 259
576 | m_Alignment: 4
577 | m_AlignByGeometry: 0
578 | m_RichText: 1
579 | m_HorizontalOverflow: 0
580 | m_VerticalOverflow: 0
581 | m_LineSpacing: 0.8
582 | m_Text: Deep link
583 | --- !u!222 &1851320519
584 | CanvasRenderer:
585 | m_ObjectHideFlags: 0
586 | m_PrefabParentObject: {fileID: 0}
587 | m_PrefabInternal: {fileID: 0}
588 | m_GameObject: {fileID: 1851320516}
589 |
--------------------------------------------------------------------------------
/OSX/Override_OSX/Override_OSX.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 554696B01EC3213E005DE88B /* EPPZSwizzler.h in Headers */ = {isa = PBXBuildFile; fileRef = 554696AE1EC3213E005DE88B /* EPPZSwizzler.h */; };
11 | 554696B11EC3213E005DE88B /* EPPZSwizzler.m in Sources */ = {isa = PBXBuildFile; fileRef = 554696AF1EC3213E005DE88B /* EPPZSwizzler.m */; };
12 | 554696C71EC3234F005DE88B /* Override_OSX.h in Headers */ = {isa = PBXBuildFile; fileRef = 554696BF1EC3234F005DE88B /* Override_OSX.h */; };
13 | 554696C81EC3234F005DE88B /* Override_OSX.m in Sources */ = {isa = PBXBuildFile; fileRef = 554696C01EC3234F005DE88B /* Override_OSX.m */; };
14 | 554696CA1EC3234F005DE88B /* OverrideAppDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 554696C21EC3234F005DE88B /* OverrideAppDelegate.h */; };
15 | 554696CB1EC3234F005DE88B /* OverrideAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 554696C31EC3234F005DE88B /* OverrideAppDelegate.m */; };
16 | 554696CC1EC3234F005DE88B /* DeepLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 554696C41EC3234F005DE88B /* DeepLink.h */; };
17 | 554696CD1EC3234F005DE88B /* DeepLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 554696C51EC3234F005DE88B /* DeepLink.m */; };
18 | 554696CE1EC3234F005DE88B /* DeepLink_C++.mm in Sources */ = {isa = PBXBuildFile; fileRef = 554696C61EC3234F005DE88B /* DeepLink_C++.mm */; };
19 | 554696D71EC32723005DE88B /* PlayerAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 554696D61EC32723005DE88B /* PlayerAppDelegate.m */; };
20 | 554696DA1EC32723005DE88B /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 554696D91EC32723005DE88B /* main.m */; };
21 | 554696DF1EC32723005DE88B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 554696DE1EC32723005DE88B /* Assets.xcassets */; };
22 | 554696E21EC32723005DE88B /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 554696E01EC32723005DE88B /* Main.storyboard */; };
23 | 554696E71EC32739005DE88B /* Override_OSX.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 554696A31EC32084005DE88B /* Override_OSX.framework */; };
24 | 554696ED1EC33CC3005DE88B /* Override_OSX.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 554696A31EC32084005DE88B /* Override_OSX.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
25 | 5594AD731EC3877B00BC205C /* Override_OSX.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 554696A31EC32084005DE88B /* Override_OSX.framework */; };
26 | /* End PBXBuildFile section */
27 |
28 | /* Begin PBXContainerItemProxy section */
29 | 554696E81EC32741005DE88B /* PBXContainerItemProxy */ = {
30 | isa = PBXContainerItemProxy;
31 | containerPortal = 5546969A1EC32084005DE88B /* Project object */;
32 | proxyType = 1;
33 | remoteGlobalIDString = 554696A21EC32084005DE88B;
34 | remoteInfo = Override_OSX;
35 | };
36 | /* End PBXContainerItemProxy section */
37 |
38 | /* Begin PBXCopyFilesBuildPhase section */
39 | 554696EC1EC33CC1005DE88B /* CopyFiles */ = {
40 | isa = PBXCopyFilesBuildPhase;
41 | buildActionMask = 2147483647;
42 | dstPath = "";
43 | dstSubfolderSpec = 10;
44 | files = (
45 | 554696ED1EC33CC3005DE88B /* Override_OSX.framework in CopyFiles */,
46 | );
47 | runOnlyForDeploymentPostprocessing = 0;
48 | };
49 | 5594AD721EC3876900BC205C /* CopyFiles */ = {
50 | isa = PBXCopyFilesBuildPhase;
51 | buildActionMask = 2147483647;
52 | dstPath = "~/Projects/Unity/Blog/Override_App_Delegate/Build/OSX/Override.app/Contents/Frameworks";
53 | dstSubfolderSpec = 0;
54 | files = (
55 | 5594AD731EC3877B00BC205C /* Override_OSX.framework in CopyFiles */,
56 | );
57 | runOnlyForDeploymentPostprocessing = 0;
58 | };
59 | /* End PBXCopyFilesBuildPhase section */
60 |
61 | /* Begin PBXFileReference section */
62 | 554696A31EC32084005DE88B /* Override_OSX.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Override_OSX.framework; sourceTree = BUILT_PRODUCTS_DIR; };
63 | 554696A81EC32085005DE88B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
64 | 554696AE1EC3213E005DE88B /* EPPZSwizzler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EPPZSwizzler.h; sourceTree = ""; };
65 | 554696AF1EC3213E005DE88B /* EPPZSwizzler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EPPZSwizzler.m; sourceTree = ""; };
66 | 554696BF1EC3234F005DE88B /* Override_OSX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Override_OSX.h; sourceTree = ""; };
67 | 554696C01EC3234F005DE88B /* Override_OSX.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Override_OSX.m; sourceTree = ""; };
68 | 554696C11EC3234F005DE88B /* UnityString_C++.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "UnityString_C++.mm"; sourceTree = ""; };
69 | 554696C21EC3234F005DE88B /* OverrideAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OverrideAppDelegate.h; sourceTree = ""; };
70 | 554696C31EC3234F005DE88B /* OverrideAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OverrideAppDelegate.m; sourceTree = ""; };
71 | 554696C41EC3234F005DE88B /* DeepLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeepLink.h; sourceTree = ""; };
72 | 554696C51EC3234F005DE88B /* DeepLink.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DeepLink.m; sourceTree = ""; };
73 | 554696C61EC3234F005DE88B /* DeepLink_C++.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "DeepLink_C++.mm"; sourceTree = ""; };
74 | 554696D31EC32723005DE88B /* Override_OSX_Sandbox.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Override_OSX_Sandbox.app; sourceTree = BUILT_PRODUCTS_DIR; };
75 | 554696D51EC32723005DE88B /* PlayerAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlayerAppDelegate.h; sourceTree = ""; };
76 | 554696D61EC32723005DE88B /* PlayerAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PlayerAppDelegate.m; sourceTree = ""; };
77 | 554696D91EC32723005DE88B /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
78 | 554696DE1EC32723005DE88B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
79 | 554696E11EC32723005DE88B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
80 | 554696E31EC32723005DE88B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
81 | /* End PBXFileReference section */
82 |
83 | /* Begin PBXFrameworksBuildPhase section */
84 | 5546969F1EC32084005DE88B /* Frameworks */ = {
85 | isa = PBXFrameworksBuildPhase;
86 | buildActionMask = 2147483647;
87 | files = (
88 | );
89 | runOnlyForDeploymentPostprocessing = 0;
90 | };
91 | 554696D01EC32723005DE88B /* Frameworks */ = {
92 | isa = PBXFrameworksBuildPhase;
93 | buildActionMask = 2147483647;
94 | files = (
95 | 554696E71EC32739005DE88B /* Override_OSX.framework in Frameworks */,
96 | );
97 | runOnlyForDeploymentPostprocessing = 0;
98 | };
99 | /* End PBXFrameworksBuildPhase section */
100 |
101 | /* Begin PBXGroup section */
102 | 554696991EC32084005DE88B = {
103 | isa = PBXGroup;
104 | children = (
105 | 554696A51EC32084005DE88B /* Override_OSX */,
106 | 554696D41EC32723005DE88B /* Override_OSX_Sandbox */,
107 | 554696A41EC32084005DE88B /* Products */,
108 | );
109 | sourceTree = "";
110 | };
111 | 554696A41EC32084005DE88B /* Products */ = {
112 | isa = PBXGroup;
113 | children = (
114 | 554696A31EC32084005DE88B /* Override_OSX.framework */,
115 | 554696D31EC32723005DE88B /* Override_OSX_Sandbox.app */,
116 | );
117 | name = Products;
118 | sourceTree = "";
119 | };
120 | 554696A51EC32084005DE88B /* Override_OSX */ = {
121 | isa = PBXGroup;
122 | children = (
123 | 554696B21EC32145005DE88B /* eppz! swizzler */,
124 | 554696BF1EC3234F005DE88B /* Override_OSX.h */,
125 | 554696C01EC3234F005DE88B /* Override_OSX.m */,
126 | 554696C11EC3234F005DE88B /* UnityString_C++.mm */,
127 | 554696C21EC3234F005DE88B /* OverrideAppDelegate.h */,
128 | 554696C31EC3234F005DE88B /* OverrideAppDelegate.m */,
129 | 554696C41EC3234F005DE88B /* DeepLink.h */,
130 | 554696C51EC3234F005DE88B /* DeepLink.m */,
131 | 554696C61EC3234F005DE88B /* DeepLink_C++.mm */,
132 | 554696A81EC32085005DE88B /* Info.plist */,
133 | );
134 | path = Override_OSX;
135 | sourceTree = "";
136 | };
137 | 554696B21EC32145005DE88B /* eppz! swizzler */ = {
138 | isa = PBXGroup;
139 | children = (
140 | 554696AE1EC3213E005DE88B /* EPPZSwizzler.h */,
141 | 554696AF1EC3213E005DE88B /* EPPZSwizzler.m */,
142 | );
143 | name = "eppz! swizzler";
144 | sourceTree = "";
145 | };
146 | 554696D41EC32723005DE88B /* Override_OSX_Sandbox */ = {
147 | isa = PBXGroup;
148 | children = (
149 | 554696D51EC32723005DE88B /* PlayerAppDelegate.h */,
150 | 554696D61EC32723005DE88B /* PlayerAppDelegate.m */,
151 | 554696DE1EC32723005DE88B /* Assets.xcassets */,
152 | 554696E01EC32723005DE88B /* Main.storyboard */,
153 | 554696E31EC32723005DE88B /* Info.plist */,
154 | 554696D81EC32723005DE88B /* Supporting Files */,
155 | );
156 | path = Override_OSX_Sandbox;
157 | sourceTree = "";
158 | };
159 | 554696D81EC32723005DE88B /* Supporting Files */ = {
160 | isa = PBXGroup;
161 | children = (
162 | 554696D91EC32723005DE88B /* main.m */,
163 | );
164 | name = "Supporting Files";
165 | sourceTree = "";
166 | };
167 | /* End PBXGroup section */
168 |
169 | /* Begin PBXHeadersBuildPhase section */
170 | 554696A01EC32084005DE88B /* Headers */ = {
171 | isa = PBXHeadersBuildPhase;
172 | buildActionMask = 2147483647;
173 | files = (
174 | 554696B01EC3213E005DE88B /* EPPZSwizzler.h in Headers */,
175 | 554696CC1EC3234F005DE88B /* DeepLink.h in Headers */,
176 | 554696C71EC3234F005DE88B /* Override_OSX.h in Headers */,
177 | 554696CA1EC3234F005DE88B /* OverrideAppDelegate.h in Headers */,
178 | );
179 | runOnlyForDeploymentPostprocessing = 0;
180 | };
181 | /* End PBXHeadersBuildPhase section */
182 |
183 | /* Begin PBXNativeTarget section */
184 | 554696A21EC32084005DE88B /* Override_OSX */ = {
185 | isa = PBXNativeTarget;
186 | buildConfigurationList = 554696AB1EC32085005DE88B /* Build configuration list for PBXNativeTarget "Override_OSX" */;
187 | buildPhases = (
188 | 5546969E1EC32084005DE88B /* Sources */,
189 | 5546969F1EC32084005DE88B /* Frameworks */,
190 | 554696A01EC32084005DE88B /* Headers */,
191 | 554696A11EC32084005DE88B /* Resources */,
192 | 5594AD721EC3876900BC205C /* CopyFiles */,
193 | 55793FA01EC3C7C7001269F5 /* ShellScript */,
194 | );
195 | buildRules = (
196 | );
197 | dependencies = (
198 | );
199 | name = Override_OSX;
200 | productName = Override_OSX;
201 | productReference = 554696A31EC32084005DE88B /* Override_OSX.framework */;
202 | productType = "com.apple.product-type.framework";
203 | };
204 | 554696D21EC32723005DE88B /* Override_OSX_Sandbox */ = {
205 | isa = PBXNativeTarget;
206 | buildConfigurationList = 554696E41EC32723005DE88B /* Build configuration list for PBXNativeTarget "Override_OSX_Sandbox" */;
207 | buildPhases = (
208 | 554696CF1EC32723005DE88B /* Sources */,
209 | 554696D01EC32723005DE88B /* Frameworks */,
210 | 554696D11EC32723005DE88B /* Resources */,
211 | 554696EC1EC33CC1005DE88B /* CopyFiles */,
212 | );
213 | buildRules = (
214 | );
215 | dependencies = (
216 | 554696E91EC32741005DE88B /* PBXTargetDependency */,
217 | );
218 | name = Override_OSX_Sandbox;
219 | productName = Override_OSX_Sandbox;
220 | productReference = 554696D31EC32723005DE88B /* Override_OSX_Sandbox.app */;
221 | productType = "com.apple.product-type.application";
222 | };
223 | /* End PBXNativeTarget section */
224 |
225 | /* Begin PBXProject section */
226 | 5546969A1EC32084005DE88B /* Project object */ = {
227 | isa = PBXProject;
228 | attributes = {
229 | LastUpgradeCheck = 0730;
230 | ORGANIZATIONNAME = "eppz!";
231 | TargetAttributes = {
232 | 554696A21EC32084005DE88B = {
233 | CreatedOnToolsVersion = 7.3.1;
234 | };
235 | 554696D21EC32723005DE88B = {
236 | CreatedOnToolsVersion = 7.3.1;
237 | };
238 | };
239 | };
240 | buildConfigurationList = 5546969D1EC32084005DE88B /* Build configuration list for PBXProject "Override_OSX" */;
241 | compatibilityVersion = "Xcode 3.2";
242 | developmentRegion = English;
243 | hasScannedForEncodings = 0;
244 | knownRegions = (
245 | en,
246 | Base,
247 | );
248 | mainGroup = 554696991EC32084005DE88B;
249 | productRefGroup = 554696A41EC32084005DE88B /* Products */;
250 | projectDirPath = "";
251 | projectRoot = "";
252 | targets = (
253 | 554696A21EC32084005DE88B /* Override_OSX */,
254 | 554696D21EC32723005DE88B /* Override_OSX_Sandbox */,
255 | );
256 | };
257 | /* End PBXProject section */
258 |
259 | /* Begin PBXResourcesBuildPhase section */
260 | 554696A11EC32084005DE88B /* Resources */ = {
261 | isa = PBXResourcesBuildPhase;
262 | buildActionMask = 2147483647;
263 | files = (
264 | );
265 | runOnlyForDeploymentPostprocessing = 0;
266 | };
267 | 554696D11EC32723005DE88B /* Resources */ = {
268 | isa = PBXResourcesBuildPhase;
269 | buildActionMask = 2147483647;
270 | files = (
271 | 554696DF1EC32723005DE88B /* Assets.xcassets in Resources */,
272 | 554696E21EC32723005DE88B /* Main.storyboard in Resources */,
273 | );
274 | runOnlyForDeploymentPostprocessing = 0;
275 | };
276 | /* End PBXResourcesBuildPhase section */
277 |
278 | /* Begin PBXShellScriptBuildPhase section */
279 | 55793FA01EC3C7C7001269F5 /* ShellScript */ = {
280 | isa = PBXShellScriptBuildPhase;
281 | buildActionMask = 2147483647;
282 | files = (
283 | );
284 | inputPaths = (
285 | );
286 | outputPaths = (
287 | );
288 | runOnlyForDeploymentPostprocessing = 0;
289 | shellPath = /bin/sh;
290 | shellScript = "optool install -c load -p \"@executable_path/../Frameworks/Override_OSX.framework/Versions/A/Override_OSX\" -t ~/Projects/Unity/Blog/Override_App_Delegate/Build/OSX/Override.app/Contents/MacOS/Override";
291 | };
292 | /* End PBXShellScriptBuildPhase section */
293 |
294 | /* Begin PBXSourcesBuildPhase section */
295 | 5546969E1EC32084005DE88B /* Sources */ = {
296 | isa = PBXSourcesBuildPhase;
297 | buildActionMask = 2147483647;
298 | files = (
299 | 554696CB1EC3234F005DE88B /* OverrideAppDelegate.m in Sources */,
300 | 554696CE1EC3234F005DE88B /* DeepLink_C++.mm in Sources */,
301 | 554696B11EC3213E005DE88B /* EPPZSwizzler.m in Sources */,
302 | 554696CD1EC3234F005DE88B /* DeepLink.m in Sources */,
303 | 554696C81EC3234F005DE88B /* Override_OSX.m in Sources */,
304 | );
305 | runOnlyForDeploymentPostprocessing = 0;
306 | };
307 | 554696CF1EC32723005DE88B /* Sources */ = {
308 | isa = PBXSourcesBuildPhase;
309 | buildActionMask = 2147483647;
310 | files = (
311 | 554696DA1EC32723005DE88B /* main.m in Sources */,
312 | 554696D71EC32723005DE88B /* PlayerAppDelegate.m in Sources */,
313 | );
314 | runOnlyForDeploymentPostprocessing = 0;
315 | };
316 | /* End PBXSourcesBuildPhase section */
317 |
318 | /* Begin PBXTargetDependency section */
319 | 554696E91EC32741005DE88B /* PBXTargetDependency */ = {
320 | isa = PBXTargetDependency;
321 | target = 554696A21EC32084005DE88B /* Override_OSX */;
322 | targetProxy = 554696E81EC32741005DE88B /* PBXContainerItemProxy */;
323 | };
324 | /* End PBXTargetDependency section */
325 |
326 | /* Begin PBXVariantGroup section */
327 | 554696E01EC32723005DE88B /* Main.storyboard */ = {
328 | isa = PBXVariantGroup;
329 | children = (
330 | 554696E11EC32723005DE88B /* Base */,
331 | );
332 | name = Main.storyboard;
333 | sourceTree = "";
334 | };
335 | /* End PBXVariantGroup section */
336 |
337 | /* Begin XCBuildConfiguration section */
338 | 554696A91EC32085005DE88B /* Debug */ = {
339 | isa = XCBuildConfiguration;
340 | buildSettings = {
341 | ALWAYS_SEARCH_USER_PATHS = NO;
342 | CLANG_ANALYZER_NONNULL = YES;
343 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
344 | CLANG_CXX_LIBRARY = "libc++";
345 | CLANG_ENABLE_MODULES = YES;
346 | CLANG_ENABLE_OBJC_ARC = YES;
347 | CLANG_WARN_BOOL_CONVERSION = YES;
348 | CLANG_WARN_CONSTANT_CONVERSION = YES;
349 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
350 | CLANG_WARN_EMPTY_BODY = YES;
351 | CLANG_WARN_ENUM_CONVERSION = YES;
352 | CLANG_WARN_INT_CONVERSION = YES;
353 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
354 | CLANG_WARN_UNREACHABLE_CODE = YES;
355 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
356 | CODE_SIGN_IDENTITY = "-";
357 | COPY_PHASE_STRIP = NO;
358 | CURRENT_PROJECT_VERSION = 1;
359 | DEBUG_INFORMATION_FORMAT = dwarf;
360 | ENABLE_STRICT_OBJC_MSGSEND = YES;
361 | ENABLE_TESTABILITY = YES;
362 | GCC_C_LANGUAGE_STANDARD = gnu99;
363 | GCC_DYNAMIC_NO_PIC = NO;
364 | GCC_NO_COMMON_BLOCKS = YES;
365 | GCC_OPTIMIZATION_LEVEL = 0;
366 | GCC_PREPROCESSOR_DEFINITIONS = (
367 | "DEBUG=1",
368 | "$(inherited)",
369 | );
370 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
371 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
372 | GCC_WARN_UNDECLARED_SELECTOR = YES;
373 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
374 | GCC_WARN_UNUSED_FUNCTION = YES;
375 | GCC_WARN_UNUSED_VARIABLE = YES;
376 | MACOSX_DEPLOYMENT_TARGET = 10.11;
377 | MTL_ENABLE_DEBUG_INFO = YES;
378 | ONLY_ACTIVE_ARCH = YES;
379 | SDKROOT = macosx;
380 | VERSIONING_SYSTEM = "apple-generic";
381 | VERSION_INFO_PREFIX = "";
382 | };
383 | name = Debug;
384 | };
385 | 554696AA1EC32085005DE88B /* Release */ = {
386 | isa = XCBuildConfiguration;
387 | buildSettings = {
388 | ALWAYS_SEARCH_USER_PATHS = NO;
389 | CLANG_ANALYZER_NONNULL = YES;
390 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
391 | CLANG_CXX_LIBRARY = "libc++";
392 | CLANG_ENABLE_MODULES = YES;
393 | CLANG_ENABLE_OBJC_ARC = YES;
394 | CLANG_WARN_BOOL_CONVERSION = YES;
395 | CLANG_WARN_CONSTANT_CONVERSION = YES;
396 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
397 | CLANG_WARN_EMPTY_BODY = YES;
398 | CLANG_WARN_ENUM_CONVERSION = YES;
399 | CLANG_WARN_INT_CONVERSION = YES;
400 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
401 | CLANG_WARN_UNREACHABLE_CODE = YES;
402 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
403 | CODE_SIGN_IDENTITY = "-";
404 | COPY_PHASE_STRIP = NO;
405 | CURRENT_PROJECT_VERSION = 1;
406 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
407 | ENABLE_NS_ASSERTIONS = NO;
408 | ENABLE_STRICT_OBJC_MSGSEND = YES;
409 | GCC_C_LANGUAGE_STANDARD = gnu99;
410 | GCC_NO_COMMON_BLOCKS = YES;
411 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
412 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
413 | GCC_WARN_UNDECLARED_SELECTOR = YES;
414 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
415 | GCC_WARN_UNUSED_FUNCTION = YES;
416 | GCC_WARN_UNUSED_VARIABLE = YES;
417 | MACOSX_DEPLOYMENT_TARGET = 10.11;
418 | MTL_ENABLE_DEBUG_INFO = NO;
419 | SDKROOT = macosx;
420 | VERSIONING_SYSTEM = "apple-generic";
421 | VERSION_INFO_PREFIX = "";
422 | };
423 | name = Release;
424 | };
425 | 554696AC1EC32085005DE88B /* Debug */ = {
426 | isa = XCBuildConfiguration;
427 | buildSettings = {
428 | COMBINE_HIDPI_IMAGES = YES;
429 | DEFINES_MODULE = YES;
430 | DYLIB_COMPATIBILITY_VERSION = 1;
431 | DYLIB_CURRENT_VERSION = 1;
432 | DYLIB_INSTALL_NAME_BASE = "@rpath";
433 | FRAMEWORK_VERSION = A;
434 | INFOPLIST_FILE = Override_OSX/Info.plist;
435 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
436 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
437 | PRODUCT_BUNDLE_IDENTIFIER = "com.eppz.Override-OSX";
438 | PRODUCT_NAME = "$(TARGET_NAME)";
439 | SKIP_INSTALL = YES;
440 | };
441 | name = Debug;
442 | };
443 | 554696AD1EC32085005DE88B /* Release */ = {
444 | isa = XCBuildConfiguration;
445 | buildSettings = {
446 | COMBINE_HIDPI_IMAGES = YES;
447 | DEFINES_MODULE = YES;
448 | DYLIB_COMPATIBILITY_VERSION = 1;
449 | DYLIB_CURRENT_VERSION = 1;
450 | DYLIB_INSTALL_NAME_BASE = "@rpath";
451 | FRAMEWORK_VERSION = A;
452 | INFOPLIST_FILE = Override_OSX/Info.plist;
453 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
454 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
455 | PRODUCT_BUNDLE_IDENTIFIER = "com.eppz.Override-OSX";
456 | PRODUCT_NAME = "$(TARGET_NAME)";
457 | SKIP_INSTALL = YES;
458 | };
459 | name = Release;
460 | };
461 | 554696E51EC32723005DE88B /* Debug */ = {
462 | isa = XCBuildConfiguration;
463 | buildSettings = {
464 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
465 | COMBINE_HIDPI_IMAGES = YES;
466 | INFOPLIST_FILE = Override_OSX_Sandbox/Info.plist;
467 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
468 | PRODUCT_BUNDLE_IDENTIFIER = "com.eppz.Override-OSX-Sandbox";
469 | PRODUCT_NAME = "$(TARGET_NAME)";
470 | };
471 | name = Debug;
472 | };
473 | 554696E61EC32723005DE88B /* Release */ = {
474 | isa = XCBuildConfiguration;
475 | buildSettings = {
476 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
477 | COMBINE_HIDPI_IMAGES = YES;
478 | INFOPLIST_FILE = Override_OSX_Sandbox/Info.plist;
479 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
480 | PRODUCT_BUNDLE_IDENTIFIER = "com.eppz.Override-OSX-Sandbox";
481 | PRODUCT_NAME = "$(TARGET_NAME)";
482 | };
483 | name = Release;
484 | };
485 | /* End XCBuildConfiguration section */
486 |
487 | /* Begin XCConfigurationList section */
488 | 5546969D1EC32084005DE88B /* Build configuration list for PBXProject "Override_OSX" */ = {
489 | isa = XCConfigurationList;
490 | buildConfigurations = (
491 | 554696A91EC32085005DE88B /* Debug */,
492 | 554696AA1EC32085005DE88B /* Release */,
493 | );
494 | defaultConfigurationIsVisible = 0;
495 | defaultConfigurationName = Release;
496 | };
497 | 554696AB1EC32085005DE88B /* Build configuration list for PBXNativeTarget "Override_OSX" */ = {
498 | isa = XCConfigurationList;
499 | buildConfigurations = (
500 | 554696AC1EC32085005DE88B /* Debug */,
501 | 554696AD1EC32085005DE88B /* Release */,
502 | );
503 | defaultConfigurationIsVisible = 0;
504 | defaultConfigurationName = Release;
505 | };
506 | 554696E41EC32723005DE88B /* Build configuration list for PBXNativeTarget "Override_OSX_Sandbox" */ = {
507 | isa = XCConfigurationList;
508 | buildConfigurations = (
509 | 554696E51EC32723005DE88B /* Debug */,
510 | 554696E61EC32723005DE88B /* Release */,
511 | );
512 | defaultConfigurationIsVisible = 0;
513 | defaultConfigurationName = Release;
514 | };
515 | /* End XCConfigurationList section */
516 | };
517 | rootObject = 5546969A1EC32084005DE88B /* Project object */;
518 | }
519 |
--------------------------------------------------------------------------------