chunk 2: remaining non-audio non-NewImport assets

This commit is contained in:
2026-04-06 11:25:19 +03:00
parent 0d11a097d8
commit ed675b9f4a
3742 changed files with 1640416 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5bec337bd667079c38b0e83b016542de
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 34a6e293c802b94118de4bbbf4fc5998
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/BG 2.png LFS Normal file

Binary file not shown.

130
Assets/BG 2.png.meta Normal file
View File

@@ -0,0 +1,130 @@
fileFormatVersion: 2
guid: 6cf89f562b9db7c27b1770cb6703ec41
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,130 @@
fileFormatVersion: 2
guid: f8d69cf1dded64ae08a22a717f74d5a2
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3e1c75cccb3c0710ba2b2c23bc968985
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

74
Assets/ComponentCopier.cs Normal file
View File

@@ -0,0 +1,74 @@
#if UNITY_EDITOR
using UnityEngine;
using UnityEditor;
using System.Collections;
public class ComponentsCopier
{
static Component[] copiedComponents;
[MenuItem("GameObject/Copy all components %&C")]
static void Copy()
{
if (UnityEditor.Selection.activeGameObject == null)
return;
copiedComponents = UnityEditor.Selection.activeGameObject.GetComponents<Component>();
}
[MenuItem("GameObject/Paste all components %&P")]
static void Paste()
{
if (copiedComponents == null)
{
Debug.LogError("Nothing is copied!");
return;
}
foreach (var targetGameObject in UnityEditor.Selection.gameObjects)
{
if (!targetGameObject)
continue;
Undo.RegisterCompleteObjectUndo(targetGameObject, targetGameObject.name + ": Paste All Components"); // sadly does not record PasteComponentValues, i guess
foreach (var copiedComponent in copiedComponents)
{
if (!copiedComponent)
continue;
UnityEditorInternal.ComponentUtility.CopyComponent(copiedComponent);
var targetComponent = targetGameObject.GetComponent(copiedComponent.GetType());
if (targetComponent) // if gameObject already contains the component
{
if (UnityEditorInternal.ComponentUtility.PasteComponentValues(targetComponent))
{
Debug.Log("Successfully pasted: " + copiedComponent.GetType());
}
else
{
Debug.LogError("Failed to copy: " + copiedComponent.GetType());
}
}
else // if gameObject does not contain the component
{
if (UnityEditorInternal.ComponentUtility.PasteComponentAsNew(targetGameObject))
{
Debug.Log("Successfully pasted: " + copiedComponent.GetType());
}
else
{
Debug.LogError("Failed to copy: " + copiedComponent.GetType());
}
}
}
}
copiedComponents = null; // to prevent wrong pastes in future
}
}
#endif

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: e2bdca718a6a9a94e801edefc6add0b3

8
Assets/DEVIS.meta Normal file
View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: db7d5299530936d4ab976d9b52ffbaac
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: edfe8a58e129c234e90785a0b82d7b13
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e8d0dcab687fef642b397f1b38ec78c3
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 37126f36338d6e446b870e7fcf2ab323
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
Assets/Docs.meta Normal file
View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9ebfd438a0bd0d3029c6bc75141b7fcc
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5e38ded6e9bc810beba600cf6b6c360c
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5898980251e0405ab9d43a9a79c9fa8d
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
Assets/Editor.meta Normal file
View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5a2d10cb03f4076bf97fc3b414ee4eb9
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Ellipse 160.png LFS Normal file

Binary file not shown.

130
Assets/Ellipse 160.png.meta Normal file
View File

@@ -0,0 +1,130 @@
fileFormatVersion: 2
guid: c450159186cb268bb8075d2248eaf4b3
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Ellipse 161.png LFS Normal file

Binary file not shown.

130
Assets/Ellipse 161.png.meta Normal file
View File

@@ -0,0 +1,130 @@
fileFormatVersion: 2
guid: 4c7b5aaa40fd9870690a75e86540a28c
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Ellipse 162.png LFS Normal file

Binary file not shown.

130
Assets/Ellipse 162.png.meta Normal file
View File

@@ -0,0 +1,130 @@
fileFormatVersion: 2
guid: 00196bf4d061e860a955ee5350fee7da
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Ellipse 163.png LFS Normal file

Binary file not shown.

130
Assets/Ellipse 163.png.meta Normal file
View File

@@ -0,0 +1,130 @@
fileFormatVersion: 2
guid: b355bb65f9f13f02e9ad0f762671cad3
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Ellipse 164.png LFS Normal file

Binary file not shown.

130
Assets/Ellipse 164.png.meta Normal file
View File

@@ -0,0 +1,130 @@
fileFormatVersion: 2
guid: 16f8231bf3175890bb87648e6157c05b
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Ellipse 165.png LFS Normal file

Binary file not shown.

130
Assets/Ellipse 165.png.meta Normal file
View File

@@ -0,0 +1,130 @@
fileFormatVersion: 2
guid: 15da0609bea3e42b9b900196885626fb
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Ellipse 387 (1).png LFS Normal file

Binary file not shown.

View File

@@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: 5aab5e8bca8c4a0e58d4fdb9a8344a6a
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Ellipse 388 (1).png LFS Normal file

Binary file not shown.

View File

@@ -0,0 +1,130 @@
fileFormatVersion: 2
guid: 97d44d0487fc0084a8ff3f7246ddd783
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 1024
resizeAlgorithm: 0
textureFormat: 47
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

8
Assets/Environment.meta Normal file
View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d4eed9ab44e1bcb4287957401070a026
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3ad92d6acec1b4bda925f80b9693b165
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: b42aa8acaabecbf943da2892de5e6aeb
folderAsset: yes
timeCreated: 1448926516
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1f3b00c189f0e4415b42547ceba4ab7a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,32 @@
fileFormatVersion: 2
guid: ae27fcbe11294c9e9eeca7eb5ad2c857
labels:
- gvh
- gvh_version-1.2.181
- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.181/Google.IOSResolver.dll
- gvhp_targets-editor
PluginImporter:
externalObjects: {}
serializedVersion: 3
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
Any:
enabled: 0
settings: {}
Editor:
enabled: 0
settings:
DefaultValueInitialized: true
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,32 @@
fileFormatVersion: 2
guid: a256270a3ad7437582a4117da5a86488
labels:
- gvh
- gvh_version-1.2.181
- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.181/Google.JarResolver.dll
- gvhp_targets-editor
PluginImporter:
externalObjects: {}
serializedVersion: 3
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
Any:
enabled: 0
settings: {}
Editor:
enabled: 0
settings:
DefaultValueInitialized: true
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,32 @@
fileFormatVersion: 2
guid: 1f5eb6215e764865b06833b8dcd541ea
labels:
- gvh
- gvh_version-1.2.181
- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.181/Google.PackageManagerResolver.dll
- gvhp_targets-editor
PluginImporter:
externalObjects: {}
serializedVersion: 3
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
Any:
enabled: 0
settings: {}
Editor:
enabled: 0
settings:
DefaultValueInitialized: true
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,32 @@
fileFormatVersion: 2
guid: 389e9f28fd444accbfe5e1f62a0ef8b1
labels:
- gvh
- gvh_version-1.2.181
- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.181/Google.VersionHandlerImpl.dll
- gvhp_targets-editor
PluginImporter:
externalObjects: {}
serializedVersion: 3
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
Any:
enabled: 0
settings: {}
Editor:
enabled: 0
settings:
DefaultValueInitialized: true
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d02dd8321d384ea8ba892f52dcb2cab3
labels:
- gvh
- gvh_version-1.2.181
- gvhp_exportpath-ExternalDependencyManager/Editor/CHANGELOG.md
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,32 @@
fileFormatVersion: 2
guid: c993f1fd754545c3adbe64e1fa53d539
labels:
- gvh
- gvh_version-1.2.181
- gvhp_exportpath-ExternalDependencyManager/Editor/Google.VersionHandler.dll
- gvhp_targets-editor
PluginImporter:
externalObjects: {}
serializedVersion: 3
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
Any:
enabled: 0
settings: {}
Editor:
enabled: 1
settings:
DefaultValueInitialized: true
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,245 @@
Copyright (C) 2014 Google Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
====================================================================================================
This package uses MiniJSON
Copyright (c) 2013 Calvin Rien
Based on the JSON parser by Patrick van Bergen
http://techblog.procurios.nl/k/618/news/view/14605/14863/How-do-I-write-my-own-parser-for-JSON.html
Simplified it so that it doesn't throw exceptions
and can be used in Unity iPhone with maximum code stripping.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e1f69eb2faf34f8aa3f6e3dd5c7b3d03
labels:
- gvh
- gvh_version-1.2.181
- gvhp_exportpath-ExternalDependencyManager/Editor/LICENSE
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 58e98ad89e7c461c89bb54acbde380d4
labels:
- gvh
- gvh_version-1.2.181
- gvhp_exportpath-ExternalDependencyManager/Editor/README.md
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,13 @@
Assets/ExternalDependencyManager/Editor/1.2.181/Google.IOSResolver.dll
Assets/ExternalDependencyManager/Editor/1.2.181/Google.IOSResolver.pdb
Assets/ExternalDependencyManager/Editor/1.2.181/Google.JarResolver.dll
Assets/ExternalDependencyManager/Editor/1.2.181/Google.JarResolver.pdb
Assets/ExternalDependencyManager/Editor/1.2.181/Google.PackageManagerResolver.dll
Assets/ExternalDependencyManager/Editor/1.2.181/Google.PackageManagerResolver.pdb
Assets/ExternalDependencyManager/Editor/1.2.181/Google.VersionHandlerImpl.dll
Assets/ExternalDependencyManager/Editor/1.2.181/Google.VersionHandlerImpl.pdb
Assets/ExternalDependencyManager/Editor/CHANGELOG.md
Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll
Assets/ExternalDependencyManager/Editor/Google.VersionHandler.pdb
Assets/ExternalDependencyManager/Editor/LICENSE
Assets/ExternalDependencyManager/Editor/README.md

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: 7163600552a34531add1231247b5a3f2
labels:
- gvh
- gvh_manifest
- gvh_version-1.2.181
- gvhp_exportpath-ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.181_manifest.txt
- gvhp_manifestname-0External Dependency Manager
- gvhp_manifestname-play-services-resolver
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
Assets/Figma.meta Normal file
View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 82423d8c3cfe52e4fa3df7f23adcba7b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
Assets/Figma/Fonts.meta Normal file
View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9f88978a1ca31934d998e7fb2ef3c672
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 8b5b702e773792d42a59275eed71c7e8
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Barlow Condensed Medium
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ca24a03f77caa61409a7d498c24dbeab
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 637b9f7951318664fb553541a952289f
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Barlow Condensed
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8b575c98a25195548b55a7b4a65c2f97
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: b08788f800f604249bcf03c22fcdc333
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Barlow Condensed ExtraBold
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ce020a1c01afa684d8e8807472386d0c
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 274194b9c23cebe4f8ade33e2ffd61b1
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Barlow Condensed Black
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 33a8a37e8e185684ba851fc9b26f93cd
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Figma/Fonts/Oswald_700.ttf LFS Normal file

