/// <summary> /// 開始 /// </summary> public override void Enter() { base.Enter(); //活性化 adjuster.ActivateComponent(this); //選択ポリゴンの取得 selected = adjuster.GetSelected(); //表示ポップアップの取得 if (popup == null) { popup = (ColorEditPopup)editor.ui.popup.GetUI(POPUP_NAME); if (popup == null) { //結果的にPopupが取得できないなら非活性化 adjuster.DisactivateComponent(); return; } } //コールバックの設定 popup.colorEditor.onColorChanged.AddListener(OnColorChanged); //ポップアップの表示 editor.ui.popup.IndicateUI(POPUP_NAME); //編集する色を設定 popup.colorEditor.SetColor(selected.GetPolygonColor()); }
/// <summary> /// コンテントの追加 /// </summary> private void AddContent(PolyPartsObject polyObj) { HierarchyUIContent content = InstantiateContent(polyObj); //コンテントの追加 polyObjTable.Add(polyObj, content); }
/// <summary> /// ポリゴンオブジェクトの複製を作成する /// </summary> public PolyPartsObject InstantiateClone(PolyPartsObject polyObj, Vector2 point) { PolyPartsObject clone = polyObj.InstantiateClone(point); //初期化 InitializePolyObj(clone); return(clone); }
/// <summary> /// ポリゴンオブジェクトの削除 /// </summary> public void DeletePolyPartsObject(PolyPartsObject polyObj) { if (polyObjs.Remove(polyObj)) { //コールバック onPolyObjDeleted.Invoke(polyObj); //削除 Destroy(polyObj.gameObject); } }
/// <summary> /// コンテント内のポリゴンの頂点変更 /// </summary> private void PolyObjVertexChanged(PolyPartsObject polyObj) { if (!polyObjTable.ContainsKey(polyObj)) { return; } HierarchyUIContent content = polyObjTable[polyObj]; //コンテントのメッシュを再設定 content.meshImage.SetEasyMesh(polyObj.GetPolygonEasyMesh()); }
/// <summary> /// Adjusterの開始 /// </summary> public void Enter(PolyPartsObject polyObj) { //選択ポリゴンオブジェクトの設定 SetSelected(polyObj); //調整メニューの表示 editor.ui.sideMenu.IndicateUI(MENU_NAME); //選択以外を無効化 editor.database.DisablePolygons(polyObj); //登録してあるコールバックの設定変更 editor.database.onPolyObjClicked.RemoveListener(OnPolyObjClicked); }
/// <summary> /// コンテント内のポリゴンの色変更 /// </summary> private void PolyObjColorChanged(PolyPartsObject polyObj) { //Contentの取得 if (!polyObjTable.ContainsKey(polyObj)) { return; } HierarchyUIContent content = polyObjTable[polyObj]; //コンテントのメッシュの色を再設定 content.meshImage.SetColor(polyObj.GetPolygonColor()); }
/// <summary> /// コンテントの削除 /// </summary> private void DelteContent(PolyPartsObject polyObj) { if (!polyObjTable.ContainsKey(polyObj)) { return; } polyObjTable.Remove(polyObj); //コンテントの削除 HierarchyUIContent content = polyObjTable[polyObj]; Destroy(content.gameObject); }
/// <summary> /// ポリゴンオブジェクトの生成 /// </summary> public PolyPartsObject InstantiatePolyObj(List <Vector2> vertices) { PolyPartsObject polyObj = Instantiate <PolyPartsObject>(prefab); //transformなどの設定 polyObj.SetVertices(vertices); //初期化 InitializePolyObj(polyObj); return(polyObj); }
/// <summary> /// 開始 /// </summary> public override void Enter() { base.Enter(); //コンポーネントを活性化 adjuster.ActivateComponent(this); //選択ポリゴンの取得 selected = adjuster.GetSelected(); //コールバックの設定 selected.onDown.AddListener(OnDown); selected.onUp.AddListener(OnUp); active = true; }
/// <summary> /// Contentの生成 /// </summary> private HierarchyUIContent InstantiateContent(PolyPartsObject polyObj) { HierarchyUIContent content = Instantiate(prefab); content.SetPolyObj(polyObj); content.meshImage.SetEasyMesh(polyObj.GetPolygonEasyMesh()); //transformの設定 RectTransform rectTrans = (RectTransform)content.transform; rectTrans.SetParent(contentsParent, false); //上に追加 rectTrans.SetAsFirstSibling(); return(content); }
/// <summary> /// 開始 /// </summary> public override void Enter() { base.Enter(); //コンポーネントを活性化 adjuster.ActivateComponent(this); //選択オブジェクトの取得 selected = adjuster.GetSelected(); //スナップ polyLineEditor.supporter.Clear(); polyLineEditor.supporter.AddDefaultSnap(); polyLineEditor.supporter.Draw(); active = true; }
/// <summary> /// ポリゴンオブジェクトの初期化 /// </summary> private void InitializePolyObj(PolyPartsObject polyObj) { //親の設定 polyObj.transform.SetParent(transform); //追加 polyObjs.Add(polyObj); //コールバック設定 polyObj.onClick.AddListener(OnPolyObjClicked); polyObj.onVertexChanged.AddListener(OnPolyObjVertexChanged); polyObj.onColorChanged.AddListener(OnPolyObjColorChanged); //コールバック onPolyObjInstantiated.Invoke(polyObj); }
/// <summary> /// 開始 /// </summary> public override void Enter() { base.Enter(); //コンポーネントを活性化 adjuster.ActivateComponent(this); //選択ポリゴンの取得 selected = adjuster.GetSelected(); //選択ポリゴンの無効化 selected.Disable(); //ポリラインエディタの頂点調整モードを有効化 List <Vector2> vertices = selected.GetVertices(); polyLineEditor.EnableAdjuster(vertices, true); //コールバックの設定 polyLineEditor.onAdjusterExit.RemoveListener(OnAdjustEnd); polyLineEditor.onAdjusterExit.AddListener(OnAdjustEnd); }
/// <summary> /// 入力確認 /// </summary> private void InputChcek() { if (Input.GetMouseButtonDown(0)) { //座標確認 Vector2 point; if (polyLineEditor.GetMousePoint(out point)) { //スナップ確認 Vector2 snapPoint; if (polyLineEditor.supporter.Snap(point, out snapPoint)) { point = snapPoint; } //コピー PolyPartsObject polyObj = editor.database.InstantiateClone(selected, point); polyObj.Disable(); } } }
/// <summary> /// 選択ポリゴンオブジェクトの設定 /// </summary> private void SetSelected(PolyPartsObject selected) { this.selected = selected; }
/// <summary> /// ポリゴンオブジェクトの生成 /// </summary> private void OnPolyObjInstantiated(PolyPartsObject polyObj) { AddContent(polyObj); }
/// <summary> /// ポリゴンパーツのクリック(Adjuster起動時は呼ばれない) /// </summary> private void OnPolyObjClicked(PolyPartsObject polyObj) { Enter(polyObj); }
/// <summary> /// ポリゴンオブジェクトの頂点変更 /// </summary> private void OnPolyObjVertexChanged(PolyPartsObject polyObj) { onPolyObjVertexChanged.Invoke(polyObj); }
/// <summary> /// ポリゴンオブジェクトの色変更 /// </summary> private void OnPolyObjColorChanged(PolyPartsObject polyObj) { onPolyObjColorChanged.Invoke(polyObj); }
/// <summary> /// ポリゴンオブジェクトの設定 /// </summary> public void SetPolyObj(PolyPartsObject polyObj) { this.polyObj = polyObj; }
/// <summary> ///ポインタ押上 /// </summary> private void OnUp(PolyPartsObject polyObj) { EndControl(); }
/// <summary> /// ポインタ押下 /// </summary> private void OnDown(PolyPartsObject polyObj) { StartControl(); }
/// <summary> /// ポインタ押下 /// </summary> private void OnDown(PolyPartsObject polyObj) { StartDrag(); }
/// <summary> /// ポインタ押上 /// </summary> private void OnUp(PolyPartsObject polyObj) { EndDrag(); }
/// <summary> /// ポリゴンオブジェクトの色変更 /// </summary> private void OnPolyObjColorChanged(PolyPartsObject polyObj) { PolyObjColorChanged(polyObj); }
/// <summary> /// ポリゴンオブジェクトの頂点変更 /// </summary> private void OnPolyObjVertexChanged(PolyPartsObject polyObj) { PolyObjVertexChanged(polyObj); }
/// <summary> /// ポリゴンオブジェクトのクリック /// </summary> private void OnPolyObjClicked(PolyPartsObject polyObj) { onPolyObjClicked.Invoke(polyObj); }
/// <summary> /// ポリゴンオブジェクトの削除 /// </summary> private void OnPolyObjDeleted(PolyPartsObject polyObj) { DelteContent(polyObj); }
/// <summary> /// 指定したポリゴン以外を無効化する /// </summary> public void DisablePolygons(PolyPartsObject ignore) { DisablePolygons(); ignore.Enable(); }