Для проверки, стоит ли сущность (entity) на фундаменте и удаления ее, если она не находится на фундаменте, вам нужно использовать функции из библиотеки Rust API. Вот пример кода на C#, который показывает, как проверить, стоит ли сущность на фундаменте и удалить ее, если она не находится на нем:
C#:
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
public class FoundationCheck : MonoBehaviour
{
private void CheckAndRemoveEntity(BaseEntity entity)
{
BuildingBlock buildingBlock = GetBuildingBlockUnderEntity(entity);
if (buildingBlock == null)
{
entity.Kill();
PrintWarning($"Entity {entity.gameObject.name} was removed as it was not on a foundation.");
}
}
private BuildingBlock GetBuildingBlockUnderEntity(BaseEntity entity)
{
List<BuildingBlock> buildingBlocks = BaseEntity
.Query<BuildingBlock>()
.Where(bb => bb.IsBuilt)
.Where(bb => bb.WorldSpaceBounds().Intersects(entity.WorldSpaceBounds()))
.ToList();
return buildingBlocks.FirstOrDefault();
}
private void OnEntitySpawned(BaseEntity entity)
{
if (entity != null)
{
CheckAndRemoveEntity(entity);
}
}
}
Этот пример кода демонстрирует функцию
CheckAndRemoveEntity, которая проверяет, стоит ли сущность на фундаменте, с помощью функции
GetBuildingBlockUnderEntity, которая находит фундамент под сущностью. Если сущность не находится на фундаменте, она удаляется. Вы также можете использовать событие
OnEntitySpawned, чтобы вызывать проверку при появлении новых сущностей. Не забудьте настроить вызовы функций в соответствии с вашими потребностями и логикой игры.