public OneState GetProportionState() { if (((IReadOnlyList <OneState>) this.nextState).IsNullOrEmpty <OneState>()) { return(new OneState()); } float num1 = 0.0f; this.nextStateTemp.Clear(); this.nextStateTemp.AddRange((IEnumerable <OneState>) this.nextState); for (int index = 0; index < this.nextStateTemp.Count; ++index) { num1 += this.nextStateTemp[index].proportion; OneState oneState = this.nextStateTemp[index]; oneState.proportion = num1; this.nextStateTemp[index] = oneState; } float num2 = Random.Range(0.0f, num1); for (int index = 0; index < this.nextStateTemp.Count; ++index) { if ((double)num2 <= (double)this.nextStateTemp[index].proportion) { return(this.nextStateTemp[index]); } } return(new OneState()); }
public OneState GetNonOverlapState() { if (((IReadOnlyList <OneState>) this.nextState).IsNullOrEmpty <OneState>()) { return(new OneState()); } int index = Random.Range(0, this.Count); OneState oneState = this.nextState[index]; this.nextState.RemoveAt(index); return(oneState); }
public void AddNextState(OneState _state) { if (_state.state == AnimalState.None) { return; } OneState oneState = this.nextState.Find((Predicate <OneState>)(x => x.state == _state.state)); if (oneState.state == AnimalState.None) { this.nextState.Add(_state); } else { this.nextState[this.nextState.IndexOf(oneState)] = _state; } }
public void RemoveNextState(OneState _state) { this.nextState.RemoveAll((Predicate <OneState>)(x => x.Equal(_state))); }
protected bool SetCurrentState(OneState _state) { return(this.SetCurrentState(_state.state)); }