Author SHA1 Message Date
AsanoRema f41e14971a Added new stanok 2026-08-13 08:33:12 +03:00
AsanoRema badcd41077 ok 2026-08-13 08:25:15 +03:00
SueDoStefan f8b22af4bf add main-blockscene 2026-08-12 16:24:25 +03:00
AsanoRema 487e0d72ff Added UI to Furnance, fixed carry and drag obj and added fish 2026-08-12 12:04:54 +03:00
AsanoRema 73069d8242 Changed pipe config 2026-08-11 17:33:09 +03:00
AsanoRema 60cd55ab44 Squashed commit of the following:
commit 7912604faf
Author: AsanoRema <asanorema2036@gmail.com>
Date:   Tue Aug 11 17:22:28 2026 +0300

    update .gitignore

commit d71b90c8bd
Author: henjkey <henjkey@gmail.com>
Date:   Tue Aug 11 18:42:09 2026 +0500

    Edited

    Добавлен таймер, конфиг и публичный метод
    SpawnItems()
    CooldownRemaining - оставшееся время до спавна float
    CooldownSecondsRemaining - оставшееся время до спавна int

commit 5b888fba95
Author: AsanoRema <asanorema2036@gmail.com>
Date:   Tue Aug 11 10:30:09 2026 +0300

    Changed .gitignore

commit e3d5561fc8
Author: henjkey <henjkey@gmail.com>
Date:   Tue Aug 11 10:47:35 2026 +0500

    New

    Второй спавнер с нормальными настройками и обновленные префабы
2026-08-11 17:25:33 +03:00
AsanoRema b3079b959a Update .uvgblog.txt 2026-08-11 17:23:34 +03:00
AsanoRema 67e0bcfaaf Added Furnance and smelting 2026-08-11 17:12:34 +03:00
AsanoRema 2a30d4d8cf .gitignore 2026-08-11 10:49:15 +03:00
AsanoRema 68ef673342 Squashed commit of the following:
commit 5b888fba95
Author: AsanoRema <asanorema2036@gmail.com>
Date:   Tue Aug 11 10:30:09 2026 +0300

    Changed .gitignore

commit e3d5561fc8
Author: henjkey <henjkey@gmail.com>
Date:   Tue Aug 11 10:47:35 2026 +0500

    New

    Второй спавнер с нормальными настройками и обновленные префабы
