Files
Net.Like.Xue.Tokyo/Packages-Local/Com.Project.B.Unity/NodeCanvas/WorldInteractionTask.cs
2025-06-24 23:49:13 +08:00

58 lines
1.8 KiB
C#

using System.Collections;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Runtime.Remoting;
using BITKit;
using BITKit.Entities;
using BITKit.UX;
using Cysharp.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Net.Project.B.Interaction;
using NodeCanvas.Framework;
using Project.B.Map;
using UnityEngine;
namespace Net.Project.B.NodeCanvas
{
public class WorldInteractionTask : ActionTask
{
public BBParameter<GameObject> worldObject;
protected override void OnExecute()
{
if (worldObject.isNull)
{
EndAction(false);
Debug.LogWarning("agent为null");
return;
}
var entitiesService = BITApp.ServiceProvider.GetRequiredService<IEntitiesService>();
if (entitiesService.TryGetEntity(worldObject.value.GetInstanceID(), out var entity) is false)
{
Debug.LogWarning("entity为null");
EndAction(false);
return;
}
if (entity.ServiceProvider.GetService<IWorldInteractable>() is not { } interactable)
{
Debug.LogWarning("interactable为null");
EndAction(false);
return;
}
var interactionService = BITApp.ServiceProvider.GetRequiredService<IWorldInteractionService>();
var player = entitiesService.QueryComponents<IEntity,LocalPlayerComponent>();
interactionService.Interaction(player.Length > 0 ? player[0].Item1:this, interactable, WorldInteractionProcess.System);
EndAction();
}
}
}