rework dimensions and orientation into Placement, optimise requirements to work on previous candidates, use vec3 for positions

This commit is contained in:
2022-11-24 11:34:11 +01:00
parent f13ba4cd95
commit 3e51410ade
36 changed files with 268 additions and 275 deletions

View File

@@ -2,15 +2,12 @@
using System.Linq;
using EscapeRoomEngine.Engine.Runtime.Modules;
using EscapeRoomEngine.Engine.Runtime.Utilities;
using UnityEngine;
using Logger = EscapeRoomEngine.Engine.Runtime.Utilities.Logger;
using LogType = EscapeRoomEngine.Engine.Runtime.Utilities.LogType;
namespace EscapeRoomEngine.Engine.Runtime.Requirements
{
public abstract class PlacementRequirement : Requirement<Vector2Int>
public abstract class PlacementRequirement : Requirement<Placement>
{
protected abstract override IEnumerable<Vector2Int> GenerateCandidates(Module module, Space space);
protected abstract override List<Placement> FilterCandidates(List<Placement> candidates, Module module, Space space);
public static bool TryPlacing(Module module, Space space)
{
@@ -21,11 +18,11 @@ namespace EscapeRoomEngine.Engine.Runtime.Requirements
}
var placementCandidates = Candidates(
space.rrDimensions.EveryPosition,
space.rrPlacement.EveryPlacement,
module.description.placementRequirements,
module, space);
Logger.Log($"placement candidates: {string.Join(", ", placementCandidates.ToList().ConvertAll(c => c.ToString()))}", LogType.RequirementResolution);
Logger.Log($"placement candidates: {string.Join(", ", placementCandidates.ToList().ConvertAll(c => c.PositionAndOrientation()))}", LogType.RequirementResolution);
if (placementCandidates.Count > 0)
{