/// <summary> /// Called periodically on editing Characters /// </summary> void UpdateCallback(WorldObject obj) { // make sure, Character is still in place var chr = (Character)obj; if (obj.Map != Map || !obj.IsInWorld) { Leave(chr); return; } // update target var info = MapEditorMgr.GetOrCreateArchitectInfo(chr); var chrTarget = chr.Target as EditorFigurine; var target = info.CurrentTarget; if (target != chrTarget) { target = chrTarget; info.CurrentTarget = target; if (target != null) { // selected new target } } }
private void OnJoin(Character chr) { if (Team.ContainsKey(chr.EntityId.Low)) { return; } EditorArchitectInfo architectInfo = MapEditorMgr.GetOrCreateArchitectInfo(chr); Team.Add(chr.EntityId.Low, architectInfo); architectInfo.Editor = this; chr.CallPeriodically(1000, UpdateCallback); }
private void OnJoin(Character chr) { if (Team.ContainsKey(chr.EntityId.Low)) { return; } var architect = MapEditorMgr.GetOrCreateArchitectInfo(chr); Team.Add(chr.EntityId.Low, architect); architect.Editor = this; chr.CallPeriodically(CharacterUpdateDelayMillis, UpdateCallback); }
/// <summary>Called periodically on editing Characters</summary> private void UpdateCallback(WorldObject obj) { Character chr = (Character)obj; if (obj.Map != Map || !obj.IsInWorld) { Leave(chr); } else { EditorArchitectInfo architectInfo = MapEditorMgr.GetOrCreateArchitectInfo(chr); EditorFigurine target = chr.Target as EditorFigurine; if (architectInfo.CurrentTarget == target) { return; } EditorFigurine editorFigurine = target; architectInfo.CurrentTarget = editorFigurine; } }