// using System.Collections; // using Fantasy; // using UnityEngine; // // namespace NBF // { // /// // /// 虚拟钓组 // /// // public class FVirtualTackle // { // private ItemInfo _itemInfo; // private FPlayer _player; // // // public FRod Rod; // // // public FVirtualTackle(ItemInfo itemInfo, FPlayer player) // { // _itemInfo = itemInfo; // _player = player; // } // // public IEnumerator Create() // { // var parent = _player.transform; // // parent.position = _player.transform.position; // // // Rod = _itemInfo.Config.InstantiateAndComponent(parent, Vector3.zero, Quaternion.identity); // // // // var rodObject = _itemInfo.Config.Instantiate(parent, Vector3.zero, Quaternion.identity); // // Rod = rodObject.GetComponent(); // // if (Rod == null) // // { // // Rod = rodObject.AddComponent(); // // } // // var rodConfig = RodConfig.Get(itemInfo.ConfigId); // // itemInfo.Config // // // var data = Player.Data.currentGear; // // var rodConfig = data.rod.Config; // // var cloneObj = rodConfig.Instantiate(parent, Vector3.zero, Player.MainArm.RodContainer.rotation); // // if (cloneObj == null) // // { // // yield break; // // } // // // // Rod = cloneObj.GetComponent(); // // if (Rod == null) // // { // // Rod = cloneObj.AddComponent(); // // } // // // // // // if (Rod) // // { // // Rod.transform.localPosition = Vector3.zero; // // Rod.transform.rotation = Player.MainArm.RodContainer.rotation; // // // // if (rodConfig.ring > 0) // // { // // var ringConfig = GameRings.Get(rodConfig.ring); // // var ringObject = ringConfig.Instantiate(Rod.transform); // // ringObject.SetActive(false); // // Rod.SetRing(ringObject.GetComponent()); // // } // // } // // else // // { // // yield break; // // } // // // // if (data.line != null) // // { // // var linePrefab = data.line.Config.Instantiate(parent); // // Line = linePrefab.GetComponent(); // // } // // // // if (data.reel != null) // // { // // var reelPrefab = data.reel.Config.Create(parent); // // Reel = reelPrefab.GetComponent(); // // } // // // // if (data.bobber != null) // // { // // var bobberPrefab = data.bobber.Config.Create(parent); // // Bobber = bobberPrefab.GetComponent(); // // } // // // // if (data.hook != null) // // { // // var hookPrefab = data.hook.Config.Create(parent); // // Hook = hookPrefab.GetComponent(); // // } // // // // if (data.bait != null) // // { // // var baitPrefab = data.bait.Config.Create(parent); // // // // if (baitPrefab.TryGetComponent(out var bait)) // // { // // Bait = bait; // // } // // } // // // // if (data.lure != null) // // { // // var baitPrefab = data.lure.Config.Create(parent); // // if (baitPrefab.TryGetComponent(out var lure)) // // { // // Lure = lure; // // } // // } // // // // // // if (data.weight != null) // // { // // var weightPrefab = data.weight.Config.Instantiate(parent); // // Weight = weightPrefab.GetComponent(); // // } // // // // Debug.LogError("CreateOrHideGear"); // // yield return 1; // // Rod.Initialize(Player, data.rod); // // Rod.CreateFishingHandler(); // // // // if (Line) // // { // // Line.Initialize(Player, data.line); // // // // // // if ((bool)Rod.lineHandler.obiRopeSegment_1) // // { // // Rod.lineHandler.obiRopeSegment_1.GetComponent().material = // // Line.lineMat; // // } // // // // if ((bool)Rod.lineHandler.obiRopeSegment_2) // // { // // Rod.lineHandler.obiRopeSegment_2.GetComponent().material = // // Line.lineMat; // // } // // // // if ((bool)Rod.lineHandler.obiRopeSegment_3) // // { // // Rod.lineHandler.obiRopeSegment_3.GetComponent().material = // // Line.lineMat; // // } // // } // // // // if (Reel) // // { // // // Reel.maxReelStrength = data.reel.Config.strength; // // // Reel.reelingSpeed = 0.5f; //slotsEquip.reel.currentSpeed; // // Reel.reelingDrag = 0.699f; //slotsEquip.reel.currentDrag; // // Reel.transform.SetParent(Rod.rodAsset.ReelConnector); // // Reel.transform.localPosition = Vector3.zero; // // Reel.transform.localEulerAngles = Vector3.zero; // // // Reel.reelAsset.szpulaObject.GetComponent().material = Line.szpulaMat; // // Reel.Initialize(Player, data.reel); // // } // // // // if (Bobber) // // { // // Bobber.floatDisplacement = data.bobber.Config.displacement; // // // if ((double)slotsEquip.ffloat.lastSetGroundValue > 0.2) // // // { // // // Bobber.newDeepth = slotsEquip.ffloat.lastSetGroundValue; // // // } // // // // Bobber.newDeepth = 0.5f; // // // // Bobber.Initialize(Player, data.bobber); // // Bobber.transform.position = Rod.lineHandler.LineConnector_1.transform.position; // // Bobber.gameObject.GetComponent().connectedBody = // // Rod.lineHandler.LineConnector_1.GetComponent(); // // } // // // // // // if (Hook) // // { // // Hook.Initialize(Player, data.hook); // // // // Hook.transform.position = Rod.lineHandler.LineConnector_2.transform.position; // // Hook.transform.rotation = Rod.lineHandler.LineConnector_2.transform.rotation; // 确保旋转也同步 // // var target = Rod.lineHandler.LineConnector_2.GetComponent(); // // var joint = Hook.gameObject.GetComponent(); // // // // 关键设置:关闭自动锚点计算,手动设置锚点 // // // joint.autoConfigureConnectedAnchor = false; // // // joint.anchor = Vector3.zero; // 以 Hook 自身中心为锚点 // // // joint.connectedAnchor = Vector3.zero; // 以目标物体的中心为锚点 // // joint.connectedBody = target; // // // // 强制物理引擎立即更新变换(避免1帧延迟) // // // Physics.SyncTransforms(); // // // joint.autoConfigureConnectedAnchor = false; // // // joint.anchor = Vector3.zero; // // // joint.connectedAnchor = Vector3.zero; // // Rod.LureHookWaterDisplacement = Hook.GetComponent(); // // } // // // // if (Bait) // // { // // Bait.Initialize(Player, data.bait); // // Bait.transform.position = Hook.hookAsset.baitConnector.position; // // Bait.transform.SetParent(Hook.hookAsset.baitConnector); // // } // // // // if (Lure) // // { // // Lure.Initialize(Player, data.bait); // // Lure.transform.position = Rod.lineHandler.LineConnector_1.transform.position; // // Lure.gameObject.GetComponent().connectedBody = // // Rod.lineHandler.LineConnector_1.GetComponent(); // // Rod.LureHookWaterDisplacement = Lure.GetComponent(); // // } // // // // if (Weight) // // { // // Weight.weight = data.weight.Config.weight; // // Weight.Initialize(Player, data.weight); // // } // } // // public IEnumerator Destroy() // { // yield return 1; // } // } // }