Binary file not shown.

View File

@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: c9080f6807fc99b4bad7cd973c37341b
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Oswald
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d6573d3790c892d449ac98433942c5dc
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b031ef026074308cba86835eda9fddb7
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 882927f2a1bc2e5488f6b2156c78fa29
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: af3f9d3883ab6df4c893a32f6d18a8e3
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 162991
packageName: Smooth Camera Shaker
packageVersion: 2.12
assetPath: Assets/FirstGearGames/SmoothCameraShaker/Documentation.pdf
uploadId: 376379

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8c0b3da18ad2e7d47aca9eba6f6a2b6c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,700 @@
using FirstGearGames.Utilities.Objects;
using System;
using System.Collections.Generic;
using UnityEngine;
namespace FirstGearGames.SmoothCameraShaker
{
public class CameraShakerHandler : MonoBehaviour
{
#region Public.
/// <summary>
/// Dispatched after the default Shaker is changed.
/// </summary>
public static event Action<CameraShakerChange> OnDefaultShakerChanged;
/// <summary>
/// Dispatched after the default Shaker is changed. Obsolete: use OnDefaultShakerChanged instead.
/// </summary>
[Obsolete("Obsolete: use OnDefaultShakerChanged instead.")]
public static event Action<CameraShakerChange> OnDefaultCameraShakerChanged
{
add { OnDefaultShakerChanged += value; }
remove { OnDefaultShakerChanged -= value; }
}
/// <summary>
/// Dispatched when shaking starts when previously stopped on all Shakers.
/// </summary>
public static event Action OnAllShakingStarted;
/// <summary>
/// Dispatched when shaking ends on all Shakers.
/// </summary>
public static event Action OnAllShakingEnded;
/// <summary>
/// Dispatched every update a shake occurs. This is the total values of InstantiatedShakers.
/// </summary>
public static event Action<ShakeUpdate> OnAllShakeUpdate;
/// <summary>
/// Dispatched every fixed update a shake occurs. Contains the shake values from last update of InstantiatedShakers.
/// </summary>
public static event Action<ShakeUpdate> OnAllShakeFixedUpdate;
/// <summary>
/// Dispatched when shaking starts on any Shaker.
/// </summary>
public static event Action<CameraShaker> OnShakingStarted;
/// <summary>
/// Dispatched when shaking ends on any Shaker.
/// </summary>
public static event Action<CameraShaker> OnShakingEnded;
/// <summary>
/// Dispatched every update a shake occurs on any Shaker.
/// </summary>
public static event Action<CameraShaker, ShakeUpdate> OnShakeUpdate;
/// <summary>
/// Dispatched every fixed updated a shake occurs on any Shaker. Contains the shake values from last update.
/// </summary>
public static event Action<CameraShaker, ShakeUpdate> OnShakeFixedUpdate;
/// <summary>
/// Dispatched after a Shaker is added to InstantiatedShakers.
/// </summary>
public static event Action<CameraShaker> OnShakerInstantiated;
/// <summary>
/// Dispatched after a Shaker is added to InstantiatedShakers. Obsolete: use OnShakerInstantiated instead.
/// </summary>
[Obsolete("Obsolete: use OnShakerInstantiated instead.")]
public static event Action<CameraShaker> OnCameraShakerInstantiated
{
add { OnShakerInstantiated += value; }
remove { OnShakerInstantiated -= value; }
}
/// <summary>
/// Dispatched after a Shaker is removed from InstantiatedShakers.
/// </summary>
public static event Action<CameraShaker> OnShakerDestroyed;
/// <summary>
/// Dispatched after a Shaker is removed from InstantiatedShakers. Obsolete: use OnShakerDestroyed instead.
/// </summary>
[Obsolete("Obsolete: use OnShakerDestroyed instead.")]
public static event Action<CameraShaker> OnCameraShakerDestroyed
{
add { OnShakerDestroyed += value; }
remove { OnShakerDestroyed -= value; }
}
/// <summary>
/// All instantiated Shaker scripts.
/// </summary>
public static List<CameraShaker> InstantiatedShakers = new List<CameraShaker>();
/// <summary>
/// All instantiated Shaker scripts. Obsolete: use InstantiatedShakers instead.
/// </summary>
[Obsolete("Obsolete: use InstantiatedShakers instead.")]
public static List<CameraShaker> InstantiatedCameraShakers
{
get { return InstantiatedShakers; }
set { InstantiatedShakers = value; }
}
/// <summary>
///
/// </summary>z
private CameraShaker _defaultCameraShaker;
/// <summary>
/// Current default Shaker.
/// </summary>
public static CameraShaker DefaultCameraShaker
{
get
{
if (_instance == null)
return null;
return _instance._defaultCameraShaker;
}
private set
{
if (_instance == null)
return;
_instance._defaultCameraShaker = value;
}
}
/// <summary>
/// True if any CameraShaker is currently shaking.
/// </summary>
public static bool Shaking { get { return (_instance._shaking.Count > 0); } }
#endregion
#region Private.
/// <summary>
/// Collection of CameraShakers which are currently shaking.
/// </summary>
private List<CameraShaker> _shaking = new List<CameraShaker>();
/// <summary>
/// Singleton instance of this script.
/// </summary>
private static CameraShakerHandler _instance;
#endregion
private void Awake()
{
//Make sure there is only once instance.
if (_instance != null && _instance != this)
{
if (Debug.isDebugBuild) Debug.LogWarning("Multiple CameraShakerHandler scripts found. This script auto loads itself and does not need to be placed in your scenes.");
Destroy(this);
return;
}
}
private void Update()
{
UpdateShakers();
}
private void FixedUpdate()
{
UpdateFixedShakers();
}
private void OnDestroy()
{
DisableAll();
}
/// <summary>
/// Initializes this script for use. Should only be completed once.
/// </summary>
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
private static void FirstInitialize()
{
DDOL ddol = DDOL.ReturnDDOL();
GameObject obj = new GameObject();
obj.name = "CameraShakerHandler";
_instance = obj.AddComponent<CameraShakerHandler>();
_instance.enabled = false;
_instance.transform.SetParent(ddol.transform);
}
/// <summary>
/// Disables activity on all camera shakers.
/// </summary>
private void DisableAll()
{
//Disable camera shakers.
for (int i = 0; i < InstantiatedShakers.Count; i++)
{
if (InstantiatedShakers[i] != null)
InstantiatedShakers[i].Disable();
}
}
/// <summary>
/// Updates Shakers on standard time.
/// </summary>
private void UpdateShakers()
{
if (_shaking.Count == 0)
return;
ShakeValues totalCamera = new ShakeValues();
ShakeValues totalCanvases = new ShakeValues();
ShakeValues totalRigidbodies = new ShakeValues();
//True if any shakers are running.
bool anyShaking = false;
for (int i = 0; i < InstantiatedShakers.Count; i++)
{
ShakeValues camera;
ShakeValues canvases;
ShakeValues rigidbodies;
if (InstantiatedShakers[i].UpdateShakers(out camera, out canvases, out rigidbodies))
{
anyShaking = true;
totalCamera.Position += camera.Position;
totalCamera.Rotation += camera.Rotation;
totalCanvases.Position += canvases.Position;
totalCanvases.Rotation += canvases.Rotation;
totalRigidbodies.Position += rigidbodies.Position;
totalRigidbodies.Rotation += rigidbodies.Rotation;
}
}
//If any where shaking.
if (anyShaking)
OnAllShakeUpdate?.Invoke(new ShakeUpdate(totalCamera, totalCanvases, totalRigidbodies));
}
/// <summary>
/// Updates Shakers on fixed time.
/// </summary>
private void UpdateFixedShakers()
{
/* Don't exit if total shaking is 0
* as shaking may have stopped but still
* have a fixed shake queued. */
ShakeValues totalCamera = new ShakeValues();
ShakeValues totalCanvases = new ShakeValues();
ShakeValues totalRigidbodies = new ShakeValues();
//True if any shakers are shaking a fixed value.
bool anyShaking = false;
for (int i = 0; i < InstantiatedShakers.Count; i++)
{
ShakeValues camera;
ShakeValues canvases;
ShakeValues rigidbodies;
if (InstantiatedShakers[i].UpdateFixedShakers(out camera, out canvases, out rigidbodies))
{
anyShaking = true;
totalCamera.Position += camera.Position;
totalCamera.Rotation += camera.Rotation;
totalCanvases.Position += canvases.Position;
totalCanvases.Rotation += canvases.Rotation;
totalRigidbodies.Position += rigidbodies.Position;
totalRigidbodies.Rotation += rigidbodies.Rotation;
}
}
if (anyShaking)
OnAllShakeFixedUpdate?.Invoke(new ShakeUpdate(totalCamera, totalCanvases, totalRigidbodies));
}
/// <summary>
/// Returns if an action can be run on the specified Shaker using an All method.
/// </summary>
/// <param name="shaker"></param>
/// <param name="includeDisabled"></param>
/// <returns></returns>
private static bool CanRunAllOn(CameraShaker shaker, bool includeDisabled)
{
if (shaker == null)
return false;
if (!shaker.gameObject.activeInHierarchy && !includeDisabled)
return false;
return true;
}
#region Shaker referencing handling.
/// <summary>
/// Adds CameraShaker to shaking. This is for internal use only.
/// </summary>
/// <param name="shaker"></param>
internal static void AddShaking(CameraShaker shaker)
{
int startCount = _instance._shaking.Count;
_instance._shaking.AddUnique(shaker);
//Shaking just started.
if (startCount == 0 && _instance._shaking.Count > 0)
{
_instance.enabled = true;
OnAllShakingStarted?.Invoke();
}
}
/// <summary>
/// Removes CameraShaker from shaking. This is for internal use only.
/// </summary>
/// <param name="shaker"></param>
internal static void RemoveShaking(CameraShaker shaker)
{
int startCount = _instance._shaking.Count;
_instance._shaking.Remove(shaker);
//Last shaker was removed.
if (startCount > 0 && _instance._shaking.Count == 0)
{
/* Since this is the last shaker being removed send
* zero values. This has to be done before update otherwise these
* values would send after the OnAllShakingEnded. */
OnAllShakeUpdate?.Invoke(new ShakeUpdate());
OnAllShakeFixedUpdate?.Invoke(new ShakeUpdate());
OnAllShakingEnded?.Invoke();
_instance.enabled = false;
}
}
/// <summary>
/// Adds a CameraShaker to the InstantiatedCameraShakers field. This is for internal use only.
/// </summary>
/// <param name="value"></param>
internal static void AddInstantiatedShaker(CameraShaker value)
{
int index = InstantiatedShakers.IndexOf(value);
/* If shaker already exist then remove the current entry.
* It will then be added to the end. */
if (index != -1)
InstantiatedShakers.RemoveAt(index);
//First time being added, subscribe to events.
else
ChangeShakerSubscriptions(value, true);
InstantiatedShakers.Add(value);
OnShakerInstantiated?.Invoke(value);
}
/// <summary>
/// Removes a CameraShaker from the InstantiatedCameraShakers field. This is for internal use only.
/// </summary>
/// <param name="value"></param>
internal static void RemoveInstantiatedShaker(CameraShaker value)
{
ChangeShakerSubscriptions(value, false);
InstantiatedShakers.Remove(value);
/* If value was the current default shaker then try to change value
* to the next most recently enabled shaker. This isn't ideal
* but can occur with user error. */
if (value == DefaultCameraShaker && InstantiatedShakers.Count > 0)
SetFirstDefault();
OnShakerDestroyed?.Invoke(value);
}
/// <summary>
/// Iterates through CameraShakers and sets the most recently active instance as default.
/// </summary>
private static void SetFirstDefault()
{
for (int i = (InstantiatedShakers.Count - 1); i >= 0; i--)
{
if (InstantiatedShakers[i] != null && InstantiatedShakers[i].gameObject.activeInHierarchy)
{
SetDefaultCameraShaker(InstantiatedShakers[i]);
return;
}
}
//Fall through. Ideally won't happen but can depending on user setup.
SetDefaultCameraShaker(null);
}
#endregion
#region Relaying CameraShaker events.
/// <summary>
/// Changes subscriptions to a camera shaker.
/// </summary>
/// <param name="shaker"></param>
/// <param name="subscribe"></param>
private static void ChangeShakerSubscriptions(CameraShaker shaker, bool subscribe)
{
if (shaker == null)
return;
if (subscribe)
{
shaker.OnShakingStarted += Shaker_OnShakingStarted;
shaker.OnShakingEnded += Shaker_OnShakingEnded;
shaker.OnShakeUpdate += Shaker_OnShakeUpdate;
shaker.OnShakeFixedUpdate += Shaker_OnFixedShakeUpdate;
}
else
{
shaker.OnShakingStarted -= Shaker_OnShakingStarted;
shaker.OnShakingEnded -= Shaker_OnShakingEnded;
shaker.OnShakeUpdate -= Shaker_OnShakeUpdate;
shaker.OnShakeFixedUpdate -= Shaker_OnFixedShakeUpdate;
}
}
/// <summary>
/// Received when any instantiated CameraShaker stops shaking.
/// </summary>
/// <param name="obj"></param>
private static void Shaker_OnShakingEnded(CameraShaker obj)
{
OnShakingEnded?.Invoke(obj);
}
/// <summary>
/// Received when any instantiated CameraShaker starts shaking.
/// </summary>
/// <param name="obj"></param>
private static void Shaker_OnShakingStarted(CameraShaker obj)
{
OnShakingStarted?.Invoke(obj);
}
/// <summary>
/// Received when any instantiated CameraShaker calls OnShakeUpdate.
/// </summary>
/// <param name="arg1"></param>
/// <param name="arg2"></param>
private static void Shaker_OnShakeUpdate(CameraShaker arg1, ShakeUpdate arg2)
{
OnShakeUpdate?.Invoke(arg1, arg2);
}
/// <summary>
/// Received when any instantiated CameraShaker calls OnFixedShakeUpdate.
/// </summary>
/// <param name="arg1"></param>
/// <param name="arg2"></param>
private static void Shaker_OnFixedShakeUpdate(CameraShaker arg1, ShakeUpdate arg2)
{
OnShakeFixedUpdate?.Invoke(arg1, arg2);
}
#endregion
#region API.
/// <summary>
/// Copies ShakerInstances from one CameraShaker to another.
/// </summary>
/// <param name="from">CameraShaker copied from.</param>
/// <param name="to">CameraShaker copied to.</param>
/// <param name="copyOffset">True to copy the from cameras current offsets. Both CameraShakers must have the same ShakeTechnique for this to work.</param>
public static void CopyShakerInstances(CameraShaker from, CameraShaker to, bool copyOffset = true)
{
//If neither shaker is null then add instances.
if (from != null && to != null)
{
to.AddShakerInstances(from.ShakerInstances);
//Also copy offsets when possible.
if (copyOffset && from.ShakeTechnique == to.ShakeTechnique)
{
/* Use the to camera shake technique. Since they are the same
* it really doesn't matter which one I read. */
CameraShaker.ShakeTechniques technique = to.ShakeTechnique;
//Matrix.
if (technique == CameraShaker.ShakeTechniques.Matrix)
{
/* Cannot copy the matrix because camera view will remain as last cameras view.
* If fixed values are known for from camera then use those. */
if (from.FixedCamera != null)
to.SetMatrixOffsets(from.FixedCamera.Position, from.FixedCamera.Rotation);
}
//LocalSpace.
else if (to.ShakeTechnique == CameraShaker.ShakeTechniques.LocalSpace)
{
to.SetLocalSpaceOffsets(from.transform.localPosition, from.transform.localEulerAngles);
}
}
}
}
/// <summary>
/// Sets the DefaultCamereaShaker field.
/// </summary>
/// <param name="value">New CameraShaker to use as default.</param>
public static void SetDefaultCameraShaker(CameraShaker value)
{
CameraShaker old = DefaultCameraShaker;
DefaultCameraShaker = value;
OnDefaultShakerChanged?.Invoke(new CameraShakerChange(old, value));
}
/// <summary>
/// Sets Scale value on the default CameraShaker.
/// </summary>
/// <param name="value">New scale to use.</param>
public static void SetScale(float value)
{
if (DefaultCameraShaker == null)
return;
DefaultCameraShaker.SetScale(value);
}
/// <summary>
/// Sets the Scale value of InstantiatedCameraShakers.
/// </summary>
/// <param name="value">New scale to use</param>
/// <param name="includeDisabled">True to issue call on disabled CameraShakers as well.</param>
public static void SetScaleAll(float value, bool includeDisabled = false)
{
for (int i = 0; i < InstantiatedShakers.Count; i++)
{
if (!CanRunAllOn(InstantiatedShakers[i], includeDisabled))
continue;
InstantiatedShakers[i].SetScale(value);
}
}
/// <summary>
/// Shakes the default CameraShaker using data.
/// </summary>
/// <param name="data">ShakeData to use.</param>
/// <returns>Instance generated using data.</returns>
public static ShakerInstance Shake(ShakeData data)
{
if (DefaultCameraShaker == null)
return null;
return DefaultCameraShaker.Shake(data);
}
/// <summary>
/// Shakes the all camera shakers using data.
/// </summary>
/// <param name="data">ShakeData to use.</param>
/// <param name="includeDisabled">True to issue call on disabled CameraShakers as well.</param>
/// <returns>Instances generated using data.</returns>
public static List<ShakerInstance> ShakeAll(ShakeData data, bool includeDisabled = false)
{
List<ShakerInstance> results = new List<ShakerInstance>();
for (int i = 0; i < InstantiatedShakers.Count; i++)
{
if (!CanRunAllOn(InstantiatedShakers[i], includeDisabled))
continue;
results.Add(InstantiatedShakers[i].Shake(data));
}
return results;
}
/// <summary>
/// Sets the paused state of all shaker instances on the default CameraShaker.
/// </summary>
/// <param name="value">New pause state.</param>
public static void SetPaused(bool value)
{
if (DefaultCameraShaker == null)
return;
DefaultCameraShaker.SetPaused(value);
}
/// <summary>
/// Sets the paused state of all shaker instances on the all CameraShakers.
/// </summary>
/// <param name="value">New pause state.</param>
/// <param name="includeDisabled">True to issue call on disabled CameraShakers as well.</param>
public static void SetPausedAll(bool value, bool includeDisabled = false)
{
for (int i = 0; i < InstantiatedShakers.Count; i++)
{
if (!CanRunAllOn(InstantiatedShakers[i], includeDisabled))
continue;
InstantiatedShakers[i].SetPaused(value);
}
}
/// <summary>
/// Abruptly stops all instances on the default CameraShaker.
/// </summary>
public static void Stop()
{
if (DefaultCameraShaker == null)
return;
DefaultCameraShaker.Stop();
}
/// <summary>
/// Abruptly stops all instances on InstantiatedCameraShakers.
/// </summary>
/// <param name="includeDisabled">True to issue call on disabled CameraShakers as well.</param>
public static void StopAll(bool includeDisabled = false)
{
for (int i = 0; i < InstantiatedShakers.Count; i++)
{
if (!CanRunAllOn(InstantiatedShakers[i], includeDisabled))
continue;
InstantiatedShakers[i].Stop();
}
}
/// <summary>
/// Fades out all instances on the default CameraShaker. This operation only works on instances not already fading out.
/// </summary>
/// <param name="durationOverride">Overrides instance fade out duration with a new value.</param>
public static void FadeOut(float? durationOverride = null)
{
if (DefaultCameraShaker == null)
return;
DefaultCameraShaker.FadeOut(durationOverride);
}
/// <summary>
/// Fades out all instances on all CameraShakers. This operation only works on instances not already fading out.
/// </summary>
/// <param name="durationOverride">Overrides instance fade out duration with a new value.</param>
/// <param name="includeDisabled">True to issue call on disabled CameraShakers as well.</param>
public static void FadeOutAll(float? durationOverride = null, bool includeDisabled = false)
{
for (int i = 0; i < InstantiatedShakers.Count; i++)
{
if (!CanRunAllOn(InstantiatedShakers[i], includeDisabled))
continue;
InstantiatedShakers[i].FadeOut(durationOverride);
}
}
/// <summary>
/// Multiplies magnitude values for all instances on the defaut camera shaker.
/// </summary>
/// <param name="multiplier">Value to multiply by. 1f is standard multiplication, which in result would be default values.</param>
/// <param name="moveRate">How quickly per second to move towards new multiplier. Values 0f and lower are instant.</param>
/// <param name="rateUsesDistance">True to modify move rate based on distance from multiplier. False to move towards goal using movdRate unmodified.</param>
public void MultiplyMagnitude(float multiplier, float moveRate, bool rateUsesDistance)
{
if (DefaultCameraShaker == null)
return;
DefaultCameraShaker.MultiplyMagnitude(multiplier, moveRate, rateUsesDistance);
}
/// <summary>
/// Multiplies magnitude values for all instances on all camera shakers.
/// </summary>
/// <param name="multiplier">Value to multiply by. 1f is standard multiplication, which in result would be default values.</param>
/// <param name="moveRate">How quickly per second to move towards new multiplier. Values 0f and lower are instant.</param>
/// <param name="rateUsesDistance">True to modify move rate based on distance from multiplier. False to move towards goal using movdRate unmodified.</param>
/// <param name="includeDisabled">True to issue call on disabled CameraShakers as well.</param>
public void MultiplyMagnitudeAll(float multiplier, float moveRate, bool rateUsesDistance, bool includeDisabled = false)
{
for (int i = 0; i < InstantiatedShakers.Count; i++)
{
if (!CanRunAllOn(InstantiatedShakers[i], includeDisabled))
continue;
InstantiatedShakers[i].MultiplyMagnitude(multiplier, moveRate, rateUsesDistance);
}
}
/// <summary>
/// Multiplies roughness values for all instances on the default camera shaker.
/// </summary>
/// <param name="multiplier">Value to multiply by. 1f is standard multiplication, which in result would be default values.</param>
/// <param name="moveRate">How quickly per second to move towards new multiplier. Values 0f and lower are instant.</param>
/// <param name="rateUsesDistance">True to modify move rate based on distance from multiplier. False to move towards goal using movdRate unmodified.</param>
public void MultiplyRoughness(float multiplier, float moveRate, bool rateUsesDistance)
{
if (DefaultCameraShaker == null)
return;
DefaultCameraShaker.MultiplyRoughness(multiplier, moveRate, rateUsesDistance);
}
/// <summary>
/// Multiplies roughness values for all instances on all camera shakers.
/// </summary>
/// <param name="multiplier">Value to multiply by. 1f is standard multiplication, which in result would be default values.</param>
/// <param name="moveRate">How quickly per second to move towards new multiplier. Values 0f and lower are instant.</param>
/// <param name="rateUsesDistance">True to modify move rate based on distance from multiplier. False to move towards goal using movdRate unmodified.</param>
/// <param name="includeDisabled">True to issue call on disabled CameraShakers as well.</param>
public void MultiplyRoughnessAll(float multiplier, float moveRate, bool rateUsesDistance, bool includeDisabled = false)
{
for (int i = 0; i < InstantiatedShakers.Count; i++)
{
if (!CanRunAllOn(InstantiatedShakers[i], includeDisabled))
continue;
InstantiatedShakers[i].MultiplyRoughness(multiplier, moveRate, rateUsesDistance);
}
}
#endregion
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: ada9c62fbc6a3314aba805f35565b3ff
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 162991
packageName: Smooth Camera Shaker
packageVersion: 2.12
assetPath: Assets/FirstGearGames/SmoothCameraShaker/Scripts/CameraShakerHandler.cs
uploadId: 376379

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a8fedbc4b7152bb4c92b8eec3039a8b4
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,54 @@
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
namespace FirstGearGames.SmoothCameraShaker.EditorDesign
{
[CustomEditor(typeof(CameraShaker))]
public class CameraShakerEditor : UnityEditor.Editor
{
private MonoScript _script;
private SerializedProperty _shakeTechnique;
private SerializedProperty _makeDefaultOnEnable;
private SerializedProperty _limitMagnitude;
private SerializedProperty _positionalMagnitudeLimit;
private SerializedProperty _rotationalMagnitudeLimit;
private void OnEnable()
{
_script = MonoScript.FromMonoBehaviour((CameraShaker)target);
_shakeTechnique = serializedObject.FindProperty("_shakeTechnique");
_makeDefaultOnEnable = serializedObject.FindProperty("_makeDefaultOnEnable");
_limitMagnitude = serializedObject.FindProperty("_limitMagnitude");
_positionalMagnitudeLimit = serializedObject.FindProperty("_positionalMagnitudeLimit");
_rotationalMagnitudeLimit = serializedObject.FindProperty("_rotationalMagnitudeLimit");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
EditorGUI.BeginDisabledGroup(true);
_script = EditorGUILayout.ObjectField("Script:", _script, typeof(MonoScript), false) as MonoScript;
EditorGUI.EndDisabledGroup();
EditorGUILayout.PropertyField(_shakeTechnique, new GUIContent("Shake Technique", "Sets the shake technique to use. Changing this value while shakes are occurring may create unwanted results."));
EditorGUILayout.PropertyField(_makeDefaultOnEnable, new GUIContent("Make Default On Enable", "True for this CameraShaker to be set as the default shaker when enabled."));
//Limit magnitude.
EditorGUILayout.PropertyField(_limitMagnitude, new GUIContent("Limit Magnitude", "True to limit how much magnitude can be applied to this CameraShaker."));
if (_limitMagnitude.boolValue == true)
{
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(_positionalMagnitudeLimit, new GUIContent("Positional Magnitude Limit", "How much positional magnitude to limit this CameraShaker to."));
EditorGUILayout.PropertyField(_rotationalMagnitudeLimit, new GUIContent("Rotational Magnitude Limit", "How much rotational magnitude to limit this CameraShaker to."));
EditorGUI.indentLevel--;
}
//EditorGUILayout.Space();
serializedObject.ApplyModifiedProperties();
}
}
}
#endif

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 39673e360e66d1a439ff2d7b3bc8cdce
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 162991
packageName: Smooth Camera Shaker
packageVersion: 2.12
assetPath: Assets/FirstGearGames/SmoothCameraShaker/Scripts/Editor/CameraShakerEditor.cs
uploadId: 376379

View File

@@ -0,0 +1,54 @@
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
namespace FirstGearGames.SmoothCameraShaker.EditorDesign
{
[CustomEditor(typeof(ObjectShaker))]
public class ObjectShakerEditor : UnityEditor.Editor
{
private MonoScript _script;
private SerializedProperty _removeFromManagerOnDisable;
private SerializedProperty _limitMagnitude;
private SerializedProperty _positionalMagnitudeLimit;
private SerializedProperty _rotationalMagnitudeLimit;
private SerializedProperty _shakeOnEnable;
private void OnEnable()
{
_script = MonoScript.FromMonoBehaviour((ObjectShaker)target);
_removeFromManagerOnDisable = serializedObject.FindProperty("_removeFromManagerOnDisable");
_limitMagnitude = serializedObject.FindProperty("_limitMagnitude");
_positionalMagnitudeLimit = serializedObject.FindProperty("_positionalMagnitudeLimit");
_rotationalMagnitudeLimit = serializedObject.FindProperty("_rotationalMagnitudeLimit");
_shakeOnEnable = serializedObject.FindProperty("_shakeOnEnable");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
EditorGUI.BeginDisabledGroup(true);
_script = EditorGUILayout.ObjectField("Script:", _script, typeof(MonoScript), false) as MonoScript;
EditorGUI.EndDisabledGroup();
EditorGUILayout.PropertyField(_removeFromManagerOnDisable, new GUIContent("Remove From Manager On Disable", "True to remove this shakers reference from it's handler when disabled. Useful if you have a lot of these shakers in your scene, but objects are not always enabled."));
//Limit magnitude.
EditorGUILayout.PropertyField(_limitMagnitude, new GUIContent("Limit Magnitude", "True to limit how much magnitude can be applied to this CameraShaker."));
if (_limitMagnitude.boolValue == true)
{
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(_positionalMagnitudeLimit, new GUIContent("Positional Magnitude Limit", "How much positional magnitude to limit this CameraShaker to."));
EditorGUILayout.PropertyField(_rotationalMagnitudeLimit, new GUIContent("Rotational Magnitude Limit", "How much rotational magnitude to limit this CameraShaker to."));
EditorGUI.indentLevel--;
}
EditorGUILayout.Space();
EditorGUILayout.PropertyField(_shakeOnEnable, new GUIContent("Shake On Enable", "ShakeData to run when enabled. Leave empty to not use this feature."));
serializedObject.ApplyModifiedProperties();
}
}
}
#endif

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 24aa2069ec449a44ebb549753ac1a40b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 162991
packageName: Smooth Camera Shaker
packageVersion: 2.12
assetPath: Assets/FirstGearGames/SmoothCameraShaker/Scripts/Editor/ObjectShakerEditor.cs
uploadId: 376379

View File

@@ -0,0 +1,79 @@
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
namespace FirstGearGames.SmoothCameraShaker.EditorDesign
{
[CustomEditor(typeof(ShakableCanvas))]
public class ShakableCanvasEditor : UnityEditor.Editor
{
private MonoScript _script;
private SerializedProperty _shakerType;
private SerializedProperty _useDefaultCameraShaker;
private SerializedProperty _cameraShaker;
private SerializedProperty _encapsulateChildren;
private SerializedProperty _monitorEncapsulation;
private SerializedProperty _positionalMultiplier;
private SerializedProperty _rotationalMultiplier;
private SerializedProperty _randomizeDirections;
private void OnEnable()
{
_script = MonoScript.FromMonoBehaviour((ShakableCanvas)target);
//ShakableBase.
_shakerType = serializedObject.FindProperty("_shakerType");
//ShakableCanvas.
_positionalMultiplier = serializedObject.FindProperty("_positionalMultiplier");
_rotationalMultiplier = serializedObject.FindProperty("_rotationalMultiplier");
_useDefaultCameraShaker = serializedObject.FindProperty("_useDefaultCameraShaker");
_cameraShaker = serializedObject.FindProperty("_cameraShaker");
_encapsulateChildren = serializedObject.FindProperty("_encapsulateChildren");
_monitorEncapsulation = serializedObject.FindProperty("_monitorEncapsulation");
_randomizeDirections = serializedObject.FindProperty("_randomizeDirections");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
EditorGUI.BeginDisabledGroup(true);
_script = EditorGUILayout.ObjectField("Script:", _script, typeof(MonoScript), false) as MonoScript;
EditorGUI.EndDisabledGroup();
//Only allow changing when not in play mode. This will be done for all scripts once their editors are made.
EditorGUI.BeginDisabledGroup(Application.isPlaying);
EditorGUILayout.PropertyField(_shakerType, new GUIContent("Shaker Type", "Shaker type to use. CameraShaker will subscribe to your current or otherwise configured CameraShaker. ObjectShaker will subscribe to the first ObjectShaker found on or in parented objects."));
EditorGUI.EndDisabledGroup();
//If using CameraShaker type.
if ((ShakableBase.ShakerTypes)_shakerType.intValue == ShakableBase.ShakerTypes.CameraShaker)
{
EditorGUILayout.PropertyField(_useDefaultCameraShaker, new GUIContent("Use Default CameraShaker", "True to shake when the default camera shaker does. False to specify a camera shaker to monitor."));
if (_useDefaultCameraShaker.boolValue == false)
{
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(_cameraShaker, new GUIContent("Camera Shaker", "Camera shaker to monitor."));
EditorGUI.indentLevel--;
}
}
EditorGUILayout.PropertyField(_encapsulateChildren, new GUIContent("Encapsulate Children", "True to create a parent object and attach children to it. The parent object will be shaken instead of each individual canvas child. If your direct children move at all this value must be true. Setting value as false may incur extra cost as well."));
if (_encapsulateChildren.boolValue == true)
{
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(_monitorEncapsulation, new GUIContent("Monitor Encapsulation", "True to watch for additional children to encapsulate. This may be false if you do not add direct children to this canvas at runtime."));
EditorGUI.indentLevel--;
}
EditorGUILayout.Space();
EditorGUILayout.PropertyField(_positionalMultiplier, new GUIContent("Positional Multiplier", "Positional shakes are multiplied by this value. Lower values will result in a lower positional magnitude."));
EditorGUILayout.PropertyField(_rotationalMultiplier, new GUIContent("Rotational Multiplier", "Rotational shakes are multiplied by this value. Lower values will result in a lower rotational magnitude."));
EditorGUILayout.Space();
EditorGUILayout.PropertyField(_randomizeDirections, new GUIContent("Randomize Directions", "True to randomly change influence direction when shaking starts."));
serializedObject.ApplyModifiedProperties();
}
}
}
#endif

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: e9dbe6ce96c96db4891c82856e589da3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 162991
packageName: Smooth Camera Shaker
packageVersion: 2.12
assetPath: Assets/FirstGearGames/SmoothCameraShaker/Scripts/Editor/ShakableCanvasEditor.cs
uploadId: 376379

View File

@@ -0,0 +1,73 @@
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
namespace FirstGearGames.SmoothCameraShaker.EditorDesign
{
[CustomEditor(typeof(ShakableRigidbody2D))]
public class ShakableRigidbody2DEditor : UnityEditor.Editor
{
private MonoScript _script;
private SerializedProperty _shakerType;
private SerializedProperty _positionalMultiplier;
private SerializedProperty _rotationalMultiplier;
private SerializedProperty _requireInView;
private SerializedProperty _includeChildren;
private SerializedProperty _ignoreSelf;
private SerializedProperty _includeInactive;
private SerializedProperty _localizeShake;
private SerializedProperty _randomizeDirections;
private void OnEnable()
{
_script = MonoScript.FromMonoBehaviour((ShakableRigidbody2D)target);
//ShakableBase.
_shakerType = serializedObject.FindProperty("_shakerType");
//ShakableRigidbody2D
_positionalMultiplier = serializedObject.FindProperty("_positionalMultiplier");
_rotationalMultiplier = serializedObject.FindProperty("_rotationalMultiplier");
_requireInView = serializedObject.FindProperty("_requireInView");
_includeChildren = serializedObject.FindProperty("_includeChildren");
_ignoreSelf = serializedObject.FindProperty("_ignoreSelf");
_includeInactive = serializedObject.FindProperty("_includeInactive");
_localizeShake = serializedObject.FindProperty("_localizeShake");
_randomizeDirections = serializedObject.FindProperty("_randomizeDirections");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
EditorGUI.BeginDisabledGroup(true);
_script = EditorGUILayout.ObjectField("Script:", _script, typeof(MonoScript), false) as MonoScript;
EditorGUI.EndDisabledGroup();
//Only allow changing when not in play mode. This will be done for all scripts once their editors are made.
EditorGUI.BeginDisabledGroup(Application.isPlaying);
EditorGUILayout.PropertyField(_shakerType, new GUIContent("Shaker Type", "Shaker type to use. CameraShaker will subscribe to your current or otherwise configured CameraShaker. ObjectShaker will subscribe to the first ObjectShaker found on or in parented objects."));
EditorGUI.EndDisabledGroup();
EditorGUILayout.Space();
EditorGUILayout.PropertyField(_positionalMultiplier, new GUIContent("Positional Multiplier", "Positional shakes are multiplied by this value. Lower values will result in a lower positional magnitude."));
EditorGUILayout.PropertyField(_rotationalMultiplier, new GUIContent("Rotational Multiplier", "Rotational shakes are multiplied by this value. Lower values will result in a lower rotational magnitude."));
EditorGUILayout.Space();
EditorGUILayout.PropertyField(_requireInView, new GUIContent("Require In View", "Only shake when in view of a camera."));
EditorGUILayout.PropertyField(_includeChildren, new GUIContent("Include Children", "True to find transforms in children too. This allows you to use one ShakableTransform on the parent if all children transforms should shake as well."));
if (_includeChildren.boolValue == true)
{
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(_ignoreSelf, new GUIContent("Ignore Self", "True to ignore the transform this component resides, and only shake children."));
EditorGUILayout.PropertyField(_includeInactive, new GUIContent("Include Inactive", "True to also find inactive children."));
EditorGUI.indentLevel--;
}
//EditorGUILayout.Space();
EditorGUILayout.PropertyField(_localizeShake, new GUIContent("Localize Shake", "True to convert forces to local space before applying."));
EditorGUILayout.PropertyField(_randomizeDirections, new GUIContent("Randomize Directions", "True to randomly change influence direction when shaking starts."));
serializedObject.ApplyModifiedProperties();
}
}
}
#endif

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 3ae79d1bef841b042bf9b598d3f3a25e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 162991
packageName: Smooth Camera Shaker
packageVersion: 2.12
assetPath: Assets/FirstGearGames/SmoothCameraShaker/Scripts/Editor/ShakableRigidbody2DEditor.cs
uploadId: 376379

View File

@@ -0,0 +1,73 @@
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
namespace FirstGearGames.SmoothCameraShaker.EditorDesign
{
[CustomEditor(typeof(ShakableRigidbody))]
public class ShakableRigidbodyEditor : UnityEditor.Editor
{
private MonoScript _script;
private SerializedProperty _shakerType;
private SerializedProperty _positionalMultiplier;
private SerializedProperty _rotationalMultiplier;
private SerializedProperty _requireInView;
private SerializedProperty _includeChildren;
private SerializedProperty _ignoreSelf;
private SerializedProperty _includeInactive;
private SerializedProperty _localizeShake;
private SerializedProperty _randomizeDirections;
private void OnEnable()
{
_script = MonoScript.FromMonoBehaviour((ShakableRigidbody)target);
//ShakableBase.
_shakerType = serializedObject.FindProperty("_shakerType");
//ShakableRigidbody
_positionalMultiplier = serializedObject.FindProperty("_positionalMultiplier");
_rotationalMultiplier = serializedObject.FindProperty("_rotationalMultiplier");
_requireInView = serializedObject.FindProperty("_requireInView");
_includeChildren = serializedObject.FindProperty("_includeChildren");
_ignoreSelf = serializedObject.FindProperty("_ignoreSelf");
_includeInactive = serializedObject.FindProperty("_includeInactive");
_localizeShake = serializedObject.FindProperty("_localizeShake");
_randomizeDirections = serializedObject.FindProperty("_randomizeDirections");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
EditorGUI.BeginDisabledGroup(true);
_script = EditorGUILayout.ObjectField("Script:", _script, typeof(MonoScript), false) as MonoScript;
EditorGUI.EndDisabledGroup();
//Only allow changing when not in play mode. This will be done for all scripts once their editors are made.
EditorGUI.BeginDisabledGroup(Application.isPlaying);
EditorGUILayout.PropertyField(_shakerType, new GUIContent("Shaker Type", "Shaker type to use. CameraShaker will subscribe to your current or otherwise configured CameraShaker. ObjectShaker will subscribe to the first ObjectShaker found on or in parented objects."));
EditorGUI.EndDisabledGroup();
EditorGUILayout.Space();
EditorGUILayout.PropertyField(_positionalMultiplier, new GUIContent("Positional Multiplier", "Positional shakes are multiplied by this value. Lower values will result in a lower positional magnitude."));
EditorGUILayout.PropertyField(_rotationalMultiplier, new GUIContent("Rotational Multiplier", "Rotational shakes are multiplied by this value. Lower values will result in a lower rotational magnitude."));
EditorGUILayout.Space();
EditorGUILayout.PropertyField(_requireInView, new GUIContent("Require In View", "Only shake when in view of a camera."));
EditorGUILayout.PropertyField(_includeChildren, new GUIContent("Include Children", "True to find transforms in children too. This allows you to use one ShakableTransform on the parent if all children transforms should shake as well."));
if (_includeChildren.boolValue == true)
{
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(_ignoreSelf, new GUIContent("Ignore Self", "True to ignore the transform this component resides, and only shake children."));
EditorGUILayout.PropertyField(_includeInactive, new GUIContent("Include Inactive", "True to also find inactive children."));
EditorGUI.indentLevel--;
}
//EditorGUILayout.Space();
EditorGUILayout.PropertyField(_localizeShake, new GUIContent("Localize Shake", "True to convert influences to local space before applying."));
EditorGUILayout.PropertyField(_randomizeDirections, new GUIContent("Randomize Directions", "True to randomly change influence direction when shaking starts."));
serializedObject.ApplyModifiedProperties();
}
}
}
#endif

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 32abf3630024ea945b2e0b74588ea34e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 162991
packageName: Smooth Camera Shaker
packageVersion: 2.12
assetPath: Assets/FirstGearGames/SmoothCameraShaker/Scripts/Editor/ShakableRigidbodyEditor.cs
uploadId: 376379

View File

@@ -0,0 +1,73 @@
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
namespace FirstGearGames.SmoothCameraShaker.EditorDesign
{
[CustomEditor(typeof(ShakableTransform2D))]
public class ShakableTransform2DEditor : UnityEditor.Editor
{
private MonoScript _script;
private SerializedProperty _shakerType;
private SerializedProperty _positionalMultiplier;
private SerializedProperty _rotationalMultiplier;
private SerializedProperty _requireInView;
private SerializedProperty _includeChildren;
private SerializedProperty _ignoreSelf;
private SerializedProperty _includeInactive;
private SerializedProperty _localizeShake;
private SerializedProperty _randomizeDirections;
private void OnEnable()
{
_script = MonoScript.FromMonoBehaviour((ShakableTransform2D)target);
//ShakableBase.
_shakerType = serializedObject.FindProperty("_shakerType");
//ShakableTransform2D
_positionalMultiplier = serializedObject.FindProperty("_positionalMultiplier");
_rotationalMultiplier = serializedObject.FindProperty("_rotationalMultiplier");
_requireInView = serializedObject.FindProperty("_requireInView");
_includeChildren = serializedObject.FindProperty("_includeChildren");
_ignoreSelf = serializedObject.FindProperty("_ignoreSelf");
_includeInactive = serializedObject.FindProperty("_includeInactive");
_localizeShake = serializedObject.FindProperty("_localizeShake");
_randomizeDirections = serializedObject.FindProperty("_randomizeDirections");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
EditorGUI.BeginDisabledGroup(true);
_script = EditorGUILayout.ObjectField("Script:", _script, typeof(MonoScript), false) as MonoScript;
EditorGUI.EndDisabledGroup();
//Only allow changing when not in play mode. This will be done for all scripts once their editors are made.
EditorGUI.BeginDisabledGroup(Application.isPlaying);
EditorGUILayout.PropertyField(_shakerType, new GUIContent("Shaker Type", "Shaker type to use. CameraShaker will subscribe to your current or otherwise configured CameraShaker. ObjectShaker will subscribe to the first ObjectShaker found on or in parented objects."));
EditorGUI.EndDisabledGroup();
EditorGUILayout.Space();
EditorGUILayout.PropertyField(_positionalMultiplier, new GUIContent("Positional Multiplier", "Positional shakes are multiplied by this value. Lower values will result in a lower positional magnitude."));
EditorGUILayout.PropertyField(_rotationalMultiplier, new GUIContent("Rotational Multiplier", "Rotational shakes are multiplied by this value. Lower values will result in a lower rotational magnitude."));
EditorGUILayout.Space();
EditorGUILayout.PropertyField(_requireInView, new GUIContent("Require In View", "Only shake when in view of a camera."));
EditorGUILayout.PropertyField(_includeChildren, new GUIContent("Include Children", "True to find transforms in children too. This allows you to use one ShakableTransform on the parent if all children transforms should shake as well."));
if (_includeChildren.boolValue == true)
{
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(_ignoreSelf, new GUIContent("Ignore Self", "True to ignore the transform this component resides, and only shake children."));
EditorGUILayout.PropertyField(_includeInactive, new GUIContent("Include Inactive", "True to also find inactive children."));
EditorGUI.indentLevel--;
}
//EditorGUILayout.Space();
EditorGUILayout.PropertyField(_localizeShake, new GUIContent("Localize Shake", "True to convert forces to local space before applying."));
EditorGUILayout.PropertyField(_randomizeDirections, new GUIContent("Randomize Directions", "True to randomly change influence direction when shaking starts."));
serializedObject.ApplyModifiedProperties();
}
}
}
#endif

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: b54ff1928c90bd44f94ab377385a3ddc
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 162991
packageName: Smooth Camera Shaker
packageVersion: 2.12
assetPath: Assets/FirstGearGames/SmoothCameraShaker/Scripts/Editor/ShakableTransform2DEditor.cs
uploadId: 376379

View File

@@ -0,0 +1,73 @@
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
namespace FirstGearGames.SmoothCameraShaker.EditorDesign
{
[CustomEditor(typeof(ShakableTransform))]
public class ShakableTransformEditor : UnityEditor.Editor
{
private MonoScript _script;
private SerializedProperty _shakerType;
private SerializedProperty _positionalMultiplier;
private SerializedProperty _rotationalMultiplier;
private SerializedProperty _requireInView;
private SerializedProperty _includeChildren;
private SerializedProperty _ignoreSelf;
private SerializedProperty _includeInactive;
private SerializedProperty _localizeShake;
private SerializedProperty _randomizeDirections;
private void OnEnable()
{
_script = MonoScript.FromMonoBehaviour((ShakableTransform)target);
//ShakableBase.
_shakerType = serializedObject.FindProperty("_shakerType");
//ShakableTransform
_positionalMultiplier = serializedObject.FindProperty("_positionalMultiplier");
_rotationalMultiplier = serializedObject.FindProperty("_rotationalMultiplier");
_requireInView = serializedObject.FindProperty("_requireInView");
_includeChildren = serializedObject.FindProperty("_includeChildren");
_ignoreSelf = serializedObject.FindProperty("_ignoreSelf");
_includeInactive = serializedObject.FindProperty("_includeInactive");
_localizeShake = serializedObject.FindProperty("_localizeShake");
_randomizeDirections = serializedObject.FindProperty("_randomizeDirections");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
EditorGUI.BeginDisabledGroup(true);
_script = EditorGUILayout.ObjectField("Script:", _script, typeof(MonoScript), false) as MonoScript;
EditorGUI.EndDisabledGroup();
//Only allow changing when not in play mode. This will be done for all scripts once their editors are made.
EditorGUI.BeginDisabledGroup(Application.isPlaying);
EditorGUILayout.PropertyField(_shakerType, new GUIContent("Shaker Type", "Shaker type to use. CameraShaker will subscribe to your current or otherwise configured CameraShaker. ObjectShaker will subscribe to the first ObjectShaker found on or in parented objects."));
EditorGUI.EndDisabledGroup();
EditorGUILayout.Space();
EditorGUILayout.PropertyField(_positionalMultiplier, new GUIContent("Positional Multiplier", "Positional shakes are multiplied by this value. Lower values will result in a lower positional magnitude."));
EditorGUILayout.PropertyField(_rotationalMultiplier, new GUIContent("Rotational Multiplier", "Rotational shakes are multiplied by this value. Lower values will result in a lower rotational magnitude."));
EditorGUILayout.Space();
EditorGUILayout.PropertyField(_requireInView, new GUIContent("Require In View", "Only shake when in view of a camera."));
EditorGUILayout.PropertyField(_includeChildren, new GUIContent("Include Children", "True to find transforms in children too. This allows you to use one ShakableTransform on the parent if all children transforms should shake as well."));
if (_includeChildren.boolValue == true)
{
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(_ignoreSelf, new GUIContent("Ignore Self", "True to ignore the transform this component resides, and only shake children."));
EditorGUILayout.PropertyField(_includeInactive, new GUIContent("Include Inactive", "True to also find inactive children."));
EditorGUI.indentLevel--;
}
//EditorGUILayout.Space();
EditorGUILayout.PropertyField(_localizeShake, new GUIContent("Localize Shake", "True to convert influences to local space before applying."));
EditorGUILayout.PropertyField(_randomizeDirections, new GUIContent("Randomize Directions", "True to randomly change influence direction when shaking starts."));
serializedObject.ApplyModifiedProperties();
}
}
}
#endif

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 091096d784b4dc744819aa6ce788716b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 162991
packageName: Smooth Camera Shaker
packageVersion: 2.12
assetPath: Assets/FirstGearGames/SmoothCameraShaker/Scripts/Editor/ShakableTransformEditor.cs
uploadId: 376379

View File

@@ -0,0 +1,142 @@
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
namespace FirstGearGames.SmoothCameraShaker.EditorDesign
{
[CustomEditor(typeof(ShakeData))]
public class ShakeDataEditor : UnityEditor.Editor
{
private MonoScript _script;
private SerializedProperty _scaledTime;
private SerializedProperty _shakeCameras;
private SerializedProperty _shakeCanvases;
private SerializedProperty _shakeObjects;
private SerializedProperty _magnitude;
private SerializedProperty _magnitudeNoise;
private SerializedProperty _magnitudeCurve;
private SerializedProperty _roughness;
private SerializedProperty _roughnessNoise;
private SerializedProperty _roughnessCurve;
private SerializedProperty _totalDuration;
private SerializedProperty _unlimitedDuration;
private SerializedProperty _fadeInDuration;
private SerializedProperty _fadeOutDuration;
private SerializedProperty _positionalInfluence;
private SerializedProperty _positionalInverts;
private SerializedProperty _rotationalInfluence;
private SerializedProperty _rotationalInverts;
private SerializedProperty _randomSeed;
private void OnEnable()
{
_script = MonoScript.FromScriptableObject((ShakeData)target);
//Shakables.
_shakeCameras = serializedObject.FindProperty("_shakeCameras");
_shakeCanvases = serializedObject.FindProperty("_shakeCanvases");
_shakeObjects = serializedObject.FindProperty("_shakeObjects");
//Timing.
_scaledTime = serializedObject.FindProperty("_scaledTime");
_unlimitedDuration = serializedObject.FindProperty("_unlimitedDuration");
_totalDuration = serializedObject.FindProperty("_totalDuration");
_fadeInDuration = serializedObject.FindProperty("_fadeInDuration");
_fadeOutDuration = serializedObject.FindProperty("_fadeOutDuration");
//Force.
_magnitude = serializedObject.FindProperty("_magnitude");
_magnitudeNoise = serializedObject.FindProperty("_magnitudeNoise");
_magnitudeCurve = serializedObject.FindProperty("_magnitudeCurve");
_roughness = serializedObject.FindProperty("_roughness");
_roughnessNoise = serializedObject.FindProperty("_roughnessNoise");
_roughnessCurve = serializedObject.FindProperty("_roughnessCurve");
//Influence.
_positionalInfluence = serializedObject.FindProperty("_positionalInfluence");
_positionalInverts = serializedObject.FindProperty("_positionalInverts");
_rotationalInfluence = serializedObject.FindProperty("_rotationalInfluence");
_rotationalInverts = serializedObject.FindProperty("_rotationalInverts");
//Seed.
_randomSeed = serializedObject.FindProperty("_randomSeed");
}
public override void OnInspectorGUI()
{
ShakeData data = (ShakeData)target;
serializedObject.Update();
EditorGUI.BeginChangeCheck();
EditorGUI.BeginDisabledGroup(true);
_script = EditorGUILayout.ObjectField("Script:", _script, typeof(MonoScript), false) as MonoScript;
EditorGUI.EndDisabledGroup();
//Scaled time and unlimited duraiton.
EditorGUILayout.PropertyField(_scaledTime, new GUIContent("Scaled Time", "True to use scaled time, false to use unscaled."));
EditorGUILayout.Space();
//Affected shakables.
EditorGUILayout.LabelField("Shakables To Affect");
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(_shakeCameras, new GUIContent("Cameras", "True to shake cameras."));
EditorGUILayout.PropertyField(_shakeCanvases, new GUIContent("Canvases", "True to shake canvases. Canvases must have a ShakableCanvas component attached."));
EditorGUILayout.PropertyField(_shakeObjects, new GUIContent("Objects", "True to shake objects such as rigidbodies. Rigidbodies must have a ShakableRigidbody or ShakableRigidbody2D component attached."));
EditorGUI.indentLevel--;
EditorGUILayout.Space();
EditorGUILayout.PropertyField(_unlimitedDuration, new GUIContent("Unlimited Duration", "True to shake until stopped."));
//Total duration.
if (_unlimitedDuration.boolValue == false)
{
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(_totalDuration, new GUIContent("Total Duration", "How long the shake will last. If duration is less than fade out and fade in time combined then duration is adjusted to the total of those values."));
EditorGUI.indentLevel--;
}
//Fade in/out.
EditorGUILayout.PropertyField(_fadeInDuration, new GUIContent("Fade In Duration", "How long after the start of the shake until it reaches full magnitude. Used to ease into shakes. Works independently from curves. This value is not in addition to TotalDuration."));
EditorGUILayout.PropertyField(_fadeOutDuration, new GUIContent("Fade Out Duration", "How long at the end of the shake to ease out of shake. Works independently from curves. This value is not in addition to TotalDuration."));
EditorGUILayout.Space();
//Magnitude
EditorGUILayout.PropertyField(_magnitude, new GUIContent("Magnitude", "A multiplier to apply towards configured settings."));
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(_magnitudeNoise, new GUIContent("Magnitude Noise", "Larger noise values will result in more drastic ever-changing magnitude levels during the shake."));
EditorGUILayout.PropertyField(_magnitudeCurve, new GUIContent("Magnitude Curve", "Percentage curve applied to magnitude over the shake duration."));
EditorGUI.indentLevel--;
EditorGUILayout.Space();
//Roughness.
EditorGUILayout.PropertyField(_roughness, new GUIContent("Roughness", "How quickly to transition between shake offsets. Higher values will result in more violent shakes."));
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(_roughnessNoise, new GUIContent("Roughness Noise", "Larger noise values will result in more drastic ever-changing roughness levels during the shake."));
EditorGUILayout.PropertyField(_roughnessCurve, new GUIContent("Roughness Curve", "Percentage curve applied to roughness over the shake duration."));
EditorGUI.indentLevel--;
EditorGUILayout.Space();
//Influence.
EditorGUILayout.PropertyField(_positionalInfluence, new GUIContent("Positional Influence", "Values in either sign which the shake positioning will occur."));
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(_positionalInverts, new GUIContent("Invertible Axes", "Positional axes which may be randomly inverted when this ShakeData is instanced."));
EditorGUI.indentLevel--;
EditorGUILayout.PropertyField(_rotationalInfluence, new GUIContent("Rotational Influence", "Values in either sign which the shake rotation will occur."));
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(_rotationalInverts, new GUIContent("Invertible Axes", "Rotational axes which may be randomly inverted when this ShakeData is instanced."));
EditorGUI.indentLevel--;
EditorGUILayout.Space();
//RandomSeed.
EditorGUILayout.PropertyField(_randomSeed, new GUIContent("Random Seed", "While checked a new starting position and direction is used with every shake; shakes are more randomized. If unchecked shakes are guaranteed to start at the same position, and move the same direction with every shake; configured curves and noise are still applied."));
if (EditorGUI.EndChangeCheck())
{
data.PositionalInverts = (InvertibleAxes)_positionalInverts.intValue;
data.RotationalInverts = (InvertibleAxes)_rotationalInverts.intValue;
}
serializedObject.ApplyModifiedProperties();
}
}
}
#endif

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: b04fbf2ddfef6e4499d88a46aa9e29f7
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 162991
packageName: Smooth Camera Shaker
packageVersion: 2.12
assetPath: Assets/FirstGearGames/SmoothCameraShaker/Scripts/Editor/ShakeDataEditor.cs
uploadId: 376379

View File

@@ -0,0 +1,73 @@
using UnityEngine;
namespace FirstGearGames.SmoothCameraShaker
{
public class ShakeUpdate
{
public ShakeUpdate()
{
Camera = new ShakeValues();
Canvases = new ShakeValues();
Objects = new ShakeValues();
}
public ShakeUpdate(ShakeValues camera, ShakeValues canvases, ShakeValues objects)
{
Camera = camera;
Canvases = canvases;
Objects = objects;
}
/// <summary>
/// ShakeValues for the camera.
/// </summary>
public readonly ShakeValues Camera;
/// <summary>
/// ShakeValues for canvases.
/// </summary>
public readonly ShakeValues Canvases;
/// <summary>
/// ShakeValues for rigidbodies.
/// </summary>
public readonly ShakeValues Objects;
}
public class ShakeValues
{
public ShakeValues()
{
Position = Vector3.zero;
Rotation = Vector3.zero;
}
public ShakeValues(Vector3 position, Vector3 rotation)
{
Position = position;
Rotation = rotation;
}
/// <summary>
/// Position value of the shake.
/// </summary>
public Vector3 Position;
/// <summary>
/// Rotation value of the shake.
/// </summary>
public Vector3 Rotation;
}
public struct CameraShakerChange
{
public CameraShakerChange(CameraShaker oldShaker, CameraShaker newShaker)
{
OldShaker = oldShaker;
NewShaker = newShaker;
}
/// <summary>
/// Old CameraShaker.
/// </summary>
public readonly CameraShaker OldShaker;
/// <summary>
/// New CameraShaker.
/// </summary>
public readonly CameraShaker NewShaker;
}
}

Some files were not shown because too many files have changed in this diff Show More