Для проверки, стоит ли сущность (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
, чтобы вызывать проверку при появлении новых сущностей. Не забудьте настроить вызовы функций в соответствии с вашими потребностями и логикой игры.