(Feat) Add Build
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 243 KiB |
@@ -0,0 +1,117 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d0115bcb4578ac449b3c68cff7b9ab74
|
||||
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
|
||||
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:
|
||||
@@ -11,8 +11,7 @@ GameObject:
|
||||
- component: {fileID: 3714593433905687095}
|
||||
- component: {fileID: 5681262012823064577}
|
||||
- component: {fileID: 2155936523658636536}
|
||||
- component: {fileID: -4039253569498786944}
|
||||
m_Layer: 9
|
||||
m_Layer: 14
|
||||
m_Name: Wall_Prefab
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -91,24 +90,3 @@ MeshRenderer:
|
||||
m_SortingOrder: 0
|
||||
m_MaskInteraction: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!65 &-4039253569498786944
|
||||
BoxCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 421010513357740068}
|
||||
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: 2.4617782, y: 2.50951, z: 0.2520886}
|
||||
m_Center: {x: 0.0095511675, y: 1.2509763, z: -0.0246767}
|
||||
|
||||
+1
-23
@@ -11,8 +11,7 @@ GameObject:
|
||||
- component: {fileID: 8054689501814014560}
|
||||
- component: {fileID: 1338422113681176662}
|
||||
- component: {fileID: 4733158660651713711}
|
||||
- component: {fileID: 5106284389308251883}
|
||||
m_Layer: 9
|
||||
m_Layer: 14
|
||||
m_Name: WoodCelling_Prefab
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -91,24 +90,3 @@ MeshRenderer:
|
||||
m_SortingOrder: 0
|
||||
m_MaskInteraction: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!65 &5106284389308251883
|
||||
BoxCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6454600228789530739}
|
||||
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: 2.4893725, y: 0.279638, z: 2.4685874}
|
||||
m_Center: {x: 0.0011386871, y: -0.07322356, z: -0.012834609}
|
||||
|
||||
Vendored
+20
@@ -5,6 +5,7 @@ PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 8997298075521803846}
|
||||
m_Modifications:
|
||||
- target: {fileID: 7198024643778214155, guid: bf1b6977d91e64f4d97ebe5917ac5100, type: 3}
|
||||
@@ -56,18 +57,31 @@ PrefabInstance:
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: bf1b6977d91e64f4d97ebe5917ac5100, type: 3}
|
||||
--- !u!4 &8046626792452269860 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 7543342365492650929, guid: bf1b6977d91e64f4d97ebe5917ac5100, type: 3}
|
||||
m_PrefabInstance: {fileID: 505539525378442389}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1001 &505539527041720555
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: 122938350598531472, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: MinDistance
|
||||
value: 2
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5785395719311195047, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: <AssetPathHash>k__BackingField
|
||||
value: 2699301597497639283
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8111840307215440919, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Chest(gold)
|
||||
@@ -117,6 +131,12 @@ PrefabInstance:
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects:
|
||||
- targetCorrespondingSourceObject: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 8046626792452269860}
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
--- !u!4 &8997298075521803846 stripped
|
||||
Transform:
|
||||
|
||||
Vendored
+78
-18
@@ -11,7 +11,7 @@ GameObject:
|
||||
- component: {fileID: 2606721799233737429}
|
||||
- component: {fileID: 7224854202195104225}
|
||||
- component: {fileID: 6178433971241266360}
|
||||
m_Layer: 0
|
||||
m_Layer: 9
|
||||
m_Name: Chest_Base_LOD1
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -25,13 +25,13 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1205429200353802584}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0.7071068, y: 0, z: -0, w: 0.7071067}
|
||||
m_LocalPosition: {x: -0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 0.01, y: 0.01, z: 0.01}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 503519722303736055}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &7224854202195104225
|
||||
MeshFilter:
|
||||
@@ -58,6 +58,11 @@ MeshRenderer:
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_ForceMeshLod: -1
|
||||
m_MeshLodSelectionBias: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
@@ -79,9 +84,11 @@ MeshRenderer:
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_GlobalIlluminationMeshLod: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_MaskInteraction: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!1 &2488455438653353329
|
||||
GameObject:
|
||||
@@ -98,7 +105,7 @@ GameObject:
|
||||
- component: {fileID: 122938350598531472}
|
||||
- component: {fileID: 1209279869221510233}
|
||||
- component: {fileID: 4283136006545383452}
|
||||
m_Layer: 0
|
||||
m_Layer: 9
|
||||
m_Name: Chest_Lid
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -112,6 +119,7 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2488455438653353329}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: -0.009018421, y: 0.44621155, z: -0.30879098}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
@@ -120,7 +128,6 @@ Transform:
|
||||
- {fileID: 3707641557569320034}
|
||||
- {fileID: 8232556972884782422}
|
||||
m_Father: {fileID: 8924123916003559085}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &8976429598366186669
|
||||
MeshFilter:
|
||||
@@ -147,6 +154,11 @@ MeshRenderer:
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_ForceMeshLod: -1
|
||||
m_MeshLodSelectionBias: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
@@ -168,13 +180,15 @@ MeshRenderer:
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_GlobalIlluminationMeshLod: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_MaskInteraction: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!95 &1361013315308231073
|
||||
Animator:
|
||||
serializedVersion: 5
|
||||
serializedVersion: 7
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
@@ -188,6 +202,7 @@ Animator:
|
||||
m_ApplyRootMotion: 0
|
||||
m_LinearVelocityBlending: 0
|
||||
m_StabilizeFeet: 0
|
||||
m_AnimatePhysics: 0
|
||||
m_WarningMessage:
|
||||
m_HasTransformHierarchy: 1
|
||||
m_AllowConstantClipSamplingOptimization: 1
|
||||
@@ -204,6 +219,7 @@ AudioSource:
|
||||
serializedVersion: 4
|
||||
OutputAudioMixerGroup: {fileID: -7316018828095377594, guid: 0665dad8c29b42e4bafc93d713b131c9, type: 2}
|
||||
m_audioClip: {fileID: 0}
|
||||
m_Resource: {fileID: 0}
|
||||
m_PlayOnAwake: 0
|
||||
m_Volume: 0.8
|
||||
m_Pitch: 1
|
||||
@@ -315,9 +331,17 @@ MeshCollider:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2488455438653353329}
|
||||
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: 4
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 2356492703377905092, guid: 19a7b53b36c3520479d09aa5646d4c5a, type: 3}
|
||||
@@ -332,7 +356,7 @@ GameObject:
|
||||
- component: {fileID: 3707641557569320034}
|
||||
- component: {fileID: 5559165499292620654}
|
||||
- component: {fileID: 9201044371878899178}
|
||||
m_Layer: 0
|
||||
m_Layer: 9
|
||||
m_Name: Chest_Lid_LOD0
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -346,13 +370,13 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2834765333546211928}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0.7071068, y: 0, z: -0, w: 0.7071067}
|
||||
m_LocalPosition: {x: 0.009018421, y: -0.000000038146972, z: -0.000000057220458}
|
||||
m_LocalScale: {x: 0.01, y: 0.01, z: 0.01}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 3835817499799255042}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &5559165499292620654
|
||||
MeshFilter:
|
||||
@@ -379,6 +403,11 @@ MeshRenderer:
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_ForceMeshLod: -1
|
||||
m_MeshLodSelectionBias: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
@@ -400,9 +429,11 @@ MeshRenderer:
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_GlobalIlluminationMeshLod: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_MaskInteraction: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!1 &3477519202729442059
|
||||
GameObject:
|
||||
@@ -416,7 +447,7 @@ GameObject:
|
||||
- component: {fileID: 3916079684582640722}
|
||||
- component: {fileID: 7052433451743326622}
|
||||
- component: {fileID: 8727277968094159911}
|
||||
m_Layer: 0
|
||||
m_Layer: 9
|
||||
m_Name: Chest_Base
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -430,6 +461,7 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3477519202729442059}
|
||||
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}
|
||||
@@ -438,7 +470,6 @@ Transform:
|
||||
- {fileID: 7567182041190782969}
|
||||
- {fileID: 2606721799233737429}
|
||||
m_Father: {fileID: 8924123916003559085}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &3916079684582640722
|
||||
MeshFilter:
|
||||
@@ -465,6 +496,11 @@ MeshRenderer:
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_ForceMeshLod: -1
|
||||
m_MeshLodSelectionBias: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
@@ -486,9 +522,11 @@ MeshRenderer:
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_GlobalIlluminationMeshLod: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_MaskInteraction: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &8727277968094159911
|
||||
MeshCollider:
|
||||
@@ -498,9 +536,17 @@ MeshCollider:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3477519202729442059}
|
||||
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: 4
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: -3942633656405313522, guid: 19a7b53b36c3520479d09aa5646d4c5a, type: 3}
|
||||
@@ -515,7 +561,7 @@ GameObject:
|
||||
- component: {fileID: 7567182041190782969}
|
||||
- component: {fileID: 7107667617370497390}
|
||||
- component: {fileID: 8641505232673808897}
|
||||
m_Layer: 0
|
||||
m_Layer: 9
|
||||
m_Name: Chest_Base_LOD0
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -529,13 +575,13 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3730502645607281877}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0.7071068, y: 0, z: -0, w: 0.7071067}
|
||||
m_LocalPosition: {x: -0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 0.01, y: 0.01, z: 0.01}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 503519722303736055}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &7107667617370497390
|
||||
MeshFilter:
|
||||
@@ -562,6 +608,11 @@ MeshRenderer:
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_ForceMeshLod: -1
|
||||
m_MeshLodSelectionBias: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
@@ -583,9 +634,11 @@ MeshRenderer:
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_GlobalIlluminationMeshLod: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_MaskInteraction: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!1 &4380831863138714029
|
||||
GameObject:
|
||||
@@ -598,7 +651,7 @@ GameObject:
|
||||
- component: {fileID: 8232556972884782422}
|
||||
- component: {fileID: 2368990597280887114}
|
||||
- component: {fileID: 7097754766906568354}
|
||||
m_Layer: 0
|
||||
m_Layer: 9
|
||||
m_Name: Chest_Lid_LOD1
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -612,13 +665,13 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4380831863138714029}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0.7071068, y: 0, z: -0, w: 0.7071067}
|
||||
m_LocalPosition: {x: 0.009018421, y: -0.000000038146972, z: -0.000000057220458}
|
||||
m_LocalScale: {x: 0.01, y: 0.01, z: 0.01}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 3835817499799255042}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &2368990597280887114
|
||||
MeshFilter:
|
||||
@@ -645,6 +698,11 @@ MeshRenderer:
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_ForceMeshLod: -1
|
||||
m_MeshLodSelectionBias: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
@@ -666,9 +724,11 @@ MeshRenderer:
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_GlobalIlluminationMeshLod: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_MaskInteraction: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!1 &8111840307215440919
|
||||
GameObject:
|
||||
@@ -680,7 +740,7 @@ GameObject:
|
||||
m_Component:
|
||||
- component: {fileID: 8924123916003559085}
|
||||
- component: {fileID: 546255530539012946}
|
||||
m_Layer: 0
|
||||
m_Layer: 9
|
||||
m_Name: Chest
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -694,7 +754,8 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8111840307215440919}
|
||||
m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
|
||||
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
|
||||
@@ -702,7 +763,6 @@ Transform:
|
||||
- {fileID: 503519722303736055}
|
||||
- {fileID: 3835817499799255042}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!205 &546255530539012946
|
||||
LODGroup:
|
||||
|
||||
+18
-11
@@ -19,7 +19,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 86
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &748262766046446123
|
||||
Transform:
|
||||
@@ -156,16 +156,23 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 7fda9de5aca90194dbd292acb461b816, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Harvestable
|
||||
id: 59
|
||||
harvestType: 2
|
||||
maxHealth: 100
|
||||
drops:
|
||||
- item: {fileID: 11400000, guid: 51e850551f3764447b2e8b6168f82e3b, type: 2}
|
||||
minQuantity: 1
|
||||
maxQuantity: 2
|
||||
shakeDuration: 0.4
|
||||
shakeStrength: 0.2
|
||||
shakeVibrato: 15
|
||||
shakeRandomness: 60
|
||||
toolDrops:
|
||||
- tool: {fileID: 11400000, guid: 60132cba2202496eb74f2afc1f89c81a, type: 2}
|
||||
drops:
|
||||
- item: {fileID: 11400000, guid: 51e850551f3764447b2e8b6168f82e3b, type: 2}
|
||||
minQuantity: 1
|
||||
maxQuantity: 3
|
||||
dropChance: 1
|
||||
punchScale: 0.15
|
||||
punchAngle: 8
|
||||
punchDuration: 0.3
|
||||
punchVibrato: 6
|
||||
punchElasticity: 0.5
|
||||
blockedAngle: 2.5
|
||||
blockedDuration: 0.2
|
||||
canRespawn: 1
|
||||
respawnDelay: 60
|
||||
onHit:
|
||||
@@ -190,7 +197,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 86
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &4217209489267025855
|
||||
Transform:
|
||||
@@ -280,7 +287,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 86
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &3548739899808413248
|
||||
Transform:
|
||||
|
||||
+18
-11
@@ -19,7 +19,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 86
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &286197698383361655
|
||||
Transform:
|
||||
@@ -156,16 +156,23 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 7fda9de5aca90194dbd292acb461b816, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Harvestable
|
||||
id: 90
|
||||
harvestType: 2
|
||||
maxHealth: 100
|
||||
drops:
|
||||
- item: {fileID: 11400000, guid: 51e850551f3764447b2e8b6168f82e3b, type: 2}
|
||||
minQuantity: 1
|
||||
maxQuantity: 2
|
||||
shakeDuration: 0.4
|
||||
shakeStrength: 0.2
|
||||
shakeVibrato: 15
|
||||
shakeRandomness: 60
|
||||
toolDrops:
|
||||
- tool: {fileID: 11400000, guid: 60132cba2202496eb74f2afc1f89c81a, type: 2}
|
||||
drops:
|
||||
- item: {fileID: 11400000, guid: 51e850551f3764447b2e8b6168f82e3b, type: 2}
|
||||
minQuantity: 1
|
||||
maxQuantity: 3
|
||||
dropChance: 1
|
||||
punchScale: 0.15
|
||||
punchAngle: 8
|
||||
punchDuration: 0.3
|
||||
punchVibrato: 6
|
||||
punchElasticity: 0.5
|
||||
blockedAngle: 2.5
|
||||
blockedDuration: 0.2
|
||||
canRespawn: 1
|
||||
respawnDelay: 60
|
||||
onHit:
|
||||
@@ -190,7 +197,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 86
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &198993429449873881
|
||||
Transform:
|
||||
@@ -280,7 +287,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 86
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &3543417022948999764
|
||||
Transform:
|
||||
|
||||
+18
-11
@@ -19,7 +19,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 86
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &2219824350256105327
|
||||
Transform:
|
||||
@@ -156,16 +156,23 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 7fda9de5aca90194dbd292acb461b816, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Harvestable
|
||||
id: 22
|
||||
harvestType: 2
|
||||
maxHealth: 100
|
||||
drops:
|
||||
- item: {fileID: 11400000, guid: 51e850551f3764447b2e8b6168f82e3b, type: 2}
|
||||
minQuantity: 1
|
||||
maxQuantity: 2
|
||||
shakeDuration: 0.4
|
||||
shakeStrength: 0.2
|
||||
shakeVibrato: 15
|
||||
shakeRandomness: 60
|
||||
toolDrops:
|
||||
- tool: {fileID: 11400000, guid: 60132cba2202496eb74f2afc1f89c81a, type: 2}
|
||||
drops:
|
||||
- item: {fileID: 11400000, guid: 51e850551f3764447b2e8b6168f82e3b, type: 2}
|
||||
minQuantity: 1
|
||||
maxQuantity: 3
|
||||
dropChance: 1
|
||||
punchScale: 0.15
|
||||
punchAngle: 8
|
||||
punchDuration: 0.3
|
||||
punchVibrato: 6
|
||||
punchElasticity: 0.5
|
||||
blockedAngle: 2.5
|
||||
blockedDuration: 0.2
|
||||
canRespawn: 1
|
||||
respawnDelay: 60
|
||||
onHit:
|
||||
@@ -190,7 +197,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 86
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &6567935216615476887
|
||||
Transform:
|
||||
@@ -280,7 +287,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 86
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &5914414948368770446
|
||||
Transform:
|
||||
|
||||
+18
-11
@@ -16,7 +16,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 86
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &4280536933109484921
|
||||
Transform:
|
||||
@@ -106,7 +106,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 86
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &3351503495626576030
|
||||
Transform:
|
||||
@@ -199,7 +199,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 86
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &8362526065459812100
|
||||
Transform:
|
||||
@@ -336,16 +336,23 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 7fda9de5aca90194dbd292acb461b816, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Harvestable
|
||||
id: 87
|
||||
harvestType: 2
|
||||
maxHealth: 100
|
||||
drops:
|
||||
- item: {fileID: 11400000, guid: 51e850551f3764447b2e8b6168f82e3b, type: 2}
|
||||
minQuantity: 1
|
||||
maxQuantity: 2
|
||||
shakeDuration: 0.4
|
||||
shakeStrength: 0.2
|
||||
shakeVibrato: 15
|
||||
shakeRandomness: 60
|
||||
toolDrops:
|
||||
- tool: {fileID: 11400000, guid: 60132cba2202496eb74f2afc1f89c81a, type: 2}
|
||||
drops:
|
||||
- item: {fileID: 11400000, guid: 51e850551f3764447b2e8b6168f82e3b, type: 2}
|
||||
minQuantity: 1
|
||||
maxQuantity: 3
|
||||
dropChance: 1
|
||||
punchScale: 0.15
|
||||
punchAngle: 8
|
||||
punchDuration: 0.3
|
||||
punchVibrato: 6
|
||||
punchElasticity: 0.5
|
||||
blockedAngle: 2.5
|
||||
blockedDuration: 0.2
|
||||
canRespawn: 1
|
||||
respawnDelay: 60
|
||||
onHit:
|
||||
|
||||
+18
-11
@@ -16,7 +16,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 86
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &6205293919350992614
|
||||
Transform:
|
||||
@@ -109,7 +109,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 86
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &4762080378362873693
|
||||
Transform:
|
||||
@@ -246,16 +246,23 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 7fda9de5aca90194dbd292acb461b816, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Harvestable
|
||||
id: 53
|
||||
harvestType: 2
|
||||
maxHealth: 100
|
||||
drops:
|
||||
- item: {fileID: 11400000, guid: 51e850551f3764447b2e8b6168f82e3b, type: 2}
|
||||
minQuantity: 1
|
||||
maxQuantity: 2
|
||||
shakeDuration: 0.4
|
||||
shakeStrength: 0.2
|
||||
shakeVibrato: 15
|
||||
shakeRandomness: 60
|
||||
toolDrops:
|
||||
- tool: {fileID: 11400000, guid: 60132cba2202496eb74f2afc1f89c81a, type: 2}
|
||||
drops:
|
||||
- item: {fileID: 11400000, guid: 51e850551f3764447b2e8b6168f82e3b, type: 2}
|
||||
minQuantity: 1
|
||||
maxQuantity: 3
|
||||
dropChance: 1
|
||||
punchScale: 0.15
|
||||
punchAngle: 8
|
||||
punchDuration: 0.3
|
||||
punchVibrato: 6
|
||||
punchElasticity: 0.5
|
||||
blockedAngle: 2.5
|
||||
blockedDuration: 0.2
|
||||
canRespawn: 1
|
||||
respawnDelay: 60
|
||||
onHit:
|
||||
@@ -280,7 +287,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 86
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1010964867449484015
|
||||
Transform:
|
||||
|
||||
+18
-11
@@ -16,7 +16,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 86
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &5672072038109178627
|
||||
Transform:
|
||||
@@ -106,7 +106,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 86
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &5444124662913614523
|
||||
Transform:
|
||||
@@ -199,7 +199,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 86
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &5243363827767699911
|
||||
Transform:
|
||||
@@ -336,16 +336,23 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 7fda9de5aca90194dbd292acb461b816, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Harvestable
|
||||
id: 61
|
||||
harvestType: 2
|
||||
maxHealth: 100
|
||||
drops:
|
||||
- item: {fileID: 11400000, guid: 51e850551f3764447b2e8b6168f82e3b, type: 2}
|
||||
minQuantity: 1
|
||||
maxQuantity: 2
|
||||
shakeDuration: 0.4
|
||||
shakeStrength: 0.2
|
||||
shakeVibrato: 15
|
||||
shakeRandomness: 60
|
||||
toolDrops:
|
||||
- tool: {fileID: 11400000, guid: 60132cba2202496eb74f2afc1f89c81a, type: 2}
|
||||
drops:
|
||||
- item: {fileID: 11400000, guid: 51e850551f3764447b2e8b6168f82e3b, type: 2}
|
||||
minQuantity: 1
|
||||
maxQuantity: 3
|
||||
dropChance: 1
|
||||
punchScale: 0.15
|
||||
punchAngle: 8
|
||||
punchDuration: 0.3
|
||||
punchVibrato: 6
|
||||
punchElasticity: 0.5
|
||||
blockedAngle: 2.5
|
||||
blockedDuration: 0.2
|
||||
canRespawn: 1
|
||||
respawnDelay: 60
|
||||
onHit:
|
||||
|
||||
+17
-10
@@ -16,7 +16,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 20
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &6806464786959562938
|
||||
Transform:
|
||||
@@ -109,7 +109,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 20
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &8402525821647893593
|
||||
Transform:
|
||||
@@ -241,16 +241,23 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 7fda9de5aca90194dbd292acb461b816, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Harvestable
|
||||
id: 84
|
||||
harvestType: 2
|
||||
maxHealth: 100
|
||||
drops:
|
||||
- item: {fileID: 11400000, guid: 51e850551f3764447b2e8b6168f82e3b, type: 2}
|
||||
minQuantity: 1
|
||||
maxQuantity: 2
|
||||
shakeDuration: 0.4
|
||||
shakeStrength: 0.2
|
||||
shakeVibrato: 15
|
||||
shakeRandomness: 60
|
||||
toolDrops:
|
||||
- tool: {fileID: 11400000, guid: 60132cba2202496eb74f2afc1f89c81a, type: 2}
|
||||
drops:
|
||||
- item: {fileID: 11400000, guid: 51e850551f3764447b2e8b6168f82e3b, type: 2}
|
||||
minQuantity: 1
|
||||
maxQuantity: 3
|
||||
dropChance: 1
|
||||
punchScale: 0.15
|
||||
punchAngle: 8
|
||||
punchDuration: 0.3
|
||||
punchVibrato: 6
|
||||
punchElasticity: 0.5
|
||||
blockedAngle: 2.5
|
||||
blockedDuration: 0.2
|
||||
canRespawn: 1
|
||||
respawnDelay: 60
|
||||
onHit:
|
||||
|
||||
+17
-10
@@ -19,7 +19,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 20
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &4970298923497092992
|
||||
Transform:
|
||||
@@ -151,16 +151,23 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 7fda9de5aca90194dbd292acb461b816, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Harvestable
|
||||
id: 77
|
||||
harvestType: 2
|
||||
maxHealth: 100
|
||||
drops:
|
||||
- item: {fileID: 11400000, guid: 51e850551f3764447b2e8b6168f82e3b, type: 2}
|
||||
minQuantity: 1
|
||||
maxQuantity: 2
|
||||
shakeDuration: 0.4
|
||||
shakeStrength: 0.2
|
||||
shakeVibrato: 15
|
||||
shakeRandomness: 60
|
||||
toolDrops:
|
||||
- tool: {fileID: 11400000, guid: 60132cba2202496eb74f2afc1f89c81a, type: 2}
|
||||
drops:
|
||||
- item: {fileID: 11400000, guid: 51e850551f3764447b2e8b6168f82e3b, type: 2}
|
||||
minQuantity: 1
|
||||
maxQuantity: 3
|
||||
dropChance: 1
|
||||
punchScale: 0.15
|
||||
punchAngle: 8
|
||||
punchDuration: 0.3
|
||||
punchVibrato: 6
|
||||
punchElasticity: 0.5
|
||||
blockedAngle: 2.5
|
||||
blockedDuration: 0.2
|
||||
canRespawn: 1
|
||||
respawnDelay: 60
|
||||
onHit:
|
||||
@@ -185,7 +192,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 20
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &8822011804714126119
|
||||
Transform:
|
||||
|
||||
+17
-10
@@ -16,7 +16,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 20
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &5154199213897954143
|
||||
Transform:
|
||||
@@ -109,7 +109,7 @@ GameObject:
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 20
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1275143432306138816
|
||||
Transform:
|
||||
@@ -241,16 +241,23 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 7fda9de5aca90194dbd292acb461b816, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Harvestable
|
||||
id: 67
|
||||
harvestType: 2
|
||||
maxHealth: 100
|
||||
drops:
|
||||
- item: {fileID: 11400000, guid: 51e850551f3764447b2e8b6168f82e3b, type: 2}
|
||||
minQuantity: 1
|
||||
maxQuantity: 2
|
||||
shakeDuration: 0.4
|
||||
shakeStrength: 0.2
|
||||
shakeVibrato: 15
|
||||
shakeRandomness: 60
|
||||
toolDrops:
|
||||
- tool: {fileID: 11400000, guid: 60132cba2202496eb74f2afc1f89c81a, type: 2}
|
||||
drops:
|
||||
- item: {fileID: 11400000, guid: 51e850551f3764447b2e8b6168f82e3b, type: 2}
|
||||
minQuantity: 1
|
||||
maxQuantity: 3
|
||||
dropChance: 1
|
||||
punchScale: 0.15
|
||||
punchAngle: 8
|
||||
punchDuration: 0.3
|
||||
punchVibrato: 6
|
||||
punchElasticity: 0.5
|
||||
blockedAngle: 2.5
|
||||
blockedDuration: 0.2
|
||||
canRespawn: 1
|
||||
respawnDelay: 60
|
||||
onHit:
|
||||
|
||||
+1
-1
@@ -185,7 +185,7 @@ MonoBehaviour:
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584181721604556210
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!114 &6667641716399555817
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
+2
-2
@@ -65,7 +65,7 @@ MonoBehaviour:
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 1
|
||||
<PrefabId>k__BackingField: 0
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 2903053101402871766
|
||||
SceneId: 0
|
||||
@@ -93,7 +93,7 @@ MonoBehaviour:
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584181721604556210
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!114 &6667641716399555817
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
+2
-2
@@ -249,7 +249,7 @@ MonoBehaviour:
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 8
|
||||
<PrefabId>k__BackingField: 7
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 8265366384202762268
|
||||
SceneId: 0
|
||||
@@ -277,7 +277,7 @@ MonoBehaviour:
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584181721604556210
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!114 &6130968803401110125
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
+2
-2
@@ -65,7 +65,7 @@ MonoBehaviour:
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 16
|
||||
<PrefabId>k__BackingField: 19
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 17307177893486029436
|
||||
SceneId: 0
|
||||
@@ -93,7 +93,7 @@ MonoBehaviour:
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584181721604556210
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!114 &6667641716399555817
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
+2
-2
@@ -66,7 +66,7 @@ MonoBehaviour:
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 11
|
||||
<PrefabId>k__BackingField: 12
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 13441272123366128544
|
||||
SceneId: 0
|
||||
@@ -94,7 +94,7 @@ MonoBehaviour:
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584181721604556210
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!114 &6130968803401110125
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -66,7 +66,7 @@ MonoBehaviour:
|
||||
_spectatorInterpolation: 1
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 7
|
||||
<PrefabId>k__BackingField: 6
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 7357667251099481026
|
||||
SceneId: 0
|
||||
@@ -95,7 +95,7 @@ MonoBehaviour:
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584181721604556210
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!114 &2759061792589502182
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -156,7 +156,7 @@ MonoBehaviour:
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 12
|
||||
<PrefabId>k__BackingField: 13
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 15851448279207409322
|
||||
SceneId: 0
|
||||
@@ -184,7 +184,7 @@ MonoBehaviour:
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584181721604556210
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!114 &4670340455971777434
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -182,7 +182,7 @@ MonoBehaviour:
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584181721604556210
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!114 &437322326027960749
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
+2
-2
@@ -85,7 +85,7 @@ MonoBehaviour:
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 9
|
||||
<PrefabId>k__BackingField: 8
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 8652468816125699328
|
||||
SceneId: 0
|
||||
@@ -114,7 +114,7 @@ MonoBehaviour:
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584181721604556210
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!143 &4148834954576211901
|
||||
CharacterController:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
+1
-1
@@ -399,7 +399,7 @@ MonoBehaviour:
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584181721604556210
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!54 &1517669882
|
||||
Rigidbody:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -319,7 +319,7 @@ MonoBehaviour:
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 17
|
||||
<PrefabId>k__BackingField: 21
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 18062267916601837655
|
||||
SceneId: 0
|
||||
@@ -347,7 +347,7 @@ MonoBehaviour:
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584181721604556210
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!114 &6420552185407096997
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -346,7 +346,7 @@ MonoBehaviour:
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 15
|
||||
<PrefabId>k__BackingField: 18
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 17300898577088521684
|
||||
SceneId: 0
|
||||
@@ -374,7 +374,7 @@ MonoBehaviour:
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584181721604556210
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!114 &6767263130208162619
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1732515ee69158247988715da637d349
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,110 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c4627c2a24e5ef44290fe55663a464fb
|
||||
ModelImporter:
|
||||
serializedVersion: 24200
|
||||
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
|
||||
generateMeshLods: 0
|
||||
meshLodGenerationFlags: 0
|
||||
maximumMeshLod: -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:
|
||||
Binary file not shown.
@@ -0,0 +1,110 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e78c7da004d047f429dd97bcd3321d55
|
||||
ModelImporter:
|
||||
serializedVersion: 24200
|
||||
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
|
||||
generateMeshLods: 0
|
||||
meshLodGenerationFlags: 0
|
||||
maximumMeshLod: -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:
|
||||
Binary file not shown.
@@ -0,0 +1,110 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 308c4c6aa7df5ef45ad84b0c139e7f17
|
||||
ModelImporter:
|
||||
serializedVersion: 24200
|
||||
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
|
||||
generateMeshLods: 0
|
||||
meshLodGenerationFlags: 0
|
||||
maximumMeshLod: -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:
|
||||
Binary file not shown.
@@ -0,0 +1,110 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2abe49436f5479241b87304e791a0126
|
||||
ModelImporter:
|
||||
serializedVersion: 24200
|
||||
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
|
||||
generateMeshLods: 0
|
||||
meshLodGenerationFlags: 0
|
||||
maximumMeshLod: -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:
|
||||
Binary file not shown.
@@ -0,0 +1,110 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0e8c003416261584dba3d25627309d45
|
||||
ModelImporter:
|
||||
serializedVersion: 24200
|
||||
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
|
||||
generateMeshLods: 0
|
||||
meshLodGenerationFlags: 0
|
||||
maximumMeshLod: -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:
|
||||
Binary file not shown.
@@ -0,0 +1,110 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 96082e795316cee47b001bfe52dc298b
|
||||
ModelImporter:
|
||||
serializedVersion: 24200
|
||||
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
|
||||
generateMeshLods: 0
|
||||
meshLodGenerationFlags: 0
|
||||
maximumMeshLod: -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:
|
||||
@@ -0,0 +1,74 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &78071172308032964
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1015805472424669187}
|
||||
- component: {fileID: 6021600361211429460}
|
||||
m_Layer: 0
|
||||
m_Name: BuildManager
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1015805472424669187
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 78071172308032964}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 772.4896, y: 352.97568, z: 226.42851}
|
||||
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 &6021600361211429460
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 78071172308032964}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: bc4a78713a89ab54a806161c5f70f8bb, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildManager
|
||||
menuUI: {fileID: 0}
|
||||
catalog:
|
||||
- {fileID: 11400000, guid: 030740a1d4869434fb535225dbe03471, type: 2}
|
||||
- {fileID: 11400000, guid: 869ce1fcc7aafc4429d8095f5c8ba6b0, type: 2}
|
||||
- {fileID: 11400000, guid: f37e0d3c7eef5bb40956a640425b1845, type: 2}
|
||||
- {fileID: 11400000, guid: a42d503226db3774a8ebdce271364b22, type: 2}
|
||||
aimCamera: {fileID: 0}
|
||||
placeRange: 8
|
||||
groundMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 521
|
||||
useGrid: 0
|
||||
gridSize: 1
|
||||
rotationStep: 90
|
||||
continuousBuild: 1
|
||||
snapRadius: 1.25
|
||||
snapPointMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 8192
|
||||
obstructionMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 512
|
||||
obstructionPadding: 0.03
|
||||
buildMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 512
|
||||
demolitionMaterial: {fileID: 2100000, guid: 0a594aa41ef0d7e428398c2c32772c64, type: 2}
|
||||
hammerUsesPerAction: 1
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fb3189f697e11534299fe0ff296e53bc
|
||||
guid: 9c3114c2a557da848aa58b1bd2276667
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
@@ -0,0 +1,108 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &3427389263313396324
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 748327894251662759}
|
||||
- component: {fileID: 7141230456228821510}
|
||||
- component: {fileID: 289947267238384498}
|
||||
m_Layer: 0
|
||||
m_Name: BuildRegistry
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &748327894251662759
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3427389263313396324}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 654.2982, y: 431.6819, z: 151.70045}
|
||||
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 &7141230456228821510
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3427389263313396324}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 26b716c41e9b56b4baafaf13a523ba2e, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: FishNet.Runtime::FishNet.Object.NetworkObject
|
||||
_localLevelOfDetailCalculationType: 0
|
||||
_useLevelOfDetail: 0
|
||||
_useRootLevelOfDetail: 1
|
||||
NetworkObserver: {fileID: 0}
|
||||
_enablePrediction: 0
|
||||
_predictionType: 0
|
||||
_localReconcileCorrectionType: 2
|
||||
_graphicalObject: {fileID: 0}
|
||||
_detachGraphicalObject: 0
|
||||
_enableStateForwarding: 1
|
||||
_networkTransform: {fileID: 0}
|
||||
_ownerInterpolation: 1
|
||||
_ownerSmoothedProperties: 255
|
||||
_adaptiveInterpolation: 3
|
||||
_spectatorSmoothedProperties: 255
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 10
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 9975403408747794214
|
||||
SceneId: 0
|
||||
SerializedTransformProperties:
|
||||
Position: {x: 654.2982, y: 431.6819, z: 151.70045}
|
||||
Rotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
Scale: {x: 1, y: 1, z: 1}
|
||||
IsValid: 1
|
||||
<IsNested>k__BackingField: 0
|
||||
WasActiveDuringEdit: 0
|
||||
WasActiveDuringEdit_Set1: 1
|
||||
<ComponentIndex>k__BackingField: 0
|
||||
<PredictedSpawn>k__BackingField: {fileID: 0}
|
||||
<PredictedOwner>k__BackingField: {fileID: 0}
|
||||
NetworkBehaviours:
|
||||
- {fileID: 289947267238384498}
|
||||
InitializedParentNetworkBehaviour: {fileID: 0}
|
||||
InitializedNestedNetworkObjects: []
|
||||
RuntimeParentNetworkBehaviour: {fileID: 0}
|
||||
RuntimeChildNetworkBehaviours: []
|
||||
_isNetworked: 1
|
||||
_isSpawnable: 1
|
||||
_isGlobal: 0
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!114 &289947267238384498
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3427389263313396324}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f5d6268ef4905d54b9c4d23c6b54effa, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildRegistry
|
||||
_componentIndexCache: 0
|
||||
_addedNetworkObject: {fileID: 7141230456228821510}
|
||||
_networkObjectCache: {fileID: 7141230456228821510}
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: adbf0247d50ef68409136335af276fc1
|
||||
guid: 305d603ce48179b43b110ac4344f5b60
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
@@ -90,7 +90,7 @@ MonoBehaviour:
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584181721604556210
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!114 &3185372856389979425
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &201875898711784295
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 467008878121580390}
|
||||
- component: {fileID: 4930820130719000481}
|
||||
m_Layer: 0
|
||||
m_Name: HudVisibilityToggle
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &467008878121580390
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 201875898711784295}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 562.112, y: 401.68655, z: 226.43498}
|
||||
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 &4930820130719000481
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 201875898711784295}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: b111841eeafe2814db8f7fb488e56202, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.UI.HudVisibilityToggle
|
||||
toggleKey: 101
|
||||
alwaysVisible: []
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 39b04625f47cbc24a93966c3eb0194d2
|
||||
guid: 071225dca8a312b429e59f7fac6bee64
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
@@ -63,7 +63,7 @@ MonoBehaviour:
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 14
|
||||
<PrefabId>k__BackingField: 17
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 16949488085050316302
|
||||
SceneId: 0
|
||||
@@ -90,7 +90,7 @@ MonoBehaviour:
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584181721604556210
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!114 &3704013715362460501
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -75,7 +75,7 @@ Camera:
|
||||
m_Depth: -1
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 2815
|
||||
m_Bits: 27391
|
||||
m_RenderingPath: -1
|
||||
m_TargetTexture: {fileID: 0}
|
||||
m_TargetDisplay: 0
|
||||
@@ -815,7 +815,7 @@ MonoBehaviour:
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 13
|
||||
<PrefabId>k__BackingField: 15
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 16376119982057009716
|
||||
SceneId: 0
|
||||
@@ -836,6 +836,7 @@ MonoBehaviour:
|
||||
- {fileID: -2455020581440275693}
|
||||
- {fileID: 4782095384616423459}
|
||||
- {fileID: 1890885114087150018}
|
||||
- {fileID: -4423719270533760289}
|
||||
- {fileID: 656527942023048284}
|
||||
- {fileID: 4969709554801488359}
|
||||
InitializedParentNetworkBehaviour: {fileID: 0}
|
||||
@@ -848,7 +849,7 @@ MonoBehaviour:
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584181721604556210
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!114 &-2455020581440275693
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -1054,9 +1055,9 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: fabb912832c44b945a26c8ef03db222a, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Crafting.CraftDiscovery
|
||||
_componentIndexCache: 255
|
||||
_componentIndexCache: 5
|
||||
_addedNetworkObject: {fileID: -5889822588553870904}
|
||||
_networkObjectCache: {fileID: 0}
|
||||
_networkObjectCache: {fileID: -5889822588553870904}
|
||||
--- !u!114 &656527942023048284
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -1069,7 +1070,7 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 8809701d89694f5488cc03b300f8dc09, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Network.SessionPresenceNotifier
|
||||
_componentIndexCache: 5
|
||||
_componentIndexCache: 6
|
||||
_addedNetworkObject: {fileID: -5889822588553870904}
|
||||
_networkObjectCache: {fileID: -5889822588553870904}
|
||||
--- !u!114 &4969709554801488359
|
||||
@@ -1084,7 +1085,7 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 23848f2e7f7ecba4791aa89d5344b3d0, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Network.PlayerBodyVisibility
|
||||
_componentIndexCache: 6
|
||||
_componentIndexCache: 7
|
||||
_addedNetworkObject: {fileID: -5889822588553870904}
|
||||
_networkObjectCache: {fileID: -5889822588553870904}
|
||||
bodyRoot: {fileID: 0}
|
||||
|
||||
@@ -0,0 +1,223 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &5948094648586919017
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2886761022184032782}
|
||||
- component: {fileID: 5997657947119417274}
|
||||
- component: {fileID: 7507030739449404127}
|
||||
- component: {fileID: 8239258359241532420}
|
||||
- component: {fileID: 8751794752429108}
|
||||
- component: {fileID: 675340278771037740}
|
||||
m_Layer: 9
|
||||
m_Name: Chest
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &2886761022184032782
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5948094648586919017}
|
||||
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: 5266958205498778288}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!65 &5997657947119417274
|
||||
BoxCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5948094648586919017}
|
||||
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.2221766, y: 0.7923986, z: 0.716973}
|
||||
m_Center: {x: 0.0018180013, y: 0.39221516, z: 0.0063577592}
|
||||
--- !u!114 &7507030739449404127
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5948094648586919017}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe38331f524a7db4cb3d53381b9ea244, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuiltStructure
|
||||
bumpDuration: 0.22
|
||||
startScaleFactor: 0.7
|
||||
bumpEase: 27
|
||||
--- !u!114 &8239258359241532420
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5948094648586919017}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3239767b01eb17642a9aa5c614618ae7, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.GrassClearer.ClearGrassOnPlace
|
||||
--- !u!114 &8751794752429108
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5948094648586919017}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 26b716c41e9b56b4baafaf13a523ba2e, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: FishNet.Runtime::FishNet.Object.NetworkObject
|
||||
_localLevelOfDetailCalculationType: 0
|
||||
_useLevelOfDetail: 0
|
||||
_useRootLevelOfDetail: 1
|
||||
NetworkObserver: {fileID: 0}
|
||||
_enablePrediction: 0
|
||||
_predictionType: 0
|
||||
_localReconcileCorrectionType: 2
|
||||
_graphicalObject: {fileID: 0}
|
||||
_detachGraphicalObject: 0
|
||||
_enableStateForwarding: 1
|
||||
_networkTransform: {fileID: 0}
|
||||
_ownerInterpolation: 1
|
||||
_ownerSmoothedProperties: 255
|
||||
_adaptiveInterpolation: 3
|
||||
_spectatorSmoothedProperties: 255
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 1
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 4007524062421809988
|
||||
SceneId: 0
|
||||
SerializedTransformProperties:
|
||||
Position: {x: 0, y: 0, z: 0}
|
||||
Rotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
Scale: {x: 1, y: 1, z: 1}
|
||||
IsValid: 1
|
||||
<IsNested>k__BackingField: 0
|
||||
WasActiveDuringEdit: 0
|
||||
WasActiveDuringEdit_Set1: 1
|
||||
<ComponentIndex>k__BackingField: 0
|
||||
<PredictedSpawn>k__BackingField: {fileID: 0}
|
||||
<PredictedOwner>k__BackingField: {fileID: 0}
|
||||
NetworkBehaviours:
|
||||
- {fileID: 675340278771037740}
|
||||
InitializedParentNetworkBehaviour: {fileID: 0}
|
||||
InitializedNestedNetworkObjects: []
|
||||
RuntimeParentNetworkBehaviour: {fileID: 0}
|
||||
RuntimeChildNetworkBehaviours: []
|
||||
_isNetworked: 1
|
||||
_isSpawnable: 1
|
||||
_isGlobal: 0
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!114 &675340278771037740
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5948094648586919017}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: ee73c1f9305ee50408bbbee938a15194, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Storage.Chest
|
||||
_componentIndexCache: 0
|
||||
_addedNetworkObject: {fileID: 8751794752429108}
|
||||
_networkObjectCache: {fileID: 8751794752429108}
|
||||
data: {fileID: 11400000, guid: 38eb565e82ffe934ab6d60830d1d453a, type: 2}
|
||||
--- !u!1001 &3661186797030908957
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 2886761022184032782}
|
||||
m_Modifications:
|
||||
- target: {fileID: 8111840307215440919, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Chest
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
--- !u!4 &5266958205498778288 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
m_PrefabInstance: {fileID: 3661186797030908957}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5ed00af42fa05fe488f1fc26d1f7c6ce
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,513 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &208794168907284248
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 961227788918199288}
|
||||
- component: {fileID: 7400803798588129510}
|
||||
- component: {fileID: 4748379793658233428}
|
||||
m_Layer: 13
|
||||
m_Name: Wall_Foot
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &961227788918199288
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 208794168907284248}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: 0, y: -1.254755, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1125945964717581948}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &7400803798588129510
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 208794168907284248}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 1
|
||||
--- !u!135 &4748379793658233428
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 208794168907284248}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1957736865413553716
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8931836297000691229}
|
||||
- component: {fileID: 5474830346548817540}
|
||||
- component: {fileID: 2463972767883860536}
|
||||
m_Layer: 13
|
||||
m_Name: Wall_SideB
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &8931836297000691229
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1957736865413553716}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: -1.2308891, y: -0, z: -0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1125945964717581948}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &5474830346548817540
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1957736865413553716}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 1
|
||||
--- !u!135 &2463972767883860536
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1957736865413553716}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &3853975807222614992
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1125945964717581948}
|
||||
m_Layer: 9
|
||||
m_Name: Snap
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1125945964717581948
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3853975807222614992}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0.0095511675, y: 1.2509763, z: -0.0246767}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 451099174334464957}
|
||||
- {fileID: 961227788918199288}
|
||||
- {fileID: 6185007869942481391}
|
||||
- {fileID: 8931836297000691229}
|
||||
m_Father: {fileID: 5381473336172268795}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &4838915898288505592
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 5381473336172268795}
|
||||
- component: {fileID: 6040466525805525261}
|
||||
- component: {fileID: 1224852433561986364}
|
||||
- component: {fileID: 1115195620365084337}
|
||||
- component: {fileID: 7022851135897287337}
|
||||
m_Layer: 9
|
||||
m_Name: Mur en bois
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &5381473336172268795
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4838915898288505592}
|
||||
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: 5842308575927890256}
|
||||
- {fileID: 1125945964717581948}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!65 &6040466525805525261
|
||||
BoxCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4838915898288505592}
|
||||
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: 2.4617782, y: 2.50951, z: 0.2520886}
|
||||
m_Center: {x: 0.0095511675, y: 1.2509763, z: -0.0246767}
|
||||
--- !u!114 &1224852433561986364
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4838915898288505592}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe38331f524a7db4cb3d53381b9ea244, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuiltStructure
|
||||
_componentIndexCache: 255
|
||||
_addedNetworkObject: {fileID: 7022851135897287337}
|
||||
_networkObjectCache: {fileID: 0}
|
||||
bumpDuration: 0.22
|
||||
startScaleFactor: 0.7
|
||||
bumpEase: 27
|
||||
--- !u!114 &1115195620365084337
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4838915898288505592}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3239767b01eb17642a9aa5c614618ae7, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.GrassClearer.ClearGrassOnPlace
|
||||
--- !u!114 &7022851135897287337
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4838915898288505592}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 26b716c41e9b56b4baafaf13a523ba2e, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: FishNet.Runtime::FishNet.Object.NetworkObject
|
||||
_localLevelOfDetailCalculationType: 0
|
||||
_useLevelOfDetail: 0
|
||||
_useRootLevelOfDetail: 1
|
||||
NetworkObserver: {fileID: 0}
|
||||
_enablePrediction: 0
|
||||
_predictionType: 0
|
||||
_localReconcileCorrectionType: 2
|
||||
_graphicalObject: {fileID: 0}
|
||||
_detachGraphicalObject: 0
|
||||
_enableStateForwarding: 1
|
||||
_networkTransform: {fileID: 0}
|
||||
_ownerInterpolation: 1
|
||||
_ownerSmoothedProperties: 255
|
||||
_adaptiveInterpolation: 3
|
||||
_spectatorSmoothedProperties: 255
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 65535
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 7547832251807066330
|
||||
SceneId: 0
|
||||
SerializedTransformProperties:
|
||||
Position: {x: 0, y: 0, z: 0}
|
||||
Rotation: {x: 0, y: 0, z: 0, w: 0}
|
||||
Scale: {x: 0, y: 0, z: 0}
|
||||
IsValid: 0
|
||||
<IsNested>k__BackingField: 0
|
||||
WasActiveDuringEdit: 0
|
||||
WasActiveDuringEdit_Set1: 1
|
||||
<ComponentIndex>k__BackingField: 0
|
||||
<PredictedSpawn>k__BackingField: {fileID: 0}
|
||||
<PredictedOwner>k__BackingField: {fileID: 0}
|
||||
NetworkBehaviours: []
|
||||
InitializedParentNetworkBehaviour: {fileID: 0}
|
||||
InitializedNestedNetworkObjects: []
|
||||
RuntimeParentNetworkBehaviour: {fileID: 0}
|
||||
RuntimeChildNetworkBehaviours: []
|
||||
_isNetworked: 1
|
||||
_isSpawnable: 1
|
||||
_isGlobal: 0
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: 0
|
||||
--- !u!1 &7687585878458156323
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6185007869942481391}
|
||||
- component: {fileID: 5189547651752577510}
|
||||
- component: {fileID: 9115272895995619326}
|
||||
m_Layer: 13
|
||||
m_Name: Wall_SideA
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &6185007869942481391
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7687585878458156323}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: 1.2308891, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1125945964717581948}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &5189547651752577510
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7687585878458156323}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 1
|
||||
--- !u!135 &9115272895995619326
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7687585878458156323}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &8861907097594589065
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 451099174334464957}
|
||||
- component: {fileID: 4106805795255136685}
|
||||
- component: {fileID: 4062594637198647446}
|
||||
m_Layer: 13
|
||||
m_Name: RoofMount
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &451099174334464957
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8861907097594589065}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0.7071068, z: 0.7071068, w: 0}
|
||||
m_LocalPosition: {x: 0, y: 1.254755, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1125945964717581948}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &4106805795255136685
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8861907097594589065}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 2
|
||||
--- !u!135 &4062594637198647446
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8861907097594589065}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1001 &7104692011643706215
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 5381473336172268795}
|
||||
m_Modifications:
|
||||
- target: {fileID: 421010513357740068, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Wall_Prefab
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents:
|
||||
- {fileID: -4039253569498786944, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
--- !u!4 &5842308575927890256 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
m_PrefabInstance: {fileID: 7104692011643706215}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c3a62bb0fb1710740825a4eb59437581
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,512 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &3930576761471722039
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 9084291393401960374}
|
||||
- component: {fileID: 1491351931806317781}
|
||||
- component: {fileID: 4836794251928457324}
|
||||
m_Layer: 13
|
||||
m_Name: Roof_West
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &9084291393401960374
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3930576761471722039}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: -0.7071068, z: -0, w: 0.7071068}
|
||||
m_LocalPosition: {x: -1.2446862, y: 0.139819, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 4263273631203770316}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1491351931806317781
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3930576761471722039}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 2
|
||||
--- !u!135 &4836794251928457324
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3930576761471722039}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &5086960793722575589
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2042489852548193680}
|
||||
- component: {fileID: 323275278811732031}
|
||||
- component: {fileID: 7005265325359380249}
|
||||
m_Layer: 13
|
||||
m_Name: Roof_South
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &2042489852548193680
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5086960793722575589}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
|
||||
m_LocalPosition: {x: 0, y: 0.139819, z: -1.2342937}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 4263273631203770316}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &323275278811732031
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5086960793722575589}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 2
|
||||
--- !u!135 &7005265325359380249
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5086960793722575589}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &5439766614215486298
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4693139356659701411}
|
||||
- component: {fileID: 1096036710088364051}
|
||||
- component: {fileID: 7456420191696939690}
|
||||
m_Layer: 13
|
||||
m_Name: Roof_East
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &4693139356659701411
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5439766614215486298}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: 1.2446862, y: 0.139819, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 4263273631203770316}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1096036710088364051
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5439766614215486298}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 2
|
||||
--- !u!135 &7456420191696939690
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5439766614215486298}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &5834752348484076943
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 40923618772375371}
|
||||
- component: {fileID: 7357605378735079213}
|
||||
- component: {fileID: 2163295442053852858}
|
||||
- component: {fileID: 1317689691611017784}
|
||||
- component: {fileID: 4444565792432705460}
|
||||
m_Layer: 9
|
||||
m_Name: Plafond
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &40923618772375371
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5834752348484076943}
|
||||
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: 928183785439594325}
|
||||
- {fileID: 4263273631203770316}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!65 &7357605378735079213
|
||||
BoxCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5834752348484076943}
|
||||
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: 2.4893725, y: 0.279638, z: 2.4685874}
|
||||
m_Center: {x: 0.0011386871, y: 0.14069226, z: -0.012834609}
|
||||
--- !u!114 &2163295442053852858
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5834752348484076943}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe38331f524a7db4cb3d53381b9ea244, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuiltStructure
|
||||
_componentIndexCache: 255
|
||||
_addedNetworkObject: {fileID: 4444565792432705460}
|
||||
_networkObjectCache: {fileID: 0}
|
||||
bumpDuration: 0.22
|
||||
startScaleFactor: 0.7
|
||||
bumpEase: 27
|
||||
--- !u!114 &1317689691611017784
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5834752348484076943}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3239767b01eb17642a9aa5c614618ae7, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.GrassClearer.ClearGrassOnPlace
|
||||
--- !u!114 &4444565792432705460
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5834752348484076943}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 26b716c41e9b56b4baafaf13a523ba2e, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: FishNet.Runtime::FishNet.Object.NetworkObject
|
||||
_localLevelOfDetailCalculationType: 0
|
||||
_useLevelOfDetail: 0
|
||||
_useRootLevelOfDetail: 1
|
||||
NetworkObserver: {fileID: 0}
|
||||
_enablePrediction: 0
|
||||
_predictionType: 0
|
||||
_localReconcileCorrectionType: 2
|
||||
_graphicalObject: {fileID: 0}
|
||||
_detachGraphicalObject: 0
|
||||
_enableStateForwarding: 1
|
||||
_networkTransform: {fileID: 0}
|
||||
_ownerInterpolation: 1
|
||||
_ownerSmoothedProperties: 255
|
||||
_adaptiveInterpolation: 3
|
||||
_spectatorSmoothedProperties: 255
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 65535
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 13832512290486259770
|
||||
SceneId: 0
|
||||
SerializedTransformProperties:
|
||||
Position: {x: 0, y: 0, z: 0}
|
||||
Rotation: {x: 0, y: 0, z: 0, w: 0}
|
||||
Scale: {x: 0, y: 0, z: 0}
|
||||
IsValid: 0
|
||||
<IsNested>k__BackingField: 0
|
||||
WasActiveDuringEdit: 0
|
||||
WasActiveDuringEdit_Set1: 1
|
||||
<ComponentIndex>k__BackingField: 0
|
||||
<PredictedSpawn>k__BackingField: {fileID: 0}
|
||||
<PredictedOwner>k__BackingField: {fileID: 0}
|
||||
NetworkBehaviours: []
|
||||
InitializedParentNetworkBehaviour: {fileID: 0}
|
||||
InitializedNestedNetworkObjects: []
|
||||
RuntimeParentNetworkBehaviour: {fileID: 0}
|
||||
RuntimeChildNetworkBehaviours: []
|
||||
_isNetworked: 1
|
||||
_isSpawnable: 1
|
||||
_isGlobal: 0
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: 0
|
||||
--- !u!1 &6937546176162827135
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4263273631203770316}
|
||||
m_Layer: 9
|
||||
m_Name: Snap
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &4263273631203770316
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6937546176162827135}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0.0011386871, y: 0.14069226, z: -0.012834609}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 8193433619354612562}
|
||||
- {fileID: 2042489852548193680}
|
||||
- {fileID: 4693139356659701411}
|
||||
- {fileID: 9084291393401960374}
|
||||
m_Father: {fileID: 40923618772375371}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &8702346745728879574
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8193433619354612562}
|
||||
- component: {fileID: 852954361560795950}
|
||||
- component: {fileID: 6084935132519380220}
|
||||
m_Layer: 13
|
||||
m_Name: Roof_North
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &8193433619354612562
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8702346745728879574}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0.139819, z: 1.2342937}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 4263273631203770316}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &852954361560795950
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8702346745728879574}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 2
|
||||
--- !u!135 &6084935132519380220
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8702346745728879574}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1001 &7145404260217701685
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 40923618772375371}
|
||||
m_Modifications:
|
||||
- target: {fileID: 6454600228789530739, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: WoodCelling_Prefab
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
--- !u!4 &928183785439594325 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
m_PrefabInstance: {fileID: 7145404260217701685}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 76972b4f65be7b14c99bf7c5df0efaf4
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,785 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &3015257535522599058
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4945787393932429376}
|
||||
- component: {fileID: 2740378140357890900}
|
||||
- component: {fileID: 1517015390480547612}
|
||||
m_Layer: 13
|
||||
m_Name: Floor_East
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &4945787393932429376
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3015257535522599058}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: 1.2446862, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1028507122493498974}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &2740378140357890900
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3015257535522599058}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 0
|
||||
--- !u!135 &1517015390480547612
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3015257535522599058}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &3183415615932361763
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7186651538238987014}
|
||||
- component: {fileID: 2291544757555110270}
|
||||
- component: {fileID: 6858850823605817203}
|
||||
- component: {fileID: 778683605449396331}
|
||||
- component: {fileID: 7405293751935118856}
|
||||
m_Layer: 9
|
||||
m_Name: Sol en bois
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &7186651538238987014
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3183415615932361763}
|
||||
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: 3144909205180013477}
|
||||
- {fileID: 1028507122493498974}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!65 &2291544757555110270
|
||||
BoxCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3183415615932361763}
|
||||
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: 2.4893725, y: 0.279638, z: 2.4685874}
|
||||
m_Center: {x: 0.0011386871, y: 0.14069226, z: -0.012834609}
|
||||
--- !u!114 &6858850823605817203
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3183415615932361763}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe38331f524a7db4cb3d53381b9ea244, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuiltStructure
|
||||
_componentIndexCache: 255
|
||||
_addedNetworkObject: {fileID: 7405293751935118856}
|
||||
_networkObjectCache: {fileID: 0}
|
||||
bumpDuration: 0.22
|
||||
startScaleFactor: 0.7
|
||||
bumpEase: 27
|
||||
--- !u!114 &778683605449396331
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3183415615932361763}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3239767b01eb17642a9aa5c614618ae7, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.GrassClearer.ClearGrassOnPlace
|
||||
--- !u!114 &7405293751935118856
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3183415615932361763}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 26b716c41e9b56b4baafaf13a523ba2e, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: FishNet.Runtime::FishNet.Object.NetworkObject
|
||||
_localLevelOfDetailCalculationType: 0
|
||||
_useLevelOfDetail: 0
|
||||
_useRootLevelOfDetail: 1
|
||||
NetworkObserver: {fileID: 0}
|
||||
_enablePrediction: 0
|
||||
_predictionType: 0
|
||||
_localReconcileCorrectionType: 2
|
||||
_graphicalObject: {fileID: 0}
|
||||
_detachGraphicalObject: 0
|
||||
_enableStateForwarding: 1
|
||||
_networkTransform: {fileID: 0}
|
||||
_ownerInterpolation: 1
|
||||
_ownerSmoothedProperties: 255
|
||||
_adaptiveInterpolation: 3
|
||||
_spectatorSmoothedProperties: 255
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 65535
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 13925520005596096250
|
||||
SceneId: 0
|
||||
SerializedTransformProperties:
|
||||
Position: {x: 0, y: 0, z: 0}
|
||||
Rotation: {x: 0, y: 0, z: 0, w: 0}
|
||||
Scale: {x: 0, y: 0, z: 0}
|
||||
IsValid: 0
|
||||
<IsNested>k__BackingField: 0
|
||||
WasActiveDuringEdit: 0
|
||||
WasActiveDuringEdit_Set1: 1
|
||||
<ComponentIndex>k__BackingField: 0
|
||||
<PredictedSpawn>k__BackingField: {fileID: 0}
|
||||
<PredictedOwner>k__BackingField: {fileID: 0}
|
||||
NetworkBehaviours: []
|
||||
InitializedParentNetworkBehaviour: {fileID: 0}
|
||||
InitializedNestedNetworkObjects: []
|
||||
RuntimeParentNetworkBehaviour: {fileID: 0}
|
||||
RuntimeChildNetworkBehaviours: []
|
||||
_isNetworked: 1
|
||||
_isSpawnable: 1
|
||||
_isGlobal: 0
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: 0
|
||||
--- !u!1 &5016747873711697717
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6081239821933389395}
|
||||
- component: {fileID: 5287888658612811049}
|
||||
- component: {fileID: 559144606326668187}
|
||||
m_Layer: 13
|
||||
m_Name: WallMount_North
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &6081239821933389395
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5016747873711697717}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0.7071068, z: 0.7071068, w: 0}
|
||||
m_LocalPosition: {x: 0, y: 0.139819, z: 1.216}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1028507122493498974}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &5287888658612811049
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5016747873711697717}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 1
|
||||
--- !u!135 &559144606326668187
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5016747873711697717}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &5566867004549566263
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6488288424741899979}
|
||||
- component: {fileID: 7197472678951274680}
|
||||
- component: {fileID: 562663470692097558}
|
||||
m_Layer: 13
|
||||
m_Name: WallMount_South
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &6488288424741899979
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5566867004549566263}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0.7071068, z: 0.7071068, w: 0}
|
||||
m_LocalPosition: {x: 0, y: 0.139819, z: -1.206}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1028507122493498974}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &7197472678951274680
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5566867004549566263}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 1
|
||||
--- !u!135 &562663470692097558
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5566867004549566263}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &6107000946487921022
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 5997676958723984974}
|
||||
- component: {fileID: 7905528615082448978}
|
||||
- component: {fileID: 7789137847735753705}
|
||||
m_Layer: 13
|
||||
m_Name: Floor_West
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &5997676958723984974
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6107000946487921022}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: -0.7071068, z: -0, w: 0.7071068}
|
||||
m_LocalPosition: {x: -1.2446862, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1028507122493498974}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &7905528615082448978
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6107000946487921022}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 0
|
||||
--- !u!135 &7789137847735753705
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6107000946487921022}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &6388772436464905764
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1271483872477449789}
|
||||
- component: {fileID: 9207456660066486750}
|
||||
- component: {fileID: 3220838388077137214}
|
||||
m_Layer: 13
|
||||
m_Name: WallMount_West
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1271483872477449789
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6388772436464905764}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0.7071068, z: 0.7071068, w: 0}
|
||||
m_LocalPosition: {x: -1.186, y: 0.139819, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1028507122493498974}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &9207456660066486750
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6388772436464905764}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 1
|
||||
--- !u!135 &3220838388077137214
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6388772436464905764}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &7022636613293831284
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7320601817753907019}
|
||||
- component: {fileID: 7144384194673381334}
|
||||
- component: {fileID: 3122412922055003796}
|
||||
m_Layer: 13
|
||||
m_Name: Floor_South
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &7320601817753907019
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7022636613293831284}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
|
||||
m_LocalPosition: {x: 0, y: 0, z: -1.2342937}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1028507122493498974}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &7144384194673381334
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7022636613293831284}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 0
|
||||
--- !u!135 &3122412922055003796
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7022636613293831284}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &8114284026765641226
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1028507122493498974}
|
||||
m_Layer: 9
|
||||
m_Name: Snap
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1028507122493498974
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8114284026765641226}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0.0011386871, y: 0.14069226, z: -0.012834609}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 1495899157673761099}
|
||||
- {fileID: 7320601817753907019}
|
||||
- {fileID: 4945787393932429376}
|
||||
- {fileID: 5997676958723984974}
|
||||
- {fileID: 6081239821933389395}
|
||||
- {fileID: 6488288424741899979}
|
||||
- {fileID: 5350324107798645853}
|
||||
- {fileID: 1271483872477449789}
|
||||
m_Father: {fileID: 7186651538238987014}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &8668162324072818912
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1495899157673761099}
|
||||
- component: {fileID: 1974317403837520723}
|
||||
- component: {fileID: 7627934911936129810}
|
||||
m_Layer: 13
|
||||
m_Name: Floor_North
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1495899157673761099
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8668162324072818912}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 1.2342937}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1028507122493498974}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1974317403837520723
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8668162324072818912}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 0
|
||||
--- !u!135 &7627934911936129810
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8668162324072818912}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &9034195199641080368
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 5350324107798645853}
|
||||
- component: {fileID: 4905755451283525879}
|
||||
- component: {fileID: 2296979088887810826}
|
||||
m_Layer: 13
|
||||
m_Name: WallMount_East
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &5350324107798645853
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 9034195199641080368}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0.7071068, z: 0.7071068, w: 0}
|
||||
m_LocalPosition: {x: 1.187, y: 0.139819, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1028507122493498974}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &4905755451283525879
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 9034195199641080368}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 1
|
||||
--- !u!135 &2296979088887810826
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 9034195199641080368}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1001 &4930587474812279237
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 7186651538238987014}
|
||||
m_Modifications:
|
||||
- target: {fileID: 6454600228789530739, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: WoodCelling_Prefab
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents:
|
||||
- {fileID: 5106284389308251883, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
--- !u!4 &3144909205180013477 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
m_PrefabInstance: {fileID: 4930587474812279237}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6da3ddb353032704ba93fbd2575769dc
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,431 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &480736328517298862
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1942471322536217356}
|
||||
m_Layer: 9
|
||||
m_Name: Snap
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1942471322536217356
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 480736328517298862}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0.197, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 6870778831223154685}
|
||||
- {fileID: 2524477793229890458}
|
||||
- {fileID: 2131578201294031463}
|
||||
- {fileID: 8179181624519070060}
|
||||
m_Father: {fileID: 2140759467227372249}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1660908140604244018
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6870778831223154685}
|
||||
- component: {fileID: 6877881682430573567}
|
||||
- component: {fileID: 612144715090567965}
|
||||
m_Layer: 13
|
||||
m_Name: Edge_North
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &6870778831223154685
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1660908140604244018}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -1, z: -0, w: 0.0000029504295}
|
||||
m_LocalPosition: {x: 0, y: 0, z: -1.2409973}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1942471322536217356}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: -180, z: 0}
|
||||
--- !u!114 &6877881682430573567
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1660908140604244018}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 0
|
||||
--- !u!135 &612144715090567965
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1660908140604244018}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &3209735075952564995
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2140759467227372249}
|
||||
- component: {fileID: 6877544168227861141}
|
||||
- component: {fileID: 4884403491460680490}
|
||||
- component: {fileID: 1774354476493266722}
|
||||
- component: {fileID: 6057546317908917559}
|
||||
m_Layer: 9
|
||||
m_Name: WoodCelling_Prefab
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &2140759467227372249
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3209735075952564995}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 72.18446, y: -0.55225, z: 91.49081}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 1942471322536217356}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &6877544168227861141
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3209735075952564995}
|
||||
m_Mesh: {fileID: -2092554398656258221, guid: 1b42665a080463144a6dbfce1200feba, type: 3}
|
||||
--- !u!23 &4884403491460680490
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3209735075952564995}
|
||||
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_ForceMeshLod: -1
|
||||
m_MeshLodSelectionBias: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: 9f0520b2b2583b244b0e2c767593a214, 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: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_GlobalIlluminationMeshLod: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_MaskInteraction: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!65 &1774354476493266722
|
||||
BoxCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3209735075952564995}
|
||||
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: 2.4893725, y: 0.279638, z: 2.4685874}
|
||||
m_Center: {x: 0.0011386871, y: 0.15, z: -0.012834609}
|
||||
--- !u!114 &6057546317908917559
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3209735075952564995}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3239767b01eb17642a9aa5c614618ae7, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.GrassClearer.ClearGrassOnPlace
|
||||
--- !u!1 &4650471915439996732
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2524477793229890458}
|
||||
- component: {fileID: 8255092423828011360}
|
||||
- component: {fileID: 1179469570671982705}
|
||||
m_Layer: 13
|
||||
m_Name: Edge_South
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &2524477793229890458
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4650471915439996732}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: 0.70710576, z: -0, w: 0.7071079}
|
||||
m_LocalPosition: {x: 1.2409973, y: 0, z: 0.0000076293945}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1942471322536217356}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0}
|
||||
--- !u!114 &8255092423828011360
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4650471915439996732}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 0
|
||||
--- !u!135 &1179469570671982705
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4650471915439996732}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &4799995118589501802
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2131578201294031463}
|
||||
- component: {fileID: 3584398175655418314}
|
||||
- component: {fileID: 7190310931469936734}
|
||||
m_Layer: 13
|
||||
m_Name: Edge_East
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &2131578201294031463
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4799995118589501802}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 1.241}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1942471322536217356}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &3584398175655418314
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4799995118589501802}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 0
|
||||
--- !u!135 &7190310931469936734
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4799995118589501802}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &9051056320518420532
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8179181624519070060}
|
||||
- component: {fileID: 1268498989253368643}
|
||||
- component: {fileID: 5138841435529898872}
|
||||
m_Layer: 13
|
||||
m_Name: Edge_West
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &8179181624519070060
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 9051056320518420532}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0.7933523, z: -0, w: 0.60876286}
|
||||
m_LocalPosition: {x: -1.2409973, y: 0, z: -0.0000076293945}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1942471322536217356}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: -105, z: 0}
|
||||
--- !u!114 &1268498989253368643
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 9051056320518420532}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 0
|
||||
--- !u!135 &5138841435529898872
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 9051056320518420532}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
@@ -9,7 +9,7 @@ GameObject:
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 5155531265051259965}
|
||||
m_Layer: 9
|
||||
m_Layer: 14
|
||||
m_Name: Respanw Point
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -42,7 +42,7 @@ GameObject:
|
||||
- component: {fileID: 1974791568506913495}
|
||||
- component: {fileID: 7121555757307145449}
|
||||
- component: {fileID: 8025352644449905843}
|
||||
m_Layer: 9
|
||||
m_Layer: 14
|
||||
m_Name: Dual Bed
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@@ -167,7 +167,7 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 919132149155446097, guid: daccda73d2db7124db470c2a2f478fcf, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 9
|
||||
value: 14
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
|
||||
+255
-246
@@ -1,6 +1,6 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &380923795967029798
|
||||
--- !u!1 &75671179855502526
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
@@ -8,51 +8,51 @@ GameObject:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7491935721759441242}
|
||||
- component: {fileID: 4486794573903890}
|
||||
- component: {fileID: 7387562695430027898}
|
||||
m_Layer: 13
|
||||
m_Name: Edge_South
|
||||
- component: {fileID: 4110633420011679054}
|
||||
- component: {fileID: 7420255900062292832}
|
||||
- component: {fileID: 3414516216822582167}
|
||||
m_Layer: 14
|
||||
m_Name: Wall_SideB
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &7491935721759441242
|
||||
--- !u!4 &4110633420011679054
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 380923795967029798}
|
||||
m_GameObject: {fileID: 75671179855502526}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: 0.70710576, z: -0, w: 0.70710784}
|
||||
m_LocalPosition: {x: 1.25, y: 0, z: 0}
|
||||
m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: -1.2308891, y: -0, z: -0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 5468624895545680116}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0}
|
||||
--- !u!114 &4486794573903890
|
||||
m_Father: {fileID: 678596692599963659}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &7420255900062292832
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 380923795967029798}
|
||||
m_GameObject: {fileID: 75671179855502526}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 0
|
||||
--- !u!135 &7387562695430027898
|
||||
category: 1
|
||||
--- !u!135 &3414516216822582167
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 380923795967029798}
|
||||
m_GameObject: {fileID: 75671179855502526}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
@@ -63,11 +63,11 @@ SphereCollider:
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &689960121515206631
|
||||
--- !u!1 &1813028553946243035
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
@@ -75,86 +75,51 @@ GameObject:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 5468624895545680116}
|
||||
m_Layer: 9
|
||||
m_Name: Snap
|
||||
- component: {fileID: 7971769252731839825}
|
||||
- component: {fileID: 8994203856384649543}
|
||||
- component: {fileID: 7839324189915440117}
|
||||
m_Layer: 14
|
||||
m_Name: Wall_SideA
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &5468624895545680116
|
||||
--- !u!4 &7971769252731839825
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 689960121515206631}
|
||||
m_GameObject: {fileID: 1813028553946243035}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0.231, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 6339924542167595468}
|
||||
- {fileID: 7491935721759441242}
|
||||
- {fileID: 1464325717056940001}
|
||||
- {fileID: 1042469317699432837}
|
||||
m_Father: {fileID: 5800237873906906435}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1656609586749578753
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1464325717056940001}
|
||||
- component: {fileID: 4974477594321398962}
|
||||
- component: {fileID: 2800629085843272837}
|
||||
m_Layer: 13
|
||||
m_Name: Edge_East
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1464325717056940001
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1656609586749578753}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 1.241}
|
||||
m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: 1.2308891, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 5468624895545680116}
|
||||
m_Father: {fileID: 678596692599963659}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &4974477594321398962
|
||||
--- !u!114 &8994203856384649543
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1656609586749578753}
|
||||
m_GameObject: {fileID: 1813028553946243035}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 0
|
||||
--- !u!135 &2800629085843272837
|
||||
category: 1
|
||||
--- !u!135 &7839324189915440117
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1656609586749578753}
|
||||
m_GameObject: {fileID: 1813028553946243035}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
@@ -165,11 +130,11 @@ SphereCollider:
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &3305094920675404345
|
||||
--- !u!1 &2619081753609909139
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
@@ -177,100 +142,42 @@ GameObject:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 5800237873906906435}
|
||||
- component: {fileID: 6597156952845105633}
|
||||
- component: {fileID: 4116859313712376113}
|
||||
- component: {fileID: 7915026797655516421}
|
||||
- component: {fileID: 8958413773651828551}
|
||||
- component: {fileID: 6514514229620551208}
|
||||
- component: {fileID: 4978678982628191274}
|
||||
m_Layer: 9
|
||||
m_Name: Ghost_WoodCelling
|
||||
- component: {fileID: 6656537982428225998}
|
||||
- component: {fileID: 1619651739189685595}
|
||||
- component: {fileID: 3761656243978262773}
|
||||
- component: {fileID: 4182754159189231312}
|
||||
- component: {fileID: 3877867435092391517}
|
||||
m_Layer: 14
|
||||
m_Name: Ghost_Mur en bois
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &5800237873906906435
|
||||
--- !u!4 &6656537982428225998
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3305094920675404345}
|
||||
m_GameObject: {fileID: 2619081753609909139}
|
||||
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: 5468624895545680116}
|
||||
- {fileID: 188722810559598727}
|
||||
- {fileID: 678596692599963659}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &6597156952845105633
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3305094920675404345}
|
||||
m_Mesh: {fileID: -2092554398656258221, guid: 1b42665a080463144a6dbfce1200feba, type: 3}
|
||||
--- !u!23 &4116859313712376113
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3305094920675404345}
|
||||
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_ForceMeshLod: -1
|
||||
m_MeshLodSelectionBias: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: 9f0520b2b2583b244b0e2c767593a214, 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: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_GlobalIlluminationMeshLod: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_MaskInteraction: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!65 &7915026797655516421
|
||||
--- !u!65 &1619651739189685595
|
||||
BoxCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3305094920675404345}
|
||||
m_GameObject: {fileID: 2619081753609909139}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
@@ -283,23 +190,81 @@ BoxCollider:
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 0
|
||||
serializedVersion: 3
|
||||
m_Size: {x: 2.4893725, y: 0.279638, z: 2.4685874}
|
||||
m_Center: {x: 0.0011386871, y: 0.15, z: -0.012834609}
|
||||
--- !u!114 &8958413773651828551
|
||||
m_Size: {x: 2.4617782, y: 2.4805732, z: 0.2520886}
|
||||
m_Center: {x: 0.0095511675, y: 1.2382154, z: -0.024676695}
|
||||
--- !u!114 &3761656243978262773
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3305094920675404345}
|
||||
m_GameObject: {fileID: 2619081753609909139}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 26b716c41e9b56b4baafaf13a523ba2e, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: FishNet.Runtime::FishNet.Object.NetworkObject
|
||||
_localLevelOfDetailCalculationType: 0
|
||||
_useLevelOfDetail: 0
|
||||
_useRootLevelOfDetail: 1
|
||||
NetworkObserver: {fileID: 0}
|
||||
_enablePrediction: 0
|
||||
_predictionType: 0
|
||||
_localReconcileCorrectionType: 2
|
||||
_graphicalObject: {fileID: 0}
|
||||
_detachGraphicalObject: 0
|
||||
_enableStateForwarding: 1
|
||||
_networkTransform: {fileID: 0}
|
||||
_ownerInterpolation: 1
|
||||
_ownerSmoothedProperties: 255
|
||||
_adaptiveInterpolation: 3
|
||||
_spectatorSmoothedProperties: 255
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 16
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 16508065741492498975
|
||||
SceneId: 0
|
||||
SerializedTransformProperties:
|
||||
Position: {x: 0, y: 0, z: 0}
|
||||
Rotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
Scale: {x: 1, y: 1, z: 1}
|
||||
IsValid: 1
|
||||
<IsNested>k__BackingField: 0
|
||||
WasActiveDuringEdit: 0
|
||||
WasActiveDuringEdit_Set1: 1
|
||||
<ComponentIndex>k__BackingField: 0
|
||||
<PredictedSpawn>k__BackingField: {fileID: 0}
|
||||
<PredictedOwner>k__BackingField: {fileID: 0}
|
||||
NetworkBehaviours:
|
||||
- {fileID: 4182754159189231312}
|
||||
InitializedParentNetworkBehaviour: {fileID: 0}
|
||||
InitializedNestedNetworkObjects: []
|
||||
RuntimeParentNetworkBehaviour: {fileID: 0}
|
||||
RuntimeChildNetworkBehaviours: []
|
||||
_isNetworked: 1
|
||||
_isSpawnable: 1
|
||||
_isGlobal: 0
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!114 &4182754159189231312
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2619081753609909139}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: a2836e36774ca1c4bbbee976e17b649c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: FishNet.Runtime::FishNet.Component.Transforming.NetworkTransform
|
||||
_componentIndexCache: 0
|
||||
_addedNetworkObject: {fileID: 6514514229620551208}
|
||||
_networkObjectCache: {fileID: 6514514229620551208}
|
||||
_addedNetworkObject: {fileID: 3761656243978262773}
|
||||
_networkObjectCache: {fileID: 3761656243978262773}
|
||||
_componentConfiguration: 0
|
||||
_synchronizeParent: 0
|
||||
_packing:
|
||||
@@ -331,82 +296,24 @@ MonoBehaviour:
|
||||
X: 0
|
||||
Y: 0
|
||||
Z: 0
|
||||
--- !u!114 &6514514229620551208
|
||||
--- !u!114 &3877867435092391517
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3305094920675404345}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 26b716c41e9b56b4baafaf13a523ba2e, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: FishNet.Runtime::FishNet.Object.NetworkObject
|
||||
_localLevelOfDetailCalculationType: 0
|
||||
_useLevelOfDetail: 0
|
||||
_useRootLevelOfDetail: 1
|
||||
NetworkObserver: {fileID: 0}
|
||||
_enablePrediction: 0
|
||||
_predictionType: 0
|
||||
_localReconcileCorrectionType: 2
|
||||
_graphicalObject: {fileID: 0}
|
||||
_detachGraphicalObject: 0
|
||||
_enableStateForwarding: 1
|
||||
_networkTransform: {fileID: 0}
|
||||
_ownerInterpolation: 1
|
||||
_ownerSmoothedProperties: 255
|
||||
_adaptiveInterpolation: 3
|
||||
_spectatorSmoothedProperties: 255
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 0
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 12948973730721088167
|
||||
SceneId: 0
|
||||
SerializedTransformProperties:
|
||||
Position: {x: 72.18446, y: -0.55225, z: 91.49081}
|
||||
Rotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
Scale: {x: 1, y: 1, z: 1}
|
||||
IsValid: 1
|
||||
<IsNested>k__BackingField: 0
|
||||
WasActiveDuringEdit: 0
|
||||
WasActiveDuringEdit_Set1: 1
|
||||
<ComponentIndex>k__BackingField: 0
|
||||
<PredictedSpawn>k__BackingField: {fileID: 0}
|
||||
<PredictedOwner>k__BackingField: {fileID: 0}
|
||||
NetworkBehaviours:
|
||||
- {fileID: 8958413773651828551}
|
||||
InitializedParentNetworkBehaviour: {fileID: 0}
|
||||
InitializedNestedNetworkObjects: []
|
||||
RuntimeParentNetworkBehaviour: {fileID: 0}
|
||||
RuntimeChildNetworkBehaviours: []
|
||||
_isNetworked: 1
|
||||
_isSpawnable: 1
|
||||
_isGlobal: 0
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584181721604556210
|
||||
--- !u!114 &4978678982628191274
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3305094920675404345}
|
||||
m_GameObject: {fileID: 2619081753609909139}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3da63aae88fc0f547b84e1d74e927e39, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildGhost
|
||||
footprint: {fileID: 7915026797655516421}
|
||||
footprint: {fileID: 1619651739189685595}
|
||||
renderers:
|
||||
- {fileID: 4116859313712376113}
|
||||
- {fileID: 3240891548206880328}
|
||||
validOverlay: {fileID: 2100000, guid: 0e580295bcb9d8e4ab68d1a7f11efa63, type: 2}
|
||||
invalidOverlay: {fileID: 2100000, guid: 0a594aa41ef0d7e428398c2c32772c64, type: 2}
|
||||
--- !u!1 &3743132779249447582
|
||||
--- !u!1 &3218417833338959851
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
@@ -414,51 +321,51 @@ GameObject:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1042469317699432837}
|
||||
- component: {fileID: 2008333350179210541}
|
||||
- component: {fileID: 3028437067479239787}
|
||||
m_Layer: 13
|
||||
m_Name: Edge_West
|
||||
- component: {fileID: 5996419176788311315}
|
||||
- component: {fileID: 8140059345406537986}
|
||||
- component: {fileID: 3039132073524866295}
|
||||
m_Layer: 14
|
||||
m_Name: Wall_Foot
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1042469317699432837
|
||||
--- !u!4 &5996419176788311315
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3743132779249447582}
|
||||
m_GameObject: {fileID: 3218417833338959851}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0.70710576, z: -0, w: 0.70710784}
|
||||
m_LocalPosition: {x: -1.25, y: 0, z: 0}
|
||||
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: 0, y: -1.254755, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 5468624895545680116}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0}
|
||||
--- !u!114 &2008333350179210541
|
||||
m_Father: {fileID: 678596692599963659}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &8140059345406537986
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3743132779249447582}
|
||||
m_GameObject: {fileID: 3218417833338959851}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 0
|
||||
--- !u!135 &3028437067479239787
|
||||
category: 1
|
||||
--- !u!135 &3039132073524866295
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3743132779249447582}
|
||||
m_GameObject: {fileID: 3218417833338959851}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
@@ -469,11 +376,11 @@ SphereCollider:
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &4899989921195697127
|
||||
--- !u!1 &4003699280906804390
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
@@ -481,51 +388,86 @@ GameObject:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6339924542167595468}
|
||||
- component: {fileID: 1765004770665976975}
|
||||
- component: {fileID: 5073057946224045579}
|
||||
m_Layer: 13
|
||||
m_Name: Edge_North
|
||||
- component: {fileID: 678596692599963659}
|
||||
m_Layer: 14
|
||||
m_Name: Snap
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &6339924542167595468
|
||||
--- !u!4 &678596692599963659
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4899989921195697127}
|
||||
m_GameObject: {fileID: 4003699280906804390}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -1, z: -0, w: 0.0000029504295}
|
||||
m_LocalPosition: {x: 0, y: 0, z: -1.2409973}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0.0095511675, y: 1.2509763, z: -0.0246767}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 4620887056281619740}
|
||||
- {fileID: 5996419176788311315}
|
||||
- {fileID: 7971769252731839825}
|
||||
- {fileID: 4110633420011679054}
|
||||
m_Father: {fileID: 6656537982428225998}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &8075198193928054193
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4620887056281619740}
|
||||
- component: {fileID: 7373577774691933245}
|
||||
- component: {fileID: 1575446889901753875}
|
||||
m_Layer: 14
|
||||
m_Name: RoofMount
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &4620887056281619740
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8075198193928054193}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0.7071068, z: 0.7071068, w: 0}
|
||||
m_LocalPosition: {x: 0, y: 1.254755, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 5468624895545680116}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: -180, z: 0}
|
||||
--- !u!114 &1765004770665976975
|
||||
m_Father: {fileID: 678596692599963659}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &7373577774691933245
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4899989921195697127}
|
||||
m_GameObject: {fileID: 8075198193928054193}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 0
|
||||
--- !u!135 &5073057946224045579
|
||||
category: 2
|
||||
--- !u!135 &1575446889901753875
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4899989921195697127}
|
||||
m_GameObject: {fileID: 8075198193928054193}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
@@ -536,7 +478,74 @@ SphereCollider:
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1001 &3536057335109221040
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 6656537982428225998}
|
||||
m_Modifications:
|
||||
- target: {fileID: 421010513357740068, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Wall_Prefab
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
--- !u!4 &188722810559598727 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 3714593433905687095, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
m_PrefabInstance: {fileID: 3536057335109221040}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!23 &3240891548206880328 stripped
|
||||
MeshRenderer:
|
||||
m_CorrespondingSourceObject: {fileID: 2155936523658636536, guid: ab9bde15c24bddc43a356e587b96f67c, type: 3}
|
||||
m_PrefabInstance: {fileID: 3536057335109221040}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 75f36345a5b955a45af12d2600894962
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,321 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &3618108517299114000
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3442713528874491935}
|
||||
- component: {fileID: 6133395046125901231}
|
||||
- component: {fileID: 5182197038018994757}
|
||||
- component: {fileID: 4872016000618054028}
|
||||
- component: {fileID: 4703411730269983851}
|
||||
m_Layer: 14
|
||||
m_Name: Ghost_NewBuildable
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &3442713528874491935
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3618108517299114000}
|
||||
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: 8509319730477315567}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!65 &6133395046125901231
|
||||
BoxCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3618108517299114000}
|
||||
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: 0
|
||||
serializedVersion: 3
|
||||
m_Size: {x: 1.2221766, y: 0.7923986, z: 0.716973}
|
||||
m_Center: {x: 0.0018180013, y: 0.39221516, z: 0.0063577592}
|
||||
--- !u!114 &5182197038018994757
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3618108517299114000}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 26b716c41e9b56b4baafaf13a523ba2e, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: FishNet.Runtime::FishNet.Object.NetworkObject
|
||||
_localLevelOfDetailCalculationType: 0
|
||||
_useLevelOfDetail: 0
|
||||
_useRootLevelOfDetail: 1
|
||||
NetworkObserver: {fileID: 0}
|
||||
_enablePrediction: 0
|
||||
_predictionType: 0
|
||||
_localReconcileCorrectionType: 2
|
||||
_graphicalObject: {fileID: 0}
|
||||
_detachGraphicalObject: 0
|
||||
_enableStateForwarding: 1
|
||||
_networkTransform: {fileID: 0}
|
||||
_ownerInterpolation: 1
|
||||
_ownerSmoothedProperties: 255
|
||||
_adaptiveInterpolation: 3
|
||||
_spectatorSmoothedProperties: 255
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 14
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 15960435111263854789
|
||||
SceneId: 0
|
||||
SerializedTransformProperties:
|
||||
Position: {x: 0, y: 0, z: 0}
|
||||
Rotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
Scale: {x: 1, y: 1, z: 1}
|
||||
IsValid: 1
|
||||
<IsNested>k__BackingField: 0
|
||||
WasActiveDuringEdit: 0
|
||||
WasActiveDuringEdit_Set1: 1
|
||||
<ComponentIndex>k__BackingField: 0
|
||||
<PredictedSpawn>k__BackingField: {fileID: 0}
|
||||
<PredictedOwner>k__BackingField: {fileID: 0}
|
||||
NetworkBehaviours:
|
||||
- {fileID: 4872016000618054028}
|
||||
InitializedParentNetworkBehaviour: {fileID: 0}
|
||||
InitializedNestedNetworkObjects: []
|
||||
RuntimeParentNetworkBehaviour: {fileID: 0}
|
||||
RuntimeChildNetworkBehaviours: []
|
||||
_isNetworked: 1
|
||||
_isSpawnable: 1
|
||||
_isGlobal: 0
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!114 &4872016000618054028
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3618108517299114000}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: a2836e36774ca1c4bbbee976e17b649c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: FishNet.Runtime::FishNet.Component.Transforming.NetworkTransform
|
||||
_componentIndexCache: 0
|
||||
_addedNetworkObject: {fileID: 5182197038018994757}
|
||||
_networkObjectCache: {fileID: 5182197038018994757}
|
||||
_componentConfiguration: 0
|
||||
_synchronizeParent: 0
|
||||
_packing:
|
||||
Position: 1
|
||||
Rotation: 1
|
||||
Scale: 0
|
||||
_useScaledTime: 1
|
||||
_interpolation: 2
|
||||
_extrapolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
_clientAuthoritative: 1
|
||||
_sendToOwner: 1
|
||||
_interval: 1
|
||||
_synchronizePosition: 1
|
||||
_positionSensitivity: 0.001
|
||||
_positionSnapping:
|
||||
X: 0
|
||||
Y: 0
|
||||
Z: 0
|
||||
_synchronizeRotation: 1
|
||||
_rotationSnapping:
|
||||
X: 0
|
||||
Y: 0
|
||||
Z: 0
|
||||
_synchronizeScale: 1
|
||||
_scaleSensitivity: 0.001
|
||||
_scaleSnapping:
|
||||
X: 0
|
||||
Y: 0
|
||||
Z: 0
|
||||
--- !u!114 &4703411730269983851
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3618108517299114000}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3da63aae88fc0f547b84e1d74e927e39, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildGhost
|
||||
footprint: {fileID: 6133395046125901231}
|
||||
renderers:
|
||||
- {fileID: 7786917842789155548}
|
||||
- {fileID: 8800945613590286659}
|
||||
- {fileID: 6373088977799208954}
|
||||
- {fileID: 3630765017617655973}
|
||||
- {fileID: 8250413398233554600}
|
||||
- {fileID: 8020836188613664224}
|
||||
validOverlay: {fileID: 2100000, guid: 0e580295bcb9d8e4ab68d1a7f11efa63, type: 2}
|
||||
invalidOverlay: {fileID: 2100000, guid: 0a594aa41ef0d7e428398c2c32772c64, type: 2}
|
||||
--- !u!1001 &995284928669643586
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 3442713528874491935}
|
||||
m_Modifications:
|
||||
- target: {fileID: 1205429200353802584, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 14
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2488455438653353329, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 14
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2834765333546211928, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 14
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3477519202729442059, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 14
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3730502645607281877, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 14
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4283136006545383452, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_Enabled
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4380831863138714029, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 14
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5785395719311195047, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: WasActiveDuringEdit
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6182587958533565947, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_Enabled
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8111840307215440919, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Chest
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8111840307215440919, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 14
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8727277968094159911, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_Enabled
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
--- !u!23 &3630765017617655973 stripped
|
||||
MeshRenderer:
|
||||
m_CorrespondingSourceObject: {fileID: 4588297011889216487, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
m_PrefabInstance: {fileID: 995284928669643586}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!23 &6373088977799208954 stripped
|
||||
MeshRenderer:
|
||||
m_CorrespondingSourceObject: {fileID: 6178433971241266360, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
m_PrefabInstance: {fileID: 995284928669643586}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!23 &7786917842789155548 stripped
|
||||
MeshRenderer:
|
||||
m_CorrespondingSourceObject: {fileID: 7052433451743326622, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
m_PrefabInstance: {fileID: 995284928669643586}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!23 &8020836188613664224 stripped
|
||||
MeshRenderer:
|
||||
m_CorrespondingSourceObject: {fileID: 7097754766906568354, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
m_PrefabInstance: {fileID: 995284928669643586}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!23 &8250413398233554600 stripped
|
||||
MeshRenderer:
|
||||
m_CorrespondingSourceObject: {fileID: 9201044371878899178, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
m_PrefabInstance: {fileID: 995284928669643586}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!4 &8509319730477315567 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 8924123916003559085, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
m_PrefabInstance: {fileID: 995284928669643586}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!23 &8800945613590286659 stripped
|
||||
MeshRenderer:
|
||||
m_CorrespondingSourceObject: {fileID: 8641505232673808897, guid: 6a1de89366a3f0741877f7cd3ca11cd9, type: 3}
|
||||
m_PrefabInstance: {fileID: 995284928669643586}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 62ac65083695cf640afb7a4c8d803f52
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,556 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &3207235421607730643
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2334593477414593074}
|
||||
- component: {fileID: 4259463730000273668}
|
||||
- component: {fileID: 8180767268016421964}
|
||||
- component: {fileID: 5061449885792543640}
|
||||
- component: {fileID: 8480802064931159789}
|
||||
m_Layer: 14
|
||||
m_Name: Ghost_Plafond
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &2334593477414593074
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3207235421607730643}
|
||||
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: 2480906258353145818}
|
||||
- {fileID: 8465296985294472986}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!65 &4259463730000273668
|
||||
BoxCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3207235421607730643}
|
||||
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: 0
|
||||
serializedVersion: 3
|
||||
m_Size: {x: 2.4893725, y: 0.26348943, z: 2.4685874}
|
||||
m_Center: {x: 0.0011386871, y: 0.13261798, z: -0.012834549}
|
||||
--- !u!114 &8180767268016421964
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3207235421607730643}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 26b716c41e9b56b4baafaf13a523ba2e, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: FishNet.Runtime::FishNet.Object.NetworkObject
|
||||
_localLevelOfDetailCalculationType: 0
|
||||
_useLevelOfDetail: 0
|
||||
_useRootLevelOfDetail: 1
|
||||
NetworkObserver: {fileID: 0}
|
||||
_enablePrediction: 0
|
||||
_predictionType: 0
|
||||
_localReconcileCorrectionType: 2
|
||||
_graphicalObject: {fileID: 0}
|
||||
_detachGraphicalObject: 0
|
||||
_enableStateForwarding: 1
|
||||
_networkTransform: {fileID: 0}
|
||||
_ownerInterpolation: 1
|
||||
_ownerSmoothedProperties: 255
|
||||
_adaptiveInterpolation: 3
|
||||
_spectatorSmoothedProperties: 255
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 9
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 9001145751081742879
|
||||
SceneId: 0
|
||||
SerializedTransformProperties:
|
||||
Position: {x: 0, y: 0, z: 0}
|
||||
Rotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
Scale: {x: 1, y: 1, z: 1}
|
||||
IsValid: 1
|
||||
<IsNested>k__BackingField: 0
|
||||
WasActiveDuringEdit: 0
|
||||
WasActiveDuringEdit_Set1: 1
|
||||
<ComponentIndex>k__BackingField: 0
|
||||
<PredictedSpawn>k__BackingField: {fileID: 0}
|
||||
<PredictedOwner>k__BackingField: {fileID: 0}
|
||||
NetworkBehaviours:
|
||||
- {fileID: 5061449885792543640}
|
||||
InitializedParentNetworkBehaviour: {fileID: 0}
|
||||
InitializedNestedNetworkObjects: []
|
||||
RuntimeParentNetworkBehaviour: {fileID: 0}
|
||||
RuntimeChildNetworkBehaviours: []
|
||||
_isNetworked: 1
|
||||
_isSpawnable: 1
|
||||
_isGlobal: 0
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!114 &5061449885792543640
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3207235421607730643}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: a2836e36774ca1c4bbbee976e17b649c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: FishNet.Runtime::FishNet.Component.Transforming.NetworkTransform
|
||||
_componentIndexCache: 0
|
||||
_addedNetworkObject: {fileID: 8180767268016421964}
|
||||
_networkObjectCache: {fileID: 8180767268016421964}
|
||||
_componentConfiguration: 0
|
||||
_synchronizeParent: 0
|
||||
_packing:
|
||||
Position: 1
|
||||
Rotation: 1
|
||||
Scale: 0
|
||||
_useScaledTime: 1
|
||||
_interpolation: 2
|
||||
_extrapolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
_clientAuthoritative: 1
|
||||
_sendToOwner: 1
|
||||
_interval: 1
|
||||
_synchronizePosition: 1
|
||||
_positionSensitivity: 0.001
|
||||
_positionSnapping:
|
||||
X: 0
|
||||
Y: 0
|
||||
Z: 0
|
||||
_synchronizeRotation: 1
|
||||
_rotationSnapping:
|
||||
X: 0
|
||||
Y: 0
|
||||
Z: 0
|
||||
_synchronizeScale: 1
|
||||
_scaleSensitivity: 0.001
|
||||
_scaleSnapping:
|
||||
X: 0
|
||||
Y: 0
|
||||
Z: 0
|
||||
--- !u!114 &8480802064931159789
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3207235421607730643}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3da63aae88fc0f547b84e1d74e927e39, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildGhost
|
||||
footprint: {fileID: 4259463730000273668}
|
||||
renderers:
|
||||
- {fileID: 867643096524521749}
|
||||
validOverlay: {fileID: 2100000, guid: 0e580295bcb9d8e4ab68d1a7f11efa63, type: 2}
|
||||
invalidOverlay: {fileID: 2100000, guid: 0a594aa41ef0d7e428398c2c32772c64, type: 2}
|
||||
--- !u!1 &4858757756608647664
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4602981238972246013}
|
||||
- component: {fileID: 3875791938832550371}
|
||||
- component: {fileID: 9088785979806830343}
|
||||
m_Layer: 14
|
||||
m_Name: Roof_East
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &4602981238972246013
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4858757756608647664}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: 1.2446862, y: 0.139819, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 8465296985294472986}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &3875791938832550371
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4858757756608647664}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 2
|
||||
--- !u!135 &9088785979806830343
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4858757756608647664}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &5512122055084541296
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 859550837518753123}
|
||||
- component: {fileID: 8906642515955517611}
|
||||
- component: {fileID: 3352744744535186914}
|
||||
m_Layer: 14
|
||||
m_Name: Roof_West
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &859550837518753123
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5512122055084541296}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: -0.7071068, z: -0, w: 0.7071068}
|
||||
m_LocalPosition: {x: -1.2446862, y: 0.139819, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 8465296985294472986}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &8906642515955517611
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5512122055084541296}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 2
|
||||
--- !u!135 &3352744744535186914
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5512122055084541296}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &7905636741028357460
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 5416205631251670395}
|
||||
- component: {fileID: 1685552703306867197}
|
||||
- component: {fileID: 5236667487884953350}
|
||||
m_Layer: 14
|
||||
m_Name: Roof_North
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &5416205631251670395
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7905636741028357460}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0.139819, z: 1.2342937}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 8465296985294472986}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1685552703306867197
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7905636741028357460}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 2
|
||||
--- !u!135 &5236667487884953350
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7905636741028357460}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &7915600407017371744
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8465296985294472986}
|
||||
m_Layer: 14
|
||||
m_Name: Snap
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &8465296985294472986
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7915600407017371744}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0.0011386871, y: 0.14069226, z: -0.012834609}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 5416205631251670395}
|
||||
- {fileID: 8344125627154051844}
|
||||
- {fileID: 4602981238972246013}
|
||||
- {fileID: 859550837518753123}
|
||||
m_Father: {fileID: 2334593477414593074}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &8872999223486918296
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8344125627154051844}
|
||||
- component: {fileID: 2148120599378747522}
|
||||
- component: {fileID: 6712280106737377154}
|
||||
m_Layer: 14
|
||||
m_Name: Roof_South
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &8344125627154051844
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8872999223486918296}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
|
||||
m_LocalPosition: {x: 0, y: 0.139819, z: -1.2342937}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 8465296985294472986}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &2148120599378747522
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8872999223486918296}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 2
|
||||
--- !u!135 &6712280106737377154
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8872999223486918296}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1001 &5595144700053915066
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 2334593477414593074}
|
||||
m_Modifications:
|
||||
- target: {fileID: 6454600228789530739, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: WoodCelling_Prefab
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6454600228789530739, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 14
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents:
|
||||
- {fileID: 5106284389308251883, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
--- !u!23 &867643096524521749 stripped
|
||||
MeshRenderer:
|
||||
m_CorrespondingSourceObject: {fileID: 4733158660651713711, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
m_PrefabInstance: {fileID: 5595144700053915066}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!4 &2480906258353145818 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
m_PrefabInstance: {fileID: 5595144700053915066}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6bf8e95dcb3a6714b910f625259c6774
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,823 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &430521095547925462
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8190069976148595663}
|
||||
- component: {fileID: 6122837660798928291}
|
||||
- component: {fileID: 4294551351110242468}
|
||||
m_Layer: 14
|
||||
m_Name: WallMount_West
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &8190069976148595663
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 430521095547925462}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0.7071068, z: 0.7071068, w: 0}
|
||||
m_LocalPosition: {x: -1.2446862, y: 0.139819, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 248944562337532593}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &6122837660798928291
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 430521095547925462}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 1
|
||||
--- !u!135 &4294551351110242468
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 430521095547925462}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1318648983787145065
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4898633667536099325}
|
||||
- component: {fileID: 2465953508121486279}
|
||||
- component: {fileID: 2079637758399699484}
|
||||
m_Layer: 14
|
||||
m_Name: WallMount_South
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &4898633667536099325
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1318648983787145065}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0.7071068, z: 0.7071068, w: 0}
|
||||
m_LocalPosition: {x: 0, y: 0.139819, z: -1.2342937}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 248944562337532593}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &2465953508121486279
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1318648983787145065}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 1
|
||||
--- !u!135 &2079637758399699484
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1318648983787145065}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &2927533322789073568
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8992648873872040683}
|
||||
- component: {fileID: 6483042259896254011}
|
||||
- component: {fileID: 3085183870902717225}
|
||||
m_Layer: 14
|
||||
m_Name: Floor_North
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &8992648873872040683
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2927533322789073568}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 1.2342937}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 248944562337532593}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &6483042259896254011
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2927533322789073568}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 0
|
||||
--- !u!135 &3085183870902717225
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2927533322789073568}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &3249437662983405793
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2000180693350570291}
|
||||
- component: {fileID: 3360874714659947842}
|
||||
- component: {fileID: 478132120227767175}
|
||||
m_Layer: 14
|
||||
m_Name: Floor_East
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &2000180693350570291
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3249437662983405793}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: 1.2446862, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 248944562337532593}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &3360874714659947842
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3249437662983405793}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 0
|
||||
--- !u!135 &478132120227767175
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3249437662983405793}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &4478274600058527901
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7627621741129187602}
|
||||
- component: {fileID: 548701492648806719}
|
||||
- component: {fileID: 749410258778105127}
|
||||
m_Layer: 14
|
||||
m_Name: WallMount_East
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &7627621741129187602
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4478274600058527901}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0.7071068, z: 0.7071068, w: 0}
|
||||
m_LocalPosition: {x: 1.2446862, y: 0.139819, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 248944562337532593}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &548701492648806719
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4478274600058527901}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 1
|
||||
--- !u!135 &749410258778105127
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4478274600058527901}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &4757985137243063122
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7787367724508377841}
|
||||
- component: {fileID: 6214993921729326338}
|
||||
- component: {fileID: 7476539020765907155}
|
||||
m_Layer: 14
|
||||
m_Name: Floor_West
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &7787367724508377841
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4757985137243063122}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: -0.7071068, z: -0, w: 0.7071068}
|
||||
m_LocalPosition: {x: -1.2446862, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 248944562337532593}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &6214993921729326338
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4757985137243063122}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 0
|
||||
--- !u!135 &7476539020765907155
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4757985137243063122}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &6111271289325253693
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2447329633983607400}
|
||||
- component: {fileID: 4701871052974855494}
|
||||
- component: {fileID: 3524837029331905181}
|
||||
m_Layer: 14
|
||||
m_Name: WallMount_North
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &2447329633983607400
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6111271289325253693}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0.7071068, z: 0.7071068, w: 0}
|
||||
m_LocalPosition: {x: 0, y: 0.139819, z: 1.2342937}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 248944562337532593}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &4701871052974855494
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6111271289325253693}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 1
|
||||
--- !u!135 &3524837029331905181
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6111271289325253693}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &7020256173589722522
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 248944562337532593}
|
||||
m_Layer: 14
|
||||
m_Name: Snap
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &248944562337532593
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7020256173589722522}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0.0011386871, y: 0.14069226, z: -0.012834609}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 8992648873872040683}
|
||||
- {fileID: 4674747199710507129}
|
||||
- {fileID: 2000180693350570291}
|
||||
- {fileID: 7787367724508377841}
|
||||
- {fileID: 2447329633983607400}
|
||||
- {fileID: 4898633667536099325}
|
||||
- {fileID: 7627621741129187602}
|
||||
- {fileID: 8190069976148595663}
|
||||
m_Father: {fileID: 8969264719775463366}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &7177951504346610668
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8969264719775463366}
|
||||
- component: {fileID: 4942983283109352063}
|
||||
- component: {fileID: 6193610700165479330}
|
||||
- component: {fileID: 5834036106823394854}
|
||||
- component: {fileID: 3315425253147515194}
|
||||
m_Layer: 14
|
||||
m_Name: Ghost_Sol en bois
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &8969264719775463366
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7177951504346610668}
|
||||
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: 3907747113190157830}
|
||||
- {fileID: 248944562337532593}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!65 &4942983283109352063
|
||||
BoxCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7177951504346610668}
|
||||
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: 0
|
||||
serializedVersion: 3
|
||||
m_Size: {x: 2.4893725, y: 0.279638, z: 2.4685874}
|
||||
m_Center: {x: 0.0011386871, y: 0.14069226, z: -0.012834609}
|
||||
--- !u!114 &6193610700165479330
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7177951504346610668}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 26b716c41e9b56b4baafaf13a523ba2e, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: FishNet.Runtime::FishNet.Object.NetworkObject
|
||||
_localLevelOfDetailCalculationType: 0
|
||||
_useLevelOfDetail: 0
|
||||
_useRootLevelOfDetail: 1
|
||||
NetworkObserver: {fileID: 0}
|
||||
_enablePrediction: 0
|
||||
_predictionType: 0
|
||||
_localReconcileCorrectionType: 2
|
||||
_graphicalObject: {fileID: 0}
|
||||
_detachGraphicalObject: 0
|
||||
_enableStateForwarding: 1
|
||||
_networkTransform: {fileID: 0}
|
||||
_ownerInterpolation: 1
|
||||
_ownerSmoothedProperties: 255
|
||||
_adaptiveInterpolation: 3
|
||||
_spectatorSmoothedProperties: 255
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 20
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 17746024873254907359
|
||||
SceneId: 0
|
||||
SerializedTransformProperties:
|
||||
Position: {x: 0, y: 0, z: 0}
|
||||
Rotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
Scale: {x: 1, y: 1, z: 1}
|
||||
IsValid: 1
|
||||
<IsNested>k__BackingField: 0
|
||||
WasActiveDuringEdit: 0
|
||||
WasActiveDuringEdit_Set1: 1
|
||||
<ComponentIndex>k__BackingField: 0
|
||||
<PredictedSpawn>k__BackingField: {fileID: 0}
|
||||
<PredictedOwner>k__BackingField: {fileID: 0}
|
||||
NetworkBehaviours:
|
||||
- {fileID: 5834036106823394854}
|
||||
InitializedParentNetworkBehaviour: {fileID: 0}
|
||||
InitializedNestedNetworkObjects: []
|
||||
RuntimeParentNetworkBehaviour: {fileID: 0}
|
||||
RuntimeChildNetworkBehaviours: []
|
||||
_isNetworked: 1
|
||||
_isSpawnable: 1
|
||||
_isGlobal: 0
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!114 &5834036106823394854
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7177951504346610668}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: a2836e36774ca1c4bbbee976e17b649c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: FishNet.Runtime::FishNet.Component.Transforming.NetworkTransform
|
||||
_componentIndexCache: 0
|
||||
_addedNetworkObject: {fileID: 6193610700165479330}
|
||||
_networkObjectCache: {fileID: 6193610700165479330}
|
||||
_componentConfiguration: 0
|
||||
_synchronizeParent: 0
|
||||
_packing:
|
||||
Position: 1
|
||||
Rotation: 1
|
||||
Scale: 0
|
||||
_useScaledTime: 1
|
||||
_interpolation: 2
|
||||
_extrapolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
_clientAuthoritative: 1
|
||||
_sendToOwner: 1
|
||||
_interval: 1
|
||||
_synchronizePosition: 1
|
||||
_positionSensitivity: 0.001
|
||||
_positionSnapping:
|
||||
X: 0
|
||||
Y: 0
|
||||
Z: 0
|
||||
_synchronizeRotation: 1
|
||||
_rotationSnapping:
|
||||
X: 0
|
||||
Y: 0
|
||||
Z: 0
|
||||
_synchronizeScale: 1
|
||||
_scaleSensitivity: 0.001
|
||||
_scaleSnapping:
|
||||
X: 0
|
||||
Y: 0
|
||||
Z: 0
|
||||
--- !u!114 &3315425253147515194
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7177951504346610668}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3da63aae88fc0f547b84e1d74e927e39, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildGhost
|
||||
footprint: {fileID: 4942983283109352063}
|
||||
renderers:
|
||||
- {fileID: 1755441368672839881}
|
||||
validOverlay: {fileID: 2100000, guid: 0e580295bcb9d8e4ab68d1a7f11efa63, type: 2}
|
||||
invalidOverlay: {fileID: 2100000, guid: 0a594aa41ef0d7e428398c2c32772c64, type: 2}
|
||||
--- !u!1 &7614968041141383678
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4674747199710507129}
|
||||
- component: {fileID: 7655421992682191301}
|
||||
- component: {fileID: 4568402137604565735}
|
||||
m_Layer: 14
|
||||
m_Name: Floor_South
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &4674747199710507129
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7614968041141383678}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
|
||||
m_LocalPosition: {x: 0, y: 0, z: -1.2342937}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 248944562337532593}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &7655421992682191301
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7614968041141383678}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 977546eeac153c04c9a08997c2a8609c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildSnapPoint
|
||||
category: 0
|
||||
--- !u!135 &4568402137604565735
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7614968041141383678}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1001 &6481553042355301478
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 8969264719775463366}
|
||||
m_Modifications:
|
||||
- target: {fileID: 6454600228789530739, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: WoodCelling_Prefab
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
--- !u!23 &1755441368672839881 stripped
|
||||
MeshRenderer:
|
||||
m_CorrespondingSourceObject: {fileID: 4733158660651713711, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
m_PrefabInstance: {fileID: 6481553042355301478}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!4 &3907747113190157830 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 8054689501814014560, guid: c3ee7b90147ebe042bf1a600a96b0abf, type: 3}
|
||||
m_PrefabInstance: {fileID: 6481553042355301478}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f046cc05e536953459b254c18199682d
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -297,7 +297,7 @@ MonoBehaviour:
|
||||
_spectatorInterpolation: 2
|
||||
_enableTeleport: 0
|
||||
_teleportThreshold: 1
|
||||
<PrefabId>k__BackingField: 10
|
||||
<PrefabId>k__BackingField: 11
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
<AssetPathHash>k__BackingField: 10703378808306651026
|
||||
SceneId: 0
|
||||
@@ -324,7 +324,7 @@ MonoBehaviour:
|
||||
_initializeOrder: 0
|
||||
_preventDespawnOnDisconnect: 0
|
||||
_defaultDespawnType: 0
|
||||
_initializedTimestamp: -8584181721604556210
|
||||
_initializedTimestamp: -8584169414543529327
|
||||
--- !u!1 &5855379289088646484
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
+242
-132
@@ -1,6 +1,6 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &1449196833709694992
|
||||
--- !u!1 &542849118745372900
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
@@ -8,10 +8,218 @@ GameObject:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 607827644847487143}
|
||||
- component: {fileID: 3963579599117951989}
|
||||
- component: {fileID: 5725644289869038764}
|
||||
- component: {fileID: 7776490238597678248}
|
||||
- component: {fileID: 310967193875547842}
|
||||
- component: {fileID: 4526848622919824119}
|
||||
m_Layer: 5
|
||||
m_Name: Ressources Needed Ui
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &310967193875547842
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 542849118745372900}
|
||||
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: 198739833623371999}
|
||||
- {fileID: 584408140031347170}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 182.5, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &4526848622919824119
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 542849118745372900}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: b197776c5c48d19409d8b73a5f77bcfb, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.UI.BuildCostEntryUI
|
||||
icon: {fileID: 5353320151652771885}
|
||||
amountLabel: {fileID: 3165878011081759808}
|
||||
affordColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
missingColor: {r: 1, g: 0.35, b: 0.35, a: 1}
|
||||
--- !u!1 &2645899834466809626
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 198739833623371999}
|
||||
- component: {fileID: 429033920032492496}
|
||||
- component: {fileID: 5978422469185035414}
|
||||
m_Layer: 5
|
||||
m_Name: Image
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &198739833623371999
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2645899834466809626}
|
||||
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: []
|
||||
m_Father: {fileID: 310967193875547842}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 1.5858, y: 0}
|
||||
m_SizeDelta: {x: -14.227, y: -35.256}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &429033920032492496
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2645899834466809626}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &5978422469185035414
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2645899834466809626}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.3679245, g: 0.3679245, b: 0.3679245, a: 0.28235295}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 21300000, guid: c4f7f8debbcf3cf4faf280628cab55f9, type: 3}
|
||||
m_Type: 1
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!1 &3192063945015413932
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 584408140031347170}
|
||||
- component: {fileID: 2990510669376542892}
|
||||
- component: {fileID: 7503349329125450186}
|
||||
m_Layer: 5
|
||||
m_Name: GameObject
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &584408140031347170
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3192063945015413932}
|
||||
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: 3991399002855118185}
|
||||
- {fileID: 6531536504494789601}
|
||||
m_Father: {fileID: 310967193875547842}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: -6.9, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &2990510669376542892
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3192063945015413932}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.ContentSizeFitter
|
||||
m_HorizontalFit: 2
|
||||
m_VerticalFit: 2
|
||||
--- !u!114 &7503349329125450186
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3192063945015413932}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.HorizontalLayoutGroup
|
||||
m_Padding:
|
||||
m_Left: 0
|
||||
m_Right: 0
|
||||
m_Top: 0
|
||||
m_Bottom: 0
|
||||
m_ChildAlignment: 4
|
||||
m_Spacing: 0
|
||||
m_ChildForceExpandWidth: 1
|
||||
m_ChildForceExpandHeight: 1
|
||||
m_ChildControlWidth: 0
|
||||
m_ChildControlHeight: 0
|
||||
m_ChildScaleWidth: 0
|
||||
m_ChildScaleHeight: 0
|
||||
m_ReverseArrangement: 0
|
||||
--- !u!1 &5347819237772639510
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6531536504494789601}
|
||||
- component: {fileID: 1370747412458166393}
|
||||
- component: {fileID: 3165878011081759808}
|
||||
- component: {fileID: 3601661005796488396}
|
||||
m_Layer: 5
|
||||
m_Name: Text (TMP)
|
||||
m_TagString: Untagged
|
||||
@@ -19,40 +227,40 @@ GameObject:
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &607827644847487143
|
||||
--- !u!224 &6531536504494789601
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1449196833709694992}
|
||||
m_GameObject: {fileID: 5347819237772639510}
|
||||
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: []
|
||||
m_Father: {fileID: 8500789918531834058}
|
||||
m_Father: {fileID: 584408140031347170}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 85.313095, y: -31.504}
|
||||
m_SizeDelta: {x: 44.61, y: 63.008}
|
||||
m_AnchoredPosition: {x: 101.8443, y: -32.37215}
|
||||
m_SizeDelta: {x: 74.2, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &3963579599117951989
|
||||
--- !u!222 &1370747412458166393
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1449196833709694992}
|
||||
m_GameObject: {fileID: 5347819237772639510}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &5725644289869038764
|
||||
--- !u!114 &3165878011081759808
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1449196833709694992}
|
||||
m_GameObject: {fileID: 5347819237772639510}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
||||
@@ -66,9 +274,7 @@ MonoBehaviour:
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_text: '10/10
|
||||
|
||||
'
|
||||
m_text: 2/10
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: dc221f629ad2625429da3920b6f9a348, type: 2}
|
||||
m_sharedMaterial: {fileID: 3767062857633432899, guid: dc221f629ad2625429da3920b6f9a348, type: 2}
|
||||
@@ -95,13 +301,13 @@ MonoBehaviour:
|
||||
m_faceColor:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontSize: 20
|
||||
m_fontSizeBase: 20
|
||||
m_fontSize: 36
|
||||
m_fontSizeBase: 36
|
||||
m_fontWeight: 400
|
||||
m_enableAutoSizing: 0
|
||||
m_fontSizeMin: 18
|
||||
m_fontSizeMax: 72
|
||||
m_fontStyle: 0
|
||||
m_fontStyle: 1
|
||||
m_HorizontalAlignment: 2
|
||||
m_VerticalAlignment: 512
|
||||
m_textAlignment: 65535
|
||||
@@ -140,21 +346,21 @@ MonoBehaviour:
|
||||
m_hasFontAssetChanged: 0
|
||||
m_baseMaterial: {fileID: 0}
|
||||
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||
--- !u!114 &7776490238597678248
|
||||
--- !u!114 &3601661005796488396
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1449196833709694992}
|
||||
m_GameObject: {fileID: 5347819237772639510}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.ContentSizeFitter
|
||||
m_HorizontalFit: 2
|
||||
m_VerticalFit: 0
|
||||
--- !u!1 &3796616338314271085
|
||||
m_VerticalFit: 2
|
||||
--- !u!1 &8572139397173251095
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
@@ -162,9 +368,9 @@ GameObject:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 67615937123066110}
|
||||
- component: {fileID: 2248708403780224795}
|
||||
- component: {fileID: 824788329508477661}
|
||||
- component: {fileID: 3991399002855118185}
|
||||
- component: {fileID: 3346059932869489193}
|
||||
- component: {fileID: 5353320151652771885}
|
||||
m_Layer: 5
|
||||
m_Name: Image
|
||||
m_TagString: Untagged
|
||||
@@ -172,40 +378,40 @@ GameObject:
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &67615937123066110
|
||||
--- !u!224 &3991399002855118185
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3796616338314271085}
|
||||
m_GameObject: {fileID: 8572139397173251095}
|
||||
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: []
|
||||
m_Father: {fileID: 8500789918531834058}
|
||||
m_Father: {fileID: 584408140031347170}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 63.0081, y: 63.0081}
|
||||
m_SizeDelta: {x: 64.7443, y: 64.7443}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &2248708403780224795
|
||||
--- !u!222 &3346059932869489193
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3796616338314271085}
|
||||
m_GameObject: {fileID: 8572139397173251095}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &824788329508477661
|
||||
--- !u!114 &5353320151652771885
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3796616338314271085}
|
||||
m_GameObject: {fileID: 8572139397173251095}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
@@ -221,7 +427,7 @@ MonoBehaviour:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 21300000, guid: aac71bc72b8e8ce4da73028769c1b20a, type: 3}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 1
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
@@ -229,99 +435,3 @@ MonoBehaviour:
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!1 &6992362772493703696
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8500789918531834058}
|
||||
- component: {fileID: 7137866051671997104}
|
||||
- component: {fileID: 1408010592961239319}
|
||||
- component: {fileID: 9158453950938887334}
|
||||
m_Layer: 5
|
||||
m_Name: Ressources Needed
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8500789918531834058
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6992362772493703696}
|
||||
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: 67615937123066110}
|
||||
- {fileID: 607827644847487143}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 36.999268, y: -14.694519}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &7137866051671997104
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6992362772493703696}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.HorizontalLayoutGroup
|
||||
m_Padding:
|
||||
m_Left: 0
|
||||
m_Right: 0
|
||||
m_Top: 0
|
||||
m_Bottom: 0
|
||||
m_ChildAlignment: 0
|
||||
m_Spacing: 0
|
||||
m_ChildForceExpandWidth: 1
|
||||
m_ChildForceExpandHeight: 1
|
||||
m_ChildControlWidth: 0
|
||||
m_ChildControlHeight: 0
|
||||
m_ChildScaleWidth: 0
|
||||
m_ChildScaleHeight: 0
|
||||
m_ReverseArrangement: 0
|
||||
--- !u!114 &1408010592961239319
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6992362772493703696}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.ContentSizeFitter
|
||||
m_HorizontalFit: 2
|
||||
m_VerticalFit: 2
|
||||
--- !u!114 &9158453950938887334
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6992362772493703696}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: b197776c5c48d19409d8b73a5f77bcfb, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.UI.BuildCostEntryUI
|
||||
icon: {fileID: 824788329508477661}
|
||||
amountLabel: {fileID: 5725644289869038764}
|
||||
affordColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
missingColor: {r: 1, g: 0.35, b: 0.35, a: 1}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6e53fb4da47f13648973d61c547e63d6
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -2572,7 +2572,7 @@ MonoBehaviour:
|
||||
m_Top: 0
|
||||
m_Bottom: 0
|
||||
m_ChildAlignment: 1
|
||||
m_Spacing: 7.8
|
||||
m_Spacing: 7
|
||||
m_ChildForceExpandWidth: 1
|
||||
m_ChildForceExpandHeight: 1
|
||||
m_ChildControlWidth: 0
|
||||
@@ -3081,7 +3081,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
m_IsActive: 0
|
||||
--- !u!224 &8481609622609388703
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -3093,12 +3093,15 @@ RectTransform:
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Children:
|
||||
- {fileID: 6728699242075629836}
|
||||
- {fileID: 7225429466115344003}
|
||||
- {fileID: 4276272872393547282}
|
||||
m_Father: {fileID: 7857481831142227221}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 110.48, y: -46.7}
|
||||
m_AnchoredPosition: {x: 5, y: -17}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &3834215647302423569
|
||||
@@ -3124,8 +3127,8 @@ MonoBehaviour:
|
||||
m_ChildForceExpandHeight: 1
|
||||
m_ChildControlWidth: 0
|
||||
m_ChildControlHeight: 0
|
||||
m_ChildScaleWidth: 0
|
||||
m_ChildScaleHeight: 0
|
||||
m_ChildScaleWidth: 1
|
||||
m_ChildScaleHeight: 1
|
||||
m_ReverseArrangement: 0
|
||||
--- !u!114 &4722122648630739765
|
||||
MonoBehaviour:
|
||||
@@ -4527,7 +4530,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
m_IsActive: 0
|
||||
--- !u!224 &1596723111164776776
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -4544,8 +4547,8 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 110.48, y: -28.349998}
|
||||
m_SizeDelta: {x: 220.96, y: 0}
|
||||
m_AnchoredPosition: {x: 278.75, y: -20.55}
|
||||
m_SizeDelta: {x: 220.96, y: 21.1}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &4132973060268027817
|
||||
CanvasRenderer:
|
||||
@@ -5954,8 +5957,14 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::CrosshairManager
|
||||
icon: {fileID: 8955712843149927660}
|
||||
promptLabel: {fileID: 65970657491887858}
|
||||
costHolder: {fileID: 8481609622609388703}
|
||||
costEntryPrefab: {fileID: 9158453950938887334, guid: fb3189f697e11534299fe0ff296e53bc, type: 3}
|
||||
verticalGroup: {fileID: 9071915530194825027}
|
||||
idleSpacing: 7
|
||||
buildSpacing: 7
|
||||
costHolder: {fileID: 4437702633090290063}
|
||||
costEntries:
|
||||
- {fileID: 7485962907017092409}
|
||||
- {fileID: 6829636285320704694}
|
||||
- {fileID: 133419483354278439}
|
||||
idleState: {fileID: 11400000, guid: e6730ffd626cf7240951b398e0521454, type: 2}
|
||||
hoverState: {fileID: 11400000, guid: 7bbc76d322beed84282f97531e2230e3, type: 2}
|
||||
transitionDuration: 0.25
|
||||
@@ -8463,6 +8472,171 @@ RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 4729973786354734962, guid: 11892426c0821bd4083da2f453d1a1f1, type: 3}
|
||||
m_PrefabInstance: {fileID: 4320600255612900325}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1001 &4542047928556493008
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 8481609622609388703}
|
||||
m_Modifications:
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_Pivot.y
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 182.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 100
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 466.25
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -50
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 542849118745372900, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Ressources Needed Ui (2)
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 542849118745372900, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_IsActive
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 584408140031347170, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 138.9443
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 584408140031347170, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 64.7443
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3991399002855118185, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3991399002855118185, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3991399002855118185, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 32.37215
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3991399002855118185, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -32.37215
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6531536504494789601, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6531536504494789601, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6531536504494789601, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 74.2
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6531536504494789601, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 43.21
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6531536504494789601, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 101.8443
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6531536504494789601, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -32.37215
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
--- !u!114 &133419483354278439 stripped
|
||||
MonoBehaviour:
|
||||
m_CorrespondingSourceObject: {fileID: 4526848622919824119, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
m_PrefabInstance: {fileID: 4542047928556493008}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: b197776c5c48d19409d8b73a5f77bcfb, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.UI.BuildCostEntryUI
|
||||
--- !u!224 &4276272872393547282 stripped
|
||||
RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
m_PrefabInstance: {fileID: 4542047928556493008}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1001 &5009484648183140821
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -9267,6 +9441,336 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: da6ff11a2825c2c41b3d675f4b46c9f2, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::SlotUI
|
||||
--- !u!1001 &6427168061402066894
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 8481609622609388703}
|
||||
m_Modifications:
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_Pivot.y
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 182.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 100
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 91.25
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -50
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 542849118745372900, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Ressources Needed Ui
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 542849118745372900, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_IsActive
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 584408140031347170, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 138.9443
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 584408140031347170, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 64.7443
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3991399002855118185, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3991399002855118185, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3991399002855118185, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 32.37215
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3991399002855118185, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -32.37215
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6531536504494789601, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6531536504494789601, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6531536504494789601, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 74.2
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6531536504494789601, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 43.21
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6531536504494789601, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 101.8443
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6531536504494789601, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -32.37215
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
--- !u!224 &6728699242075629836 stripped
|
||||
RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
m_PrefabInstance: {fileID: 6427168061402066894}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!114 &7485962907017092409 stripped
|
||||
MonoBehaviour:
|
||||
m_CorrespondingSourceObject: {fileID: 4526848622919824119, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
m_PrefabInstance: {fileID: 6427168061402066894}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: b197776c5c48d19409d8b73a5f77bcfb, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.UI.BuildCostEntryUI
|
||||
--- !u!1001 &6923482688266600513
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 8481609622609388703}
|
||||
m_Modifications:
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_Pivot.y
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 182.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 100
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 278.75
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -50
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 542849118745372900, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Ressources Needed Ui (1)
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 542849118745372900, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_IsActive
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 584408140031347170, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 138.9443
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 584408140031347170, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 64.7443
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3991399002855118185, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3991399002855118185, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3991399002855118185, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 32.37215
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3991399002855118185, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -32.37215
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6531536504494789601, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6531536504494789601, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6531536504494789601, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 74.2
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6531536504494789601, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 43.21
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6531536504494789601, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 101.8443
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6531536504494789601, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -32.37215
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
--- !u!114 &6829636285320704694 stripped
|
||||
MonoBehaviour:
|
||||
m_CorrespondingSourceObject: {fileID: 4526848622919824119, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
m_PrefabInstance: {fileID: 6923482688266600513}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: b197776c5c48d19409d8b73a5f77bcfb, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.UI.BuildCostEntryUI
|
||||
--- !u!224 &7225429466115344003 stripped
|
||||
RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 310967193875547842, guid: 6e53fb4da47f13648973d61c547e63d6, type: 3}
|
||||
m_PrefabInstance: {fileID: 6923482688266600513}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1001 &7818409619538672673
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -13,5 +13,7 @@ MonoBehaviour:
|
||||
m_Name: BuildableDatabase
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Ashwild.Building.BuildableDatabase
|
||||
buildables:
|
||||
- {fileID: 11400000, guid: 869ce1fcc7aafc4429d8095f5c8ba6b0, type: 2}
|
||||
- {fileID: 11400000, guid: 030740a1d4869434fb535225dbe03471, type: 2}
|
||||
- {fileID: 11400000, guid: dca47e84e615c4e4baa4da9b06529e55, type: 2}
|
||||
- {fileID: 11400000, guid: a42d503226db3774a8ebdce271364b22, type: 2}
|
||||
- {fileID: 11400000, guid: f37e0d3c7eef5bb40956a640425b1845, type: 2}
|
||||
|
||||
@@ -23,6 +23,7 @@ MonoBehaviour:
|
||||
- {fileID: 11400000, guid: 61d25be5e4754e48b62692e58bd4fc00, type: 2}
|
||||
- {fileID: 11400000, guid: a827e12e2b364d73bd1038d60d5258a1, type: 2}
|
||||
- {fileID: 11400000, guid: 0c27b42a96974b60b484bf475036ef58, type: 2}
|
||||
- {fileID: 11400000, guid: db082cae7b71f3643ad33fcc5d4c474b, type: 2}
|
||||
- {fileID: 11400000, guid: 60132cba2202496eb74f2afc1f89c81a, type: 2}
|
||||
- {fileID: 11400000, guid: f9cafd470cfc4aa8aceea5b263c4c25c, type: 2}
|
||||
- {fileID: 11400000, guid: 6b543ed8734f4dcf984c1c43d63a9207, type: 2}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+8
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 09a9af9cb71128f44aa20b50333b8848
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 15600000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -163,6 +163,12 @@ MonoBehaviour:
|
||||
_prefab: Assets/GAME/Prefabs/Manager/PlayerPresenceFeedUI.prefab
|
||||
- _gameObject: {fileID: 196788999}
|
||||
_prefab: Assets/GAME/Prefabs/UI/Player_Canvas.prefab
|
||||
- _gameObject: {fileID: 196789015}
|
||||
_prefab: Assets/GAME/Prefabs/UI/Build/Ressources Needed Ui.prefab
|
||||
- _gameObject: {fileID: 196789014}
|
||||
_prefab: Assets/GAME/Prefabs/UI/Build/Ressources Needed Ui.prefab
|
||||
- _gameObject: {fileID: 196789013}
|
||||
_prefab: Assets/GAME/Prefabs/UI/Build/Ressources Needed Ui.prefab
|
||||
- _gameObject: {fileID: 196789012}
|
||||
_prefab: Assets/GAME/Prefabs/UI/Button Category.prefab
|
||||
- _gameObject: {fileID: 196789011}
|
||||
@@ -1081,47 +1087,47 @@ GameObject:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &196789000 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 1435912439651889848, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_CorrespondingSourceObject: {fileID: 5158597572884001758, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_PrefabInstance: {fileID: 196788998}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &196789001 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 3870225346547395938, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_CorrespondingSourceObject: {fileID: 2899509862561618229, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_PrefabInstance: {fileID: 196788998}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &196789002 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 4665850176590005251, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_CorrespondingSourceObject: {fileID: 5175506847435012150, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_PrefabInstance: {fileID: 196788998}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &196789003 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 5439416756030813576, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_CorrespondingSourceObject: {fileID: 6218829446984784645, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_PrefabInstance: {fileID: 196788998}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &196789004 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 5027997652594933461, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_CorrespondingSourceObject: {fileID: 4525802775991890810, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_PrefabInstance: {fileID: 196788998}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &196789005 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 59684519612680428, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_CorrespondingSourceObject: {fileID: 3170185415313623352, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_PrefabInstance: {fileID: 196788998}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &196789006 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 6596292997576987978, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_CorrespondingSourceObject: {fileID: 8518248039573098604, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_PrefabInstance: {fileID: 196788998}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &196789007 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 2054330470357333891, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_CorrespondingSourceObject: {fileID: 1233530907938768311, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_PrefabInstance: {fileID: 196788998}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &196789008 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 7010948319502818324, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_CorrespondingSourceObject: {fileID: 5286856348858392856, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_PrefabInstance: {fileID: 196788998}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &196789009 stripped
|
||||
@@ -1144,6 +1150,21 @@ GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 1085327290798050191, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_PrefabInstance: {fileID: 196788998}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &196789013 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 4071270431516733492, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_PrefabInstance: {fileID: 196788998}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &196789014 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 7466318057741297829, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_PrefabInstance: {fileID: 196788998}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &196789015 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 6825615529796470570, guid: fc052529108a2854aa09a1d295778ef4, type: 3}
|
||||
m_PrefabInstance: {fileID: 196788998}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &245694839
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -2952,6 +2973,7 @@ MonoBehaviour:
|
||||
useGrid: 1
|
||||
gridSize: 1
|
||||
rotationStep: 90
|
||||
continuousBuild: 0
|
||||
snapRadius: 1.25
|
||||
snapPointMask:
|
||||
serializedVersion: 2
|
||||
@@ -2959,6 +2981,12 @@ MonoBehaviour:
|
||||
obstructionMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
obstructionPadding: 0.03
|
||||
buildMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
demolitionMaterial: {fileID: 0}
|
||||
hammerUsesPerAction: 1
|
||||
--- !u!4 &1675459008
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -3688,7 +3716,7 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5826855044170579573, guid: fda48d70f282f6c4b9dda3a7533e947b, type: 3}
|
||||
propertyPath: SceneId
|
||||
value: 3183474871
|
||||
value: 3200236991
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5826855044170579573, guid: fda48d70f282f6c4b9dda3a7533e947b, type: 3}
|
||||
propertyPath: WasActiveDuringEdit
|
||||
@@ -3854,7 +3882,7 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7847709848979142105, guid: 6a3ea20bb46e81c44ad6959bbe90e0dd, type: 3}
|
||||
propertyPath: SceneId
|
||||
value: 3170892597
|
||||
value: 4271586359
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7847709848979142105, guid: 6a3ea20bb46e81c44ad6959bbe90e0dd, type: 3}
|
||||
propertyPath: WasActiveDuringEdit
|
||||
|
||||
@@ -3,13 +3,41 @@ using UnityEngine;
|
||||
namespace Ashwild.Building
|
||||
{
|
||||
/// <summary>
|
||||
/// Placement validity for a build ghost. Each frame BuildManager calls Evaluate with the
|
||||
/// obstruction mask it owns (configured in one place, not per ghost prefab), which box-overlaps
|
||||
/// the ghost's footprint against those layers (other structures, props, players — never the
|
||||
/// ground it rests on) and shows the result by adding a valid or invalid overlay material on top
|
||||
/// of each renderer's base materials (not by tinting them). BuildManager reads <see cref="IsValid"/>
|
||||
/// to allow or block the build. The footprint collider is only a bounds source: the overlap test
|
||||
/// reads its dimensions directly rather than relying on physics contacts.
|
||||
/// Why a placement is or is not allowed. Produced in one place (BuildManager.EvaluatePlacement) and
|
||||
/// consumed by both the ghost's look and the confirm gate, so the preview can never disagree with
|
||||
/// what pressing the button actually does — the two used to be decided separately and could drift.
|
||||
///
|
||||
/// Splitting the failure into distinct reasons is the point: a single "invalid" state left the
|
||||
/// player staring at a red ghost with no way to tell a blocked spot from an unpayable one.
|
||||
/// </summary>
|
||||
public enum PlacementVerdict
|
||||
{
|
||||
/// <summary>Buildable here, right now.</summary>
|
||||
Valid,
|
||||
|
||||
/// <summary>The footprint overlaps something on the obstruction layers.</summary>
|
||||
Blocked,
|
||||
|
||||
/// <summary>The structure requires a socket connection (PlacementSupport.SnapOnly) and has none.</summary>
|
||||
Unsupported,
|
||||
|
||||
/// <summary>The spot itself is fine, but the player cannot pay the cost.</summary>
|
||||
Unaffordable
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The visual state of a build ghost — a pure view over a <see cref="PlacementVerdict"/>.
|
||||
///
|
||||
/// It decides nothing: BuildManager owns the layer masks, runs the obstruction query and produces
|
||||
/// the verdict, then hands it here to be rendered. (It used to run the overlap itself using a mask
|
||||
/// passed in from outside, which mixed deciding with displaying and put the physics query away from
|
||||
/// the data that configures it.)
|
||||
///
|
||||
/// The look is applied by ADDING an overlay material on top of each renderer's authored materials
|
||||
/// rather than replacing them, so the model keeps its own look underneath the tint. The footprint
|
||||
/// BoxCollider is exposed purely as a bounds source — it stays disabled on the prefab, because the
|
||||
/// obstruction mask includes the layer the ghost itself sits on and an enabled collider would make
|
||||
/// the preview report itself as blocked.
|
||||
/// </summary>
|
||||
[DisallowMultipleComponent]
|
||||
public class BuildGhost : MonoBehaviour
|
||||
@@ -17,47 +45,54 @@ namespace Ashwild.Building
|
||||
#region Serialized Fields
|
||||
|
||||
[Header("Footprint")]
|
||||
[Tooltip("Box whose bounds define the volume tested for obstructions. Sized in the prefab.")]
|
||||
[Tooltip("Box whose bounds define the volume tested for obstructions. Sized in the prefab, and kept disabled — it is read as dimensions, never used for physics contacts.")]
|
||||
[SerializeField] private BoxCollider footprint;
|
||||
|
||||
[Header("Overlay Materials")]
|
||||
[Tooltip("Renderers the overlay is added onto. Auto-filled from children if left empty.")]
|
||||
[SerializeField] private Renderer[] renderers;
|
||||
|
||||
[Tooltip("Material added on top of the base ones when the spot is buildable (green).")]
|
||||
[Tooltip("Added on top of the base materials when the spot is buildable (green).")]
|
||||
[SerializeField] private Material validOverlay;
|
||||
|
||||
[Tooltip("Material added on top of the base ones when the spot is blocked (red).")]
|
||||
[Tooltip("Added for every reason the build is refused — blocked, unsupported or unaffordable.")]
|
||||
[SerializeField] private Material invalidOverlay;
|
||||
|
||||
#endregion
|
||||
|
||||
#region State
|
||||
|
||||
/// <summary>
|
||||
/// Whether the ghost is currently on a buildable spot (no obstruction overlap).
|
||||
/// </summary>
|
||||
public bool IsValid { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Each renderer's original materials, so the overlay can be appended without losing them.
|
||||
/// </summary>
|
||||
private Material[][] baseMaterials;
|
||||
|
||||
/// <summary>
|
||||
/// The validity reflected by the currently applied overlay, so we only swap on a real change.
|
||||
/// The overlay currently applied, so we only rebuild the material lists when it actually changes.
|
||||
/// </summary>
|
||||
private bool lastValid;
|
||||
private Material lastOverlay;
|
||||
private bool overlayApplied;
|
||||
|
||||
private readonly Collider[] overlapResults = new Collider[8];
|
||||
#endregion
|
||||
|
||||
#region Public API
|
||||
|
||||
/// <summary>
|
||||
/// The footprint volume, for BuildManager to read its centre and size when testing obstructions.
|
||||
/// Null on a ghost authored without one, which BuildManager treats as "never obstructed".
|
||||
/// </summary>
|
||||
public BoxCollider Footprint => footprint;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Unity Lifecycle
|
||||
|
||||
/// <summary>
|
||||
/// Auto-collects renderers when none were assigned and caches their base materials.
|
||||
/// Auto-collects renderers when none were assigned, caches their base materials, then shows the
|
||||
/// valid overlay immediately so the ghost reads as a semi-transparent preview from the very first
|
||||
/// frame — on every client, not just the owner. On a remote copy nobody runs the evaluation, so
|
||||
/// without this the ghost would sit in its opaque base materials until (and unless) a validity
|
||||
/// update lands; the owner's own evaluation overrides this on its next frame anyway.
|
||||
/// </summary>
|
||||
private void Awake()
|
||||
{
|
||||
@@ -67,53 +102,46 @@ namespace Ashwild.Building
|
||||
baseMaterials = new Material[renderers.Length][];
|
||||
for (int i = 0; i < renderers.Length; i++)
|
||||
baseMaterials[i] = renderers[i] != null ? renderers[i].sharedMaterials : new Material[0];
|
||||
|
||||
SetOverlay(validOverlay);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public API
|
||||
#region Display
|
||||
|
||||
/// <summary>
|
||||
/// Re-tests the footprint against the obstruction layers (passed in by BuildManager, which
|
||||
/// owns the mask so it is configured in one place), swaps the overlay material when validity
|
||||
/// changed, and returns the result. A ghost with no footprint is always considered valid.
|
||||
/// Shows the look matching a verdict. The single entry point the owner drives every frame.
|
||||
/// Every refusal shares the one invalid material — the verdict still distinguishes the reasons for
|
||||
/// the confirm gate (and for anything that wants to surface them later), the preview just does not
|
||||
/// colour-code them.
|
||||
/// </summary>
|
||||
public bool Evaluate(LayerMask obstructionMask)
|
||||
{
|
||||
IsValid = !IsObstructed(obstructionMask);
|
||||
|
||||
if (!overlayApplied || IsValid != lastValid)
|
||||
{
|
||||
ApplyOverlay(IsValid ? validOverlay : invalidOverlay);
|
||||
lastValid = IsValid;
|
||||
overlayApplied = true;
|
||||
}
|
||||
|
||||
return IsValid;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Internal
|
||||
public void SetState(PlacementVerdict verdict)
|
||||
=> SetOverlay(verdict == PlacementVerdict.Valid ? validOverlay : invalidOverlay);
|
||||
|
||||
/// <summary>
|
||||
/// Box-overlaps the footprint against the obstruction layers, ignoring triggers.
|
||||
/// Applies the shared valid/blocked look on a remote copy from the placer's replicated spot
|
||||
/// validity (routed through BuildRegistry). Remotes only ever see these two states — the placer's
|
||||
/// private "unaffordable" and "unsupported" reasons are never sent — so a teammate sees green on
|
||||
/// a buildable spot and red otherwise, matching where the placer can actually build.
|
||||
/// </summary>
|
||||
private bool IsObstructed(LayerMask obstructionMask)
|
||||
public void SetRemoteValidity(bool valid) => SetOverlay(valid ? validOverlay : invalidOverlay);
|
||||
|
||||
/// <summary>
|
||||
/// Sets the current overlay, rebuilding the renderers' material lists only when it actually
|
||||
/// changes — the single funnel every state path goes through, so the change-guard stays in one place.
|
||||
/// </summary>
|
||||
private void SetOverlay(Material overlay)
|
||||
{
|
||||
if (footprint == null) return false;
|
||||
|
||||
Transform t = footprint.transform;
|
||||
Vector3 center = t.TransformPoint(footprint.center);
|
||||
Vector3 halfExtents = Vector3.Scale(footprint.size, t.lossyScale) * 0.5f;
|
||||
|
||||
int count = Physics.OverlapBoxNonAlloc(center, halfExtents, overlapResults, t.rotation, obstructionMask, QueryTriggerInteraction.Ignore);
|
||||
return count > 0;
|
||||
if (overlayApplied && overlay == lastOverlay) return;
|
||||
ApplyOverlay(overlay);
|
||||
lastOverlay = overlay;
|
||||
overlayApplied = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Rebuilds each renderer's material list as "base materials + overlay", so the overlay
|
||||
/// draws on top of the model instead of replacing it. Skips when no overlay is assigned.
|
||||
/// Rebuilds each renderer's material list as "base materials + overlay", so the overlay draws on
|
||||
/// top of the model instead of replacing it. Skips when no overlay is assigned.
|
||||
/// </summary>
|
||||
private void ApplyOverlay(Material overlay)
|
||||
{
|
||||
|
||||
@@ -67,6 +67,9 @@ namespace Ashwild.Building
|
||||
[Tooltip("Layers that block a build (structures, props, players). Must NOT include the ground.")]
|
||||
[SerializeField] private LayerMask obstructionMask;
|
||||
|
||||
[Tooltip("Metres shaved off each side of the footprint before testing obstructions. Connected pieces meet exactly flush, so without a small inset every snapped build would report its own neighbour as blocking. Keep it well under the thinnest structure.")]
|
||||
[SerializeField] private float obstructionPadding = 0.03f;
|
||||
|
||||
[Header("Demolition")]
|
||||
[Tooltip("Layers the demolition aim can hit to target a committed structure. Narrow this to the structures' layer so walls, roofs, etc. are the only demolishable hits.")]
|
||||
[SerializeField] private LayerMask buildMask = ~0;
|
||||
@@ -74,6 +77,10 @@ namespace Ashwild.Building
|
||||
[Tooltip("Overlay material added on top of the aimed build while it is the demolition target (e.g. a translucent red 'about to break' pass). Should be a transparent/additive material since it draws over the model.")]
|
||||
[SerializeField] private Material demolitionMaterial;
|
||||
|
||||
[Header("Hammer Wear")]
|
||||
[Tooltip("Durability (uses) spent on the equipped hammer for each successful placement or demolition. Requires the hammer's ItemData to be uses-tracked (Has Uses + Max Uses). A depleted hammer blocks building/demolishing until repaired. Set to 0 for a hammer that never wears.")]
|
||||
[SerializeField] private int hammerUsesPerAction = 1;
|
||||
|
||||
#endregion
|
||||
|
||||
#region State
|
||||
@@ -98,9 +105,17 @@ namespace Ashwild.Building
|
||||
/// The live networked ghost we own and drive, or null while idle or awaiting its spawn.
|
||||
/// </summary>
|
||||
private GameObject ghost;
|
||||
private BuildGhost ghostValidity;
|
||||
private BuildGhost ghostView;
|
||||
private BuildSnapPoint[] ghostSnaps;
|
||||
|
||||
/// <summary>
|
||||
/// Whether the ghost's current pose came from a socket connection rather than the free/grid aim.
|
||||
/// Kept as state rather than recomputed because the pose and the validity check happen in two
|
||||
/// steps, and because a frame whose aim ray hits nothing leaves the ghost — and so its
|
||||
/// connection — exactly as it was.
|
||||
/// </summary>
|
||||
private bool ghostIsConnected;
|
||||
|
||||
/// <summary>
|
||||
/// The ghost's current yaw for grid placement, stepped by the scroll wheel.
|
||||
/// </summary>
|
||||
@@ -128,7 +143,20 @@ namespace Ashwild.Building
|
||||
/// </summary>
|
||||
private int spawnToken;
|
||||
|
||||
/// <summary>
|
||||
/// Last spot validity pushed to teammates (-1 = none sent yet, 0 = invalid, 1 = valid), so the
|
||||
/// networked ghost overlay is only replicated when it actually flips — never every frame.
|
||||
/// </summary>
|
||||
private int lastSentValidity = -1;
|
||||
|
||||
private readonly Collider[] snapResults = new Collider[16];
|
||||
private readonly Collider[] obstructionResults = new Collider[8];
|
||||
|
||||
/// <summary>
|
||||
/// Floor for the padded half-extents, so a very thin piece (a floor slab a few centimetres deep)
|
||||
/// cannot have the inset collapse its footprint to zero — or invert it — and stop testing at all.
|
||||
/// </summary>
|
||||
private const float MinHalfExtent = 0.01f;
|
||||
|
||||
/// <summary>
|
||||
/// Reused buffer for the active build's cost lines, rebuilt and pushed to the crosshair each
|
||||
@@ -163,7 +191,7 @@ namespace Ashwild.Building
|
||||
{
|
||||
PlayerEvents.BuildMenuOpenChanged += HandleMenuOpenChanged;
|
||||
PlayerEvents.AttackPressed += HandleConfirm;
|
||||
PlayerEvents.SecondaryUsePressed += HandleCancel;
|
||||
PlayerEvents.BuildCancelRequested += HandleCancel;
|
||||
PlayerEvents.HotbarScroll += HandleRotate;
|
||||
PlayerEvents.BuildRotatePressed += HandleRotateKey;
|
||||
PlayerEvents.DemolishModeChanged += HandleDemolishModeChanged;
|
||||
@@ -177,7 +205,7 @@ namespace Ashwild.Building
|
||||
{
|
||||
PlayerEvents.BuildMenuOpenChanged -= HandleMenuOpenChanged;
|
||||
PlayerEvents.AttackPressed -= HandleConfirm;
|
||||
PlayerEvents.SecondaryUsePressed -= HandleCancel;
|
||||
PlayerEvents.BuildCancelRequested -= HandleCancel;
|
||||
PlayerEvents.HotbarScroll -= HandleRotate;
|
||||
PlayerEvents.BuildRotatePressed -= HandleRotateKey;
|
||||
PlayerEvents.DemolishModeChanged -= HandleDemolishModeChanged;
|
||||
@@ -205,7 +233,7 @@ namespace Ashwild.Building
|
||||
if (PlayerEvents.InputLocked) return;
|
||||
|
||||
UpdateGhostPose();
|
||||
if (ghostValidity != null) ghostValidity.Evaluate(obstructionMask);
|
||||
EvaluateGhost();
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -306,22 +334,107 @@ namespace Ashwild.Building
|
||||
}
|
||||
|
||||
ghost = go;
|
||||
ghostValidity = go.GetComponentInChildren<BuildGhost>(true);
|
||||
ghostView = go.GetComponentInChildren<BuildGhost>(true);
|
||||
ghostSnaps = go.GetComponentsInChildren<BuildSnapPoint>(true);
|
||||
ResolveAim();
|
||||
|
||||
lastSentValidity = -1;
|
||||
ghostIsConnected = false;
|
||||
placementBeganFrame = Time.frameCount;
|
||||
UpdateGhostPose();
|
||||
if (ghostValidity != null) ghostValidity.Evaluate(obstructionMask);
|
||||
EvaluateGhost();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Pushes the current verdict into the ghost's look each frame. No-op when no ghost is live.
|
||||
/// </summary>
|
||||
private void EvaluateGhost()
|
||||
{
|
||||
if (ghostView == null) return;
|
||||
|
||||
PlacementVerdict verdict = EvaluatePlacement();
|
||||
ghostView.SetState(verdict);
|
||||
ReplicateValidity(verdict == PlacementVerdict.Valid);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The single answer to "can the active structure be committed at the ghost's current pose?",
|
||||
/// used both to tint the preview and to gate the confirm — so what the player sees and what the
|
||||
/// button does can never disagree. It is recomputed on demand rather than cached, since a cached
|
||||
/// verdict would be one frame stale depending on the input/Update order.
|
||||
///
|
||||
/// The reasons are tested most-spatial first: a structure that needs a connection and has none is
|
||||
/// reported before an obstruction, and both before affordability, so the player is always told
|
||||
/// about the problem that moving the mouse can actually fix.
|
||||
///
|
||||
/// A CONNECTED ghost skips the obstruction test entirely: the socket already decided where the
|
||||
/// piece belongs, and real modular geometry interpenetrates far more than any tolerance can absorb
|
||||
/// (a wall's head runs up into the ceiling it supports, a frame overlaps the slab it sits in).
|
||||
/// Shrinking the footprint was tried and is not enough — the only rule that holds is that an
|
||||
/// authored connection IS the validity check. Free placement still tests obstructions normally,
|
||||
/// so the padding below continues to matter there.
|
||||
/// </summary>
|
||||
private PlacementVerdict EvaluatePlacement()
|
||||
{
|
||||
if (active == null) return PlacementVerdict.Blocked;
|
||||
|
||||
if (active.Support == PlacementSupport.SnapOnly && !ghostIsConnected)
|
||||
return PlacementVerdict.Unsupported;
|
||||
|
||||
if (!ghostIsConnected && IsFootprintObstructed()) return PlacementVerdict.Blocked;
|
||||
|
||||
if (!active.CanAfford(PlayerInventory.Instance)) return PlacementVerdict.Unaffordable;
|
||||
|
||||
return PlacementVerdict.Valid;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Box-overlaps the ghost's footprint against the obstruction layers, ignoring triggers. The box
|
||||
/// is shrunk by <see cref="obstructionPadding"/> on every side: snapped pieces meet exactly flush
|
||||
/// by construction, so an un-inset test would report the very neighbour the player is building
|
||||
/// against. The inset is small enough that a real intruder inside the volume — a chest, a player,
|
||||
/// another structure — is still caught. A ghost without a footprint is never obstructed.
|
||||
/// </summary>
|
||||
private bool IsFootprintObstructed()
|
||||
{
|
||||
BoxCollider footprint = ghostView != null ? ghostView.Footprint : null;
|
||||
if (footprint == null) return false;
|
||||
|
||||
Transform t = footprint.transform;
|
||||
Vector3 center = t.TransformPoint(footprint.center);
|
||||
Vector3 halfExtents = Vector3.Scale(footprint.size, t.lossyScale) * 0.5f;
|
||||
halfExtents = Vector3.Max(halfExtents - Vector3.one * obstructionPadding, Vector3.one * MinHalfExtent);
|
||||
|
||||
int count = Physics.OverlapBoxNonAlloc(center, halfExtents, obstructionResults, t.rotation, obstructionMask, QueryTriggerInteraction.Ignore);
|
||||
return count > 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Pushes the ghost's spot validity to teammates through BuildRegistry, but only when it flips —
|
||||
/// so a remote ghost shows the same green/red as here without a per-frame RPC stream. Affordability
|
||||
/// stays local (the placer's private inventory), so only IsValid crosses the wire.
|
||||
/// </summary>
|
||||
private void ReplicateValidity(bool valid)
|
||||
{
|
||||
int state = valid ? 1 : 0;
|
||||
if (state == lastSentValidity) return;
|
||||
lastSentValidity = state;
|
||||
|
||||
if (BuildRegistry.Instance != null && ghost != null)
|
||||
BuildRegistry.Instance.SetGhostValidity(ghost.GetComponent<NetworkObject>(), valid);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Left-click: demolishes the aimed build while in demolition mode, otherwise commits the
|
||||
/// ghost's pose to the registry (spawned for everyone) and consumes its resource cost from the
|
||||
/// local inventory (client-authoritative, exactly like crafting). In continuous build mode it
|
||||
/// then re-arms a fresh ghost of the same structure (keeping the current yaw, so pieces chain
|
||||
/// edge-to-edge); otherwise it ends the placement. Blocked on an invalid spot, on the very frame
|
||||
/// the ghost was attached, and when the player cannot afford the cost.
|
||||
/// ghost's pose to the registry (spawned for everyone), spends a use of the equipped hammer and
|
||||
/// consumes the resource cost from the local inventory (client-authoritative, exactly like
|
||||
/// crafting). In continuous build mode it then re-arms a fresh ghost of the same structure
|
||||
/// (keeping the current yaw, so pieces chain edge-to-edge); otherwise it ends the placement.
|
||||
///
|
||||
/// Placement itself is gated by the one verdict the preview is already showing, so the button can
|
||||
/// never accept what the ghost paints as refused. The remaining guards are input/session
|
||||
/// conditions rather than placement rules — input locked, the very frame the ghost was attached,
|
||||
/// no registry in the session, and a hammer out of durability.
|
||||
/// </summary>
|
||||
private void HandleConfirm()
|
||||
{
|
||||
@@ -334,11 +447,11 @@ namespace Ashwild.Building
|
||||
if (ghost == null) return;
|
||||
if (PlayerEvents.InputLocked) return;
|
||||
if (Time.frameCount == placementBeganFrame) return;
|
||||
if (ghostValidity != null && !ghostValidity.IsValid) return;
|
||||
if (active != null && !active.CanAfford(PlayerInventory.Instance)) return;
|
||||
if (EvaluatePlacement() != PlacementVerdict.Valid) return;
|
||||
if (BuildRegistry.Instance == null) return;
|
||||
if (!TryConsumeHammerUse()) return;
|
||||
|
||||
if (BuildRegistry.Instance != null)
|
||||
BuildRegistry.Instance.RequestBuild(activeId, ghost.transform.position, ghost.transform.rotation);
|
||||
BuildRegistry.Instance.RequestBuild(activeId, ghost.transform.position, ghost.transform.rotation);
|
||||
|
||||
ConsumeCost();
|
||||
|
||||
@@ -352,7 +465,9 @@ namespace Ashwild.Building
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Right-click: cancels the current placement (even while the ghost is still spawning).
|
||||
/// The hammer's cancel request (a right-click tap while placing): cancels the current placement
|
||||
/// (even while the ghost is still spawning). Routed through the bus so this stays the single
|
||||
/// place that ends a placement — the hammer is the sole arbiter of the click.
|
||||
/// </summary>
|
||||
private void HandleCancel()
|
||||
{
|
||||
@@ -388,7 +503,7 @@ namespace Ashwild.Building
|
||||
/// <summary>
|
||||
/// Poses the ghost each frame: quantise the aim hit to the grid with the current yaw, then
|
||||
/// let a nearby matching socket pull it into an exact connection (sockets win over the grid).
|
||||
/// Leaves the ghost where it was when the ray hits nothing in range.
|
||||
/// Leaves the ghost where it was — connection included — when the ray hits nothing in range.
|
||||
/// </summary>
|
||||
private void UpdateGhostPose()
|
||||
{
|
||||
@@ -397,7 +512,7 @@ namespace Ashwild.Building
|
||||
return;
|
||||
|
||||
ghost.transform.SetPositionAndRotation(SnapToGrid(hit.point), Quaternion.Euler(0f, yaw, 0f));
|
||||
TrySnapToSockets();
|
||||
ghostIsConnected = TrySnapToSockets();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -419,11 +534,14 @@ namespace Ashwild.Building
|
||||
/// coincides. Because it commits to the single nearest ghost-socket↔world-socket pair (not the
|
||||
/// socket nearest the aim), the ghost picks one connection instead of hovering between two.
|
||||
/// Rotation stays the player's grid yaw, so pieces meet edge-to-edge once oriented.
|
||||
///
|
||||
/// Returns whether a connection was actually made, which is what lets the caller trust the pose
|
||||
/// and skip the obstruction test for it.
|
||||
/// </summary>
|
||||
private void TrySnapToSockets()
|
||||
private bool TrySnapToSockets()
|
||||
{
|
||||
if (ghostSnaps == null || ghostSnaps.Length == 0) return;
|
||||
if (snapPointMask == 0) return;
|
||||
if (ghostSnaps == null || ghostSnaps.Length == 0) return false;
|
||||
if (snapPointMask == 0) return false;
|
||||
|
||||
BuildSnapPoint bestGhost = null;
|
||||
BuildSnapPoint bestWorld = null;
|
||||
@@ -451,9 +569,10 @@ namespace Ashwild.Building
|
||||
}
|
||||
}
|
||||
|
||||
if (bestGhost == null || bestWorld == null) return;
|
||||
if (bestGhost == null || bestWorld == null) return false;
|
||||
|
||||
ghost.transform.position += bestWorld.transform.position - bestGhost.transform.position;
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -505,8 +624,10 @@ namespace Ashwild.Building
|
||||
BuildRegistry.Instance.RequestDespawnGhost(ghost.GetComponent<NetworkObject>());
|
||||
ghost = null;
|
||||
}
|
||||
ghostValidity = null;
|
||||
ghostView = null;
|
||||
ghostSnaps = null;
|
||||
lastSentValidity = -1;
|
||||
ghostIsConnected = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -638,14 +759,31 @@ namespace Ashwild.Building
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Left-click while demolishing: asks the registry to remove the aimed build for everyone. The
|
||||
/// target stays until the next frame re-evaluates, so a miss simply retargets.
|
||||
/// Left-click while demolishing: spends a hammer use and asks the registry to remove the aimed
|
||||
/// build for everyone (which refunds resources by remaining health). Blocked when the hammer is
|
||||
/// out of durability. The target stays until the next frame re-evaluates, so a miss simply
|
||||
/// retargets.
|
||||
/// </summary>
|
||||
private void TryDemolish()
|
||||
{
|
||||
if (demoTarget == null) return;
|
||||
if (BuildRegistry.Instance != null)
|
||||
BuildRegistry.Instance.RequestDemolish(demoTarget.gameObject);
|
||||
if (!TryConsumeHammerUse()) return;
|
||||
|
||||
demoTarget.RequestDemolish();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Spends the configured durability on the equipped hammer for one build action, returning
|
||||
/// whether the action may proceed. A depleted hammer returns false so the placement/demolition
|
||||
/// is blocked (like any worn-out tool); a hammer with no durability authored, a zero cost, or no
|
||||
/// inventory simply passes without wear. The hammer is the selected hotbar item while building,
|
||||
/// so spending the selected tool's use targets it.
|
||||
/// </summary>
|
||||
private bool TryConsumeHammerUse()
|
||||
{
|
||||
PlayerInventory inv = PlayerInventory.Instance;
|
||||
if (inv == null) return true;
|
||||
return inv.ConsumeSelectedToolUse(hammerUsesPerAction);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Ashwild.Building
|
||||
{
|
||||
/// <summary>
|
||||
/// A committed structure in the world, replicated in the BuildRegistry's SyncList: which
|
||||
/// buildable (network id) sits at which pose. Every machine instantiates the matching
|
||||
/// BuiltPrefab locally from this record — the structures themselves are never NetworkObjects (§3).
|
||||
/// </summary>
|
||||
public struct BuildRecord
|
||||
{
|
||||
public ushort buildableId;
|
||||
public Vector3 position;
|
||||
public Quaternion rotation;
|
||||
}
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1554bdf5a966a1947bbe0d2855967590
|
||||
@@ -1,25 +1,29 @@
|
||||
using System.Collections.Generic;
|
||||
using FishNet.Connection;
|
||||
using FishNet.Object;
|
||||
using FishNet.Object.Synchronizing;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Ashwild.Building
|
||||
{
|
||||
/// <summary>
|
||||
/// Owns the whole networked side of building, grouped here by cohesion rather than split into
|
||||
/// two tiny scripts:
|
||||
/// The networked side of building: it commits placements and owns the live ghost preview.
|
||||
///
|
||||
/// 1. Committed structures — a SyncList of BuildRecords (id + pose). They accumulate to high
|
||||
/// counts, so they are data-driven, not NetworkObjects (§3): every machine (late joiners
|
||||
/// included) instantiates the matching BuiltPrefab locally from the synced list.
|
||||
/// 2. The live ghost preview — spawned as a real NetworkObject owned by the placer, so FishNet's
|
||||
/// NetworkTransform replicates its motion to everyone smoothly. A ghost is one-per-player and
|
||||
/// transient, the case where a NetworkObject beats a data registry — the deliberate exception
|
||||
/// to §3's "no NetworkObjects for world state" (which targets high-count scatter, not this).
|
||||
/// Every committed structure — a wall as much as a chest or a campfire — is spawned as a real
|
||||
/// NetworkObject owned by the server. That is the whole design: FishNet already replicates spawns,
|
||||
/// catches late joiners up, and tears objects down on despawn, so there is no build list to keep,
|
||||
/// no index to align, and no rebuild path to write. Each build carries its own state on its own
|
||||
/// <see cref="BuiltStructure"/>, which is what lets a stateful structure (chest, cooking station)
|
||||
/// be placed by exactly the same code as a plain wall instead of needing a parallel mechanism.
|
||||
///
|
||||
/// BuildManager (the local build UX) drives the owned ghost; on confirm this registry commits the
|
||||
/// record and despawns the ghost. One instance per scene, a scene NetworkObject like the others.
|
||||
/// This replaced an earlier data-driven registry (a SyncList of pose records that every client
|
||||
/// instantiated locally). That saved FishNet's per-object bookkeeping but not the GameObjects —
|
||||
/// they were instantiated locally anyway — while forcing a second, incompatible path for anything
|
||||
/// with real state. One mechanism is worth the bookkeeping.
|
||||
///
|
||||
/// The ghost is likewise a NetworkObject, but owned by the placer so FishNet's NetworkTransform
|
||||
/// replicates its motion smoothly; it is transient and one per player.
|
||||
///
|
||||
/// BuildManager (the local build UX) drives the owned ghost; on confirm this registry spawns the
|
||||
/// structure and despawns the ghost. One instance per scene, a scene NetworkObject like the others.
|
||||
/// </summary>
|
||||
[RequireComponent(typeof(NetworkObject))]
|
||||
public class BuildRegistry : NetworkBehaviour
|
||||
@@ -27,50 +31,31 @@ namespace Ashwild.Building
|
||||
#region State
|
||||
|
||||
/// <summary>
|
||||
/// The single scene instance, so BuildManager can request ghost spawns/despawns and build
|
||||
/// commits.
|
||||
/// The single scene instance, so BuildManager can request ghost spawns/despawns and build commits.
|
||||
/// </summary>
|
||||
public static BuildRegistry Instance { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Every committed structure, server-written and replicated to all clients.
|
||||
/// </summary>
|
||||
private readonly SyncList<BuildRecord> builds = new SyncList<BuildRecord>();
|
||||
|
||||
/// <summary>
|
||||
/// The local instances rendered from <see cref="builds"/>, kept index-aligned with it.
|
||||
/// </summary>
|
||||
private readonly List<GameObject> spawned = new List<GameObject>();
|
||||
|
||||
/// <summary>
|
||||
/// How close two sockets must be to count as connected — they snap to the exact same point,
|
||||
/// so a tiny threshold is enough and no layer/radius has to be configured.
|
||||
/// </summary>
|
||||
private const float OccupancyThresholdSqr = 0.05f * 0.05f;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Network Lifecycle
|
||||
|
||||
/// <summary>
|
||||
/// Starts listening to the replicated build list on every machine.
|
||||
/// Claims the singleton on every machine.
|
||||
/// </summary>
|
||||
public override void OnStartNetwork()
|
||||
{
|
||||
base.OnStartNetwork();
|
||||
Instance = this;
|
||||
builds.OnChange += OnBuildsChanged;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Unsubscribes and tears down the local instances when the session ends.
|
||||
/// Releases the singleton when the session ends. Committed structures are NetworkObjects, so
|
||||
/// FishNet despawns them itself — there is nothing to tear down here.
|
||||
/// </summary>
|
||||
public override void OnStopNetwork()
|
||||
{
|
||||
base.OnStopNetwork();
|
||||
if (Instance == this) Instance = null;
|
||||
builds.OnChange -= OnBuildsChanged;
|
||||
ClearAll();
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -78,60 +63,45 @@ namespace Ashwild.Building
|
||||
#region Commit Build
|
||||
|
||||
/// <summary>
|
||||
/// Called by BuildManager when the local player confirms a placement: commit this buildable
|
||||
/// at this pose so the real structure appears for every player.
|
||||
/// Called by BuildManager when the local player confirms a placement: commit this buildable at
|
||||
/// this pose so the real structure appears for every player.
|
||||
/// </summary>
|
||||
public void RequestBuild(ushort buildableId, Vector3 position, Quaternion rotation)
|
||||
=> RequestBuildServerRpc(buildableId, position, rotation);
|
||||
|
||||
/// <summary>
|
||||
/// Server-side: validates the id and appends the record, which replicates to all clients.
|
||||
/// Server-side: validates the id, instantiates the built prefab, seeds its identity and health,
|
||||
/// then spawns it for everyone. The appear pop is sent separately to current observers only, so a
|
||||
/// late joiner streaming in an existing base does not watch all of it pop at once.
|
||||
///
|
||||
/// The structure is spawned server-owned (no connection passed): builds are shared world state
|
||||
/// and several players interact with the same chest or fire, so handing ownership to whoever
|
||||
/// placed it would tie everyone's access to that player's connection.
|
||||
/// </summary>
|
||||
[ServerRpc(RequireOwnership = false)]
|
||||
private void RequestBuildServerRpc(ushort buildableId, Vector3 position, Quaternion rotation, NetworkConnection conn = null)
|
||||
{
|
||||
if (BuildableDatabase.Instance == null || BuildableDatabase.Instance.GetBuildable(buildableId) == null)
|
||||
return;
|
||||
|
||||
// TODO: validate + consume the requester's resources (conn → PlayerInventory) before committing.
|
||||
builds.Add(new BuildRecord { buildableId = buildableId, position = position, rotation = rotation });
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Demolish Build
|
||||
|
||||
/// <summary>
|
||||
/// Called by BuildManager when the local player demolishes a build they aimed at: resolves the
|
||||
/// hit instance to its index in the replicated list and asks the server to remove it. The index
|
||||
/// is a valid shared key because <see cref="spawned"/> stays aligned with <see cref="builds"/>
|
||||
/// on every machine. No-op when the object is not one of our committed builds.
|
||||
/// </summary>
|
||||
public void RequestDemolish(GameObject builtInstance)
|
||||
{
|
||||
if (builtInstance == null) return;
|
||||
|
||||
int index = spawned.IndexOf(builtInstance);
|
||||
if (index < 0)
|
||||
BuildableData data = BuildableDatabase.Instance != null ? BuildableDatabase.Instance.GetBuildable(buildableId) : null;
|
||||
if (data == null || data.BuiltPrefab == null)
|
||||
{
|
||||
Debug.LogWarning($"[BuildRegistry] '{builtInstance.name}' is not a committed build — nothing to demolish.", this);
|
||||
Debug.LogWarning($"[BuildRegistry] Buildable id {buildableId} is unknown or has no BuiltPrefab — nothing spawned.", this);
|
||||
return;
|
||||
}
|
||||
RequestDemolishServerRpc(index);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Server-side: removes the record at this index, which replicates the removal (and the local
|
||||
/// teardown + occupancy refresh) to every client. Range-guarded against a stale index from a
|
||||
/// build that another player demolished during the round-trip.
|
||||
/// </summary>
|
||||
[ServerRpc(RequireOwnership = false)]
|
||||
private void RequestDemolishServerRpc(int index, NetworkConnection conn = null)
|
||||
{
|
||||
if (index < 0 || index >= builds.Count) return;
|
||||
// TODO: validate + consume the requester's resources (conn → PlayerInventory) before committing.
|
||||
GameObject go = Instantiate(data.BuiltPrefab, position, rotation);
|
||||
|
||||
// TODO: refund the builder's resources (conn → PlayerInventory) once build cost lands.
|
||||
builds.RemoveAt(index);
|
||||
BuiltStructure structure = go.GetComponent<BuiltStructure>();
|
||||
if (structure == null)
|
||||
{
|
||||
Debug.LogError($"[BuildRegistry] BuiltPrefab '{data.BuiltPrefab.name}' has no BuiltStructure — add one (it carries the build's identity, health and demolition).", this);
|
||||
Destroy(go);
|
||||
return;
|
||||
}
|
||||
|
||||
structure.InitialiseOnServer(buildableId, data.MaxHealth);
|
||||
base.ServerManager.Spawn(go);
|
||||
structure.PlaySpawnBumpForObservers();
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -193,147 +163,38 @@ namespace Ashwild.Building
|
||||
base.ServerManager.Despawn(ghost, DespawnType.Destroy);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Sync → Local Instances
|
||||
|
||||
/// <summary>
|
||||
/// Mirrors the replicated build list into local instances. The host processes only the
|
||||
/// server callback (asServer) so a build is never instantiated twice on the same machine.
|
||||
/// Owner → replicates the ghost's current spot validity to every other client so teammates see
|
||||
/// the same green (clear) / red (blocked) preview. Only the owner drives the evaluation locally,
|
||||
/// so without this a remote ghost stays on its default look; BuildManager calls this only when the
|
||||
/// value actually changes, so the traffic is a rare per-ghost blip, not a per-frame stream.
|
||||
/// </summary>
|
||||
private void OnBuildsChanged(SyncListOperation op, int index, BuildRecord oldItem, BuildRecord newItem, bool asServer)
|
||||
public void SetGhostValidity(NetworkObject ghost, bool valid)
|
||||
{
|
||||
if (!asServer && base.IsServerInitialized) return;
|
||||
|
||||
switch (op)
|
||||
{
|
||||
case SyncListOperation.Add:
|
||||
case SyncListOperation.Insert:
|
||||
{
|
||||
GameObject go = CreateInstance(newItem);
|
||||
spawned.Insert(index, go);
|
||||
MarkOccupancy(go);
|
||||
break;
|
||||
}
|
||||
|
||||
case SyncListOperation.Set:
|
||||
DestroyAt(index);
|
||||
spawned[index] = CreateInstance(newItem);
|
||||
break;
|
||||
|
||||
case SyncListOperation.RemoveAt:
|
||||
DestroyAt(index);
|
||||
spawned.RemoveAt(index);
|
||||
RecomputeOccupancy();
|
||||
break;
|
||||
|
||||
case SyncListOperation.Clear:
|
||||
ClearAll();
|
||||
break;
|
||||
|
||||
case SyncListOperation.Complete:
|
||||
RebuildAll();
|
||||
break;
|
||||
}
|
||||
if (ghost != null) SetGhostValidityServerRpc(ghost, valid);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Instantiates a record's BuiltPrefab at its pose, or null when the id or prefab is missing.
|
||||
/// Server-side relay: forwards the placer's validity to all observers.
|
||||
/// </summary>
|
||||
private GameObject CreateInstance(BuildRecord record)
|
||||
[ServerRpc(RequireOwnership = false)]
|
||||
private void SetGhostValidityServerRpc(NetworkObject ghost, bool valid, NetworkConnection conn = null)
|
||||
{
|
||||
BuildableData data = BuildableDatabase.Instance != null ? BuildableDatabase.Instance.GetBuildable(record.buildableId) : null;
|
||||
if (data == null || data.BuiltPrefab == null)
|
||||
{
|
||||
Debug.LogWarning($"[BuildRegistry] Buildable id {record.buildableId} introuvable ou sans BuiltPrefab — rien de spawné.", this);
|
||||
return null;
|
||||
}
|
||||
|
||||
GameObject go = Instantiate(data.BuiltPrefab, record.position, record.rotation);
|
||||
if (go.GetComponent<BuiltStructure>() == null) go.AddComponent<BuiltStructure>();
|
||||
return go;
|
||||
if (ghost == null) return;
|
||||
ObserversSetGhostValidity(ghost, valid);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Destroys the local instance at an index without touching the list bookkeeping.
|
||||
/// Applies the replicated validity on every client except the placer, whose own local evaluation
|
||||
/// already drives the richer verdict (and knows about affordability, which is never sent). A
|
||||
/// missing ghost is ignored — it may have been despawned mid-flight.
|
||||
/// </summary>
|
||||
private void DestroyAt(int index)
|
||||
[ObserversRpc]
|
||||
private void ObserversSetGhostValidity(NetworkObject ghost, bool valid)
|
||||
{
|
||||
if (index < 0 || index >= spawned.Count) return;
|
||||
if (spawned[index] != null) Destroy(spawned[index]);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Destroys every local instance and clears the list.
|
||||
/// </summary>
|
||||
private void ClearAll()
|
||||
{
|
||||
foreach (GameObject go in spawned)
|
||||
if (go != null) Destroy(go);
|
||||
spawned.Clear();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Rebuilds all local instances from the current list — used for the late-join catch-up —
|
||||
/// then recomputes which sockets are connected so late joiners see the same occupancy.
|
||||
/// </summary>
|
||||
private void RebuildAll()
|
||||
{
|
||||
ClearAll();
|
||||
for (int i = 0; i < builds.Count; i++)
|
||||
spawned.Add(CreateInstance(builds[i]));
|
||||
|
||||
foreach (GameObject go in spawned)
|
||||
MarkOccupancy(go);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Recomputes occupancy from scratch after a removal: clears every socket, then re-marks the
|
||||
/// connected pairs across what remains. Without this a demolished piece would leave its former
|
||||
/// neighbours' sockets stuck "occupied", so nothing could ever be snapped back into the gap.
|
||||
/// </summary>
|
||||
private void RecomputeOccupancy()
|
||||
{
|
||||
foreach (GameObject go in spawned)
|
||||
{
|
||||
if (go == null) continue;
|
||||
foreach (BuildSnapPoint sp in go.GetComponentsInChildren<BuildSnapPoint>(true))
|
||||
sp.SetOccupied(false);
|
||||
}
|
||||
|
||||
foreach (GameObject go in spawned)
|
||||
MarkOccupancy(go);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Marks the sockets a piece shares a position with — and the matching sockets on the pieces
|
||||
/// it touches — as occupied, so placement snapping skips them. Occupancy is derived purely
|
||||
/// from geometry (two connected sockets sit on the exact same point), so it stays consistent
|
||||
/// on every client without anything extra crossing the wire.
|
||||
/// </summary>
|
||||
private void MarkOccupancy(GameObject instance)
|
||||
{
|
||||
if (instance == null) return;
|
||||
|
||||
BuildSnapPoint[] newSockets = instance.GetComponentsInChildren<BuildSnapPoint>(true);
|
||||
if (newSockets.Length == 0) return;
|
||||
|
||||
foreach (GameObject other in spawned)
|
||||
{
|
||||
if (other == null || other == instance) continue;
|
||||
|
||||
foreach (BuildSnapPoint os in other.GetComponentsInChildren<BuildSnapPoint>(true))
|
||||
{
|
||||
foreach (BuildSnapPoint ns in newSockets)
|
||||
{
|
||||
if (ns.Category != os.Category) continue;
|
||||
if ((ns.transform.position - os.transform.position).sqrMagnitude > OccupancyThresholdSqr) continue;
|
||||
|
||||
ns.SetOccupied(true);
|
||||
os.SetOccupied(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ghost == null || ghost.IsOwner) return;
|
||||
BuildGhost bg = ghost.GetComponent<BuildGhost>();
|
||||
if (bg != null) bg.SetRemoteValidity(valid);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -24,8 +24,9 @@ namespace Ashwild.Building
|
||||
/// of the ghost, so the ghost never snaps to itself.
|
||||
///
|
||||
/// Once another piece connects here the socket is marked occupied — the placement snapping skips
|
||||
/// occupied sockets (so two pieces never stack on the same connection) and its gizmo turns from
|
||||
/// blue (free) to red (occupied) in the Scene view.
|
||||
/// occupied sockets (so two pieces never stack on the same connection) and its gizmo turns red
|
||||
/// in the Scene view; while free it takes the colour of its category, so a glance at a prefab
|
||||
/// tells which sockets can ever link together.
|
||||
/// </summary>
|
||||
[DisallowMultipleComponent]
|
||||
public class BuildSnapPoint : MonoBehaviour
|
||||
@@ -61,19 +62,42 @@ namespace Ashwild.Building
|
||||
|
||||
#region Gizmos
|
||||
|
||||
private static readonly Color OccupiedColor = new Color(1f, 0.3f, 0.3f, 0.9f);
|
||||
private static readonly Color FloorColor = new Color(0.3f, 0.8f, 1f, 0.9f);
|
||||
private static readonly Color WallColor = new Color(0.4f, 1f, 0.5f, 0.9f);
|
||||
private static readonly Color RoofColor = new Color(1f, 0.75f, 0.25f, 0.9f);
|
||||
private static readonly Color PillarColor = new Color(0.8f, 0.5f, 1f, 0.9f);
|
||||
private static readonly Color CustomColor = new Color(1f, 1f, 1f, 0.9f);
|
||||
|
||||
/// <summary>
|
||||
/// Draws the socket in the editor: a sphere (blue when free, red once occupied) plus a ray
|
||||
/// along its forward (Z) axis — the direction the connecting piece attaches. Two sockets link
|
||||
/// only when their forwards face each other, so orient each empty's blue arrow outward toward
|
||||
/// where the neighbour should sit.
|
||||
/// Draws the socket in the editor: a sphere plus a ray along its forward (Z) axis — the
|
||||
/// direction the connecting piece attaches. Two sockets link only when their forwards face
|
||||
/// each other, so orient each empty's arrow outward toward where the neighbour should sit.
|
||||
/// </summary>
|
||||
private void OnDrawGizmos()
|
||||
{
|
||||
Gizmos.color = occupied ? new Color(1f, 0.3f, 0.3f, 0.9f) : new Color(0.3f, 0.8f, 1f, 0.9f);
|
||||
Gizmos.color = occupied ? OccupiedColor : GetCategoryColor(category);
|
||||
Gizmos.DrawWireSphere(transform.position, 0.12f);
|
||||
Gizmos.DrawRay(transform.position, transform.forward * 0.35f);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Maps a connection category to its Scene-view colour. Sockets that can link share a
|
||||
/// category, so same-coloured gizmos are exactly the ones that may ever snap together —
|
||||
/// mismatched colours on two pieces mean they will never connect.
|
||||
/// </summary>
|
||||
private static Color GetCategoryColor(SnapCategory value)
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
case SnapCategory.Floor: return FloorColor;
|
||||
case SnapCategory.Wall: return WallColor;
|
||||
case SnapCategory.Roof: return RoofColor;
|
||||
case SnapCategory.Pillar: return PillarColor;
|
||||
default: return CustomColor;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,25 @@ using Ashwild.Inventory;
|
||||
|
||||
namespace Ashwild.Building
|
||||
{
|
||||
/// <summary>
|
||||
/// What a buildable is allowed to rest on. This is the one placement rule that genuinely differs
|
||||
/// per structure — a foundation sits on terrain, a wall or a ceiling only makes sense attached to
|
||||
/// something — so it is authored here rather than configured globally on BuildManager (which keeps
|
||||
/// owning the project-wide layer masks: what blocks a build does not vary per build).
|
||||
///
|
||||
/// <see cref="GroundOrSnap"/> is deliberately the zero value: Unity deserializes a missing field to
|
||||
/// 0, so buildables authored before this rule existed keep their old, permissive behaviour instead
|
||||
/// of silently becoming unplaceable.
|
||||
/// </summary>
|
||||
public enum PlacementSupport
|
||||
{
|
||||
/// <summary>Free placement anywhere the aim lands, or connected to a socket. Foundations, floors.</summary>
|
||||
GroundOrSnap,
|
||||
|
||||
/// <summary>Only valid while connected to a matching socket. Walls, ceilings, roofs.</summary>
|
||||
SnapOnly
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Authoring data for one buildable structure shown in the construction menu (a wall, a
|
||||
/// floor, a door, ...). Mirrors the ScriptableObject-for-data / MonoBehaviour-for-logic
|
||||
@@ -35,6 +54,14 @@ namespace Ashwild.Building
|
||||
[Tooltip("Resources consumed from the builder's inventory on each placement. Leave empty for a free build.")]
|
||||
[SerializeField] private BuildCost[] cost;
|
||||
|
||||
[Header("Placement")]
|
||||
[Tooltip("Where this structure may be committed. Walls, ceilings and roofs should be Snap Only so they cannot be dropped in mid-air; foundations and floors stay Ground Or Snap.")]
|
||||
[SerializeField] private PlacementSupport support = PlacementSupport.GroundOrSnap;
|
||||
|
||||
[Header("Health")]
|
||||
[Tooltip("Hit points the placed structure starts with. Damage subtracts from this (server-authoritative in BuildRegistry); at 0 the build is destroyed. A manual demolition refunds the cost in proportion to the health left.")]
|
||||
[SerializeField] private float maxHealth = 100f;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public API
|
||||
@@ -45,6 +72,8 @@ namespace Ashwild.Building
|
||||
public GameObject GhostPrefab => ghostPrefab;
|
||||
public GameObject BuiltPrefab => builtPrefab;
|
||||
public BuildCost[] Cost => cost;
|
||||
public float MaxHealth => maxHealth;
|
||||
public PlacementSupport Support => support;
|
||||
|
||||
/// <summary>
|
||||
/// Whether the given inventory holds enough of every cost line to place this structure once.
|
||||
|
||||
@@ -1,34 +1,106 @@
|
||||
using System.Collections.Generic;
|
||||
using Ashwild.Inventory;
|
||||
using DG.Tweening;
|
||||
using FishNet.Connection;
|
||||
using FishNet.Object;
|
||||
using FishNet.Object.Synchronizing;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Ashwild.Building
|
||||
{
|
||||
/// <summary>
|
||||
/// Runtime marker added to every committed structure instance the BuildRegistry spawns, so the
|
||||
/// demolition aim can recognise a build from a raycast hit (GetComponentInParent) and hand its
|
||||
/// root back to the registry to remove. It also owns the demolition highlight: while it is the
|
||||
/// hammer's target the demolition material is added on top of every renderer (an extra overlay
|
||||
/// pass, like the ghost), and removed again when the aim leaves — so the player sees exactly which
|
||||
/// build will break. Pure local visual + a pure tag: nothing about it ever crosses the wire.
|
||||
/// The one component every committed structure carries — wall, floor, chest, campfire alike. Since
|
||||
/// builds are spawned as real NetworkObjects, each one is self-contained: it knows what it is, owns
|
||||
/// its own server-authoritative health, and handles its own damage and demolition. There is no
|
||||
/// central list of builds and no index to keep aligned; the object IS the record.
|
||||
///
|
||||
/// It groups everything that changes together when a placed build's behaviour changes:
|
||||
/// 1. Identity — <see cref="BuildableId"/>, replicated so any machine can resolve the BuildableData
|
||||
/// behind this instance (the refund needs its cost, UI needs its name).
|
||||
/// 2. Health and damage — server-authoritative. <see cref="TakeDamage"/> is what an attacker calls;
|
||||
/// the server applies it and despawns the build for everyone when it dies (no refund — it broke).
|
||||
/// 3. Demolition — <see cref="RequestDemolish"/> refunds a share of the cost proportional to the
|
||||
/// health left, then despawns.
|
||||
/// 4. Presentation — the appear bump and the demolition highlight, both purely local.
|
||||
/// 5. Snap occupancy — every live instance registers here, so connected sockets can be marked
|
||||
/// without anyone holding a master list of builds.
|
||||
///
|
||||
/// Health never crosses the wire: only its observable effects do (the build disappearing, resources
|
||||
/// refunded), which replicate through the despawn and the inventory RPC respectively.
|
||||
/// </summary>
|
||||
[DisallowMultipleComponent]
|
||||
public class BuiltStructure : MonoBehaviour
|
||||
[RequireComponent(typeof(NetworkObject))]
|
||||
public class BuiltStructure : NetworkBehaviour
|
||||
{
|
||||
#region Serialized Fields
|
||||
|
||||
[Header("Appear Bump")]
|
||||
[Tooltip("How long the pop lasts — short and snappy reads as an 'appear' effect.")]
|
||||
[SerializeField] private float bumpDuration = DefaultBumpDuration;
|
||||
|
||||
[Tooltip("Fraction of the authored scale the bump starts from (0.7 = starts at 70%, then springs up).")]
|
||||
[SerializeField] private float startScaleFactor = DefaultStartScaleFactor;
|
||||
|
||||
[Tooltip("OutBack gives the springy overshoot that sells the 'boom'.")]
|
||||
[SerializeField] private Ease bumpEase = Ease.OutBack;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constants
|
||||
|
||||
/// <summary>
|
||||
/// Fallback bump values, used both as the field initializers and as the guard defaults in
|
||||
/// <see cref="PlaySpawnBump"/> — so a build whose prefab predates these serialized fields
|
||||
/// (Unity deserializes the missing values to 0) still pops instead of snapping in.
|
||||
/// </summary>
|
||||
private const float DefaultBumpDuration = 0.22f;
|
||||
private const float DefaultStartScaleFactor = 0.7f;
|
||||
|
||||
/// <summary>
|
||||
/// How close two sockets must be to count as connected — they snap to the exact same point, so a
|
||||
/// tiny threshold is enough and no layer or radius has to be configured.
|
||||
/// </summary>
|
||||
private const float OccupancyThresholdSqr = 0.05f * 0.05f;
|
||||
|
||||
#endregion
|
||||
|
||||
#region State
|
||||
|
||||
/// <summary>
|
||||
/// Every child renderer, cached so the highlight can swap and restore their materials.
|
||||
/// Every live built structure on this machine. Maintained here rather than in a central registry
|
||||
/// so occupancy works off the objects themselves — the network spawns and despawns them, and the
|
||||
/// list follows automatically.
|
||||
/// </summary>
|
||||
private static readonly List<BuiltStructure> Live = new List<BuiltStructure>();
|
||||
|
||||
/// <summary>
|
||||
/// Which buildable this instance was placed from, so the refund can look up its cost. Written by
|
||||
/// the server before the spawn, so it is already correct on the first frame everywhere.
|
||||
/// </summary>
|
||||
private readonly SyncVar<ushort> buildableId = new SyncVar<ushort>();
|
||||
|
||||
/// <summary>
|
||||
/// Server-only remaining health, seeded from the buildable's authored max at spawn.
|
||||
/// </summary>
|
||||
private float health;
|
||||
|
||||
private Renderer[] renderers;
|
||||
|
||||
/// <summary>
|
||||
/// Each renderer's original materials, kept so the swap is fully reversible.
|
||||
/// </summary>
|
||||
private Material[][] baseMaterials;
|
||||
private bool highlighted;
|
||||
private Tween bumpTween;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public API
|
||||
|
||||
public ushort BuildableId => buildableId.Value;
|
||||
|
||||
/// <summary>
|
||||
/// Whether the demolition material is currently applied, so swaps stay idempotent.
|
||||
/// The authoring data behind this instance, or null when the database cannot resolve its id.
|
||||
/// </summary>
|
||||
private bool highlighted;
|
||||
public BuildableData Data => BuildableDatabase.Instance != null
|
||||
? BuildableDatabase.Instance.GetBuildable(buildableId.Value)
|
||||
: null;
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -46,14 +118,234 @@ namespace Ashwild.Building
|
||||
baseMaterials[i] = renderers[i] != null ? renderers[i].sharedMaterials : new Material[0];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Kills the appear tween so it never targets a destroyed transform (e.g. the build was
|
||||
/// demolished mid-pop).
|
||||
/// </summary>
|
||||
private void OnDestroy() => bumpTween?.Kill();
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public API
|
||||
#region Network Lifecycle
|
||||
|
||||
/// <summary>
|
||||
/// Adds the demolition material on top of each renderer's authored materials (an extra draw
|
||||
/// pass), marking this build as the hammer's current target without hiding the model. Mirrors
|
||||
/// the ghost overlay. No-op when already highlighted or no material was provided.
|
||||
/// Joins the live set and marks the sockets this piece connects to. Runs on every machine as the
|
||||
/// object spawns — including on a late joiner receiving builds placed long ago, which is exactly
|
||||
/// when occupancy has to be rebuilt for them too.
|
||||
/// </summary>
|
||||
public override void OnStartNetwork()
|
||||
{
|
||||
base.OnStartNetwork();
|
||||
Live.Add(this);
|
||||
MarkOccupancy();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Leaves the live set and recomputes occupancy across what remains. Without the recompute a
|
||||
/// demolished piece would leave its former neighbours' sockets stuck "occupied", so nothing could
|
||||
/// ever be snapped back into the gap.
|
||||
/// </summary>
|
||||
public override void OnStopNetwork()
|
||||
{
|
||||
base.OnStopNetwork();
|
||||
Live.Remove(this);
|
||||
RecomputeOccupancy();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Server Setup
|
||||
|
||||
/// <summary>
|
||||
/// Seeds identity and health on the server, before the object is spawned, so both are already in
|
||||
/// place when clients first see it. Called by BuildRegistry as part of committing a placement.
|
||||
/// </summary>
|
||||
public void InitialiseOnServer(ushort id, float maxHealth)
|
||||
{
|
||||
buildableId.Value = id;
|
||||
health = maxHealth > 0f ? maxHealth : 1f;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Appear Bump
|
||||
|
||||
/// <summary>
|
||||
/// Tells everyone currently watching to play the appear pop. Sent by the server right after a
|
||||
/// fresh placement. Because it only reaches present observers, a late joiner streaming in dozens
|
||||
/// of existing structures never receives it — so their base does not pop into existence all at
|
||||
/// once, which is precisely the distinction the old "only on Add, never on rebuild" rule made.
|
||||
/// </summary>
|
||||
[ObserversRpc]
|
||||
public void PlaySpawnBumpForObservers() => PlaySpawnBump();
|
||||
|
||||
/// <summary>
|
||||
/// Runs the appear bump from the shrunk start scale up to the transform's current (authored)
|
||||
/// scale. Captures the target at call time so a non-uniform or non-unit prefab scale is preserved.
|
||||
/// Non-positive serialized values fall back to the constants so the pop still plays.
|
||||
/// </summary>
|
||||
public void PlaySpawnBump()
|
||||
{
|
||||
bumpTween?.Kill();
|
||||
|
||||
float duration = bumpDuration > 0f ? bumpDuration : DefaultBumpDuration;
|
||||
float factor = (startScaleFactor > 0f && startScaleFactor < 1f) ? startScaleFactor : DefaultStartScaleFactor;
|
||||
|
||||
Vector3 targetScale = transform.localScale;
|
||||
transform.localScale = targetScale * factor;
|
||||
bumpTween = transform.DOScale(targetScale, duration).SetEase(bumpEase);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Damage
|
||||
|
||||
/// <summary>
|
||||
/// Called by an attacker (weapon, explosion, ...) to hurt this build. Health is server-
|
||||
/// authoritative, so this only forwards the hit; the server applies it and despawns the structure
|
||||
/// for everyone when it dies. A build destroyed by damage is NOT refunded, unlike a manual
|
||||
/// demolition — it broke, its resources are lost. Safe to call from any client.
|
||||
/// </summary>
|
||||
public void TakeDamage(float amount)
|
||||
{
|
||||
if (amount <= 0f) return;
|
||||
TakeDamageServerRpc(amount);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Server-side: subtracts the damage and despawns the build once it reaches zero.
|
||||
/// </summary>
|
||||
[ServerRpc(RequireOwnership = false)]
|
||||
private void TakeDamageServerRpc(float amount)
|
||||
{
|
||||
if (amount <= 0f) return;
|
||||
|
||||
health -= amount;
|
||||
if (health <= 0f) Despawn();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Demolition
|
||||
|
||||
/// <summary>
|
||||
/// Called by BuildManager when the local player demolishes this build: asks the server to refund
|
||||
/// and remove it. Any client may request it — co-op is friendly, not anti-cheat.
|
||||
/// </summary>
|
||||
public void RequestDemolish() => DemolishServerRpc();
|
||||
|
||||
/// <summary>
|
||||
/// Server-side: refunds the demolisher a share of the cost proportional to the health left, then
|
||||
/// despawns the structure for everyone.
|
||||
/// </summary>
|
||||
[ServerRpc(RequireOwnership = false)]
|
||||
private void DemolishServerRpc(NetworkConnection conn = null)
|
||||
{
|
||||
RefundResources(conn);
|
||||
Despawn();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Grants the demolishing player back a share of this build's cost proportional to its remaining
|
||||
/// health: a full-health build refunds its whole cost, a half-health one refunds half, and so on
|
||||
/// (per line, floored — a partial unit is not returned). No-op for a free build, when the player's
|
||||
/// inventory cannot be resolved, or when the fraction rounds every line down to nothing.
|
||||
/// </summary>
|
||||
private void RefundResources(NetworkConnection conn)
|
||||
{
|
||||
BuildableData data = Data;
|
||||
if (data == null || data.Cost == null || data.Cost.Length == 0) return;
|
||||
|
||||
PlayerInventory inventory = ResolveInventory(conn);
|
||||
if (inventory == null) return;
|
||||
|
||||
float max = data.MaxHealth;
|
||||
float fraction = max > 0f ? Mathf.Clamp01(health / max) : 1f;
|
||||
|
||||
foreach (BuildCost line in data.Cost)
|
||||
{
|
||||
if (line.item == null) continue;
|
||||
int refund = Mathf.FloorToInt(line.quantity * fraction);
|
||||
if (refund > 0) inventory.GrantItemFromServer(line.item, refund);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the PlayerInventory on the player object owned by the given connection, mirroring
|
||||
/// CookingStation so refunds land in the requester's own inventory.
|
||||
/// </summary>
|
||||
private static PlayerInventory ResolveInventory(NetworkConnection conn)
|
||||
{
|
||||
NetworkObject playerObject = conn != null ? conn.FirstObject : null;
|
||||
return playerObject != null ? playerObject.GetComponent<PlayerInventory>() : null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Removes this structure for every player. Server-side only.
|
||||
/// </summary>
|
||||
private void Despawn()
|
||||
{
|
||||
if (base.IsServerInitialized) base.ServerManager.Despawn(base.NetworkObject, DespawnType.Destroy);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Snap Occupancy
|
||||
|
||||
/// <summary>
|
||||
/// Marks the sockets this piece shares a position with — and the matching sockets on the pieces it
|
||||
/// touches — as occupied, so placement snapping skips them. Occupancy is derived purely from
|
||||
/// geometry (two connected sockets sit on the exact same point), so it stays consistent on every
|
||||
/// client without anything extra crossing the wire.
|
||||
/// </summary>
|
||||
private void MarkOccupancy()
|
||||
{
|
||||
BuildSnapPoint[] mine = GetComponentsInChildren<BuildSnapPoint>(true);
|
||||
if (mine.Length == 0) return;
|
||||
|
||||
foreach (BuiltStructure other in Live)
|
||||
{
|
||||
if (other == null || other == this) continue;
|
||||
|
||||
foreach (BuildSnapPoint os in other.GetComponentsInChildren<BuildSnapPoint>(true))
|
||||
{
|
||||
foreach (BuildSnapPoint ms in mine)
|
||||
{
|
||||
if (ms.Category != os.Category) continue;
|
||||
if ((ms.transform.position - os.transform.position).sqrMagnitude > OccupancyThresholdSqr) continue;
|
||||
|
||||
ms.SetOccupied(true);
|
||||
os.SetOccupied(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Recomputes occupancy from scratch across every live structure: clears every socket, then
|
||||
/// re-marks the connected pairs across what remains. Run after a removal.
|
||||
/// </summary>
|
||||
private static void RecomputeOccupancy()
|
||||
{
|
||||
foreach (BuiltStructure structure in Live)
|
||||
{
|
||||
if (structure == null) continue;
|
||||
foreach (BuildSnapPoint sp in structure.GetComponentsInChildren<BuildSnapPoint>(true))
|
||||
sp.SetOccupied(false);
|
||||
}
|
||||
|
||||
foreach (BuiltStructure structure in Live)
|
||||
if (structure != null) structure.MarkOccupancy();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Demolition Highlight
|
||||
|
||||
/// <summary>
|
||||
/// Adds the demolition material on top of each renderer's authored materials (an extra draw pass),
|
||||
/// marking this build as the hammer's current target without hiding the model. Mirrors the ghost
|
||||
/// overlay. No-op when already highlighted or no material was provided.
|
||||
/// </summary>
|
||||
public void Highlight(Material demolitionMaterial)
|
||||
{
|
||||
|
||||
@@ -81,10 +81,12 @@ namespace Ashwild.Crafting
|
||||
#region Event Handlers
|
||||
|
||||
/// <summary>
|
||||
/// Marks an acquired item as discovered. Guarded to the owning instance so a remote puppet
|
||||
/// that briefly subscribed before being gated off can never drive discovery on the wrong copy.
|
||||
/// Marks an acquired item as discovered. Transfers count too — pulling an item a co-op partner
|
||||
/// left in a chest is a genuine first acquisition and must unlock its recipes, even though the
|
||||
/// HUD stays silent about it. Guarded to the owning instance so a remote puppet that briefly
|
||||
/// subscribed before being gated off can never drive discovery on the wrong copy.
|
||||
/// </summary>
|
||||
private void HandleItemAdded(ItemData item, int quantity)
|
||||
private void HandleItemAdded(ItemData item, int quantity, bool isTransfer)
|
||||
{
|
||||
if (Instance != this) return;
|
||||
Discover(item);
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
using System.Diagnostics;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Profiling;
|
||||
using Ashwild.Building;
|
||||
using Debug = UnityEngine.Debug;
|
||||
|
||||
namespace Ashwild.EditorTools
|
||||
{
|
||||
/// <summary>
|
||||
/// A load test for the decision to spawn every build as a NetworkObject: places a grid of structures
|
||||
/// and reports how long it took and what it cost in memory, so the "can FishNet carry a whole base"
|
||||
/// question can be answered with numbers instead of estimates.
|
||||
///
|
||||
/// Deliberately single-instance. Measuring a second client's join bandwidth would mean two peers, and
|
||||
/// the session is wired to FishySteamworks — that costs far more setup than the risk it covers. Join
|
||||
/// traffic is a one-shot cost of roughly a spawn packet per object anyway; what actually matters day
|
||||
/// to day is the steady state, and that is exactly what this measures. Watch the profiler's frame time
|
||||
/// after the spawn, not just the numbers logged here.
|
||||
///
|
||||
/// Caveat when reading the elapsed time: this places everything in a single frame, which no player
|
||||
/// ever does. Treat it as a worst case for the spawn burst, not as a gameplay measurement.
|
||||
/// </summary>
|
||||
public static class BuildStressTest
|
||||
{
|
||||
#region Constants
|
||||
|
||||
private const float Spacing = 4f;
|
||||
private const float GroundHeight = 0f;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Menu
|
||||
|
||||
/// <summary>
|
||||
/// Places 250 structures — a realistic co-op base.
|
||||
/// </summary>
|
||||
[MenuItem("Tools/Ashwild/Stress Test/Spawn 250 Builds")]
|
||||
public static void Spawn250() => SpawnGrid(250);
|
||||
|
||||
/// <summary>
|
||||
/// Places 1000 structures — an ambitious long-save base, the level the NetworkObject decision was
|
||||
/// judged against.
|
||||
/// </summary>
|
||||
[MenuItem("Tools/Ashwild/Stress Test/Spawn 1000 Builds")]
|
||||
public static void Spawn1000() => SpawnGrid(1000);
|
||||
|
||||
#endregion
|
||||
|
||||
#region Internal Helpers
|
||||
|
||||
/// <summary>
|
||||
/// Commits <paramref name="count"/> builds of the first usable buildable on a grid around the
|
||||
/// origin, then logs the elapsed time and the memory delta. Requires play mode with a live session,
|
||||
/// since committing goes through the registry's server RPC exactly as a real placement would.
|
||||
/// </summary>
|
||||
private static void SpawnGrid(int count)
|
||||
{
|
||||
if (!Application.isPlaying)
|
||||
{
|
||||
Debug.LogError("[BuildStressTest] Enter play mode and host a session first — builds are spawned through the server.");
|
||||
return;
|
||||
}
|
||||
if (BuildRegistry.Instance == null)
|
||||
{
|
||||
Debug.LogError("[BuildStressTest] No BuildRegistry in the session — is the scene's BuildRegistry present and the session started?");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!TryResolveBuildable(out ushort id, out string label)) return;
|
||||
|
||||
int side = Mathf.CeilToInt(Mathf.Sqrt(count));
|
||||
long memoryBefore = Profiler.GetTotalAllocatedMemoryLong();
|
||||
Stopwatch watch = Stopwatch.StartNew();
|
||||
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
Vector3 position = new Vector3((i % side) * Spacing, GroundHeight, (i / side) * Spacing);
|
||||
BuildRegistry.Instance.RequestBuild(id, position, Quaternion.identity);
|
||||
}
|
||||
|
||||
watch.Stop();
|
||||
long memoryDelta = Profiler.GetTotalAllocatedMemoryLong() - memoryBefore;
|
||||
|
||||
Debug.Log($"[BuildStressTest] Requested {count}× '{label}' in {watch.ElapsedMilliseconds} ms " +
|
||||
$"({memoryDelta / 1024f / 1024f:F1} MB allocated this frame). " +
|
||||
"Spawns complete over the next frames — check the profiler's steady-state frame time now.");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Picks the first buildable that can actually be spawned, so the test never fails halfway on a
|
||||
/// half-authored asset. Reports clearly when the database is empty or unbuilt.
|
||||
/// </summary>
|
||||
private static bool TryResolveBuildable(out ushort id, out string label)
|
||||
{
|
||||
id = 0;
|
||||
label = string.Empty;
|
||||
|
||||
BuildableDatabase database = BuildableDatabase.Instance;
|
||||
if (database == null || database.Buildables == null || database.Buildables.Length == 0)
|
||||
{
|
||||
Debug.LogError("[BuildStressTest] BuildableDatabase is empty — run Tools ▸ Ashwild ▸ Rebuild Buildable Database.");
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach (BuildableData buildable in database.Buildables)
|
||||
{
|
||||
if (buildable == null || buildable.BuiltPrefab == null) continue;
|
||||
|
||||
id = database.GetId(buildable);
|
||||
label = buildable.name;
|
||||
return true;
|
||||
}
|
||||
|
||||
Debug.LogError("[BuildStressTest] No buildable with a BuiltPrefab found.");
|
||||
return false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dfaebf3f0f14ca94e803a73cc00965f7
|
||||
@@ -0,0 +1,109 @@
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using Ashwild.Building;
|
||||
using FishNet.Object;
|
||||
|
||||
namespace Ashwild.EditorTools
|
||||
{
|
||||
/// <summary>
|
||||
/// One-shot migration for the move to server-spawned builds: every committed structure is now a real
|
||||
/// NetworkObject, so each buildable's BuiltPrefab needs a NetworkObject and a BuiltStructure on its
|
||||
/// root. Prefabs authored before that change have neither (or only BuiltStructure, which is now a
|
||||
/// NetworkBehaviour and cannot function alone), and a missing NetworkObject makes the prefab silently
|
||||
/// unspawnable — the exact failure that used to leave a placed chest deactivated.
|
||||
///
|
||||
/// Safe to re-run: it only touches prefabs that are actually missing a component, and reports what it
|
||||
/// changed. Kept as an explicit menu action rather than an automatic postprocessor because it rewrites
|
||||
/// authored assets, which should never happen behind the designer's back.
|
||||
/// </summary>
|
||||
public static class BuiltPrefabMigrator
|
||||
{
|
||||
#region Menu
|
||||
|
||||
/// <summary>
|
||||
/// Scans every BuildableData, ensures its BuiltPrefab carries NetworkObject + BuiltStructure, and
|
||||
/// asks FishNet to rescan its spawnable prefab collection afterwards.
|
||||
/// </summary>
|
||||
[MenuItem("Tools/Ashwild/Migrate Built Prefabs To Network Objects")]
|
||||
public static void Migrate()
|
||||
{
|
||||
string[] guids = AssetDatabase.FindAssets("t:BuildableData");
|
||||
int migrated = 0;
|
||||
int alreadyFine = 0;
|
||||
int missingPrefab = 0;
|
||||
|
||||
foreach (string guid in guids)
|
||||
{
|
||||
BuildableData buildable = AssetDatabase.LoadAssetAtPath<BuildableData>(AssetDatabase.GUIDToAssetPath(guid));
|
||||
if (buildable == null) continue;
|
||||
|
||||
if (buildable.BuiltPrefab == null)
|
||||
{
|
||||
Debug.LogWarning($"[BuiltPrefabMigrator] '{buildable.name}' has no BuiltPrefab — skipped.", buildable);
|
||||
missingPrefab++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (EnsureNetworked(buildable.BuiltPrefab)) migrated++;
|
||||
else alreadyFine++;
|
||||
}
|
||||
|
||||
AssetDatabase.SaveAssets();
|
||||
AssetDatabase.Refresh();
|
||||
RefreshNetworkPrefabRegistry();
|
||||
|
||||
Debug.Log($"[BuiltPrefabMigrator] Done — {migrated} prefab(s) migrated, {alreadyFine} already correct, {missingPrefab} buildable(s) without a BuiltPrefab.");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Internal Helpers
|
||||
|
||||
/// <summary>
|
||||
/// Adds whatever the prefab root is missing and saves it. The NetworkObject goes on first so that
|
||||
/// BuiltStructure's RequireComponent is already satisfied when it is added. Returns true when the
|
||||
/// prefab was actually changed.
|
||||
/// </summary>
|
||||
private static bool EnsureNetworked(GameObject prefab)
|
||||
{
|
||||
string path = AssetDatabase.GetAssetPath(prefab);
|
||||
if (string.IsNullOrEmpty(path)) return false;
|
||||
|
||||
GameObject root = PrefabUtility.LoadPrefabContents(path);
|
||||
bool changed = false;
|
||||
|
||||
if (root.GetComponent<NetworkObject>() == null)
|
||||
{
|
||||
root.AddComponent<NetworkObject>();
|
||||
changed = true;
|
||||
}
|
||||
if (root.GetComponent<BuiltStructure>() == null)
|
||||
{
|
||||
root.AddComponent<BuiltStructure>();
|
||||
changed = true;
|
||||
}
|
||||
|
||||
if (changed)
|
||||
{
|
||||
PrefabUtility.SaveAsPrefabAsset(root, path);
|
||||
Debug.Log($"[BuiltPrefabMigrator] Migrated '{path}'.", AssetDatabase.LoadAssetAtPath<GameObject>(path));
|
||||
}
|
||||
|
||||
PrefabUtility.UnloadPrefabContents(root);
|
||||
return changed;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Forces FishNet to rescan DefaultPrefabObjects so the migrated prefabs are spawnable. Invoked
|
||||
/// through the menu item because the generator API is internal to the FishNet assembly.
|
||||
/// </summary>
|
||||
private static void RefreshNetworkPrefabRegistry()
|
||||
{
|
||||
const string menu = "Tools/Fish-Networking/Utility/Refresh Default Prefabs";
|
||||
if (!EditorApplication.ExecuteMenuItem(menu))
|
||||
Debug.LogWarning($"[BuiltPrefabMigrator] Could not run '{menu}' — run it by hand so the built prefabs are registered as spawnable.");
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c1d18a05426439d47937c24568677913
|
||||
@@ -438,3 +438,32 @@
|
||||
.ash-recipe-name {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
/* ── Prefab generator (shown while a prefab slot is empty) ─ */
|
||||
.ash-generator {
|
||||
margin-top: 10px;
|
||||
padding: 10px;
|
||||
border-radius: 8px;
|
||||
background-color: rgba(64, 110, 220, 0.07);
|
||||
border-width: 1px;
|
||||
border-color: rgb(74, 90, 130);
|
||||
}
|
||||
|
||||
.ash-generator__title {
|
||||
-unity-font-style: bold;
|
||||
font-size: 11px;
|
||||
color: rgb(150, 175, 240);
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.ash-generator .ash-btn {
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
.ash-generator__hint {
|
||||
margin-top: 8px;
|
||||
font-size: 10px;
|
||||
color: rgb(130, 132, 140);
|
||||
-unity-font-style: italic;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
@@ -311,7 +311,7 @@ namespace Ashwild.EditorTools
|
||||
else if (selectedAsset is CraftingRecipe recipe)
|
||||
rightPane.Add(new RecipeEditorView(recipe, RefreshRow).Root);
|
||||
else if (selectedAsset is BuildableData buildable)
|
||||
rightPane.Add(new BuildableEditorView(buildable, RefreshRow).Root);
|
||||
rightPane.Add(new BuildableEditorView(buildable, RefreshRow, ShowSelection).Root);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -1,20 +1,91 @@
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using Ashwild.Building;
|
||||
using Ashwild.GrassClearer;
|
||||
using FishNet.Component.Transforming;
|
||||
using FishNet.Object;
|
||||
|
||||
namespace Ashwild.EditorTools
|
||||
{
|
||||
/// <summary>
|
||||
/// Editor-only factory that creates BuildableData assets for the Ashwild Database window.
|
||||
/// Kept separate from the window so buildable authoring stays a single-purpose, testable helper —
|
||||
/// mirrors RecipeAssetFactory for recipes and ItemAssetFactory for items.
|
||||
/// Which socket sets to generate on a buildable. Combinable, because one piece usually offers several
|
||||
/// kinds of connection at once: a floor slab chains to other slabs by its edges AND hosts walls on
|
||||
/// those same edges, so it is authored as <see cref="FloorEdges"/> | <see cref="WallMounts"/>.
|
||||
///
|
||||
/// Each flag describes a connection the piece OFFERS, not what the piece is called, so the sets
|
||||
/// compose without overlapping. The pairs that mate are <see cref="WallMounts"/> (faces up, on a
|
||||
/// floor) with <see cref="WallBody"/>'s foot (faces down, on the wall) — opposing forwards of the
|
||||
/// same category, which is exactly what BuildManager requires to connect two sockets.
|
||||
///
|
||||
/// Lives here rather than in the runtime assembly because it is purely an authoring-time hint: the
|
||||
/// generated prefabs only ever carry plain BuildSnapPoints.
|
||||
/// </summary>
|
||||
[System.Flags]
|
||||
public enum BuildSnapLayout
|
||||
{
|
||||
None = 0,
|
||||
|
||||
/// <summary>Four horizontal edge sockets (category Floor) so slabs chain edge to edge.</summary>
|
||||
FloorEdges = 1 << 0,
|
||||
|
||||
/// <summary>Four upward-facing sockets on the top edges (category Wall) where a wall plants its foot.</summary>
|
||||
WallMounts = 1 << 1,
|
||||
|
||||
/// <summary>This piece IS a wall: a downward foot plus two end sockets (category Wall) for wall-to-wall runs.</summary>
|
||||
WallBody = 1 << 2,
|
||||
|
||||
/// <summary>A single upward socket at the centre of the top face (category Roof) where a roof lands.</summary>
|
||||
RoofMount = 1 << 3,
|
||||
|
||||
/// <summary>This piece IS a roof/ceiling: a single downward socket at its centre, mating a RoofMount.</summary>
|
||||
RoofBody = 1 << 4,
|
||||
|
||||
/// <summary>Up/down caps (category Pillar) so pillars stack vertically.</summary>
|
||||
PillarCaps = 1 << 5
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Editor-only factory that creates BuildableData assets and, on demand, generates the two prefabs a
|
||||
/// buildable needs from a single source mesh or prefab — mirroring ItemAssetFactory for items.
|
||||
///
|
||||
/// The generated pair follows the authored convention exactly (see Ghost_WoodCelling / WoodCelling_Prefab):
|
||||
/// - Built prefab — root on the Build layer carrying the source as a child, a non-trigger BoxCollider
|
||||
/// fitted to the renderers, BuiltStructure (bump / highlight / damage entry) and ClearGrassOnPlace.
|
||||
/// - Ghost prefab — the same root plus a NetworkObject and a client-authoritative NetworkTransform
|
||||
/// (BuildRegistry spawns the ghost as a real NetworkObject, §3's deliberate low-count exception),
|
||||
/// and a BuildGhost wired to the footprint collider and the two overlay materials.
|
||||
///
|
||||
/// Both get a "Snap" container of BuildSnapPoints on the BuildSnap layer, positioned from the source's
|
||||
/// bounds with each socket's forward pointing OUT of the piece — the orientation BuildManager requires,
|
||||
/// since two sockets only connect when their forwards oppose. The built copy's sockets are triggers so
|
||||
/// the placement overlap finds them; the ghost's are not, so a ghost never snaps to itself.
|
||||
///
|
||||
/// The layout is a best guess from the mesh proportions and is meant to be adjusted by hand afterwards;
|
||||
/// generation exists to kill the repetitive part, not to replace authoring judgement.
|
||||
/// </summary>
|
||||
public static class BuildableAssetFactory
|
||||
{
|
||||
#region Constants
|
||||
|
||||
private const string BuildablesFolder = "Assets/GAME/ScriptableObjects/Buildables";
|
||||
private const string BuiltPrefabFolder = "Assets/GAME/Prefabs/Structure/Build/Build";
|
||||
private const string GhostPrefabFolder = "Assets/GAME/Prefabs/Structure/Build/Ghost";
|
||||
|
||||
private const string ValidOverlayPath = "Assets/GAME/Shaders/Build/GAME_BuildGhost_Good.mat";
|
||||
private const string InvalidOverlayPath = "Assets/GAME/Shaders/Build/GAME_BuildGhost_Not.mat";
|
||||
|
||||
private const string BuildLayerName = "Build";
|
||||
private const string SnapLayerName = "BuildSnap";
|
||||
private const string GhostLayerName = "BuildGhost";
|
||||
|
||||
private const string SnapContainerName = "Snap";
|
||||
private const float SnapColliderRadius = 0.5f;
|
||||
|
||||
private const string RefreshPrefabsMenu = "Tools/Fish-Networking/Utility/Refresh Default Prefabs";
|
||||
|
||||
private static readonly Vector3 FallbackSize = new Vector3(1f, 1f, 1f);
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -44,10 +115,512 @@ namespace Ashwild.EditorTools
|
||||
return buildable;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Renames the asset file so it matches the authored display name — a buildable called "Wood Wall"
|
||||
/// should not sit on disk as "NewBuildable 2". Invalid path characters are stripped and the result
|
||||
/// is uniquified, so a clash with an existing file never overwrites it. No-op when the name is
|
||||
/// blank or already matches. Returns true when the file was actually renamed.
|
||||
/// </summary>
|
||||
public static bool RenameAssetToDisplayName(BuildableData buildable)
|
||||
{
|
||||
if (buildable == null) return false;
|
||||
|
||||
string desired = SanitiseFileName(buildable.DisplayName);
|
||||
if (string.IsNullOrEmpty(desired) || desired == buildable.name) return false;
|
||||
|
||||
string path = AssetDatabase.GetAssetPath(buildable);
|
||||
if (string.IsNullOrEmpty(path)) return false;
|
||||
|
||||
string folder = Path.GetDirectoryName(path).Replace('\\', '/');
|
||||
string unique = Path.GetFileNameWithoutExtension(AssetDatabase.GenerateUniqueAssetPath($"{folder}/{desired}.asset"));
|
||||
|
||||
string error = AssetDatabase.RenameAsset(path, unique);
|
||||
if (!string.IsNullOrEmpty(error))
|
||||
{
|
||||
Debug.LogWarning($"[BuildableAssetFactory] Could not rename '{buildable.name}' to '{unique}' — {error}.", buildable);
|
||||
return false;
|
||||
}
|
||||
|
||||
AssetDatabase.SaveAssets();
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Strips characters the file system rejects (and collapses surrounding whitespace) so a display
|
||||
/// name typed freely by a designer can safely become an asset file name.
|
||||
/// </summary>
|
||||
private static string SanitiseFileName(string raw)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(raw)) return string.Empty;
|
||||
|
||||
char[] invalid = Path.GetInvalidFileNameChars();
|
||||
StringBuilder builder = new StringBuilder(raw.Length);
|
||||
foreach (char c in raw.Trim())
|
||||
if (System.Array.IndexOf(invalid, c) < 0) builder.Append(c);
|
||||
|
||||
return builder.ToString().Trim();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Prefab Generation
|
||||
|
||||
/// <summary>
|
||||
/// Generates the missing prefabs for a buildable from one source object (an FBX model or an
|
||||
/// existing prefab), wires them onto the asset and returns true when at least one was created.
|
||||
/// Only the slots asked for are built, so a designer can regenerate just the ghost after tweaking
|
||||
/// the model without losing hand-edits on the built prefab.
|
||||
///
|
||||
/// The source is nested as a child rather than flattened, so it stays a live prefab link the
|
||||
/// designer can keep editing. Because the ghost is a NetworkObject it must live in
|
||||
/// DefaultPrefabObjects; FishNet's generator picks it up on import, and we force a refresh
|
||||
/// afterwards so the registration is deterministic rather than dependent on import timing.
|
||||
/// </summary>
|
||||
public static bool GeneratePrefabs(BuildableData buildable, GameObject source, BuildSnapLayout layout, bool generateBuilt, bool generateGhost)
|
||||
{
|
||||
if (buildable == null)
|
||||
{
|
||||
Debug.LogError("[BuildableAssetFactory] Cannot generate prefabs — no BuildableData selected.");
|
||||
return false;
|
||||
}
|
||||
if (source == null)
|
||||
{
|
||||
Debug.LogError($"[BuildableAssetFactory] Cannot generate prefabs for '{buildable.name}' — no source mesh or prefab chosen.", buildable);
|
||||
return false;
|
||||
}
|
||||
if (!generateBuilt && !generateGhost) return false;
|
||||
if (!EnsureFolder(BuiltPrefabFolder) || !EnsureFolder(GhostPrefabFolder)) return false;
|
||||
|
||||
Bounds bounds = MeasureSource(source);
|
||||
|
||||
bool created = false;
|
||||
if (generateBuilt) created |= BuildBuiltPrefab(buildable, source, bounds, layout) != null;
|
||||
if (generateGhost) created |= BuildGhostPrefab(buildable, source, bounds, layout) != null;
|
||||
|
||||
if (created)
|
||||
{
|
||||
ApplySupport(buildable, layout);
|
||||
AssetDatabase.SaveAssets();
|
||||
AssetDatabase.Refresh();
|
||||
RefreshNetworkPrefabRegistry();
|
||||
}
|
||||
return created;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Builds and saves the committed-structure prefab: the source on the Build layer under a root
|
||||
/// carrying a fitted non-trigger BoxCollider (what the demolition ray and obstruction tests hit),
|
||||
/// BuiltStructure and ClearGrassOnPlace, plus trigger snap sockets the placement overlap can find.
|
||||
///
|
||||
/// Committed structures are spawned by the server as real NetworkObjects, so the root gets one —
|
||||
/// without it BuiltStructure (a NetworkBehaviour) cannot function and the prefab is not spawnable.
|
||||
/// </summary>
|
||||
private static GameObject BuildBuiltPrefab(BuildableData buildable, GameObject source, Bounds bounds, BuildSnapLayout layout)
|
||||
{
|
||||
GameObject root = BuildRoot(buildable.name, source, ResolveLayer(BuildLayerName));
|
||||
FitBoxCollider(root, bounds, true);
|
||||
root.AddComponent<NetworkObject>();
|
||||
root.AddComponent<BuiltStructure>();
|
||||
root.AddComponent<ClearGrassOnPlace>();
|
||||
AddSnapSockets(root, bounds, layout, true);
|
||||
|
||||
return SaveAndAssign(root, $"{BuiltPrefabFolder}/{buildable.name}.prefab", buildable, "builtPrefab");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Builds and saves the placement-preview prefab: the same root plus the networking pair the
|
||||
/// registry needs (NetworkObject + client-authoritative NetworkTransform, since the placer owns
|
||||
/// and drives its own ghost) and a BuildGhost wired to the footprint collider and the shared
|
||||
/// valid/invalid overlay materials. Its snap colliders are left as non-triggers, matching the
|
||||
/// authored ghost, so the ghost never registers as a snap target for itself.
|
||||
///
|
||||
/// The child renderers are assigned explicitly rather than left to BuildGhost's Awake fallback, so
|
||||
/// the overlay targets are visible (and editable) in the prefab exactly like the authored ghost.
|
||||
/// </summary>
|
||||
private static GameObject BuildGhostPrefab(BuildableData buildable, GameObject source, Bounds bounds, BuildSnapLayout layout)
|
||||
{
|
||||
GameObject root = BuildRoot($"Ghost_{buildable.name}", source, ResolveGhostLayer());
|
||||
BoxCollider footprint = FitBoxCollider(root, bounds, false);
|
||||
|
||||
root.AddComponent<NetworkObject>();
|
||||
NetworkTransform netTransform = root.AddComponent<NetworkTransform>();
|
||||
SerializedObject transformSo = new SerializedObject(netTransform);
|
||||
transformSo.FindProperty("_clientAuthoritative").boolValue = true;
|
||||
transformSo.ApplyModifiedPropertiesWithoutUndo();
|
||||
|
||||
BuildGhost ghost = root.AddComponent<BuildGhost>();
|
||||
SerializedObject ghostSo = new SerializedObject(ghost);
|
||||
ghostSo.FindProperty("footprint").objectReferenceValue = footprint;
|
||||
ghostSo.FindProperty("validOverlay").objectReferenceValue = LoadOverlay(ValidOverlayPath);
|
||||
ghostSo.FindProperty("invalidOverlay").objectReferenceValue = LoadOverlay(InvalidOverlayPath);
|
||||
AssignRenderers(ghostSo.FindProperty("renderers"), root);
|
||||
ghostSo.ApplyModifiedPropertiesWithoutUndo();
|
||||
|
||||
AddSnapSockets(root, bounds, layout, false);
|
||||
DisableColliders(root);
|
||||
|
||||
return SaveAndAssign(root, $"{GhostPrefabFolder}/Ghost_{buildable.name}.prefab", buildable, "ghostPrefab");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Fills a serialized Renderer array with every renderer found under the root, including inactive
|
||||
/// ones — the ghost swaps materials on all of them, so a renderer left out would keep its opaque
|
||||
/// look while the rest of the piece turns translucent.
|
||||
/// </summary>
|
||||
private static void AssignRenderers(SerializedProperty arrayProperty, GameObject root)
|
||||
{
|
||||
Renderer[] renderers = root.GetComponentsInChildren<Renderer>(true);
|
||||
|
||||
arrayProperty.arraySize = renderers.Length;
|
||||
for (int i = 0; i < renderers.Length; i++)
|
||||
arrayProperty.GetArrayElementAtIndex(i).objectReferenceValue = renderers[i];
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Snap Sockets
|
||||
|
||||
/// <summary>
|
||||
/// Creates the "Snap" container at the source's bounds centre and fills it with every socket set
|
||||
/// the layout asks for — they compose, so a floor slab gets its edge ring AND its wall mounts from
|
||||
/// one pass. Nothing is added for <see cref="BuildSnapLayout.None"/>, leaving a piece that can only
|
||||
/// be free-placed.
|
||||
/// </summary>
|
||||
private static void AddSnapSockets(GameObject root, Bounds bounds, BuildSnapLayout layout, bool trigger)
|
||||
{
|
||||
if (layout == BuildSnapLayout.None) return;
|
||||
|
||||
GameObject container = new GameObject(SnapContainerName) { layer = root.layer };
|
||||
container.transform.SetParent(root.transform, false);
|
||||
container.transform.localPosition = bounds.center;
|
||||
|
||||
Vector3 half = bounds.extents;
|
||||
|
||||
if (layout.HasFlag(BuildSnapLayout.FloorEdges)) AddFloorEdges(container, half, trigger);
|
||||
if (layout.HasFlag(BuildSnapLayout.RoofMount)) AddRoofMount(container, half, trigger);
|
||||
if (layout.HasFlag(BuildSnapLayout.RoofBody)) AddRoofBody(container, half, trigger);
|
||||
if (layout.HasFlag(BuildSnapLayout.WallMounts)) AddWallMounts(container, half, trigger);
|
||||
if (layout.HasFlag(BuildSnapLayout.WallBody)) AddWallBody(container, half, trigger);
|
||||
if (layout.HasFlag(BuildSnapLayout.PillarCaps)) AddPillarCaps(container, half, trigger);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds the four horizontal edge sockets of a slab, at the midpoint of each side and at
|
||||
/// mid-thickness, each facing straight out of the piece so a neighbour clicks in edge-to-edge.
|
||||
/// </summary>
|
||||
private static void AddFloorEdges(GameObject container, Vector3 half, bool trigger)
|
||||
{
|
||||
CreateSocket(container, "Floor_North", new Vector3(0f, 0f, half.z), Vector3.forward, SnapCategory.Floor, trigger);
|
||||
CreateSocket(container, "Floor_South", new Vector3(0f, 0f, -half.z), Vector3.back, SnapCategory.Floor, trigger);
|
||||
CreateSocket(container, "Floor_East", new Vector3(half.x, 0f, 0f), Vector3.right, SnapCategory.Floor, trigger);
|
||||
CreateSocket(container, "Floor_West", new Vector3(-half.x, 0f, 0f), Vector3.left, SnapCategory.Floor, trigger);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds the single socket a roof lands on: centred on the top face and facing up, because a roof
|
||||
/// or ceiling sits centred over the piece rather than hooking onto its sides. Deliberately ONE
|
||||
/// socket, not a ring — four of them would let a roof snap offset to an edge, and two adjacent
|
||||
/// pieces would each offer a competing target for the same roof.
|
||||
/// </summary>
|
||||
private static void AddRoofMount(GameObject container, Vector3 half, bool trigger)
|
||||
{
|
||||
CreateSocket(container, "RoofMount", new Vector3(0f, half.y, 0f), Vector3.up, SnapCategory.Roof, trigger);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds the counterpart a roof or ceiling piece needs: one socket under its centre facing DOWN,
|
||||
/// which mates the upward RoofMount offered by whatever it rests on. Without this set a RoofMount
|
||||
/// has nothing to pair with — two sockets connect only when their forwards oppose.
|
||||
/// </summary>
|
||||
private static void AddRoofBody(GameObject container, Vector3 half, bool trigger)
|
||||
{
|
||||
CreateSocket(container, "Roof_Base", new Vector3(0f, -half.y, 0f), Vector3.down, SnapCategory.Roof, trigger);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds the sockets a floor offers to walls: one per top edge, facing UP. A wall's foot faces down,
|
||||
/// so the two oppose and connect — which also means a wall mount can never be mistaken for a floor
|
||||
/// edge socket (those face sideways), even though a slab carries both rings at once.
|
||||
/// </summary>
|
||||
private static void AddWallMounts(GameObject container, Vector3 half, bool trigger)
|
||||
{
|
||||
CreateSocket(container, "WallMount_North", new Vector3(0f, half.y, half.z), Vector3.up, SnapCategory.Wall, trigger);
|
||||
CreateSocket(container, "WallMount_South", new Vector3(0f, half.y, -half.z), Vector3.up, SnapCategory.Wall, trigger);
|
||||
CreateSocket(container, "WallMount_East", new Vector3(half.x, half.y, 0f), Vector3.up, SnapCategory.Wall, trigger);
|
||||
CreateSocket(container, "WallMount_West", new Vector3(-half.x, half.y, 0f), Vector3.up, SnapCategory.Wall, trigger);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds a standing panel's own sockets: a foot at the base facing DOWN (which mates a floor's
|
||||
/// upward wall mount) plus one socket on each end of its long axis facing outward, so walls chain
|
||||
/// into runs. The long axis is taken as whichever horizontal dimension is larger.
|
||||
/// </summary>
|
||||
private static void AddWallBody(GameObject container, Vector3 half, bool trigger)
|
||||
{
|
||||
bool thinAlongZ = half.z <= half.x;
|
||||
Vector3 longAxis = thinAlongZ ? Vector3.right : Vector3.forward;
|
||||
float longHalf = thinAlongZ ? half.x : half.z;
|
||||
|
||||
CreateSocket(container, "Wall_Foot", new Vector3(0f, -half.y, 0f), Vector3.down, SnapCategory.Wall, trigger);
|
||||
CreateSocket(container, "Wall_SideA", longAxis * longHalf, longAxis, SnapCategory.Wall, trigger);
|
||||
CreateSocket(container, "Wall_SideB", -longAxis * longHalf, -longAxis, SnapCategory.Wall, trigger);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds a pillar's two caps so pillars stack vertically: the top faces up and the bottom faces
|
||||
/// down, which is exactly the opposing pair the snapping requires.
|
||||
/// </summary>
|
||||
private static void AddPillarCaps(GameObject container, Vector3 half, bool trigger)
|
||||
{
|
||||
CreateSocket(container, "Cap_Top", new Vector3(0f, half.y, 0f), Vector3.up, SnapCategory.Pillar, trigger);
|
||||
CreateSocket(container, "Cap_Bottom", new Vector3(0f, -half.y, 0f), Vector3.down, SnapCategory.Pillar, trigger);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates one socket: a child on the BuildSnap layer oriented so its forward is
|
||||
/// <paramref name="outward"/>, carrying a BuildSnapPoint of the given category and the sphere
|
||||
/// collider the placement overlap detects it by. Sockets are triggers on the built piece (the
|
||||
/// snap targets the placement scan looks for) and plain colliders on the ghost, matching the
|
||||
/// authored prefabs — the ghost is excluded from its own scan by parentage, not by collider type.
|
||||
/// </summary>
|
||||
private static void CreateSocket(GameObject container, string name, Vector3 localPosition, Vector3 outward, SnapCategory category, bool trigger)
|
||||
{
|
||||
GameObject socket = new GameObject(name) { layer = ResolveLayer(SnapLayerName) };
|
||||
socket.transform.SetParent(container.transform, false);
|
||||
socket.transform.localPosition = localPosition;
|
||||
socket.transform.localRotation = SocketRotation(outward);
|
||||
|
||||
BuildSnapPoint point = socket.AddComponent<BuildSnapPoint>();
|
||||
SerializedObject so = new SerializedObject(point);
|
||||
so.FindProperty("category").enumValueIndex = (int)category;
|
||||
so.ApplyModifiedPropertiesWithoutUndo();
|
||||
|
||||
SphereCollider collider = socket.AddComponent<SphereCollider>();
|
||||
collider.radius = SnapColliderRadius;
|
||||
collider.isTrigger = trigger;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Turns an outward direction into a socket rotation. A vertical direction needs a non-parallel
|
||||
/// reference up, otherwise LookRotation degenerates and the cap sockets come out unrotated.
|
||||
/// </summary>
|
||||
private static Quaternion SocketRotation(Vector3 outward)
|
||||
{
|
||||
Vector3 up = Mathf.Abs(Vector3.Dot(outward, Vector3.up)) > 0.99f ? Vector3.forward : Vector3.up;
|
||||
return Quaternion.LookRotation(outward, up);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Derives the buildable's placement rule from the sockets it was just given: a piece authored as
|
||||
/// a wall body or a roof body only makes sense attached to something, so it becomes SnapOnly and
|
||||
/// can no longer be dropped in mid-air. Everything else — foundations, floor slabs — stays free to
|
||||
/// place on the ground. Doing it here means the designer never has to remember to set the two
|
||||
/// fields consistently: the socket layout already says what kind of piece this is.
|
||||
/// </summary>
|
||||
private static void ApplySupport(BuildableData buildable, BuildSnapLayout layout)
|
||||
{
|
||||
bool needsConnection = layout.HasFlag(BuildSnapLayout.WallBody) || layout.HasFlag(BuildSnapLayout.RoofBody);
|
||||
|
||||
SerializedObject so = new SerializedObject(buildable);
|
||||
so.FindProperty("support").enumValueIndex = (int)(needsConnection ? PlacementSupport.SnapOnly : PlacementSupport.GroundOrSnap);
|
||||
so.ApplyModifiedPropertiesWithoutUndo();
|
||||
EditorUtility.SetDirty(buildable);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Suggests a layout for a source model, so picking a mesh in the window pre-ticks a sensible set
|
||||
/// the designer can then adjust. Measures the mesh, so it is only worth calling when the source
|
||||
/// actually changes.
|
||||
/// </summary>
|
||||
public static BuildSnapLayout InferLayout(GameObject source)
|
||||
{
|
||||
return source == null ? BuildSnapLayout.None : InferLayout(MeasureSource(source).size);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Picks a socket layout from the mesh's proportions: a square-ish tall block stacks as a pillar,
|
||||
/// a tall panel thin on one horizontal axis is a wall body, and anything flat enough to stand on
|
||||
/// is a floor — which gets BOTH its edge ring (slab to slab) and its wall mounts, since a floor
|
||||
/// piece almost always has to host walls too. That combination is the reason the layout is a set
|
||||
/// of flags rather than a single choice.
|
||||
/// </summary>
|
||||
private static BuildSnapLayout InferLayout(Vector3 size)
|
||||
{
|
||||
const BuildSnapLayout slab = BuildSnapLayout.FloorEdges | BuildSnapLayout.WallMounts;
|
||||
|
||||
float minHorizontal = Mathf.Min(size.x, size.z);
|
||||
float maxHorizontal = Mathf.Max(size.x, size.z);
|
||||
if (maxHorizontal <= Mathf.Epsilon) return slab;
|
||||
|
||||
if (size.y <= 0.5f * minHorizontal) return slab;
|
||||
if (size.y >= 1.5f * maxHorizontal && maxHorizontal <= 1.6f * minHorizontal) return BuildSnapLayout.PillarCaps;
|
||||
if (minHorizontal <= 0.35f * maxHorizontal && size.y >= 0.6f * maxHorizontal) return BuildSnapLayout.WallBody;
|
||||
|
||||
return slab;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Internal Helpers
|
||||
|
||||
/// <summary>
|
||||
/// Measures the source's combined renderer bounds in its own local space by instantiating it once
|
||||
/// at the origin, so socket positions and the footprint are derived from the real mesh rather than
|
||||
/// guessed. Falls back to a unit box when the source has no renderers, so generation still yields a
|
||||
/// usable (if arbitrary) footprint instead of a degenerate zero-size collider.
|
||||
/// </summary>
|
||||
private static Bounds MeasureSource(GameObject source)
|
||||
{
|
||||
GameObject probe = (GameObject)PrefabUtility.InstantiatePrefab(source);
|
||||
if (probe == null) probe = Object.Instantiate(source);
|
||||
probe.transform.position = Vector3.zero;
|
||||
probe.transform.rotation = Quaternion.identity;
|
||||
|
||||
Renderer[] renderers = probe.GetComponentsInChildren<Renderer>();
|
||||
Bounds bounds = renderers.Length > 0 ? renderers[0].bounds : new Bounds(Vector3.zero, FallbackSize);
|
||||
for (int i = 1; i < renderers.Length; i++) bounds.Encapsulate(renderers[i].bounds);
|
||||
|
||||
Object.DestroyImmediate(probe);
|
||||
return bounds;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates the generated root with the source nested as a child at the origin, so the designer's
|
||||
/// authored model stays a prefab link rather than being flattened into the copy.
|
||||
///
|
||||
/// The whole nested subtree is forced onto <paramref name="layer"/>. Source models routinely ship
|
||||
/// on their own layer (a wall model authored on Build, say), and leaving that alone would make the
|
||||
/// generated piece behave inconsistently — worst of all on a ghost, whose visual must not sit on a
|
||||
/// layer the obstruction test scans.
|
||||
/// </summary>
|
||||
private static GameObject BuildRoot(string name, GameObject source, int layer)
|
||||
{
|
||||
GameObject root = new GameObject(name) { layer = layer };
|
||||
|
||||
GameObject visual = (GameObject)PrefabUtility.InstantiatePrefab(source);
|
||||
if (visual == null) visual = Object.Instantiate(source);
|
||||
visual.transform.SetParent(root.transform, false);
|
||||
visual.transform.localPosition = Vector3.zero;
|
||||
SetLayerRecursively(visual, layer);
|
||||
|
||||
return root;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Puts a GameObject and every descendant on one layer.
|
||||
/// </summary>
|
||||
private static void SetLayerRecursively(GameObject go, int layer)
|
||||
{
|
||||
go.layer = layer;
|
||||
foreach (Transform child in go.transform)
|
||||
SetLayerRecursively(child.gameObject, layer);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Disables every collider under the ghost, including any the source model brought with it.
|
||||
///
|
||||
/// This is what keeps a ghost from reporting itself as blocked: BuildGhost box-overlaps its
|
||||
/// footprint against the obstruction mask, and an enabled collider anywhere in the preview — the
|
||||
/// source model's own BoxCollider is the usual culprit, since it is authored on the Build layer —
|
||||
/// lands inside that very box, so the spot reads as occupied everywhere and the ghost never turns
|
||||
/// green. A ghost needs no physics at all: its footprint is read as raw dimensions, and its snap
|
||||
/// sockets are found through GetComponentsInChildren, never by an overlap query.
|
||||
/// </summary>
|
||||
private static void DisableColliders(GameObject root)
|
||||
{
|
||||
foreach (Collider collider in root.GetComponentsInChildren<Collider>(true))
|
||||
collider.enabled = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The layer generated ghosts go on: a dedicated "BuildGhost" layer when the project defines one
|
||||
/// (the clean setup — it keeps previews out of every mask aimed at real structures), otherwise the
|
||||
/// Build layer, matching the original authored ghosts. Silent by design, since the dedicated layer
|
||||
/// is optional.
|
||||
/// </summary>
|
||||
private static int ResolveGhostLayer()
|
||||
{
|
||||
int layer = LayerMask.NameToLayer(GhostLayerName);
|
||||
return layer >= 0 ? layer : ResolveLayer(BuildLayerName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds the root's BoxCollider sized to the measured bounds. It is left enabled on the built piece
|
||||
/// (its physical body, and what the demolition ray hits) but DISABLED on the ghost: the obstruction
|
||||
/// mask is the Build layer the ghost itself sits on, so an enabled footprint would overlap itself
|
||||
/// and report every spot as blocked. BuildGhost only ever reads the collider's centre/size, never
|
||||
/// its physics contacts, so a disabled collider still serves as the bounds source.
|
||||
/// </summary>
|
||||
private static BoxCollider FitBoxCollider(GameObject root, Bounds bounds, bool enabled)
|
||||
{
|
||||
BoxCollider box = root.AddComponent<BoxCollider>();
|
||||
box.center = bounds.center;
|
||||
box.size = bounds.size;
|
||||
box.enabled = enabled;
|
||||
return box;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Saves a built GameObject as a prefab under a unique path, destroys the scene instance, wires the
|
||||
/// saved prefab onto the given BuildableData field and marks the asset dirty.
|
||||
/// </summary>
|
||||
private static GameObject SaveAndAssign(GameObject root, string desiredPath, BuildableData buildable, string field)
|
||||
{
|
||||
string prefabPath = AssetDatabase.GenerateUniqueAssetPath(desiredPath);
|
||||
GameObject prefab = PrefabUtility.SaveAsPrefabAsset(root, prefabPath);
|
||||
Object.DestroyImmediate(root);
|
||||
|
||||
if (prefab == null)
|
||||
{
|
||||
Debug.LogError($"[BuildableAssetFactory] Failed to save prefab at '{prefabPath}'.", buildable);
|
||||
return null;
|
||||
}
|
||||
|
||||
SerializedObject so = new SerializedObject(buildable);
|
||||
so.FindProperty(field).objectReferenceValue = prefab;
|
||||
so.ApplyModifiedPropertiesWithoutUndo();
|
||||
EditorUtility.SetDirty(buildable);
|
||||
|
||||
Debug.Log($"[BuildableAssetFactory] Built '{prefabPath}' and assigned it to {buildable.name}.{field}.", prefab);
|
||||
return prefab;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Loads one of the shared ghost overlay materials, warning (rather than failing generation) when
|
||||
/// it has been moved — a ghost without overlays still works, it just renders opaque.
|
||||
/// </summary>
|
||||
private static Material LoadOverlay(string path)
|
||||
{
|
||||
Material material = AssetDatabase.LoadAssetAtPath<Material>(path);
|
||||
if (material == null)
|
||||
Debug.LogWarning($"[BuildableAssetFactory] Ghost overlay material not found at '{path}' — assign it by hand on the generated ghost.");
|
||||
return material;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Forces FishNet to rescan DefaultPrefabObjects so the freshly saved ghost is spawnable straight
|
||||
/// away. Invoked through the menu item rather than the generator API, which is internal to the
|
||||
/// FishNet assembly and so unreachable from this one.
|
||||
/// </summary>
|
||||
private static void RefreshNetworkPrefabRegistry()
|
||||
{
|
||||
if (!EditorApplication.ExecuteMenuItem(RefreshPrefabsMenu))
|
||||
Debug.LogWarning($"[BuildableAssetFactory] Could not run '{RefreshPrefabsMenu}' — run it by hand so the ghost is registered as a spawnable network prefab.");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Resolves a layer index by name, falling back to the Default layer (0) with a warning when the
|
||||
/// project is missing the expected layer so generation never silently lands on a wrong one.
|
||||
/// </summary>
|
||||
private static int ResolveLayer(string layerName)
|
||||
{
|
||||
int layer = LayerMask.NameToLayer(layerName);
|
||||
if (layer >= 0) return layer;
|
||||
|
||||
Debug.LogWarning($"[BuildableAssetFactory] Layer '{layerName}' not found — using Default. Add it in the Tags & Layers settings.");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ensures a project-relative asset folder exists, creating any missing segments. Returns
|
||||
/// false (and logs) when the path cannot be created.
|
||||
|
||||
@@ -1,18 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEditor;
|
||||
using UnityEditor.UIElements;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UIElements;
|
||||
using Ashwild.Building;
|
||||
using Ashwild.Inventory;
|
||||
|
||||
namespace Ashwild.EditorTools
|
||||
{
|
||||
/// <summary>
|
||||
/// The custom editor for a BuildableData shown in the right pane of the Ashwild Database. Replaces
|
||||
/// the default ScriptableObject inspector with a hero header (large clickable icon, editable name,
|
||||
/// "Buildable" badge) and cards for the identity (description) and the ghost/built prefabs the
|
||||
/// construction menu and placement ghost consume. All fields bind live to the asset; changing the
|
||||
/// name or icon notifies the list so the row updates without a full rebuild.
|
||||
/// "Buildable" badge) and cards for the identity (description), the ghost/built prefabs, the resource
|
||||
/// cost, and the placed structure's health. The cost card reuses the recipe editor's interactive chip
|
||||
/// strip — one clickable item card (with a −/+ quantity stepper and a remove button) per cost line,
|
||||
/// joined by "+", followed by a dashed add tile — so authoring a price feels identical to authoring a
|
||||
/// recipe. All fields bind live to the asset; changing the name or icon notifies the list so the row
|
||||
/// updates without a full rebuild.
|
||||
/// </summary>
|
||||
public class BuildableEditorView
|
||||
{
|
||||
@@ -21,12 +26,21 @@ namespace Ashwild.EditorTools
|
||||
public VisualElement Root { get; }
|
||||
|
||||
private const int IconPickerControlId = 0x41534842;
|
||||
private const int CostPickerControlId = 0x41534843;
|
||||
|
||||
private readonly BuildableData buildable;
|
||||
private readonly SerializedObject so;
|
||||
private readonly SerializedProperty costProp;
|
||||
private readonly Action onMetaChanged;
|
||||
private readonly Action onAssetChanged;
|
||||
|
||||
private VisualElement iconPreview;
|
||||
private VisualElement costStrip;
|
||||
private Action<ItemData> costPickHandler;
|
||||
private bool costPickCommitsOnCloseOnly;
|
||||
|
||||
private GameObject generationSource;
|
||||
private BuildSnapLayout generationLayout = BuildSnapLayout.None;
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -34,18 +48,28 @@ namespace Ashwild.EditorTools
|
||||
|
||||
/// <summary>
|
||||
/// Builds the full editor tree for a buildable. <paramref name="onMetaChanged"/> is raised when
|
||||
/// the display name or icon changes so the list can refresh that row.
|
||||
/// the display name or icon changes so the list can refresh that row;
|
||||
/// <paramref name="onAssetChanged"/> re-renders the whole view after a structural change (prefab
|
||||
/// generation, asset rename) that the live bindings alone cannot reflect.
|
||||
/// </summary>
|
||||
public BuildableEditorView(BuildableData buildable, Action onMetaChanged)
|
||||
public BuildableEditorView(BuildableData buildable, Action onMetaChanged, Action onAssetChanged)
|
||||
{
|
||||
this.buildable = buildable;
|
||||
this.onMetaChanged = onMetaChanged;
|
||||
this.onAssetChanged = onAssetChanged;
|
||||
so = new SerializedObject(buildable);
|
||||
costProp = so.FindProperty("cost");
|
||||
|
||||
Root = new VisualElement();
|
||||
Root.Add(BuildHero());
|
||||
Root.Add(BuildIdentityCard());
|
||||
Root.Add(BuildPrefabsCard());
|
||||
Root.Add(BuildCostCard());
|
||||
Root.Add(BuildPlacementCard());
|
||||
Root.Add(BuildHealthCard());
|
||||
Root.Add(BuildPickerProxy());
|
||||
|
||||
RefreshCost();
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -82,6 +106,7 @@ namespace Ashwild.EditorTools
|
||||
nameField.AddToClassList("ash-hero__name");
|
||||
nameField.BindProperty(so.FindProperty("displayName"));
|
||||
nameField.RegisterValueChangedCallback(_ => onMetaChanged?.Invoke());
|
||||
nameField.RegisterCallback<FocusOutEvent>(_ => SyncAssetName());
|
||||
info.Add(AshwildUI.EditableNameRow(nameField));
|
||||
|
||||
VisualElement typeRow = new VisualElement();
|
||||
@@ -93,6 +118,19 @@ namespace Ashwild.EditorTools
|
||||
return hero;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Renames the asset file to match the display name once the designer leaves the name field, so a
|
||||
/// buildable titled "Wood Wall" stops living on disk as "NewBuildable 2". Deliberately fired on
|
||||
/// focus-out rather than on every keystroke — renaming per character would spam the AssetDatabase
|
||||
/// and leave a trail of half-typed file names. Re-renders the view so the header reflects the new
|
||||
/// asset identity.
|
||||
/// </summary>
|
||||
private void SyncAssetName()
|
||||
{
|
||||
if (BuildableAssetFactory.RenameAssetToDisplayName(buildable))
|
||||
onAssetChanged?.Invoke();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Shows the buildable's icon in the hero preview, or a neutral placeholder when none is set.
|
||||
/// </summary>
|
||||
@@ -141,7 +179,7 @@ namespace Ashwild.EditorTools
|
||||
|
||||
#endregion
|
||||
|
||||
#region Cards
|
||||
#region Identity & Prefab Cards
|
||||
|
||||
/// <summary>
|
||||
/// Identity card: the description shown on the menu card, plus the icon field (kept in sync
|
||||
@@ -170,7 +208,12 @@ namespace Ashwild.EditorTools
|
||||
|
||||
/// <summary>
|
||||
/// Prefabs card: the semi-transparent ghost spawned while positioning and the real structure
|
||||
/// spawned once placement is confirmed.
|
||||
/// spawned once placement is confirmed. When either slot is still empty the card also offers the
|
||||
/// one-click generator below the fields, so the common path (drop a mesh in, press Generate) never
|
||||
/// leaves the window. The generator's visibility is resolved when the view is built rather than
|
||||
/// bound to the two fields: BindProperty raises a change event on its initial bind, so re-rendering
|
||||
/// from those callbacks would loop the view rebuild endlessly. Generating re-renders explicitly,
|
||||
/// and a hand-assigned prefab is picked up the next time the buildable is selected.
|
||||
/// </summary>
|
||||
private VisualElement BuildPrefabsCard()
|
||||
{
|
||||
@@ -184,9 +227,367 @@ namespace Ashwild.EditorTools
|
||||
built.BindProperty(so.FindProperty("builtPrefab"));
|
||||
card.Add(built);
|
||||
|
||||
if (buildable.GhostPrefab == null || buildable.BuiltPrefab == null)
|
||||
card.Add(BuildGeneratorBlock());
|
||||
|
||||
return card;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The generator shown while a prefab slot is empty: pick a source model or prefab, tick which
|
||||
/// socket sets the piece should offer, and press the button to author the missing prefab(s) —
|
||||
/// collider, gameplay components, networking and snap sockets included. Only the empty slots are
|
||||
/// generated, so regenerating a ghost never clobbers a built prefab that has already been hand-tuned.
|
||||
///
|
||||
/// The layout is a mask rather than a single choice because one piece usually offers several kinds
|
||||
/// of connection: a floor both chains to other floors and hosts walls. Choosing a source pre-ticks
|
||||
/// the set inferred from the mesh proportions, which the designer is free to change.
|
||||
/// </summary>
|
||||
private VisualElement BuildGeneratorBlock()
|
||||
{
|
||||
VisualElement block = new VisualElement();
|
||||
block.AddToClassList("ash-generator");
|
||||
|
||||
Label heading = new Label("Generate from a source model");
|
||||
heading.AddToClassList("ash-generator__title");
|
||||
block.Add(heading);
|
||||
|
||||
MaskField layoutField = null;
|
||||
|
||||
ObjectField sourceField = new ObjectField("Source Mesh / Prefab")
|
||||
{
|
||||
objectType = typeof(GameObject),
|
||||
allowSceneObjects = false,
|
||||
tooltip = "The authored model (FBX) or prefab to wrap. It is nested as a child, never flattened, so you can keep editing it."
|
||||
};
|
||||
sourceField.RegisterValueChangedCallback(evt =>
|
||||
{
|
||||
generationSource = evt.newValue as GameObject;
|
||||
generationLayout = BuildableAssetFactory.InferLayout(generationSource);
|
||||
layoutField?.SetValueWithoutNotify((int)generationLayout);
|
||||
});
|
||||
block.Add(sourceField);
|
||||
|
||||
layoutField = new MaskField(
|
||||
"Snap Layout",
|
||||
new List<string> { "Floor Edges", "Wall Mounts", "Wall Body", "Roof Mount", "Roof Body", "Pillar Caps" },
|
||||
(int)generationLayout)
|
||||
{
|
||||
tooltip = "Which sockets to place — combinable. A floor slab usually wants Floor Edges (chain to other slabs) AND Wall Mounts (walls stand on its edges); a wall piece wants Wall Body."
|
||||
};
|
||||
layoutField.RegisterValueChangedCallback(evt => generationLayout = (BuildSnapLayout)evt.newValue);
|
||||
block.Add(layoutField);
|
||||
|
||||
Button generate = new Button(GenerateMissingPrefabs) { text = DescribeGeneration() };
|
||||
generate.AddToClassList("ash-btn");
|
||||
generate.AddToClassList("ash-btn--primary");
|
||||
block.Add(generate);
|
||||
|
||||
Label hint = new Label("Sockets are placed from the mesh bounds: floor edges face outward, wall mounts face up, a wall's foot faces down, and the roof mount is a single socket centred on the top face. Treat the layout as a starting point — nudge them in the prefab afterwards.");
|
||||
hint.AddToClassList("ash-generator__hint");
|
||||
block.Add(hint);
|
||||
|
||||
return block;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Labels the generate button with exactly what it will create, so the designer can tell at a
|
||||
/// glance whether pressing it touches one slot or both.
|
||||
/// </summary>
|
||||
private string DescribeGeneration()
|
||||
{
|
||||
bool needsBuilt = buildable.BuiltPrefab == null;
|
||||
bool needsGhost = buildable.GhostPrefab == null;
|
||||
|
||||
if (needsBuilt && needsGhost) return "Generate Built + Ghost Prefabs";
|
||||
return needsBuilt ? "Generate Built Prefab" : "Generate Ghost Prefab";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Runs the generation for whichever slots are empty and re-renders the view so the new prefabs
|
||||
/// appear in their fields and the generator collapses away.
|
||||
/// </summary>
|
||||
private void GenerateMissingPrefabs()
|
||||
{
|
||||
bool generated = BuildableAssetFactory.GeneratePrefabs(
|
||||
buildable,
|
||||
generationSource,
|
||||
generationLayout,
|
||||
buildable.BuiltPrefab == null,
|
||||
buildable.GhostPrefab == null);
|
||||
|
||||
if (generated) onAssetChanged?.Invoke();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Health card: the hit points the placed structure starts with, edited as a plain float field.
|
||||
/// An empty cost makes the build free; likewise this drives the proportional demolition refund.
|
||||
/// </summary>
|
||||
private VisualElement BuildHealthCard()
|
||||
{
|
||||
VisualElement card = AshwildUI.Card("Health");
|
||||
|
||||
FloatField maxHealth = new FloatField("Max Health");
|
||||
maxHealth.BindProperty(so.FindProperty("maxHealth"));
|
||||
card.Add(maxHealth);
|
||||
|
||||
return card;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Placement card: what this structure may rest on. Generating the prefabs sets it from the snap
|
||||
/// layout, so this is the override for a piece the layout cannot classify — or for a buildable
|
||||
/// authored before the rule existed, which defaults to the permissive Ground Or Snap.
|
||||
/// </summary>
|
||||
private VisualElement BuildPlacementCard()
|
||||
{
|
||||
VisualElement card = AshwildUI.Card("Placement");
|
||||
|
||||
EnumField support = new EnumField("Support")
|
||||
{
|
||||
tooltip = "Ground Or Snap: free placement anywhere the aim lands, or connected. Snap Only: valid solely while connected to a matching socket — use it for walls, ceilings and roofs so they cannot be dropped in mid-air."
|
||||
};
|
||||
support.BindProperty(so.FindProperty("support"));
|
||||
card.Add(support);
|
||||
|
||||
return card;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Cost Card
|
||||
|
||||
/// <summary>
|
||||
/// Cost card: an interactive chip strip mirroring the recipe editor. Each cost line is a clickable
|
||||
/// item card with a −/+ quantity stepper and a remove button, the lines are joined by "+", and a
|
||||
/// dashed add tile appends a new line. An empty strip means a free build.
|
||||
/// </summary>
|
||||
private VisualElement BuildCostCard()
|
||||
{
|
||||
VisualElement card = AshwildUI.Card("Cost");
|
||||
|
||||
costStrip = new VisualElement();
|
||||
costStrip.AddToClassList("ash-equation");
|
||||
card.Add(costStrip);
|
||||
|
||||
return card;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Repaints the whole cost strip: one interactive card per cost line (joined by "+"), then the
|
||||
/// dashed add tile. Shows only the add tile when the build is free.
|
||||
/// </summary>
|
||||
private void RefreshCost()
|
||||
{
|
||||
costStrip.Clear();
|
||||
|
||||
int count = costProp.arraySize;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
if (i > 0) costStrip.Add(Operator("+"));
|
||||
costStrip.Add(BuildCostCardChip(i));
|
||||
}
|
||||
|
||||
if (count > 0) costStrip.Add(Operator("+"));
|
||||
costStrip.Add(BuildAddTile());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Builds the interactive card for the cost line at <paramref name="index"/>: a clickable icon
|
||||
/// (change item), the name, a −/+ quantity stepper, and a remove button.
|
||||
/// </summary>
|
||||
private VisualElement BuildCostCardChip(int index)
|
||||
{
|
||||
SerializedProperty element = costProp.GetArrayElementAtIndex(index);
|
||||
ItemData item = element.FindPropertyRelative("item").objectReferenceValue as ItemData;
|
||||
int quantity = element.FindPropertyRelative("quantity").intValue;
|
||||
|
||||
VisualElement card = MakeCard(item, () => OpenItemPicker(item, true, picked => SetCostItem(index, picked)));
|
||||
card.Add(Stepper(quantity, delta => AdjustCostQuantity(index, delta)));
|
||||
|
||||
Button remove = new Button(() => RemoveCost(index)) { text = "✕" };
|
||||
remove.AddToClassList("ash-rchip__remove");
|
||||
card.Add(remove);
|
||||
|
||||
return card;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Builds the dashed "+" tile that appends a new cost line once an item is picked.
|
||||
/// </summary>
|
||||
private VisualElement BuildAddTile()
|
||||
{
|
||||
VisualElement tile = new VisualElement();
|
||||
tile.AddToClassList("ash-rchip");
|
||||
tile.AddToClassList("ash-rchip--add");
|
||||
tile.tooltip = "Add a cost line";
|
||||
tile.RegisterCallback<ClickEvent>(_ => OpenItemPicker(null, false, AddCost));
|
||||
|
||||
Label plus = new Label("+");
|
||||
plus.AddToClassList("ash-rchip__plus");
|
||||
tile.Add(plus);
|
||||
|
||||
return tile;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Builds the shared card body (icon + name) for an item, with the icon wired to open a picker.
|
||||
/// The icon shows the item's sprite, or a neutral placeholder when unset.
|
||||
/// </summary>
|
||||
private VisualElement MakeCard(ItemData item, Action onIconClicked)
|
||||
{
|
||||
VisualElement card = new VisualElement();
|
||||
card.AddToClassList("ash-rchip");
|
||||
|
||||
VisualElement icon = new VisualElement();
|
||||
icon.AddToClassList("ash-rchip__icon");
|
||||
icon.tooltip = "Click to choose an item";
|
||||
if (item != null && item.Icon != null) icon.style.backgroundImage = new StyleBackground(item.Icon);
|
||||
icon.RegisterCallback<ClickEvent>(_ => onIconClicked());
|
||||
card.Add(icon);
|
||||
|
||||
Label name = new Label(item != null ? item.ItemName : "Choose…");
|
||||
name.AddToClassList("ash-rchip__name");
|
||||
card.Add(name);
|
||||
|
||||
return card;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Builds a −/+ quantity stepper showing the current value; <paramref name="onDelta"/> receives
|
||||
/// -1 or +1.
|
||||
/// </summary>
|
||||
private VisualElement Stepper(int quantity, Action<int> onDelta)
|
||||
{
|
||||
VisualElement stepper = new VisualElement();
|
||||
stepper.AddToClassList("ash-rchip__stepper");
|
||||
|
||||
Button minus = new Button(() => onDelta(-1)) { text = "−" };
|
||||
minus.AddToClassList("ash-rchip__step");
|
||||
stepper.Add(minus);
|
||||
|
||||
Label value = new Label(quantity.ToString());
|
||||
value.AddToClassList("ash-rchip__qty");
|
||||
stepper.Add(value);
|
||||
|
||||
Button plus = new Button(() => onDelta(1)) { text = "+" };
|
||||
plus.AddToClassList("ash-rchip__step");
|
||||
stepper.Add(plus);
|
||||
|
||||
return stepper;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Builds a large "+" operator glyph between cost cards.
|
||||
/// </summary>
|
||||
private static Label Operator(string glyph)
|
||||
{
|
||||
Label op = new Label(glyph);
|
||||
op.AddToClassList("ash-equation__op");
|
||||
return op;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Cost Mutations
|
||||
|
||||
/// <summary>
|
||||
/// Sets the item of an existing cost line and repaints.
|
||||
/// </summary>
|
||||
private void SetCostItem(int index, ItemData item)
|
||||
{
|
||||
if (index < 0 || index >= costProp.arraySize) return;
|
||||
costProp.GetArrayElementAtIndex(index).FindPropertyRelative("item").objectReferenceValue = item;
|
||||
so.ApplyModifiedProperties();
|
||||
RefreshCost();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Changes a cost line's quantity by a delta, clamped to a minimum of one, and repaints.
|
||||
/// </summary>
|
||||
private void AdjustCostQuantity(int index, int delta)
|
||||
{
|
||||
if (index < 0 || index >= costProp.arraySize) return;
|
||||
SerializedProperty quantity = costProp.GetArrayElementAtIndex(index).FindPropertyRelative("quantity");
|
||||
quantity.intValue = Mathf.Max(1, quantity.intValue + delta);
|
||||
so.ApplyModifiedProperties();
|
||||
RefreshCost();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Appends a new cost line (quantity 1) for the picked item and repaints; ignores a null pick
|
||||
/// (e.g. the picker was cancelled).
|
||||
/// </summary>
|
||||
private void AddCost(ItemData item)
|
||||
{
|
||||
if (item == null) return;
|
||||
|
||||
int index = costProp.arraySize;
|
||||
costProp.arraySize++;
|
||||
SerializedProperty element = costProp.GetArrayElementAtIndex(index);
|
||||
element.FindPropertyRelative("item").objectReferenceValue = item;
|
||||
element.FindPropertyRelative("quantity").intValue = 1;
|
||||
so.ApplyModifiedProperties();
|
||||
RefreshCost();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Removes the cost line at the given index and repaints.
|
||||
/// </summary>
|
||||
private void RemoveCost(int index)
|
||||
{
|
||||
if (index < 0 || index >= costProp.arraySize) return;
|
||||
costProp.DeleteArrayElementAtIndex(index);
|
||||
so.ApplyModifiedProperties();
|
||||
RefreshCost();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Item Picker
|
||||
|
||||
/// <summary>
|
||||
/// Builds the hidden IMGUI proxy that relays Unity's object-picker commands to the active cost
|
||||
/// pick handler (the editor window is UI Toolkit, which can't receive those commands directly).
|
||||
/// </summary>
|
||||
private VisualElement BuildPickerProxy()
|
||||
{
|
||||
IMGUIContainer proxy = new IMGUIContainer(HandleItemPickerCommands);
|
||||
proxy.style.position = Position.Absolute;
|
||||
proxy.style.width = 1;
|
||||
proxy.style.height = 1;
|
||||
return proxy;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Opens Unity's item picker seeded with the current item. When <paramref name="commitLive"/>
|
||||
/// is true the pick applies on every highlight (live preview, e.g. changing an existing line);
|
||||
/// otherwise it applies only when the picker closes (e.g. adding a new line — commit once).
|
||||
/// </summary>
|
||||
private void OpenItemPicker(ItemData seed, bool commitLive, Action<ItemData> onPicked)
|
||||
{
|
||||
costPickHandler = onPicked;
|
||||
costPickCommitsOnCloseOnly = !commitLive;
|
||||
EditorGUIUtility.ShowObjectPicker<ItemData>(seed, false, string.Empty, CostPickerControlId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Forwards the picker's selection to the active handler, honouring the live-vs-on-close policy.
|
||||
/// </summary>
|
||||
private void HandleItemPickerCommands()
|
||||
{
|
||||
Event evt = Event.current;
|
||||
if (evt == null || evt.type != EventType.ExecuteCommand) return;
|
||||
if (EditorGUIUtility.GetObjectPickerControlID() != CostPickerControlId) return;
|
||||
|
||||
bool updated = evt.commandName == "ObjectSelectorUpdated";
|
||||
bool closed = evt.commandName == "ObjectSelectorClosed";
|
||||
if (!updated && !closed) return;
|
||||
if (updated && costPickCommitsOnCloseOnly) return;
|
||||
|
||||
costPickHandler?.Invoke(EditorGUIUtility.GetObjectPickerObject() as ItemData);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,213 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Ashwild.EditorTools
|
||||
{
|
||||
/// <summary>
|
||||
/// Editor-only capture helper: an on/off toggle under Tools ▸ Ashwild that, when enabled, forces the
|
||||
/// Game view into a borderless fullscreen window as soon as Play Mode starts — so the running game
|
||||
/// looks exactly like a shipped build (no editor chrome, no toolbar) and is clean to record in OBS.
|
||||
/// The preference is checkable in the menu and persists per-machine in EditorPrefs; entering fullscreen
|
||||
/// spawns a dedicated popup Game view on the main display and it is torn down the moment play stops.
|
||||
/// </summary>
|
||||
[InitializeOnLoad]
|
||||
public static class FullscreenOnPlay
|
||||
{
|
||||
#region Constants
|
||||
|
||||
/// <summary>
|
||||
/// The checkable menu entry that flips the feature on and off.
|
||||
/// </summary>
|
||||
private const string MenuPath = "Tools/Fullscreen On Play (OBS)";
|
||||
|
||||
/// <summary>
|
||||
/// EditorPrefs key holding the toggle state. Per-user, per-machine — a personal recording setting,
|
||||
/// deliberately not shared through the project.
|
||||
/// </summary>
|
||||
private const string PrefKey = "Ashwild.FullscreenOnPlay.Enabled";
|
||||
|
||||
#endregion
|
||||
|
||||
#region State
|
||||
|
||||
/// <summary>
|
||||
/// The live borderless Game view spawned for fullscreen playback, or null when not in fullscreen.
|
||||
/// Held so it can be closed again the instant Play Mode ends.
|
||||
/// </summary>
|
||||
private static EditorWindow fullscreenView;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Initialization
|
||||
|
||||
/// <summary>
|
||||
/// Hooks the Play Mode state stream once, on editor load and every domain reload, so the fullscreen
|
||||
/// window follows play/stop regardless of how the user triggered it.
|
||||
/// </summary>
|
||||
static FullscreenOnPlay()
|
||||
{
|
||||
EditorApplication.playModeStateChanged -= HandlePlayModeStateChanged;
|
||||
EditorApplication.playModeStateChanged += HandlePlayModeStateChanged;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Menu
|
||||
|
||||
/// <summary>
|
||||
/// Flips the toggle and, as a convenience, applies it immediately when already in Play Mode
|
||||
/// (goes fullscreen right away, or drops back to the windowed Game view).
|
||||
/// </summary>
|
||||
[MenuItem(MenuPath, false, 200)]
|
||||
private static void Toggle()
|
||||
{
|
||||
bool enabled = !IsEnabled;
|
||||
EditorPrefs.SetBool(PrefKey, enabled);
|
||||
Menu.SetChecked(MenuPath, enabled);
|
||||
|
||||
if (!EditorApplication.isPlaying) return;
|
||||
|
||||
if (enabled) EnterFullscreen();
|
||||
else ExitFullscreen();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Keeps the menu checkmark in sync with the stored preference every time the menu is opened.
|
||||
/// </summary>
|
||||
[MenuItem(MenuPath, true)]
|
||||
private static bool ToggleValidate()
|
||||
{
|
||||
Menu.SetChecked(MenuPath, IsEnabled);
|
||||
return true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Play Mode Hook
|
||||
|
||||
/// <summary>
|
||||
/// Enters fullscreen when play begins (only if the toggle is on) and always tears it down as play
|
||||
/// ends — so a leftover popup can never survive back into edit mode.
|
||||
/// </summary>
|
||||
private static void HandlePlayModeStateChanged(PlayModeStateChange state)
|
||||
{
|
||||
switch (state)
|
||||
{
|
||||
case PlayModeStateChange.EnteredPlayMode:
|
||||
if (IsEnabled) EnterFullscreen();
|
||||
break;
|
||||
case PlayModeStateChange.ExitingPlayMode:
|
||||
ExitFullscreen();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Fullscreen Control
|
||||
|
||||
/// <summary>
|
||||
/// Spawns a dedicated Game view, strips its toolbar and shows it as a borderless popup sized to the
|
||||
/// main display — the closest the editor gets to a real build's fullscreen. The position is
|
||||
/// re-asserted next editor tick because ShowPopup can clamp the initial rect. Reuses nothing from
|
||||
/// the docked layout, so the user's window arrangement is left untouched.
|
||||
/// </summary>
|
||||
private static void EnterFullscreen()
|
||||
{
|
||||
if (fullscreenView != null) return;
|
||||
|
||||
Type gameViewType = typeof(EditorWindow).Assembly.GetType("UnityEditor.GameView");
|
||||
if (gameViewType == null)
|
||||
{
|
||||
Debug.LogError("[FullscreenOnPlay] Could not resolve UnityEditor.GameView — fullscreen capture unavailable on this Unity version.");
|
||||
return;
|
||||
}
|
||||
|
||||
fullscreenView = ScriptableObject.CreateInstance(gameViewType) as EditorWindow;
|
||||
if (fullscreenView == null)
|
||||
{
|
||||
Debug.LogError("[FullscreenOnPlay] Failed to create a Game view instance — fullscreen capture aborted.");
|
||||
return;
|
||||
}
|
||||
|
||||
fullscreenView.titleContent = new GUIContent("Game (Fullscreen)");
|
||||
SetShowToolbar(fullscreenView, false);
|
||||
|
||||
Rect fullscreen = MainDisplayRect();
|
||||
fullscreenView.ShowPopup();
|
||||
fullscreenView.position = fullscreen;
|
||||
fullscreenView.minSize = fullscreen.size;
|
||||
fullscreenView.maxSize = fullscreen.size;
|
||||
fullscreenView.Focus();
|
||||
|
||||
EditorApplication.delayCall += ReassertPosition;
|
||||
|
||||
Debug.Log("[FullscreenOnPlay] Game view is fullscreen for capture. To exit: press your Play shortcut (Ctrl/Cmd+P), or Alt+Tab back to the Unity editor and press Stop.");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Closes the fullscreen popup if one is open. Safe to call when nothing is showing (a no-op),
|
||||
/// so both the play-stop hook and the live toggle can lean on it unconditionally.
|
||||
/// </summary>
|
||||
private static void ExitFullscreen()
|
||||
{
|
||||
EditorApplication.delayCall -= ReassertPosition;
|
||||
|
||||
if (fullscreenView == null) return;
|
||||
|
||||
fullscreenView.Close();
|
||||
fullscreenView = null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Re-applies the fullscreen rect one tick after showing, defeating any clamp ShowPopup applied
|
||||
/// before the window was fully realized. Guards against the window having been closed meanwhile.
|
||||
/// </summary>
|
||||
private static void ReassertPosition()
|
||||
{
|
||||
EditorApplication.delayCall -= ReassertPosition;
|
||||
if (fullscreenView == null) return;
|
||||
|
||||
fullscreenView.position = MainDisplayRect();
|
||||
fullscreenView.Focus();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Internal Helpers
|
||||
|
||||
/// <summary>
|
||||
/// The main display's bounds expressed in editor points (pixels ÷ pixelsPerPoint), so the window
|
||||
/// covers the whole monitor correctly even under OS display scaling on high-DPI screens.
|
||||
/// </summary>
|
||||
private static Rect MainDisplayRect()
|
||||
{
|
||||
float pixelsPerPoint = Mathf.Max(1f, EditorGUIUtility.pixelsPerPoint);
|
||||
Resolution res = Screen.currentResolution;
|
||||
return new Rect(0f, 0f, res.width / pixelsPerPoint, res.height / pixelsPerPoint);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Hides (or shows) the Game view's own toolbar via its internal 'showToolbar' property so the
|
||||
/// capture is pure game with no editor UI. Silently degrades if the property is missing on a
|
||||
/// future Unity version — a visible toolbar is a cosmetic loss, not a failure.
|
||||
/// </summary>
|
||||
private static void SetShowToolbar(EditorWindow gameView, bool visible)
|
||||
{
|
||||
PropertyInfo prop = gameView.GetType().GetProperty(
|
||||
"showToolbar", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
|
||||
|
||||
if (prop != null && prop.CanWrite)
|
||||
prop.SetValue(gameView, visible);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Whether the fullscreen-on-play toggle is currently enabled.
|
||||
/// </summary>
|
||||
private static bool IsEnabled => EditorPrefs.GetBool(PrefKey, false);
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 71eb5c7505bea6d4f862da3606a758f3
|
||||
@@ -55,7 +55,8 @@ namespace Ashwild.Inventory
|
||||
{
|
||||
// Visual setup that does not need the player.
|
||||
for (int i = 0; i < hotbarSlot.Length; i++)
|
||||
hotbarSlot[i].Initialize(i, InventoryUI.OnSwapRequested, OnSlotClicked, OnSlotHoverEnter, OnSlotHoverExit);
|
||||
hotbarSlot[i].Initialize(SlotContainer.Inventory, i,
|
||||
InventoryUI.HandleSlotDrop, OnSlotClicked, OnSlotHoverEnter, OnSlotHoverExit);
|
||||
|
||||
transform.localScale = Vector3.one * idleScale;
|
||||
if (canvasGroup != null)
|
||||
@@ -154,15 +155,27 @@ namespace Ashwild.Inventory
|
||||
ZoomOut();
|
||||
}
|
||||
|
||||
private void OnSlotClicked(int index, bool rightClick)
|
||||
/// <summary>
|
||||
/// Right-click on a hotbar slot: a quick deposit into the open chest, otherwise the slot context
|
||||
/// menu (only while the inventory window is open — the hotbar must not pop a menu during play).
|
||||
/// </summary>
|
||||
private void OnSlotClicked(SlotContainer container, int index, bool rightClick)
|
||||
{
|
||||
if (rightClick && PlayerEvents.IsInventoryOpen)
|
||||
if (!rightClick) return;
|
||||
|
||||
if (PlayerEvents.IsChestOpen)
|
||||
{
|
||||
if (contextMenu != null)
|
||||
contextMenu.Show(index);
|
||||
else
|
||||
inventory.UseItem(index);
|
||||
if (InventoryUI.Instance != null)
|
||||
InventoryUI.Instance.RequestQuickTransfer(SlotContainer.Inventory, index);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!PlayerEvents.IsInventoryOpen) return;
|
||||
|
||||
if (contextMenu != null)
|
||||
contextMenu.Show(index);
|
||||
else
|
||||
inventory.UseItem(index);
|
||||
}
|
||||
|
||||
private void OnSlotChanged(int index)
|
||||
@@ -173,11 +186,12 @@ namespace Ashwild.Inventory
|
||||
|
||||
/// <summary>
|
||||
/// Shows the shared description panel for a hovered hotbar slot, but only while the inventory
|
||||
/// is open — during normal play the hotbar must not pop a description. The duration bar
|
||||
/// reflects the item's remaining uses/durability.
|
||||
/// is open and no chest is open (chest mode hides the description entirely) — during normal play
|
||||
/// the hotbar must not pop a description. The duration bar reflects the item's remaining uses.
|
||||
/// </summary>
|
||||
private void OnSlotHoverEnter(int index)
|
||||
private void OnSlotHoverEnter(SlotContainer container, int index)
|
||||
{
|
||||
if (PlayerEvents.IsChestOpen) return;
|
||||
if (hoverDescription == null || inventory == null || !PlayerEvents.IsInventoryOpen) return;
|
||||
|
||||
InventorySlot slot = inventory.GetSlot(index);
|
||||
@@ -187,13 +201,7 @@ namespace Ashwild.Inventory
|
||||
return;
|
||||
}
|
||||
|
||||
ItemData item = slot.ItemData;
|
||||
bool hasDuration = item.HasUses;
|
||||
float fill = hasDuration ? (float)slot.CurrentUses / item.MaxUses : 0f;
|
||||
string durationText = hasDuration ? $"{slot.CurrentUses} / {item.MaxUses}" : string.Empty;
|
||||
|
||||
hoverDescription.Show(new ItemDescriptionView(
|
||||
item.Icon, item.ItemName, item.Description, hasDuration, fill, durationText));
|
||||
hoverDescription.Show(ItemDescriptionView.From(slot));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -9,6 +9,7 @@ namespace Ashwild.Inventory
|
||||
[SerializeField] private int defaultCategoryIndex;
|
||||
|
||||
private int currentIndex = -1;
|
||||
private bool locked;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
@@ -22,12 +23,13 @@ namespace Ashwild.Inventory
|
||||
panels[i].SetActive(false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Opens the category strip on the inventory category every time — the window must always land on
|
||||
/// the inventory, never stay on craft from a previous session (and chest mode needs the grid).
|
||||
/// </summary>
|
||||
public void Open()
|
||||
{
|
||||
if (currentIndex < 0)
|
||||
SelectCategoryImmediate(defaultCategoryIndex);
|
||||
else
|
||||
SelectCategoryImmediate(currentIndex);
|
||||
SelectCategoryImmediate(defaultCategoryIndex);
|
||||
}
|
||||
|
||||
public void Close()
|
||||
@@ -36,8 +38,15 @@ namespace Ashwild.Inventory
|
||||
panels[i].SetActive(false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Blocks category switching while set — used in chest mode, where the left grid must stay the
|
||||
/// inventory so items can be deposited/withdrawn.
|
||||
/// </summary>
|
||||
public void SetLocked(bool value) => locked = value;
|
||||
|
||||
public void SelectCategory(int index)
|
||||
{
|
||||
if (locked) return;
|
||||
if (index == currentIndex) return;
|
||||
if (index < 0 || index >= panels.Length) return;
|
||||
|
||||
|
||||
@@ -55,17 +55,6 @@ namespace Ashwild.Inventory
|
||||
currentUses = 0;
|
||||
}
|
||||
|
||||
public int AddQuantity(int amount)
|
||||
{
|
||||
if (itemData == null || !itemData.IsStackable || itemData.HasUses)
|
||||
return amount;
|
||||
|
||||
int space = itemData.MaxStackSize - quantity;
|
||||
int toAdd = amount < space ? amount : space;
|
||||
quantity += toAdd;
|
||||
return amount - toAdd;
|
||||
}
|
||||
|
||||
public void RemoveQuantity(int amount)
|
||||
{
|
||||
quantity -= amount;
|
||||
|
||||
@@ -2,24 +2,37 @@ using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using TMPro;
|
||||
using Ashwild.Player;
|
||||
using Ashwild.Storage;
|
||||
using Ashwild.UI;
|
||||
|
||||
namespace Ashwild.Inventory
|
||||
{
|
||||
/// <summary>
|
||||
/// The inventory window. It is a local UI panel (opening/closing is purely local — the item
|
||||
/// data itself lives in the networked <see cref="PlayerInventory"/>), so it is driven by the
|
||||
/// GameUIManager panel stack like any other panel. The controller object stays active so it can
|
||||
/// build its grid when the local player spawns; Show/Hide only toggle the visual window.
|
||||
/// The inventory window and the manager of its right-side modules. It is a local UI panel
|
||||
/// (opening/closing is purely local — the item data lives in the networked <see cref="PlayerInventory"/>),
|
||||
/// driven by the GameUIManager panel stack. The left grid + hotbar are always the player's inventory;
|
||||
/// the right area swaps between two modules: the hover description (normal browsing) and the chest
|
||||
/// module (<see cref="ChestPanelUI"/>) when a chest is opened. Opening a chest reuses this same window
|
||||
/// — the inventory and hotbar cells double as the deposit source, so nothing is rebuilt — and every
|
||||
/// drop is routed here into the right operation, chest transfers going through the chest's
|
||||
/// server-authoritative RPCs so two players sharing a chest stay in sync.
|
||||
/// </summary>
|
||||
public class InventoryUI : UIPanel
|
||||
{
|
||||
/// <summary>
|
||||
/// Marks this panel as the inventory: input is locked and the cursor shows, but the world
|
||||
/// keeps running (unlike the pause menu).
|
||||
/// keeps running (unlike the pause menu). A chest reuses this same window/kind.
|
||||
/// </summary>
|
||||
public override PanelKind Kind => PanelKind.Inventory;
|
||||
|
||||
/// <summary>
|
||||
/// The single inventory window in the scene, reached by a chest's Interact() and by slot cells
|
||||
/// routing their drops here.
|
||||
/// </summary>
|
||||
public static InventoryUI Instance { get; private set; }
|
||||
|
||||
#region Serialized Fields
|
||||
|
||||
[Header("References")]
|
||||
[SerializeField] private GameObject inventoryPanel;
|
||||
[SerializeField] private Transform slotContainer;
|
||||
@@ -33,8 +46,12 @@ namespace Ashwild.Inventory
|
||||
[Header("Context Menu")]
|
||||
[SerializeField] private SlotContextMenu contextMenu;
|
||||
|
||||
[Header("Hover Description")]
|
||||
[Header("Right Modules")]
|
||||
[Tooltip("Holder of the hover-description module — shown while browsing, hidden while a chest is open.")]
|
||||
[SerializeField] private GameObject descriptionModule;
|
||||
[SerializeField] private HoverDescriptionUI hoverDescription;
|
||||
[Tooltip("The chest module shown in place of the description while a chest is open.")]
|
||||
[SerializeField] private ChestPanelUI chestPanel;
|
||||
|
||||
[Header("Categories")]
|
||||
[SerializeField] private InventoryCategoryManager categoryManager;
|
||||
@@ -42,10 +59,32 @@ namespace Ashwild.Inventory
|
||||
[Header("Hotbar")]
|
||||
[SerializeField] private HotbarUI hotbarUI;
|
||||
|
||||
#endregion
|
||||
|
||||
#region State
|
||||
|
||||
private SlotUI[] slotUIs;
|
||||
private PlayerInventory inventory;
|
||||
private bool bound;
|
||||
|
||||
/// <summary>
|
||||
/// The chest bound while the window is in chest mode (null during normal inventory browsing).
|
||||
/// </summary>
|
||||
private Chest boundChest;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Unity Lifecycle
|
||||
|
||||
/// <summary>
|
||||
/// Registers the singleton (in addition to the base panel setup).
|
||||
/// </summary>
|
||||
protected override void Awake()
|
||||
{
|
||||
base.Awake();
|
||||
Instance = this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Waits for the networked local player to spawn before building the inventory grid.
|
||||
/// </summary>
|
||||
@@ -64,7 +103,7 @@ namespace Ashwild.Inventory
|
||||
|
||||
private void Start()
|
||||
{
|
||||
// Setup shared ghost for all SlotUIs (hotbar + inventory) — does not need the player.
|
||||
// Setup shared ghost for all SlotUIs (hotbar + inventory + chest) — does not need the player.
|
||||
SlotUI.SetupGhost(ghostObject, ghostIcon, ghostQuantityText);
|
||||
inventoryPanel.SetActive(false);
|
||||
|
||||
@@ -73,6 +112,20 @@ namespace Ashwild.Inventory
|
||||
BuildInventory();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Clears the listener and the singleton on teardown.
|
||||
/// </summary>
|
||||
private void OnDestroy()
|
||||
{
|
||||
if (inventory != null)
|
||||
inventory.onSlotChanged.RemoveListener(RefreshSlot);
|
||||
if (Instance == this) Instance = null;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Build
|
||||
|
||||
/// <summary>
|
||||
/// Builds the grid as soon as the local player has spawned on the network.
|
||||
/// </summary>
|
||||
@@ -96,7 +149,8 @@ namespace Ashwild.Inventory
|
||||
int slotIndex = inventory.HotbarSize + i;
|
||||
GameObject slotGO = Instantiate(slotPrefab, slotContainer);
|
||||
SlotUI slotUI = slotGO.GetComponent<SlotUI>();
|
||||
slotUI.Initialize(slotIndex, OnSwapRequested, OnSlotClicked, OnSlotHoverEnter, OnSlotHoverExit);
|
||||
slotUI.Initialize(SlotContainer.Inventory, slotIndex,
|
||||
HandleSlotDrop, OnSlotClicked, OnSlotHoverEnter, OnSlotHoverExit);
|
||||
slotUIs[i] = slotUI;
|
||||
}
|
||||
|
||||
@@ -104,29 +158,59 @@ namespace Ashwild.Inventory
|
||||
RefreshAll();
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
#endregion
|
||||
|
||||
#region Panel Lifecycle
|
||||
|
||||
/// <summary>
|
||||
/// Binds a chest and opens this window in chest mode through the panel stack. Called from a
|
||||
/// chest's Interact(); the chest is picked up in Show().
|
||||
/// </summary>
|
||||
public void OpenChest(Chest chest)
|
||||
{
|
||||
if (inventory != null)
|
||||
inventory.onSlotChanged.RemoveListener(RefreshSlot);
|
||||
if (chest == null) return;
|
||||
boundChest = chest;
|
||||
|
||||
if (UIManager.Instance != null)
|
||||
UIManager.Instance.OpenPanel(this);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Opens the inventory window (called by the GameUIManager panel stack).
|
||||
/// Opens the inventory window. Enters chest mode when a chest was bound (right side shows the
|
||||
/// chest module, category is forced to and locked on the inventory), otherwise normal browsing
|
||||
/// (right side shows the description). Always lands on the inventory category, never craft.
|
||||
/// </summary>
|
||||
public override void Show()
|
||||
{
|
||||
inventoryPanel.SetActive(true);
|
||||
RefreshAll();
|
||||
bool chestMode = boundChest != null;
|
||||
|
||||
if (categoryManager != null)
|
||||
{
|
||||
categoryManager.Open();
|
||||
categoryManager.SetLocked(chestMode);
|
||||
}
|
||||
|
||||
if (chestMode)
|
||||
{
|
||||
if (descriptionModule != null) descriptionModule.SetActive(false);
|
||||
if (chestPanel != null) chestPanel.Bind(boundChest);
|
||||
PlayerEvents.RaiseChestOpenChanged(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (chestPanel != null) chestPanel.Hide();
|
||||
if (descriptionModule != null) descriptionModule.SetActive(true);
|
||||
}
|
||||
|
||||
RefreshAll();
|
||||
|
||||
if (hotbarUI != null)
|
||||
hotbarUI.OnInventoryOpen();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Closes the inventory window and tears down its transient UI (ghost, context menu).
|
||||
/// Closes the window and tears down its transient UI (ghost, context menu, chest binding).
|
||||
/// </summary>
|
||||
public override void Hide()
|
||||
{
|
||||
@@ -140,11 +224,16 @@ namespace Ashwild.Inventory
|
||||
hoverDescription.Hide();
|
||||
|
||||
if (categoryManager != null)
|
||||
{
|
||||
categoryManager.SetLocked(false);
|
||||
categoryManager.Close();
|
||||
}
|
||||
|
||||
if (hotbarUI != null)
|
||||
hotbarUI.OnInventoryClose();
|
||||
|
||||
CloseChestMode();
|
||||
|
||||
inventoryPanel.SetActive(false);
|
||||
}
|
||||
|
||||
@@ -156,54 +245,99 @@ namespace Ashwild.Inventory
|
||||
if (ghostObject != null)
|
||||
ghostObject.SetActive(false);
|
||||
|
||||
CloseChestMode();
|
||||
|
||||
inventoryPanel.SetActive(false);
|
||||
}
|
||||
|
||||
// Called by any SlotUI (inventory or hotbar) when a drag-drop completes
|
||||
public static void OnSwapRequested(int fromIndex, int toIndex)
|
||||
/// <summary>
|
||||
/// Leaves chest mode: hides the chest module, releases the chest and puts the description module
|
||||
/// back. Shared by both close paths so they can never drift apart — HideInstant used to forget
|
||||
/// the description and left the right side blank on the next open.
|
||||
/// </summary>
|
||||
private void CloseChestMode()
|
||||
{
|
||||
PlayerInventory inv = PlayerInventory.Instance;
|
||||
InventorySlot fromSlot = inv.GetSlot(fromIndex);
|
||||
InventorySlot toSlot = inv.GetSlot(toIndex);
|
||||
if (boundChest == null) return;
|
||||
|
||||
// Same stackable item: merge
|
||||
if (!fromSlot.IsEmpty && !toSlot.IsEmpty
|
||||
&& fromSlot.ItemData == toSlot.ItemData
|
||||
&& toSlot.CanAccept(fromSlot.ItemData))
|
||||
{
|
||||
int leftover = toSlot.AddQuantity(fromSlot.Quantity);
|
||||
if (leftover <= 0)
|
||||
fromSlot.Clear();
|
||||
else
|
||||
fromSlot.Set(fromSlot.ItemData, leftover);
|
||||
|
||||
inv.onSlotChanged?.Invoke(fromIndex);
|
||||
inv.onSlotChanged?.Invoke(toIndex);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Swap
|
||||
inv.SwapSlots(fromIndex, toIndex);
|
||||
}
|
||||
if (chestPanel != null) chestPanel.Hide();
|
||||
boundChest = null;
|
||||
if (descriptionModule != null) descriptionModule.SetActive(true);
|
||||
PlayerEvents.RaiseChestOpenChanged(false);
|
||||
}
|
||||
|
||||
private void OnSlotClicked(int index, bool rightClick)
|
||||
#endregion
|
||||
|
||||
#region Transfer Routing
|
||||
|
||||
/// <summary>
|
||||
/// Routes a slot drop to whoever owns the slots: the inventory itself when both ends are local,
|
||||
/// otherwise the chest (which reconciles it server-side). Both paths end up in the same
|
||||
/// <see cref="SlotTransfer.Move"/> rules, so a chest drag behaves exactly like an inventory drag.
|
||||
/// Static so every cell (inventory, hotbar, chest) reports here without a per-cell reference.
|
||||
/// </summary>
|
||||
public static void HandleSlotDrop(SlotContainer fromContainer, int fromIndex, SlotContainer toContainer, int toIndex)
|
||||
{
|
||||
if (rightClick)
|
||||
if (fromContainer == SlotContainer.Inventory && toContainer == SlotContainer.Inventory)
|
||||
{
|
||||
if (contextMenu != null)
|
||||
contextMenu.Show(index);
|
||||
else
|
||||
inventory.UseItem(index);
|
||||
PlayerInventory inv = PlayerInventory.Instance;
|
||||
if (inv != null) inv.MoveSlot(fromIndex, toIndex);
|
||||
return;
|
||||
}
|
||||
|
||||
Chest chest = Instance != null ? Instance.boundChest : null;
|
||||
if (chest == null) return;
|
||||
|
||||
// Paint the chest cell as emptied now: its clear replicates on the SyncList (end of tick)
|
||||
// while the grant is an immediate TargetRpc, so without this the stack visibly lands in the
|
||||
// inventory before it leaves the chest.
|
||||
if (fromContainer == SlotContainer.Chest && Instance.chestPanel != null)
|
||||
Instance.chestPanel.PredictEmptied(fromIndex);
|
||||
|
||||
chest.RequestMove(fromContainer, fromIndex, toContainer, toIndex);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Builds the description payload for the hovered slot and shows the side panel. Empty slots
|
||||
/// keep the panel hidden. The duration bar reflects the item's remaining uses/durability.
|
||||
/// Quick-transfers a stack to the other container (auto-placed), for right-clicks. Exposed so the
|
||||
/// hotbar — which cannot reach the private chest binding — can route its own cells here.
|
||||
/// </summary>
|
||||
private void OnSlotHoverEnter(int index)
|
||||
public void RequestQuickTransfer(SlotContainer container, int index)
|
||||
{
|
||||
if (boundChest != null)
|
||||
boundChest.RequestQuickTransfer(container, index);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Event Handlers
|
||||
|
||||
/// <summary>
|
||||
/// Right-click on an inventory cell: a quick deposit while a chest is open, otherwise the slot
|
||||
/// context menu.
|
||||
/// </summary>
|
||||
private void OnSlotClicked(SlotContainer container, int index, bool rightClick)
|
||||
{
|
||||
if (!rightClick) return;
|
||||
|
||||
if (boundChest != null)
|
||||
{
|
||||
boundChest.RequestQuickTransfer(SlotContainer.Inventory, index);
|
||||
return;
|
||||
}
|
||||
|
||||
if (contextMenu != null)
|
||||
contextMenu.Show(index);
|
||||
else if (inventory != null)
|
||||
inventory.UseItem(index);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Builds the description payload for the hovered slot and shows the side panel. Suppressed in
|
||||
/// chest mode (the description module is hidden) and for empty slots. The duration bar reflects
|
||||
/// the item's remaining uses/durability.
|
||||
/// </summary>
|
||||
private void OnSlotHoverEnter(SlotContainer container, int index)
|
||||
{
|
||||
if (boundChest != null) return;
|
||||
if (hoverDescription == null || inventory == null) return;
|
||||
|
||||
InventorySlot slot = inventory.GetSlot(index);
|
||||
@@ -213,13 +347,7 @@ namespace Ashwild.Inventory
|
||||
return;
|
||||
}
|
||||
|
||||
ItemData item = slot.ItemData;
|
||||
bool hasDuration = item.HasUses;
|
||||
float fill = hasDuration ? (float)slot.CurrentUses / item.MaxUses : 0f;
|
||||
string durationText = hasDuration ? $"{slot.CurrentUses} / {item.MaxUses}" : string.Empty;
|
||||
|
||||
hoverDescription.Show(new ItemDescriptionView(
|
||||
item.Icon, item.ItemName, item.Description, hasDuration, fill, durationText));
|
||||
hoverDescription.Show(ItemDescriptionView.From(slot));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -231,6 +359,10 @@ namespace Ashwild.Inventory
|
||||
hoverDescription.Hide();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Refresh
|
||||
|
||||
private void RefreshSlot(int index)
|
||||
{
|
||||
if (slotUIs == null) return;
|
||||
@@ -250,5 +382,7 @@ namespace Ashwild.Inventory
|
||||
slotUIs[i].UpdateVisual(inventory.GetSlot(slotIndex));
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user