36 lines
1.4 KiB
C#
36 lines
1.4 KiB
C#
using UnityEngine;
|
|
|
|
namespace SepCore.Simulation
|
|
{
|
|
public interface ISimulationWorld
|
|
{
|
|
SimulationStats Stats { get; }
|
|
|
|
void Tick(in SimulationTickContext context);
|
|
|
|
void ClearSimulationState();
|
|
|
|
bool TryGetNearestEnemyEntityId(Vector3 origin, float maxSqrRange, out int enemyEntityId);
|
|
|
|
bool TryRequestAreaCollision(int sourceEntityId, int sourceOwnerEntityId, in Vector3 center, float radius,
|
|
int maxTargets = 16);
|
|
|
|
bool TryRequestSectorCollision(int sourceEntityId, int sourceOwnerEntityId, in Vector3 center, float radius,
|
|
in Vector3 direction, float halfAngleDeg, int maxTargets = 16);
|
|
|
|
bool TryRequestRectangleCollision(int sourceEntityId, int sourceOwnerEntityId, in Vector3 center,
|
|
float halfWidth, float halfLength, in Vector3 direction, int maxTargets = 16);
|
|
|
|
void SyncPlayerMovementInput(Transform playerTransform, bool isMoving, in Vector3 direction, float speed);
|
|
|
|
void UnregisterPlayerMovement(Transform playerTransform);
|
|
|
|
void SyncEnemyMovementInput(int entityId, bool isMoving, in Vector3 direction, float speed,
|
|
bool avoidEnemyOverlap, float enemyBodyRadius, int separationIterations);
|
|
|
|
void SyncPlayerAbsorbSettings(float absorbRange, float absorbSpeed, float collectDistance);
|
|
|
|
void TriggerFullMapMagnet();
|
|
}
|
|
}
|