Skip to content

Commit ee65808

Browse files
committed
add Data to aoi
1 parent f7bfad5 commit ee65808

File tree

5 files changed

+19
-18
lines changed

5 files changed

+19
-18
lines changed

XZListAOIManager.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,9 @@ func (aoiman *XZListAOIManager) adjust(aoi *xzaoi) {
7070
} else { // markVal < 2
7171
// was neighbor, but not any more
7272
delete(aoi.neighbors, neighbor)
73-
aoi.aoi.Callback.OnLeaveAOI(neighbor.aoi)
73+
aoi.aoi.callback.OnLeaveAOI(neighbor.aoi)
7474
delete(neighbor.neighbors, aoi)
75-
neighbor.aoi.Callback.OnLeaveAOI(aoi.aoi)
75+
neighbor.aoi.callback.OnLeaveAOI(aoi.aoi)
7676
}
7777
}
7878

aoi.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ type AOI struct {
66
x Coord
77
y Coord
88
dist Coord
9-
Callback AOICallback
9+
Data interface{}
1010

11+
callback AOICallback
1112
implData interface{}
1213

1314
//// Fields for XZListAOIManager
@@ -17,9 +18,10 @@ type AOI struct {
1718
//markVal int
1819
}
1920

20-
func InitAOI(aoi *AOI, dist Coord, callback AOICallback) {
21+
func InitAOI(aoi *AOI, dist Coord, data interface{}, callback AOICallback) {
2122
aoi.dist = dist
22-
aoi.Callback = callback
23+
aoi.Data = data
24+
aoi.callback = callback
2325
}
2426

2527
type AOICallback interface {

aoi_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88
"runtime/pprof"
99
"testing"
1010
"time"
11-
"unsafe"
1211
)
1312

1413
const (
@@ -72,7 +71,7 @@ func (obj *TestObj) String() string {
7271
}
7372

7473
func (obj *TestObj) getObj(aoi *AOI) *TestObj {
75-
return (*TestObj)(unsafe.Pointer(aoi))
74+
return aoi.Data.(*TestObj)
7675
}
7776

7877
func randCoord(min, max Coord) Coord {
@@ -83,7 +82,7 @@ func testAOI(t *testing.T, manname string, aoiman AOIManager, numAOI int) {
8382
objs := []*TestObj{}
8483
for i := 0; i < numAOI; i++ {
8584
obj := &TestObj{Id: i + 1, neighbors: map[*TestObj]struct{}{}}
86-
InitAOI(&obj.aoi, _DEFAULT_AOI_DISTANCE, obj)
85+
InitAOI(&obj.aoi, _DEFAULT_AOI_DISTANCE, obj, obj)
8786
objs = append(objs, obj)
8887
aoiman.Enter(&obj.aoi, randCoord(MIN_X, MAX_X), randCoord(MIN_Y, MAX_Y))
8988
}

tower_aoi.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ func (t *tower) addObj(obj *aoiobj, fromOtherTower *tower) {
157157
if watcher == obj {
158158
continue
159159
}
160-
watcher.aoi.Callback.OnEnterAOI(obj.aoi)
160+
watcher.aoi.callback.OnEnterAOI(obj.aoi)
161161
}
162162
} else {
163163
// obj moved from other tower to this tower
@@ -168,7 +168,7 @@ func (t *tower) addObj(obj *aoiobj, fromOtherTower *tower) {
168168
if _, ok := t.watchers[watcher]; ok {
169169
continue
170170
}
171-
watcher.aoi.Callback.OnLeaveAOI(obj.aoi)
171+
watcher.aoi.callback.OnLeaveAOI(obj.aoi)
172172
}
173173
for watcher := range t.watchers {
174174
if watcher == obj {
@@ -177,7 +177,7 @@ func (t *tower) addObj(obj *aoiobj, fromOtherTower *tower) {
177177
if _, ok := fromOtherTower.watchers[watcher]; ok {
178178
continue
179179
}
180-
watcher.aoi.Callback.OnEnterAOI(obj.aoi)
180+
watcher.aoi.callback.OnEnterAOI(obj.aoi)
181181
}
182182
}
183183
}
@@ -190,7 +190,7 @@ func (t *tower) removeObj(obj *aoiobj, notifyWatchers bool) {
190190
if watcher == obj {
191191
continue
192192
}
193-
watcher.aoi.Callback.OnLeaveAOI(obj.aoi)
193+
watcher.aoi.callback.OnLeaveAOI(obj.aoi)
194194
}
195195
}
196196
}
@@ -205,7 +205,7 @@ func (t *tower) addWatcher(obj *aoiobj) {
205205
if neighbor == obj {
206206
continue
207207
}
208-
obj.aoi.Callback.OnEnterAOI(neighbor.aoi)
208+
obj.aoi.callback.OnEnterAOI(neighbor.aoi)
209209
}
210210
}
211211

@@ -219,7 +219,7 @@ func (t *tower) removeWatcher(obj *aoiobj) {
219219
if neighbor == obj {
220220
continue
221221
}
222-
obj.aoi.Callback.OnLeaveAOI(neighbor.aoi)
222+
obj.aoi.callback.OnLeaveAOI(neighbor.aoi)
223223
}
224224
}
225225

xAOIList.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -150,9 +150,9 @@ func (sl *xAOIList) GetClearMarkedNeighbors(aoi *xzaoi) {
150150
for prev != nil && prev.aoi.x >= minCoord {
151151
if prev.markVal == 2 {
152152
aoi.neighbors[prev] = struct{}{}
153-
aoi.aoi.Callback.OnEnterAOI(prev.aoi)
153+
aoi.aoi.callback.OnEnterAOI(prev.aoi)
154154
prev.neighbors[aoi] = struct{}{}
155-
prev.aoi.Callback.OnEnterAOI(aoi.aoi)
155+
prev.aoi.callback.OnEnterAOI(aoi.aoi)
156156
}
157157
prev.markVal = 0
158158
prev = prev.xPrev
@@ -163,9 +163,9 @@ func (sl *xAOIList) GetClearMarkedNeighbors(aoi *xzaoi) {
163163
for next != nil && next.aoi.x <= maxCoord {
164164
if next.markVal == 2 {
165165
aoi.neighbors[next] = struct{}{}
166-
aoi.aoi.Callback.OnEnterAOI(next.aoi)
166+
aoi.aoi.callback.OnEnterAOI(next.aoi)
167167
next.neighbors[aoi] = struct{}{}
168-
next.aoi.Callback.OnEnterAOI(aoi.aoi)
168+
next.aoi.callback.OnEnterAOI(aoi.aoi)
169169
}
170170
next.markVal = 0
171171
next = next.xNext

0 commit comments

Comments
 (0)