private void RemoveRunner() { if (_fireRunner != null) { _fireRunner.Dispose(); _fireRunner = null; } if (_fighter != null && _fighter.collideBody != null) { lock (_fighter.collideBody) { _fighter.collideBody.SetDirty(); } _fighter = null; } }
protected override void OnEnter() { _status = CompStatus.COMPLETE; object obj = machine.GetRuntimeData <object>(CpxState.TEMP_DATA); if (obj == null) { GlobalLogger.LogError("no setting data retrieved"); return; } _fighter = entity as IFightableEntity; if (_fighter == null) { return; } _fx = GetFireFx(obj); if (_fx == null) { return; } LuaTable tb = obj as LuaTable; Vector3 pos; if (tb != null && tb.TryGet("position", out pos)) { model.MoveTo(pos); } float orient; if (tb != null && tb.TryGet("orient", out orient)) { Debug.Log(string.Format("model.orient ={0}, data.orient ={1}", model.orientation, orient)); model.orientation = orient; } _status = CompStatus.RUNING; _fireRunner = new FxFireRunner(_fighter, _fx) { targetInfos = new FireFxInfo[0], targetPos = GetTargetPosition(tb) }; _fireRunner.completeEvent.AddListener(OnComplete); try { _fireRunner.Start(); } catch (Exception e) { GlobalLogger.LogError(e); _status = CompStatus.COMPLETE; } }