├── .gitignore
├── Assets
├── Art.meta
├── Art
│ ├── apple.png
│ ├── apple.png.meta
│ ├── ic_knife.png
│ ├── ic_knife.png.meta
│ ├── knife.png
│ ├── knife.png.meta
│ ├── log.png
│ └── log.png.meta
├── ExternalDependencyManager
│ └── Editor
│ │ ├── CHANGELOG.md
│ │ ├── Google.IOSResolver_v1.2.162.dll
│ │ ├── Google.IOSResolver_v1.2.162.dll.mdb
│ │ ├── Google.JarResolver_v1.2.162.dll
│ │ ├── Google.JarResolver_v1.2.162.dll.mdb
│ │ ├── Google.PackageManagerResolver_v1.2.162.dll
│ │ ├── Google.PackageManagerResolver_v1.2.162.dll.mdb
│ │ ├── Google.VersionHandler.dll
│ │ ├── Google.VersionHandler.dll.mdb
│ │ ├── Google.VersionHandlerImpl_v1.2.162.dll
│ │ ├── Google.VersionHandlerImpl_v1.2.162.dll.mdb
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── external-dependency-manager_version-1.2.162_manifest.txt
├── Plugins.meta
├── Plugins
│ └── Android
│ │ ├── AndroidManifest.xml
│ │ └── launcherTemplate.gradle
├── Prefabs.meta
├── Prefabs
│ ├── IconKnife.prefab
│ ├── IconKnife.prefab.meta
│ ├── Knife.prefab
│ └── Knife.prefab.meta
├── Pushe
│ ├── Editor
│ │ └── PusheDependencies.xml
│ ├── PusheUnity.cs
│ ├── SampleCode.cs
│ ├── Templates
│ │ ├── AndroidManifest.xml
│ │ ├── U_2017
│ │ │ └── mainTemplate.gradle
│ │ ├── U_2018_4
│ │ │ └── mainTemplate.gradle
│ │ └── U_2019_4
│ │ │ └── launcherTemplate.gradle
│ ├── android
│ │ ├── IPusheInAppMessagingListener.cs
│ │ ├── IPusheNotificationListener.cs
│ │ ├── PusheAnalytics.cs
│ │ ├── PusheAndroidUtils.cs
│ │ ├── PusheCore.cs
│ │ ├── PusheInAppMessaging.cs
│ │ ├── PusheNotification.cs
│ │ └── PusheUtils.cs
│ └── ios
│ │ ├── PusheiOSUnityInterface.cs
│ │ └── PusheiOSUnityInterface.mm
├── Scripts.meta
├── Scripts
│ ├── GameController.cs
│ ├── GameController.cs.meta
│ ├── GameUi.cs
│ ├── GameUi.cs.meta
│ ├── KnifeScripts.cs
│ ├── KnifeScripts.cs.meta
│ ├── LogRotation.cs
│ └── LogRotation.cs.meta
├── WoodenParticleMaterial.mat
├── WoodenParticleMaterial.mat.meta
├── knife_hit.unity
└── knife_hit.unity.meta
├── ProjectSettings
├── AndroidResolverDependencies.xml
├── AudioManager.asset
├── ClusterInputManager.asset
├── DynamicsManager.asset
├── EditorBuildSettings.asset
├── EditorSettings.asset
├── GraphicsSettings.asset
├── GvhProjectSettings.xml
├── InputManager.asset
├── NavMeshAreas.asset
├── NetworkManager.asset
├── PackageManagerSettings.asset
├── Physics2DSettings.asset
├── PresetManager.asset
├── ProjectSettings.asset
├── ProjectVersion.txt
├── QualitySettings.asset
├── TagManager.asset
├── TimeManager.asset
├── UnityConnectSettings.asset
├── VFXManager.asset
└── XRSettings.asset
├── README.md
└── apple_test.png
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | Library
3 | obj
4 | Temp
5 | Logs
6 | Packages
7 | UnityPackageManager
8 | *.csproj
9 | *.sln
10 | *.apk
11 | *.exe
12 | *.meta
13 | Assets/Plugins/Android/*.jar
14 | Assets/Plugins/Android/*.aar
15 |
--------------------------------------------------------------------------------
/Assets/Art.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c5e1855fe81789940bd5fafa0f108c07
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Art/apple.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pusheco/pushe-unity-sample/a875fa9b7f5a770507b8bb462a543b1fc6d5ecca/Assets/Art/apple.png
--------------------------------------------------------------------------------
/Assets/Art/apple.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6fcd0ee7c1f04cc43b6655f345ab21e8
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | grayScaleToAlpha: 0
27 | generateCubemap: 6
28 | cubemapConvolution: 0
29 | seamlessCubemap: 0
30 | textureFormat: 1
31 | maxTextureSize: 2048
32 | textureSettings:
33 | serializedVersion: 2
34 | filterMode: -1
35 | aniso: -1
36 | mipBias: -100
37 | wrapU: 1
38 | wrapV: 1
39 | wrapW: 1
40 | nPOTScale: 0
41 | lightmap: 0
42 | compressionQuality: 50
43 | spriteMode: 1
44 | spriteExtrude: 0
45 | spriteMeshType: 1
46 | alignment: 0
47 | spritePivot: {x: 0.5, y: 0.5}
48 | spritePixelsToUnits: 100
49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
50 | spriteGenerateFallbackPhysicsShape: 1
51 | alphaUsage: 1
52 | alphaIsTransparency: 1
53 | spriteTessellationDetail: -1
54 | textureType: 8
55 | textureShape: 1
56 | singleChannelComponent: 0
57 | maxTextureSizeSet: 0
58 | compressionQualitySet: 0
59 | textureFormatSet: 0
60 | applyGammaDecoding: 1
61 | platformSettings:
62 | - serializedVersion: 3
63 | buildTarget: DefaultTexturePlatform
64 | maxTextureSize: 512
65 | resizeAlgorithm: 0
66 | textureFormat: -1
67 | textureCompression: 1
68 | compressionQuality: 50
69 | crunchedCompression: 0
70 | allowsAlphaSplitting: 0
71 | overridden: 0
72 | androidETC2FallbackOverride: 0
73 | forceMaximumCompressionQuality_BC6H_BC7: 1
74 | - serializedVersion: 3
75 | buildTarget: Standalone
76 | maxTextureSize: 512
77 | resizeAlgorithm: 0
78 | textureFormat: -1
79 | textureCompression: 1
80 | compressionQuality: 50
81 | crunchedCompression: 0
82 | allowsAlphaSplitting: 0
83 | overridden: 0
84 | androidETC2FallbackOverride: 0
85 | forceMaximumCompressionQuality_BC6H_BC7: 1
86 | - serializedVersion: 3
87 | buildTarget: Android
88 | maxTextureSize: 512
89 | resizeAlgorithm: 0
90 | textureFormat: -1
91 | textureCompression: 1
92 | compressionQuality: 50
93 | crunchedCompression: 0
94 | allowsAlphaSplitting: 0
95 | overridden: 0
96 | androidETC2FallbackOverride: 0
97 | forceMaximumCompressionQuality_BC6H_BC7: 1
98 | spriteSheet:
99 | serializedVersion: 2
100 | sprites: []
101 | outline: []
102 | physicsShape: []
103 | bones: []
104 | spriteID: 5e97eb03825dee720800000000000000
105 | internalID: 0
106 | vertices: []
107 | indices:
108 | edges: []
109 | weights: []
110 | secondaryTextures: []
111 | spritePackingTag:
112 | pSDRemoveMatte: 0
113 | pSDShowRemoveMatteOption: 0
114 | userData:
115 | assetBundleName:
116 | assetBundleVariant:
117 |
--------------------------------------------------------------------------------
/Assets/Art/ic_knife.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pusheco/pushe-unity-sample/a875fa9b7f5a770507b8bb462a543b1fc6d5ecca/Assets/Art/ic_knife.png
--------------------------------------------------------------------------------
/Assets/Art/ic_knife.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 295e86c57732e2e4198489c8824355b4
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | grayScaleToAlpha: 0
27 | generateCubemap: 6
28 | cubemapConvolution: 0
29 | seamlessCubemap: 0
30 | textureFormat: 1
31 | maxTextureSize: 2048
32 | textureSettings:
33 | serializedVersion: 2
34 | filterMode: -1
35 | aniso: -1
36 | mipBias: -100
37 | wrapU: 1
38 | wrapV: 1
39 | wrapW: 1
40 | nPOTScale: 0
41 | lightmap: 0
42 | compressionQuality: 50
43 | spriteMode: 1
44 | spriteExtrude: 1
45 | spriteMeshType: 1
46 | alignment: 0
47 | spritePivot: {x: 0.5, y: 0.5}
48 | spritePixelsToUnits: 300
49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
50 | spriteGenerateFallbackPhysicsShape: 1
51 | alphaUsage: 1
52 | alphaIsTransparency: 1
53 | spriteTessellationDetail: -1
54 | textureType: 8
55 | textureShape: 1
56 | singleChannelComponent: 0
57 | maxTextureSizeSet: 0
58 | compressionQualitySet: 0
59 | textureFormatSet: 0
60 | applyGammaDecoding: 1
61 | platformSettings:
62 | - serializedVersion: 3
63 | buildTarget: DefaultTexturePlatform
64 | maxTextureSize: 2048
65 | resizeAlgorithm: 0
66 | textureFormat: -1
67 | textureCompression: 1
68 | compressionQuality: 50
69 | crunchedCompression: 0
70 | allowsAlphaSplitting: 0
71 | overridden: 0
72 | androidETC2FallbackOverride: 0
73 | forceMaximumCompressionQuality_BC6H_BC7: 1
74 | - serializedVersion: 3
75 | buildTarget: Standalone
76 | maxTextureSize: 2048
77 | resizeAlgorithm: 0
78 | textureFormat: -1
79 | textureCompression: 1
80 | compressionQuality: 50
81 | crunchedCompression: 0
82 | allowsAlphaSplitting: 0
83 | overridden: 0
84 | androidETC2FallbackOverride: 0
85 | forceMaximumCompressionQuality_BC6H_BC7: 1
86 | - serializedVersion: 3
87 | buildTarget: Android
88 | maxTextureSize: 2048
89 | resizeAlgorithm: 0
90 | textureFormat: -1
91 | textureCompression: 1
92 | compressionQuality: 50
93 | crunchedCompression: 0
94 | allowsAlphaSplitting: 0
95 | overridden: 0
96 | androidETC2FallbackOverride: 0
97 | forceMaximumCompressionQuality_BC6H_BC7: 1
98 | spriteSheet:
99 | serializedVersion: 2
100 | sprites: []
101 | outline: []
102 | physicsShape: []
103 | bones: []
104 | spriteID: 5e97eb03825dee720800000000000000
105 | internalID: 0
106 | vertices: []
107 | indices:
108 | edges: []
109 | weights: []
110 | secondaryTextures: []
111 | spritePackingTag:
112 | pSDRemoveMatte: 0
113 | pSDShowRemoveMatteOption: 0
114 | userData:
115 | assetBundleName:
116 | assetBundleVariant:
117 |
--------------------------------------------------------------------------------
/Assets/Art/knife.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pusheco/pushe-unity-sample/a875fa9b7f5a770507b8bb462a543b1fc6d5ecca/Assets/Art/knife.png
--------------------------------------------------------------------------------
/Assets/Art/knife.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: af751c16edb9ad5428498135f342ddc5
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | grayScaleToAlpha: 0
27 | generateCubemap: 6
28 | cubemapConvolution: 0
29 | seamlessCubemap: 0
30 | textureFormat: 1
31 | maxTextureSize: 2048
32 | textureSettings:
33 | serializedVersion: 2
34 | filterMode: -1
35 | aniso: -1
36 | mipBias: -100
37 | wrapU: 1
38 | wrapV: 1
39 | wrapW: 1
40 | nPOTScale: 0
41 | lightmap: 0
42 | compressionQuality: 50
43 | spriteMode: 1
44 | spriteExtrude: 1
45 | spriteMeshType: 1
46 | alignment: 0
47 | spritePivot: {x: 0.5, y: 0.5}
48 | spritePixelsToUnits: 300
49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
50 | spriteGenerateFallbackPhysicsShape: 1
51 | alphaUsage: 1
52 | alphaIsTransparency: 1
53 | spriteTessellationDetail: -1
54 | textureType: 8
55 | textureShape: 1
56 | singleChannelComponent: 0
57 | maxTextureSizeSet: 0
58 | compressionQualitySet: 0
59 | textureFormatSet: 0
60 | applyGammaDecoding: 1
61 | platformSettings:
62 | - serializedVersion: 3
63 | buildTarget: DefaultTexturePlatform
64 | maxTextureSize: 2048
65 | resizeAlgorithm: 0
66 | textureFormat: -1
67 | textureCompression: 1
68 | compressionQuality: 50
69 | crunchedCompression: 0
70 | allowsAlphaSplitting: 0
71 | overridden: 0
72 | androidETC2FallbackOverride: 0
73 | forceMaximumCompressionQuality_BC6H_BC7: 1
74 | - serializedVersion: 3
75 | buildTarget: Standalone
76 | maxTextureSize: 2048
77 | resizeAlgorithm: 0
78 | textureFormat: -1
79 | textureCompression: 1
80 | compressionQuality: 50
81 | crunchedCompression: 0
82 | allowsAlphaSplitting: 0
83 | overridden: 0
84 | androidETC2FallbackOverride: 0
85 | forceMaximumCompressionQuality_BC6H_BC7: 1
86 | - serializedVersion: 3
87 | buildTarget: Android
88 | maxTextureSize: 2048
89 | resizeAlgorithm: 0
90 | textureFormat: -1
91 | textureCompression: 1
92 | compressionQuality: 50
93 | crunchedCompression: 0
94 | allowsAlphaSplitting: 0
95 | overridden: 0
96 | androidETC2FallbackOverride: 0
97 | forceMaximumCompressionQuality_BC6H_BC7: 1
98 | spriteSheet:
99 | serializedVersion: 2
100 | sprites: []
101 | outline: []
102 | physicsShape: []
103 | bones: []
104 | spriteID: 5e97eb03825dee720800000000000000
105 | internalID: 0
106 | vertices: []
107 | indices:
108 | edges: []
109 | weights: []
110 | secondaryTextures: []
111 | spritePackingTag:
112 | pSDRemoveMatte: 0
113 | pSDShowRemoveMatteOption: 0
114 | userData:
115 | assetBundleName:
116 | assetBundleVariant:
117 |
--------------------------------------------------------------------------------
/Assets/Art/log.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pusheco/pushe-unity-sample/a875fa9b7f5a770507b8bb462a543b1fc6d5ecca/Assets/Art/log.png
--------------------------------------------------------------------------------
/Assets/Art/log.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3e1b3ee19a0cb284d9a89286eac98b1b
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | grayScaleToAlpha: 0
27 | generateCubemap: 6
28 | cubemapConvolution: 0
29 | seamlessCubemap: 0
30 | textureFormat: 1
31 | maxTextureSize: 2048
32 | textureSettings:
33 | serializedVersion: 2
34 | filterMode: -1
35 | aniso: -1
36 | mipBias: -100
37 | wrapU: 1
38 | wrapV: 1
39 | wrapW: 1
40 | nPOTScale: 0
41 | lightmap: 0
42 | compressionQuality: 50
43 | spriteMode: 1
44 | spriteExtrude: 1
45 | spriteMeshType: 1
46 | alignment: 0
47 | spritePivot: {x: 0.5, y: 0.5}
48 | spritePixelsToUnits: 300
49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
50 | spriteGenerateFallbackPhysicsShape: 1
51 | alphaUsage: 1
52 | alphaIsTransparency: 1
53 | spriteTessellationDetail: -1
54 | textureType: 8
55 | textureShape: 1
56 | singleChannelComponent: 0
57 | maxTextureSizeSet: 0
58 | compressionQualitySet: 0
59 | textureFormatSet: 0
60 | applyGammaDecoding: 1
61 | platformSettings:
62 | - serializedVersion: 3
63 | buildTarget: DefaultTexturePlatform
64 | maxTextureSize: 2048
65 | resizeAlgorithm: 0
66 | textureFormat: -1
67 | textureCompression: 1
68 | compressionQuality: 50
69 | crunchedCompression: 0
70 | allowsAlphaSplitting: 0
71 | overridden: 0
72 | androidETC2FallbackOverride: 0
73 | forceMaximumCompressionQuality_BC6H_BC7: 1
74 | - serializedVersion: 3
75 | buildTarget: Standalone
76 | maxTextureSize: 2048
77 | resizeAlgorithm: 0
78 | textureFormat: -1
79 | textureCompression: 1
80 | compressionQuality: 50
81 | crunchedCompression: 0
82 | allowsAlphaSplitting: 0
83 | overridden: 0
84 | androidETC2FallbackOverride: 0
85 | forceMaximumCompressionQuality_BC6H_BC7: 1
86 | - serializedVersion: 3
87 | buildTarget: Android
88 | maxTextureSize: 2048
89 | resizeAlgorithm: 0
90 | textureFormat: -1
91 | textureCompression: 1
92 | compressionQuality: 50
93 | crunchedCompression: 0
94 | allowsAlphaSplitting: 0
95 | overridden: 0
96 | androidETC2FallbackOverride: 0
97 | forceMaximumCompressionQuality_BC6H_BC7: 1
98 | spriteSheet:
99 | serializedVersion: 2
100 | sprites: []
101 | outline: []
102 | physicsShape: []
103 | bones: []
104 | spriteID: 5e97eb03825dee720800000000000000
105 | internalID: 0
106 | vertices: []
107 | indices:
108 | edges: []
109 | weights: []
110 | secondaryTextures: []
111 | spritePackingTag:
112 | pSDRemoveMatte: 0
113 | pSDShowRemoveMatteOption: 0
114 | userData:
115 | assetBundleName:
116 | assetBundleVariant:
117 |
--------------------------------------------------------------------------------
/Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.162.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pusheco/pushe-unity-sample/a875fa9b7f5a770507b8bb462a543b1fc6d5ecca/Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.162.dll
--------------------------------------------------------------------------------
/Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.162.dll.mdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pusheco/pushe-unity-sample/a875fa9b7f5a770507b8bb462a543b1fc6d5ecca/Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.162.dll.mdb
--------------------------------------------------------------------------------
/Assets/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.162.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pusheco/pushe-unity-sample/a875fa9b7f5a770507b8bb462a543b1fc6d5ecca/Assets/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.162.dll
--------------------------------------------------------------------------------
/Assets/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.162.dll.mdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pusheco/pushe-unity-sample/a875fa9b7f5a770507b8bb462a543b1fc6d5ecca/Assets/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.162.dll.mdb
--------------------------------------------------------------------------------
/Assets/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.162.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pusheco/pushe-unity-sample/a875fa9b7f5a770507b8bb462a543b1fc6d5ecca/Assets/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.162.dll
--------------------------------------------------------------------------------
/Assets/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.162.dll.mdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pusheco/pushe-unity-sample/a875fa9b7f5a770507b8bb462a543b1fc6d5ecca/Assets/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.162.dll.mdb
--------------------------------------------------------------------------------
/Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pusheco/pushe-unity-sample/a875fa9b7f5a770507b8bb462a543b1fc6d5ecca/Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll
--------------------------------------------------------------------------------
/Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll.mdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pusheco/pushe-unity-sample/a875fa9b7f5a770507b8bb462a543b1fc6d5ecca/Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll.mdb
--------------------------------------------------------------------------------
/Assets/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.162.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pusheco/pushe-unity-sample/a875fa9b7f5a770507b8bb462a543b1fc6d5ecca/Assets/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.162.dll
--------------------------------------------------------------------------------
/Assets/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.162.dll.mdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pusheco/pushe-unity-sample/a875fa9b7f5a770507b8bb462a543b1fc6d5ecca/Assets/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.162.dll.mdb
--------------------------------------------------------------------------------
/Assets/ExternalDependencyManager/Editor/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (C) 2014 Google Inc.
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License");
4 | you may not use this file except in compliance with the License.
5 | You may obtain a copy of the License at
6 |
7 | http://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software
10 | distributed under the License is distributed on an "AS IS" BASIS,
11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | See the License for the specific language governing permissions and
13 | limitations under the License.
14 |
15 | Apache License
16 | Version 2.0, January 2004
17 | http://www.apache.org/licenses/
18 |
19 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
20 |
21 | 1. Definitions.
22 |
23 | "License" shall mean the terms and conditions for use, reproduction,
24 | and distribution as defined by Sections 1 through 9 of this document.
25 |
26 | "Licensor" shall mean the copyright owner or entity authorized by
27 | the copyright owner that is granting the License.
28 |
29 | "Legal Entity" shall mean the union of the acting entity and all
30 | other entities that control, are controlled by, or are under common
31 | control with that entity. For the purposes of this definition,
32 | "control" means (i) the power, direct or indirect, to cause the
33 | direction or management of such entity, whether by contract or
34 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
35 | outstanding shares, or (iii) beneficial ownership of such entity.
36 |
37 | "You" (or "Your") shall mean an individual or Legal Entity
38 | exercising permissions granted by this License.
39 |
40 | "Source" form shall mean the preferred form for making modifications,
41 | including but not limited to software source code, documentation
42 | source, and configuration files.
43 |
44 | "Object" form shall mean any form resulting from mechanical
45 | transformation or translation of a Source form, including but
46 | not limited to compiled object code, generated documentation,
47 | and conversions to other media types.
48 |
49 | "Work" shall mean the work of authorship, whether in Source or
50 | Object form, made available under the License, as indicated by a
51 | copyright notice that is included in or attached to the work
52 | (an example is provided in the Appendix below).
53 |
54 | "Derivative Works" shall mean any work, whether in Source or Object
55 | form, that is based on (or derived from) the Work and for which the
56 | editorial revisions, annotations, elaborations, or other modifications
57 | represent, as a whole, an original work of authorship. For the purposes
58 | of this License, Derivative Works shall not include works that remain
59 | separable from, or merely link (or bind by name) to the interfaces of,
60 | the Work and Derivative Works thereof.
61 |
62 | "Contribution" shall mean any work of authorship, including
63 | the original version of the Work and any modifications or additions
64 | to that Work or Derivative Works thereof, that is intentionally
65 | submitted to Licensor for inclusion in the Work by the copyright owner
66 | or by an individual or Legal Entity authorized to submit on behalf of
67 | the copyright owner. For the purposes of this definition, "submitted"
68 | means any form of electronic, verbal, or written communication sent
69 | to the Licensor or its representatives, including but not limited to
70 | communication on electronic mailing lists, source code control systems,
71 | and issue tracking systems that are managed by, or on behalf of, the
72 | Licensor for the purpose of discussing and improving the Work, but
73 | excluding communication that is conspicuously marked or otherwise
74 | designated in writing by the copyright owner as "Not a Contribution."
75 |
76 | "Contributor" shall mean Licensor and any individual or Legal Entity
77 | on behalf of whom a Contribution has been received by Licensor and
78 | subsequently incorporated within the Work.
79 |
80 | 2. Grant of Copyright License. Subject to the terms and conditions of
81 | this License, each Contributor hereby grants to You a perpetual,
82 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
83 | copyright license to reproduce, prepare Derivative Works of,
84 | publicly display, publicly perform, sublicense, and distribute the
85 | Work and such Derivative Works in Source or Object form.
86 |
87 | 3. Grant of Patent License. Subject to the terms and conditions of
88 | this License, each Contributor hereby grants to You a perpetual,
89 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
90 | (except as stated in this section) patent license to make, have made,
91 | use, offer to sell, sell, import, and otherwise transfer the Work,
92 | where such license applies only to those patent claims licensable
93 | by such Contributor that are necessarily infringed by their
94 | Contribution(s) alone or by combination of their Contribution(s)
95 | with the Work to which such Contribution(s) was submitted. If You
96 | institute patent litigation against any entity (including a
97 | cross-claim or counterclaim in a lawsuit) alleging that the Work
98 | or a Contribution incorporated within the Work constitutes direct
99 | or contributory patent infringement, then any patent licenses
100 | granted to You under this License for that Work shall terminate
101 | as of the date such litigation is filed.
102 |
103 | 4. Redistribution. You may reproduce and distribute copies of the
104 | Work or Derivative Works thereof in any medium, with or without
105 | modifications, and in Source or Object form, provided that You
106 | meet the following conditions:
107 |
108 | (a) You must give any other recipients of the Work or
109 | Derivative Works a copy of this License; and
110 |
111 | (b) You must cause any modified files to carry prominent notices
112 | stating that You changed the files; and
113 |
114 | (c) You must retain, in the Source form of any Derivative Works
115 | that You distribute, all copyright, patent, trademark, and
116 | attribution notices from the Source form of the Work,
117 | excluding those notices that do not pertain to any part of
118 | the Derivative Works; and
119 |
120 | (d) If the Work includes a "NOTICE" text file as part of its
121 | distribution, then any Derivative Works that You distribute must
122 | include a readable copy of the attribution notices contained
123 | within such NOTICE file, excluding those notices that do not
124 | pertain to any part of the Derivative Works, in at least one
125 | of the following places: within a NOTICE text file distributed
126 | as part of the Derivative Works; within the Source form or
127 | documentation, if provided along with the Derivative Works; or,
128 | within a display generated by the Derivative Works, if and
129 | wherever such third-party notices normally appear. The contents
130 | of the NOTICE file are for informational purposes only and
131 | do not modify the License. You may add Your own attribution
132 | notices within Derivative Works that You distribute, alongside
133 | or as an addendum to the NOTICE text from the Work, provided
134 | that such additional attribution notices cannot be construed
135 | as modifying the License.
136 |
137 | You may add Your own copyright statement to Your modifications and
138 | may provide additional or different license terms and conditions
139 | for use, reproduction, or distribution of Your modifications, or
140 | for any such Derivative Works as a whole, provided Your use,
141 | reproduction, and distribution of the Work otherwise complies with
142 | the conditions stated in this License.
143 |
144 | 5. Submission of Contributions. Unless You explicitly state otherwise,
145 | any Contribution intentionally submitted for inclusion in the Work
146 | by You to the Licensor shall be under the terms and conditions of
147 | this License, without any additional terms or conditions.
148 | Notwithstanding the above, nothing herein shall supersede or modify
149 | the terms of any separate license agreement you may have executed
150 | with Licensor regarding such Contributions.
151 |
152 | 6. Trademarks. This License does not grant permission to use the trade
153 | names, trademarks, service marks, or product names of the Licensor,
154 | except as required for reasonable and customary use in describing the
155 | origin of the Work and reproducing the content of the NOTICE file.
156 |
157 | 7. Disclaimer of Warranty. Unless required by applicable law or
158 | agreed to in writing, Licensor provides the Work (and each
159 | Contributor provides its Contributions) on an "AS IS" BASIS,
160 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
161 | implied, including, without limitation, any warranties or conditions
162 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
163 | PARTICULAR PURPOSE. You are solely responsible for determining the
164 | appropriateness of using or redistributing the Work and assume any
165 | risks associated with Your exercise of permissions under this License.
166 |
167 | 8. Limitation of Liability. In no event and under no legal theory,
168 | whether in tort (including negligence), contract, or otherwise,
169 | unless required by applicable law (such as deliberate and grossly
170 | negligent acts) or agreed to in writing, shall any Contributor be
171 | liable to You for damages, including any direct, indirect, special,
172 | incidental, or consequential damages of any character arising as a
173 | result of this License or out of the use or inability to use the
174 | Work (including but not limited to damages for loss of goodwill,
175 | work stoppage, computer failure or malfunction, or any and all
176 | other commercial damages or losses), even if such Contributor
177 | has been advised of the possibility of such damages.
178 |
179 | 9. Accepting Warranty or Additional Liability. While redistributing
180 | the Work or Derivative Works thereof, You may choose to offer,
181 | and charge a fee for, acceptance of support, warranty, indemnity,
182 | or other liability obligations and/or rights consistent with this
183 | License. However, in accepting such obligations, You may act only
184 | on Your own behalf and on Your sole responsibility, not on behalf
185 | of any other Contributor, and only if You agree to indemnify,
186 | defend, and hold each Contributor harmless for any liability
187 | incurred by, or claims asserted against, such Contributor by reason
188 | of your accepting any such warranty or additional liability.
189 |
190 | END OF TERMS AND CONDITIONS
191 |
192 | APPENDIX: How to apply the Apache License to your work.
193 |
194 | To apply the Apache License to your work, attach the following
195 | boilerplate notice, with the fields enclosed by brackets "[]"
196 | replaced with your own identifying information. (Don't include
197 | the brackets!) The text should be enclosed in the appropriate
198 | comment syntax for the file format. We also recommend that a
199 | file or class name and description of purpose be included on the
200 | same "printed page" as the copyright notice for easier
201 | identification within third-party archives.
202 |
203 | Copyright [yyyy] [name of copyright owner]
204 |
205 | Licensed under the Apache License, Version 2.0 (the "License");
206 | you may not use this file except in compliance with the License.
207 | You may obtain a copy of the License at
208 |
209 | http://www.apache.org/licenses/LICENSE-2.0
210 |
211 | Unless required by applicable law or agreed to in writing, software
212 | distributed under the License is distributed on an "AS IS" BASIS,
213 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
214 | See the License for the specific language governing permissions and
215 | limitations under the License.
216 |
217 | ====================================================================================================
218 | This package uses MiniJSON
219 |
220 | Copyright (c) 2013 Calvin Rien
221 |
222 | Based on the JSON parser by Patrick van Bergen
223 | http://techblog.procurios.nl/k/618/news/view/14605/14863/How-do-I-write-my-own-parser-for-JSON.html
224 |
225 | Simplified it so that it doesn't throw exceptions
226 | and can be used in Unity iPhone with maximum code stripping.
227 |
228 | Permission is hereby granted, free of charge, to any person obtaining
229 | a copy of this software and associated documentation files (the
230 | "Software"), to deal in the Software without restriction, including
231 | without limitation the rights to use, copy, modify, merge, publish,
232 | distribute, sublicense, and/or sell copies of the Software, and to
233 | permit persons to whom the Software is furnished to do so, subject to
234 | the following conditions:
235 |
236 | The above copyright notice and this permission notice shall be
237 | included in all copies or substantial portions of the Software.
238 |
239 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
240 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
241 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
242 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
243 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
244 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
245 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
246 |
--------------------------------------------------------------------------------
/Assets/ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.162_manifest.txt:
--------------------------------------------------------------------------------
1 | Assets/ExternalDependencyManager/Editor/CHANGELOG.md
2 | Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.162.dll
3 | Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.162.dll.mdb
4 | Assets/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.162.dll
5 | Assets/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.162.dll.mdb
6 | Assets/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.162.dll
7 | Assets/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.162.dll.mdb
8 | Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll
9 | Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll.mdb
10 | Assets/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.162.dll
11 | Assets/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.162.dll.mdb
12 | Assets/ExternalDependencyManager/Editor/LICENSE
13 | Assets/ExternalDependencyManager/Editor/README.md
14 |
--------------------------------------------------------------------------------
/Assets/Plugins.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 761fd7bd88b0fee47a6a17fe65bbcd7b
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Plugins/Android/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
9 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Assets/Plugins/Android/launcherTemplate.gradle:
--------------------------------------------------------------------------------
1 | // GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
2 |
3 | apply plugin: 'com.android.application'
4 |
5 | dependencies {
6 | implementation project(':unityLibrary')
7 | }
8 |
9 | android {
10 | compileSdkVersion **APIVERSION**
11 | buildToolsVersion '**BUILDTOOLS**'
12 |
13 | compileOptions {
14 | sourceCompatibility JavaVersion.VERSION_1_8
15 | targetCompatibility JavaVersion.VERSION_1_8
16 | }
17 |
18 | defaultConfig {
19 | minSdkVersion **MINSDKVERSION**
20 | targetSdkVersion **TARGETSDKVERSION**
21 | applicationId '**APPLICATIONID**'
22 | ndk {
23 | abiFilters **ABIFILTERS**
24 | }
25 | versionCode **VERSIONCODE**
26 | versionName '**VERSIONNAME**'
27 | multiDexEnabled = true
28 | }
29 |
30 | aaptOptions {
31 | noCompress = ['.unity3d', '.ress', '.resource', '.obb'**STREAMING_ASSETS**]
32 | ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~"
33 | }**SIGN**
34 |
35 | lintOptions {
36 | abortOnError false
37 | }
38 |
39 | buildTypes {
40 | debug {
41 | minifyEnabled **MINIFY_DEBUG**
42 | useProguard **PROGUARD_DEBUG**
43 | proguardFiles getDefaultProguardFile('proguard-android.txt')**SIGNCONFIG**
44 | jniDebuggable true
45 | }
46 | release {
47 | minifyEnabled **MINIFY_RELEASE**
48 | useProguard **PROGUARD_RELEASE**
49 | proguardFiles getDefaultProguardFile('proguard-android.txt')**SIGNCONFIG**
50 | }
51 | }**PACKAGING_OPTIONS****SPLITS**
52 | **BUILT_APK_LOCATION**
53 | bundle {
54 | language {
55 | enableSplit = false
56 | }
57 | density {
58 | enableSplit = false
59 | }
60 | abi {
61 | enableSplit = true
62 | }
63 | }
64 | }**SPLITS_VERSION_CODE****LAUNCHER_SOURCE_BUILD_SETUP**
65 |
--------------------------------------------------------------------------------
/Assets/Prefabs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 23e5ed832996b9c439e9463e79857a8a
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Prefabs/IconKnife.prefab:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1001 &100100000
4 | Prefab:
5 | m_ObjectHideFlags: 1
6 | serializedVersion: 2
7 | m_Modification:
8 | m_TransformParent: {fileID: 0}
9 | m_Modifications: []
10 | m_RemovedComponents: []
11 | m_ParentPrefab: {fileID: 0}
12 | m_RootGameObject: {fileID: 1424785169228978}
13 | m_IsPrefabParent: 1
14 | --- !u!1 &1424785169228978
15 | GameObject:
16 | m_ObjectHideFlags: 0
17 | m_PrefabParentObject: {fileID: 0}
18 | m_PrefabInternal: {fileID: 100100000}
19 | serializedVersion: 5
20 | m_Component:
21 | - component: {fileID: 224631224677684512}
22 | - component: {fileID: 222238043120452588}
23 | - component: {fileID: 114191451532013754}
24 | m_Layer: 0
25 | m_Name: IconKnife
26 | m_TagString: Untagged
27 | m_Icon: {fileID: 0}
28 | m_NavMeshLayer: 0
29 | m_StaticEditorFlags: 0
30 | m_IsActive: 1
31 | --- !u!114 &114191451532013754
32 | MonoBehaviour:
33 | m_ObjectHideFlags: 1
34 | m_PrefabParentObject: {fileID: 0}
35 | m_PrefabInternal: {fileID: 100100000}
36 | m_GameObject: {fileID: 1424785169228978}
37 | m_Enabled: 1
38 | m_EditorHideFlags: 0
39 | m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
40 | m_Name:
41 | m_EditorClassIdentifier:
42 | m_Material: {fileID: 0}
43 | m_Color: {r: 1, g: 1, b: 1, a: 1}
44 | m_RaycastTarget: 1
45 | m_OnCullStateChanged:
46 | m_PersistentCalls:
47 | m_Calls: []
48 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
49 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
50 | m_Sprite: {fileID: 21300000, guid: 295e86c57732e2e4198489c8824355b4, type: 3}
51 | m_Type: 0
52 | m_PreserveAspect: 1
53 | m_FillCenter: 1
54 | m_FillMethod: 4
55 | m_FillAmount: 1
56 | m_FillClockwise: 1
57 | m_FillOrigin: 0
58 | --- !u!222 &222238043120452588
59 | CanvasRenderer:
60 | m_ObjectHideFlags: 1
61 | m_PrefabParentObject: {fileID: 0}
62 | m_PrefabInternal: {fileID: 100100000}
63 | m_GameObject: {fileID: 1424785169228978}
64 | --- !u!224 &224631224677684512
65 | RectTransform:
66 | m_ObjectHideFlags: 1
67 | m_PrefabParentObject: {fileID: 0}
68 | m_PrefabInternal: {fileID: 100100000}
69 | m_GameObject: {fileID: 1424785169228978}
70 | m_LocalRotation: {x: 0, y: 0, z: 0.38268343, w: 0.92387956}
71 | m_LocalPosition: {x: 0, y: 0, z: 0}
72 | m_LocalScale: {x: 1, y: 1, z: 1}
73 | m_Children: []
74 | m_Father: {fileID: 0}
75 | m_RootOrder: 0
76 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 45}
77 | m_AnchorMin: {x: 0, y: 0}
78 | m_AnchorMax: {x: 0, y: 0}
79 | m_AnchoredPosition: {x: 0, y: 0}
80 | m_SizeDelta: {x: 100, y: 100}
81 | m_Pivot: {x: 0.5, y: 0.5}
82 |
--------------------------------------------------------------------------------
/Assets/Prefabs/IconKnife.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 520e831dd61809f4fa315b4238681697
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 100100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Prefabs/Knife.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: abf01071418859d42aff268402fe9d3a
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 100100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Pushe/Editor/PusheDependencies.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | https://jcenter.bintray.com
5 | https://dl.bintray.com/pushe/preview
6 | https://developer.huawei.com/repo
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
17 |
18 |
--------------------------------------------------------------------------------
/Assets/Pushe/PusheUnity.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Pushe.android;
3 | using UnityEngine;
4 |
5 | namespace Pushe
6 | {
7 | public static class PusheUnity
8 | {
9 | //////
10 |
11 | public static void Initialize() {
12 | #if UNITY_ANDROID && !UNITY_EDITOR
13 | PusheCore.Initialize();
14 | #elif UNITY_IOS && !UNITY_EDITOR
15 | PusheiOSUnityInterface.Initialize();
16 | #endif
17 | }
18 |
19 | public static bool IsInitialized() {
20 | #if UNITY_ANDROID && !UNITY_EDITOR
21 | return PusheCore.IsInitialized(); // Not registration
22 | #elif UNITY_IOS && !UNITY_EDITOR
23 | return true;
24 | #endif
25 | return false;
26 | }
27 |
28 | public static bool IsRegistered() {
29 | #if UNITY_ANDROID && !UNITY_EDITOR
30 | return PusheCore.IsRegistered();
31 | #elif UNITY_IOS && !UNITY_EDITOR
32 | return PusheiOSUnityInterface.IsRegistered();
33 | #endif
34 | return false;
35 | }
36 |
37 | public static void OnPusheInitialized(PusheDelegate onInitialized) {
38 | #if UNITY_ANDROID && !UNITY_EDITOR
39 | PusheCore.OnPusheInitialized(onInitialized);
40 | #elif UNITY_IOS && !UNITY_EDITOR
41 | // not implemented
42 | #endif
43 | }
44 |
45 | public static void OnPusheRegistered(PusheDelegate onRegistered) {
46 | #if UNITY_ANDROID && !UNITY_EDITOR
47 | PusheCore.OnPusheRegistered(onRegistered);
48 | #elif UNITY_IOS && !UNITY_EDITOR
49 | // not implemented
50 | #endif
51 | }
52 |
53 | public static string GetDeviceId() {
54 | #if UNITY_ANDROID && !UNITY_EDITOR
55 | return PusheCore.GetDeviceId();
56 | #elif UNITY_IOS && !UNITY_EDITOR
57 | return PusheiOSUnityInterface.GetDeviceId();
58 | #endif
59 | return null;
60 | }
61 |
62 | public static string GetGoogleAdvertisingId() {
63 | #if UNITY_ANDROID && !UNITY_EDITOR
64 | return PusheCore.GetGoogleAdvertisingId();
65 | #elif UNITY_IOS && !UNITY_EDITOR
66 | return PusheiOSUnityInterface.GetAdvertisingId();
67 | #endif
68 | return null;
69 | }
70 | public static string GetAdvertisingId() {
71 | #if UNITY_ANDROID && !UNITY_EDITOR
72 | return PusheCore.GetAdvertisingId();
73 | #elif UNITY_IOS && !UNITY_EDITOR
74 | return PusheiOSUnityInterface.GetAdvertisingId();
75 | #endif
76 | return null;
77 | }
78 |
79 | public static void SetCustomId(string customId) {
80 | #if UNITY_ANDROID && !UNITY_EDITOR
81 | PusheCore.SetCustomId(customId);
82 | #elif UNITY_IOS && !UNITY_EDITOR
83 | PusheiOSUnityInterface.SetCustomId(customId);
84 | #endif
85 | }
86 |
87 | public static string GetCustomId() {
88 | #if UNITY_ANDROID && !UNITY_EDITOR
89 | return PusheCore.GetCustomId();
90 | #elif UNITY_IOS && !UNITY_EDITOR
91 | return PusheiOSUnityInterface.GetCustomId();
92 | #endif
93 | return null;
94 | }
95 |
96 | public static bool SetUserEmail(string email) {
97 | #if UNITY_ANDROID && !UNITY_EDITOR
98 | return PusheCore.SetUserEmail(email);
99 | #elif UNITY_IOS && !UNITY_EDITOR
100 | return PusheiOSUnityInterface.SetUserEmail(email);
101 | #endif
102 | return false;
103 | }
104 |
105 | public static string GetUserEmail() {
106 | #if UNITY_ANDROID && !UNITY_EDITOR
107 | return PusheCore.GetUserEmail();
108 | #elif UNITY_IOS && !UNITY_EDITOR
109 | return PusheiOSUnityInterface.GetUserEmail();
110 | #endif
111 | return null;
112 | }
113 |
114 | public static bool SetUserPhoneNumber(string number) {
115 | #if UNITY_ANDROID && !UNITY_EDITOR
116 | return PusheCore.SetUserPhoneNumber(number);
117 | #elif UNITY_IOS && !UNITY_EDITOR
118 | return PusheiOSUnityInterface.SetUserPhoneNumber(number);
119 | #endif
120 | return false;
121 | }
122 |
123 | public static string GetUserPhoneNumber() {
124 | #if UNITY_ANDROID && !UNITY_EDITOR
125 | return PusheCore.GetUserPhoneNumber();
126 | #elif UNITY_IOS && !UNITY_EDITOR
127 | return PusheiOSUnityInterface.GetUserPhoneNumber();
128 | #endif
129 | return null;
130 | }
131 |
132 | public static void AddTags(Dictionary tags) {
133 | #if UNITY_ANDROID && !UNITY_EDITOR
134 | PusheCore.AddTags(tags);
135 | #elif UNITY_IOS && !UNITY_EDITOR
136 | PusheiOSUnityInterface.AddTags(tags);
137 | #endif
138 | }
139 |
140 | public static void RemoveTags(params string[] keys) {
141 | #if UNITY_ANDROID && !UNITY_EDITOR
142 | PusheCore.RemoveTags(keys);
143 | #elif UNITY_IOS && !UNITY_EDITOR
144 | PusheiOSUnityInterface.RemoveTags(keys);
145 | #endif
146 | }
147 |
148 | public static Dictionary GetSubscribedTags() {
149 | #if UNITY_ANDROID && !UNITY_EDITOR
150 | return new Dictionary{ {"tags", PusheCore.GetSubscribedTags()} };
151 | #elif UNITY_IOS && !UNITY_EDITOR
152 | return PusheiOSUnityInterface.GetSubscribedTags();
153 | #endif
154 | return null;
155 | }
156 |
157 | public static void Subscribe(string topic) {
158 | #if UNITY_ANDROID && !UNITY_EDITOR
159 | PusheCore.SubscribeTo(topic);
160 | #elif UNITY_IOS && !UNITY_EDITOR
161 | PusheiOSUnityInterface.Subscribe(topic);
162 | #endif
163 | }
164 |
165 | public static void Unsubscribe(string topic) {
166 | #if UNITY_ANDROID && !UNITY_EDITOR
167 | PusheCore.UnsubscribeFrom(topic);
168 | #elif UNITY_IOS && !UNITY_EDITOR
169 | PusheiOSUnityInterface.Unsubscribe(topic);
170 | #endif
171 | }
172 |
173 | public static string[] GetSubscribedTopics() {
174 | #if UNITY_ANDROID && !UNITY_EDITOR
175 | return PusheCore.GetSubscribedTopics();
176 | #elif UNITY_IOS && !UNITY_EDITOR
177 | return PusheiOSUnityInterface.GetSubscribedTopics();
178 | #endif
179 | return null;
180 | }
181 |
182 | public static void EnableNotifications() {
183 | #if UNITY_ANDROID && !UNITY_EDITOR
184 | PusheNotification.EnableNotification();
185 | #elif UNITY_IOS && !UNITY_EDITOR
186 | // not implemented
187 | #endif
188 | }
189 |
190 | public static void DisableNotifications() {
191 | #if UNITY_ANDROID && !UNITY_EDITOR
192 | PusheNotification.DisableNotification();
193 | #elif UNITY_IOS && !UNITY_EDITOR
194 | // not implemented
195 | #endif
196 | }
197 |
198 | public static bool IsNotificationsEnabled() {
199 | #if UNITY_ANDROID && !UNITY_EDITOR
200 | return PusheNotification.IsNotificationEnabled();
201 | #elif UNITY_IOS && !UNITY_EDITOR
202 | // not implemented
203 | return true;
204 | #endif
205 | return false;
206 | }
207 |
208 | public static void EnableCustomSound() {
209 | #if UNITY_ANDROID && !UNITY_EDITOR
210 | PusheNotification.EnableCustomSound();
211 | #elif UNITY_IOS && !UNITY_EDITOR
212 | // not implemented
213 | #endif
214 | }
215 |
216 | public static void DisableCustomSound() {
217 | #if UNITY_ANDROID && !UNITY_EDITOR
218 | PusheNotification.DisableCustomSound();
219 | #elif UNITY_IOS && !UNITY_EDITOR
220 | // not implemented
221 | #endif
222 | }
223 |
224 | public static bool IsCustomSoundEnabled() {
225 | #if UNITY_ANDROID && !UNITY_EDITOR
226 | return PusheNotification.IsCustomSoundEnabled();
227 | #elif UNITY_IOS && !UNITY_EDITOR
228 | // not implemented
229 | return true;
230 | #endif
231 | return false;
232 | }
233 |
234 | public static void CreateNotificationChannel(
235 | string channelId,
236 | string channelName,
237 | string description = "",
238 | int importance = 4,
239 | bool enableLight = true,
240 | bool enableVibration = true,
241 | long[] vibrationLengths = null,
242 | bool showBadge = true,
243 | int ledColor = 0)
244 | {
245 | #if UNITY_ANDROID && !UNITY_EDITOR
246 | PusheNotification.CreateNotificationChannel(channelId, channelName, description, importance, enableLight, enableVibration, vibrationLengths, showBadge, ledColor);
247 | #elif UNITY_IOS && !UNITY_EDITOR
248 | // not implemented
249 | #endif
250 | }
251 |
252 | public static void RemoveNotificationChannel(string channelId) {
253 | #if UNITY_ANDROID && !UNITY_EDITOR
254 | PusheNotification.RemoveNotificationChannel(channelId);
255 | #elif UNITY_IOS && !UNITY_EDITOR
256 | // not implemented
257 | #endif
258 | }
259 |
260 | public static void SendNotificationToUser(UserNotification notification) {
261 | #if UNITY_ANDROID && !UNITY_EDITOR
262 | PusheNotification.SendNotificationToUser(notification);
263 | #elif UNITY_IOS && !UNITY_EDITOR
264 | // not implemented
265 | #endif
266 | }
267 |
268 | public static void SetNotificationListener(IPusheNotificationListener listener) {
269 | #if UNITY_ANDROID && !UNITY_EDITOR
270 | PusheNotification.SetNotificationListener(listener);
271 | #elif UNITY_IOS && !UNITY_EDITOR
272 | // not implemented
273 | #endif
274 | }
275 |
276 | public static void SendEvent(string eventName) {
277 | #if UNITY_ANDROID && !UNITY_EDITOR
278 | PusheAnalytics.SendEvent(eventName);
279 | #elif UNITY_IOS && !UNITY_EDITOR
280 | // not implemented
281 | #endif
282 | }
283 |
284 | // SendEvent(Event)
285 |
286 | public static void SendEcommerceData(string name, double price, string category = null, long quantity = -1) {
287 | #if UNITY_ANDROID && !UNITY_EDITOR
288 | PusheAnalytics.SendEcommerceData(name, price, category, quantity);
289 | #elif UNITY_IOS && !UNITY_EDITOR
290 | // not implemented
291 | #endif
292 | }
293 |
294 | public static void TriggerEvent(string eventName) {
295 | #if UNITY_ANDROID && !UNITY_EDITOR
296 | PusheInAppMessaging.TriggerEvent(eventName);
297 | #elif UNITY_IOS && !UNITY_EDITOR
298 | // not implemented
299 | #endif
300 | }
301 |
302 | public static void EnableInAppMessaging() {
303 | #if UNITY_ANDROID && !UNITY_EDITOR
304 | PusheInAppMessaging.EnableInAppMessaging();
305 | #elif UNITY_IOS && !UNITY_EDITOR
306 | // not implemented
307 | #endif
308 | }
309 |
310 | public static void DisableInAppMessaging() {
311 | #if UNITY_ANDROID && !UNITY_EDITOR
312 | PusheInAppMessaging.DisableInAppMessaging();
313 | #elif UNITY_IOS && !UNITY_EDITOR
314 | // not implemented
315 | #endif
316 | }
317 |
318 | public static bool IsInAppMessagingEnabled() {
319 | #if UNITY_ANDROID && !UNITY_EDITOR
320 | return PusheInAppMessaging.IsInAppMessagingEnabled();
321 | #elif UNITY_IOS && !UNITY_EDITOR
322 | // not implemented
323 | return false;
324 | #endif
325 | return false;
326 | }
327 |
328 | public static void SetInAppMessagingListener(IPusheInAppMessagingListener listener) {
329 | #if UNITY_ANDROID && !UNITY_EDITOR
330 | PusheInAppMessaging.SetInAppMessagingListener(listener);
331 | #elif UNITY_IOS && !UNITY_EDITOR
332 | // not implemented
333 | #endif
334 | }
335 |
336 | public static void TestInAppMessaging(string inAppMessage) {
337 | #if UNITY_ANDROID && !UNITY_EDITOR
338 | PusheInAppMessaging.TestInAppMessage(inAppMessage);
339 | #elif UNITY_IOS && !UNITY_EDITOR
340 | // not implemented
341 | #endif
342 | }
343 |
344 | public static void Log(string message)
345 | {
346 | Debug.Log("Pushe [Unity]: " + message);
347 | }
348 |
349 | // Used when registered
350 | public delegate void PusheDelegate();
351 | }
352 | }
--------------------------------------------------------------------------------
/Assets/Pushe/SampleCode.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Pushe;
3 | using Pushe.android;
4 | using UnityEngine;
5 | // ReSharper disable All
6 |
7 | /// In order to test the differnt functionality of Pushe, simply drag this file into your scene.
8 | /// NOTE: For only being able to receive push no script and code is needed. Just setup and add the token in manifest.
9 | public class SampleCode : MonoBehaviour
10 | {
11 | // Use this for initialization
12 | private void Start()
13 | {
14 | PusheUnity.Log("Starting Pushe sample script");
15 | InitializeSomeMethods();
16 | }
17 |
18 | private void InitializeSomeMethods()
19 | {
20 | // Listen to Register
21 | PusheUnity.OnPusheRegistered(OnPusheRegisteredSuccessfully);
22 | PusheUnity.OnPusheInitialized(() =>
23 | {
24 | PusheUnity.Log("Pushe Modules have initialized successfully.");
25 | });
26 | // Set notification listener
27 | PusheNotification.SetNotificationListener(new PusheNotifListener());
28 |
29 | // Check if pushe is already registered
30 | PusheUnity.Log(PusheUnity.IsRegistered() ? "Pushe is registered" : "Pushe is NOT registered!");
31 | }
32 |
33 |
34 | /**
35 | * Called when Pushe is registered.
36 | */
37 | private void OnPusheRegisteredSuccessfully()
38 | {
39 | PusheUnity.Log(" --- Pushe has been REGISTERED to server successfully --- ");
40 | var adId = PusheUnity.GetAdvertisingId();
41 | PusheUnity.Log("Ad id: " + adId);
42 | var deviceId = PusheUnity.GetDeviceId();
43 | PusheUnity.Log("Device id : " + deviceId);
44 |
45 | // Pushe Notification
46 |
47 | PusheUnity.Log("Notification enabled? " + PusheNotification.IsNotificationEnabled());
48 | PusheUnity.Log("Custom sound enabled? " + PusheNotification.IsCustomSoundEnabled());
49 | PusheNotification.CreateNotificationChannel("CustomChannel", "CustomChannel");
50 |
51 | // Analytics
52 | PusheAnalytics.SendEvent("Some_Event");
53 | PusheAnalytics.SendEcommerceData("EcommerceData", 12.0);
54 |
55 | PusheUnity.Log("Subscribing to test1");
56 | PusheUnity.Subscribe("test1");
57 |
58 | PusheUnity.Log("Set 123123 as custom id");
59 | PusheUnity.SetCustomId("123123");
60 | PusheUnity.Log("CustomId is: " + PusheUnity.GetCustomId());
61 |
62 | var tags = new Dictionary {{"name","Mohammad"}, {"age", "25"}, {"birthday","1435187386"}};
63 | PusheUnity.AddTags(tags);
64 |
65 | PusheUnity.RemoveTags("name", "age");
66 |
67 | PusheUnity.Log("Tags: " + PusheUnity.GetSubscribedTags());
68 | PusheUnity.Log("Topics: " + string.Join(",", PusheUnity.GetSubscribedTopics()));
69 |
70 | PusheInAppMessaging.DisableInAppMessaging();
71 | PusheUnity.Log("Is in app messaging enabled?" + PusheInAppMessaging.IsInAppMessagingEnabled());
72 | PusheInAppMessaging.EnableInAppMessaging();
73 | PusheUnity.Log("Is in app messaging enabled? " + PusheInAppMessaging.IsInAppMessagingEnabled());
74 | PusheInAppMessaging.TriggerEvent("qqq");
75 | PusheInAppMessaging.SetInAppMessagingListener(new InAppMessagingListener());
76 | }
77 |
78 | }
79 |
80 |
81 | ///
82 | /// A sample to show how to use notification callback
83 | /// PLEASE NOTICE that callbacks only work when app is up and running.
84 | ///
85 | public class PusheNotifListener : IPusheNotificationListener
86 | {
87 | public void OnNotification(NotificationData notificationData)
88 | {
89 | PusheUnity.Log("Notification received: " + notificationData);
90 | }
91 |
92 | public void OnCustomContentReceived(string customJson)
93 | {
94 | PusheUnity.Log("Notification custom content received: " + customJson);
95 | }
96 |
97 | public void OnNotificationClick(NotificationData notificationData)
98 | {
99 | PusheUnity.Log("Notification clicked: " + notificationData);
100 | }
101 |
102 | public void OnNotificationDismiss(NotificationData notificationData)
103 | {
104 | PusheUnity.Log("Notification dismissed: " + notificationData);
105 | }
106 |
107 | public void OnButtonClick(NotificationButtonData notificationButtonData, NotificationData notificationData)
108 | {
109 | PusheUnity.Log("Notification button clicked\n Data: " + notificationData +
110 | "\n ButtonData: " + notificationButtonData);
111 | }
112 | }
113 |
114 | public class InAppMessagingListener : IPusheInAppMessagingListener
115 | {
116 | public void OnInAppMessageReceived(InAppMessage inAppMessage) {
117 | PusheUnity.Log("In app message received: " + inAppMessage.title);
118 | }
119 |
120 | public void OnInAppMessageTriggered(InAppMessage inAppMessage) {
121 | PusheUnity.Log("In app message triggered: " + inAppMessage.title);
122 | }
123 |
124 | public void OnInAppMessageClicked(InAppMessage inAppMessage) {
125 | PusheUnity.Log("In app message Clicked: " + inAppMessage.title);
126 | }
127 |
128 | public void OnInAppMessageDismissed(InAppMessage inAppMessage) {
129 | PusheUnity.Log("In app message dismissed: " + inAppMessage.title);
130 | }
131 |
132 | public void OnInAppMessageButtonClicked(InAppMessage inAppMessage, int index) {
133 | PusheUnity.Log("In app message button: " + inAppMessage.title + " index: " + index);
134 | }
135 | }
--------------------------------------------------------------------------------
/Assets/Pushe/Templates/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
15 |
16 |
22 |
27 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
40 |
43 |
44 |
49 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/Assets/Pushe/Templates/U_2017/mainTemplate.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | repositories {
3 | google()
4 | jcenter()
5 | }
6 |
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:3.2.0'
9 | }
10 | }
11 |
12 | allprojects {
13 | repositories {
14 | google()
15 | jcenter()
16 | // Pushe Extended plugin
17 | maven { url 'https://dl.bintray.com/pushe/preview' }
18 | maven { url 'https://developer.huawei.com/repo' }
19 | flatDir {
20 | dirs 'libs'
21 | }
22 | }
23 | }
24 |
25 | apply plugin: 'com.android.application'
26 |
27 | dependencies {
28 | implementation fileTree(dir: 'libs', include: ['*.jar'])
29 |
30 | // Adding Pushe Plus
31 | implementation('co.pushe.plus:base:2.4.1-beta05')
32 | // MultiDex
33 | implementation 'androidx.multidex:multidex:2.0.1'
34 | **DEPS**}
35 |
36 | android {
37 | compileSdkVersion 29
38 | buildToolsVersion '29.0.3'
39 |
40 | defaultConfig {
41 | // Enable MultiDex -- Pushe natively adds multidex support library. Adding this is enough.
42 | multiDexEnabled true
43 |
44 | minSdkVersion **MINSDKVERSION**
45 | targetSdkVersion **TARGETSDKVERSION**
46 | applicationId '**APPLICATIONID**'
47 | ndk {
48 | abiFilters **ABIFILTERS**
49 | }
50 | versionCode **VERSIONCODE**
51 | versionName '**VERSIONNAME**'
52 |
53 | }
54 |
55 |
56 |
57 | lintOptions {
58 | abortOnError false
59 | }
60 |
61 | aaptOptions {
62 | noCompress '.unity3d', '.ress', '.resource', '.obb'**STREAMING_ASSETS**
63 | }
64 |
65 | **SIGN**
66 | buildTypes {
67 | debug {
68 | minifyEnabled **MINIFY_DEBUG**
69 | useProguard **PROGUARD_DEBUG**
70 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD**
71 | jniDebuggable true
72 | }
73 | release {
74 | minifyEnabled **MINIFY_RELEASE**
75 | useProguard **PROGUARD_RELEASE**
76 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD**
77 | **SIGNCONFIG**
78 | }
79 | }
80 | **PACKAGING_OPTIONS**
81 |
82 | packagingOptions {
83 | exclude 'META-INF/proguard/coroutines.pro'
84 | }
85 |
86 | bundle {
87 | language {
88 | enableSplit = false
89 | }
90 | density {
91 | enableSplit = false
92 | }
93 | abi {
94 | enableSplit = true
95 | }
96 | }
97 |
98 | compileOptions {
99 | sourceCompatibility JavaVersion.VERSION_1_8
100 | targetCompatibility JavaVersion.VERSION_1_8
101 | }
102 | //kotlinOptions {
103 | //jvmTarget = "1.8"
104 | //}
105 | }
106 |
107 |
108 |
109 |
110 | **SOURCE_BUILD_SETUP**
--------------------------------------------------------------------------------
/Assets/Pushe/Templates/U_2018_4/mainTemplate.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | repositories {**ARTIFACTORYREPOSITORY**
3 | mavenCentral()
4 | google()
5 | jcenter()
6 | }
7 |
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:3.4.0'
10 | **BUILD_SCRIPT_DEPS**}
11 | }
12 |
13 | allprojects {
14 | repositories {**ARTIFACTORYREPOSITORY**
15 | mavenCentral()
16 | google()
17 | jcenter()
18 | flatDir {
19 | dirs 'libs'
20 | }
21 | }
22 | }
23 |
24 | apply plugin: 'com.android.application'
25 | **APPLY_PLUGINS**
26 |
27 | dependencies {
28 | implementation fileTree(dir: 'libs', include: ['*.jar'])
29 | **DEPS**}
30 |
31 | android {
32 | compileSdkVersion **APIVERSION**
33 | buildToolsVersion '**BUILDTOOLS**'
34 |
35 | compileOptions {
36 | sourceCompatibility JavaVersion.VERSION_1_8
37 | targetCompatibility JavaVersion.VERSION_1_8
38 | }
39 |
40 | defaultConfig {
41 | minSdkVersion **MINSDKVERSION**
42 | targetSdkVersion **TARGETSDKVERSION**
43 | applicationId '**APPLICATIONID**'
44 | ndk {
45 | abiFilters **ABIFILTERS**
46 | }
47 | versionCode **VERSIONCODE**
48 | versionName '**VERSIONNAME**'
49 | multiDexEnabled true
50 | }
51 |
52 | lintOptions {
53 | abortOnError false
54 | }
55 |
56 | aaptOptions {
57 | noCompress = ['.unity3d', '.ress', '.resource', '.obb'**STREAMING_ASSETS**]
58 | }**SIGN**
59 |
60 | buildTypes {
61 | debug {
62 | minifyEnabled **MINIFY_DEBUG**
63 | useProguard **PROGUARD_DEBUG**
64 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD**
65 | jniDebuggable true
66 | }
67 | release {
68 | minifyEnabled **MINIFY_RELEASE**
69 | useProguard **PROGUARD_RELEASE**
70 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD****SIGNCONFIG**
71 | }
72 | }**PACKAGING_OPTIONS****SPLITS**
73 | **BUILT_APK_LOCATION**
74 | bundle {
75 | language {
76 | enableSplit = false
77 | }
78 | density {
79 | enableSplit = false
80 | }
81 | abi {
82 | enableSplit = true
83 | }
84 | }
85 | }**SPLITS_VERSION_CODE****REPOSITORIES****SOURCE_BUILD_SETUP**
86 |
--------------------------------------------------------------------------------
/Assets/Pushe/Templates/U_2019_4/launcherTemplate.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | dependencies {
4 | implementation project(':unityLibrary')
5 | }
6 |
7 | android {
8 | compileSdkVersion **APIVERSION**
9 | buildToolsVersion '**BUILDTOOLS**'
10 |
11 | compileOptions {
12 | sourceCompatibility JavaVersion.VERSION_1_8
13 | targetCompatibility JavaVersion.VERSION_1_8
14 | }
15 |
16 | defaultConfig {
17 | minSdkVersion **MINSDKVERSION**
18 | targetSdkVersion **TARGETSDKVERSION**
19 | applicationId '**APPLICATIONID**'
20 | ndk {
21 | abiFilters **ABIFILTERS**
22 | }
23 | versionCode **VERSIONCODE**
24 | versionName '**VERSIONNAME**'
25 |
26 | /**
27 | * THIS LINE IS ADDED BY PUSHE
28 | * If you have another file and don't want to override by this,
29 | * simply copy this line to the other file...
30 | * This line enables multiple DEX files and avoids error about DEX file multiplication
31 | */
32 | multiDexEnabled true
33 | }
34 |
35 | aaptOptions {
36 | noCompress = ['.unity3d', '.ress', '.resource', '.obb'**STREAMING_ASSETS**]
37 | ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~"
38 | }**SIGN**
39 |
40 | lintOptions {
41 | abortOnError false
42 | }
43 |
44 | buildTypes {
45 | debug {
46 | minifyEnabled **MINIFY_DEBUG**
47 | useProguard **PROGUARD_DEBUG**
48 | proguardFiles getDefaultProguardFile('proguard-android.txt')**SIGNCONFIG**
49 | jniDebuggable true
50 | }
51 | release {
52 | minifyEnabled **MINIFY_RELEASE**
53 | useProguard **PROGUARD_RELEASE**
54 | proguardFiles getDefaultProguardFile('proguard-android.txt')**SIGNCONFIG**
55 | }
56 | }**PACKAGING_OPTIONS****SPLITS**
57 | **BUILT_APK_LOCATION**
58 | bundle {
59 | language {
60 | enableSplit = false
61 | }
62 | density {
63 | enableSplit = false
64 | }
65 | abi {
66 | enableSplit = true
67 | }
68 | }
69 | }**SPLITS_VERSION_CODE****LAUNCHER_SOURCE_BUILD_SETUP**
70 |
--------------------------------------------------------------------------------
/Assets/Pushe/android/IPusheInAppMessagingListener.cs:
--------------------------------------------------------------------------------
1 | namespace Pushe.android
2 | {
3 | public interface IPusheInAppMessagingListener
4 | {
5 | void OnInAppMessageReceived(InAppMessage inAppMessage);
6 |
7 | void OnInAppMessageTriggered(InAppMessage inAppMessage);
8 |
9 | void OnInAppMessageClicked(InAppMessage inAppMessage);
10 |
11 | void OnInAppMessageDismissed(InAppMessage inAppMessage);
12 |
13 | void OnInAppMessageButtonClicked(InAppMessage inAppMessage, int index);
14 | }
15 | }
--------------------------------------------------------------------------------
/Assets/Pushe/android/IPusheNotificationListener.cs:
--------------------------------------------------------------------------------
1 | namespace Pushe.android
2 | {
3 | ///
4 | /// In order to use Pushe notification callback, you must implement an instance of this interface.
5 | /// Once you've done it, pass it to `PusheNotification.SetNotificationListener`.
6 | ///
7 | /// * NOTE: These callback only work when app (Unity engine) is up and running.
8 | ///
9 | public interface IPusheNotificationListener
10 | {
11 | ///
12 | /// Gets invoked when a notification has been received.
13 | ///
14 | /// Will have all data received from notification
15 | void OnNotification(NotificationData notificationData);
16 |
17 | ///
18 | /// If a notification contains custom data, this function will be called holding a data as json.
19 | ///
20 | /// is the json from notification
21 | void OnCustomContentReceived(string json);
22 |
23 | ///
24 | /// If a notification gets clicked while app is open this function will invoked having notification data.
25 | ///
26 | /// Will have the data of that notification
27 | void OnNotificationClick(NotificationData notificationData);
28 |
29 | ///
30 | /// If a notification gets swiped out while app is open, this function will be invoked having notification data.
31 | ///
32 | /// Will have the data of that notification
33 | void OnNotificationDismiss(NotificationData notificationData);
34 |
35 | ///
36 | /// If a button from a notification was clicked, this function will ba called having button data and all notification data
37 | ///
38 | /// Will have data of the clicked button
39 | /// Will contain the notification data
40 | void OnButtonClick(NotificationButtonData notificationButtonData, NotificationData notificationData);
41 | }
42 | }
--------------------------------------------------------------------------------
/Assets/Pushe/android/PusheAnalytics.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 |
3 | namespace Pushe.android
4 | {
5 | public static class PusheAnalytics
6 | {
7 |
8 |
9 | ///
10 | /// Send an event to the server. You can pass push notifications according to happening on some events.
11 | ///
12 | /// A name chosen by you
13 | /// If You don't have and action, leave it be custom.
14 | public static void SendEvent(string eventName)
15 | {
16 |
17 | PusheAndroidUtils.PusheAnalyticsService().Call("sendEvent", eventName);
18 | }
19 |
20 | public static void SendEcommerceData(string name, double price, string category = null, long quantity = -1)
21 | {
22 | PusheAndroidUtils.Extension("analytics").CallStatic("sendEcommerce", name, price, category, quantity);
23 | }
24 |
25 |
26 |
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Assets/Pushe/android/PusheAndroidUtils.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using UnityEngine;
3 |
4 | namespace Pushe.android
5 | {
6 | static class PusheAndroidUtils
7 | {
8 |
9 | private const string PushePath = "co.pushe.plus.Pushe";
10 | // Some additional functions for Pushe SDK
11 | private const string ExtPath = "co.pushe.plus.ext.PusheExt";
12 |
13 | public static AndroidJavaClass Extension(string module = "core")
14 | {
15 | switch (module)
16 | {
17 | case "core":
18 | return new AndroidJavaClass("co.pushe.plus.ext.PusheExt");
19 | case "notification":
20 | return new AndroidJavaClass("co.pushe.plus.notification.ext.PusheExt");
21 | case "analytics":
22 | return new AndroidJavaClass("co.pushe.plus.analytics.ext.PusheExt");
23 | case "inappmessaging":
24 | return new AndroidJavaClass("co.pushe.plus.inappmessaging.ext.PusheExt");
25 |
26 | }
27 | return new AndroidJavaClass(ExtPath);
28 | }
29 |
30 | public static AndroidJavaClass Native()
31 | {
32 | return new AndroidJavaClass(PushePath);
33 | }
34 |
35 | public static AndroidJavaObject CreateJavaArrayList(params string[] elements)
36 | {
37 | var list = new AndroidJavaObject("java.util.ArrayList");
38 | foreach (var element in elements)
39 | {
40 | list.Call("add", element);
41 | }
42 |
43 | return list;
44 | }
45 |
46 | public static AndroidJavaObject CreateJavaMapFromDictionary(IDictionary parameters)
47 | {
48 | var javaMap = new AndroidJavaObject("java.util.HashMap");
49 | var putMethod = AndroidJNIHelper.GetMethodID(
50 | javaMap.GetRawClass(), "put",
51 | "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
52 |
53 | var args = new object[2];
54 | foreach (var kvp in parameters)
55 | {
56 | using (var k = new AndroidJavaObject(
57 | "java.lang.String", kvp.Key))
58 | {
59 | using (var v = new AndroidJavaObject(
60 | "java.lang.String", kvp.Value))
61 | {
62 | args[0] = k;
63 | args[1] = v;
64 | AndroidJNI.CallObjectMethod(javaMap.GetRawObject(),
65 | putMethod, AndroidJNIHelper.CreateJNIArgArray(args));
66 | }
67 | }
68 | }
69 |
70 | return javaMap;
71 | }
72 |
73 |
74 |
75 | public static AndroidJavaObject PusheAnalyticsService()
76 | {
77 | return PusheAndroidUtils.Native().CallStatic("getPusheService", "analytics");
78 | }
79 |
80 |
81 | public static AndroidJavaObject PusheNotificationService()
82 | {
83 | return PusheAndroidUtils.Native().CallStatic("getPusheService", "notification");
84 | }
85 |
86 | public static int SdkLevel()
87 | {
88 | using (var version = new AndroidJavaClass("android.os.Build$VERSION"))
89 | {
90 | var sdkInt = version.GetStatic("SDK_INT");
91 | return sdkInt;
92 | }
93 | }
94 | }
95 | }
--------------------------------------------------------------------------------
/Assets/Pushe/android/PusheCore.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Diagnostics.CodeAnalysis;
4 | using UnityEngine;
5 |
6 | namespace Pushe.android
7 | {
8 | ///
9 | /// For more and detailed information and documentations please checkout
10 | ///
11 | public static class PusheCore
12 | {
13 | ///
14 | /// GDPR related.
15 | /// If the user consent was given about necessary data collection for Pushe,
16 | /// use this function to let pushe registration begin.
17 | /// To be able to use GDPR, add "pushe_requires_user_consent" meta-data value to "true",
18 | /// After showing the dialog and getting user's consent, call this onAccept.
19 | /// NOTE: Calling this only once is enough.
20 | ///
21 | public static void Initialize()
22 | {
23 | PusheAndroidUtils.Native().CallStatic("initialize");
24 | }
25 |
26 | /// Set user's consent
27 | public static void SetUserConsentGiven()
28 | {
29 | PusheAndroidUtils.Native().CallStatic("setUserConsentGiven");
30 | }
31 |
32 | ///
33 | /// Check if pushe is registered to FCM
34 | ///
35 | public static bool IsRegistered()
36 | {
37 | return PusheAndroidUtils.Native().CallStatic("isRegistered");
38 | }
39 |
40 | ///
41 | /// Returns true if all pushe modules (Core, notification, etc.) were initialized.
42 | ///
43 | public static bool IsInitialized()
44 | {
45 | return PusheAndroidUtils.Native().CallStatic("isInitialized");
46 | }
47 |
48 | /**
49 | Simply pass a void no argument function to this function to handle registration
50 | */
51 | public static void OnPusheRegistered(PusheUnity.PusheDelegate pusheCallback)
52 | {
53 | PusheAndroidUtils.Native().CallStatic("setRegistrationCompleteListener", new RegisterCallback(pusheCallback));
54 | }
55 |
56 | ///
57 | /// Simply pass a void no argument function to this to handle initialization.
58 | ///
59 | /// * NOTE: This is not like Pushe.initialize() from Pushe 1.x. This is different.
60 | ///
61 | ///
62 | public static void OnPusheInitialized(PusheUnity.PusheDelegate initCallback)
63 | {
64 | PusheAndroidUtils.Native().CallStatic("setInitializationCompleteListener", new RegisterCallback(initCallback));
65 | }
66 |
67 | ///
68 | /// Get google advertising id
69 | ///
70 | /// Null if this feature was disabled by user and true otherwise
71 | [Obsolete("Use GetAdvertisingId instead")]
72 | public static string GetGoogleAdvertisingId()
73 | {
74 | return PusheAndroidUtils.Native().CallStatic("getGoogleAdvertisingId");
75 | }
76 |
77 | ///
78 | /// Get device advertising id (Google: Google Ad id, Huawei: Huawei OAID)
79 | ///
80 | /// Null if this feature was disabled by user and true otherwise
81 | public static string GetAdvertisingId()
82 | {
83 | return PusheAndroidUtils.Native().CallStatic("getAdvertisingId");
84 | }
85 |
86 | ///
87 | /// Returns unique id of device
88 | /// Following ID makes a unique ID that:
89 | /// - (Android 8.0 or higher): Is unique in an app and will be different on another app.
90 | /// - (Android lower that 8.0): Is a unique ID for all apps and each device will have only one id.
91 | ///
92 | public static string GetDeviceId()
93 | {
94 | return PusheAndroidUtils.Native().CallStatic("getDeviceId");
95 | }
96 |
97 | public static void SubscribeTo(string topic)
98 | {
99 | PusheAndroidUtils.Native().CallStatic("subscribeToTopic", topic, null);
100 | }
101 |
102 | public static void UnsubscribeFrom(string topic)
103 | {
104 | PusheAndroidUtils.Native().CallStatic("unsubscribeFromTopic", topic, null);
105 | }
106 |
107 | public static string[] GetSubscribedTopics()
108 | {
109 | return PusheAndroidUtils.Extension().CallStatic("getSubscribedTopicsCsv").Split(',');
110 | }
111 |
112 | public static void SetCustomId(string id)
113 | {
114 | PusheAndroidUtils.Native().CallStatic("setCustomId", id);
115 | }
116 |
117 | public static string GetCustomId()
118 | {
119 | return PusheAndroidUtils.Native().CallStatic("getCustomId");
120 | }
121 |
122 | public static bool SetUserEmail(string email)
123 | {
124 | return PusheAndroidUtils.Native().CallStatic("setUserEmail", email);
125 | }
126 |
127 | public static string GetUserEmail()
128 | {
129 | return PusheAndroidUtils.Native().CallStatic("getUserEmail");
130 | }
131 |
132 | public static bool SetUserPhoneNumber(string phone)
133 | {
134 | return PusheAndroidUtils.Native().CallStatic("setUserPhoneNumber", phone);
135 | }
136 |
137 | public static string GetUserPhoneNumber()
138 | {
139 | return PusheAndroidUtils.Native().CallStatic("getUserPhoneNumber");
140 | }
141 |
142 | public static void AddTags(IDictionary tags)
143 | {
144 | var mapOfTags = PusheAndroidUtils.CreateJavaMapFromDictionary(tags);
145 | PusheAndroidUtils.Native().CallStatic("addTags", mapOfTags);
146 | }
147 |
148 | public static void RemoveTags(params string[] tags)
149 | {
150 | var tagsToRemove = PusheAndroidUtils.CreateJavaArrayList(tags);
151 | PusheAndroidUtils.Native().CallStatic("removeTags", tagsToRemove);
152 | }
153 |
154 | public static string GetSubscribedTags()
155 | {
156 |
157 | return PusheAndroidUtils.Extension().CallStatic("getSubscribedTagsJson");
158 | }
159 |
160 |
161 | }
162 |
163 |
164 |
165 |
166 | [SuppressMessage("ReSharper", "InconsistentNaming")]
167 | public class RegisterCallback : AndroidJavaProxy
168 | {
169 | private readonly PusheUnity.PusheDelegate pusheSuccessDelegate;
170 |
171 | public RegisterCallback(PusheUnity.PusheDelegate pushe) : base("co.pushe.plus.Pushe$Callback")
172 | {
173 | pusheSuccessDelegate = pushe;
174 | }
175 |
176 | public void onComplete()
177 | {
178 | pusheSuccessDelegate();
179 | }
180 | }
181 | }
--------------------------------------------------------------------------------
/Assets/Pushe/android/PusheInAppMessaging.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics.CodeAnalysis;
3 | using UnityEngine;
4 |
5 | namespace Pushe.android
6 | {
7 | public static class PusheInAppMessaging {
8 |
9 | /// Trigger a local event. Local event is useless for sending data to server.
10 | /// Since no data is sent to server. Local events are only useful for triggering an in app messaging
11 | /// which is stored before. If you want to send data to server
12 | public static void TriggerEvent(string eventName) {
13 | PusheUnity.Log("Triggering local event " + eventName);
14 | PiamService().Call("triggerEvent", eventName);
15 | }
16 |
17 | public static void EnableInAppMessaging() {
18 | PusheUnity.Log("Enabling InAppMessaging");
19 | PiamService().Call("enableInAppMessaging");
20 | }
21 |
22 | public static void DisableInAppMessaging() {
23 | PusheUnity.Log("Disabling InAppMessaging");
24 | PiamService().Call("disableInAppMessaging");
25 | }
26 |
27 | public static bool IsInAppMessagingEnabled() {
28 | return PiamService().Call("isInAppMessagingEnabled");
29 | }
30 |
31 | /// **VisibleForTesting**
32 | /// In order to test a message locally using code
33 | /// you can use this function to test the message that is used in API\
34 | /// Note that the function should ONLY BE USED FOR TESTING and does not send any info
35 | /// and will not trigger any callback
36 | /// Is a json string adopted from Restful-API body
37 | /// Tells if messsage should be triggered instantly or wait for it's display conditions.
38 | public static void TestInAppMessage(string message, bool instant = false) {
39 | PusheUnity.Log("Sending test message to InAppMessaging module\nMessage:" + message);
40 | PiamService().Call("testInAppMessage", new object[] {message, instant});
41 | }
42 |
43 | /// Listen to different events of InAppMessaging.
44 | /// Consists of "receive", "trigger", "click", "dismiss", "buttonClick"
45 | /// If a message occurred due to one of mentioned events, you will be notified.
46 | /// For isntance if you want to pause the game when an InAppMessage was triggered, you can listen to `trigger`
47 | /// and pause the game (No changes will happen on Game.Neighther pause, or anything else.)
48 | /// is the callback which is an interface and needs to be implemented
49 | public static void SetInAppMessagingListener(IPusheInAppMessagingListener listener) {
50 | var callback = new InAppMessagingCallback(listener);
51 | PiamService().Call("setInAppMessagingListener", callback);
52 | }
53 |
54 | private static AndroidJavaObject PiamService()
55 | {
56 | return PusheAndroidUtils.Native().CallStatic("getPusheService", "inappmessaging");
57 | }
58 | }
59 |
60 | [SuppressMessage("ReSharper", "InconsistentNaming")]
61 | public class InAppMessagingCallback : AndroidJavaProxy
62 | {
63 | private IPusheInAppMessagingListener _listener;
64 |
65 | public InAppMessagingCallback(IPusheInAppMessagingListener listener) : base("co.pushe.plus.inappmessaging.PusheInAppMessagingListener")
66 | {
67 | _listener = listener;
68 | }
69 |
70 | public void onInAppMessageReceived (AndroidJavaObject inapp) {
71 | _listener.OnInAppMessageReceived(InAppMessage.FromAndroid(inapp));
72 | }
73 | public void onInAppMessageTriggered(AndroidJavaObject inapp) {
74 | _listener.OnInAppMessageTriggered(InAppMessage.FromAndroid(inapp));
75 | }
76 | public void onInAppMessageClicked(AndroidJavaObject inapp) {
77 | _listener.OnInAppMessageClicked(InAppMessage.FromAndroid(inapp));
78 | }
79 | public void onInAppMessageDismissed(AndroidJavaObject inapp) {
80 | _listener.OnInAppMessageDismissed(InAppMessage.FromAndroid(inapp));
81 | }
82 | public void onInAppMessageButtonClicked(AndroidJavaObject inapp, int index) {
83 | _listener.OnInAppMessageButtonClicked(InAppMessage.FromAndroid(inapp), index);
84 | }
85 |
86 |
87 | }
88 |
89 | [Serializable]
90 | public class InAppMessage {
91 | public string title;
92 | public string content;
93 |
94 | public InAppMessageButton[] buttons;
95 |
96 | public static InAppMessage FromAndroid(AndroidJavaObject androidObject) {
97 | var inapp = new InAppMessage();
98 | try {
99 | var inappJson = PusheAndroidUtils.Extension("inappmessaging").CallStatic("inAppToJson", androidObject);
100 | inapp = JsonUtility.FromJson(inappJson);
101 | } catch(Exception e) {
102 | PusheUnity.Log("Failed to parse inapp message.\n" + e);
103 | }
104 | return inapp;
105 | }
106 | }
107 |
108 | [Serializable]
109 | public class InAppMessageButton {
110 | public string text;
111 | }
112 | }
--------------------------------------------------------------------------------
/Assets/Pushe/android/PusheNotification.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics.CodeAnalysis;
3 | using UnityEngine;
4 |
5 | namespace Pushe.android
6 | {
7 | ///
8 | /// Notification Utility APIs provided by Pushe library
9 | /// This file contains all modules and APIs needed to work with pushe.
10 | ///
11 | public static class PusheNotification
12 | {
13 |
14 | ///
15 | /// For API 26 and above you can create channel for your app.
16 | /// Please refer to android official docs for more information
17 | ///
18 | /// NOTE: If lower than 26, nothing will happen.
19 | ///
20 | public static void CreateNotificationChannel(
21 | string channelId,
22 | string channelName,
23 | string description = "",
24 | int importance = 4,
25 | bool enableLight = true,
26 | bool enableVibration = true,
27 | long[] vibrationLengths = null,
28 | bool showBadge = true,
29 | int ledColor = 0
30 | )
31 | {
32 | if (PusheAndroidUtils.SdkLevel() >= 26)
33 | {
34 | PusheAndroidUtils.PusheNotificationService().Call("createNotificationChannel", channelId, channelName,
35 | description, importance, enableLight, enableVibration, showBadge, ledColor, vibrationLengths);
36 | }
37 | else
38 | {
39 | Debug.Log("Lower than android 8.0. Channel not created!");
40 | }
41 | }
42 |
43 | public static void RemoveNotificationChannel(string channelId)
44 | {
45 | if (PusheAndroidUtils.SdkLevel() >= 26)
46 | {
47 | PusheAndroidUtils.PusheNotificationService().Call("removeNotificationChannel", channelId);
48 | }
49 | else
50 | {
51 | Debug.Log("Lower than android 8.0. No channel to remove :|");
52 | }
53 | }
54 |
55 | public static void EnableNotification()
56 | {
57 | PusheAndroidUtils.PusheNotificationService().Call("enableNotifications");
58 | }
59 |
60 | public static void DisableNotification()
61 | {
62 | PusheAndroidUtils.PusheNotificationService().Call("disableNotifications");
63 | }
64 |
65 | public static bool IsNotificationEnabled()
66 | {
67 | return PusheAndroidUtils.PusheNotificationService().Call("isNotificationEnable");
68 | }
69 |
70 | public static void EnableCustomSound()
71 | {
72 | PusheAndroidUtils.PusheNotificationService().Call("enableCustomSound");
73 | }
74 |
75 | public static void DisableCustomSound()
76 | {
77 | PusheAndroidUtils.PusheNotificationService().Call("disableCustomSound");
78 | }
79 |
80 | public static bool IsCustomSoundEnabled()
81 | {
82 | return PusheAndroidUtils.PusheNotificationService().Call("isCustomSoundEnable");
83 | }
84 |
85 | public static void SetNotificationListener(IPusheNotificationListener listener) {
86 | var callback = new NotificationCallback(listener);
87 | PusheAndroidUtils.PusheNotificationService().Call("setNotificationListener", callback);
88 | }
89 |
90 |
91 |
92 | ///
93 | /// With this function you can send notification from user to user.
94 | ///
95 | /// Will be thrown if needed param was entered as a null value
96 | public static void SendNotificationToUser(UserNotification userNotification)
97 | {
98 | if (userNotification.Id == null || userNotification.Title == null || userNotification.Content == null)
99 | {
100 | throw new Exception("id, title and content must be set.");
101 | }
102 |
103 | var userNotifClass = new AndroidJavaClass("co.pushe.plus.notification.UserNotification");
104 | AndroidJavaObject userNotif;
105 |
106 | switch (userNotification.Type)
107 | {
108 | case UserNotification.IdType.CustomId:
109 | userNotif = userNotifClass.CallStatic("withCustomId", userNotification.Id);
110 | break;
111 | case UserNotification.IdType.AndroidId:
112 | userNotif = userNotifClass.CallStatic("WithAndroidId", userNotification.Id);
113 | break;
114 | case UserNotification.IdType.GoogleAdId:
115 | userNotif = userNotifClass.CallStatic("withAdvertisementId",
116 | userNotification.Id);
117 | break;
118 | default:
119 | throw new Exception("IdType is not valid");
120 | }
121 |
122 | userNotif = userNotif.Call("setTitle", userNotification.Title)
123 | .Call("setContent", userNotification.Content);
124 | if (userNotification.IconUrl != null)
125 | {
126 | userNotif = userNotif.Call("setIconUrl", userNotification.IconUrl);
127 | }
128 |
129 | if (userNotification.BigTitle != null)
130 | {
131 | userNotif = userNotif.Call("setBigTitle", userNotification.BigTitle);
132 | }
133 |
134 | if (userNotification.BigContent != null)
135 | {
136 | userNotif = userNotif.Call("setBigContent", userNotification.BigContent);
137 | }
138 |
139 | if (userNotification.ImageUrl != null)
140 | {
141 | userNotif = userNotif.Call("setImageUrl", userNotification.ImageUrl);
142 | }
143 |
144 | if (userNotification.CustomContent != null)
145 | {
146 | userNotif = userNotif.Call("setCustomContent", userNotification.CustomContent);
147 | }
148 |
149 | if (userNotification.AdvancedJson != null)
150 | {
151 | userNotif = userNotif.Call("setAdvancedNotification", userNotification.AdvancedJson);
152 | }
153 |
154 | if (userNotification.NotifIcon != null)
155 | {
156 | userNotif = userNotif.Call("setNotifIcon", userNotification.NotifIcon);
157 | }
158 |
159 | try
160 | {
161 | PusheAndroidUtils.PusheNotificationService().Call("sendNotificationToUser", userNotif);
162 | }
163 | catch (Exception e)
164 | {
165 | PusheUnity.Log("Could not send a notification " + e);
166 | }
167 | }
168 |
169 | }
170 |
171 | ///
172 | /// This class is used to handle notification management in order to be used for sending notification.
173 | ///
174 | public class UserNotification
175 | {
176 | public readonly IdType Type;
177 | public readonly string Id;
178 |
179 |
180 | public string AdvancedJson;
181 | public string Title;
182 | public string Content;
183 | public string BigTitle;
184 | public string BigContent;
185 | public string ImageUrl;
186 | public string IconUrl;
187 | public string NotifIcon;
188 | public string CustomContent;
189 |
190 | private UserNotification(IdType type, string id)
191 | {
192 | Type = type;
193 | Id = id;
194 | }
195 |
196 | public static UserNotification WithCustomId(string customId)
197 | {
198 | return new UserNotification(IdType.CustomId, customId);
199 | }
200 |
201 | public static UserNotification WithGoogleAdvertisementId(string adId)
202 | {
203 | return new UserNotification(IdType.GoogleAdId, adId);
204 | }
205 |
206 | public static UserNotification WithAndroidId(string androidId)
207 | {
208 | return new UserNotification(IdType.AndroidId, androidId);
209 | }
210 |
211 | public UserNotification SetTitle(string title)
212 | {
213 | Title = title;
214 | return this;
215 | }
216 |
217 | public UserNotification SetContent(string content)
218 | {
219 | Content = content;
220 | return this;
221 | }
222 |
223 | public UserNotification SetBigTitle(string bigTitle)
224 | {
225 | BigTitle = bigTitle;
226 | return this;
227 | }
228 |
229 | public UserNotification SetBigContent(string bigContent)
230 | {
231 | BigContent = bigContent;
232 | return this;
233 | }
234 |
235 | public UserNotification SetImageUrl(string imageUrl)
236 | {
237 | ImageUrl = imageUrl;
238 | return this;
239 | }
240 |
241 | public UserNotification SetIconUrl(string iconUrl)
242 | {
243 | IconUrl = iconUrl;
244 | return this;
245 | }
246 |
247 | public UserNotification SetNotifIcon(string notifIcon)
248 | {
249 | NotifIcon = notifIcon;
250 | return this;
251 | }
252 |
253 | public UserNotification SetCustomContent(string customContent)
254 | {
255 | CustomContent = customContent;
256 | return this;
257 | }
258 |
259 | public UserNotification SetAdvancedNotification(string advancedNotificationJson)
260 | {
261 | AdvancedJson = advancedNotificationJson;
262 | return this;
263 | }
264 |
265 | public enum IdType
266 | { CustomId, GoogleAdId, AndroidId }
267 | }
268 |
269 | ///
270 | /// A class to hold data received from a FCM notification.
271 | ///
272 | [Serializable]
273 | public class NotificationData
274 | {
275 | public string title, content, bigTitle,
276 | bigContent, summary, imageUrl, iconUrl, bigIconUrl, customContent;
277 |
278 | public NotificationButtonData[] buttons;
279 |
280 | public static NotificationData FromAndroid(AndroidJavaObject androidJavaObject) {
281 | NotificationData notification = new NotificationData();
282 | try {
283 | string json = PusheAndroidUtils.Extension("notification").CallStatic("notificationToJson", androidJavaObject);
284 | notification = JsonUtility.FromJson(json);
285 | } catch(Exception e) {
286 | PusheUnity.Log("Failed to parse notification" + e);
287 | }
288 | return notification;
289 | }
290 |
291 | public override string ToString()
292 | {
293 | return "\n" +
294 | title + "/" +
295 | content + "/" +
296 | bigTitle + "/" +
297 | bigContent + "/" +
298 | summary + "/" +
299 | imageUrl + "/" +
300 | iconUrl + "/" +
301 | bigIconUrl + "/" +
302 | customContent + "/" +
303 | buttons;
304 | }
305 | }
306 |
307 | [Serializable]
308 | public class NotificationButtonData
309 | {
310 | public string id, text, icon;
311 |
312 | public static NotificationButtonData FromAndroid(AndroidJavaObject androidJavaObject) {
313 | NotificationButtonData button = new NotificationButtonData();
314 | try {
315 | string json = PusheAndroidUtils.Extension("notification").CallStatic("notificationButtonToJson", androidJavaObject);
316 | button = JsonUtility.FromJson(json);
317 | } catch(Exception e) {
318 | PusheUnity.Log("Failed to parse notification " + e);
319 | }
320 | return button;
321 | }
322 |
323 | public override string ToString()
324 | {
325 | return id + "/" + text + "/" + icon;
326 | }
327 | }
328 |
329 | [SuppressMessage("ReSharper", "InconsistentNaming")]
330 | public class NotificationCallback : AndroidJavaProxy
331 | {
332 | private IPusheNotificationListener _listener;
333 |
334 | public NotificationCallback(IPusheNotificationListener listener) : base("co.pushe.plus.notification.PusheNotificationListener")
335 | {
336 | _listener = listener;
337 | }
338 |
339 | public void onNotification(AndroidJavaObject notification) {
340 | var data = NotificationData.FromAndroid(notification);
341 | _listener.OnNotification(data);
342 | }
343 | public void onCustomContentNotification(AndroidJavaObject customContent) {
344 | var data = PusheAndroidUtils.Extension("notification").CallStatic("mapToString", customContent);
345 | _listener.OnCustomContentReceived(data);
346 | }
347 | public void onNotificationClick(AndroidJavaObject notification) {
348 | var data = NotificationData.FromAndroid(notification);
349 | _listener.OnNotificationClick(data);
350 | }
351 | public void onNotificationDismiss(AndroidJavaObject notification) {
352 | var data = NotificationData.FromAndroid(notification);
353 | _listener.OnNotificationDismiss(data);
354 | }
355 | public void onNotificationButtonClick(AndroidJavaObject notification, AndroidJavaObject button) {
356 | var data = NotificationData.FromAndroid(notification);
357 | var clickedButton = NotificationButtonData.FromAndroid(button);
358 | _listener.OnButtonClick(clickedButton, data);
359 | }
360 |
361 |
362 | }
363 | }
--------------------------------------------------------------------------------
/Assets/Pushe/android/PusheUtils.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using UnityEngine;
3 |
4 | namespace Pushe.android
5 | {
6 | static class PusheUtils
7 | {
8 |
9 | private const string PushePath = "co.pushe.plus.Pushe";
10 | // Some additional functions for Pushe SDK
11 | private const string ExtPath = "co.pushe.plus.ext.PusheExt";
12 |
13 | public static AndroidJavaClass Extension(string module = "core")
14 | {
15 | switch (module)
16 | {
17 | case "core":
18 | return new AndroidJavaClass("co.pushe.plus.ext.PusheExt");
19 | case "notification":
20 | return new AndroidJavaClass("co.pushe.plus.notification.ext.PusheExt");
21 | case "analytics":
22 | return new AndroidJavaClass("co.pushe.plus.analytics.ext.PusheExt");
23 | case "inappmessaging":
24 | return new AndroidJavaClass("co.pushe.plus.inappmessaging.ext.PusheExt");
25 |
26 | }
27 | return new AndroidJavaClass(ExtPath);
28 | }
29 |
30 | public static AndroidJavaClass Native()
31 | {
32 | return new AndroidJavaClass(PushePath);
33 | }
34 |
35 | public static AndroidJavaObject CreateJavaArrayList(params string[] elements)
36 | {
37 | var list = new AndroidJavaObject("java.util.ArrayList");
38 | foreach (var element in elements)
39 | {
40 | list.Call("add", element);
41 | }
42 |
43 | return list;
44 | }
45 |
46 | public static AndroidJavaObject CreateJavaMapFromDictionary(IDictionary parameters)
47 | {
48 | var javaMap = new AndroidJavaObject("java.util.HashMap");
49 | var putMethod = AndroidJNIHelper.GetMethodID(
50 | javaMap.GetRawClass(), "put",
51 | "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
52 |
53 | var args = new object[2];
54 | foreach (var kvp in parameters)
55 | {
56 | using (var k = new AndroidJavaObject(
57 | "java.lang.String", kvp.Key))
58 | {
59 | using (var v = new AndroidJavaObject(
60 | "java.lang.String", kvp.Value))
61 | {
62 | args[0] = k;
63 | args[1] = v;
64 | AndroidJNI.CallObjectMethod(javaMap.GetRawObject(),
65 | putMethod, AndroidJNIHelper.CreateJNIArgArray(args));
66 | }
67 | }
68 | }
69 |
70 | return javaMap;
71 | }
72 |
73 | }
74 | }
--------------------------------------------------------------------------------
/Assets/Pushe/ios/PusheiOSUnityInterface.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 | using System.Runtime.InteropServices;
4 |
5 | public class PusheiOSUnityInterface {
6 | #if UNITY_IOS && !UNITY_EDITOR
7 | [DllImport("__Internal")]
8 | private static extern void xcodeLog(string message);
9 |
10 | [DllImport("__Internal")]
11 | private static extern void initialize();
12 |
13 | [DllImport("__Internal")]
14 | private static extern bool isRegistered();
15 |
16 | [DllImport("__Internal")]
17 | private static extern string getDeviceId();
18 |
19 | [DllImport("__Internal")]
20 | private static extern string getAdvertisingId();
21 |
22 | [DllImport("__Internal")]
23 | private static extern void subscribeTo(string topic);
24 |
25 | [DllImport("__Internal")]
26 | private static extern void unsubscribeFrom(string topic);
27 |
28 | [DllImport("__Internal")]
29 | private static extern string getSubscribedTopics();
30 |
31 | [DllImport("__Internal")]
32 | private static extern void addTags(string tags);
33 |
34 | [DllImport("__Internal")]
35 | private static extern void removeTags(string keys);
36 |
37 | [DllImport("__Internal")]
38 | private static extern string getSubscribedTags();
39 |
40 | [DllImport("__Internal")]
41 | private static extern void setCustomId(string id);
42 |
43 | [DllImport("__Internal")]
44 | private static extern string getCustomId();
45 |
46 | [DllImport("__Internal")]
47 | private static extern bool setUserEmail(string email);
48 |
49 | [DllImport("__Internal")]
50 | private static extern string getUserEmail();
51 |
52 | [DllImport("__Internal")]
53 | private static extern bool setUserPhoneNumber(string phoneNumber);
54 |
55 | [DllImport("__Internal")]
56 | private static extern string getUserPhoneNumber();
57 |
58 | [DllImport("__Internal")]
59 | private static extern void sendEvent(string eventName);
60 | #endif
61 |
62 | public static void XcodeLog(string message) {
63 | #if UNITY_IOS && !UNITY_EDITOR
64 | xcodeLog(message);
65 | #endif
66 | }
67 |
68 | public static void Initialize() {
69 | #if UNITY_IOS && !UNITY_EDITOR
70 | initialize();
71 | #endif
72 | }
73 |
74 | public static bool IsRegistered() {
75 | #if UNITY_IOS && !UNITY_EDITOR
76 | return isRegistered();
77 | #endif
78 | return false;
79 | }
80 |
81 | public static string GetDeviceId() {
82 | #if UNITY_IOS && !UNITY_EDITOR
83 | return getDeviceId();
84 | #endif
85 | return null;
86 | }
87 |
88 | public static string GetAdvertisingId() {
89 | #if UNITY_IOS && !UNITY_EDITOR
90 | return getAdvertisingId();
91 | #endif
92 | return null;
93 | }
94 |
95 | public static void Subscribe(string topic) {
96 | #if UNITY_IOS && !UNITY_EDITOR
97 | subscribeTo(topic);
98 | #endif
99 | }
100 |
101 | public static void Unsubscribe(string topic) {
102 | #if UNITY_IOS && !UNITY_EDITOR
103 | unsubscribeFrom(topic);
104 | #endif
105 | }
106 |
107 | public static string[] GetSubscribedTopics() {
108 | #if UNITY_IOS && !UNITY_EDITOR
109 | string result = getSubscribedTopics();
110 | result = result.TrimStart('[');
111 | result = result.TrimEnd(']');
112 | string[] des = result.Split(',');
113 | for (int i = 0; i < des.Length; i++) {
114 | des[i] = des[i].TrimStart('"');
115 | des[i] = des[i].TrimEnd('"');
116 | }
117 | return des;
118 | #endif
119 | return null;
120 | }
121 |
122 | public static void AddTags(Dictionary tags) {
123 | string stringForm = "";
124 | for (int i = 0; i < tags.Count; i++) {
125 | if (i != 0) {
126 | stringForm += ",";
127 | }
128 | string key = tags.ElementAt(i).Key;
129 | string value = tags.ElementAt(i).Value;
130 | stringForm += key + ":" + value;
131 | }
132 | #if UNITY_IOS && !UNITY_EDITOR
133 | addTags(stringForm);
134 | #endif
135 | }
136 |
137 | public static void RemoveTags(string[] keys) {
138 | string stringForm = "";
139 | for (int i = 0; i < keys.Length; i++) {
140 | if (i != 0) {
141 | stringForm += ",";
142 | }
143 | stringForm += keys[i];
144 | }
145 | #if UNITY_IOS && !UNITY_EDITOR
146 | removeTags(stringForm);
147 | #endif
148 | }
149 |
150 | // {"key1":"value1","key3":"value3","key2":"value2"}
151 | public static Dictionary GetSubscribedTags() {
152 | #if UNITY_IOS && !UNITY_EDITOR
153 | string stringForm = getSubscribedTags();
154 | stringForm = stringForm.TrimStart('{');
155 | stringForm = stringForm.TrimEnd('}');
156 | string[] dicItems = stringForm.Split(',');
157 | Dictionary result = new Dictionary();
158 | for (int i = 0; i < dicItems.Length; i++) {
159 | string[] temp = dicItems[i].Split(':') ;
160 | result.Add(temp[0], temp[1]);
161 | }
162 | return result;
163 | #endif
164 | return new Dictionary();
165 | }
166 |
167 | public static void SendEvent(string eventName) {
168 | #if UNITY_IOS && !UNITY_EDITOR
169 | sendEvent(eventName);
170 | #endif
171 | }
172 |
173 | public static void SetCustomId(string id) {
174 | #if UNITY_IOS && !UNITY_EDITOR
175 | setCustomId(id);
176 | #endif
177 | }
178 |
179 | public static string GetCustomId() {
180 | #if UNITY_IOS && !UNITY_EDITOR
181 | return getCustomId();
182 | #endif
183 | return null;
184 | }
185 |
186 | public static bool SetUserEmail(string email) {
187 | #if UNITY_IOS && !UNITY_EDITOR
188 | return setUserEmail(email);
189 | #endif
190 | return false;
191 | }
192 |
193 | public static string GetUserEmail() {
194 | #if UNITY_IOS && !UNITY_EDITOR
195 | return getUserEmail();
196 | #endif
197 | return null;
198 | }
199 |
200 | public static bool SetUserPhoneNumber(string phoneNumber) {
201 | #if UNITY_IOS && !UNITY_EDITOR
202 | return setUserPhoneNumber(phoneNumber);
203 | #endif
204 | return false;
205 | }
206 |
207 | public static string GetUserPhoneNumber() {
208 | #if UNITY_IOS && !UNITY_EDITOR
209 | return getUserPhoneNumber();
210 | #endif
211 | return null;
212 | }
213 | }
--------------------------------------------------------------------------------
/Assets/Pushe/ios/PusheiOSUnityInterface.mm:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 |
4 | char* cStringCopy(const char*);
5 |
6 | extern "C" {
7 | void xcodeLog(const char *message) {
8 | NSString *string = [[NSString alloc] initWithUTF8String:message];
9 | NSLog(@"++++++++++");
10 | NSLog(@"🎄 -> %@", string);
11 | NSLog(@"++++++++++");
12 | }
13 |
14 | void initialize() {
15 | [PusheClient.shared initialize];
16 | }
17 |
18 | bool isRegistered() {
19 | return [PusheClient.shared isRegistered];
20 | }
21 |
22 | char * getDeviceId() {
23 | NSString *result = [PusheClient.shared getDeviceId];
24 | return cStringCopy([result UTF8String]);
25 | }
26 |
27 | char * getAdvertisingId() {
28 | NSString *result = [PusheClient.shared getAdvertisingId];
29 | return cStringCopy([result UTF8String]);
30 | }
31 |
32 | void subscribeTo(const char *topic) {
33 | NSString *string = [[NSString alloc] initWithUTF8String:topic];
34 | [PusheClient.shared subscribe:string];
35 | }
36 |
37 | void unsubscribeFrom(const char *topic) {
38 | NSString *string = [[NSString alloc] initWithUTF8String:topic];
39 | [PusheClient.shared unsubscribe:string];
40 | }
41 |
42 | char * getSubscribedTopics() {
43 | NSArray *array = [[NSArray alloc] initWithArray:[PusheClient.shared getSubscribedTopics]];
44 | NSString *json = NULL;
45 | NSError *error = NULL;
46 | NSData *data = [NSJSONSerialization dataWithJSONObject:array options:NULL error:&error];
47 | json = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
48 |
49 | if (error != NULL) {
50 | return NULL;
51 | } else {
52 | return cStringCopy([json UTF8String]);
53 | }
54 | }
55 |
56 | void addTags(const char *tags) {
57 | NSString *string = [[NSString alloc] initWithUTF8String:tags];
58 | NSArray *keyValues = [string componentsSeparatedByString:@","];
59 | NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithCapacity:keyValues.count];
60 | for (int i = 0; i < keyValues.count; i++) {
61 | NSArray *temp = [keyValues[i] componentsSeparatedByString:@":"];
62 | NSString *key = temp[0];
63 | NSString *value = temp[1];
64 | [dict setObject:value forKey:key];
65 | }
66 |
67 | [PusheClient.shared addTags:dict];
68 | }
69 |
70 | void removeTags(const char * keys) {
71 | xcodeLog(keys);
72 | NSString *string = [[NSString alloc] initWithUTF8String:keys];
73 | NSArray *keysArray = [string componentsSeparatedByString:@","];
74 | [PusheClient.shared removeTags:keysArray];
75 | }
76 |
77 | char * getSubscribedTags() {
78 | NSDictionary *tags = [[NSDictionary alloc] initWithDictionary:[PusheClient.shared getSubscribedTags]];
79 | NSString *json = NULL;
80 | NSError *error = NULL;
81 | NSData *data = [NSJSONSerialization dataWithJSONObject:tags options:NULL error:&error];
82 | json = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
83 |
84 | if (error != NULL) {
85 | return NULL;
86 | } else {
87 | return cStringCopy([json UTF8String]);
88 | }
89 | }
90 |
91 | void sendEvent(const char * eventName) {
92 | if (eventName == NULL) {
93 | return;
94 | }
95 |
96 | NSString *string = [[NSString alloc] initWithUTF8String:eventName];
97 | [PusheClient.shared sendEventWithName:string];
98 | }
99 |
100 | void setCustomId(const char * customId) {
101 | NSString *string;
102 | if (customId == NULL) {
103 | string = NULL;
104 | } else {
105 | string = [[NSString alloc] initWithUTF8String:customId];
106 | }
107 |
108 | [PusheClient.shared setCustomId:string];
109 | }
110 |
111 | char * getCustomId() {
112 | NSString *result = [PusheClient.shared getCustomId];
113 | return cStringCopy([result UTF8String]);
114 | }
115 |
116 | bool setUserEmail(const char * email) {
117 | NSString *string;
118 | if (email == NULL) {
119 | string = NULL;
120 | } else {
121 | string = [[NSString alloc] initWithUTF8String:email];
122 | }
123 |
124 | return [PusheClient.shared setUserEmail:string];
125 | }
126 |
127 | char * getUserEmail() {
128 | NSString *result = [PusheClient.shared getUserEmail];
129 | return cStringCopy([result UTF8String]);
130 | }
131 |
132 | bool setUserPhoneNumber(const char * phoneNumber) {
133 | NSString *string;
134 | if (phoneNumber == NULL) {
135 | string = NULL;
136 | } else {
137 | string = [[NSString alloc] initWithUTF8String:phoneNumber];
138 | }
139 |
140 | return [PusheClient.shared setUserPhoneNumber:string];
141 | }
142 |
143 | char * getUserPhoneNumber() {
144 | NSString *result = [PusheClient.shared getUserPhoneNumber];
145 | return cStringCopy([result UTF8String]);
146 | }
147 | }
148 |
149 | char* cStringCopy(const char* string) {
150 | if (string == NULL)
151 | return NULL;
152 |
153 | char* res = (char*)malloc(strlen(string) + 1);
154 | strcpy(res, string);
155 |
156 | return res;
157 | }
158 |
--------------------------------------------------------------------------------
/Assets/Scripts.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bc3b5957150c44449a99008ed7b7a48a
3 | timeCreated: 1606410634
--------------------------------------------------------------------------------
/Assets/Scripts/GameController.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections;
3 | using System.Collections.Generic;
4 | using UnityEngine;
5 | using UnityEngine.SceneManagement;
6 |
7 | [RequireComponent(typeof(GameUi))]
8 | public class GameController : MonoBehaviour {
9 |
10 | public static GameController Instance { get; private set; }
11 |
12 | [SerializeField] private int knifeCount;
13 |
14 | [Header("Knife Spawning")]
15 | [SerializeField]
16 | private Vector2 knifeSpawnPosition;
17 |
18 | [SerializeField] private GameObject knifeObject;
19 |
20 | public GameUi GameUi { get; private set; }
21 |
22 | private void Awake()
23 | {
24 | Instance = this;
25 | GameUi = GetComponent();
26 | }
27 |
28 | private void Start()
29 | {
30 | GameUi.SetInitialDisplayedKnifeCount(knifeCount);
31 | SpawnKnife();
32 | }
33 |
34 | public void OnSuccessfulKnifeHit()
35 | {
36 | if (knifeCount > 0)
37 | {
38 | SpawnKnife();
39 | }
40 | else
41 | {
42 | StartGameOverSequence(true);
43 | }
44 | }
45 |
46 | public void SpawnKnife()
47 | {
48 | knifeCount--;
49 | Instantiate(knifeObject, knifeSpawnPosition, Quaternion.identity);
50 |
51 | }
52 |
53 | public void StartGameOverSequence(bool win)
54 | {
55 | StartCoroutine("GameOverSequenceCoroutine", win);
56 | }
57 |
58 | private IEnumerator GameOverSequenceCoroutine(bool win)
59 | {
60 | if (win)
61 | {
62 | yield return new WaitForSecondsRealtime(0.3f);
63 | GameUi.ShowRestartButton();
64 | }
65 | else
66 | {
67 | GameUi.ShowRestartButton();
68 | }
69 | }
70 |
71 | public void RestartGame()
72 | {
73 | SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex, LoadSceneMode.Single);
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/Assets/Scripts/GameController.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f410efd0de5c58649a242edbe89db084
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/GameUi.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 | using UnityEngine.UI;
3 |
4 | public class GameUi : MonoBehaviour
5 | {
6 | [SerializeField]
7 | private GameObject restartButtonField;
8 |
9 | [Header("Knife count display")] [SerializeField]
10 | private GameObject panelKnives;
11 |
12 | [SerializeField] private GameObject iconKnife;
13 |
14 | [SerializeField] private Color usedKnifeIconColor;
15 |
16 | public void ShowRestartButton()
17 | {
18 | restartButtonField.SetActive(true);
19 | }
20 |
21 | public void SetInitialDisplayedKnifeCount(int count)
22 | {
23 | for (int i = 0; i < count; i++)
24 | {
25 | Instantiate(iconKnife, panelKnives.transform);
26 | }
27 | }
28 |
29 | private int knifeIconIndexToChange = 0;
30 |
31 | public void DecrementDisplayedKnifeCount()
32 | {
33 | panelKnives.transform.GetChild(knifeIconIndexToChange++)
34 | .GetComponent().color = usedKnifeIconColor;
35 | }
36 |
37 | }
--------------------------------------------------------------------------------
/Assets/Scripts/GameUi.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2618f7dffd4a4a71bf271f5bb64ec915
3 | timeCreated: 1606410659
--------------------------------------------------------------------------------
/Assets/Scripts/KnifeScripts.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections;
3 | using System.Collections.Generic;
4 | using UnityEngine;
5 |
6 | public class KnifeScripts : MonoBehaviour
7 | {
8 |
9 | [SerializeField]
10 | private Vector2 throwForce;
11 |
12 | private bool isActive = true;
13 |
14 | private Rigidbody2D rb;
15 | private BoxCollider2D knifeCollider;
16 |
17 | private void Awake()
18 | {
19 | rb = GetComponent();
20 | knifeCollider = GetComponent();
21 | }
22 |
23 | private void Update()
24 | {
25 | if (Input.GetMouseButtonDown(0) && isActive)
26 | {
27 | rb.AddForce(throwForce, ForceMode2D.Impulse);
28 | rb.gravityScale = 1;
29 | GameController.Instance.GameUi.DecrementDisplayedKnifeCount();
30 | }
31 | }
32 |
33 | private void OnCollisionEnter2D(Collision2D collision)
34 | {
35 | if (!isActive) return;
36 |
37 | isActive = false;
38 |
39 | if (collision.collider.CompareTag("Log"))
40 | {
41 | GetComponent().Play();
42 | rb.velocity = new Vector2(0, 0);
43 | rb.bodyType = RigidbodyType2D.Kinematic;
44 | transform.SetParent(collision.collider.transform);
45 |
46 | knifeCollider.offset = new Vector2(knifeCollider.offset.x, -0.4f);
47 | knifeCollider.size = new Vector2(knifeCollider.size.x, 1.2f);
48 |
49 | GameController.Instance.OnSuccessfulKnifeHit();
50 | }
51 | else if (collision.collider.CompareTag("Knife"))
52 | {
53 | rb.velocity = new Vector2(rb.velocity.x, -2);
54 | GameController.Instance.StartGameOverSequence(false);
55 | }
56 |
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/Assets/Scripts/KnifeScripts.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 121a091dc7ed53743a17fa4b5dee3a38
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/LogRotation.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections;
3 | using System.Collections.Generic;
4 | using UnityEngine;
5 |
6 | public class LogRotation : MonoBehaviour {
7 |
8 | [Serializable]
9 | class RotationElement
10 | {
11 | #pragma warning disable 0649
12 | public float Speed;
13 | public float Duration;
14 |
15 | #pragma warning restore 0649
16 | }
17 |
18 | [SerializeField]
19 | private RotationElement[] rotationPattern;
20 |
21 | private WheelJoint2D wheelJoint2D;
22 | private JointMotor2D motor;
23 |
24 | private void Awake()
25 | {
26 | wheelJoint2D = GetComponent();
27 | motor = new JointMotor2D();
28 | StartCoroutine("PlayRotationPattern");
29 | }
30 |
31 | private IEnumerator PlayRotationPattern()
32 | {
33 | int rotationIndex = 0;
34 | while (true)
35 | {
36 | yield return new WaitForFixedUpdate();
37 |
38 | motor.motorSpeed = rotationPattern[rotationIndex].Speed;
39 | motor.maxMotorTorque = 10000;
40 | wheelJoint2D.motor = motor;
41 |
42 | yield return new WaitForSecondsRealtime(rotationPattern[rotationIndex].Duration);
43 | rotationIndex++;
44 | rotationIndex = rotationIndex < rotationPattern.Length ? rotationIndex : 0;
45 | }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/Assets/Scripts/LogRotation.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bf7a9b401da6b954e861d78a958fc158
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/WoodenParticleMaterial.mat:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!21 &2100000
4 | Material:
5 | serializedVersion: 6
6 | m_ObjectHideFlags: 0
7 | m_PrefabParentObject: {fileID: 0}
8 | m_PrefabInternal: {fileID: 0}
9 | m_Name: WoodenParticleMaterial
10 | m_Shader: {fileID: 211, guid: 0000000000000000f000000000000000, type: 0}
11 | m_ShaderKeywords:
12 | m_LightmapFlags: 0
13 | m_EnableInstancingVariants: 0
14 | m_DoubleSidedGI: 0
15 | m_CustomRenderQueue: -1
16 | stringTagMap: {}
17 | disabledShaderPasses:
18 | - ALWAYS
19 | m_SavedProperties:
20 | serializedVersion: 3
21 | m_TexEnvs:
22 | - _BumpMap:
23 | m_Texture: {fileID: 0}
24 | m_Scale: {x: 1, y: 1}
25 | m_Offset: {x: 0, y: 0}
26 | - _DetailAlbedoMap:
27 | m_Texture: {fileID: 0}
28 | m_Scale: {x: 1, y: 1}
29 | m_Offset: {x: 0, y: 0}
30 | - _DetailMask:
31 | m_Texture: {fileID: 0}
32 | m_Scale: {x: 1, y: 1}
33 | m_Offset: {x: 0, y: 0}
34 | - _DetailNormalMap:
35 | m_Texture: {fileID: 0}
36 | m_Scale: {x: 1, y: 1}
37 | m_Offset: {x: 0, y: 0}
38 | - _EmissionMap:
39 | m_Texture: {fileID: 0}
40 | m_Scale: {x: 1, y: 1}
41 | m_Offset: {x: 0, y: 0}
42 | - _MainTex:
43 | m_Texture: {fileID: 0}
44 | m_Scale: {x: 1, y: 1}
45 | m_Offset: {x: 0, y: 0}
46 | - _MetallicGlossMap:
47 | m_Texture: {fileID: 0}
48 | m_Scale: {x: 1, y: 1}
49 | m_Offset: {x: 0, y: 0}
50 | - _OcclusionMap:
51 | m_Texture: {fileID: 0}
52 | m_Scale: {x: 1, y: 1}
53 | m_Offset: {x: 0, y: 0}
54 | - _ParallaxMap:
55 | m_Texture: {fileID: 0}
56 | m_Scale: {x: 1, y: 1}
57 | m_Offset: {x: 0, y: 0}
58 | m_Floats:
59 | - _BlendOp: 0
60 | - _BumpScale: 1
61 | - _CameraFadingEnabled: 0
62 | - _CameraFarFadeDistance: 2
63 | - _CameraNearFadeDistance: 1
64 | - _ColorMode: 0
65 | - _Cull: 2
66 | - _Cutoff: 0.5
67 | - _DetailNormalMapScale: 1
68 | - _DistortionBlend: 0.5
69 | - _DistortionEnabled: 0
70 | - _DistortionStrength: 1
71 | - _DistortionStrengthScaled: 0
72 | - _DstBlend: 0
73 | - _EmissionEnabled: 0
74 | - _FlipbookMode: 0
75 | - _GlossMapScale: 1
76 | - _Glossiness: 0.5
77 | - _GlossyReflections: 1
78 | - _LightingEnabled: 0
79 | - _Metallic: 0
80 | - _Mode: 0
81 | - _OcclusionStrength: 1
82 | - _Parallax: 0.02
83 | - _SmoothnessTextureChannel: 0
84 | - _SoftParticlesEnabled: 0
85 | - _SoftParticlesFarFadeDistance: 1
86 | - _SoftParticlesNearFadeDistance: 0
87 | - _SpecularHighlights: 1
88 | - _SrcBlend: 1
89 | - _UVSec: 0
90 | - _ZWrite: 1
91 | m_Colors:
92 | - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0}
93 | - _Color: {r: 1, g: 1, b: 1, a: 1}
94 | - _ColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0}
95 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
96 | - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
97 |
--------------------------------------------------------------------------------
/Assets/WoodenParticleMaterial.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 129744e937ada2d4d9a7fc3429e650c9
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/knife_hit.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: 9
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: 3
28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
29 | m_SkyboxMaterial: {fileID: 0}
30 | m_HaloStrength: 0.5
31 | m_FlareStrength: 1
32 | m_FlareFadeSpeed: 3
33 | m_HaloTexture: {fileID: 0}
34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
35 | m_DefaultReflectionMode: 0
36 | m_DefaultReflectionResolution: 128
37 | m_ReflectionBounces: 1
38 | m_ReflectionIntensity: 1
39 | m_CustomReflection: {fileID: 0}
40 | m_Sun: {fileID: 0}
41 | m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
42 | m_UseRadianceAmbientProbe: 0
43 | --- !u!157 &3
44 | LightmapSettings:
45 | m_ObjectHideFlags: 0
46 | serializedVersion: 11
47 | m_GIWorkflowMode: 1
48 | m_GISettings:
49 | serializedVersion: 2
50 | m_BounceScale: 1
51 | m_IndirectOutputScale: 1
52 | m_AlbedoBoost: 1
53 | m_EnvironmentLightingMode: 0
54 | m_EnableBakedLightmaps: 0
55 | m_EnableRealtimeLightmaps: 0
56 | m_LightmapEditorSettings:
57 | serializedVersion: 12
58 | m_Resolution: 2
59 | m_BakeResolution: 40
60 | m_AtlasSize: 1024
61 | m_AO: 0
62 | m_AOMaxDistance: 1
63 | m_CompAOExponent: 1
64 | m_CompAOExponentDirect: 0
65 | m_ExtractAmbientOcclusion: 0
66 | m_Padding: 2
67 | m_LightmapParameters: {fileID: 0}
68 | m_LightmapsBakeMode: 1
69 | m_TextureCompression: 1
70 | m_FinalGather: 0
71 | m_FinalGatherFiltering: 1
72 | m_FinalGatherRayCount: 256
73 | m_ReflectionCompression: 2
74 | m_MixedBakeMode: 2
75 | m_BakeBackend: 0
76 | m_PVRSampling: 1
77 | m_PVRDirectSampleCount: 32
78 | m_PVRSampleCount: 500
79 | m_PVRBounces: 2
80 | m_PVREnvironmentSampleCount: 500
81 | m_PVREnvironmentReferencePointCount: 2048
82 | m_PVRFilteringMode: 2
83 | m_PVRDenoiserTypeDirect: 0
84 | m_PVRDenoiserTypeIndirect: 0
85 | m_PVRDenoiserTypeAO: 0
86 | m_PVRFilterTypeDirect: 0
87 | m_PVRFilterTypeIndirect: 0
88 | m_PVRFilterTypeAO: 0
89 | m_PVREnvironmentMIS: 0
90 | m_PVRCulling: 1
91 | m_PVRFilteringGaussRadiusDirect: 1
92 | m_PVRFilteringGaussRadiusIndirect: 5
93 | m_PVRFilteringGaussRadiusAO: 2
94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5
95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2
96 | m_PVRFilteringAtrousPositionSigmaAO: 1
97 | m_ExportTrainingData: 0
98 | m_TrainingDataDestination: TrainingData
99 | m_LightProbeSampleCountMultiplier: 4
100 | m_LightingDataAsset: {fileID: 0}
101 | m_UseShadowmask: 1
102 | --- !u!196 &4
103 | NavMeshSettings:
104 | serializedVersion: 2
105 | m_ObjectHideFlags: 0
106 | m_BuildSettings:
107 | serializedVersion: 2
108 | agentTypeID: 0
109 | agentRadius: 0.5
110 | agentHeight: 2
111 | agentSlope: 45
112 | agentClimb: 0.4
113 | ledgeDropHeight: 0
114 | maxJumpAcrossDistance: 0
115 | minRegionArea: 2
116 | manualCellSize: 0
117 | cellSize: 0.16666667
118 | manualTileSize: 0
119 | tileSize: 256
120 | accuratePlacement: 0
121 | debug:
122 | m_Flags: 0
123 | m_NavMeshData: {fileID: 0}
124 | --- !u!1 &6991921
125 | GameObject:
126 | m_ObjectHideFlags: 0
127 | m_CorrespondingSourceObject: {fileID: 0}
128 | m_PrefabInstance: {fileID: 0}
129 | m_PrefabAsset: {fileID: 0}
130 | serializedVersion: 6
131 | m_Component:
132 | - component: {fileID: 6991925}
133 | - component: {fileID: 6991924}
134 | - component: {fileID: 6991923}
135 | - component: {fileID: 6991922}
136 | - component: {fileID: 6991926}
137 | m_Layer: 0
138 | m_Name: Main Camera
139 | m_TagString: MainCamera
140 | m_Icon: {fileID: 0}
141 | m_NavMeshLayer: 0
142 | m_StaticEditorFlags: 0
143 | m_IsActive: 1
144 | --- !u!81 &6991922
145 | AudioListener:
146 | m_ObjectHideFlags: 0
147 | m_CorrespondingSourceObject: {fileID: 0}
148 | m_PrefabInstance: {fileID: 0}
149 | m_PrefabAsset: {fileID: 0}
150 | m_GameObject: {fileID: 6991921}
151 | m_Enabled: 1
152 | --- !u!124 &6991923
153 | Behaviour:
154 | m_ObjectHideFlags: 0
155 | m_CorrespondingSourceObject: {fileID: 0}
156 | m_PrefabInstance: {fileID: 0}
157 | m_PrefabAsset: {fileID: 0}
158 | m_GameObject: {fileID: 6991921}
159 | m_Enabled: 1
160 | --- !u!20 &6991924
161 | Camera:
162 | m_ObjectHideFlags: 0
163 | m_CorrespondingSourceObject: {fileID: 0}
164 | m_PrefabInstance: {fileID: 0}
165 | m_PrefabAsset: {fileID: 0}
166 | m_GameObject: {fileID: 6991921}
167 | m_Enabled: 1
168 | serializedVersion: 2
169 | m_ClearFlags: 1
170 | m_BackGroundColor: {r: 0.4339623, g: 0.71151686, b: 1, a: 1}
171 | m_projectionMatrixMode: 1
172 | m_GateFitMode: 2
173 | m_FOVAxisMode: 0
174 | m_SensorSize: {x: 36, y: 24}
175 | m_LensShift: {x: 0, y: 0}
176 | m_FocalLength: 50
177 | m_NormalizedViewPortRect:
178 | serializedVersion: 2
179 | x: 0
180 | y: 0
181 | width: 1
182 | height: 1
183 | near clip plane: 0.3
184 | far clip plane: 1000
185 | field of view: 60
186 | orthographic: 1
187 | orthographic size: 5
188 | m_Depth: -1
189 | m_CullingMask:
190 | serializedVersion: 2
191 | m_Bits: 4294967295
192 | m_RenderingPath: -1
193 | m_TargetTexture: {fileID: 0}
194 | m_TargetDisplay: 0
195 | m_TargetEye: 3
196 | m_HDR: 1
197 | m_AllowMSAA: 1
198 | m_AllowDynamicResolution: 0
199 | m_ForceIntoRT: 0
200 | m_OcclusionCulling: 1
201 | m_StereoConvergence: 10
202 | m_StereoSeparation: 0.022
203 | --- !u!4 &6991925
204 | Transform:
205 | m_ObjectHideFlags: 0
206 | m_CorrespondingSourceObject: {fileID: 0}
207 | m_PrefabInstance: {fileID: 0}
208 | m_PrefabAsset: {fileID: 0}
209 | m_GameObject: {fileID: 6991921}
210 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
211 | m_LocalPosition: {x: 0, y: 0, z: -10}
212 | m_LocalScale: {x: 1, y: 1, z: 1}
213 | m_Children: []
214 | m_Father: {fileID: 0}
215 | m_RootOrder: 0
216 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
217 | --- !u!114 &6991926
218 | MonoBehaviour:
219 | m_ObjectHideFlags: 0
220 | m_CorrespondingSourceObject: {fileID: 0}
221 | m_PrefabInstance: {fileID: 0}
222 | m_PrefabAsset: {fileID: 0}
223 | m_GameObject: {fileID: 6991921}
224 | m_Enabled: 1
225 | m_EditorHideFlags: 0
226 | m_Script: {fileID: 11500000, guid: 56bc75fe19e354f9880a8ececaed8fef, type: 3}
227 | m_Name:
228 | m_EditorClassIdentifier:
229 | --- !u!1 &162964439
230 | GameObject:
231 | m_ObjectHideFlags: 0
232 | m_CorrespondingSourceObject: {fileID: 0}
233 | m_PrefabInstance: {fileID: 0}
234 | m_PrefabAsset: {fileID: 0}
235 | serializedVersion: 6
236 | m_Component:
237 | - component: {fileID: 162964440}
238 | - component: {fileID: 162964443}
239 | - component: {fileID: 162964442}
240 | - component: {fileID: 162964441}
241 | m_Layer: 0
242 | m_Name: LogMotor
243 | m_TagString: Untagged
244 | m_Icon: {fileID: 0}
245 | m_NavMeshLayer: 0
246 | m_StaticEditorFlags: 0
247 | m_IsActive: 1
248 | --- !u!4 &162964440
249 | Transform:
250 | m_ObjectHideFlags: 0
251 | m_CorrespondingSourceObject: {fileID: 0}
252 | m_PrefabInstance: {fileID: 0}
253 | m_PrefabAsset: {fileID: 0}
254 | m_GameObject: {fileID: 162964439}
255 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
256 | m_LocalPosition: {x: 0, y: 2, z: -10}
257 | m_LocalScale: {x: 1, y: 1, z: 1}
258 | m_Children:
259 | - {fileID: 1943291406}
260 | m_Father: {fileID: 0}
261 | m_RootOrder: 2
262 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
263 | --- !u!114 &162964441
264 | MonoBehaviour:
265 | m_ObjectHideFlags: 0
266 | m_CorrespondingSourceObject: {fileID: 0}
267 | m_PrefabInstance: {fileID: 0}
268 | m_PrefabAsset: {fileID: 0}
269 | m_GameObject: {fileID: 162964439}
270 | m_Enabled: 1
271 | m_EditorHideFlags: 0
272 | m_Script: {fileID: 11500000, guid: bf7a9b401da6b954e861d78a958fc158, type: 3}
273 | m_Name:
274 | m_EditorClassIdentifier:
275 | rotationPattern:
276 | - Speed: 250
277 | Duration: 1
278 | - Speed: -100
279 | Duration: 2
280 | - Speed: -300
281 | Duration: 3
282 | - Speed: 100
283 | Duration: 1
284 | - Speed: -250
285 | Duration: 3
286 | - Speed: 200
287 | Duration: 2
288 | - Speed: 400
289 | Duration: 2
290 | --- !u!235 &162964442
291 | WheelJoint2D:
292 | m_ObjectHideFlags: 0
293 | m_CorrespondingSourceObject: {fileID: 0}
294 | m_PrefabInstance: {fileID: 0}
295 | m_PrefabAsset: {fileID: 0}
296 | m_GameObject: {fileID: 162964439}
297 | m_Enabled: 1
298 | serializedVersion: 4
299 | m_EnableCollision: 0
300 | m_ConnectedRigidBody: {fileID: 1943291408}
301 | m_BreakForce: Infinity
302 | m_BreakTorque: Infinity
303 | m_AutoConfigureConnectedAnchor: 1
304 | m_Anchor: {x: 0, y: 0}
305 | m_ConnectedAnchor: {x: 0, y: 0}
306 | m_Suspension:
307 | m_DampingRatio: 0.7
308 | m_Frequency: 2
309 | m_Angle: 90
310 | m_UseMotor: 0
311 | m_Motor:
312 | m_MotorSpeed: 0
313 | m_MaximumMotorForce: 10000
314 | --- !u!50 &162964443
315 | Rigidbody2D:
316 | serializedVersion: 4
317 | m_ObjectHideFlags: 0
318 | m_CorrespondingSourceObject: {fileID: 0}
319 | m_PrefabInstance: {fileID: 0}
320 | m_PrefabAsset: {fileID: 0}
321 | m_GameObject: {fileID: 162964439}
322 | m_BodyType: 1
323 | m_Simulated: 1
324 | m_UseFullKinematicContacts: 0
325 | m_UseAutoMass: 0
326 | m_Mass: 1
327 | m_LinearDrag: 0
328 | m_AngularDrag: 0.05
329 | m_GravityScale: 1
330 | m_Material: {fileID: 0}
331 | m_Interpolate: 0
332 | m_SleepingMode: 1
333 | m_CollisionDetection: 0
334 | m_Constraints: 0
335 | --- !u!1 &567165807
336 | GameObject:
337 | m_ObjectHideFlags: 0
338 | m_CorrespondingSourceObject: {fileID: 0}
339 | m_PrefabInstance: {fileID: 0}
340 | m_PrefabAsset: {fileID: 0}
341 | serializedVersion: 6
342 | m_Component:
343 | - component: {fileID: 567165811}
344 | - component: {fileID: 567165810}
345 | - component: {fileID: 567165809}
346 | - component: {fileID: 567165808}
347 | m_Layer: 0
348 | m_Name: Canvas
349 | m_TagString: Untagged
350 | m_Icon: {fileID: 0}
351 | m_NavMeshLayer: 0
352 | m_StaticEditorFlags: 0
353 | m_IsActive: 1
354 | --- !u!114 &567165808
355 | MonoBehaviour:
356 | m_ObjectHideFlags: 0
357 | m_CorrespondingSourceObject: {fileID: 0}
358 | m_PrefabInstance: {fileID: 0}
359 | m_PrefabAsset: {fileID: 0}
360 | m_GameObject: {fileID: 567165807}
361 | m_Enabled: 1
362 | m_EditorHideFlags: 0
363 | m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
364 | m_Name:
365 | m_EditorClassIdentifier:
366 | m_IgnoreReversedGraphics: 1
367 | m_BlockingObjects: 0
368 | m_BlockingMask:
369 | serializedVersion: 2
370 | m_Bits: 4294967295
371 | --- !u!114 &567165809
372 | MonoBehaviour:
373 | m_ObjectHideFlags: 0
374 | m_CorrespondingSourceObject: {fileID: 0}
375 | m_PrefabInstance: {fileID: 0}
376 | m_PrefabAsset: {fileID: 0}
377 | m_GameObject: {fileID: 567165807}
378 | m_Enabled: 1
379 | m_EditorHideFlags: 0
380 | m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
381 | m_Name:
382 | m_EditorClassIdentifier:
383 | m_UiScaleMode: 1
384 | m_ReferencePixelsPerUnit: 100
385 | m_ScaleFactor: 1
386 | m_ReferenceResolution: {x: 1080, y: 1920}
387 | m_ScreenMatchMode: 1
388 | m_MatchWidthOrHeight: 0
389 | m_PhysicalUnit: 3
390 | m_FallbackScreenDPI: 96
391 | m_DefaultSpriteDPI: 96
392 | m_DynamicPixelsPerUnit: 1
393 | --- !u!223 &567165810
394 | Canvas:
395 | m_ObjectHideFlags: 0
396 | m_CorrespondingSourceObject: {fileID: 0}
397 | m_PrefabInstance: {fileID: 0}
398 | m_PrefabAsset: {fileID: 0}
399 | m_GameObject: {fileID: 567165807}
400 | m_Enabled: 1
401 | serializedVersion: 3
402 | m_RenderMode: 1
403 | m_Camera: {fileID: 6991924}
404 | m_PlaneDistance: 100
405 | m_PixelPerfect: 0
406 | m_ReceivesEvents: 1
407 | m_OverrideSorting: 0
408 | m_OverridePixelPerfect: 0
409 | m_SortingBucketNormalizedSize: 0
410 | m_AdditionalShaderChannelsFlag: 0
411 | m_SortingLayerID: 0
412 | m_SortingOrder: 0
413 | m_TargetDisplay: 0
414 | --- !u!224 &567165811
415 | RectTransform:
416 | m_ObjectHideFlags: 0
417 | m_CorrespondingSourceObject: {fileID: 0}
418 | m_PrefabInstance: {fileID: 0}
419 | m_PrefabAsset: {fileID: 0}
420 | m_GameObject: {fileID: 567165807}
421 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
422 | m_LocalPosition: {x: 0, y: 0, z: 0}
423 | m_LocalScale: {x: 0, y: 0, z: 0}
424 | m_Children:
425 | - {fileID: 1903449787}
426 | - {fileID: 586333361}
427 | - {fileID: 2011861367}
428 | m_Father: {fileID: 0}
429 | m_RootOrder: 3
430 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
431 | m_AnchorMin: {x: 0, y: 0}
432 | m_AnchorMax: {x: 0, y: 0}
433 | m_AnchoredPosition: {x: 0, y: 0}
434 | m_SizeDelta: {x: 0, y: 0}
435 | m_Pivot: {x: 0, y: 0}
436 | --- !u!1 &586333360
437 | GameObject:
438 | m_ObjectHideFlags: 0
439 | m_CorrespondingSourceObject: {fileID: 0}
440 | m_PrefabInstance: {fileID: 0}
441 | m_PrefabAsset: {fileID: 0}
442 | serializedVersion: 6
443 | m_Component:
444 | - component: {fileID: 586333361}
445 | - component: {fileID: 586333364}
446 | - component: {fileID: 586333363}
447 | - component: {fileID: 586333362}
448 | m_Layer: 0
449 | m_Name: RestartButton
450 | m_TagString: Untagged
451 | m_Icon: {fileID: 0}
452 | m_NavMeshLayer: 0
453 | m_StaticEditorFlags: 0
454 | m_IsActive: 0
455 | --- !u!224 &586333361
456 | RectTransform:
457 | m_ObjectHideFlags: 0
458 | m_CorrespondingSourceObject: {fileID: 0}
459 | m_PrefabInstance: {fileID: 0}
460 | m_PrefabAsset: {fileID: 0}
461 | m_GameObject: {fileID: 586333360}
462 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
463 | m_LocalPosition: {x: 0, y: 0, z: 0}
464 | m_LocalScale: {x: 1, y: 1, z: 1}
465 | m_Children:
466 | - {fileID: 1485640667}
467 | m_Father: {fileID: 567165811}
468 | m_RootOrder: 1
469 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
470 | m_AnchorMin: {x: 0.5, y: 0.5}
471 | m_AnchorMax: {x: 0.5, y: 0.5}
472 | m_AnchoredPosition: {x: 0, y: -400}
473 | m_SizeDelta: {x: 500, y: 150}
474 | m_Pivot: {x: 0.5, y: 0.5}
475 | --- !u!114 &586333362
476 | MonoBehaviour:
477 | m_ObjectHideFlags: 0
478 | m_CorrespondingSourceObject: {fileID: 0}
479 | m_PrefabInstance: {fileID: 0}
480 | m_PrefabAsset: {fileID: 0}
481 | m_GameObject: {fileID: 586333360}
482 | m_Enabled: 1
483 | m_EditorHideFlags: 0
484 | m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
485 | m_Name:
486 | m_EditorClassIdentifier:
487 | m_Navigation:
488 | m_Mode: 3
489 | m_SelectOnUp: {fileID: 0}
490 | m_SelectOnDown: {fileID: 0}
491 | m_SelectOnLeft: {fileID: 0}
492 | m_SelectOnRight: {fileID: 0}
493 | m_Transition: 1
494 | m_Colors:
495 | m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
496 | m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
497 | m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
498 | m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
499 | m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
500 | m_ColorMultiplier: 1
501 | m_FadeDuration: 0.1
502 | m_SpriteState:
503 | m_HighlightedSprite: {fileID: 0}
504 | m_PressedSprite: {fileID: 0}
505 | m_SelectedSprite: {fileID: 0}
506 | m_DisabledSprite: {fileID: 0}
507 | m_AnimationTriggers:
508 | m_NormalTrigger: Normal
509 | m_HighlightedTrigger: Highlighted
510 | m_PressedTrigger: Pressed
511 | m_SelectedTrigger: Highlighted
512 | m_DisabledTrigger: Disabled
513 | m_Interactable: 1
514 | m_TargetGraphic: {fileID: 586333363}
515 | m_OnClick:
516 | m_PersistentCalls:
517 | m_Calls:
518 | - m_Target: {fileID: 1379276996}
519 | m_MethodName: RestartGame
520 | m_Mode: 1
521 | m_Arguments:
522 | m_ObjectArgument: {fileID: 0}
523 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
524 | m_IntArgument: 0
525 | m_FloatArgument: 0
526 | m_StringArgument:
527 | m_BoolArgument: 0
528 | m_CallState: 2
529 | --- !u!114 &586333363
530 | MonoBehaviour:
531 | m_ObjectHideFlags: 0
532 | m_CorrespondingSourceObject: {fileID: 0}
533 | m_PrefabInstance: {fileID: 0}
534 | m_PrefabAsset: {fileID: 0}
535 | m_GameObject: {fileID: 586333360}
536 | m_Enabled: 1
537 | m_EditorHideFlags: 0
538 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
539 | m_Name:
540 | m_EditorClassIdentifier:
541 | m_Material: {fileID: 0}
542 | m_Color: {r: 0.6901961, g: 0.38431376, b: 0.26666668, a: 1}
543 | m_RaycastTarget: 1
544 | m_Maskable: 1
545 | m_OnCullStateChanged:
546 | m_PersistentCalls:
547 | m_Calls: []
548 | m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
549 | m_Type: 1
550 | m_PreserveAspect: 0
551 | m_FillCenter: 1
552 | m_FillMethod: 4
553 | m_FillAmount: 1
554 | m_FillClockwise: 1
555 | m_FillOrigin: 0
556 | m_UseSpriteMesh: 0
557 | m_PixelsPerUnitMultiplier: 1
558 | --- !u!222 &586333364
559 | CanvasRenderer:
560 | m_ObjectHideFlags: 0
561 | m_CorrespondingSourceObject: {fileID: 0}
562 | m_PrefabInstance: {fileID: 0}
563 | m_PrefabAsset: {fileID: 0}
564 | m_GameObject: {fileID: 586333360}
565 | m_CullTransparentMesh: 0
566 | --- !u!1 &1379276995
567 | GameObject:
568 | m_ObjectHideFlags: 0
569 | m_CorrespondingSourceObject: {fileID: 0}
570 | m_PrefabInstance: {fileID: 0}
571 | m_PrefabAsset: {fileID: 0}
572 | serializedVersion: 6
573 | m_Component:
574 | - component: {fileID: 1379276998}
575 | - component: {fileID: 1379276997}
576 | - component: {fileID: 1379276996}
577 | m_Layer: 0
578 | m_Name: GameController
579 | m_TagString: Untagged
580 | m_Icon: {fileID: 0}
581 | m_NavMeshLayer: 0
582 | m_StaticEditorFlags: 0
583 | m_IsActive: 1
584 | --- !u!114 &1379276996
585 | MonoBehaviour:
586 | m_ObjectHideFlags: 0
587 | m_CorrespondingSourceObject: {fileID: 0}
588 | m_PrefabInstance: {fileID: 0}
589 | m_PrefabAsset: {fileID: 0}
590 | m_GameObject: {fileID: 1379276995}
591 | m_Enabled: 1
592 | m_EditorHideFlags: 0
593 | m_Script: {fileID: 11500000, guid: f410efd0de5c58649a242edbe89db084, type: 3}
594 | m_Name:
595 | m_EditorClassIdentifier:
596 | knifeCount: 8
597 | knifeSpawnPosition: {x: 0, y: -3.5}
598 | knifeObject: {fileID: 1619870185730534, guid: abf01071418859d42aff268402fe9d3a,
599 | type: 3}
600 | --- !u!114 &1379276997
601 | MonoBehaviour:
602 | m_ObjectHideFlags: 0
603 | m_CorrespondingSourceObject: {fileID: 0}
604 | m_PrefabInstance: {fileID: 0}
605 | m_PrefabAsset: {fileID: 0}
606 | m_GameObject: {fileID: 1379276995}
607 | m_Enabled: 1
608 | m_EditorHideFlags: 0
609 | m_Script: {fileID: 11500000, guid: 2618f7dffd4a4a71bf271f5bb64ec915, type: 3}
610 | m_Name:
611 | m_EditorClassIdentifier:
612 | restartButtonField: {fileID: 586333360}
613 | panelKnives: {fileID: 2011861366}
614 | iconKnife: {fileID: 1424785169228978, guid: 520e831dd61809f4fa315b4238681697, type: 3}
615 | usedKnifeIconColor: {r: 1, g: 1, b: 1, a: 0.503}
616 | --- !u!4 &1379276998
617 | Transform:
618 | m_ObjectHideFlags: 0
619 | m_CorrespondingSourceObject: {fileID: 0}
620 | m_PrefabInstance: {fileID: 0}
621 | m_PrefabAsset: {fileID: 0}
622 | m_GameObject: {fileID: 1379276995}
623 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
624 | m_LocalPosition: {x: 0.20116082, y: 0.3045786, z: 0.022767741}
625 | m_LocalScale: {x: 1, y: 1, z: 1}
626 | m_Children: []
627 | m_Father: {fileID: 0}
628 | m_RootOrder: 1
629 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
630 | --- !u!1 &1485640666
631 | GameObject:
632 | m_ObjectHideFlags: 0
633 | m_CorrespondingSourceObject: {fileID: 0}
634 | m_PrefabInstance: {fileID: 0}
635 | m_PrefabAsset: {fileID: 0}
636 | serializedVersion: 6
637 | m_Component:
638 | - component: {fileID: 1485640667}
639 | - component: {fileID: 1485640669}
640 | - component: {fileID: 1485640668}
641 | m_Layer: 0
642 | m_Name: Text
643 | m_TagString: Untagged
644 | m_Icon: {fileID: 0}
645 | m_NavMeshLayer: 0
646 | m_StaticEditorFlags: 0
647 | m_IsActive: 1
648 | --- !u!224 &1485640667
649 | RectTransform:
650 | m_ObjectHideFlags: 0
651 | m_CorrespondingSourceObject: {fileID: 0}
652 | m_PrefabInstance: {fileID: 0}
653 | m_PrefabAsset: {fileID: 0}
654 | m_GameObject: {fileID: 1485640666}
655 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
656 | m_LocalPosition: {x: 0, y: 0, z: 0}
657 | m_LocalScale: {x: 1, y: 1, z: 1}
658 | m_Children: []
659 | m_Father: {fileID: 586333361}
660 | m_RootOrder: 0
661 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
662 | m_AnchorMin: {x: 0, y: 0}
663 | m_AnchorMax: {x: 1, y: 1}
664 | m_AnchoredPosition: {x: 0, y: 0}
665 | m_SizeDelta: {x: 0, y: 0}
666 | m_Pivot: {x: 0.5, y: 0.5}
667 | --- !u!114 &1485640668
668 | MonoBehaviour:
669 | m_ObjectHideFlags: 0
670 | m_CorrespondingSourceObject: {fileID: 0}
671 | m_PrefabInstance: {fileID: 0}
672 | m_PrefabAsset: {fileID: 0}
673 | m_GameObject: {fileID: 1485640666}
674 | m_Enabled: 1
675 | m_EditorHideFlags: 0
676 | m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
677 | m_Name:
678 | m_EditorClassIdentifier:
679 | m_Material: {fileID: 0}
680 | m_Color: {r: 0.90196085, g: 0.77647066, b: 0.48627454, a: 1}
681 | m_RaycastTarget: 1
682 | m_Maskable: 1
683 | m_OnCullStateChanged:
684 | m_PersistentCalls:
685 | m_Calls: []
686 | m_FontData:
687 | m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
688 | m_FontSize: 100
689 | m_FontStyle: 1
690 | m_BestFit: 0
691 | m_MinSize: 1
692 | m_MaxSize: 100
693 | m_Alignment: 4
694 | m_AlignByGeometry: 0
695 | m_RichText: 1
696 | m_HorizontalOverflow: 0
697 | m_VerticalOverflow: 0
698 | m_LineSpacing: 1
699 | m_Text: Restart
700 | --- !u!222 &1485640669
701 | CanvasRenderer:
702 | m_ObjectHideFlags: 0
703 | m_CorrespondingSourceObject: {fileID: 0}
704 | m_PrefabInstance: {fileID: 0}
705 | m_PrefabAsset: {fileID: 0}
706 | m_GameObject: {fileID: 1485640666}
707 | m_CullTransparentMesh: 0
708 | --- !u!1 &1903449786
709 | GameObject:
710 | m_ObjectHideFlags: 0
711 | m_CorrespondingSourceObject: {fileID: 0}
712 | m_PrefabInstance: {fileID: 0}
713 | m_PrefabAsset: {fileID: 0}
714 | serializedVersion: 6
715 | m_Component:
716 | - component: {fileID: 1903449787}
717 | - component: {fileID: 1903449789}
718 | - component: {fileID: 1903449788}
719 | m_Layer: 0
720 | m_Name: EventSystem
721 | m_TagString: Untagged
722 | m_Icon: {fileID: 0}
723 | m_NavMeshLayer: 0
724 | m_StaticEditorFlags: 0
725 | m_IsActive: 1
726 | --- !u!4 &1903449787
727 | Transform:
728 | m_ObjectHideFlags: 0
729 | m_CorrespondingSourceObject: {fileID: 0}
730 | m_PrefabInstance: {fileID: 0}
731 | m_PrefabAsset: {fileID: 0}
732 | m_GameObject: {fileID: 1903449786}
733 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
734 | m_LocalPosition: {x: 0, y: 0, z: -17280}
735 | m_LocalScale: {x: 192, y: 192, z: 192}
736 | m_Children: []
737 | m_Father: {fileID: 567165811}
738 | m_RootOrder: 0
739 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
740 | --- !u!114 &1903449788
741 | MonoBehaviour:
742 | m_ObjectHideFlags: 0
743 | m_CorrespondingSourceObject: {fileID: 0}
744 | m_PrefabInstance: {fileID: 0}
745 | m_PrefabAsset: {fileID: 0}
746 | m_GameObject: {fileID: 1903449786}
747 | m_Enabled: 1
748 | m_EditorHideFlags: 0
749 | m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
750 | m_Name:
751 | m_EditorClassIdentifier:
752 | m_HorizontalAxis: Horizontal
753 | m_VerticalAxis: Vertical
754 | m_SubmitButton: Submit
755 | m_CancelButton: Cancel
756 | m_InputActionsPerSecond: 10
757 | m_RepeatDelay: 0.5
758 | m_ForceModuleActive: 0
759 | --- !u!114 &1903449789
760 | MonoBehaviour:
761 | m_ObjectHideFlags: 0
762 | m_CorrespondingSourceObject: {fileID: 0}
763 | m_PrefabInstance: {fileID: 0}
764 | m_PrefabAsset: {fileID: 0}
765 | m_GameObject: {fileID: 1903449786}
766 | m_Enabled: 1
767 | m_EditorHideFlags: 0
768 | m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
769 | m_Name:
770 | m_EditorClassIdentifier:
771 | m_FirstSelected: {fileID: 0}
772 | m_sendNavigationEvents: 1
773 | m_DragThreshold: 5
774 | --- !u!1 &1943291405
775 | GameObject:
776 | m_ObjectHideFlags: 0
777 | m_CorrespondingSourceObject: {fileID: 0}
778 | m_PrefabInstance: {fileID: 0}
779 | m_PrefabAsset: {fileID: 0}
780 | serializedVersion: 6
781 | m_Component:
782 | - component: {fileID: 1943291406}
783 | - component: {fileID: 1943291409}
784 | - component: {fileID: 1943291408}
785 | - component: {fileID: 1943291407}
786 | m_Layer: 0
787 | m_Name: log
788 | m_TagString: Log
789 | m_Icon: {fileID: 0}
790 | m_NavMeshLayer: 0
791 | m_StaticEditorFlags: 0
792 | m_IsActive: 1
793 | --- !u!4 &1943291406
794 | Transform:
795 | m_ObjectHideFlags: 0
796 | m_CorrespondingSourceObject: {fileID: 0}
797 | m_PrefabInstance: {fileID: 0}
798 | m_PrefabAsset: {fileID: 0}
799 | m_GameObject: {fileID: 1943291405}
800 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
801 | m_LocalPosition: {x: 0, y: 0, z: 10}
802 | m_LocalScale: {x: 0.2, y: 0.2, z: 0}
803 | m_Children: []
804 | m_Father: {fileID: 162964440}
805 | m_RootOrder: 0
806 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
807 | --- !u!58 &1943291407
808 | CircleCollider2D:
809 | m_ObjectHideFlags: 0
810 | m_CorrespondingSourceObject: {fileID: 0}
811 | m_PrefabInstance: {fileID: 0}
812 | m_PrefabAsset: {fileID: 0}
813 | m_GameObject: {fileID: 1943291405}
814 | m_Enabled: 1
815 | m_Density: 1
816 | m_Material: {fileID: 0}
817 | m_IsTrigger: 0
818 | m_UsedByEffector: 0
819 | m_UsedByComposite: 0
820 | m_Offset: {x: 0, y: 0}
821 | serializedVersion: 2
822 | m_Radius: 0.75
823 | --- !u!50 &1943291408
824 | Rigidbody2D:
825 | serializedVersion: 4
826 | m_ObjectHideFlags: 0
827 | m_CorrespondingSourceObject: {fileID: 0}
828 | m_PrefabInstance: {fileID: 0}
829 | m_PrefabAsset: {fileID: 0}
830 | m_GameObject: {fileID: 1943291405}
831 | m_BodyType: 0
832 | m_Simulated: 1
833 | m_UseFullKinematicContacts: 0
834 | m_UseAutoMass: 0
835 | m_Mass: 1
836 | m_LinearDrag: 0
837 | m_AngularDrag: 0
838 | m_GravityScale: 0
839 | m_Material: {fileID: 0}
840 | m_Interpolate: 0
841 | m_SleepingMode: 1
842 | m_CollisionDetection: 1
843 | m_Constraints: 3
844 | --- !u!212 &1943291409
845 | SpriteRenderer:
846 | m_ObjectHideFlags: 0
847 | m_CorrespondingSourceObject: {fileID: 0}
848 | m_PrefabInstance: {fileID: 0}
849 | m_PrefabAsset: {fileID: 0}
850 | m_GameObject: {fileID: 1943291405}
851 | m_Enabled: 1
852 | m_CastShadows: 0
853 | m_ReceiveShadows: 0
854 | m_DynamicOccludee: 1
855 | m_MotionVectors: 1
856 | m_LightProbeUsage: 1
857 | m_ReflectionProbeUsage: 1
858 | m_RayTracingMode: 0
859 | m_RenderingLayerMask: 1
860 | m_RendererPriority: 0
861 | m_Materials:
862 | - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
863 | m_StaticBatchInfo:
864 | firstSubMesh: 0
865 | subMeshCount: 0
866 | m_StaticBatchRoot: {fileID: 0}
867 | m_ProbeAnchor: {fileID: 0}
868 | m_LightProbeVolumeOverride: {fileID: 0}
869 | m_ScaleInLightmap: 1
870 | m_ReceiveGI: 1
871 | m_PreserveUVs: 0
872 | m_IgnoreNormalsForChartDetection: 0
873 | m_ImportantGI: 0
874 | m_StitchLightmapSeams: 0
875 | m_SelectedEditorRenderState: 0
876 | m_MinimumChartSize: 4
877 | m_AutoUVMaxDistance: 0.5
878 | m_AutoUVMaxAngle: 89
879 | m_LightmapParameters: {fileID: 0}
880 | m_SortingLayerID: 0
881 | m_SortingLayer: 0
882 | m_SortingOrder: 1
883 | m_Sprite: {fileID: 21300000, guid: 6fcd0ee7c1f04cc43b6655f345ab21e8, type: 3}
884 | m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1}
885 | m_FlipX: 0
886 | m_FlipY: 0
887 | m_DrawMode: 0
888 | m_Size: {x: 2.9333334, y: 2.9333334}
889 | m_AdaptiveModeThreshold: 0.5
890 | m_SpriteTileMode: 0
891 | m_WasSpriteAssigned: 1
892 | m_MaskInteraction: 0
893 | m_SpriteSortPoint: 0
894 | --- !u!1 &2011861366
895 | GameObject:
896 | m_ObjectHideFlags: 0
897 | m_CorrespondingSourceObject: {fileID: 0}
898 | m_PrefabInstance: {fileID: 0}
899 | m_PrefabAsset: {fileID: 0}
900 | serializedVersion: 6
901 | m_Component:
902 | - component: {fileID: 2011861367}
903 | - component: {fileID: 2011861369}
904 | - component: {fileID: 2011861368}
905 | m_Layer: 0
906 | m_Name: PaneKnives
907 | m_TagString: Untagged
908 | m_Icon: {fileID: 0}
909 | m_NavMeshLayer: 0
910 | m_StaticEditorFlags: 0
911 | m_IsActive: 1
912 | --- !u!224 &2011861367
913 | RectTransform:
914 | m_ObjectHideFlags: 0
915 | m_CorrespondingSourceObject: {fileID: 0}
916 | m_PrefabInstance: {fileID: 0}
917 | m_PrefabAsset: {fileID: 0}
918 | m_GameObject: {fileID: 2011861366}
919 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
920 | m_LocalPosition: {x: 0, y: 0, z: 0}
921 | m_LocalScale: {x: 1, y: 1, z: 1}
922 | m_Children: []
923 | m_Father: {fileID: 567165811}
924 | m_RootOrder: 2
925 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
926 | m_AnchorMin: {x: 0, y: 0}
927 | m_AnchorMax: {x: 0, y: 1}
928 | m_AnchoredPosition: {x: 100, y: 0}
929 | m_SizeDelta: {x: 200, y: -200}
930 | m_Pivot: {x: 0.5, y: 0.5}
931 | --- !u!114 &2011861368
932 | MonoBehaviour:
933 | m_ObjectHideFlags: 0
934 | m_CorrespondingSourceObject: {fileID: 0}
935 | m_PrefabInstance: {fileID: 0}
936 | m_PrefabAsset: {fileID: 0}
937 | m_GameObject: {fileID: 2011861366}
938 | m_Enabled: 1
939 | m_EditorHideFlags: 0
940 | m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
941 | m_Name:
942 | m_EditorClassIdentifier:
943 | m_Padding:
944 | m_Left: 0
945 | m_Right: 0
946 | m_Top: 0
947 | m_Bottom: 0
948 | m_ChildAlignment: 7
949 | m_Spacing: 0
950 | m_ChildForceExpandWidth: 0
951 | m_ChildForceExpandHeight: 0
952 | m_ChildControlWidth: 0
953 | m_ChildControlHeight: 0
954 | m_ChildScaleWidth: 0
955 | m_ChildScaleHeight: 0
956 | --- !u!222 &2011861369
957 | CanvasRenderer:
958 | m_ObjectHideFlags: 0
959 | m_CorrespondingSourceObject: {fileID: 0}
960 | m_PrefabInstance: {fileID: 0}
961 | m_PrefabAsset: {fileID: 0}
962 | m_GameObject: {fileID: 2011861366}
963 | m_CullTransparentMesh: 0
964 |
--------------------------------------------------------------------------------
/Assets/knife_hit.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c058eb3b1af61d347ae4ee7428d691a6
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/ProjectSettings/AndroidResolverDependencies.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | androidx.multidex:multidex:2.0.0
4 | co.pushe.plus:base:2.4.1
5 | co.pushe.plus:hms:2.4.1
6 | co.pushe.plus:inappmessaging:2.4.1
7 |
8 |
9 | Assets/Plugins/Android/androidx.activity.activity-1.1.0.aar
10 | Assets/Plugins/Android/androidx.annotation.annotation-1.1.0.jar
11 | Assets/Plugins/Android/androidx.appcompat.appcompat-1.1.0.aar
12 | Assets/Plugins/Android/androidx.appcompat.appcompat-resources-1.1.0.aar
13 | Assets/Plugins/Android/androidx.arch.core.core-common-2.1.0.jar
14 | Assets/Plugins/Android/androidx.arch.core.core-runtime-2.1.0.aar
15 | Assets/Plugins/Android/androidx.cardview.cardview-1.0.0.aar
16 | Assets/Plugins/Android/androidx.collection.collection-1.1.0.jar
17 | Assets/Plugins/Android/androidx.core.core-1.2.0.aar
18 | Assets/Plugins/Android/androidx.cursoradapter.cursoradapter-1.0.0.aar
19 | Assets/Plugins/Android/androidx.customview.customview-1.0.0.aar
20 | Assets/Plugins/Android/androidx.documentfile.documentfile-1.0.0.aar
21 | Assets/Plugins/Android/androidx.drawerlayout.drawerlayout-1.0.0.aar
22 | Assets/Plugins/Android/androidx.fragment.fragment-1.2.2.aar
23 | Assets/Plugins/Android/androidx.interpolator.interpolator-1.0.0.aar
24 | Assets/Plugins/Android/androidx.legacy.legacy-support-core-utils-1.0.0.aar
25 | Assets/Plugins/Android/androidx.lifecycle.lifecycle-common-2.2.0.jar
26 | Assets/Plugins/Android/androidx.lifecycle.lifecycle-extensions-2.2.0.aar
27 | Assets/Plugins/Android/androidx.lifecycle.lifecycle-livedata-2.2.0.aar
28 | Assets/Plugins/Android/androidx.lifecycle.lifecycle-livedata-core-2.2.0.aar
29 | Assets/Plugins/Android/androidx.lifecycle.lifecycle-process-2.2.0.aar
30 | Assets/Plugins/Android/androidx.lifecycle.lifecycle-runtime-2.2.0.aar
31 | Assets/Plugins/Android/androidx.lifecycle.lifecycle-service-2.2.0.aar
32 | Assets/Plugins/Android/androidx.lifecycle.lifecycle-viewmodel-2.2.0.aar
33 | Assets/Plugins/Android/androidx.lifecycle.lifecycle-viewmodel-savedstate-2.2.0.aar
34 | Assets/Plugins/Android/androidx.loader.loader-1.0.0.aar
35 | Assets/Plugins/Android/androidx.localbroadcastmanager.localbroadcastmanager-1.0.0.aar
36 | Assets/Plugins/Android/androidx.media.media-1.1.0.aar
37 | Assets/Plugins/Android/androidx.multidex.multidex-2.0.0.aar
38 | Assets/Plugins/Android/androidx.print.print-1.0.0.aar
39 | Assets/Plugins/Android/androidx.room.room-common-2.2.5.jar
40 | Assets/Plugins/Android/androidx.room.room-runtime-2.2.5.aar
41 | Assets/Plugins/Android/androidx.savedstate.savedstate-1.0.0.aar
42 | Assets/Plugins/Android/androidx.sqlite.sqlite-2.1.0.aar
43 | Assets/Plugins/Android/androidx.sqlite.sqlite-framework-2.1.0.aar
44 | Assets/Plugins/Android/androidx.vectordrawable.vectordrawable-1.1.0.aar
45 | Assets/Plugins/Android/androidx.vectordrawable.vectordrawable-animated-1.1.0.aar
46 | Assets/Plugins/Android/androidx.versionedparcelable.versionedparcelable-1.1.0.aar
47 | Assets/Plugins/Android/androidx.viewpager.viewpager-1.0.0.aar
48 | Assets/Plugins/Android/androidx.work.work-runtime-2.4.0.aar
49 | Assets/Plugins/Android/androidx.work.work-runtime-ktx-2.4.0.aar
50 | Assets/Plugins/Android/androidx.work.work-rxjava2-2.4.0.aar
51 | Assets/Plugins/Android/co.pushe.plus.analytics-2.4.1.aar
52 | Assets/Plugins/Android/co.pushe.plus.base-2.4.1.aar
53 | Assets/Plugins/Android/co.pushe.plus.core-2.4.1.aar
54 | Assets/Plugins/Android/co.pushe.plus.datalytics-2.4.1.aar
55 | Assets/Plugins/Android/co.pushe.plus.fcm-2.4.1.aar
56 | Assets/Plugins/Android/co.pushe.plus.hms-2.4.1.aar
57 | Assets/Plugins/Android/co.pushe.plus.inappmessaging-2.4.1.aar
58 | Assets/Plugins/Android/co.pushe.plus.notification-2.4.1.aar
59 | Assets/Plugins/Android/co.pushe.plus.sentry-2.4.1.aar
60 | Assets/Plugins/Android/com.fasterxml.jackson.core.jackson-core-2.8.7.jar
61 | Assets/Plugins/Android/com.google.android.datatransport.transport-api-2.2.0.aar
62 | Assets/Plugins/Android/com.google.android.datatransport.transport-backend-cct-2.2.0.aar
63 | Assets/Plugins/Android/com.google.android.datatransport.transport-runtime-2.2.0.aar
64 | Assets/Plugins/Android/com.google.android.gms.play-services-ads-identifier-17.0.0.aar
65 | Assets/Plugins/Android/com.google.android.gms.play-services-base-17.3.0.aar
66 | Assets/Plugins/Android/com.google.android.gms.play-services-basement-17.3.0.aar
67 | Assets/Plugins/Android/com.google.android.gms.play-services-cloud-messaging-16.0.0.aar
68 | Assets/Plugins/Android/com.google.android.gms.play-services-location-17.1.0.aar
69 | Assets/Plugins/Android/com.google.android.gms.play-services-places-placereport-17.0.0.aar
70 | Assets/Plugins/Android/com.google.android.gms.play-services-stats-17.0.0.aar
71 | Assets/Plugins/Android/com.google.android.gms.play-services-tasks-17.1.0.aar
72 | Assets/Plugins/Android/com.google.auto.value.auto-value-annotations-1.6.5.jar
73 | Assets/Plugins/Android/com.google.dagger.dagger-2.27.jar
74 | Assets/Plugins/Android/com.google.firebase.firebase-common-19.3.0.aar
75 | Assets/Plugins/Android/com.google.firebase.firebase-components-16.0.0.aar
76 | Assets/Plugins/Android/com.google.firebase.firebase-datatransport-17.0.3.aar
77 | Assets/Plugins/Android/com.google.firebase.firebase-encoders-json-16.0.0.aar
78 | Assets/Plugins/Android/com.google.firebase.firebase-iid-21.0.0.aar
79 | Assets/Plugins/Android/com.google.firebase.firebase-iid-interop-17.0.0.aar
80 | Assets/Plugins/Android/com.google.firebase.firebase-installations-16.3.3.aar
81 | Assets/Plugins/Android/com.google.firebase.firebase-installations-interop-16.0.0.aar
82 | Assets/Plugins/Android/com.google.firebase.firebase-measurement-connector-18.0.0.aar
83 | Assets/Plugins/Android/com.google.firebase.firebase-messaging-21.0.0.aar
84 | Assets/Plugins/Android/com.google.guava.listenablefuture-1.0.jar
85 | Assets/Plugins/Android/com.huawei.agconnect.agconnect-core-1.4.0.300.aar
86 | Assets/Plugins/Android/com.huawei.android.hms.security-base-1.1.5.301.aar
87 | Assets/Plugins/Android/com.huawei.android.hms.security-encrypt-1.1.5.301.aar
88 | Assets/Plugins/Android/com.huawei.android.hms.security-ssl-1.1.5.301.aar
89 | Assets/Plugins/Android/com.huawei.hmf.tasks-1.4.1.300.aar
90 | Assets/Plugins/Android/com.huawei.hms.ads-identifier-3.4.29.301.aar
91 | Assets/Plugins/Android/com.huawei.hms.availableupdate-5.0.0.301.aar
92 | Assets/Plugins/Android/com.huawei.hms.base-5.0.0.301.aar
93 | Assets/Plugins/Android/com.huawei.hms.device-5.0.0.301.aar
94 | Assets/Plugins/Android/com.huawei.hms.log-5.0.0.301.aar
95 | Assets/Plugins/Android/com.huawei.hms.network-common-4.0.2.300.aar
96 | Assets/Plugins/Android/com.huawei.hms.network-grs-4.0.2.300.aar
97 | Assets/Plugins/Android/com.huawei.hms.opendevice-5.0.2.300.aar
98 | Assets/Plugins/Android/com.huawei.hms.push-5.0.2.300.aar
99 | Assets/Plugins/Android/com.huawei.hms.stats-5.0.0.301.aar
100 | Assets/Plugins/Android/com.huawei.hms.ui-5.0.0.301.aar
101 | Assets/Plugins/Android/com.huawei.hms.update-2.0.6.302.aar
102 | Assets/Plugins/Android/com.squareup.moshi.moshi-1.7.0.jar
103 | Assets/Plugins/Android/com.squareup.okio.okio-1.15.0.jar
104 | Assets/Plugins/Android/io.reactivex.rxjava2.rxjava-2.2.20.jar
105 | Assets/Plugins/Android/io.sentry.sentry-1.7.10.jar
106 | Assets/Plugins/Android/io.sentry.sentry-android-1.7.10.jar
107 | Assets/Plugins/Android/javax.inject.javax.inject-1.jar
108 | Assets/Plugins/Android/org.jetbrains.annotations-13.0.jar
109 | Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-android-extensions-runtime-1.3.61.jar
110 | Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-1.3.71.jar
111 | Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-common-1.3.71.jar
112 | Assets/Plugins/Android/org.jetbrains.kotlin.kotlin-stdlib-jdk7-1.3.61.jar
113 | Assets/Plugins/Android/org.jetbrains.kotlinx.kotlinx-coroutines-android-1.3.4.jar
114 | Assets/Plugins/Android/org.jetbrains.kotlinx.kotlinx-coroutines-core-1.3.4.jar
115 | Assets/Plugins/Android/org.reactivestreams.reactive-streams-1.0.3.jar
116 | Assets/Plugins/Android/org.slf4j.slf4j-api-1.7.25.jar
117 | Assets/Plugins/Android/org.slf4j.slf4j-simple-1.7.25.jar
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
--------------------------------------------------------------------------------
/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_AmbisonicDecoderPlugin:
16 | m_DisableAudio: 0
17 | m_VirtualizeEffects: 1
18 |
--------------------------------------------------------------------------------
/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/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: 7
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_ClothInterCollisionDistance: 0
18 | m_ClothInterCollisionStiffness: 0
19 | m_ContactsGeneration: 1
20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
21 | m_AutoSimulation: 1
22 | m_AutoSyncTransforms: 1
23 | m_ClothInterCollisionSettingsToggle: 0
24 | m_ContactPairsMode: 0
25 | m_BroadphaseType: 0
26 | m_WorldBounds:
27 | m_Center: {x: 0, y: 0, z: 0}
28 | m_Extent: {x: 250, y: 250, z: 250}
29 | m_WorldSubdivisions: 8
30 |
--------------------------------------------------------------------------------
/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/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: 9
7 | m_ExternalVersionControlSupport: Hidden Meta Files
8 | m_SerializationMode: 2
9 | m_LineEndingsForNewScripts: 2
10 | m_DefaultBehaviorMode: 1
11 | m_PrefabRegularEnvironment: {fileID: 0}
12 | m_PrefabUIEnvironment: {fileID: 0}
13 | m_SpritePackerMode: 4
14 | m_SpritePackerPaddingPower: 1
15 | m_EtcTextureCompressorBehavior: 1
16 | m_EtcTextureFastCompressor: 1
17 | m_EtcTextureNormalCompressor: 2
18 | m_EtcTextureBestCompressor: 4
19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref
20 | m_ProjectGenerationRootNamespace:
21 | m_CollabEditorSettings:
22 | inProgressEnabled: 1
23 | m_EnableTextureStreamingInEditMode: 1
24 | m_EnableTextureStreamingInPlayMode: 1
25 | m_AsyncShaderCompilation: 1
26 | m_EnterPlayModeOptionsEnabled: 0
27 | m_EnterPlayModeOptions: 3
28 | m_ShowLightmapResolutionOverlay: 1
29 | m_UseLegacyProbeSampleCount: 1
30 | m_AssetPipelineMode: 1
31 | m_CacheServerMode: 0
32 | m_CacheServerEndpoint:
33 | m_CacheServerNamespacePrefix: default
34 | m_CacheServerEnableDownload: 1
35 | m_CacheServerEnableUpload: 1
36 |
--------------------------------------------------------------------------------
/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: 13
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: 16000, guid: 0000000000000000f000000000000000, type: 0}
39 | - {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0}
40 | - {fileID: 16003, guid: 0000000000000000f000000000000000, type: 0}
41 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0}
42 | m_PreloadedShaders: []
43 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
44 | type: 0}
45 | m_CustomRenderPipeline: {fileID: 0}
46 | m_TransparencySortMode: 0
47 | m_TransparencySortAxis: {x: 0, y: 0, z: 1}
48 | m_DefaultRenderingPath: 1
49 | m_DefaultMobileRenderingPath: 1
50 | m_TierSettings: []
51 | m_LightmapStripping: 0
52 | m_FogStripping: 0
53 | m_InstancingStripping: 0
54 | m_LightmapKeepPlain: 1
55 | m_LightmapKeepDirCombined: 1
56 | m_LightmapKeepDynamicPlain: 1
57 | m_LightmapKeepDynamicDirCombined: 1
58 | m_LightmapKeepShadowMask: 1
59 | m_LightmapKeepSubtractive: 1
60 | m_FogKeepLinear: 1
61 | m_FogKeepExp: 1
62 | m_FogKeepExp2: 1
63 | m_AlbedoSwatchInfos: []
64 | m_LightsUseLinearIntensity: 0
65 | m_LightsUseColorTemperature: 0
66 | m_LogWhenShaderIsCompiled: 0
67 | m_AllowEnlightenSupportForUpgradedProject: 1
68 |
--------------------------------------------------------------------------------
/ProjectSettings/GvhProjectSettings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 | m_LastAgentTypeID: -887442657
73 | m_Settings:
74 | - serializedVersion: 2
75 | agentTypeID: 0
76 | agentRadius: 0.5
77 | agentHeight: 2
78 | agentSlope: 45
79 | agentClimb: 0.75
80 | ledgeDropHeight: 0
81 | maxJumpAcrossDistance: 0
82 | minRegionArea: 2
83 | manualCellSize: 0
84 | cellSize: 0.16666667
85 | manualTileSize: 0
86 | tileSize: 256
87 | accuratePlacement: 0
88 | debug:
89 | m_Flags: 0
90 | m_SettingNames:
91 | - Humanoid
92 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/ProjectSettings/PackageManagerSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &1
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 61
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 13960, guid: 0000000000000000e000000000000000, type: 0}
13 | m_Name:
14 | m_EditorClassIdentifier:
15 | m_ScopedRegistriesSettingsExpanded: 1
16 | oneTimeWarningShown: 0
17 | m_Registries:
18 | - m_Id: main
19 | m_Name:
20 | m_Url: https://packages.unity.com
21 | m_Scopes: []
22 | m_IsDefault: 1
23 | m_UserSelectedRegistryName:
24 | m_UserAddingNewScopedRegistry: 0
25 | m_RegistryInfoDraft:
26 | m_ErrorMessage:
27 | m_Original:
28 | m_Id:
29 | m_Name:
30 | m_Url:
31 | m_Scopes: []
32 | m_IsDefault: 0
33 | m_Modified: 0
34 | m_Name:
35 | m_Url:
36 | m_Scopes:
37 | -
38 | m_SelectedScopeIndex: 0
39 |
--------------------------------------------------------------------------------
/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: 3
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_BaumgarteScale: 0.2
17 | m_BaumgarteTimeOfImpactScale: 0.75
18 | m_TimeToSleep: 0.5
19 | m_LinearSleepTolerance: 0.01
20 | m_AngularSleepTolerance: 2
21 | m_DefaultContactOffset: 0.01
22 | m_AutoSimulation: 1
23 | m_QueriesHitTriggers: 1
24 | m_QueriesStartInColliders: 1
25 | m_ChangeStopsCallbacks: 0
26 | m_CallbacksOnDisable: 1
27 | m_AutoSyncTransforms: 1
28 | m_AlwaysShowColliders: 0
29 | m_ShowColliderSleep: 1
30 | m_ShowColliderContacts: 0
31 | m_ShowColliderAABB: 0
32 | m_ContactArrowScale: 0.2
33 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
34 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
35 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
36 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
37 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
38 |
--------------------------------------------------------------------------------
/ProjectSettings/PresetManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1386491679 &1
4 | PresetManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_DefaultPresets: {}
8 |
--------------------------------------------------------------------------------
/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: 20
7 | productGUID: c9125d2efa68f514ba4489d8fb77c1e8
8 | AndroidProfiler: 0
9 | AndroidFilterTouchesWhenObscured: 0
10 | AndroidEnableSustainedPerformanceMode: 0
11 | defaultScreenOrientation: 4
12 | targetDevice: 2
13 | useOnDemandResources: 0
14 | accelerometerFrequency: 60
15 | companyName: DefaultCompany
16 | productName: KnifeHitTest
17 | defaultCursor: {fileID: 0}
18 | cursorHotspot: {x: 0, y: 0}
19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
20 | m_ShowUnitySplashScreen: 1
21 | m_ShowUnitySplashLogo: 1
22 | m_SplashScreenOverlayOpacity: 1
23 | m_SplashScreenAnimation: 1
24 | m_SplashScreenLogoStyle: 1
25 | m_SplashScreenDrawMode: 0
26 | m_SplashScreenBackgroundAnimationZoom: 1
27 | m_SplashScreenLogoAnimationZoom: 1
28 | m_SplashScreenBackgroundLandscapeAspect: 1
29 | m_SplashScreenBackgroundPortraitAspect: 1
30 | m_SplashScreenBackgroundLandscapeUvs:
31 | serializedVersion: 2
32 | x: 0
33 | y: 0
34 | width: 1
35 | height: 1
36 | m_SplashScreenBackgroundPortraitUvs:
37 | serializedVersion: 2
38 | x: 0
39 | y: 0
40 | width: 1
41 | height: 1
42 | m_SplashScreenLogos: []
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_StackTraceTypes: 010000000100000001000000010000000100000001000000
53 | iosShowActivityIndicatorOnLoading: -1
54 | androidShowActivityIndicatorOnLoading: -1
55 | iosUseCustomAppBackgroundBehavior: 0
56 | iosAllowHTTPDownload: 1
57 | allowedAutorotateToPortrait: 1
58 | allowedAutorotateToPortraitUpsideDown: 1
59 | allowedAutorotateToLandscapeRight: 1
60 | allowedAutorotateToLandscapeLeft: 1
61 | useOSAutorotation: 1
62 | use32BitDisplayBuffer: 1
63 | preserveFramebufferAlpha: 0
64 | disableDepthAndStencilBuffers: 0
65 | androidStartInFullscreen: 1
66 | androidRenderOutsideSafeArea: 1
67 | androidUseSwappy: 0
68 | androidBlitType: 0
69 | defaultIsNativeResolution: 1
70 | macRetinaSupport: 1
71 | runInBackground: 0
72 | captureSingleScreen: 0
73 | muteOtherAudioSources: 0
74 | Prepare IOS For Recording: 0
75 | Force IOS Speakers When Recording: 0
76 | deferSystemGesturesMode: 0
77 | hideHomeButton: 0
78 | submitAnalytics: 1
79 | usePlayerLog: 1
80 | bakeCollisionMeshes: 0
81 | forceSingleInstance: 0
82 | useFlipModelSwapchain: 1
83 | resizableWindow: 0
84 | useMacAppStoreValidation: 0
85 | macAppStoreCategory: public.app-category.games
86 | gpuSkinning: 0
87 | xboxPIXTextureCapture: 0
88 | xboxEnableAvatar: 0
89 | xboxEnableKinect: 0
90 | xboxEnableKinectAutoTracking: 0
91 | xboxEnableFitness: 0
92 | visibleInBackground: 1
93 | allowFullscreenSwitch: 1
94 | fullscreenMode: 1
95 | xboxSpeechDB: 0
96 | xboxEnableHeadOrientation: 0
97 | xboxEnableGuest: 0
98 | xboxEnablePIXSampling: 0
99 | metalFramebufferOnly: 0
100 | xboxOneResolution: 0
101 | xboxOneSResolution: 0
102 | xboxOneXResolution: 3
103 | xboxOneMonoLoggingLevel: 0
104 | xboxOneLoggingLevel: 1
105 | xboxOneDisableEsram: 0
106 | xboxOneEnableTypeOptimization: 0
107 | xboxOnePresentImmediateThreshold: 0
108 | switchQueueCommandMemory: 1048576
109 | switchQueueControlMemory: 16384
110 | switchQueueComputeMemory: 262144
111 | switchNVNShaderPoolsGranularity: 33554432
112 | switchNVNDefaultPoolsGranularity: 16777216
113 | switchNVNOtherPoolsGranularity: 16777216
114 | switchNVNMaxPublicTextureIDCount: 0
115 | switchNVNMaxPublicSamplerIDCount: 0
116 | stadiaPresentMode: 0
117 | stadiaTargetFramerate: 0
118 | vulkanNumSwapchainBuffers: 3
119 | vulkanEnableSetSRGBWrite: 0
120 | vulkanEnableLateAcquireNextImage: 0
121 | m_SupportedAspectRatios:
122 | 4:3: 1
123 | 5:4: 1
124 | 16:10: 1
125 | 16:9: 1
126 | Others: 1
127 | bundleVersion: 1.0
128 | preloadedAssets: []
129 | metroInputSource: 0
130 | wsaTransparentSwapchain: 0
131 | m_HolographicPauseOnTrackingLoss: 1
132 | xboxOneDisableKinectGpuReservation: 0
133 | xboxOneEnable7thCore: 0
134 | vrSettings:
135 | cardboard:
136 | depthFormat: 0
137 | enableTransitionView: 0
138 | daydream:
139 | depthFormat: 0
140 | useSustainedPerformanceMode: 0
141 | enableVideoLayer: 0
142 | useProtectedVideoMemory: 0
143 | minimumSupportedHeadTracking: 0
144 | maximumSupportedHeadTracking: 1
145 | hololens:
146 | depthFormat: 1
147 | depthBufferSharingEnabled: 0
148 | lumin:
149 | depthFormat: 0
150 | frameTiming: 2
151 | enableGLCache: 0
152 | glCacheMaxBlobSize: 524288
153 | glCacheMaxFileSize: 8388608
154 | oculus:
155 | sharedDepthBuffer: 0
156 | dashSupport: 0
157 | lowOverheadMode: 0
158 | protectedContext: 0
159 | v2Signing: 0
160 | enable360StereoCapture: 0
161 | isWsaHolographicRemotingEnabled: 0
162 | enableFrameTimingStats: 0
163 | useHDRDisplay: 0
164 | D3DHDRBitDepth: 0
165 | m_ColorGamuts: 00000000
166 | targetPixelDensity: 30
167 | resolutionScalingMode: 0
168 | androidSupportedAspectRatio: 1
169 | androidMaxAspectRatio: 2.1
170 | applicationIdentifier:
171 | Android: co.pushe.sample.unity
172 | buildNumber: {}
173 | AndroidBundleVersionCode: 1
174 | AndroidMinSdkVersion: 19
175 | AndroidTargetSdkVersion: 0
176 | AndroidPreferredInstallLocation: 1
177 | aotOptions:
178 | stripEngineCode: 1
179 | iPhoneStrippingLevel: 0
180 | iPhoneScriptCallOptimization: 0
181 | ForceInternetPermission: 0
182 | ForceSDCardPermission: 0
183 | CreateWallpaper: 0
184 | APKExpansionFiles: 0
185 | keepLoadedShadersAlive: 0
186 | StripUnusedMeshComponents: 0
187 | VertexChannelCompressionMask: 4054
188 | iPhoneSdkVersion: 988
189 | iOSTargetOSVersionString: 10.0
190 | tvOSSdkVersion: 0
191 | tvOSRequireExtendedGameController: 0
192 | tvOSTargetOSVersionString: 10.0
193 | uIPrerenderedIcon: 0
194 | uIRequiresPersistentWiFi: 0
195 | uIRequiresFullScreen: 1
196 | uIStatusBarHidden: 1
197 | uIExitOnSuspend: 0
198 | uIStatusBarStyle: 0
199 | appleTVSplashScreen: {fileID: 0}
200 | appleTVSplashScreen2x: {fileID: 0}
201 | tvOSSmallIconLayers: []
202 | tvOSSmallIconLayers2x: []
203 | tvOSLargeIconLayers: []
204 | tvOSLargeIconLayers2x: []
205 | tvOSTopShelfImageLayers: []
206 | tvOSTopShelfImageLayers2x: []
207 | tvOSTopShelfImageWideLayers: []
208 | tvOSTopShelfImageWideLayers2x: []
209 | iOSLaunchScreenType: 0
210 | iOSLaunchScreenPortrait: {fileID: 0}
211 | iOSLaunchScreenLandscape: {fileID: 0}
212 | iOSLaunchScreenBackgroundColor:
213 | serializedVersion: 2
214 | rgba: 0
215 | iOSLaunchScreenFillPct: 100
216 | iOSLaunchScreenSize: 100
217 | iOSLaunchScreenCustomXibPath:
218 | iOSLaunchScreeniPadType: 0
219 | iOSLaunchScreeniPadImage: {fileID: 0}
220 | iOSLaunchScreeniPadBackgroundColor:
221 | serializedVersion: 2
222 | rgba: 0
223 | iOSLaunchScreeniPadFillPct: 100
224 | iOSLaunchScreeniPadSize: 100
225 | iOSLaunchScreeniPadCustomXibPath:
226 | iOSUseLaunchScreenStoryboard: 0
227 | iOSLaunchScreenCustomStoryboardPath:
228 | iOSDeviceRequirements: []
229 | iOSURLSchemes: []
230 | iOSBackgroundModes: 0
231 | iOSMetalForceHardShadows: 0
232 | metalEditorSupport: 1
233 | metalAPIValidation: 1
234 | iOSRenderExtraFrameOnPause: 0
235 | iosCopyPluginsCodeInsteadOfSymlink: 0
236 | appleDeveloperTeamID:
237 | iOSManualSigningProvisioningProfileID:
238 | tvOSManualSigningProvisioningProfileID:
239 | iOSManualSigningProvisioningProfileType: 0
240 | tvOSManualSigningProvisioningProfileType: 0
241 | appleEnableAutomaticSigning: 0
242 | iOSRequireARKit: 0
243 | iOSAutomaticallyDetectAndAddCapabilities: 1
244 | appleEnableProMotion: 0
245 | clonedFromGUID: 00000000000000000000000000000000
246 | templatePackageId:
247 | templateDefaultScene:
248 | AndroidTargetArchitectures: 5
249 | AndroidSplashScreenScale: 0
250 | androidSplashScreen: {fileID: 0}
251 | AndroidKeystoreName:
252 | AndroidKeyaliasName:
253 | AndroidBuildApkPerCpuArchitecture: 0
254 | AndroidTVCompatibility: 1
255 | AndroidIsGame: 1
256 | AndroidEnableTango: 0
257 | androidEnableBanner: 1
258 | androidUseLowAccuracyLocation: 0
259 | androidUseCustomKeystore: 0
260 | m_AndroidBanners:
261 | - width: 320
262 | height: 180
263 | banner: {fileID: 0}
264 | androidGamepadSupportLevel: 0
265 | AndroidValidateAppBundleSize: 1
266 | AndroidAppBundleSizeToValidate: 150
267 | m_BuildTargetIcons: []
268 | m_BuildTargetPlatformIcons:
269 | - m_BuildTarget: Android
270 | m_Icons:
271 | - m_Textures: []
272 | m_Width: 432
273 | m_Height: 432
274 | m_Kind: 2
275 | m_SubKind:
276 | - m_Textures: []
277 | m_Width: 324
278 | m_Height: 324
279 | m_Kind: 2
280 | m_SubKind:
281 | - m_Textures: []
282 | m_Width: 216
283 | m_Height: 216
284 | m_Kind: 2
285 | m_SubKind:
286 | - m_Textures: []
287 | m_Width: 162
288 | m_Height: 162
289 | m_Kind: 2
290 | m_SubKind:
291 | - m_Textures: []
292 | m_Width: 108
293 | m_Height: 108
294 | m_Kind: 2
295 | m_SubKind:
296 | - m_Textures: []
297 | m_Width: 81
298 | m_Height: 81
299 | m_Kind: 2
300 | m_SubKind:
301 | - m_Textures: []
302 | m_Width: 192
303 | m_Height: 192
304 | m_Kind: 0
305 | m_SubKind:
306 | - m_Textures: []
307 | m_Width: 144
308 | m_Height: 144
309 | m_Kind: 0
310 | m_SubKind:
311 | - m_Textures: []
312 | m_Width: 96
313 | m_Height: 96
314 | m_Kind: 0
315 | m_SubKind:
316 | - m_Textures: []
317 | m_Width: 72
318 | m_Height: 72
319 | m_Kind: 0
320 | m_SubKind:
321 | - m_Textures: []
322 | m_Width: 48
323 | m_Height: 48
324 | m_Kind: 0
325 | m_SubKind:
326 | - m_Textures: []
327 | m_Width: 36
328 | m_Height: 36
329 | m_Kind: 0
330 | m_SubKind:
331 | - m_Textures: []
332 | m_Width: 192
333 | m_Height: 192
334 | m_Kind: 1
335 | m_SubKind:
336 | - m_Textures: []
337 | m_Width: 144
338 | m_Height: 144
339 | m_Kind: 1
340 | m_SubKind:
341 | - m_Textures: []
342 | m_Width: 96
343 | m_Height: 96
344 | m_Kind: 1
345 | m_SubKind:
346 | - m_Textures: []
347 | m_Width: 72
348 | m_Height: 72
349 | m_Kind: 1
350 | m_SubKind:
351 | - m_Textures: []
352 | m_Width: 48
353 | m_Height: 48
354 | m_Kind: 1
355 | m_SubKind:
356 | - m_Textures: []
357 | m_Width: 36
358 | m_Height: 36
359 | m_Kind: 1
360 | m_SubKind:
361 | m_BuildTargetBatching: []
362 | m_BuildTargetGraphicsJobs:
363 | - m_BuildTarget: MacStandaloneSupport
364 | m_GraphicsJobs: 0
365 | - m_BuildTarget: Switch
366 | m_GraphicsJobs: 0
367 | - m_BuildTarget: MetroSupport
368 | m_GraphicsJobs: 0
369 | - m_BuildTarget: AppleTVSupport
370 | m_GraphicsJobs: 0
371 | - m_BuildTarget: BJMSupport
372 | m_GraphicsJobs: 0
373 | - m_BuildTarget: LinuxStandaloneSupport
374 | m_GraphicsJobs: 0
375 | - m_BuildTarget: PS4Player
376 | m_GraphicsJobs: 0
377 | - m_BuildTarget: iOSSupport
378 | m_GraphicsJobs: 0
379 | - m_BuildTarget: WindowsStandaloneSupport
380 | m_GraphicsJobs: 0
381 | - m_BuildTarget: XboxOnePlayer
382 | m_GraphicsJobs: 0
383 | - m_BuildTarget: LuminSupport
384 | m_GraphicsJobs: 0
385 | - m_BuildTarget: CloudRendering
386 | m_GraphicsJobs: 0
387 | - m_BuildTarget: AndroidPlayer
388 | m_GraphicsJobs: 0
389 | - m_BuildTarget: WebGLSupport
390 | m_GraphicsJobs: 0
391 | m_BuildTargetGraphicsJobMode:
392 | - m_BuildTarget: PS4Player
393 | m_GraphicsJobMode: 0
394 | - m_BuildTarget: XboxOnePlayer
395 | m_GraphicsJobMode: 0
396 | m_BuildTargetGraphicsAPIs: []
397 | m_BuildTargetVRSettings: []
398 | openGLRequireES31: 0
399 | openGLRequireES31AEP: 0
400 | openGLRequireES32: 0
401 | m_TemplateCustomTags: {}
402 | mobileMTRendering:
403 | Android: 1
404 | iPhone: 1
405 | tvOS: 1
406 | m_BuildTargetGroupLightmapEncodingQuality: []
407 | m_BuildTargetGroupLightmapSettings: []
408 | playModeTestRunnerEnabled: 0
409 | runPlayModeTestAsEditModeTest: 0
410 | actionOnDotNetUnhandledException: 1
411 | enableInternalProfiler: 0
412 | logObjCUncaughtExceptions: 1
413 | enableCrashReportAPI: 0
414 | cameraUsageDescription:
415 | locationUsageDescription:
416 | microphoneUsageDescription:
417 | switchNetLibKey:
418 | switchSocketMemoryPoolSize: 6144
419 | switchSocketAllocatorPoolSize: 128
420 | switchSocketConcurrencyLimit: 14
421 | switchScreenResolutionBehavior: 2
422 | switchUseCPUProfiler: 0
423 | switchApplicationID: 0x01004b9000490000
424 | switchNSODependencies:
425 | switchTitleNames_0:
426 | switchTitleNames_1:
427 | switchTitleNames_2:
428 | switchTitleNames_3:
429 | switchTitleNames_4:
430 | switchTitleNames_5:
431 | switchTitleNames_6:
432 | switchTitleNames_7:
433 | switchTitleNames_8:
434 | switchTitleNames_9:
435 | switchTitleNames_10:
436 | switchTitleNames_11:
437 | switchTitleNames_12:
438 | switchTitleNames_13:
439 | switchTitleNames_14:
440 | switchPublisherNames_0:
441 | switchPublisherNames_1:
442 | switchPublisherNames_2:
443 | switchPublisherNames_3:
444 | switchPublisherNames_4:
445 | switchPublisherNames_5:
446 | switchPublisherNames_6:
447 | switchPublisherNames_7:
448 | switchPublisherNames_8:
449 | switchPublisherNames_9:
450 | switchPublisherNames_10:
451 | switchPublisherNames_11:
452 | switchPublisherNames_12:
453 | switchPublisherNames_13:
454 | switchPublisherNames_14:
455 | switchIcons_0: {fileID: 0}
456 | switchIcons_1: {fileID: 0}
457 | switchIcons_2: {fileID: 0}
458 | switchIcons_3: {fileID: 0}
459 | switchIcons_4: {fileID: 0}
460 | switchIcons_5: {fileID: 0}
461 | switchIcons_6: {fileID: 0}
462 | switchIcons_7: {fileID: 0}
463 | switchIcons_8: {fileID: 0}
464 | switchIcons_9: {fileID: 0}
465 | switchIcons_10: {fileID: 0}
466 | switchIcons_11: {fileID: 0}
467 | switchIcons_12: {fileID: 0}
468 | switchIcons_13: {fileID: 0}
469 | switchIcons_14: {fileID: 0}
470 | switchSmallIcons_0: {fileID: 0}
471 | switchSmallIcons_1: {fileID: 0}
472 | switchSmallIcons_2: {fileID: 0}
473 | switchSmallIcons_3: {fileID: 0}
474 | switchSmallIcons_4: {fileID: 0}
475 | switchSmallIcons_5: {fileID: 0}
476 | switchSmallIcons_6: {fileID: 0}
477 | switchSmallIcons_7: {fileID: 0}
478 | switchSmallIcons_8: {fileID: 0}
479 | switchSmallIcons_9: {fileID: 0}
480 | switchSmallIcons_10: {fileID: 0}
481 | switchSmallIcons_11: {fileID: 0}
482 | switchSmallIcons_12: {fileID: 0}
483 | switchSmallIcons_13: {fileID: 0}
484 | switchSmallIcons_14: {fileID: 0}
485 | switchManualHTML:
486 | switchAccessibleURLs:
487 | switchLegalInformation:
488 | switchMainThreadStackSize: 1048576
489 | switchPresenceGroupId:
490 | switchLogoHandling: 0
491 | switchReleaseVersion: 0
492 | switchDisplayVersion: 1.0.0
493 | switchStartupUserAccount: 0
494 | switchTouchScreenUsage: 0
495 | switchSupportedLanguagesMask: 0
496 | switchLogoType: 0
497 | switchApplicationErrorCodeCategory:
498 | switchUserAccountSaveDataSize: 0
499 | switchUserAccountSaveDataJournalSize: 0
500 | switchApplicationAttribute: 0
501 | switchCardSpecSize: -1
502 | switchCardSpecClock: -1
503 | switchRatingsMask: 0
504 | switchRatingsInt_0: 0
505 | switchRatingsInt_1: 0
506 | switchRatingsInt_2: 0
507 | switchRatingsInt_3: 0
508 | switchRatingsInt_4: 0
509 | switchRatingsInt_5: 0
510 | switchRatingsInt_6: 0
511 | switchRatingsInt_7: 0
512 | switchRatingsInt_8: 0
513 | switchRatingsInt_9: 0
514 | switchRatingsInt_10: 0
515 | switchRatingsInt_11: 0
516 | switchRatingsInt_12: 0
517 | switchLocalCommunicationIds_0:
518 | switchLocalCommunicationIds_1:
519 | switchLocalCommunicationIds_2:
520 | switchLocalCommunicationIds_3:
521 | switchLocalCommunicationIds_4:
522 | switchLocalCommunicationIds_5:
523 | switchLocalCommunicationIds_6:
524 | switchLocalCommunicationIds_7:
525 | switchParentalControl: 0
526 | switchAllowsScreenshot: 1
527 | switchAllowsVideoCapturing: 1
528 | switchAllowsRuntimeAddOnContentInstall: 0
529 | switchDataLossConfirmation: 0
530 | switchUserAccountLockEnabled: 0
531 | switchSystemResourceMemory: 16777216
532 | switchSupportedNpadStyles: 3
533 | switchNativeFsCacheSize: 32
534 | switchIsHoldTypeHorizontal: 0
535 | switchSupportedNpadCount: 8
536 | switchSocketConfigEnabled: 0
537 | switchTcpInitialSendBufferSize: 32
538 | switchTcpInitialReceiveBufferSize: 64
539 | switchTcpAutoSendBufferSizeMax: 256
540 | switchTcpAutoReceiveBufferSizeMax: 256
541 | switchUdpSendBufferSize: 9
542 | switchUdpReceiveBufferSize: 42
543 | switchSocketBufferEfficiency: 4
544 | switchSocketInitializeEnabled: 1
545 | switchNetworkInterfaceManagerInitializeEnabled: 1
546 | switchPlayerConnectionEnabled: 1
547 | ps4NPAgeRating: 12
548 | ps4NPTitleSecret:
549 | ps4NPTrophyPackPath:
550 | ps4ParentalLevel: 11
551 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000
552 | ps4Category: 0
553 | ps4MasterVersion: 01.00
554 | ps4AppVersion: 01.00
555 | ps4AppType: 0
556 | ps4ParamSfxPath:
557 | ps4VideoOutPixelFormat: 0
558 | ps4VideoOutInitialWidth: 1920
559 | ps4VideoOutBaseModeInitialWidth: 1920
560 | ps4VideoOutReprojectionRate: 60
561 | ps4PronunciationXMLPath:
562 | ps4PronunciationSIGPath:
563 | ps4BackgroundImagePath:
564 | ps4StartupImagePath:
565 | ps4StartupImagesFolder:
566 | ps4IconImagesFolder:
567 | ps4SaveDataImagePath:
568 | ps4SdkOverride:
569 | ps4BGMPath:
570 | ps4ShareFilePath:
571 | ps4ShareOverlayImagePath:
572 | ps4PrivacyGuardImagePath:
573 | ps4ExtraSceSysFile:
574 | ps4NPtitleDatPath:
575 | ps4RemotePlayKeyAssignment: -1
576 | ps4RemotePlayKeyMappingDir:
577 | ps4PlayTogetherPlayerCount: 0
578 | ps4EnterButtonAssignment: 1
579 | ps4ApplicationParam1: 0
580 | ps4ApplicationParam2: 0
581 | ps4ApplicationParam3: 0
582 | ps4ApplicationParam4: 0
583 | ps4DownloadDataSize: 0
584 | ps4GarlicHeapSize: 2048
585 | ps4ProGarlicHeapSize: 2560
586 | playerPrefsMaxSize: 32768
587 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
588 | ps4pnSessions: 1
589 | ps4pnPresence: 1
590 | ps4pnFriends: 1
591 | ps4pnGameCustomData: 1
592 | playerPrefsSupport: 0
593 | enableApplicationExit: 0
594 | resetTempFolder: 1
595 | restrictedAudioUsageRights: 0
596 | ps4UseResolutionFallback: 0
597 | ps4ReprojectionSupport: 0
598 | ps4UseAudio3dBackend: 0
599 | ps4UseLowGarlicFragmentationMode: 1
600 | ps4SocialScreenEnabled: 0
601 | ps4ScriptOptimizationLevel: 0
602 | ps4Audio3dVirtualSpeakerCount: 14
603 | ps4attribCpuUsage: 0
604 | ps4PatchPkgPath:
605 | ps4PatchLatestPkgPath:
606 | ps4PatchChangeinfoPath:
607 | ps4PatchDayOne: 0
608 | ps4attribUserManagement: 0
609 | ps4attribMoveSupport: 0
610 | ps4attrib3DSupport: 0
611 | ps4attribShareSupport: 0
612 | ps4attribExclusiveVR: 0
613 | ps4disableAutoHideSplash: 0
614 | ps4videoRecordingFeaturesUsed: 0
615 | ps4contentSearchFeaturesUsed: 0
616 | ps4CompatibilityPS5: 0
617 | ps4GPU800MHz: 1
618 | ps4attribEyeToEyeDistanceSettingVR: 0
619 | ps4IncludedModules: []
620 | ps4attribVROutputEnabled: 0
621 | monoEnv:
622 | splashScreenBackgroundSourceLandscape: {fileID: 0}
623 | splashScreenBackgroundSourcePortrait: {fileID: 0}
624 | blurSplashScreenBackground: 1
625 | spritePackerPolicy:
626 | webGLMemorySize: 256
627 | webGLExceptionSupport: 1
628 | webGLNameFilesAsHashes: 0
629 | webGLDataCaching: 0
630 | webGLDebugSymbols: 0
631 | webGLEmscriptenArgs:
632 | webGLModulesDirectory:
633 | webGLTemplate: APPLICATION:Default
634 | webGLAnalyzeBuildSize: 0
635 | webGLUseEmbeddedResources: 0
636 | webGLCompressionFormat: 1
637 | webGLLinkerTarget: 1
638 | webGLThreadsSupport: 0
639 | webGLWasmStreaming: 0
640 | scriptingDefineSymbols: {}
641 | platformArchitecture: {}
642 | scriptingBackend: {}
643 | il2cppCompilerConfiguration: {}
644 | managedStrippingLevel: {}
645 | incrementalIl2cppBuild: {}
646 | allowUnsafeCode: 0
647 | additionalIl2CppArgs:
648 | scriptingRuntimeVersion: 1
649 | gcIncremental: 0
650 | gcWBarrierValidation: 0
651 | apiCompatibilityLevelPerPlatform: {}
652 | m_RenderingPath: 1
653 | m_MobileRenderingPath: 1
654 | metroPackageName: KnifeHitTest
655 | metroPackageVersion:
656 | metroCertificatePath:
657 | metroCertificatePassword:
658 | metroCertificateSubject:
659 | metroCertificateIssuer:
660 | metroCertificateNotAfter: 0000000000000000
661 | metroApplicationDescription: KnifeHitTest
662 | wsaImages: {}
663 | metroTileShortName:
664 | metroTileShowName: 0
665 | metroMediumTileShowName: 0
666 | metroLargeTileShowName: 0
667 | metroWideTileShowName: 0
668 | metroSupportStreamingInstall: 0
669 | metroLastRequiredScene: 0
670 | metroDefaultTileSize: 1
671 | metroTileForegroundText: 2
672 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
673 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628,
674 | a: 1}
675 | metroSplashScreenUseBackgroundColor: 0
676 | platformCapabilities: {}
677 | metroTargetDeviceFamilies: {}
678 | metroFTAName:
679 | metroFTAFileTypes: []
680 | metroProtocolName:
681 | XboxOneProductId:
682 | XboxOneUpdateKey:
683 | XboxOneSandboxId:
684 | XboxOneContentId:
685 | XboxOneTitleId:
686 | XboxOneSCId:
687 | XboxOneGameOsOverridePath:
688 | XboxOnePackagingOverridePath:
689 | XboxOneAppManifestOverridePath:
690 | XboxOneVersion: 1.0.0.0
691 | XboxOnePackageEncryption: 0
692 | XboxOnePackageUpdateGranularity: 2
693 | XboxOneDescription:
694 | XboxOneLanguage:
695 | - enus
696 | XboxOneCapability: []
697 | XboxOneGameRating: {}
698 | XboxOneIsContentPackage: 0
699 | XboxOneEnableGPUVariability: 0
700 | XboxOneSockets: {}
701 | XboxOneSplashScreen: {fileID: 0}
702 | XboxOneAllowedProductIds: []
703 | XboxOnePersistentLocalStorageSize: 0
704 | XboxOneXTitleMemory: 8
705 | XboxOneOverrideIdentityName:
706 | XboxOneOverrideIdentityPublisher:
707 | vrEditorSettings:
708 | daydream:
709 | daydreamIconForeground: {fileID: 0}
710 | daydreamIconBackground: {fileID: 0}
711 | cloudServicesEnabled: {}
712 | luminIcon:
713 | m_Name:
714 | m_ModelFolderPath:
715 | m_PortalFolderPath:
716 | luminCert:
717 | m_CertPath:
718 | m_SignPackage: 1
719 | luminIsChannelApp: 0
720 | luminVersion:
721 | m_VersionCode: 1
722 | m_VersionName:
723 | apiCompatibilityLevel: 6
724 | cloudProjectId:
725 | framebufferDepthMemorylessMode: 0
726 | projectName:
727 | organizationId:
728 | cloudEnabled: 0
729 | enableNativePlatformBackendsForNewInputSystem: 0
730 | disableOldInputManagerSupport: 0
731 | legacyClampBlendShapeWeights: 1
732 |
--------------------------------------------------------------------------------
/ProjectSettings/ProjectVersion.txt:
--------------------------------------------------------------------------------
1 | m_EditorVersion: 2019.4.15f1
2 | m_EditorVersionWithRevision: 2019.4.15f1 (fbf367ac14e9)
3 |
--------------------------------------------------------------------------------
/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: Very Low
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 | shadowmaskMode: 0
21 | blendWeights: 1
22 | textureQuality: 1
23 | anisotropicTextures: 0
24 | antiAliasing: 0
25 | softParticles: 0
26 | softVegetation: 0
27 | realtimeReflectionProbes: 0
28 | billboardsFaceCameraPosition: 0
29 | vSyncCount: 0
30 | lodBias: 0.3
31 | maximumLODLevel: 0
32 | particleRaycastBudget: 4
33 | asyncUploadTimeSlice: 2
34 | asyncUploadBufferSize: 4
35 | resolutionScalingFixedDPIFactor: 1
36 | excludedTargetPlatforms: []
37 | - serializedVersion: 2
38 | name: Low
39 | pixelLightCount: 0
40 | shadows: 0
41 | shadowResolution: 0
42 | shadowProjection: 1
43 | shadowCascades: 1
44 | shadowDistance: 20
45 | shadowNearPlaneOffset: 3
46 | shadowCascade2Split: 0.33333334
47 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
48 | shadowmaskMode: 0
49 | blendWeights: 2
50 | textureQuality: 0
51 | anisotropicTextures: 0
52 | antiAliasing: 0
53 | softParticles: 0
54 | softVegetation: 0
55 | realtimeReflectionProbes: 0
56 | billboardsFaceCameraPosition: 0
57 | vSyncCount: 0
58 | lodBias: 0.4
59 | maximumLODLevel: 0
60 | particleRaycastBudget: 16
61 | asyncUploadTimeSlice: 2
62 | asyncUploadBufferSize: 4
63 | resolutionScalingFixedDPIFactor: 1
64 | excludedTargetPlatforms: []
65 | - serializedVersion: 2
66 | name: Medium
67 | pixelLightCount: 1
68 | shadows: 1
69 | shadowResolution: 0
70 | shadowProjection: 1
71 | shadowCascades: 1
72 | shadowDistance: 20
73 | shadowNearPlaneOffset: 3
74 | shadowCascade2Split: 0.33333334
75 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
76 | shadowmaskMode: 0
77 | blendWeights: 2
78 | textureQuality: 0
79 | anisotropicTextures: 1
80 | antiAliasing: 0
81 | softParticles: 0
82 | softVegetation: 0
83 | realtimeReflectionProbes: 0
84 | billboardsFaceCameraPosition: 0
85 | vSyncCount: 1
86 | lodBias: 0.7
87 | maximumLODLevel: 0
88 | particleRaycastBudget: 64
89 | asyncUploadTimeSlice: 2
90 | asyncUploadBufferSize: 4
91 | resolutionScalingFixedDPIFactor: 1
92 | excludedTargetPlatforms: []
93 | - serializedVersion: 2
94 | name: High
95 | pixelLightCount: 2
96 | shadows: 2
97 | shadowResolution: 1
98 | shadowProjection: 1
99 | shadowCascades: 2
100 | shadowDistance: 40
101 | shadowNearPlaneOffset: 3
102 | shadowCascade2Split: 0.33333334
103 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
104 | shadowmaskMode: 1
105 | blendWeights: 2
106 | textureQuality: 0
107 | anisotropicTextures: 1
108 | antiAliasing: 0
109 | softParticles: 0
110 | softVegetation: 1
111 | realtimeReflectionProbes: 1
112 | billboardsFaceCameraPosition: 1
113 | vSyncCount: 1
114 | lodBias: 1
115 | maximumLODLevel: 0
116 | particleRaycastBudget: 256
117 | asyncUploadTimeSlice: 2
118 | asyncUploadBufferSize: 4
119 | resolutionScalingFixedDPIFactor: 1
120 | excludedTargetPlatforms: []
121 | - serializedVersion: 2
122 | name: Very High
123 | pixelLightCount: 3
124 | shadows: 2
125 | shadowResolution: 2
126 | shadowProjection: 1
127 | shadowCascades: 2
128 | shadowDistance: 70
129 | shadowNearPlaneOffset: 3
130 | shadowCascade2Split: 0.33333334
131 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
132 | shadowmaskMode: 1
133 | blendWeights: 4
134 | textureQuality: 0
135 | anisotropicTextures: 2
136 | antiAliasing: 2
137 | softParticles: 1
138 | softVegetation: 1
139 | realtimeReflectionProbes: 1
140 | billboardsFaceCameraPosition: 1
141 | vSyncCount: 1
142 | lodBias: 1.5
143 | maximumLODLevel: 0
144 | particleRaycastBudget: 1024
145 | asyncUploadTimeSlice: 2
146 | asyncUploadBufferSize: 4
147 | resolutionScalingFixedDPIFactor: 1
148 | excludedTargetPlatforms: []
149 | - serializedVersion: 2
150 | name: Ultra
151 | pixelLightCount: 4
152 | shadows: 2
153 | shadowResolution: 2
154 | shadowProjection: 1
155 | shadowCascades: 4
156 | shadowDistance: 150
157 | shadowNearPlaneOffset: 3
158 | shadowCascade2Split: 0.33333334
159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
160 | shadowmaskMode: 1
161 | blendWeights: 4
162 | textureQuality: 0
163 | anisotropicTextures: 2
164 | antiAliasing: 2
165 | softParticles: 1
166 | softVegetation: 1
167 | realtimeReflectionProbes: 1
168 | billboardsFaceCameraPosition: 1
169 | vSyncCount: 1
170 | lodBias: 2
171 | maximumLODLevel: 0
172 | particleRaycastBudget: 4096
173 | asyncUploadTimeSlice: 2
174 | asyncUploadBufferSize: 4
175 | resolutionScalingFixedDPIFactor: 1
176 | excludedTargetPlatforms: []
177 | m_PerPlatformDefaultQuality:
178 | Android: 2
179 | Nintendo 3DS: 5
180 | Nintendo Switch: 5
181 | PS4: 5
182 | PSM: 5
183 | PSP2: 2
184 | Standalone: 5
185 | Tizen: 2
186 | WebGL: 3
187 | WiiU: 5
188 | Windows Store Apps: 5
189 | XboxOne: 5
190 | iPhone: 2
191 | tvOS: 2
192 |
--------------------------------------------------------------------------------
/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 | - Log
8 | - Knife
9 | layers:
10 | - Default
11 | - TransparentFX
12 | - Ignore Raycast
13 | -
14 | - Water
15 | - UI
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 | -
41 | -
42 | m_SortingLayers:
43 | - name: Default
44 | uniqueID: 0
45 | locked: 0
46 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 | serializedVersion: 1
7 | m_Enabled: 0
8 | m_TestMode: 0
9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com
12 | m_TestInitMode: 0
13 | CrashReportingSettings:
14 | m_EventUrl: https://perf-events.cloud.unity3d.com
15 | m_Enabled: 0
16 | m_LogBufferSize: 10
17 | m_CaptureEditorExceptions: 1
18 | UnityPurchasingSettings:
19 | m_Enabled: 0
20 | m_TestMode: 0
21 | UnityAnalyticsSettings:
22 | m_Enabled: 0
23 | m_TestMode: 0
24 | m_InitializeOnStartup: 1
25 | UnityAdsSettings:
26 | m_Enabled: 0
27 | m_InitializeOnStartup: 1
28 | m_TestMode: 0
29 | m_IosGameId:
30 | m_AndroidGameId:
31 | m_GameIds: {}
32 | m_GameId:
33 | PerformanceReportingSettings:
34 | m_Enabled: 0
35 |
--------------------------------------------------------------------------------
/ProjectSettings/VFXManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!937362698 &1
4 | VFXManager:
5 | m_ObjectHideFlags: 0
6 | m_IndirectShader: {fileID: 0}
7 | m_CopyBufferShader: {fileID: 0}
8 | m_SortShader: {fileID: 0}
9 | m_StripUpdateShader: {fileID: 0}
10 | m_RenderPipeSettingsPath:
11 | m_FixedTimeStep: 0.016666668
12 | m_MaxDeltaTime: 0.05
13 |
--------------------------------------------------------------------------------
/ProjectSettings/XRSettings.asset:
--------------------------------------------------------------------------------
1 | {
2 | "m_SettingKeys": [
3 | "VR Device Disabled",
4 | "VR Device User Alert"
5 | ],
6 | "m_SettingValues": [
7 | "False",
8 | "False"
9 | ]
10 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # KnifeHit sample
2 |
3 | this sample is made using Unity 2019.4 LTS and uses Pushe **0.7.0 - Unity**
4 |
5 |
--------------------------------------------------------------------------------
/apple_test.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pusheco/pushe-unity-sample/a875fa9b7f5a770507b8bb462a543b1fc6d5ecca/apple_test.png
--------------------------------------------------------------------------------