🐙

はじめてのOSS参加?

2020/12/31に公開

なにしたの

three.js editorのバグを発見したので Github から Pull request 送ってみました。
まだマージはされていません。(2020-12-31)

three.js editor とは

https://threejs.org/editor/
three.jsを使用した3Dデータ編集Webアプリです。
Progressive Web Apps なのでインストールして使うこともできます。

どんなバグ

特定の操作をすると、一部のオブジェクトで使える頂点を追加するボタンが効かなくなります。

  1. 上のメニューからAddLatheでオブジェクトを追加。

  2. Geometoryを選択。

  3. 一番下の頂点(この手順では11)の-をクリックして削除。

この操作以降、+ボタンを押しても頂点追加ができなくなります。

修正内容

配列要素に想定外のnullが含まれていることによるエラーだったので、開発者コンソールを見れば問題箇所が表示されていました。

( ˘ω˘).oO(なんでテストで発見されなかったんだろう?)

ソースで言うとthree.js/editor/js/libs/ui.three.jsの730行あたりです。

修正前
UIPoints2.addRow = function () {

	if ( this.pointsUI.length === 0 ) {

		this.pointsList.add( this.createPointRow( 0, 0 ) );

	} else {

		var point = this.pointsUI[ this.pointsUI.length - 1 ];

		this.pointsList.add( this.createPointRow( point.x.getValue(), point.y.getValue() ) );

	}

	this.update();

};
修正後
UIPoints2.addRow = function () {

	var x = 0, y = 0;

	for ( var i = this.pointsUI.length  - 1; i >= 0; i -- ) {

		var pointUI = this.pointsUI[ i ];

		if ( pointUI != null ) {

			x = pointUI.x.getValue();
			y = pointUI.y.getValue();
			break;

		}

	}

	this.pointsList.add( this.createPointRow( x, y ) );

	this.update();

};

そもそもthis.pointsUInullが含まれているのが悪いような気もするのですが、他のメソッドはnullを無視して処理するようになっていたので、nullの要素はそのままにしました。

Github自体最近使い始めたレベルなのでわからないことが多いのですが、やってみないとわからないのでおっかなびっくり Pull request してみました。
無事マージされたらいいな。

Discussion