增加测试地形
This commit is contained in:
BIN
Assets/New Terrain.asset
Normal file
BIN
Assets/New Terrain.asset
Normal file
Binary file not shown.
8
Assets/New Terrain.asset.meta
Normal file
8
Assets/New Terrain.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: bfd3d14c6a9fe2c449bfd1accf52d11d
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 15600000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -38,12 +38,12 @@ RenderSettings:
|
|||||||
m_ReflectionIntensity: 1
|
m_ReflectionIntensity: 1
|
||||||
m_CustomReflection: {fileID: 0}
|
m_CustomReflection: {fileID: 0}
|
||||||
m_Sun: {fileID: 0}
|
m_Sun: {fileID: 0}
|
||||||
m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1}
|
|
||||||
m_UseRadianceAmbientProbe: 0
|
m_UseRadianceAmbientProbe: 0
|
||||||
--- !u!157 &3
|
--- !u!157 &3
|
||||||
LightmapSettings:
|
LightmapSettings:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
serializedVersion: 12
|
serializedVersion: 13
|
||||||
|
m_BakeOnSceneLoad: 0
|
||||||
m_GISettings:
|
m_GISettings:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_BounceScale: 1
|
m_BounceScale: 1
|
||||||
@@ -248,14 +248,14 @@ MonoBehaviour:
|
|||||||
m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
|
m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
|
||||||
m_RequiresDepthTexture: 0
|
m_RequiresDepthTexture: 0
|
||||||
m_RequiresColorTexture: 0
|
m_RequiresColorTexture: 0
|
||||||
m_Version: 2
|
|
||||||
m_TaaSettings:
|
m_TaaSettings:
|
||||||
quality: 3
|
m_Quality: 3
|
||||||
frameInfluence: 0.1
|
m_FrameInfluence: 0.1
|
||||||
jitterScale: 1
|
m_JitterScale: 1
|
||||||
mipBias: 0
|
m_MipBias: 0
|
||||||
varianceClampScale: 0.9
|
m_VarianceClampScale: 0.9
|
||||||
contrastAdaptiveSharpening: 0
|
m_ContrastAdaptiveSharpening: 0
|
||||||
|
m_Version: 2
|
||||||
--- !u!1 &410087039
|
--- !u!1 &410087039
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -282,14 +282,14 @@ Light:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 410087039}
|
m_GameObject: {fileID: 410087039}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
serializedVersion: 11
|
serializedVersion: 13
|
||||||
m_Type: 1
|
m_Type: 1
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
m_Intensity: 2
|
m_Intensity: 2
|
||||||
m_Range: 10
|
m_Range: 10
|
||||||
m_SpotAngle: 30
|
m_SpotAngle: 30
|
||||||
m_InnerSpotAngle: 21.80208
|
m_InnerSpotAngle: 21.80208
|
||||||
m_CookieSize: 10
|
m_CookieSize2D: {x: 10, y: 10}
|
||||||
m_Shadows:
|
m_Shadows:
|
||||||
m_Type: 2
|
m_Type: 2
|
||||||
m_Resolution: -1
|
m_Resolution: -1
|
||||||
@@ -334,8 +334,11 @@ Light:
|
|||||||
m_UseBoundingSphereOverride: 0
|
m_UseBoundingSphereOverride: 0
|
||||||
m_UseViewFrustumForShadowCasterCull: 1
|
m_UseViewFrustumForShadowCasterCull: 1
|
||||||
m_ForceVisible: 0
|
m_ForceVisible: 0
|
||||||
m_ShadowRadius: 0
|
m_ShapeRadius: 0
|
||||||
m_ShadowAngle: 0
|
m_ShadowAngle: 0
|
||||||
|
m_LightUnit: 1
|
||||||
|
m_LuxAtDistance: 1
|
||||||
|
m_EnableSpotReflector: 1
|
||||||
--- !u!4 &410087041
|
--- !u!4 &410087041
|
||||||
Transform:
|
Transform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -363,17 +366,247 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
|
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
m_Version: 3
|
|
||||||
m_UsePipelineSettings: 1
|
m_UsePipelineSettings: 1
|
||||||
m_AdditionalLightsShadowResolutionTier: 2
|
m_AdditionalLightsShadowResolutionTier: 2
|
||||||
m_LightLayerMask: 1
|
|
||||||
m_RenderingLayers: 1
|
|
||||||
m_CustomShadowLayers: 0
|
m_CustomShadowLayers: 0
|
||||||
m_ShadowLayerMask: 1
|
|
||||||
m_ShadowRenderingLayers: 1
|
|
||||||
m_LightCookieSize: {x: 1, y: 1}
|
m_LightCookieSize: {x: 1, y: 1}
|
||||||
m_LightCookieOffset: {x: 0, y: 0}
|
m_LightCookieOffset: {x: 0, y: 0}
|
||||||
m_SoftShadowQuality: 1
|
m_SoftShadowQuality: 1
|
||||||
|
m_RenderingLayersMask:
|
||||||
|
serializedVersion: 0
|
||||||
|
m_Bits: 1
|
||||||
|
m_ShadowRenderingLayersMask:
|
||||||
|
serializedVersion: 0
|
||||||
|
m_Bits: 1
|
||||||
|
m_Version: 4
|
||||||
|
m_LightLayerMask: 1
|
||||||
|
m_ShadowLayerMask: 1
|
||||||
|
m_RenderingLayers: 1
|
||||||
|
m_ShadowRenderingLayers: 1
|
||||||
|
--- !u!1 &603012223
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 603012224}
|
||||||
|
- component: {fileID: 603012228}
|
||||||
|
- component: {fileID: 603012225}
|
||||||
|
- component: {fileID: 603012227}
|
||||||
|
- component: {fileID: 603012226}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: LineRoot
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &603012224
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 603012223}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: -0, y: 1, z: -0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 1769698869}
|
||||||
|
- {fileID: 1265290372}
|
||||||
|
- {fileID: 1470501308}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &603012225
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 603012223}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: dcd0fd8d96f994444b2d8663af6b915d, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::F2RopeLine2.FishingLine.FishingLineSolver
|
||||||
|
anchorTransform: {fileID: 2003292182}
|
||||||
|
logicalNodes:
|
||||||
|
- {fileID: 1769698871}
|
||||||
|
- {fileID: 1265290373}
|
||||||
|
- {fileID: 1470501309}
|
||||||
|
lineRenderer: {fileID: 603012226}
|
||||||
|
firstSegmentLength: 1.2
|
||||||
|
firstSegmentStep: 0.1
|
||||||
|
jointSolverIterations: 12
|
||||||
|
jointProjectionDistance: 0.02
|
||||||
|
jointProjectionAngle: 1
|
||||||
|
autoBuildOnStart: 1
|
||||||
|
drawDebugChain: 1
|
||||||
|
debugColor: {r: 0, g: 1, b: 1, a: 1}
|
||||||
|
debugLengthColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1}
|
||||||
|
debugNodeRadius: 0.025
|
||||||
|
showNodeLabels: 1
|
||||||
|
showSegmentLabels: 1
|
||||||
|
--- !u!114 &603012226
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 603012223}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 827786ffede4e7b4781c522e8a4ba9d0, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::F2RopeLine2.FishingLine.FishingLineRenderer
|
||||||
|
solver: {fileID: 603012225}
|
||||||
|
lineRenderer: {fileID: 603012227}
|
||||||
|
solverIterations: 8
|
||||||
|
damping: 0.98
|
||||||
|
gravityScale: 1
|
||||||
|
pinFollowStrength: 50
|
||||||
|
writeBackVirtualNodeTransforms: 1
|
||||||
|
drawDebugSamples: 0
|
||||||
|
debugSampleColor: {r: 1, g: 0.2, b: 0.2, a: 1}
|
||||||
|
debugSampleRadius: 0.015
|
||||||
|
--- !u!120 &603012227
|
||||||
|
LineRenderer:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 603012223}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_CastShadows: 1
|
||||||
|
m_ReceiveShadows: 1
|
||||||
|
m_DynamicOccludee: 1
|
||||||
|
m_StaticShadowCaster: 0
|
||||||
|
m_MotionVectors: 0
|
||||||
|
m_LightProbeUsage: 0
|
||||||
|
m_ReflectionProbeUsage: 0
|
||||||
|
m_RayTracingMode: 0
|
||||||
|
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: 0}
|
||||||
|
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_Positions:
|
||||||
|
- {x: 0, y: 0, z: 0}
|
||||||
|
- {x: 0, y: 0, z: 0}
|
||||||
|
m_Parameters:
|
||||||
|
serializedVersion: 3
|
||||||
|
widthMultiplier: 1
|
||||||
|
widthCurve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.01
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
colorGradient:
|
||||||
|
serializedVersion: 2
|
||||||
|
key0: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
key1: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
key2: {r: 0, g: 0, b: 0, a: 0}
|
||||||
|
key3: {r: 0, g: 0, b: 0, a: 0}
|
||||||
|
key4: {r: 0, g: 0, b: 0, a: 0}
|
||||||
|
key5: {r: 0, g: 0, b: 0, a: 0}
|
||||||
|
key6: {r: 0, g: 0, b: 0, a: 0}
|
||||||
|
key7: {r: 0, g: 0, b: 0, a: 0}
|
||||||
|
ctime0: 0
|
||||||
|
ctime1: 65535
|
||||||
|
ctime2: 0
|
||||||
|
ctime3: 0
|
||||||
|
ctime4: 0
|
||||||
|
ctime5: 0
|
||||||
|
ctime6: 0
|
||||||
|
ctime7: 0
|
||||||
|
atime0: 0
|
||||||
|
atime1: 65535
|
||||||
|
atime2: 0
|
||||||
|
atime3: 0
|
||||||
|
atime4: 0
|
||||||
|
atime5: 0
|
||||||
|
atime6: 0
|
||||||
|
atime7: 0
|
||||||
|
m_Mode: 0
|
||||||
|
m_ColorSpace: -1
|
||||||
|
m_NumColorKeys: 2
|
||||||
|
m_NumAlphaKeys: 2
|
||||||
|
numCornerVertices: 0
|
||||||
|
numCapVertices: 0
|
||||||
|
alignment: 0
|
||||||
|
textureMode: 0
|
||||||
|
textureScale: {x: 1, y: 1}
|
||||||
|
shadowBias: 0.5
|
||||||
|
generateLightingData: 0
|
||||||
|
m_UseWorldSpace: 1
|
||||||
|
m_Loop: 0
|
||||||
|
m_ApplyActiveColorSpace: 1
|
||||||
|
--- !u!114 &603012228
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 603012223}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 77af114bb80f3904a83cdeaacd5af508, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::F2RopeLine2.FishingLine.FishingLineTestController
|
||||||
|
solver: {fileID: 603012225}
|
||||||
|
initialFirstSegmentLength: 1.2
|
||||||
|
minFirstSegmentLength: 0.1
|
||||||
|
maxFirstSegmentLength: 5
|
||||||
|
lineAdjustSpeed: 1
|
||||||
|
extendKey: 273
|
||||||
|
retractKey: 274
|
||||||
|
rebuildKey: 114
|
||||||
|
showGui: 1
|
||||||
|
showNodeDetails: 1
|
||||||
|
showSegmentDetails: 1
|
||||||
|
detailScroll: {x: 0, y: 0}
|
||||||
--- !u!1 &832575517
|
--- !u!1 &832575517
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -423,6 +656,423 @@ Transform:
|
|||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &1265290371
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1265290372}
|
||||||
|
- component: {fileID: 1265290374}
|
||||||
|
- component: {fileID: 1265290373}
|
||||||
|
- component: {fileID: 1265290375}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Float
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &1265290372
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1265290371}
|
||||||
|
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: []
|
||||||
|
m_Father: {fileID: 603012224}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &1265290373
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1265290371}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 610df5569209e4b4997cb2dbf3b94cdc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::F2RopeLine2.FishingLine.FishingLineNode
|
||||||
|
nodeType: 1
|
||||||
|
body: {fileID: 1265290374}
|
||||||
|
interaction: {fileID: 0}
|
||||||
|
segmentLengthToNext: 0.5
|
||||||
|
fixedVirtualNodesToNext: 2
|
||||||
|
runtimeVirtualNode: 0
|
||||||
|
runtimeChainIndex: -1
|
||||||
|
drawDebugGizmo: 1
|
||||||
|
debugGizmoRadius: 0.03
|
||||||
|
logicalNodeColor: {r: 0.2, g: 0.9, b: 0.2, a: 1}
|
||||||
|
virtualNodeColor: {r: 1, g: 0.6, b: 0.1, a: 1}
|
||||||
|
--- !u!54 &1265290374
|
||||||
|
Rigidbody:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1265290371}
|
||||||
|
serializedVersion: 5
|
||||||
|
m_Mass: 1
|
||||||
|
m_LinearDamping: 0
|
||||||
|
m_AngularDamping: 0.05
|
||||||
|
m_CenterOfMass: {x: 0, y: 0, z: 0}
|
||||||
|
m_InertiaTensor: {x: 1, y: 1, z: 1}
|
||||||
|
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_IncludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_ExcludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_ImplicitCom: 1
|
||||||
|
m_ImplicitTensor: 1
|
||||||
|
m_UseGravity: 1
|
||||||
|
m_IsKinematic: 0
|
||||||
|
m_Interpolate: 0
|
||||||
|
m_Constraints: 0
|
||||||
|
m_CollisionDetection: 0
|
||||||
|
--- !u!65 &1265290375
|
||||||
|
BoxCollider:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1265290371}
|
||||||
|
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: 0.1, y: 0.1, z: 0.1}
|
||||||
|
m_Center: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &1470501307
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1470501308}
|
||||||
|
- component: {fileID: 1470501310}
|
||||||
|
- component: {fileID: 1470501309}
|
||||||
|
- component: {fileID: 1470501311}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: End
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &1470501308
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1470501307}
|
||||||
|
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: []
|
||||||
|
m_Father: {fileID: 603012224}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &1470501309
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1470501307}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 610df5569209e4b4997cb2dbf3b94cdc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::F2RopeLine2.FishingLine.FishingLineNode
|
||||||
|
nodeType: 3
|
||||||
|
body: {fileID: 1470501310}
|
||||||
|
interaction: {fileID: 0}
|
||||||
|
segmentLengthToNext: 0.5
|
||||||
|
fixedVirtualNodesToNext: 2
|
||||||
|
runtimeVirtualNode: 0
|
||||||
|
runtimeChainIndex: -1
|
||||||
|
drawDebugGizmo: 1
|
||||||
|
debugGizmoRadius: 0.03
|
||||||
|
logicalNodeColor: {r: 0.2, g: 0.9, b: 0.2, a: 1}
|
||||||
|
virtualNodeColor: {r: 1, g: 0.6, b: 0.1, a: 1}
|
||||||
|
--- !u!54 &1470501310
|
||||||
|
Rigidbody:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1470501307}
|
||||||
|
serializedVersion: 5
|
||||||
|
m_Mass: 1
|
||||||
|
m_LinearDamping: 0
|
||||||
|
m_AngularDamping: 0.05
|
||||||
|
m_CenterOfMass: {x: 0, y: 0, z: 0}
|
||||||
|
m_InertiaTensor: {x: 1, y: 1, z: 1}
|
||||||
|
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_IncludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_ExcludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_ImplicitCom: 1
|
||||||
|
m_ImplicitTensor: 1
|
||||||
|
m_UseGravity: 1
|
||||||
|
m_IsKinematic: 0
|
||||||
|
m_Interpolate: 0
|
||||||
|
m_Constraints: 0
|
||||||
|
m_CollisionDetection: 0
|
||||||
|
--- !u!65 &1470501311
|
||||||
|
BoxCollider:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1470501307}
|
||||||
|
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: 0.1, y: 0.1, z: 0.1}
|
||||||
|
m_Center: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &1769698868
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1769698869}
|
||||||
|
- component: {fileID: 1769698871}
|
||||||
|
- component: {fileID: 1769698870}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Start
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &1769698869
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1769698868}
|
||||||
|
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: []
|
||||||
|
m_Father: {fileID: 603012224}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!54 &1769698870
|
||||||
|
Rigidbody:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1769698868}
|
||||||
|
serializedVersion: 5
|
||||||
|
m_Mass: 1
|
||||||
|
m_LinearDamping: 0
|
||||||
|
m_AngularDamping: 0.05
|
||||||
|
m_CenterOfMass: {x: 0, y: 0, z: 0}
|
||||||
|
m_InertiaTensor: {x: 1, y: 1, z: 1}
|
||||||
|
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_IncludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_ExcludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_ImplicitCom: 1
|
||||||
|
m_ImplicitTensor: 1
|
||||||
|
m_UseGravity: 1
|
||||||
|
m_IsKinematic: 0
|
||||||
|
m_Interpolate: 0
|
||||||
|
m_Constraints: 0
|
||||||
|
m_CollisionDetection: 0
|
||||||
|
--- !u!114 &1769698871
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1769698868}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 610df5569209e4b4997cb2dbf3b94cdc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::F2RopeLine2.FishingLine.FishingLineNode
|
||||||
|
nodeType: 0
|
||||||
|
body: {fileID: 1769698870}
|
||||||
|
interaction: {fileID: 0}
|
||||||
|
segmentLengthToNext: 0.5
|
||||||
|
fixedVirtualNodesToNext: 2
|
||||||
|
runtimeVirtualNode: 0
|
||||||
|
runtimeChainIndex: -1
|
||||||
|
drawDebugGizmo: 1
|
||||||
|
debugGizmoRadius: 0.03
|
||||||
|
logicalNodeColor: {r: 0.2, g: 0.9, b: 0.2, a: 1}
|
||||||
|
virtualNodeColor: {r: 1, g: 0.6, b: 0.1, a: 1}
|
||||||
|
--- !u!1 &1939106081
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1939106084}
|
||||||
|
- component: {fileID: 1939106083}
|
||||||
|
- component: {fileID: 1939106082}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Terrain
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 2147483647
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!154 &1939106082
|
||||||
|
TerrainCollider:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1939106081}
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_IncludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_ExcludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_LayerOverridePriority: 0
|
||||||
|
m_ProvidesContacts: 0
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 2
|
||||||
|
m_TerrainData: {fileID: 15600000, guid: bfd3d14c6a9fe2c449bfd1accf52d11d, type: 2}
|
||||||
|
m_EnableTreeColliders: 1
|
||||||
|
--- !u!218 &1939106083
|
||||||
|
Terrain:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1939106081}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 6
|
||||||
|
m_TerrainData: {fileID: 15600000, guid: bfd3d14c6a9fe2c449bfd1accf52d11d, type: 2}
|
||||||
|
m_TreeDistance: 5000
|
||||||
|
m_TreeBillboardDistance: 50
|
||||||
|
m_TreeCrossFadeLength: 5
|
||||||
|
m_TreeMaximumFullLODCount: 50
|
||||||
|
m_DetailObjectDistance: 80
|
||||||
|
m_DetailObjectDensity: 1
|
||||||
|
m_HeightmapPixelError: 5
|
||||||
|
m_SplatMapDistance: 1000
|
||||||
|
m_HeightmapMinimumLODSimplification: 0
|
||||||
|
m_HeightmapMaximumLOD: 0
|
||||||
|
m_ShadowCastingMode: 2
|
||||||
|
m_DrawHeightmap: 1
|
||||||
|
m_DrawInstanced: 0
|
||||||
|
m_DrawTreesAndFoliage: 1
|
||||||
|
m_StaticShadowCaster: 0
|
||||||
|
m_IgnoreQualitySettings: 0
|
||||||
|
m_ReflectionProbeUsage: 1
|
||||||
|
m_MaterialTemplate: {fileID: 2100000, guid: 594ea882c5a793440b60ff72d896021e, type: 2}
|
||||||
|
m_BakeLightProbesForTrees: 1
|
||||||
|
m_PreserveTreePrototypeLayers: 0
|
||||||
|
m_DeringLightProbesForTrees: 1
|
||||||
|
m_ReceiveGI: 1
|
||||||
|
m_ScaleInLightmap: 0.0256
|
||||||
|
m_LightmapParameters: {fileID: 15203, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_GroupingID: 0
|
||||||
|
m_RenderingLayerMask: 1
|
||||||
|
m_AllowAutoConnect: 1
|
||||||
|
m_EnableHeightmapRayTracing: 1
|
||||||
|
m_EnableTreesAndDetailsRayTracing: 0
|
||||||
|
m_TreeMotionVectorModeOverride: 3
|
||||||
|
--- !u!4 &1939106084
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1939106081}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: -100, y: 0, z: -100}
|
||||||
|
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!1 &2003292181
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2003292182}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Tip
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &2003292182
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2003292181}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: -0, y: 1, z: -0}
|
||||||
|
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!1660057539 &9223372036854775807
|
--- !u!1660057539 &9223372036854775807
|
||||||
SceneRoots:
|
SceneRoots:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -430,3 +1080,6 @@ SceneRoots:
|
|||||||
- {fileID: 330585546}
|
- {fileID: 330585546}
|
||||||
- {fileID: 410087041}
|
- {fileID: 410087041}
|
||||||
- {fileID: 832575519}
|
- {fileID: 832575519}
|
||||||
|
- {fileID: 2003292182}
|
||||||
|
- {fileID: 603012224}
|
||||||
|
- {fileID: 1939106084}
|
||||||
|
|||||||
@@ -28,6 +28,13 @@ namespace F2RopeLine2.FishingLine
|
|||||||
[SerializeField] private bool runtimeVirtualNode;
|
[SerializeField] private bool runtimeVirtualNode;
|
||||||
[SerializeField] private int runtimeChainIndex = -1;
|
[SerializeField] private int runtimeChainIndex = -1;
|
||||||
|
|
||||||
|
[Header("Debug")]
|
||||||
|
[SerializeField] private bool drawDebugGizmo = true;
|
||||||
|
[Min(0.001f)]
|
||||||
|
[SerializeField] private float debugGizmoRadius = 0.03f;
|
||||||
|
[SerializeField] private Color logicalNodeColor = new(0.2f, 0.9f, 0.2f, 1f);
|
||||||
|
[SerializeField] private Color virtualNodeColor = new(1f, 0.6f, 0.1f, 1f);
|
||||||
|
|
||||||
public NodeType Type
|
public NodeType Type
|
||||||
{
|
{
|
||||||
get => nodeType;
|
get => nodeType;
|
||||||
@@ -56,6 +63,22 @@ namespace F2RopeLine2.FishingLine
|
|||||||
|
|
||||||
public Vector3 Position => transform.position;
|
public Vector3 Position => transform.position;
|
||||||
|
|
||||||
|
public string GetDebugName()
|
||||||
|
{
|
||||||
|
return runtimeVirtualNode
|
||||||
|
? $"V[{runtimeChainIndex}]"
|
||||||
|
: $"{nodeType}[{runtimeChainIndex}]";
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetDebugSummary()
|
||||||
|
{
|
||||||
|
var bodySummary = body == null
|
||||||
|
? "NoBody"
|
||||||
|
: $"v:{body.linearVelocity.magnitude:F2}";
|
||||||
|
|
||||||
|
return $"{GetDebugName()} pos:{Position} next:{segmentLengthToNext:F2} {bodySummary}";
|
||||||
|
}
|
||||||
|
|
||||||
private void Reset()
|
private void Reset()
|
||||||
{
|
{
|
||||||
TryGetComponent(out body);
|
TryGetComponent(out body);
|
||||||
@@ -87,5 +110,16 @@ namespace F2RopeLine2.FishingLine
|
|||||||
{
|
{
|
||||||
transform.position = position;
|
transform.position = position;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnDrawGizmos()
|
||||||
|
{
|
||||||
|
if (!drawDebugGizmo)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Gizmos.color = runtimeVirtualNode ? virtualNodeColor : logicalNodeColor;
|
||||||
|
Gizmos.DrawSphere(transform.position, debugGizmoRadius);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,10 +23,32 @@ namespace F2RopeLine2.FishingLine
|
|||||||
[SerializeField] private float pinFollowStrength = 50f;
|
[SerializeField] private float pinFollowStrength = 50f;
|
||||||
[SerializeField] private bool writeBackVirtualNodeTransforms = true;
|
[SerializeField] private bool writeBackVirtualNodeTransforms = true;
|
||||||
|
|
||||||
|
[Header("Debug")]
|
||||||
|
[SerializeField] private bool drawDebugSamples = false;
|
||||||
|
[SerializeField] private Color debugSampleColor = new(1f, 0.2f, 0.2f, 1f);
|
||||||
|
[Min(0.001f)]
|
||||||
|
[SerializeField] private float debugSampleRadius = 0.015f;
|
||||||
|
|
||||||
private readonly List<Vector3> positions = new();
|
private readonly List<Vector3> positions = new();
|
||||||
private readonly List<Vector3> previousPositions = new();
|
private readonly List<Vector3> previousPositions = new();
|
||||||
private bool[] pinnedFlags = System.Array.Empty<bool>();
|
private bool[] pinnedFlags = System.Array.Empty<bool>();
|
||||||
|
|
||||||
|
public int SampleCount => positions.Count;
|
||||||
|
|
||||||
|
public float CurrentRenderedLength
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
var total = 0f;
|
||||||
|
for (var i = 0; i < positions.Count - 1; i++)
|
||||||
|
{
|
||||||
|
total += Vector3.Distance(positions[i], positions[i + 1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return total;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void Reset()
|
private void Reset()
|
||||||
{
|
{
|
||||||
TryGetComponent(out lineRenderer);
|
TryGetComponent(out lineRenderer);
|
||||||
@@ -207,5 +229,19 @@ namespace F2RopeLine2.FishingLine
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnDrawGizmosSelected()
|
||||||
|
{
|
||||||
|
if (!drawDebugSamples || positions.Count == 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Gizmos.color = debugSampleColor;
|
||||||
|
for (var i = 0; i < positions.Count; i++)
|
||||||
|
{
|
||||||
|
Gizmos.DrawSphere(positions[i], debugSampleRadius);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace F2RopeLine2.FishingLine
|
namespace F2RopeLine2.FishingLine
|
||||||
@@ -36,6 +37,11 @@ namespace F2RopeLine2.FishingLine
|
|||||||
[SerializeField] private bool autoBuildOnStart = true;
|
[SerializeField] private bool autoBuildOnStart = true;
|
||||||
[SerializeField] private bool drawDebugChain = true;
|
[SerializeField] private bool drawDebugChain = true;
|
||||||
[SerializeField] private Color debugColor = Color.cyan;
|
[SerializeField] private Color debugColor = Color.cyan;
|
||||||
|
[SerializeField] private Color debugLengthColor = Color.yellow;
|
||||||
|
[Min(0.001f)]
|
||||||
|
[SerializeField] private float debugNodeRadius = 0.025f;
|
||||||
|
[SerializeField] private bool showNodeLabels = true;
|
||||||
|
[SerializeField] private bool showSegmentLabels = true;
|
||||||
|
|
||||||
private readonly List<FishingLineNode> orderedNodes = new();
|
private readonly List<FishingLineNode> orderedNodes = new();
|
||||||
private readonly List<float> restLengths = new();
|
private readonly List<float> restLengths = new();
|
||||||
@@ -60,6 +66,33 @@ namespace F2RopeLine2.FishingLine
|
|||||||
|
|
||||||
public float TotalLineLength { get; private set; }
|
public float TotalLineLength { get; private set; }
|
||||||
|
|
||||||
|
public int LogicalNodeCount => logicalNodes?.Length ?? 0;
|
||||||
|
|
||||||
|
public int RuntimeVirtualNodeCount => runtimeVirtualNodes.Count;
|
||||||
|
|
||||||
|
public int ActiveRuntimeVirtualNodeCount
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
var activeCount = 0;
|
||||||
|
for (var i = 0; i < runtimeVirtualNodes.Count; i++)
|
||||||
|
{
|
||||||
|
if (runtimeVirtualNodes[i] != null && runtimeVirtualNodes[i].gameObject.activeSelf)
|
||||||
|
{
|
||||||
|
activeCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return activeCount;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int OrderedNodeCount => orderedNodes.Count;
|
||||||
|
|
||||||
|
public int SegmentCount => restLengths.Count;
|
||||||
|
|
||||||
|
public bool IsChainDirty => chainDirty;
|
||||||
|
|
||||||
private void Reset()
|
private void Reset()
|
||||||
{
|
{
|
||||||
if (lineRenderer == null)
|
if (lineRenderer == null)
|
||||||
@@ -157,6 +190,66 @@ namespace F2RopeLine2.FishingLine
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public float GetActualDistance(int segmentIndex)
|
||||||
|
{
|
||||||
|
if (segmentIndex < 0 || segmentIndex >= orderedNodes.Count - 1)
|
||||||
|
{
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
var fromNode = orderedNodes[segmentIndex];
|
||||||
|
var toNode = orderedNodes[segmentIndex + 1];
|
||||||
|
if (fromNode == null || toNode == null)
|
||||||
|
{
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Vector3.Distance(fromNode.Position, toNode.Position);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetRuntimeDebugSummary()
|
||||||
|
{
|
||||||
|
var builder = new StringBuilder(512);
|
||||||
|
builder.Append("chain:")
|
||||||
|
.Append(chainDirty ? "dirty" : "ready")
|
||||||
|
.Append(" logical:")
|
||||||
|
.Append(LogicalNodeCount)
|
||||||
|
.Append(" runtimeVirtual:")
|
||||||
|
.Append(ActiveRuntimeVirtualNodeCount)
|
||||||
|
.Append("/")
|
||||||
|
.Append(RuntimeVirtualNodeCount)
|
||||||
|
.Append(" ordered:")
|
||||||
|
.Append(OrderedNodeCount)
|
||||||
|
.Append(" total:")
|
||||||
|
.Append(TotalLineLength.ToString("F2"))
|
||||||
|
.Append("m");
|
||||||
|
|
||||||
|
for (var i = 0; i < orderedNodes.Count; i++)
|
||||||
|
{
|
||||||
|
var node = orderedNodes[i];
|
||||||
|
if (node == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
builder.AppendLine()
|
||||||
|
.Append('#')
|
||||||
|
.Append(i)
|
||||||
|
.Append(' ')
|
||||||
|
.Append(node.GetDebugSummary());
|
||||||
|
|
||||||
|
if (i < restLengths.Count)
|
||||||
|
{
|
||||||
|
builder.Append(" seg rest:")
|
||||||
|
.Append(restLengths[i].ToString("F3"))
|
||||||
|
.Append(" actual:")
|
||||||
|
.Append(GetActualDistance(i).ToString("F3"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return builder.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
private void ConfigureStartNode()
|
private void ConfigureStartNode()
|
||||||
{
|
{
|
||||||
if (logicalNodes == null || logicalNodes.Length == 0 || logicalNodes[0] == null)
|
if (logicalNodes == null || logicalNodes.Length == 0 || logicalNodes[0] == null)
|
||||||
@@ -557,7 +650,49 @@ namespace F2RopeLine2.FishingLine
|
|||||||
}
|
}
|
||||||
|
|
||||||
Gizmos.DrawLine(orderedNodes[i].Position, orderedNodes[i + 1].Position);
|
Gizmos.DrawLine(orderedNodes[i].Position, orderedNodes[i + 1].Position);
|
||||||
|
Gizmos.DrawSphere(orderedNodes[i].Position, debugNodeRadius);
|
||||||
|
|
||||||
|
var midPoint = (orderedNodes[i].Position + orderedNodes[i + 1].Position) * 0.5f;
|
||||||
|
var actualLength = Vector3.Distance(orderedNodes[i].Position, orderedNodes[i + 1].Position);
|
||||||
|
var restLength = i < restLengths.Count ? restLengths[i] : 0f;
|
||||||
|
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
if (showSegmentLabels)
|
||||||
|
{
|
||||||
|
UnityEditor.Handles.color = debugLengthColor;
|
||||||
|
UnityEditor.Handles.Label(
|
||||||
|
midPoint,
|
||||||
|
$"S{i} rest:{restLength:F2} act:{actualLength:F2}");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (orderedNodes.Count > 0 && orderedNodes[^1] != null)
|
||||||
|
{
|
||||||
|
Gizmos.DrawSphere(orderedNodes[^1].Position, debugNodeRadius);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
if (!showNodeLabels)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < orderedNodes.Count; i++)
|
||||||
|
{
|
||||||
|
var node = orderedNodes[i];
|
||||||
|
if (node == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var pinned = pinnedIndices.Contains(i) ? " Pinned" : string.Empty;
|
||||||
|
UnityEditor.Handles.color = debugColor;
|
||||||
|
UnityEditor.Handles.Label(
|
||||||
|
node.Position + Vector3.up * 0.04f,
|
||||||
|
$"#{i} {node.GetDebugName()}{pinned}");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,9 @@ namespace F2RopeLine2.FishingLine
|
|||||||
|
|
||||||
[Header("Debug")]
|
[Header("Debug")]
|
||||||
[SerializeField] private bool showGui = true;
|
[SerializeField] private bool showGui = true;
|
||||||
|
[SerializeField] private bool showNodeDetails = true;
|
||||||
|
[SerializeField] private bool showSegmentDetails = true;
|
||||||
|
[SerializeField] private Vector2 detailScroll = Vector2.zero;
|
||||||
|
|
||||||
private float targetFirstSegmentLength;
|
private float targetFirstSegmentLength;
|
||||||
|
|
||||||
@@ -89,6 +92,8 @@ namespace F2RopeLine2.FishingLine
|
|||||||
GUILayout.Label("Fishing Line Test");
|
GUILayout.Label("Fishing Line Test");
|
||||||
GUILayout.Label($"First Segment Length: {solver.FirstSegmentLength:F2} m");
|
GUILayout.Label($"First Segment Length: {solver.FirstSegmentLength:F2} m");
|
||||||
GUILayout.Label($"Total Line Length: {solver.TotalLineLength:F2} m");
|
GUILayout.Label($"Total Line Length: {solver.TotalLineLength:F2} m");
|
||||||
|
GUILayout.Label($"Chain: {(solver.IsChainDirty ? "Dirty" : "Ready")}");
|
||||||
|
GUILayout.Label($"Logical/Virtual/Ordered: {solver.LogicalNodeCount}/{solver.ActiveRuntimeVirtualNodeCount}/{solver.OrderedNodeCount}");
|
||||||
GUILayout.Label($"Keys: {extendKey} / {retractKey} / {rebuildKey}");
|
GUILayout.Label($"Keys: {extendKey} / {retractKey} / {rebuildKey}");
|
||||||
|
|
||||||
var nextLength = GUILayout.HorizontalSlider(
|
var nextLength = GUILayout.HorizontalSlider(
|
||||||
@@ -122,6 +127,44 @@ namespace F2RopeLine2.FishingLine
|
|||||||
|
|
||||||
GUILayout.EndHorizontal();
|
GUILayout.EndHorizontal();
|
||||||
GUILayout.EndArea();
|
GUILayout.EndArea();
|
||||||
|
|
||||||
|
GUILayout.BeginArea(new Rect(16f, 204f, 420f, 320f), GUI.skin.box);
|
||||||
|
GUILayout.Label("Fishing Line Debug");
|
||||||
|
if (solver.TryGetComponent<FishingLineRenderer>(out var renderer))
|
||||||
|
{
|
||||||
|
GUILayout.Label($"Render Samples: {renderer.SampleCount}");
|
||||||
|
GUILayout.Label($"Rendered Length: {renderer.CurrentRenderedLength:F2} m");
|
||||||
|
}
|
||||||
|
|
||||||
|
detailScroll = GUILayout.BeginScrollView(detailScroll, GUILayout.Width(404f), GUILayout.Height(250f));
|
||||||
|
|
||||||
|
if (showNodeDetails)
|
||||||
|
{
|
||||||
|
GUILayout.Label("Nodes");
|
||||||
|
for (var i = 0; i < solver.OrderedNodeCount; i++)
|
||||||
|
{
|
||||||
|
if (!solver.TryGetOrderedNode(i, out var node))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
GUILayout.Label($"#{i} {node.GetDebugSummary()}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (showSegmentDetails)
|
||||||
|
{
|
||||||
|
GUILayout.Label("Segments");
|
||||||
|
for (var i = 0; i < solver.SegmentCount; i++)
|
||||||
|
{
|
||||||
|
var rest = solver.RestLengths[i];
|
||||||
|
var actual = solver.GetActualDistance(i);
|
||||||
|
GUILayout.Label($"S{i} rest:{rest:F3}m actual:{actual:F3}m diff:{(actual - rest):F3}m");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GUILayout.EndScrollView();
|
||||||
|
GUILayout.EndArea();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -920,7 +920,7 @@ PlayerSettings:
|
|||||||
qnxGraphicConfPath:
|
qnxGraphicConfPath:
|
||||||
apiCompatibilityLevel: 6
|
apiCompatibilityLevel: 6
|
||||||
captureStartupLogs: {}
|
captureStartupLogs: {}
|
||||||
activeInputHandler: 1
|
activeInputHandler: 2
|
||||||
windowsGamepadBackendHint: 0
|
windowsGamepadBackendHint: 0
|
||||||
enableDirectStorage: 0
|
enableDirectStorage: 0
|
||||||
cloudProjectId: a1a8eead-4064-43e5-adfa-49a79ab67f2e
|
cloudProjectId: a1a8eead-4064-43e5-adfa-49a79ab67f2e
|
||||||
|
|||||||
121
ProjectSettings/SceneTemplateSettings.json
Normal file
121
ProjectSettings/SceneTemplateSettings.json
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
{
|
||||||
|
"templatePinStates": [],
|
||||||
|
"dependencyTypeInfos": [
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.AnimationClip",
|
||||||
|
"defaultInstantiationMode": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEditor.Animations.AnimatorController",
|
||||||
|
"defaultInstantiationMode": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.AnimatorOverrideController",
|
||||||
|
"defaultInstantiationMode": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEditor.Audio.AudioMixerController",
|
||||||
|
"defaultInstantiationMode": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.ComputeShader",
|
||||||
|
"defaultInstantiationMode": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Cubemap",
|
||||||
|
"defaultInstantiationMode": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.GameObject",
|
||||||
|
"defaultInstantiationMode": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEditor.LightingDataAsset",
|
||||||
|
"defaultInstantiationMode": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.LightingSettings",
|
||||||
|
"defaultInstantiationMode": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Material",
|
||||||
|
"defaultInstantiationMode": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEditor.MonoScript",
|
||||||
|
"defaultInstantiationMode": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.PhysicsMaterial",
|
||||||
|
"defaultInstantiationMode": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.PhysicsMaterial2D",
|
||||||
|
"defaultInstantiationMode": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile",
|
||||||
|
"defaultInstantiationMode": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Rendering.PostProcessing.PostProcessResources",
|
||||||
|
"defaultInstantiationMode": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Rendering.VolumeProfile",
|
||||||
|
"defaultInstantiationMode": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEditor.SceneAsset",
|
||||||
|
"defaultInstantiationMode": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Shader",
|
||||||
|
"defaultInstantiationMode": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.ShaderVariantCollection",
|
||||||
|
"defaultInstantiationMode": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Texture",
|
||||||
|
"defaultInstantiationMode": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Texture2D",
|
||||||
|
"defaultInstantiationMode": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Timeline.TimelineAsset",
|
||||||
|
"defaultInstantiationMode": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"defaultDependencyTypeInfo": {
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "<default_scene_template_dependencies>",
|
||||||
|
"defaultInstantiationMode": 1
|
||||||
|
},
|
||||||
|
"newSceneOverride": 0
|
||||||
|
}
|
||||||
@@ -11,6 +11,56 @@ showStatusBar = false
|
|||||||
scopes = {
|
scopes = {
|
||||||
}
|
}
|
||||||
providers = {
|
providers = {
|
||||||
|
asset = {
|
||||||
|
active = true
|
||||||
|
priority = 25
|
||||||
|
defaultAction = null
|
||||||
|
}
|
||||||
|
scene = {
|
||||||
|
active = true
|
||||||
|
priority = 50
|
||||||
|
defaultAction = null
|
||||||
|
}
|
||||||
|
adb = {
|
||||||
|
active = false
|
||||||
|
priority = 2500
|
||||||
|
defaultAction = null
|
||||||
|
}
|
||||||
|
presets_provider = {
|
||||||
|
active = false
|
||||||
|
priority = -10
|
||||||
|
defaultAction = null
|
||||||
|
}
|
||||||
|
find = {
|
||||||
|
active = true
|
||||||
|
priority = 25
|
||||||
|
defaultAction = null
|
||||||
|
}
|
||||||
|
packages = {
|
||||||
|
active = false
|
||||||
|
priority = 90
|
||||||
|
defaultAction = null
|
||||||
|
}
|
||||||
|
performance = {
|
||||||
|
active = false
|
||||||
|
priority = 100
|
||||||
|
defaultAction = null
|
||||||
|
}
|
||||||
|
store = {
|
||||||
|
active = false
|
||||||
|
priority = 100
|
||||||
|
defaultAction = null
|
||||||
|
}
|
||||||
|
profilermarkers = {
|
||||||
|
active = false
|
||||||
|
priority = 100
|
||||||
|
defaultAction = null
|
||||||
|
}
|
||||||
|
log = {
|
||||||
|
active = false
|
||||||
|
priority = 210
|
||||||
|
defaultAction = null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
objectSelectors = {
|
objectSelectors = {
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user