+ Generate a much simpler mesh collider for the terrain

This commit is contained in:
tetreum
2021-03-07 12:51:14 +01:00
parent a6254cb262
commit e678d6a712
11 changed files with 893 additions and 14 deletions

View File

@@ -0,0 +1,9 @@
#
## Alias OBJ Material File
# Exported from SketchUp, (c) 2000-2012 Trimble Navigation Limited
newmtl FrontColor
Ka 0.000000 0.000000 0.000000
Kd 1.000000 1.000000 1.000000
Ks 0.330000 0.330000 0.330000

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: dafb4521075424e42a009a724b1912e5
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,59 @@
# Alias OBJ Model File
# Exported from SketchUp, (c) 2000-2012 Trimble Navigation Limited
# File units = centimeters
mtllib 3003_SimpleCube.mtl
g Mesh1 Model
usemtl FrontColor
v 127.912 151.611 125.072
vt 50.359 -49.2409
vn 0 1 -0
v 127.912 151.611 -126.875
vt 50.359 49.9507
v -124.035 151.611 -126.875
vt -48.8326 49.9507
v -124.035 151.611 125.072
vt -48.8326 -49.2409
f 1/1/1 2/2/1 3/3/1 4/4/1
v 127.912 0.316516 125.072
vt -49.2409 0.124613
vn 1 0 -0
v 127.912 0.316516 -126.875
vt 49.9507 0.124613
vt 49.9507 59.6894
vt -49.2409 59.6894
f 5/5/2 6/6/2 2/7/2 1/8/2
v -124.035 0.316516 125.072
vt 48.8326 -49.2409
vn 0 -1 -0
v -124.035 0.316516 -126.875
vt 48.8326 49.9507
vt -50.359 49.9507
vt -50.359 -49.2409
f 7/9/3 8/10/3 6/11/3 5/12/3
vt 49.2409 59.6894
vn -1 0 -0
vt -49.9507 59.6894
vt -49.9507 0.124613
vt 49.2409 0.124613
f 4/13/4 3/14/4 8/15/4 7/16/4
vt 48.8326 59.6894
vn 0 0 -1
vt -50.359 59.6894
vt -50.359 0.124613
vt 48.8326 0.124613
f 3/17/5 2/18/5 6/19/5 8/20/5
vt -48.8326 59.6894
vn 0 0 1
vt -48.8326 0.124613
vt 50.359 0.124613
vt 50.359 59.6894
f 4/21/6 7/22/6 5/23/6 1/24/6

View File