2026-08-11 10:47:50 +03:00
AsanoRema 6f296f91c3 ok 2026-08-11 10:39:59 +03:00
AsanoRema f4c9326fb9 BakeLight 2026-08-11 10:19:29 +03:00
259 changed files with 186179 additions and 38591 deletions
+6
View File
@@ -0,0 +1,6 @@
{
"version": "1.0",
"components": [
"Microsoft.VisualStudio.Workload.ManagedGame"
]
}
+26 -3
View File
@@ -15,7 +15,11 @@ MonoBehaviour:
modifiedAssetPathList:
- Assets/Bakery/examples/content/sponza/sponza.FBX
- Assets/Rocks and Boulders 2/Rocks/Source/Models/Rock2.fbx
modifiedAssetPaddingHash: d6a958ff333fd3d9
- Assets/Rocks and Boulders 2/Rocks/Source/Models/Rock1A.fbx
- Assets/Rocks and Boulders 2/Rocks/Source/Models/Rock5A.fbx
- Assets/Rocks and Boulders 2/Rocks/Source/Models/Rock3.fbx
- Assets/Rocks and Boulders 2/Rocks/Source/Models/Rock4A.fbx
modifiedAssetPaddingHash: d6a958ff333fd3d9343fd3d9353fd3d93e3fd3d94adc894b
modifiedMeshList: []
modifiedMeshPaddingList:
modifiedAssets:
@@ -402,6 +406,22 @@ MonoBehaviour:
- Rock2E_LP:polySurface1
padding: 04000000
unwrapper: 00000000
- meshName:
- Rock1_LP:polySurface1
padding: 07000000
unwrapper: 00000000
- meshName:
- polySurface250
padding: 06000000
unwrapper: 00000000
- meshName:
- Rock3_LP_smooth:polySurface1
padding: 09000000
unwrapper: 00000000
- meshName:
- polySurface115
padding: 10000000
unwrapper: 00000000
assetList:
- Assets/Bakery/examples/content/sponza/bush.FBX
- Assets/Bakery/examples/content/floor_lamp.FBX
@@ -409,7 +429,10 @@ MonoBehaviour:
- Assets/Objects/Boxes and pallets/Res/Boxes.fbx
- Assets/Objects/Boxes and pallets/Res/Pallet.fbx
- Assets/Rocks and Boulders 2/Rocks/Source/Models/box.fbx
uvOverlapAssetList: 00000000ffffffff01010000010100000101000000000000
- Assets/Bitgem/StylisedWater/URP/Meshes/example-scene-01.fbx
- Assets/Fill.obj
- Assets/CONTENT/ART/tripo_convert_afbded3b-3351-4484-9604-f5a846a051d2.fbx
uvOverlapAssetList: 00000000ffffffff01010000010100000101000000000000000000000000000000000000
xatlasWarningShown: 0
foundCompatibleSetup: 1
gpuName_2: NVIDIA GeForce RTX 5080
@@ -511,5 +534,5 @@ MonoBehaviour:
renderSettingsRTPVExposure: 1
renderSettingsRemoveDuplicateLightmaps: 0
tagOverrides: []
modifiedMeshPaddingArray: 04000000
modifiedMeshPaddingArray: 10000000
modifiedMeshUnwrapperArray: 00000000
+5 -1
View File
@@ -15,4 +15,8 @@ MonoBehaviour:
modifiedAssetPathList:
- Assets/Bakery/examples/content/sponza/sponza.FBX
- Assets/Rocks and Boulders 2/Rocks/Source/Models/Rock2.fbx
modifiedAssetPaddingHash: d6a958ff333fd3d9
- Assets/Rocks and Boulders 2/Rocks/Source/Models/Rock1A.fbx
- Assets/Rocks and Boulders 2/Rocks/Source/Models/Rock5A.fbx
- Assets/Rocks and Boulders 2/Rocks/Source/Models/Rock3.fbx
- Assets/Rocks and Boulders 2/Rocks/Source/Models/Rock4A.fbx
modifiedAssetPaddingHash: d6a958ff333fd3d9343fd3d9353fd3d93e3fd3d94adc894b
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,130 @@
fileFormatVersion: 2
guid: ade59780048e71b4aa6efea78558a5ea
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: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
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: 0
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 6
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: 1024
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:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: afda85841890d5948bdf27e9b18b36eb
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
+222
View File
@@ -0,0 +1,222 @@
fileFormatVersion: 2
guid: fa03336b0a46f304483077f85309749c
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: 2
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:
- serializedVersion: 2
name: Group 3_0
rect:
serializedVersion: 2
x: 18
y: 13
width: 62
height: 96
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: d6939717bcacd5a4e8b7ff689d4a9b0e
internalID: -120519267
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Group 3_1
rect:
serializedVersion: 2
x: 113
y: 5
width: 60
height: 113
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 1bcce9c987b749145bc2407a3982791a
internalID: -733085833
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Group 3_2
rect:
serializedVersion: 2
x: 185
y: 4
width: 77
height: 112
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: a95544add49c3a5429158f0e6552a4fa
internalID: 1344260059
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Group 3_3
rect:
serializedVersion: 2
x: 273
y: 4
width: 66
height: 111
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 60b06cd03a7f92c4697dcc15858b1b90
internalID: 1722157387
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
Group 3_0: -120519267
Group 3_1: -733085833
Group 3_2: 1344260059
Group 3_3: 1722157387
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
+130
View File
@@ -0,0 +1,130 @@
fileFormatVersion: 2
guid: 926590dcd0bce8e4698fd51aa91b4a74
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.
+130
View File
@@ -0,0 +1,130 @@
fileFormatVersion: 2
guid: fba7f80db8855ce4cac9f8d14c3a995c
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: 2
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: 10, y: 10, z: 10, w: 10}
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: 1
textureFormat: 4
textureCompression: 2
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: 1537655665
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
+130
View File
@@ -0,0 +1,130 @@
fileFormatVersion: 2
guid: bc012667b957a98468907faa7f183227
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: 2
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: 10, y: 10, z: 10, w: 10}
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: 1
textureFormat: 4
textureCompression: 2
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: 1537655665
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
+130
View File
@@ -0,0 +1,130 @@
fileFormatVersion: 2
guid: 6dd4cb0e55ca3454e81b5886619750e6
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:
@@ -0,0 +1,130 @@
fileFormatVersion: 2
guid: 11a7500f3885deb4f995353fb4d9ae76
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
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: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
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: 0
spriteTessellationDetail: -1
textureType: 0
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:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,107 @@
fileFormatVersion: 2
guid: 0418ebccddcd3204aa042b0fb09ea84e
ModelImporter:
serializedVersion: 22200
internalIDToNameTable: []
externalObjects: {}
materials:
materialImportMode: 2
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
nodeNameCollisionStrategy: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 1
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:
@@ -16,15 +16,21 @@ MonoBehaviour:
spawnCooldown: 10
localVelocityChange: {x: 0, y: -5, z: 0}
guaranteedItems:
- prefab: {fileID: 4504260422113134419, guid: 8790cd6f776403940ac664c5db12dab4, type: 3}
- prefab: {fileID: 8351909960905108939, guid: 6eee6df5dab550446b41008fa6fff89a, type: 3}
amount: 1
- prefab: {fileID: 6752047176419627530, guid: 8cc9c4d7d9e04d640bbd0616e7926670, type: 3}
amount: 1
randomItemCount: 7
randomItems:
- prefab: {fileID: 2474374521670934351, guid: c91d2337125ccaf45a0c57af9a6703c8, type: 3}
- prefab: {fileID: 4609832768900680681, guid: 5cf4d9e867c084847ba82c56bddc456b, type: 3}
weight: 1
- prefab: {fileID: 4728426142119307488, guid: 795e138cd804c7c42aa508895e6a61df, type: 3}
- prefab: {fileID: 9206541098482503491, guid: 29519dc5d2cfae441b261f3ca68f2290, type: 3}
weight: 1
- prefab: {fileID: 4504260422113134419, guid: 8790cd6f776403940ac664c5db12dab4, type: 3}
weight: 3
- prefab: {fileID: 8351909960905108939, guid: 6eee6df5dab550446b41008fa6fff89a, type: 3}
weight: 0.3
- prefab: {fileID: 6752047176419627530, guid: 8cc9c4d7d9e04d640bbd0616e7926670, type: 3}
weight: 0.3
- prefab: {fileID: 3256751277309890899, guid: 04a6d9d9e28782a4a9f8f71ce4438fc0, type: 3}
weight: 1.5
randomSpawnX: 1
randomSpawnZ: 1
+189 -62
View File
@@ -1,9 +1,11 @@
using System;
using System.Collections;
using System.Collections.Generic;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.InputSystem;
public class ItemPipe : MonoBehaviour
[RequireComponent(typeof(NetworkObject))]
public sealed class ItemPipe : NetworkBehaviour
{
[Header("Pipe")]
[SerializeField] private Transform spawnPoint;
@@ -11,84 +13,192 @@ public class ItemPipe : MonoBehaviour
[Header("Configuration")]
[SerializeField] private ItemPipeConfig config;
[Header("Temporary testing")]
[SerializeField] private bool spawnOnE = true;
private readonly NetworkVariable<bool> spawnSequenceActive = new(
false,
NetworkVariableReadPermission.Everyone,
NetworkVariableWritePermission.Server);
private bool isSpawning;
private readonly NetworkVariable<double> cooldownEndsAt = new(
0d,
NetworkVariableReadPermission.Everyone,
NetworkVariableWritePermission.Server);
private Coroutine spawnRoutine;
public float CooldownDuration => config != null ? config.SpawnCooldown : 0f;
public float CooldownRemaining { get; private set; }
public int CooldownSecondsRemaining => Mathf.CeilToInt(CooldownRemaining);
public bool CanSpawnItems => config != null && !isSpawning && CooldownRemaining <= 0f;
private void Update()
public float CooldownRemaining
{
if (CooldownRemaining > 0f)
CooldownRemaining = Mathf.Max(0f, CooldownRemaining - Time.deltaTime);
get
{
double now = NetworkManager != null
? NetworkManager.ServerTime.Time
: Time.timeAsDouble;
return Mathf.Max(0f, (float)(cooldownEndsAt.Value - now));
}
}
public int CooldownSecondsRemaining => Mathf.CeilToInt(CooldownRemaining);
public bool IsSpawning => spawnSequenceActive.Value;
public bool CanSpawnItems =>
IsSpawned &&
config != null &&
!spawnSequenceActive.Value &&
CooldownRemaining <= 0f;
if (!spawnOnE || Keyboard.current == null)
public event Action Changed;
private void Reset() => spawnPoint = transform;
public override void OnNetworkSpawn()
{
spawnSequenceActive.OnValueChanged += HandleSpawnStateChanged;
cooldownEndsAt.OnValueChanged += HandleCooldownChanged;
if (IsServer)
{
spawnSequenceActive.Value = false;
cooldownEndsAt.Value = 0d;
}
Changed?.Invoke();
}
public override void OnNetworkDespawn()
{
spawnSequenceActive.OnValueChanged -= HandleSpawnStateChanged;
cooldownEndsAt.OnValueChanged -= HandleCooldownChanged;
if (spawnRoutine != null)
{
StopCoroutine(spawnRoutine);
spawnRoutine = null;
}
}
/// <summary>
/// Starts one configured batch. Safe to connect directly to a Button or UnityEvent.
/// Calls made on a client are forwarded to the server.
/// </summary>
public void SpawnItems()
{
if (!IsSpawned)
return;
if (Keyboard.current.eKey.wasPressedThisFrame)
if (IsServer)
TryStartSpawnSequenceOnServer();
else
RequestSpawnItemsRpc();
}
/// <summary>
/// UnityEvent&lt;bool&gt; adapter for a lever. Only the true edge starts a batch;
/// returning a momentary lever to false does not cancel the current batch.
/// </summary>
public void SpawnItems(bool activated)
{
if (activated)
SpawnItems();
}
public void SpawnItems()
/// <summary>
/// Starts while true and cancels the current batch while false. Use this when
/// the lever position must control whether the pipe is allowed to keep running.
/// </summary>
public void SetSpawning(bool shouldSpawn)
{
if (!CanSpawnItems)
return;
StartCoroutine(SpawnSequence(config));
if (shouldSpawn)
SpawnItems();
else
StopSpawning();
}
private IEnumerator SpawnSequence(ItemPipeConfig activeConfig)
public void StopSpawning()
{
isSpawning = true;
if (!IsSpawned)
return;
if (IsServer)
StopSpawnSequenceOnServer(applyCooldown: true);
else
RequestStopSpawningRpc();
}
[Rpc(SendTo.Server, InvokePermission = RpcInvokePermission.Everyone)]
private void RequestSpawnItemsRpc() => TryStartSpawnSequenceOnServer();
[Rpc(SendTo.Server, InvokePermission = RpcInvokePermission.Everyone)]
private void RequestStopSpawningRpc() =>
StopSpawnSequenceOnServer(applyCooldown: true);
private bool TryStartSpawnSequenceOnServer()
{
if (!IsServer || !CanSpawnItems)
return false;
spawnSequenceActive.Value = true;
spawnRoutine = StartCoroutine(SpawnSequenceOnServer(config));
return true;
}
private IEnumerator SpawnSequenceOnServer(ItemPipeConfig activeConfig)
{
List<GameObject> spawnQueue = BuildSpawnQueue(activeConfig);
for (int i = 0; i < spawnQueue.Count; i++)
for (int index = 0; index < spawnQueue.Count; index++)
{
Spawn(spawnQueue[i], activeConfig);
SpawnNetworkItemOnServer(spawnQueue[index], activeConfig);
if (i < spawnQueue.Count - 1)
if (index < spawnQueue.Count - 1)
yield return new WaitForSeconds(activeConfig.SpawnInterval);
}
isSpawning = false;
CooldownRemaining = activeConfig.SpawnCooldown;
spawnRoutine = null;
cooldownEndsAt.Value =
NetworkManager.ServerTime.Time + activeConfig.SpawnCooldown;
spawnSequenceActive.Value = false;
}
private List<GameObject> BuildSpawnQueue(ItemPipeConfig activeConfig)
private void StopSpawnSequenceOnServer(bool applyCooldown)
{
if (!IsServer || !spawnSequenceActive.Value)
return;
if (spawnRoutine != null)
{
StopCoroutine(spawnRoutine);
spawnRoutine = null;
}
cooldownEndsAt.Value = applyCooldown && config != null
? NetworkManager.ServerTime.Time + config.SpawnCooldown
: 0d;
spawnSequenceActive.Value = false;
}
private static List<GameObject> BuildSpawnQueue(ItemPipeConfig activeConfig)
{
List<GameObject> queue = new();
// Добавляем предметы в точном количестве.
foreach (ItemPipeConfig.GuaranteedItem item in activeConfig.GuaranteedItems)
{
if (item.prefab == null)
continue;
for (int i = 0; i < item.amount; i++)
for (int index = 0; index < item.amount; index++)
queue.Add(item.prefab);
}
// Выбираем указанное количество случайных предметов.
for (int i = 0; i < activeConfig.RandomItemCount; i++)
for (int index = 0; index < activeConfig.RandomItemCount; index++)
{
GameObject selectedPrefab = ChooseWeightedRandom(activeConfig);
if (selectedPrefab != null)
queue.Add(selectedPrefab);
}
// Перемешиваем гарантированные и случайные предметы вместе.
Shuffle(queue);
return queue;
}
private GameObject ChooseWeightedRandom(ItemPipeConfig activeConfig)
private static GameObject ChooseWeightedRandom(ItemPipeConfig activeConfig)
{
float totalWeight = 0f;
@@ -101,64 +211,81 @@ public class ItemPipe : MonoBehaviour
if (totalWeight <= 0f)
return null;
float roll = Random.value * totalWeight;
float currentWeight = 0f;
float roll = UnityEngine.Random.value * totalWeight;
float accumulatedWeight = 0f;
foreach (ItemPipeConfig.RandomItem item in activeConfig.RandomItems)
{
if (item.prefab == null || item.weight <= 0f)
continue;
currentWeight += item.weight;
if (roll < currentWeight)
accumulatedWeight += item.weight;
if (roll < accumulatedWeight)
return item.prefab;
}
return null;
}
private void Shuffle(List<GameObject> queue)
private static void Shuffle(List<GameObject> queue)
{
for (int i = queue.Count - 1; i > 0; i--)
for (int index = queue.Count - 1; index > 0; index--)
{
int randomIndex = Random.Range(0, i + 1);
(queue[i], queue[randomIndex]) =
(queue[randomIndex], queue[i]);
int randomIndex = UnityEngine.Random.Range(0, index + 1);
(queue[index], queue[randomIndex]) =
(queue[randomIndex], queue[index]);
}
}
private void Spawn(GameObject prefab, ItemPipeConfig activeConfig)
private void SpawnNetworkItemOnServer(
GameObject prefab,
ItemPipeConfig activeConfig)
{
if (prefab == null || spawnPoint == null)
Transform activeSpawnPoint = spawnPoint != null ? spawnPoint : transform;
if (prefab == null)
return;
float offsetX = RandomRange(-activeConfig.RandomSpawnX, activeConfig.RandomSpawnX);
float offsetZ = RandomRange(-activeConfig.RandomSpawnZ, activeConfig.RandomSpawnZ);
float offsetX = UnityEngine.Random.Range(
-activeConfig.RandomSpawnX,
activeConfig.RandomSpawnX);
float offsetZ = UnityEngine.Random.Range(
-activeConfig.RandomSpawnZ,
activeConfig.RandomSpawnZ);
Vector3 spawnPosition =
spawnPoint.position +
spawnPoint.right * offsetX +
spawnPoint.forward * offsetZ;
activeSpawnPoint.position +
activeSpawnPoint.right * offsetX +
activeSpawnPoint.forward * offsetZ;
GameObject item = Instantiate(
prefab,
spawnPosition,
Random.rotationUniform
);
UnityEngine.Random.rotationUniform);
if (!item.TryGetComponent(out NetworkObject networkObject))
{
Debug.LogError(
$"{name} cannot spawn '{prefab.name}': the prefab has no NetworkObject.",
this);
Destroy(item);
return;
}
networkObject.Spawn();
if (item.TryGetComponent(out Rigidbody body))
{
Vector3 worldVelocityChange =
spawnPoint.TransformDirection(activeConfig.LocalVelocityChange);
activeSpawnPoint.TransformDirection(activeConfig.LocalVelocityChange);
body.AddForce(worldVelocityChange, ForceMode.VelocityChange);
}
}
private float RandomRange(float min, float max)
{
return Random.Range(min, max);
}
private void HandleSpawnStateChanged(bool _, bool __) => Changed?.Invoke();
private void HandleCooldownChanged(double _, double __) => Changed?.Invoke();
[ContextMenu("Debug/Spawn Batch (Network Play Mode)")]
private void DebugSpawnBatch() => SpawnItems();
[ContextMenu("Debug/Stop Batch (Network Play Mode)")]
private void DebugStopBatch() => StopSpawning();
}
@@ -9,6 +9,7 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 286431562970531899}
- component: {fileID: 641239187450981236}
- component: {fileID: 4539542294833622770}
m_Layer: 0
m_Name: SpawnJunk
@@ -32,6 +33,32 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &641239187450981236
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1621409648607792275}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
m_Name:
m_EditorClassIdentifier:
GlobalObjectIdHash: 0
InScenePlacedSourceGlobalObjectIdHash: 0
DeferredDespawnTick: 0
Ownership: 1
AlwaysReplicateAsRoot: 0
SynchronizeTransform: 0
m_InScenePlaced: 1
ActiveSceneSynchronization: 0
SceneMigrationSynchronization: 0
SpawnWithObservers: 1
DontDestroyWithOwner: 0
AutoObjectParentSync: 1
SyncOwnerTransformWhenParented: 1
AllowOwnerToParent: 0
--- !u!114 &4539542294833622770
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -46,4 +73,3 @@ MonoBehaviour:
m_EditorClassIdentifier:
spawnPoint: {fileID: 286431562970531899}
config: {fileID: 11400000, guid: 3883e23238f84f748e616770b66fa885, type: 2}
spawnOnE: 1
@@ -129,7 +129,7 @@ MonoBehaviour:
ScaleMaxInterpolationTime: 0.1
AuthorityMode: 1
TickSyncChildren: 0
UseUnreliableDeltas: 0
UseUnreliableDeltas: 1
SyncPositionX: 1
SyncPositionY: 1
SyncPositionZ: 1
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bdc0e5a6ddbfb0e4690d8e85084966fd
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5e549a32512e7674b82971da82d9cc61
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+18
View File
@@ -0,0 +1,18 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b0c79cebdb4201743be8612545ee180e, type: 3}
m_Name: Fish
m_EditorClassIdentifier:
itemId: fish
displayName: Fish
category: 0
worldPrefab: {fileID: 6820144355512337958, guid: 04a6d9d9e28782a4a9f8f71ce4438fc0, type: 3}
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f24c01151fded9c4cb5789c9a2a60268
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,17 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0928368adb57acb4987bb8fabda3a927, type: 3}
m_Name: ItemCatalog
m_EditorClassIdentifier:
items:
- {fileID: 11400000, guid: dc1f8087c2120614fa0ddcf92cde7f0d, type: 2}
- {fileID: 11400000, guid: 28dfa90ac37ac884d84b4f3754b33546, type: 2}
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c367b3d51191b6342ace822007172950
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,18 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b0c79cebdb4201743be8612545ee180e, type: 3}
m_Name: MetalPlate
m_EditorClassIdentifier:
itemId: metal_plate
displayName: Metal Plate
category: 1
worldPrefab: {fileID: 2888887303011377321, guid: 29519dc5d2cfae441b261f3ca68f2290, type: 3}
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5887c6bd676db1e4eb497e4ac14bc231
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,18 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b0c79cebdb4201743be8612545ee180e, type: 3}
m_Name: MetalRod
m_EditorClassIdentifier:
itemId: metal_rod
displayName: Metal Rod
category: 1
worldPrefab: {fileID: 6071798070859371582, guid: 5cf4d9e867c084847ba82c56bddc456b, type: 3}
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4f630a08648639c47b2975160e744ea3
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e6f108b1c62846e49aa2fcf8db4a93a2
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,18 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b0c79cebdb4201743be8612545ee180e, type: 3}
m_Name: Rocket-Back-Standart
m_EditorClassIdentifier:
itemId: rocket-back-standart
displayName: Rocket-Back-Standart
category: 2
worldPrefab: {fileID: 8591287727625443167, guid: be54182e751ec4b48b7db90e8598dce1, type: 3}
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b9e34349c67bdcf4f9ba3fc7655b9dac
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,18 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b0c79cebdb4201743be8612545ee180e, type: 3}
m_Name: Rocket-Base-Avia
m_EditorClassIdentifier:
itemId: rocket-base-avia
displayName: Rocket-Base-Avia
category: 2
worldPrefab: {fileID: 1256934312238460503, guid: 9712e2459410a6d43b55ea9d3847e29a, type: 3}
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e6fdb55d6695e0f4a919bcfbc6bf5ab9
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,18 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b0c79cebdb4201743be8612545ee180e, type: 3}
m_Name: Rocket-Base-Standart
m_EditorClassIdentifier:
itemId: rocket-base-standart
displayName: Rocket-Base-Standart
category: 2
worldPrefab: {fileID: 875723161486981202, guid: 6e681ca5358fff648ba85ae9e494fa77, type: 3}
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d3938024cd4dd964e804af02917917b2
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,18 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b0c79cebdb4201743be8612545ee180e, type: 3}
m_Name: Rocket-Cone-Standart
m_EditorClassIdentifier:
itemId: rocket-cone-standart
displayName: Rocket-Cone-Standart
category: 2
worldPrefab: {fileID: 7151289907260619783, guid: a31204f69b185d54ab9e12b0a3a1e98b, type: 3}
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 57d611457f6826f46972c33527ddda60
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,19 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0928368adb57acb4987bb8fabda3a927, type: 3}
m_Name: Rocket-Parts-Catalog
m_EditorClassIdentifier:
items:
- {fileID: 11400000, guid: b9e34349c67bdcf4f9ba3fc7655b9dac, type: 2}
- {fileID: 11400000, guid: e6fdb55d6695e0f4a919bcfbc6bf5ab9, type: 2}
- {fileID: 11400000, guid: d3938024cd4dd964e804af02917917b2, type: 2}
- {fileID: 11400000, guid: 57d611457f6826f46972c33527ddda60, type: 2}
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cf1fc024df6136d4d8ae38dae7ebf49b
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,18 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b0c79cebdb4201743be8612545ee180e, type: 3}
m_Name: Scrap-1
m_EditorClassIdentifier:
itemId: scrap-1
displayName: Scrap-1
category: 0
worldPrefab: {fileID: 9104915302393667013, guid: 6eee6df5dab550446b41008fa6fff89a, type: 3}
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: dc1f8087c2120614fa0ddcf92cde7f0d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,18 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b0c79cebdb4201743be8612545ee180e, type: 3}
m_Name: Scrap-2
m_EditorClassIdentifier:
itemId: scrap-2
displayName: Scrap-2
category: 0
worldPrefab: {fileID: 3823145821987330810, guid: 8cc9c4d7d9e04d640bbd0616e7926670, type: 3}
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 28dfa90ac37ac884d84b4f3754b33546
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 940520d122eb7f64e8532b91e666f61a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,20 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dbdeccc1573d9204f858f7c114972d91, type: 3}
m_Name: Recipe-RocketParts-Back-Standart
m_EditorClassIdentifier:
recipeId: back-standart
displayName: Back-Standart
outputItem: {fileID: 11400000, guid: b9e34349c67bdcf4f9ba3fc7655b9dac, type: 2}
outputAmount: 1
metalCost: 25
processingDuration: 3
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2a3f0860fa76fc542a7e66f3f8cbd7f3
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,20 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dbdeccc1573d9204f858f7c114972d91, type: 3}
m_Name: Recipe-RocketParts-Base-Avia
m_EditorClassIdentifier:
recipeId: base-avia
displayName: Base-Avia
outputItem: {fileID: 11400000, guid: e6fdb55d6695e0f4a919bcfbc6bf5ab9, type: 2}
outputAmount: 1
metalCost: 25
processingDuration: 3
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f82e77c5655f1cc49b1603531cbf9a63
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,20 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dbdeccc1573d9204f858f7c114972d91, type: 3}
m_Name: Recipe-RocketParts-Base-Standart
m_EditorClassIdentifier:
recipeId: base-standart
displayName: Base-Standart
outputItem: {fileID: 11400000, guid: d3938024cd4dd964e804af02917917b2, type: 2}
outputAmount: 1
metalCost: 25
processingDuration: 3
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 39cc97f8147c0f54fa1a75670620f59c
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,20 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dbdeccc1573d9204f858f7c114972d91, type: 3}
m_Name: Recipe-RocketParts-Cone-Standart
m_EditorClassIdentifier:
recipeId: cone-standart
displayName: Cone-Standart
outputItem: {fileID: 11400000, guid: 57d611457f6826f46972c33527ddda60, type: 2}
outputAmount: 1
metalCost: 25
processingDuration: 3
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f20a8ae0c8ade964c8aa4dfba8cdd8c3
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,20 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dbdeccc1573d9204f858f7c114972d91, type: 3}
m_Name: SmeltMetalPlate
m_EditorClassIdentifier:
recipeId: metal_plate
displayName: Metal Plate
outputItem: {fileID: 11400000, guid: 5887c6bd676db1e4eb497e4ac14bc231, type: 2}
outputAmount: 1
metalCost: 25
processingDuration: 3
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b40efcd301179814b9266e1dad6821a0
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,20 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dbdeccc1573d9204f858f7c114972d91, type: 3}
m_Name: SmeltMetalRod
m_EditorClassIdentifier:
recipeId: metal_rod
displayName: Metal Rod
outputItem: {fileID: 11400000, guid: 4f630a08648639c47b2975160e744ea3, type: 2}
outputAmount: 1
metalCost: 20
processingDuration: 2.5
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c01b9f700aec7c949a9d0b2e41d31515
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,303 @@
using System.Collections.Generic;
using System.IO;
using Unity.Netcode;
using Unity.Netcode.Components;
using UnityEditor;
using UnityEngine;
public static class FurnacePipelinePrototypeSetup
{
private const string ItemDataFolder = "Assets/CONTENT/Game/Data/Items";
private const string RecipeDataFolder = "Assets/CONTENT/Game/Data/Recipes";
private const string ItemPrefabFolder = "Assets/CONTENT/Game/Prefabs/Items/FurnacePrototype";
private const string WorkstationPrefabFolder = "Assets/CONTENT/Game/Prefabs/Workstations";
private const string NetworkPrefabsPath = "Assets/DefaultNetworkPrefabs.asset";
[MenuItem("FORT-BO/Prototypes/Create Furnace Pipeline")]
public static void CreatePrototype()
{
EnsureFolder(ItemDataFolder);
EnsureFolder(RecipeDataFolder);
EnsureFolder(ItemPrefabFolder);
EnsureFolder(WorkstationPrefabFolder);
ItemDefinition scrapDefinition = GetOrCreateAsset<ItemDefinition>(
$"{ItemDataFolder}/Scrap.asset");
ItemDefinition plateDefinition = GetOrCreateAsset<ItemDefinition>(
$"{ItemDataFolder}/MetalPlate.asset");
ItemDefinition rodDefinition = GetOrCreateAsset<ItemDefinition>(
$"{ItemDataFolder}/MetalRod.asset");
ConfigureItemDefinition(scrapDefinition, "scrap", "Scrap", ItemCategory.Scrap);
ConfigureItemDefinition(plateDefinition, "metal_plate", "Metal Plate", ItemCategory.SmeltedMaterial);
ConfigureItemDefinition(rodDefinition, "metal_rod", "Metal Rod", ItemCategory.SmeltedMaterial);
GameObject scrapPrefab = CreateNetworkItemPrefab(
$"{ItemPrefabFolder}/Scrap.prefab",
"Scrap",
scrapDefinition,
new Vector3(0.55f, 0.4f, 0.5f),
4f,
25f);
GameObject platePrefab = CreateNetworkItemPrefab(
$"{ItemPrefabFolder}/MetalPlate.prefab",
"MetalPlate",
plateDefinition,
new Vector3(0.7f, 0.12f, 0.45f),
2f,
0f);
GameObject rodPrefab = CreateNetworkItemPrefab(
$"{ItemPrefabFolder}/MetalRod.prefab",
"MetalRod",
rodDefinition,
new Vector3(0.18f, 0.18f, 0.9f),
1.5f,
0f);
SetObjectReference(scrapDefinition, "worldPrefab", scrapPrefab.GetComponent<NetworkObject>());
SetObjectReference(plateDefinition, "worldPrefab", platePrefab.GetComponent<NetworkObject>());
SetObjectReference(rodDefinition, "worldPrefab", rodPrefab.GetComponent<NetworkObject>());
ItemCatalog catalog = GetOrCreateAsset<ItemCatalog>($"{ItemDataFolder}/ItemCatalog.asset");
SetObjectReferenceList(catalog, "items", new Object[]
{
scrapDefinition,
plateDefinition,
rodDefinition
});
SmeltingRecipe plateRecipe = GetOrCreateAsset<SmeltingRecipe>(
$"{RecipeDataFolder}/SmeltMetalPlate.asset");
ConfigureRecipe(plateRecipe, "metal_plate", "Metal Plate", plateDefinition, 25f, 3f);
SmeltingRecipe rodRecipe = GetOrCreateAsset<SmeltingRecipe>(
$"{RecipeDataFolder}/SmeltMetalRod.asset");
ConfigureRecipe(rodRecipe, "metal_rod", "Metal Rod", rodDefinition, 20f, 2.5f);
GameObject furnacePrefab = CreateFurnacePrefab(
$"{WorkstationPrefabFolder}/PrototypeFurnace.prefab",
plateRecipe,
rodRecipe);
RegisterNetworkPrefabs(scrapPrefab, platePrefab, rodPrefab, furnacePrefab);
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
Selection.activeObject = furnacePrefab;
Debug.Log("Furnace pipeline prototype created. Place PrototypeFurnace.prefab in Factory.");
}
private static GameObject CreateNetworkItemPrefab(
string path,
string objectName,
ItemDefinition definition,
Vector3 scale,
float mass,
float metalAmount)
{
GameObject root = GameObject.CreatePrimitive(PrimitiveType.Cube);
root.name = objectName;
root.transform.localScale = scale;
root.AddComponent<NetworkObject>();
NetworkTransform networkTransform = root.AddComponent<NetworkTransform>();
networkTransform.AuthorityMode = NetworkTransform.AuthorityModes.Server;
networkTransform.UseUnreliableDeltas = true;
Rigidbody body = root.AddComponent<Rigidbody>();
body.mass = mass;
body.interpolation = RigidbodyInterpolation.Interpolate;
body.collisionDetectionMode = CollisionDetectionMode.Continuous;
NetworkRigidbody networkRigidbody = root.AddComponent<NetworkRigidbody>();
networkRigidbody.UseRigidBodyForMotion = true;
NetworkCarryableInteractable carryable = root.AddComponent<NetworkCarryableInteractable>();
SetVector3(carryable, "carryOffset", new Vector3(0f, -0.3f, 1.25f));
NetworkItem item = root.AddComponent<NetworkItem>();
SetObjectReference(item, "definition", definition);
if (metalAmount > 0f)
{
FurnaceMetalSource source = root.AddComponent<FurnaceMetalSource>();
SetFloat(source, "metalAmount", metalAmount);
}
GameObject prefab = PrefabUtility.SaveAsPrefabAsset(root, path);
Object.DestroyImmediate(root);
return prefab;
}
private static GameObject CreateFurnacePrefab(
string path,
SmeltingRecipe plateRecipe,
SmeltingRecipe rodRecipe)
{
GameObject root = new("PrototypeFurnace");
root.AddComponent<NetworkObject>();
FurnaceController controller = root.AddComponent<FurnaceController>();
GameObject body = GameObject.CreatePrimitive(PrimitiveType.Cube);
body.name = "Body";
body.transform.SetParent(root.transform, false);
body.transform.localPosition = new Vector3(0f, 0.8f, 0f);
body.transform.localScale = new Vector3(2.2f, 1.6f, 2f);
GameObject inputTrigger = new("ScrapReceiver");
inputTrigger.transform.SetParent(root.transform, false);
inputTrigger.transform.localPosition = new Vector3(0f, 1.7f, 0f);
BoxCollider trigger = inputTrigger.AddComponent<BoxCollider>();
trigger.isTrigger = true;
trigger.size = new Vector3(1.4f, 0.8f, 1.4f);
FurnaceScrapReceiver receiver = inputTrigger.AddComponent<FurnaceScrapReceiver>();
SetObjectReference(receiver, "furnace", controller);
GameObject outputPoint = new("OutputPoint");
outputPoint.transform.SetParent(root.transform, false);
outputPoint.transform.localPosition = new Vector3(0f, 0.45f, 1.5f);
GameObject emptyPoint = new("MetalEmptyPoint");
emptyPoint.transform.SetParent(root.transform, false);
emptyPoint.transform.localPosition = new Vector3(0f, 0.25f, 0f);
GameObject fullPoint = new("MetalFullPoint");
fullPoint.transform.SetParent(root.transform, false);
fullPoint.transform.localPosition = new Vector3(0f, 1.25f, 0f);
GameObject metalVisual = GameObject.CreatePrimitive(PrimitiveType.Cube);
metalVisual.name = "MoltenMetalVisual";
metalVisual.transform.SetParent(root.transform, false);
metalVisual.transform.localPosition = emptyPoint.transform.localPosition;
metalVisual.transform.localScale = new Vector3(1.3f, 0.12f, 1.1f);
Object.DestroyImmediate(metalVisual.GetComponent<Collider>());
FurnaceMetalLevelView levelView = metalVisual.AddComponent<FurnaceMetalLevelView>();
SetObjectReference(levelView, "furnace", controller);
SetObjectReference(levelView, "metalVisual", metalVisual.transform);
SetObjectReference(levelView, "emptyLocalPosition", emptyPoint.transform);
SetObjectReference(levelView, "fullLocalPosition", fullPoint.transform);
GameObject panelAnchor = new("WorldPanelAnchor");
panelAnchor.transform.SetParent(root.transform, false);
panelAnchor.transform.localPosition = new Vector3(1.2f, 1.2f, 1.05f);
SetString(controller, "workstationName", "Prototype Furnace");
SetFloat(controller, "metalCapacity", 100f);
SetObjectReference(controller, "outputPoint", outputPoint.transform);
SetObjectReferenceList(controller, "recipes", new Object[] { plateRecipe, rodRecipe });
GameObject prefab = PrefabUtility.SaveAsPrefabAsset(root, path);
Object.DestroyImmediate(root);
return prefab;
}
private static void ConfigureItemDefinition(
ItemDefinition definition,
string itemId,
string displayName,
ItemCategory category)
{
SetString(definition, "itemId", itemId);
SetString(definition, "displayName", displayName);
SetInt(definition, "category", (int)category);
}
private static void ConfigureRecipe(
SmeltingRecipe recipe,
string recipeId,
string displayName,
ItemDefinition output,
float metalCost,
float duration)
{
SetString(recipe, "recipeId", recipeId);
SetString(recipe, "displayName", displayName);
SetObjectReference(recipe, "outputItem", output);
SetInt(recipe, "outputAmount", 1);
SetFloat(recipe, "metalCost", metalCost);
SetFloat(recipe, "processingDuration", duration);
}
private static void RegisterNetworkPrefabs(params GameObject[] prefabs)
{
NetworkPrefabsList list = AssetDatabase.LoadAssetAtPath<NetworkPrefabsList>(NetworkPrefabsPath);
if (list == null)
throw new FileNotFoundException("Default network prefab list was not found.", NetworkPrefabsPath);
foreach (GameObject prefab in prefabs)
{
if (prefab != null && !list.Contains(prefab))
list.Add(new NetworkPrefab { Prefab = prefab });
}
EditorUtility.SetDirty(list);
}
private static T GetOrCreateAsset<T>(string path) where T : ScriptableObject
{
T asset = AssetDatabase.LoadAssetAtPath<T>(path);
if (asset != null)
return asset;
asset = ScriptableObject.CreateInstance<T>();
AssetDatabase.CreateAsset(asset, path);
return asset;
}
private static void EnsureFolder(string folderPath)
{
string current = "Assets";
string[] segments = folderPath.Split('/');
for (int index = 1; index < segments.Length; index++)
{
string next = $"{current}/{segments[index]}";
if (!AssetDatabase.IsValidFolder(next))
AssetDatabase.CreateFolder(current, segments[index]);
current = next;
}
}
private static void SetString(Object target, string propertyName, string value) =>
Edit(target, propertyName, property => property.stringValue = value);
private static void SetFloat(Object target, string propertyName, float value) =>
Edit(target, propertyName, property => property.floatValue = value);
private static void SetInt(Object target, string propertyName, int value) =>
Edit(target, propertyName, property => property.intValue = value);
private static void SetVector3(Object target, string propertyName, Vector3 value) =>
Edit(target, propertyName, property => property.vector3Value = value);
private static void SetObjectReference(Object target, string propertyName, Object value) =>
Edit(target, propertyName, property => property.objectReferenceValue = value);
private static void SetObjectReferenceList(
Object target,
string propertyName,
IReadOnlyList<Object> values)
{
SerializedObject serializedObject = new(target);
SerializedProperty property = serializedObject.FindProperty(propertyName);
property.arraySize = values.Count;
for (int index = 0; index < values.Count; index++)
property.GetArrayElementAtIndex(index).objectReferenceValue = values[index];
serializedObject.ApplyModifiedPropertiesWithoutUndo();
EditorUtility.SetDirty(target);
}
private static void Edit(
Object target,
string propertyName,
System.Action<SerializedProperty> edit)
{
SerializedObject serializedObject = new(target);
SerializedProperty property = serializedObject.FindProperty(propertyName);
if (property == null)
throw new System.MissingFieldException(target.GetType().Name, propertyName);
edit(property);
serializedObject.ApplyModifiedPropertiesWithoutUndo();
EditorUtility.SetDirty(target);
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 29fefdfbc459d664e91002f5a2faa978
@@ -251,7 +251,7 @@ MonoBehaviour:
maximumDragSpeed: 3
minimumSpeedMultiplier: 0.35
maximumDraggerDistance: 4.5
keepCurrentHeight: 0
movementMode: 0
physicsBody: {fileID: 3792544786712207931}
objectColliders:
- {fileID: 6739897567601242453}
@@ -251,7 +251,7 @@ MonoBehaviour:
maximumDragSpeed: 3
minimumSpeedMultiplier: 0.35
maximumDraggerDistance: 4.5
keepCurrentHeight: 0
movementMode: 0
physicsBody: {fileID: 3792544786712207931}
objectColliders:
- {fileID: 6739897567601242453}
@@ -488,10 +488,10 @@ MonoBehaviour:
maximumAngle: 55
movementSpeed: 140
maximumControlDistance: 4
returnToRestOnRelease: 0
restValue: 0
activationThreshold: 0.85
deactivationThreshold: 0.15
switchThreshold: 0.5
initialPositionIsMaximum: 0
returnToInitialPositionAfterSwitch: 0
automaticReturnDelay: 0.25
leverValueChanged:
m_PersistentCalls:
m_Calls: []
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 949ae76896b9d4d4bafc762cf43460f6
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,267 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &9206541098482503491
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 373046150160241831}
- component: {fileID: 2240617945687571729}
- component: {fileID: 1570541890800567413}
- component: {fileID: 1152236939985309631}
- component: {fileID: 2888887303011377321}
- component: {fileID: 6283895837328394518}
- component: {fileID: 7357262106795929317}
- component: {fileID: 3154893980981319754}
- component: {fileID: 8625021823589156851}
- component: {fileID: 6907445135272842745}
m_Layer: 0
m_Name: MetalPlate
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &373046150160241831
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9206541098482503491}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.7, y: 0.12, z: 0.45}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &2240617945687571729
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9206541098482503491}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!65 &1570541890800567413
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9206541098482503491}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &1152236939985309631
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9206541098482503491}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &2888887303011377321
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9206541098482503491}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
m_Name:
m_EditorClassIdentifier:
GlobalObjectIdHash: 3864715941
InScenePlacedSourceGlobalObjectIdHash: 0
DeferredDespawnTick: 0
Ownership: 1
AlwaysReplicateAsRoot: 0
SynchronizeTransform: 1
m_InScenePlaced: 1
ActiveSceneSynchronization: 0
SceneMigrationSynchronization: 0
SpawnWithObservers: 1
DontDestroyWithOwner: 0
AutoObjectParentSync: 1
SyncOwnerTransformWhenParented: 1
AllowOwnerToParent: 0
--- !u!114 &6283895837328394518
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9206541098482503491}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
NetworkTransformExpanded: 0
AutoOwnerAuthorityTickOffset: 1
PositionInterpolationType: 0
RotationInterpolationType: 0
ScaleInterpolationType: 0
PositionLerpSmoothing: 1
PositionMaxInterpolationTime: 0.1
RotationLerpSmoothing: 1
RotationMaxInterpolationTime: 0.1
ScaleLerpSmoothing: 1
ScaleMaxInterpolationTime: 0.1
AuthorityMode: 0
TickSyncChildren: 0
UseUnreliableDeltas: 1
SyncPositionX: 1
SyncPositionY: 1
SyncPositionZ: 1
SyncRotAngleX: 1
SyncRotAngleY: 1
SyncRotAngleZ: 1
SyncScaleX: 1
SyncScaleY: 1
SyncScaleZ: 1
PositionThreshold: 0.001
RotAngleThreshold: 0.01
ScaleThreshold: 0.01
UseQuaternionSynchronization: 0
UseQuaternionCompression: 0
UseHalfFloatPrecision: 0
InLocalSpace: 0
SwitchTransformSpaceWhenParented: 0
Interpolate: 1
SlerpPosition: 0
--- !u!54 &7357262106795929317
Rigidbody:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9206541098482503491}
serializedVersion: 4
m_Mass: 2
m_Drag: 0
m_AngularDrag: 0.05
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_ImplicitCom: 1
m_ImplicitTensor: 1
m_UseGravity: 1
m_IsKinematic: 0
m_Interpolate: 1
m_Constraints: 0
m_CollisionDetection: 1
--- !u!114 &3154893980981319754
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9206541098482503491}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f6c0be61502bb534f922ebb746851216, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
NetworkRigidbodyBaseExpanded: 0
UseRigidBodyForMotion: 1
AutoUpdateKinematicState: 1
AutoSetKinematicOnDespawn: 1
--- !u!114 &8625021823589156851
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9206541098482503491}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fad79bb3d620ffb46b527a9e361c28ae, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
interactionLabel: Interact
maximumInteractionDistance: 3
physicsBody: {fileID: 0}
objectColliders: []
collisionRefreshInterval: 0.25
throwForce: 6
throwUpwardForce: 0.5
carryOffset: {x: 0, y: -0.3, z: 1.25}
--- !u!114 &6907445135272842745
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9206541098482503491}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 323282b7a87fc4344bd33250e88822e8, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
definition: {fileID: 11400000, guid: 5887c6bd676db1e4eb497e4ac14bc231, type: 2}
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 29519dc5d2cfae441b261f3ca68f2290
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,267 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &4609832768900680681
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 487314608127039729}
- component: {fileID: 3106168562386324944}
- component: {fileID: 3569781445972802911}
- component: {fileID: 3857679988419566510}
- component: {fileID: 6071798070859371582}
- component: {fileID: 383076140020281943}
- component: {fileID: 8195051303485245904}
- component: {fileID: 5091558897397927903}
- component: {fileID: 7827715941785157600}
- component: {fileID: 1162555763859047266}
m_Layer: 0
m_Name: MetalRod
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &487314608127039729
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4609832768900680681}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.18, y: 0.18, z: 0.9}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &3106168562386324944
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4609832768900680681}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!65 &3569781445972802911
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4609832768900680681}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &3857679988419566510
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4609832768900680681}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &6071798070859371582
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4609832768900680681}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
m_Name:
m_EditorClassIdentifier:
GlobalObjectIdHash: 3864715941
InScenePlacedSourceGlobalObjectIdHash: 0
DeferredDespawnTick: 0
Ownership: 1
AlwaysReplicateAsRoot: 0
SynchronizeTransform: 1
m_InScenePlaced: 1
ActiveSceneSynchronization: 0
SceneMigrationSynchronization: 0
SpawnWithObservers: 1
DontDestroyWithOwner: 0
AutoObjectParentSync: 1
SyncOwnerTransformWhenParented: 1
AllowOwnerToParent: 0
--- !u!114 &383076140020281943
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4609832768900680681}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
NetworkTransformExpanded: 0
AutoOwnerAuthorityTickOffset: 1
PositionInterpolationType: 0
RotationInterpolationType: 0
ScaleInterpolationType: 0
PositionLerpSmoothing: 1
PositionMaxInterpolationTime: 0.1
RotationLerpSmoothing: 1
RotationMaxInterpolationTime: 0.1
ScaleLerpSmoothing: 1
ScaleMaxInterpolationTime: 0.1
AuthorityMode: 0
TickSyncChildren: 0
UseUnreliableDeltas: 1
SyncPositionX: 1
SyncPositionY: 1
SyncPositionZ: 1
SyncRotAngleX: 1
SyncRotAngleY: 1
SyncRotAngleZ: 1
SyncScaleX: 1
SyncScaleY: 1
SyncScaleZ: 1
PositionThreshold: 0.001
RotAngleThreshold: 0.01
ScaleThreshold: 0.01
UseQuaternionSynchronization: 0
UseQuaternionCompression: 0
UseHalfFloatPrecision: 0
InLocalSpace: 0
SwitchTransformSpaceWhenParented: 0
Interpolate: 1
SlerpPosition: 0
--- !u!54 &8195051303485245904
Rigidbody:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4609832768900680681}
serializedVersion: 4
m_Mass: 1.5
m_Drag: 0
m_AngularDrag: 0.05
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_ImplicitCom: 1
m_ImplicitTensor: 1
m_UseGravity: 1
m_IsKinematic: 0
m_Interpolate: 1
m_Constraints: 0
m_CollisionDetection: 1
--- !u!114 &5091558897397927903
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4609832768900680681}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f6c0be61502bb534f922ebb746851216, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
NetworkRigidbodyBaseExpanded: 0
UseRigidBodyForMotion: 1
AutoUpdateKinematicState: 1
AutoSetKinematicOnDespawn: 1
--- !u!114 &7827715941785157600
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4609832768900680681}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fad79bb3d620ffb46b527a9e361c28ae, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
interactionLabel: Interact
maximumInteractionDistance: 3
physicsBody: {fileID: 0}
objectColliders: []
collisionRefreshInterval: 0.25
throwForce: 6
throwUpwardForce: 0.5
carryOffset: {x: 0, y: -0.3, z: 1.25}
--- !u!114 &1162555763859047266
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4609832768900680681}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 323282b7a87fc4344bd33250e88822e8, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
definition: {fileID: 11400000, guid: 4f630a08648639c47b2975160e744ea3, type: 2}
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5cf4d9e867c084847ba82c56bddc456b
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,281 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2182525189444712253
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 480043602958892554}
- component: {fileID: 6778003009800737139}
- component: {fileID: 4070976183960967726}
- component: {fileID: 7688550467070204870}
- component: {fileID: 4847937828371134312}
- component: {fileID: 739157423183201639}
- component: {fileID: 6952725408238905275}
- component: {fileID: 7507489822569431272}
- component: {fileID: 1530920348677395089}
- component: {fileID: 4457586862197726001}
- component: {fileID: 2791467813053421235}
m_Layer: 0
m_Name: Scrap
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &480043602958892554
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2182525189444712253}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.55, y: 0.4, z: 0.5}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &6778003009800737139
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2182525189444712253}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!65 &4070976183960967726
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2182525189444712253}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &7688550467070204870
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2182525189444712253}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &4847937828371134312
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2182525189444712253}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
m_Name:
m_EditorClassIdentifier:
GlobalObjectIdHash: 3864715941
InScenePlacedSourceGlobalObjectIdHash: 0
DeferredDespawnTick: 0
Ownership: 1
AlwaysReplicateAsRoot: 0
SynchronizeTransform: 1
m_InScenePlaced: 1
ActiveSceneSynchronization: 0
SceneMigrationSynchronization: 0
SpawnWithObservers: 1
DontDestroyWithOwner: 0
AutoObjectParentSync: 1
SyncOwnerTransformWhenParented: 1
AllowOwnerToParent: 0
--- !u!114 &739157423183201639
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2182525189444712253}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
NetworkTransformExpanded: 0
AutoOwnerAuthorityTickOffset: 1
PositionInterpolationType: 0
RotationInterpolationType: 0
ScaleInterpolationType: 0
PositionLerpSmoothing: 1
PositionMaxInterpolationTime: 0.1
RotationLerpSmoothing: 1
RotationMaxInterpolationTime: 0.1
ScaleLerpSmoothing: 1
ScaleMaxInterpolationTime: 0.1
AuthorityMode: 0
TickSyncChildren: 0
UseUnreliableDeltas: 1
SyncPositionX: 1
SyncPositionY: 1
SyncPositionZ: 1
SyncRotAngleX: 1
SyncRotAngleY: 1
SyncRotAngleZ: 1
SyncScaleX: 1
SyncScaleY: 1
SyncScaleZ: 1
PositionThreshold: 0.001
RotAngleThreshold: 0.01
ScaleThreshold: 0.01
UseQuaternionSynchronization: 0
UseQuaternionCompression: 0
UseHalfFloatPrecision: 0
InLocalSpace: 0
SwitchTransformSpaceWhenParented: 0
Interpolate: 1
SlerpPosition: 0
--- !u!54 &6952725408238905275
Rigidbody:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2182525189444712253}
serializedVersion: 4
m_Mass: 4
m_Drag: 0
m_AngularDrag: 0.05
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_ImplicitCom: 1
m_ImplicitTensor: 1
m_UseGravity: 1
m_IsKinematic: 0
m_Interpolate: 1
m_Constraints: 0
m_CollisionDetection: 1
--- !u!114 &7507489822569431272
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2182525189444712253}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f6c0be61502bb534f922ebb746851216, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
NetworkRigidbodyBaseExpanded: 0
UseRigidBodyForMotion: 1
AutoUpdateKinematicState: 1
AutoSetKinematicOnDespawn: 1
--- !u!114 &1530920348677395089
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2182525189444712253}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fad79bb3d620ffb46b527a9e361c28ae, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
interactionLabel: Interact
maximumInteractionDistance: 3
physicsBody: {fileID: 0}
objectColliders: []
collisionRefreshInterval: 0.25
throwForce: 6
throwUpwardForce: 0.5
carryOffset: {x: 0, y: -0.3, z: 1.25}
--- !u!114 &4457586862197726001
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2182525189444712253}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 323282b7a87fc4344bd33250e88822e8, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
definition: {fileID: 11400000, guid: dc1f8087c2120614fa0ddcf92cde7f0d, type: 2}
--- !u!114 &2791467813053421235
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2182525189444712253}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9dd3ea21361871345b5a9d21839c6da1, type: 3}
m_Name:
m_EditorClassIdentifier:
metalAmount: 25
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 7f5a91b903d654342bfb77c0b9126aa3
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,313 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &66130177589869147
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8695794581474922756}
m_Layer: 0
m_Name: Root
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8695794581474922756
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 66130177589869147}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 8515152326948156129}
m_Father: {fileID: 1951246361950897413}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &3256751277309890899
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1951246361950897413}
- component: {fileID: 6820144355512337958}
- component: {fileID: 2440379881638716097}
- component: {fileID: 8391397903280292016}
- component: {fileID: 3976025863607763387}
- component: {fileID: 6297617078924149825}
- component: {fileID: 2499853092120418384}
- component: {fileID: 8607637414762509686}
m_Layer: 0
m_Name: Item-Fish
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1951246361950897413
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3256751277309890899}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -3.104253, y: 1.1569388, z: 8.275935}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 8695794581474922756}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &6820144355512337958
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3256751277309890899}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
m_Name:
m_EditorClassIdentifier:
GlobalObjectIdHash: 462441546
InScenePlacedSourceGlobalObjectIdHash: 3087726494
DeferredDespawnTick: 0
Ownership: 1
AlwaysReplicateAsRoot: 0
SynchronizeTransform: 1
m_InScenePlaced: 1
ActiveSceneSynchronization: 0
SceneMigrationSynchronization: 0
SpawnWithObservers: 1
DontDestroyWithOwner: 0
AutoObjectParentSync: 1
SyncOwnerTransformWhenParented: 1
AllowOwnerToParent: 0
--- !u!114 &2440379881638716097
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3256751277309890899}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 323282b7a87fc4344bd33250e88822e8, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
definition: {fileID: 11400000, guid: f24c01151fded9c4cb5789c9a2a60268, type: 2}
--- !u!54 &8391397903280292016
Rigidbody:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3256751277309890899}
serializedVersion: 4
m_Mass: 1
m_Drag: 0
m_AngularDrag: 0.05
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_ImplicitCom: 1
m_ImplicitTensor: 1
m_UseGravity: 1
m_IsKinematic: 0
m_Interpolate: 0
m_Constraints: 0
m_CollisionDetection: 0
--- !u!114 &3976025863607763387
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3256751277309890899}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
NetworkTransformExpanded: 0
AutoOwnerAuthorityTickOffset: 1
PositionInterpolationType: 0
RotationInterpolationType: 0
ScaleInterpolationType: 0
PositionLerpSmoothing: 1
PositionMaxInterpolationTime: 0.1
RotationLerpSmoothing: 1
RotationMaxInterpolationTime: 0.1
ScaleLerpSmoothing: 1
ScaleMaxInterpolationTime: 0.1
AuthorityMode: 0
TickSyncChildren: 0
UseUnreliableDeltas: 0
SyncPositionX: 1
SyncPositionY: 1
SyncPositionZ: 1
SyncRotAngleX: 1
SyncRotAngleY: 1
SyncRotAngleZ: 1
SyncScaleX: 1
SyncScaleY: 1
SyncScaleZ: 1
PositionThreshold: 0.001
RotAngleThreshold: 0.01
ScaleThreshold: 0.01
UseQuaternionSynchronization: 0
UseQuaternionCompression: 0
UseHalfFloatPrecision: 0
InLocalSpace: 0
SwitchTransformSpaceWhenParented: 0
Interpolate: 1
SlerpPosition: 0
--- !u!114 &6297617078924149825
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3256751277309890899}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f6c0be61502bb534f922ebb746851216, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
NetworkRigidbodyBaseExpanded: 0
UseRigidBodyForMotion: 0
AutoUpdateKinematicState: 1
AutoSetKinematicOnDespawn: 1
--- !u!114 &2499853092120418384
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3256751277309890899}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fad79bb3d620ffb46b527a9e361c28ae, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
interactionLabel: Interact
maximumInteractionDistance: 3
physicsBody: {fileID: 0}
objectColliders: []
collisionRefreshInterval: 0.25
positionSmoothTime: 0.12
maximumFollowSpeed: 12
maximumFollowDistance: 1.25
rotationFollowSpeed: 14
throwForce: 6
throwUpwardForce: 0.5
carryOffset: {x: 0, y: -0.3, z: 1.25}
--- !u!136 &8607637414762509686
CapsuleCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3256751277309890899}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 2
m_Radius: 0.2
m_Height: 1.12
m_Direction: 2
m_Center: {x: 0, y: 0.21, z: 0}
--- !u!1001 &6948469637693767008
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 8695794581474922756}
m_Modifications:
- target: {fileID: 1342889782683910774, guid: 4aa01f1d5c72d4e47a8c44e612a6b6fc, type: 3}
propertyPath: m_Name
value: Herring
objectReference: {fileID: 0}
- target: {fileID: 1604981034209185665, guid: 4aa01f1d5c72d4e47a8c44e612a6b6fc, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1604981034209185665, guid: 4aa01f1d5c72d4e47a8c44e612a6b6fc, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1604981034209185665, guid: 4aa01f1d5c72d4e47a8c44e612a6b6fc, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1604981034209185665, guid: 4aa01f1d5c72d4e47a8c44e612a6b6fc, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1604981034209185665, guid: 4aa01f1d5c72d4e47a8c44e612a6b6fc, type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 1604981034209185665, guid: 4aa01f1d5c72d4e47a8c44e612a6b6fc, type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 1604981034209185665, guid: 4aa01f1d5c72d4e47a8c44e612a6b6fc, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 1604981034209185665, guid: 4aa01f1d5c72d4e47a8c44e612a6b6fc, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1604981034209185665, guid: 4aa01f1d5c72d4e47a8c44e612a6b6fc, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1604981034209185665, guid: 4aa01f1d5c72d4e47a8c44e612a6b6fc, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 4aa01f1d5c72d4e47a8c44e612a6b6fc, type: 3}
--- !u!4 &8515152326948156129 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 1604981034209185665, guid: 4aa01f1d5c72d4e47a8c44e612a6b6fc, type: 3}
m_PrefabInstance: {fileID: 6948469637693767008}
m_PrefabAsset: {fileID: 0}
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 04a6d9d9e28782a4a9f8f71ce4438fc0
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: be54182e751ec4b48b7db90e8598dce1
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9712e2459410a6d43b55ea9d3847e29a
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6e681ca5358fff648ba85ae9e494fa77
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a31204f69b185d54ab9e12b0a3a1e98b
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6eee6df5dab550446b41008fa6fff89a
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,993 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &6752047176419627530
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5905569944959663220}
- component: {fileID: 1187608763751665767}
- component: {fileID: 2911805108514991796}
- component: {fileID: 6186154686701280285}
- component: {fileID: 2057801181638564846}
- component: {fileID: 4117464146160704158}
- component: {fileID: 3823145821987330810}
- component: {fileID: 2085170032403131954}
- component: {fileID: 303029953369430869}
- component: {fileID: 763204358960808204}
- component: {fileID: 204523454519789059}
- component: {fileID: 4600339537334545784}
- component: {fileID: 3964830971777414014}
m_Layer: 0
m_Name: Scrap-2
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &5905569944959663220
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6752047176419627530}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.8, y: 1.2, z: -2.8}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1187608763751665767
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6752047176419627530}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8233d90336aea43098adf6dbabd606a2, type: 3}
m_Name:
m_EditorClassIdentifier:
m_MeshFormatVersion: 2
m_Faces:
- m_Indexes: 030000000000000001000000020000000300000001000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 2100000, guid: c22777d6e868e4f2fb421913386b154e, type: 2}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: 0
m_TextureGroup: -1
- m_Indexes: 070000000400000005000000060000000700000005000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 2100000, guid: c22777d6e868e4f2fb421913386b154e, type: 2}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: 0
m_TextureGroup: 1
- m_Indexes: 0a0000000b00000008000000090000000a00000008000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 2100000, guid: c22777d6e868e4f2fb421913386b154e, type: 2}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: 0
m_TextureGroup: -1
- m_Indexes: 0d0000000e0000000f0000000c0000000d0000000f000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 2100000, guid: c22777d6e868e4f2fb421913386b154e, type: 2}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: 0
m_TextureGroup: -1
- m_Indexes: 130000001400000010000000110000001300000010000000130000001100000012000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 2100000, guid: c22777d6e868e4f2fb421913386b154e, type: 2}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: 0
m_TextureGroup: -1
- m_Indexes: 180000001900000015000000160000001800000015000000180000001600000017000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 2100000, guid: c22777d6e868e4f2fb421913386b154e, type: 2}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: 0
m_TextureGroup: -1
- m_Indexes: 1e0000001a0000001d0000001b0000001d0000001a0000001b0000001c0000001d000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 2100000, guid: c22777d6e868e4f2fb421913386b154e, type: 2}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: 0
m_TextureGroup: -1
- m_Indexes: 230000001f0000002200000020000000220000001f000000200000002100000022000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 2100000, guid: c22777d6e868e4f2fb421913386b154e, type: 2}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: 0
m_TextureGroup: -1
- m_Indexes: 240000002500000026000000250000002700000026000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 28000000290000002a000000290000002b0000002a000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 2c0000002d0000002e0000002d0000002f0000002e000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 300000003100000032000000310000003300000032000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 340000003500000036000000350000003700000036000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 38000000390000003a000000390000003b0000003a000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 3c0000003d0000003e0000003d0000003f0000003e000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 400000004100000042000000410000004300000042000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 450000004700000046000000450000004400000047000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 2100000, guid: c22777d6e868e4f2fb421913386b154e, type: 2}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: 0
m_TextureGroup: -1
- m_Indexes: 48000000490000004a000000490000004b0000004a000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 4c0000004d0000004e0000004d0000004f0000004e000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 500000005100000052000000510000005300000052000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
- m_Indexes: 540000005500000056000000550000005700000056000000
m_SmoothingGroup: 0
m_Uv:
m_UseWorldSpace: 0
m_FlipU: 0
m_FlipV: 0
m_SwapUV: 0
m_Fill: 1
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Rotation: 0
m_Anchor: 9
m_Material: {fileID: 0}
m_SubmeshIndex: 0
m_ManualUV: 0
elementGroup: -1
m_TextureGroup: -1
m_SharedVertices:
- m_Vertices: 00000000370000003a000000
- m_Vertices: 14000000170000003500000038000000
- m_Vertices: 010000003b00000042000000
- m_Vertices: 04000000130000003900000040000000
- m_Vertices: 020000003e00000043000000
- m_Vertices: 0700000025000000280000003c000000410000004d00000054000000
- m_Vertices: 0f0000004f00000056000000
- m_Vertices: 0b000000270000002a000000
- m_Vertices: 03000000360000003f000000
- m_Vertices: 0e0000004b0000004e000000
- m_Vertices: 18000000340000003d000000490000004c000000
- m_Vertices: 05000000120000001e000000
- m_Vertices: 060000001d0000002900000030000000
- m_Vertices: 080000002b00000032000000
- m_Vertices: 090000002e00000033000000
- m_Vertices: 1c000000230000002c00000031000000
- m_Vertices: 0a000000260000002f000000
- m_Vertices: 0c0000005200000057000000
- m_Vertices: 22000000240000002d0000005000000055000000
- m_Vertices: 0d0000004a00000053000000
- m_Vertices: 19000000210000004800000051000000
- m_Vertices: 100000001600000044000000
- m_Vertices: 110000001a00000045000000
- m_Vertices: 150000002000000047000000
- m_Vertices: 1b0000001f00000046000000
m_SharedTextures: []
m_Positions:
- {x: -0.17792217, y: 0.051240444, z: -0.17792225}
- {x: -0.17792217, y: 0.051240444, z: 0}
- {x: 0.000000014901161, y: 0.051240444, z: 0}
- {x: 0.000000014901161, y: 0.051240444, z: -0.17792225}
- {x: -0.17792214, y: -0.058224678, z: 0}
- {x: -0.17792214, y: -0.058224678, z: 0.17792225}
- {x: 0.000000014901161, y: -0.058224678, z: 0.17792225}
- {x: 0.000000014901161, y: -0.058224678, z: 0}
- {x: 0.000000014901161, y: -0.019928336, z: 0.17792225}
- {x: 0.17792217, y: -0.019928336, z: 0.17792225}
- {x: 0.17792217, y: -0.019928336, z: 0}
- {x: 0.000000014901161, y: -0.019928336, z: 0}
- {x: 0.17792217, y: 0.101614356, z: 0}
- {x: 0.17792217, y: 0.101614356, z: -0.17792225}
- {x: 0.000000014901161, y: 0.101614356, z: -0.17792225}
- {x: 0.000000014901161, y: 0.101614356, z: 0}
- {x: -0.17792214, y: -0.101614475, z: -0.17792225}
- {x: -0.17792214, y: -0.101614475, z: 0.17792225}
- {x: -0.17792214, y: -0.058224678, z: 0.17792225}
- {x: -0.17792214, y: -0.058224678, z: 0}
- {x: -0.17792214, y: -0.058224678, z: -0.17792225}
- {x: 0.17792217, y: -0.101614475, z: -0.17792225}
- {x: -0.17792214, y: -0.101614475, z: -0.17792225}
- {x: -0.17792214, y: -0.058224678, z: -0.17792225}
- {x: 0.000000014901161, y: -0.058224678, z: -0.17792225}
- {x: 0.17792217, y: -0.058224678, z: -0.17792225}
- {x: -0.17792214, y: -0.101614475, z: 0.17792225}
- {x: 0.17792217, y: -0.101614475, z: 0.17792225}
- {x: 0.17792217, y: -0.058224678, z: 0.17792225}
- {x: 0.000000014901161, y: -0.058224678, z: 0.17792225}
- {x: -0.17792214, y: -0.058224678, z: 0.17792225}
- {x: 0.17792217, y: -0.101614475, z: 0.17792225}
- {x: 0.17792217, y: -0.101614475, z: -0.17792225}
- {x: 0.17792217, y: -0.058224678, z: -0.17792225}
- {x: 0.17792217, y: -0.058224678, z: 0}
- {x: 0.17792217, y: -0.058224678, z: 0.17792225}
- {x: 0.17792217, y: -0.058224678, z: 0}
- {x: 0.000000014901161, y: -0.058224678, z: 0}
- {x: 0.17792217, y: -0.019928336, z: 0}
- {x: 0.000000014901161, y: -0.019928336, z: 0}
- {x: 0.000000014901161, y: -0.058224678, z: 0}
- {x: 0.000000014901161, y: -0.058224678, z: 0.17792225}
- {x: 0.000000014901161, y: -0.019928336, z: 0}
- {x: 0.000000014901161, y: -0.019928336, z: 0.17792225}
- {x: 0.17792217, y: -0.058224678, z: 0.17792225}
- {x: 0.17792217, y: -0.058224678, z: 0}
- {x: 0.17792217, y: -0.019928336, z: 0.17792225}
- {x: 0.17792217, y: -0.019928336, z: 0}
- {x: 0.000000014901161, y: -0.058224678, z: 0.17792225}
- {x: 0.17792217, y: -0.058224678, z: 0.17792225}
- {x: 0.000000014901161, y: -0.019928336, z: 0.17792225}
- {x: 0.17792217, y: -0.019928336, z: 0.17792225}
- {x: 0.000000014901161, y: -0.058224678, z: -0.17792225}
- {x: -0.17792214, y: -0.058224678, z: -0.17792225}
- {x: 0.000000014901161, y: 0.051240444, z: -0.17792225}
- {x: -0.17792217, y: 0.051240444, z: -0.17792225}
- {x: -0.17792214, y: -0.058224678, z: -0.17792225}
- {x: -0.17792214, y: -0.058224678, z: 0}
- {x: -0.17792217, y: 0.051240444, z: -0.17792225}
- {x: -0.17792217, y: 0.051240444, z: 0}
- {x: 0.000000014901161, y: -0.058224678, z: 0}
- {x: 0.000000014901161, y: -0.058224678, z: -0.17792225}
- {x: 0.000000014901161, y: 0.051240444, z: 0}
- {x: 0.000000014901161, y: 0.051240444, z: -0.17792225}
- {x: -0.17792214, y: -0.058224678, z: 0}
- {x: 0.000000014901161, y: -0.058224678, z: 0}
- {x: -0.17792217, y: 0.051240444, z: 0}
- {x: 0.000000014901161, y: 0.051240444, z: 0}
- {x: -0.17792214, y: -0.101614475, z: -0.17792225}
- {x: -0.17792214, y: -0.101614475, z: 0.17792225}
- {x: 0.17792217, y: -0.101614475, z: 0.17792225}
- {x: 0.17792217, y: -0.101614475, z: -0.17792225}
- {x: 0.17792217, y: -0.058224678, z: -0.17792225}
- {x: 0.000000014901161, y: -0.058224678, z: -0.17792225}
- {x: 0.17792217, y: 0.101614356, z: -0.17792225}
- {x: 0.000000014901161, y: 0.101614356, z: -0.17792225}
- {x: 0.000000014901161, y: -0.058224678, z: -0.17792225}
- {x: 0.000000014901161, y: -0.058224678, z: 0}
- {x: 0.000000014901161, y: 0.101614356, z: -0.17792225}
- {x: 0.000000014901161, y: 0.101614356, z: 0}
- {x: 0.17792217, y: -0.058224678, z: 0}
- {x: 0.17792217, y: -0.058224678, z: -0.17792225}
- {x: 0.17792217, y: 0.101614356, z: 0}
- {x: 0.17792217, y: 0.101614356, z: -0.17792225}
- {x: 0.000000014901161, y: -0.058224678, z: 0}
- {x: 0.17792217, y: -0.058224678, z: 0}
- {x: 0.000000014901161, y: 0.101614356, z: 0}
- {x: 0.17792217, y: 0.101614356, z: 0}
m_Textures0:
- {x: -0.17792217, y: -0.17792225}
- {x: -0.17792217, y: 0}
- {x: 0.000000014901161, y: 0}
- {x: 0.000000014901161, y: -0.17792225}
- {x: -0.17792214, y: 0}
- {x: -0.17792214, y: 0.17792225}
- {x: 0.000000014901161, y: 0.17792225}
- {x: 0.000000014901161, y: 0}
- {x: 0.000000014901161, y: 0.17792225}
- {x: 0.17792217, y: 0.17792225}
- {x: 0.17792217, y: 0}
- {x: 0.000000014901161, y: 0}
- {x: 0.17792217, y: 0}
- {x: 0.17792217, y: -0.17792225}
- {x: 0.000000014901161, y: -0.17792225}
- {x: 0.000000014901161, y: 0}
- {x: 0.17792225, y: -0.101614475}
- {x: -0.17792225, y: -0.101614475}
- {x: -0.17792225, y: -0.058224678}
- {x: -0, y: -0.058224678}
- {x: 0.17792225, y: -0.058224678}
- {x: 0.17792217, y: -0.101614475}
- {x: -0.17792214, y: -0.101614475}
- {x: -0.17792214, y: -0.058224678}
- {x: 0.000000014901161, y: -0.058224678}
- {x: 0.17792217, y: -0.058224678}
- {x: 0.17792214, y: -0.101614475}
- {x: -0.17792217, y: -0.101614475}
- {x: -0.17792217, y: -0.058224678}
- {x: -0.000000014901161, y: -0.058224678}
- {x: 0.17792214, y: -0.058224678}
- {x: 0.17792225, y: -0.101614475}
- {x: -0.17792225, y: -0.101614475}
- {x: -0.17792225, y: -0.058224678}
- {x: 0, y: -0.058224678}
- {x: 0.17792225, y: -0.058224678}
- {x: 0.17792217, y: -0.058224678}
- {x: 0.000000014901161, y: -0.058224678}
- {x: 0.17792217, y: -0.019928336}
- {x: 0.000000014901161, y: -0.019928336}
- {x: 0, y: -0.058224678}
- {x: -0.17792225, y: -0.058224678}
- {x: 0, y: -0.019928336}
- {x: -0.17792225, y: -0.019928336}
- {x: 0.17792225, y: -0.058224678}
- {x: 0, y: -0.058224678}
- {x: 0.17792225, y: -0.019928336}
- {x: 0, y: -0.019928336}
- {x: -0.000000014901161, y: -0.058224678}
- {x: -0.17792217, y: -0.058224678}
- {x: -0.000000014901161, y: -0.019928336}
- {x: -0.17792217, y: -0.019928336}
- {x: 0.000000014901161, y: -0.058224678}
- {x: -0.17792214, y: -0.058224678}
- {x: 0.000000014901161, y: 0.051240444}
- {x: -0.17792217, y: 0.051240444}
- {x: 0.17792225, y: -0.05822463}
- {x: 0, y: -0.05822463}
- {x: 0.17792225, y: 0.051240493}
- {x: 0, y: 0.051240493}
- {x: 0, y: -0.058224678}
- {x: -0.17792225, y: -0.058224678}
- {x: 0, y: 0.051240444}
- {x: -0.17792225, y: 0.051240444}
- {x: 0.17792214, y: -0.058224678}
- {x: -0.000000014901161, y: -0.058224678}
- {x: 0.17792217, y: 0.051240444}
- {x: -0.000000014901161, y: 0.051240444}
- {x: 0.17792214, y: -0.17792225}
- {x: 0.17792214, y: 0.17792225}
- {x: -0.17792217, y: 0.17792225}
- {x: -0.17792217, y: -0.17792225}
- {x: 0.17792217, y: -0.058224678}
- {x: 0.000000014901161, y: -0.058224678}
- {x: 0.17792217, y: 0.101614356}
- {x: 0.000000014901161, y: 0.101614356}
- {x: 0.17792225, y: -0.058224678}
- {x: 0, y: -0.058224678}
- {x: 0.17792225, y: 0.101614356}
- {x: 0, y: 0.101614356}
- {x: 0, y: -0.058224678}
- {x: -0.17792225, y: -0.058224678}
- {x: 0, y: 0.101614356}
- {x: -0.17792225, y: 0.101614356}
- {x: -0.000000014901161, y: -0.058224678}
- {x: -0.17792217, y: -0.058224678}
- {x: -0.000000014901161, y: 0.101614356}
- {x: -0.17792217, y: 0.101614356}
m_Textures2: []
m_Textures3: []
m_Tangents:
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 1, y: 0, z: 0, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: -1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: 0, y: 0, z: 1, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
- {x: -1, y: 0, z: 0, w: -1}
m_Colors: []
m_UnwrapParameters:
m_HardAngle: 88
m_PackMargin: 20
m_AngleError: 8
m_AreaError: 15
m_PreserveMeshAssetOnDestroy: 0
assetGuid:
m_Mesh: {fileID: 0}
m_VersionIndex: 1186
m_IsSelectable: 1
m_SelectedFaces:
m_SelectedEdges: []
m_SelectedVertices:
--- !u!114 &2911805108514991796
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6752047176419627530}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1ca002da428252441b92f28d83c8a65f, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Shape:
rid: 7027693638748209280
m_ShapeRotation: {x: 0, y: 0, z: 0, w: 1}
m_UnmodifiedMeshVersion: 21
m_Size: {x: 1, y: 0, z: 1}
m_LocalCenter: {x: 0, y: 0, z: 0}
references:
version: 2
RefIds:
- rid: 7027693638748209280
type: {class: Sprite, ns: UnityEngine.ProBuilder.Shapes, asm: Unity.ProBuilder}
data:
--- !u!23 &6186154686701280285
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6752047176419627530}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 6585a554c878c00438bbd4f81d212938, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 2
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &2057801181638564846
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6752047176419627530}
m_Mesh: {fileID: 0}
--- !u!64 &4117464146160704158
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6752047176419627530}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 5
m_Convex: 1
m_CookingOptions: 30
m_Mesh: {fileID: 0}
--- !u!114 &3823145821987330810
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6752047176419627530}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
m_Name:
m_EditorClassIdentifier:
GlobalObjectIdHash: 2433866013
InScenePlacedSourceGlobalObjectIdHash: 2433866013
DeferredDespawnTick: 0
Ownership: 1
AlwaysReplicateAsRoot: 0
SynchronizeTransform: 1
m_InScenePlaced: 0
ActiveSceneSynchronization: 0
SceneMigrationSynchronization: 0
SpawnWithObservers: 1
DontDestroyWithOwner: 0
AutoObjectParentSync: 1
SyncOwnerTransformWhenParented: 1
AllowOwnerToParent: 0
--- !u!114 &2085170032403131954
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6752047176419627530}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
NetworkTransformExpanded: 0
AutoOwnerAuthorityTickOffset: 1
PositionInterpolationType: 0
RotationInterpolationType: 0
ScaleInterpolationType: 0
PositionLerpSmoothing: 1
PositionMaxInterpolationTime: 0.1
RotationLerpSmoothing: 1
RotationMaxInterpolationTime: 0.1
ScaleLerpSmoothing: 1
ScaleMaxInterpolationTime: 0.1
AuthorityMode: 0
TickSyncChildren: 0
UseUnreliableDeltas: 0
SyncPositionX: 1
SyncPositionY: 1
SyncPositionZ: 1
SyncRotAngleX: 1
SyncRotAngleY: 1
SyncRotAngleZ: 1
SyncScaleX: 1
SyncScaleY: 1
SyncScaleZ: 1
PositionThreshold: 0.001
RotAngleThreshold: 0.01
ScaleThreshold: 0.01
UseQuaternionSynchronization: 0
UseQuaternionCompression: 0
UseHalfFloatPrecision: 0
InLocalSpace: 0
SwitchTransformSpaceWhenParented: 0
Interpolate: 1
SlerpPosition: 0
--- !u!114 &303029953369430869
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6752047176419627530}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fad79bb3d620ffb46b527a9e361c28ae, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
interactionLabel: Interact
maximumInteractionDistance: 3
physicsBody: {fileID: 763204358960808204}
objectColliders: []
collisionRefreshInterval: 0.25
positionSmoothTime: 0.12
maximumFollowSpeed: 12
maximumFollowDistance: 1.25
rotationFollowSpeed: 14
throwForce: 6
throwUpwardForce: 0.5
carryOffset: {x: 0, y: -0.3, z: 1.25}
--- !u!54 &763204358960808204
Rigidbody:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6752047176419627530}
serializedVersion: 4
m_Mass: 35
m_Drag: 0
m_AngularDrag: 0.05
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_ImplicitCom: 1
m_ImplicitTensor: 1
m_UseGravity: 1
m_IsKinematic: 0
m_Interpolate: 0
m_Constraints: 0
m_CollisionDetection: 0
--- !u!114 &204523454519789059
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6752047176419627530}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f6c0be61502bb534f922ebb746851216, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
NetworkRigidbodyBaseExpanded: 0
UseRigidBodyForMotion: 1
AutoUpdateKinematicState: 1
AutoSetKinematicOnDespawn: 1
--- !u!114 &4600339537334545784
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6752047176419627530}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 323282b7a87fc4344bd33250e88822e8, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
definition: {fileID: 11400000, guid: 28dfa90ac37ac884d84b4f3754b33546, type: 2}
--- !u!114 &3964830971777414014
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6752047176419627530}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9dd3ea21361871345b5a9d21839c6da1, type: 3}
m_Name:
m_EditorClassIdentifier:
metalAmount: 25
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 8cc9c4d7d9e04d640bbd0616e7926670
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0729853bea6ebee4fa828e015900836f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,491 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1329045462390593297
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3440049079948703452}
m_Layer: 0
m_Name: OutputPoint
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3440049079948703452
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1329045462390593297}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0.45, z: 1.5}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1858887632278238715}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &3006047789126627680
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1858887632278238715}
- component: {fileID: 8352192086953126879}
- component: {fileID: 9213789764659406484}
m_Layer: 0
m_Name: PrototypeFurnace
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1858887632278238715
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3006047789126627680}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2029505042144761538}
- {fileID: 2613004420124304525}
- {fileID: 3440049079948703452}
- {fileID: 4757451503622202597}
- {fileID: 7303050713835538076}
- {fileID: 8123456789012345678}
- {fileID: 8123456789012345679}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &8352192086953126879
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3006047789126627680}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
m_Name:
m_EditorClassIdentifier:
GlobalObjectIdHash: 3864715941
InScenePlacedSourceGlobalObjectIdHash: 0
DeferredDespawnTick: 0
Ownership: 1
AlwaysReplicateAsRoot: 0
SynchronizeTransform: 1
m_InScenePlaced: 1
ActiveSceneSynchronization: 0
SceneMigrationSynchronization: 0
SpawnWithObservers: 1
DontDestroyWithOwner: 0
AutoObjectParentSync: 1
SyncOwnerTransformWhenParented: 1
AllowOwnerToParent: 0
--- !u!114 &9213789764659406484
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3006047789126627680}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 41af49db79eeaf84ea8bc7c3dd75ae0f, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
workstationName: Prototype Furnace
metalCapacity: 100
outputPoint: {fileID: 3440049079948703452}
recipes:
- {fileID: 11400000, guid: b40efcd301179814b9266e1dad6821a0, type: 2}
- {fileID: 11400000, guid: c01b9f700aec7c949a9d0b2e41d31515, type: 2}
outputSpacing: 0.35
--- !u!1 &5866073999598946136
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2029505042144761538}
- component: {fileID: 5819807494397148051}
- component: {fileID: 1357381158899099494}
- component: {fileID: 1741101750847204452}
m_Layer: 0
m_Name: Body
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2029505042144761538
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5866073999598946136}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0.8, z: 0}
m_LocalScale: {x: 2.2, y: 1.6, z: 2}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1858887632278238715}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &5819807494397148051
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5866073999598946136}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!65 &1357381158899099494
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5866073999598946136}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &1741101750847204452
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5866073999598946136}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &6576840628880540716
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7303050713835538076}
m_Layer: 0
m_Name: WorldPanelAnchor
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7303050713835538076
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6576840628880540716}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 1.2, y: 1.2, z: 1.05}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1858887632278238715}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &7138330055807641713
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4757451503622202597}
- component: {fileID: 6734764425722011759}
- component: {fileID: 8437323508402642124}
- component: {fileID: 5043639884140826952}
m_Layer: 0
m_Name: MoltenMetalVisual
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4757451503622202597
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7138330055807641713}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0.25, z: 0}
m_LocalScale: {x: 1.3, y: 0.12, z: 1.1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1858887632278238715}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &6734764425722011759
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7138330055807641713}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &8437323508402642124
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7138330055807641713}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &5043639884140826952
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7138330055807641713}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d51e4e087bfc8f14d8df1b4da69a6d56, type: 3}
m_Name:
m_EditorClassIdentifier:
furnace: {fileID: 9213789764659406484}
metalVisual: {fileID: 4757451503622202597}
emptyLocalPosition: {fileID: 8123456789012345678}
fullLocalPosition: {fileID: 8123456789012345679}
movementSpeed: 1.5
--- !u!1 &8137587946794080883
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2613004420124304525}
- component: {fileID: 489308711476225990}
- component: {fileID: 250802876963792781}
m_Layer: 0
m_Name: ScrapReceiver
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2613004420124304525
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8137587946794080883}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1.7, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1858887632278238715}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!65 &489308711476225990
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8137587946794080883}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 1
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1.4, y: 0.8, z: 1.4}
m_Center: {x: 0, y: 0, z: 0}
--- !u!114 &250802876963792781
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8137587946794080883}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7a72230fcd966f84d967ab39b124447d, type: 3}
m_Name:
m_EditorClassIdentifier:
furnace: {fileID: 9213789764659406484}
--- !u!1 &8821000000000000001
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8123456789012345678}
m_Layer: 0
m_Name: MetalEmptyPoint
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8123456789012345678
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8821000000000000001}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0.25, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1858887632278238715}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &8821000000000000002
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8123456789012345679}
m_Layer: 0
m_Name: MetalFullPoint
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8123456789012345679
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8821000000000000002}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1.25, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1858887632278238715}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 802af0722eb96ab46ae2cecf926bc6c9
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -2,6 +2,14 @@ using System.Collections.Generic;
using Unity.Netcode;
using Unity.Netcode.Components;
using UnityEngine;
using UnityEngine.Serialization;
public enum DraggableMovementMode
{
Free3D = 0,
KeepWorldHeight = 1,
FollowGround = 2
}
[RequireComponent(typeof(Rigidbody), typeof(NetworkRigidbody))]
public sealed class NetworkDraggableInteractable : NetworkInteractable
@@ -18,7 +26,23 @@ public sealed class NetworkDraggableInteractable : NetworkInteractable
[SerializeField, Min(0.1f)] private float maximumDragSpeed = 3f;
[SerializeField, Range(0.05f, 1f)] private float minimumSpeedMultiplier = 0.35f;
[SerializeField, Min(0.5f)] private float maximumDraggerDistance = 4.5f;
[SerializeField] private bool keepCurrentHeight;
[SerializeField, Min(0.01f)] private float positionSmoothTime = 0.12f;
[SerializeField, Min(0.1f)] private float rotationFollowSpeed = 8f;
[SerializeField] private Vector3 rotationOffset;
[FormerlySerializedAs("keepCurrentHeight")]
[SerializeField] private DraggableMovementMode movementMode;
[Header("Ground Following")]
[SerializeField] private LayerMask groundLayers = ~0;
[SerializeField] private Transform groundContactPoint;
[SerializeField, Min(0.01f)] private float groundProbeRadius = 0.2f;
[SerializeField, Min(0.1f)] private float groundProbeHeight = 1.25f;
[SerializeField, Min(0.1f)] private float maximumGroundDrop = 2f;
[SerializeField, Range(0f, 89f)] private float maximumGroundAngle = 55f;
[SerializeField, Min(0f)] private float groundClearance = 0.02f;
[SerializeField, Min(0.1f)] private float maximumGroundVerticalSpeed = 6f;
[SerializeField] private bool alignToGround = true;
[SerializeField, Min(0.1f)] private float groundAlignmentSpeed = 10f;
[Header("Physics")]
[SerializeField] private Rigidbody physicsBody;
@@ -36,7 +60,11 @@ public sealed class NetworkDraggableInteractable : NetworkInteractable
NetworkVariableWritePermission.Server);
private readonly HashSet<Collider> ignoredPlayerColliders = new();
private readonly RaycastHit[] groundHits = new RaycastHit[16];
private float nextCollisionRefreshTime;
private Vector3 localGroundContactPoint;
private Vector3 smoothedGroundNormal = Vector3.up;
private Vector3 dragVelocity;
public float Weight => weight;
public int ActiveDraggerCount
@@ -120,18 +148,33 @@ public sealed class NetworkDraggableInteractable : NetworkInteractable
return;
RemoveInvalidDraggers();
if (!HasEnoughPullStrength || !TryGetCombinedDragTarget(out Vector3 target))
if (!HasEnoughPullStrength ||
!TryGetCombinedDragTarget(out Vector3 target, out Vector3 forward))
{
dragVelocity = Vector3.zero;
return;
if (keepCurrentHeight)
target.y = physicsBody.position.y;
}
float totalStrength = ActiveDraggerCount * pullStrengthPerPlayer;
float loadRatio = Mathf.Clamp01(weight / totalStrength);
float speedMultiplier = Mathf.Lerp(1f, minimumSpeedMultiplier, loadRatio);
float movementStep = maximumDragSpeed * speedMultiplier * Time.fixedDeltaTime;
Vector3 nextPosition = Vector3.MoveTowards(physicsBody.position, target, movementStep);
physicsBody.MovePosition(nextPosition);
float movementSpeed = maximumDragSpeed * speedMultiplier;
switch (movementMode)
{
case DraggableMovementMode.KeepWorldHeight:
target.y = physicsBody.position.y;
FollowDragTarget(target, forward, movementSpeed, Vector3.up);
break;
case DraggableMovementMode.FollowGround:
MoveAlongGround(target, forward, movementSpeed);
break;
default:
FollowDragTarget(target, forward, movementSpeed, Vector3.up);
break;
}
}
protected override bool CanInteractOnServer(ulong senderClientId) =>
@@ -188,27 +231,42 @@ public sealed class NetworkDraggableInteractable : NetworkInteractable
return (playerObject.transform.position - physicsBody.position).sqrMagnitude <= maximumDistanceSquared;
}
private bool TryGetCombinedDragTarget(out Vector3 target)
private bool TryGetCombinedDragTarget(out Vector3 target, out Vector3 forward)
{
target = Vector3.zero;
forward = Vector3.zero;
int validTargets = 0;
AddDragTarget(firstDraggerClientId.Value, ref target, ref validTargets);
AddDragTarget(secondDraggerClientId.Value, ref target, ref validTargets);
AddDragTarget(firstDraggerClientId.Value, ref target, ref forward, ref validTargets);
AddDragTarget(secondDraggerClientId.Value, ref target, ref forward, ref validTargets);
if (validTargets == 0)
return false;
target /= validTargets;
forward = Vector3.ProjectOnPlane(forward, Vector3.up);
if (forward.sqrMagnitude < 0.0001f)
forward = Vector3.ProjectOnPlane(target - physicsBody.position, Vector3.up);
if (forward.sqrMagnitude < 0.0001f)
forward = Vector3.ProjectOnPlane(physicsBody.transform.forward, Vector3.up);
forward.Normalize();
return true;
}
private void AddDragTarget(ulong clientId, ref Vector3 target, ref int validTargets)
private void AddDragTarget(
ulong clientId,
ref Vector3 target,
ref Vector3 forward,
ref int validTargets)
{
if (clientId == NoDragger || !TryGetPlayerObject(clientId, out NetworkObject playerObject))
return;
target += playerObject.transform.TransformPoint(dragOffset);
forward += playerObject.transform.forward;
validTargets++;
}
@@ -221,16 +279,33 @@ public sealed class NetworkDraggableInteractable : NetworkInteractable
{
if (physicsBody != null)
{
physicsBody.isKinematic = HasAnyDragger || !IsServer;
bool shouldBeKinematic = HasAnyDragger || !IsServer;
if (physicsBody.isKinematic && !shouldBeKinematic)
physicsBody.isKinematic = false;
if (!physicsBody.isKinematic)
{
physicsBody.linearVelocity = Vector3.zero;
physicsBody.angularVelocity = Vector3.zero;
}
physicsBody.isKinematic = shouldBeKinematic;
}
if (HasAnyDragger)
{
dragVelocity = Vector3.zero;
CacheGroundContactPoint();
smoothedGroundNormal = physicsBody != null ? physicsBody.transform.up : Vector3.up;
IgnoreCollisionsWithPlayers();
}
else
{
dragVelocity = Vector3.zero;
RestorePlayerCollisions();
}
}
private void ResolvePhysicsReferences()
{
@@ -239,6 +314,8 @@ public sealed class NetworkDraggableInteractable : NetworkInteractable
if (objectColliders == null || objectColliders.Length == 0)
objectColliders = GetComponentsInChildren<Collider>(true);
CacheGroundContactPoint();
}
private void ApplyWeight()
@@ -247,6 +324,178 @@ public sealed class NetworkDraggableInteractable : NetworkInteractable
physicsBody.mass = Mathf.Max(0.1f, weight);
}
private void FollowDragTarget(
Vector3 target,
Vector3 forward,
float movementSpeed,
Vector3 surfaceNormal)
{
Vector3 nextPosition = Vector3.SmoothDamp(
physicsBody.position,
target,
ref dragVelocity,
positionSmoothTime,
movementSpeed,
Time.fixedDeltaTime);
physicsBody.MovePosition(nextPosition);
physicsBody.MoveRotation(CalculateDragRotation(forward, surfaceNormal));
}
private void MoveAlongGround(
Vector3 dragTarget,
Vector3 forward,
float movementSpeed)
{
Vector3 currentPosition = physicsBody.position;
Vector3 planarTarget = new(dragTarget.x, currentPosition.y, dragTarget.z);
Vector3 planarVelocity = new(dragVelocity.x, 0f, dragVelocity.z);
Vector3 nextPlanarPosition = Vector3.SmoothDamp(
currentPosition,
planarTarget,
ref planarVelocity,
positionSmoothTime,
movementSpeed,
Time.fixedDeltaTime);
nextPlanarPosition.y = currentPosition.y;
dragVelocity = new Vector3(planarVelocity.x, dragVelocity.y, planarVelocity.z);
Vector3 probePosition = nextPlanarPosition;
if (!TryGetGroundSurface(probePosition, out Vector3 groundPoint, out Vector3 groundNormal))
return;
Quaternion targetRotation = CalculateDragRotation(forward, groundNormal);
Vector3 scaledContactPoint = Vector3.Scale(localGroundContactPoint, physicsBody.transform.lossyScale);
float contactOffsetY = (targetRotation * scaledContactPoint).y;
float targetHeight = groundPoint.y - contactOffsetY + groundClearance;
float nextHeight = Mathf.MoveTowards(
currentPosition.y,
targetHeight,
maximumGroundVerticalSpeed * Time.fixedDeltaTime);
physicsBody.MovePosition(new Vector3(nextPlanarPosition.x, nextHeight, nextPlanarPosition.z));
physicsBody.MoveRotation(targetRotation);
}
private bool TryGetGroundSurface(
Vector3 probePosition,
out Vector3 groundPoint,
out Vector3 groundNormal)
{
Vector3 origin = probePosition + Vector3.up * groundProbeHeight;
float castDistance = groundProbeHeight + maximumGroundDrop;
int hitCount = Physics.SphereCastNonAlloc(
origin,
groundProbeRadius,
Vector3.down,
groundHits,
castDistance,
groundLayers,
QueryTriggerInteraction.Ignore);
float nearestDistance = float.PositiveInfinity;
groundPoint = default;
groundNormal = Vector3.up;
for (int index = 0; index < hitCount; index++)
{
RaycastHit hit = groundHits[index];
if (hit.collider == null || IsOwnCollider(hit.collider) ||
hit.collider.GetComponentInParent<CharacterController>() != null)
{
continue;
}
if (Vector3.Angle(Vector3.up, hit.normal) > maximumGroundAngle ||
hit.distance >= nearestDistance)
{
continue;
}
nearestDistance = hit.distance;
groundPoint = hit.point;
groundNormal = hit.normal;
}
return !float.IsPositiveInfinity(nearestDistance);
}
private Quaternion CalculateDragRotation(Vector3 forward, Vector3 groundNormal)
{
Vector3 targetUp = alignToGround ? groundNormal : Vector3.up;
float normalBlend = 1f - Mathf.Exp(-groundAlignmentSpeed * Time.fixedDeltaTime);
smoothedGroundNormal = Vector3.Slerp(
smoothedGroundNormal,
targetUp,
normalBlend).normalized;
Vector3 surfaceForward = Vector3.ProjectOnPlane(forward, smoothedGroundNormal);
if (surfaceForward.sqrMagnitude < 0.0001f)
surfaceForward = Vector3.ProjectOnPlane(physicsBody.transform.forward, smoothedGroundNormal);
Quaternion desiredRotation = Quaternion.LookRotation(
surfaceForward.normalized,
smoothedGroundNormal) * Quaternion.Euler(rotationOffset);
float rotationBlend = 1f - Mathf.Exp(-rotationFollowSpeed * Time.fixedDeltaTime);
return Quaternion.Slerp(physicsBody.rotation, desiredRotation, rotationBlend);
}
private void CacheGroundContactPoint()
{
if (physicsBody == null)
return;
if (groundContactPoint != null)
{
localGroundContactPoint = physicsBody.transform.InverseTransformPoint(groundContactPoint.position);
return;
}
bool hasBounds = false;
Bounds combinedBounds = default;
if (objectColliders != null)
{
foreach (Collider objectCollider in objectColliders)
{
if (objectCollider == null || objectCollider.isTrigger || !objectCollider.enabled)
continue;
if (!hasBounds)
{
combinedBounds = objectCollider.bounds;
hasBounds = true;
}
else
{
combinedBounds.Encapsulate(objectCollider.bounds);
}
}
}
Vector3 contactWorldPosition = hasBounds
? new Vector3(combinedBounds.center.x, combinedBounds.min.y, combinedBounds.center.z)
: physicsBody.position;
localGroundContactPoint = physicsBody.transform.InverseTransformPoint(contactWorldPosition);
}
private bool IsOwnCollider(Collider candidate)
{
if (objectColliders == null)
return false;
foreach (Collider objectCollider in objectColliders)
{
if (objectCollider == candidate)
return true;
}
return false;
}
private void IgnoreCollisionsWithPlayers()
{
foreach (CharacterController playerCollider in FindObjectsByType<CharacterController>(
@@ -14,6 +14,12 @@ public abstract class NetworkHeldInteractable : NetworkInteractable
[SerializeField] private Collider[] objectColliders;
[SerializeField, Min(0.05f)] private float collisionRefreshInterval = 0.25f;
[Header("Holding Follow")]
[SerializeField, Min(0.01f)] private float positionSmoothTime = 0.12f;
[SerializeField, Min(0.1f)] private float maximumFollowSpeed = 12f;
[SerializeField, Min(0.1f)] private float maximumFollowDistance = 1.25f;
[SerializeField, Min(0.1f)] private float rotationFollowSpeed = 14f;
[Header("Throw")]
[SerializeField, Min(0f)] private float throwForce = 6f;
[SerializeField, Min(0f)] private float throwUpwardForce = 0.5f;
@@ -25,6 +31,9 @@ public abstract class NetworkHeldInteractable : NetworkInteractable
private readonly HashSet<Collider> ignoredPlayerColliders = new();
private float nextCollisionRefreshTime;
private Vector3 followVelocity;
private Vector3 previousHolderPosition;
private bool hasPreviousHolderPosition;
protected abstract Vector3 HoldingOffset { get; }
protected abstract string DropPrompt { get; }
@@ -79,10 +88,9 @@ public abstract class NetworkHeldInteractable : NetworkInteractable
return;
}
FollowHolderTranslation(holder.transform.position);
Transform anchor = ResolveHoldingAnchor(holder);
transform.SetPositionAndRotation(
anchor.TransformPoint(HoldingOffset),
anchor.rotation);
FollowHoldingAnchor(anchor);
if (Time.time >= nextCollisionRefreshTime)
{
@@ -175,18 +183,72 @@ public abstract class NetworkHeldInteractable : NetworkInteractable
return cameraController != null ? cameraController.AimTransform : holder.transform;
}
private void FollowHoldingAnchor(Transform anchor)
{
Vector3 targetPosition = anchor.TransformPoint(HoldingOffset);
Vector3 targetDelta = targetPosition - transform.position;
if (targetDelta.sqrMagnitude > maximumFollowDistance * maximumFollowDistance)
{
transform.position = targetPosition -
targetDelta.normalized * maximumFollowDistance;
followVelocity = Vector3.zero;
}
transform.position = Vector3.SmoothDamp(
transform.position,
targetPosition,
ref followVelocity,
positionSmoothTime,
maximumFollowSpeed,
Time.deltaTime);
float rotationBlend = 1f - Mathf.Exp(-rotationFollowSpeed * Time.deltaTime);
transform.rotation = Quaternion.Slerp(
transform.rotation,
anchor.rotation,
rotationBlend);
}
private void FollowHolderTranslation(Vector3 holderPosition)
{
if (!hasPreviousHolderPosition)
{
previousHolderPosition = holderPosition;
hasPreviousHolderPosition = true;
return;
}
Vector3 holderDelta = holderPosition - previousHolderPosition;
previousHolderPosition = holderPosition;
transform.position += holderDelta;
}
private void HandleHolderChanged(ulong _, ulong currentHolder) =>
ApplyHoldingState(currentHolder != NoHolder);
private void ApplyHoldingState(bool isHeld)
{
followVelocity = Vector3.zero;
hasPreviousHolderPosition = false;
if (physicsBody != null)
{
physicsBody.isKinematic = isHeld || !IsServer;
bool shouldBeKinematic = isHeld || !IsServer;
if (physicsBody.isKinematic && !shouldBeKinematic)
physicsBody.isKinematic = false;
if (!physicsBody.isKinematic)
{
physicsBody.linearVelocity = Vector3.zero;
physicsBody.angularVelocity = Vector3.zero;
}
physicsBody.isKinematic = shouldBeKinematic;
}
if (isHeld)
IgnoreCollisionsWithPlayers();
else
@@ -19,12 +19,12 @@ public sealed class NetworkPhysicalLeverInteractable :
[Header("Control")]
[SerializeField, Min(0.5f)] private float maximumControlDistance = 4f;
[SerializeField] private bool returnToRestOnRelease;
[SerializeField, Range(0f, 1f)] private float restValue;
[Header("Activation")]
[SerializeField, Range(0f, 1f)] private float activationThreshold = 0.85f;
[SerializeField, Range(0f, 1f)] private float deactivationThreshold = 0.15f;
[Header("Two positions")]
[SerializeField, Range(0.05f, 0.95f)] private float switchThreshold = 0.5f;
[SerializeField] private bool initialPositionIsMaximum;
[SerializeField] private bool returnToInitialPositionAfterSwitch;
[SerializeField, Min(0f)] private float automaticReturnDelay = 0.25f;
[SerializeField] private UnityEvent<float> leverValueChanged;
[SerializeField] private UnityEvent<bool> leverStateChanged;
@@ -43,6 +43,10 @@ public sealed class NetworkPhysicalLeverInteractable :
NetworkVariableReadPermission.Everyone,
NetworkVariableWritePermission.Server);
private bool hasSnapTarget;
private float snapTargetValue;
private float automaticReturnTime = -1f;
public float Value => synchronizedValue.Value;
public bool IsActivated => isActivated.Value;
public bool IsControlled => controllingClientId.Value != NoController;
@@ -66,6 +70,7 @@ public sealed class NetworkPhysicalLeverInteractable :
private Vector3 HandleDirection => localHandleDirection.sqrMagnitude > 0.0001f
? localHandleDirection.normalized
: Vector3.up;
private float InitialPositionValue => initialPositionIsMaximum ? 1f : 0f;
private void Reset()
{
@@ -77,13 +82,18 @@ public sealed class NetworkPhysicalLeverInteractable :
{
if (maximumAngle < minimumAngle)
maximumAngle = minimumAngle;
deactivationThreshold = Mathf.Min(deactivationThreshold, activationThreshold);
}
public override void OnNetworkSpawn()
{
PlayerInteractionSessionRegistry.Register(this);
if (IsServer)
{
synchronizedValue.Value = InitialPositionValue;
isActivated.Value = initialPositionIsMaximum;
}
synchronizedValue.OnValueChanged += HandleValueChanged;
isActivated.OnValueChanged += HandleActivationChanged;
ApplyVisual(synchronizedValue.Value);
@@ -108,17 +118,29 @@ public sealed class NetworkPhysicalLeverInteractable :
if (!TryGetPlayerObject(controllingClientId.Value, out NetworkObject playerObject) ||
!IsPlayerWithinControlDistance(playerObject))
{
controllingClientId.Value = NoController;
EndControl();
return;
}
if (TryCalculateTargetValue(playerObject, out float targetValue))
MoveTowardsValue(targetValue);
}
else if (returnToRestOnRelease)
{
MoveTowardsValue(restValue);
MoveTowardsValue(targetValue);
UpdateActivationAtEndpoint();
}
return;
}
if (hasSnapTarget)
{
if (MoveTowardsValue(snapTargetValue))
CompleteSnap();
return;
}
if (automaticReturnTime >= 0f && Time.time >= automaticReturnTime)
BeginSnap(InitialPositionValue);
}
public bool IsControlledBy(ulong clientId) =>
@@ -137,16 +159,72 @@ public sealed class NetworkPhysicalLeverInteractable :
ulong senderClientId,
NetworkObject playerObject)
{
controllingClientId.Value = IsControlledBy(senderClientId)
? NoController
: senderClientId;
if (IsControlledBy(senderClientId))
EndControl();
else
BeginControl(senderClientId);
}
[Rpc(SendTo.Server, InvokePermission = RpcInvokePermission.Everyone)]
private void RequestReleaseServerRpc(RpcParams rpcParams = default)
{
if (IsControlledBy(rpcParams.Receive.SenderClientId))
EndControl();
}
private void BeginControl(ulong clientId)
{
hasSnapTarget = false;
automaticReturnTime = -1f;
controllingClientId.Value = clientId;
}
private void EndControl()
{
if (!IsControlled)
return;
controllingClientId.Value = NoController;
float targetPosition = synchronizedValue.Value >= switchThreshold ? 1f : 0f;
BeginSnap(targetPosition);
}
private void BeginSnap(float targetValue)
{
automaticReturnTime = -1f;
snapTargetValue = targetValue >= 0.5f ? 1f : 0f;
hasSnapTarget = true;
}
private void CompleteSnap()
{
hasSnapTarget = false;
bool snappedToMaximum = snapTargetValue >= 0.5f;
SetActivation(snappedToMaximum);
bool movedAwayFromInitialPosition =
!Mathf.Approximately(snapTargetValue, InitialPositionValue);
automaticReturnTime = returnToInitialPositionAfterSwitch &&
movedAwayFromInitialPosition
? Time.time + automaticReturnDelay
: -1f;
}
private void UpdateActivationAtEndpoint()
{
const float endpointTolerance = 0.001f;
if (synchronizedValue.Value >= 1f - endpointTolerance)
SetActivation(true);
else if (synchronizedValue.Value <= endpointTolerance)
SetActivation(false);
}
private void SetActivation(bool activated)
{
if (isActivated.Value != activated)
isActivated.Value = activated;
}
private bool IsPlayerWithinControlDistance(NetworkObject playerObject)
@@ -208,7 +286,7 @@ public sealed class NetworkPhysicalLeverInteractable :
return true;
}
private void MoveTowardsValue(float targetValue)
private bool MoveTowardsValue(float targetValue)
{
float angleRange = Mathf.Max(0.01f, maximumAngle - minimumAngle);
float valueStep = movementSpeed / angleRange * Time.fixedDeltaTime;
@@ -217,24 +295,10 @@ public sealed class NetworkPhysicalLeverInteractable :
Mathf.Clamp01(targetValue),
valueStep);
if (Mathf.Approximately(nextValue, synchronizedValue.Value))
return;
if (!Mathf.Approximately(nextValue, synchronizedValue.Value))
synchronizedValue.Value = nextValue;
UpdateActivationState(nextValue);
}
private void UpdateActivationState(float currentValue)
{
bool nextState = isActivated.Value;
if (!nextState && currentValue >= activationThreshold)
nextState = true;
else if (nextState && currentValue <= deactivationThreshold)
nextState = false;
if (nextState != isActivated.Value)
isActivated.Value = nextState;
return Mathf.Approximately(nextValue, targetValue);
}
private void HandleValueChanged(float _, float currentValue)
@@ -259,8 +323,8 @@ public sealed class NetworkPhysicalLeverInteractable :
[ContextMenu("Preview/Minimum")]
private void PreviewMinimum() => ApplyVisual(0f);
[ContextMenu("Preview/Rest")]
private void PreviewRest() => ApplyVisual(restValue);
[ContextMenu("Preview/Initial Position")]
private void PreviewInitialPosition() => ApplyVisual(InitialPositionValue);
[ContextMenu("Preview/Maximum")]
private void PreviewMaximum() => ApplyVisual(1f);
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 49b83c56f1d5e6d46b448c92e658fbe9
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

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