VRエンジン作成日記

ひたすらVRエンジンを作っていきます

StatsをWebGLの画面に移動した

FPSを表示するStatsの画面をWebGLの中に移動した。今まで別のCanvasタグとしてHTML内に配置していたんだけど、そのうちUI全般をWebGL内で描画する仕組みが必要になるので、試しにStatsの画面を描いてみることにした。今のところコード的に無理矢理感があるので、整理していきたい。

他には、オブジェクトの位置等を変更した時に変更済みフラグがうまく設定されないケースがあったので修正したりしていた。

・関連するコミット

fix stats · hikipuro/tea.js@f54fbac · GitHub

 

Scriptを動的にロードできるようにした

Scriptを動的にロードできるようにした。簡単なJavaScriptファイルならドラッグで追加できるようになった。例えば次のようなファイルをオブジェクトにドラッグすると、X軸を中心に毎フレーム3度ずつ回転するようになる。

class Test {
    update() {
        this.rotate(3, 0, 0);
    }
}

最近のJavaScriptは構文にclass宣言が追加されたため、これはTypeScriptのコンパイラ等を通さなくてもJavaScriptとして実行できる。このままだとTea.jsのライブラリ内でコンポーネントとして認識されないため、ロード時にObject.setPrototypeOf()メソッドを使って、Tea.Scriptクラスから継承したかのように実装している。

・関連するコミット

add dynamic load script · hikipuro/tea.js@2b74f70 · GitHub

 

コンソール画面を追加した

コンソール画面を追加した。今のところ、console.log()で出力した内容を表示するだけのものだけど。consoleオブジェクトのlogメソッドの内容を自作メソッドに置き換えることで実現している。具体的には次のように書いている。

var log = console.log;
console.log = function (message) {
    // 自作の関数を呼び出す
    myConsoleLog(message);
    // もともとあったconsole.log()を呼び出す
    log(message);
}

 これを最初の方に書いておくと、それ以降の全てのconsole.log()呼び出しで自作の関数も呼び出されるようになる。

・関連するコミット

add console view · hikipuro/tea.js@055f2f2 · GitHub

 

シーンビューを追加した

シーンビューを追加した。今のところ、右クリックしながらWASDキーでシーン内を移動できるくらいの機能しかまだ入っていない。

しばらくスクリーンショットを貼っていなかったので、現状のものを貼ってみる。

f:id:hikipuro:20181024174122p:plain

・関連するコミット

add scene view · hikipuro/tea.js@b142f85 · GitHub

 

UIパーツにTabsを追加

タブで選択した内容を表示するUIパーツを追加した。画面に要素を追加していったら表示領域が狭くなってきたので、タブ表示用の機能が必要になった。

まだまだ細かい不具合が残っているので、少しずつ修正しようと思う。

・関連するコミット

add tabs ui · hikipuro/tea.js@66fe87a · GitHub

 

シーンを保存できるようにした

シーンを保存できるようにした。Electronのアプリケーションメニューに、シーンの新規作成、開く、保存の機能を追加して、それぞれ実際に動くようにした。まだ全ての機能は実装しきれていないけど、簡単なシーンであれば保存できるようになった。

・関連するコミット

add scene save/open functions · hikipuro/tea.js@8370724 · GitHub