@@ -0,0 +1,102 @@
fileFormatVersion: 2
guid: 3158aac840e893f4c9e5da257528c30f
ModelImporter:
serializedVersion: 20200
internalIDToNameTable: []
externalObjects: {}
materials:
materialImportMode: 2
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
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: 0.00316
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
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: 0.00316
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -38,7 +38,7 @@ RenderSettings:
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 2161.1426, g: 2269.287, b: 3322.5312, a: 1}
m_IndirectSpecularColor: {r: 2159.9756, g: 2267.873, b: 3319.629, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
@@ -869,6 +869,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
cubeMesh: {fileID: -2432090755550338912, guid: 4674aeb25d1bdd24091e11b3d56a9e25, type: 3}
obj: {fileID: 6108302372163926669}
brickColliderObj: {fileID: 2052450937}
--- !u!4 &625603112
Transform:
m_ObjectHideFlags: 0
@@ -944,6 +945,102 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: f95b4ecb0498be44db5c16f2b6e58c74, type: 3}
--- !u!1 &710734603
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 710734604}
- component: {fileID: 710734607}
- component: {fileID: 710734606}
- component: {fileID: 710734605}
m_Layer: 0
m_Name: Back
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &710734604
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 710734603}
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: 0.0009994507, y: 0.2479, z: 0.394}
m_LocalScale: {x: 0.08276857, y: 1, z: 0.057331607}
m_Children: []
m_Father: {fileID: 2052450937}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!64 &710734605
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 710734603}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 4
m_Convex: 0
m_CookingOptions: 30
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &710734606
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 710734603}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 257
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: e514b70a16480c6419ac1242262ce115, 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_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &710734607
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 710734603}
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &790548551
GameObject:
m_ObjectHideFlags: 0
@@ -1040,6 +1137,390 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 790548551}
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &842927739
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 842927740}
- component: {fileID: 842927743}
- component: {fileID: 842927742}
- component: {fileID: 842927741}
m_Layer: 0
m_Name: Right
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &842927740
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 842927739}
m_LocalRotation: {x: -0.5, y: -0.5, z: -0.5, w: 0.5}
m_LocalPosition: {x: 0.389, y: 0.2479, z: -0.004}
m_LocalScale: {x: 0.08276857, y: 1, z: 0.057331607}
m_Children: []
m_Father: {fileID: 2052450937}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: -90, y: -90, z: 0}
--- !u!64 &842927741
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 842927739}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 4
m_Convex: 0
m_CookingOptions: 30
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &842927742
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 842927739}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 257
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: e514b70a16480c6419ac1242262ce115, 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_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &842927743
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 842927739}
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &1236961032
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1236961033}
- component: {fileID: 1236961036}
- component: {fileID: 1236961035}
- component: {fileID: 1236961034}
m_Layer: 0
m_Name: Top
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1236961033
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1236961032}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.001, y: 0.453, z: 0.01117}
m_LocalScale: {x: 0.08276857, y: 1, z: 0.083801396}
m_Children: []
m_Father: {fileID: 2052450937}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!64 &1236961034
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1236961032}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 4
m_Convex: 0
m_CookingOptions: 30
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &1236961035
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1236961032}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 257
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: e514b70a16480c6419ac1242262ce115, 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_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &1236961036
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1236961032}
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &1241225975
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1241225976}
- component: {fileID: 1241225979}
- component: {fileID: 1241225978}
- component: {fileID: 1241225977}
m_Layer: 0
m_Name: Bottom
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1241225976
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1241225975}
m_LocalRotation: {x: 0, y: 0, z: 1, w: 0}
m_LocalPosition: {x: 0.0009994507, y: 0.233, z: 0.011169434}
m_LocalScale: {x: 0.08276857, y: 1, z: 0.083801396}
m_Children: []
m_Father: {fileID: 2052450937}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180}
--- !u!64 &1241225977
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1241225975}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 4
m_Convex: 0
m_CookingOptions: 30
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &1241225978
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1241225975}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 257
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: e514b70a16480c6419ac1242262ce115, 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_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &1241225979
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1241225975}
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &1699118880
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1699118881}
- component: {fileID: 1699118884}
- component: {fileID: 1699118883}
- component: {fileID: 1699118882}
m_Layer: 0
m_Name: Left
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1699118881
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1699118880}
m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5}
m_LocalPosition: {x: -0.389, y: 0.2479, z: -0.004}
m_LocalScale: {x: 0.08276857, y: 1, z: 0.057331607}
m_Children: []
m_Father: {fileID: 2052450937}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: -90, y: 90, z: 0}
--- !u!64 &1699118882
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1699118880}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 4
m_Convex: 0
m_CookingOptions: 30
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &1699118883
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1699118880}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 257
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: e514b70a16480c6419ac1242262ce115, 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_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &1699118884
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1699118880}
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &1765685900
GameObject:
m_ObjectHideFlags: 0
@@ -1443,6 +1924,102 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 6fb119473ae81da4291b7cb5ac72ee0f, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &2000588272
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2000588273}
- component: {fileID: 2000588276}
- component: {fileID: 2000588275}
- component: {fileID: 2000588274}
m_Layer: 0
m_Name: Front
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2000588273
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2000588272}
m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: 0.0009994507, y: 0.2479, z: -0.392}
m_LocalScale: {x: 0.08276857, y: 1, z: 0.057331607}
m_Children: []
m_Father: {fileID: 2052450937}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0}
--- !u!64 &2000588274
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2000588272}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 4
m_Convex: 0
m_CookingOptions: 30
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &2000588275
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2000588272}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 257
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: e514b70a16480c6419ac1242262ce115, 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_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &2000588276
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2000588272}
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &2013410473
GameObject:
m_ObjectHideFlags: 1
@@ -1488,6 +2065,93 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2052450934
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2052450937}
- component: {fileID: 2052450936}
- component: {fileID: 2052450935}
m_Layer: 0
m_Name: 3003 SimpleCube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!23 &2052450935
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2052450934}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 257
m_RendererPriority: 0
m_Materials:
- {fileID: -3033667219593020291, guid: 4674aeb25d1bdd24091e11b3d56a9e25, type: 3}
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_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &2052450936
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2052450934}
m_Mesh: {fileID: -4317298856758795638, guid: 3158aac840e893f4c9e5da257528c30f, type: 3}
--- !u!4 &2052450937
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2052450934}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -164.4, y: 68.2, z: 116.516}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 1236961033}
- {fileID: 2000588273}
- {fileID: 710734604}
- {fileID: 1699118881}
- {fileID: 842927740}
- {fileID: 1241225976}
m_Father: {fileID: 0}
m_RootOrder: 9
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &3058827993613838774
GameObject:
m_ObjectHideFlags: 0
@@ -1514,7 +2178,7 @@ MeshRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3058827993613838774}
m_Enabled: 1
m_CastShadows: 1
m_CastShadows: 0
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1

