private void SendOnTrackedObjectChange(string tracker, string trackedName) { //get location type switch (trackedObjects[tracker].type) { case LOCATION_TYPE.SHIP: List <int> sentToIDs = new List <int>(); DB_Ship ship = mdb.FetchShipByName(tracker); TrackedObject tracked = trackedObjects[trackedName]; foreach (DB_Worker worker in mdb.FetchWorkersByShip(ship)) { DB_Player player = mdb.FetchPlayerByID(worker.owner.Id.AsObjectId); //only send if the player has not already been sent to if (!sentToIDs.Contains(player.ActiveConnectionID)) { SendClient(player.ActiveConnectionID, player.ActiveHostID, new Net_OnTrackedObjectChange(trackedName, tracked.pos.x, tracked.pos.y, tracked.vel.x, tracked.vel.y)); sentToIDs.Add(player.ActiveConnectionID); } } break; case LOCATION_TYPE.COLONY: case LOCATION_TYPE.ASTEROID: Debug.Log("not implemented"); break; case LOCATION_TYPE.NONE: default: Debug.Log(string.Format("[Sector Server]: Unexpected tracked location type ({0}).", trackedObjects[tracker].type)); break; } }