-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcollision.nim
27 lines (24 loc) · 1.05 KB
/
collision.nim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from fieldbehavior import FieldBehavior
proc initCollider*(aerial:bool): FieldBehavior
from analyze import WorldState
from formation_info import FormationInfo
from pf import FieldGrid, applyRepulsiveFormationField
from tables import contains, `[]`
proc initCollider(aerial: bool): FieldBehavior =
result.apply = proc(f: var FieldGrid, ws: WorldState, fi: FormationInfo) =
let coi =
if aerial:ws.vehicles.byMyAerialCluster
else:ws.vehicles.byMyGroundCluster
for i, c in coi.pairs():
if i in fi.associatedClusters:
#debug($i & "'th cluster is skipped due to intersection with formation")
#continue
let remaining = fi.associatedClusters[i]
if remaining.units.len() > 0:
f.applyRepulsiveFormationField(remaining.center,
remaining.vertices, not aerial)
else:
f.applyRepulsiveFormationField(c.center, c.vertices, not aerial)
#var dummy: FieldGrid
#dummy.applyRepulsiveFormationField(c.center,c.vertices)
#echo "d", i, "=", $dummy.grid