View File

@@ -20,6 +20,7 @@ namespace Brickcraft
private Vector3 currentStud;
private Transform latestStudGrid;
private Vector2Int latestStud;
private bool isHighAgainstTerrain = false;
private void Awake() {
Instance = this;
@@ -82,7 +83,9 @@ namespace Brickcraft
pivot.RotateAround(currentStud, rot, 90);
}
if (Input.GetMouseButtonDown(1) && !isColliding) {
Server.Instance.spawnBrick(PlayerPanel.Instance.selectedItem.item, transform.position, transform.rotation);
Vector3 pos = transform.position;
pos.y -= isHighAgainstTerrain ? 0.001f : 0.006f; // ugly hack to lower bricks pos
Server.Instance.spawnBrick(PlayerPanel.Instance.selectedItem.item, pos, transform.rotation);
Player.Instance.removeItem(new UserItem() {
id = PlayerPanel.Instance.selectedItem.id,
@@ -103,13 +106,6 @@ namespace Brickcraft
// ignore collisions with studs
if (other.name.StartsWith("GridStud")) {
return;
} else if (other.name.StartsWith("ChunkSlice")) {
/*
RaycastHit hit;
Physics.Raycast(transform.position, other.transform.position, out hit);
var pos = other.gameObject.GetComponent<Collider>().ClosestPointOnBounds(transform.position);
Debug.Log(other.transform.InverseTransformPoint(pos) + "-" + transform.InverseTransformPoint(pos));
*/
}
// prevent resetting those vars each frame
@@ -134,10 +130,13 @@ namespace Brickcraft
if (hit.collider.name.StartsWith("GridStud")) {
string[] tmp = hit.collider.name.Replace("GridStud ", "").Replace("GridStudBottom ", "").Split('x');
stud.gridDimensions = new Vector2Int(int.Parse(tmp[0]), int.Parse(tmp[1]));
isHighAgainstTerrain = false;
} else {
// is looking at world stud
// so grid is a 16x16 (chunk slice) made by 2x2 bricks
stud.gridDimensions = new Vector2Int(Chunk.SliceHeight * 2, Chunk.SliceHeight * 2);
isHighAgainstTerrain = true;
}
// 1x1 are easy xD
@@ -148,7 +147,7 @@ namespace Brickcraft
// convert world coords to local ones
Vector3 localHitpoint = hit.collider.transform.InverseTransformPoint(hit.point);
if (hit.collider.name.StartsWith("ChunkSlice")) { // chunkSlices have center wrongly set
if (isHighAgainstTerrain) { // chunkSlices have center wrongly set
Vector3 localCenter = hit.collider.transform.InverseTransformPoint(hit.collider.transform.GetComponent<Collider>().bounds.center);
localHitpoint -= localCenter;
}
@@ -231,13 +230,12 @@ namespace Brickcraft
// height needs to be corrected for bottom studs
if (hit.collider.name.Contains("Bottom")) {
studPos.y -= PlayerPanel.Instance.selectedItem.item.brickModel.heightInPlates * Server.plateHeight;
} else if (hit.collider.name.StartsWith("ChunkSlice")) { // chunkSlices have center wrongly set
} else if (isHighAgainstTerrain) { // chunkSlices have center wrongly set
Vector3 localCenter = hit.collider.transform.InverseTransformPoint(hit.collider.transform.GetComponent<Collider>().bounds.center);
studPos += localCenter;
studPos.y = hit.point.y;
studPos.y -= 0.089f; // supper ugly hack
}
currentStud = studPos;
GameObject brickObj = hit.collider.transform.parent.gameObject;

View File

@@ -20,6 +20,10 @@ namespace Brickcraft.World
private Dictionary<byte, List<Vector3>> meshes = new Dictionary<byte, List<Vector3>>();
private Dictionary<Vector3, bool> added = new Dictionary<Vector3, bool>();
// collider mesh
private List<Vector3> colliderVertices = new List<Vector3>();
private List<int> colliderTriangles = new List<int>();
public void RenderChunk(Chunk chunk)
{
WorldBehaviour world = chunk.World;
@@ -438,6 +442,9 @@ namespace Brickcraft.World
chunkEntry.ParentChunk = chunk;
chunkEntry.SliceIndex = i;
chunkEntry.ColliderVertices = colliderVertices.ToArray();
chunkEntry.ColliderTriangles = colliderTriangles.ToArray();
if (WorldBehaviour.mode == 2) {
Dictionary<byte, Vector3[]> meshList = new Dictionary<byte, Vector3[]>();
foreach (byte block in meshes.Keys) {
@@ -454,6 +461,9 @@ namespace Brickcraft.World
meshes.Clear();
added.Clear();
colliderVertices.Clear();
colliderTriangles.Clear();
lock (WorldBehaviour.ChunkQueueLock)
WorldBehaviour.ChunkSlicesToBuild.Enqueue(chunkEntry);
@@ -539,6 +549,21 @@ namespace Brickcraft.World
foreach (int index in faceMap.triangles) {
triangles.Add(index + vertexIndex);
}
// Mesh collider, it is way more simple than the normal mesh, as it hasn't the studs
vertexIndex = colliderVertices.Count;
FaceMap colliderFaceMap = WorldBehaviour.colliderMeshMap[face];
foreach (Vector3 vertice in colliderFaceMap.vertices) {
Vector3 pos = new Vector3(
vertice.x + (x * Server.brickWidth),
vertice.y + (y * Server.brickHeight),
vertice.z + (z * Server.brickWidth)
);
colliderVertices.Add(pos);
}
foreach (int index in colliderFaceMap.triangles) {
colliderTriangles.Add(index + vertexIndex);
}
}
void spawnBrick (byte block, Vector3 pos) {

View File

@@ -11,6 +11,9 @@ namespace Brickcraft.World
public Vector2[] Uvs;
public Chunk ParentChunk;
public int SliceIndex;
public Vector3[] ColliderVertices;
public int[] ColliderTriangles;
public Dictionary<byte, Vector3[]> meshes;
}
}

View File

@@ -27,6 +27,7 @@ namespace Brickcraft.World
public Mesh cubeMesh;
public Transform obj;
public Transform brickColliderObj;
private int accumulator;
@@ -41,6 +42,7 @@ namespace Brickcraft.World
public static readonly int MapMaxCoords = MapMaxChunkX * 16;
public static Dictionary<string, FaceMap> meshMap;
public static Dictionary<string, FaceMap> colliderMeshMap;
public static int mode = 3;
/*
* 1 = Original - minecraft
@@ -50,6 +52,7 @@ namespace Brickcraft.World
private void Awake() {
meshMap = (new FaceMapper(obj)).getMapping();
colliderMeshMap = (new FaceMapper(brickColliderObj)).getMapping();
}
void Start () {
@@ -221,6 +224,15 @@ namespace Brickcraft.World
mesh.RecalculateBounds();
filter.mesh = mesh;
// generate a much simpler collider mesh
mesh = new Mesh();
mesh.vertices = chunkEntry.ColliderVertices;
mesh.triangles = chunkEntry.ColliderTriangles;
mesh.RecalculateNormals();
mesh.RecalculateBounds();
chunkSliceObject.GetComponent<MeshCollider>().sharedMesh = mesh;
}
chunkEntry.ParentChunk.ClearDirtySlices();

BIN
Sketchup/3003SimpleCube.skb Normal file

Binary file not shown.

BIN
Sketchup/3003SimpleCube.skp Normal file

Binary file not shown.