コンポーネントを扱う
概要
Grimoire.jsではコードの再利用性を高めるための手段としてコンポーネントを定めています。これによりユーザーは構築したロジックを、異なるノードに容易に適用することができます。ここでいうコンポーネントとは、全てのノードの基礎となるものです。コンポーネントを組み合わせることにより、一つの特定の機能を持ったノードが作成されます。
学べること
- デフォルトコンポーネントとオプショナルコンポーネントについて
- オプショナルコンポーネントに関するGOMLの記述方法
デフォルトコンポーネントとオプショナルコンポーネント
Grimoire.jsのコンポーネントは、デフォルトコンポーネントとオプショナルコンポーネントの2種類に分かれます。
GOMLに記載される<mesh>
などのタグには、タグ名に応じて最初から複数のコンポーネントが付属しています(Transformコンポーネントなど)。これらのコンポーネントをデフォルトコンポーネントと呼びます。
これに対し、ユーザーがGOML等で後から追加したコンポーネントをオプショナルコンポーネントとしています。
オプショナルコンポーネントを追加する際には、そのコンポーネントが依存しているコンポーネントが存在する可能性があります。その際には依存しているコンポーネントも含めて、オプショナルコンポーネントとして明示的にノードに追加することが必要です。
オプショナルコンポーネントの追加
GOMLからノードにオプショナルコンポーネントを追加することが可能です。そのためには、ノードの子要素に追加するコンポーネントを明治する必要があります。そのための記述が以下の通りです。
<camera>
タグにマウス操作を可能にするコンポーネントを追加することを例に考えてみます。記法は以下の通りです。これを<camera>
タグの子要素に追加することで、コンポーネントの追加は終了です。
1 | <camera.components> |
MouseCameraControlはgrimoirejs-fundamentalがサポートしているタグです。ユーザはコンポーネントを作成してすることも可能です。詳しくはコンポーネントを作成してみるに記載しています。
対象のタグに、<対象のタグの名前.components>追加するコンポーネントのタグ</対象のタグの名前.components>
とする必要があります。
実際にコンポーネントが追加されていることを確認してみましょう。
次はコンポーネントの操作に関して、Javascriptから操作することを学びます。これにより、動的にコンポーネントの追加、変更が可能になります。