/// <summary> /// 向きを変更する /// </summary> public void ChengeDirection(MODELE_DIRECTION Direction) { //現在の座標を保存 GetModelLocation(); //候補リスト List <IfsLiplisModel> CandidateModelList = new List <IfsLiplisModel>(); //対象の向きのモデルを検索 foreach (var model in ModelList) { //左向き以外を候補リストに追加 if (model.Direction != (int)Direction) { CandidateModelList.Add(model); } } //空なら全対象 if (CandidateModelList.Count == 0) { CandidateModelList.AddRange(ModelList); } //シャッフルする CandidateModelList.Shuffle(); //アクティブモデルを変更 this.ActiveModel = CandidateModelList[0]; //モデルビジブル再設定 SetModelVisible(); }
/// <summary> /// ランダムに向きを変更する /// </summary> public void ChangeDirectionRandam() { //現在の座標を保存 GetModelLocation(); //選択モデル IfsLiplisModel selectModel = GetDirectionModel(this.Position); //選択名が空なら0番目を取得 if (selectModel == null) { selectModel = ModelList[0]; } //アクティブモデルを変更 this.ActiveModel = selectModel; //位置の復元 SetModelLocation(); //モデルビジブル再設定 SetModelVisible(); }
/// <summary> /// アクティブモデルをセットし、モデルを一つ表示する /// まずは正面をアクティブにする /// </summary> private void SetActiveModel() { //フロントモデルの検索 foreach (IfsLiplisModel model in ModelList) { //正面のモデルが見つかったら採用 if (model.Direction == (int)MODELE_DIRECTION.FRONT) { this.ActiveModel = model; break; } } //フロントモデルが見つからなければ1つ目をアクティブとする。 if (this.ActiveModel == null) { this.ActiveModel = ModelList[0]; } //ここでビジブル設定すると、初期にアクティブにしたモデル以外動かなくなる。 //ビジブル設定 InitVisible(); }