【m】11.PointCloudTools 上传

This commit is contained in:
2025-09-02 10:42:11 +08:00
parent 421b516485
commit 66443003d1
31 changed files with 1578 additions and 0 deletions

View File

@@ -0,0 +1,92 @@
using System;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using Main;
using Stary.Evo;
using TMPro;
using UnityEngine;
namespace Main
{
public class PointController : MonoBehaviour
{
public string pointType;
public bool isTigger;
public ZoneController ZoneController;
private MeshCollider collider;
private IUnRegister _onTriggerEnterUnRegister;
public Action<Collider> OnColliderEnter;
public async void Init(ZoneController ZoneController, PointData pointData)
{
this.gameObject.SetActive(false);
this.ZoneController = ZoneController;
var titleMesh = this.transform.Find("Title").GetComponent<TextMeshPro>();
titleMesh.text = pointData.name;
var numMesh = titleMesh.transform.Find("Num").GetComponent<TextMeshPro>();
numMesh.text = ConvertToCircledNumber(pointData.order);
name = pointData.id;
isTigger = pointData.isTigger;
pointType = pointData.id;
//根据数据设置zone 碰撞盒
transform.localPosition = pointData.colliderData.position;
transform.localRotation = Quaternion.Euler(pointData.colliderData.rotation);
transform.localScale = pointData.colliderData.scale;
collider = transform.Find("collisionbox").GetComponent<MeshCollider>();
collider.transform.localPosition = pointData.colliderData.colPosition;
collider.transform.localRotation = Quaternion.Euler(pointData.colliderData.colRotation);
collider.transform.localScale = pointData.colliderData.colScale;
if (PointCloudService.GetService<IZoneData>().IsGizmo())
{
collider.GetOrAddComponent<MeshColliderGizmo>();
}
_onTriggerEnterUnRegister = collider.OnTriggerEnterEvent(OnPointTriggerEnterEvent);
}
public void OnPointTriggerEnterEvent(Collider collider)
{
if (!isTigger)
return;
if (PointCloudService.GetService<IZoneSystem>().CurrentPointType == pointType)
return;
if (collider.gameObject.CompareTag("GameController"))
{
if (ZoneController != null)
{
//隐藏当前点,显示其余点
ZoneController.CurrentPointActiveHideOrShow(this, false);
}
else
{
this.gameObject.SetActive(false);
}
PointCloudService.GetService<IZoneSystem>().OpenDomain(this.name);
OnColliderEnter?.Invoke(collider);
PointCloudService.GetService<IZoneSystem>().CurrentPointType = pointType;
Debug.Log($"【{name}】OnPointTriggerEnterEvent");
}
}
private static string ConvertToCircledNumber(int number)
{
// 检查数字是否在1-20范围内
if (number < 1 || number > 20)
{
return number.ToString(); // 超出范围则返回原数字
}
// Unicode中①对应的编码是0x2460依次递增
char circledChar = (char)(0x2460 + number - 1);
return circledChar.ToString();
}
}
}