- Swift
- 2Dゲーム開発
- macOS
- iOS
Builder for SpriteKit Node
License: MIT License
where Node == XXNode というようになっている(XXNode はたとえば SKSpriteNode とか). Node: XXNode というように XXNode のサブクラスを対象とした方がいいかもしれない. こうすると, API 使用者が XXNode のサブクラス(カスタムクラス)に対して親ノード向けのモディファイアを使っても型が消去されないというメリットが得られる.
成功しました。
add(_ builder:) コマンドの実装
第一引数が processor で, 第二引数が sknode だが, 逆が正しいのでは?
addChild(_ node: Node, with processor: some ProcessorProtocol)
ドキュメントコメントが全くないので, 整備していく必要があります.
課題
Generator と Processor をビルダーパターンで別々にセットできるようにしたいです.
ノードを加工する手順をあらかじめ定義し、未加工のノードを定義された順で加工するオブジェクトを考えたい
全てはできないと思いますが, 現在の実装状況を確認するために利用してください.
Builder.T を Builder.P に変更しましたが、失敗でした。
モディファイアで SKNode.constraints
の設定ができると便利そうです。
難しいポイントは、SKConstraint によっては別の SKNode インスタンスとの関係性を宣言したい場合があることです。SKNodeBuilder では宣言的に SKNode を作成できるようにしたいので、ビルダー内で SKNode インスタンスを直接扱わなくてもいい API を考えましょう。
ライブラリの使用者が Builder のモディファイアを作れるようにしたい。いくつかのAPIを公開すれば extension で作成可能にはなるが、そうではなく、モディファイア作成のために新しくAPIを考えたい。
Range や Array を使って同じ Node を繰り返し配置できるようにしたい.
addChild メソッドの上位互換を想定している.
support/v1, support/v2 を終了したいと思います.
support/v3 は v4 リリース後しばらく継続します.
@NodeBuilder
実装時の Builder
に相当する Processor
はモディファイアにより型が変化するため, v1 ~ v3 当時のように使用することができない.
README.md, Wiki, Document comment を英語にする
型名がオブジェクトの性質に適していないと思われます。
代替案 : " Builder "
目的 : 循環参照が不可能な実装に変更すること
実装したい内容
README.md の内容が version 3 のままなので新しい API の内容に書き直す必要があります.
@NodeBuilder
の削除と代替初期化関数もモディファイアの一種と捉えることができる. 直接ノードを初期化しない API にするなら, 初期化もモディファイアと同じように実装するべきである.
#63 Linked modifier の実装にしてから, property wrapper がうまく機能しなくなった. このまま削除した状態にするのか, 色々検討してから決めたい.
現時点では, 改変後のノードが返るようになっています.
SKSpriteNode
, SKLabelNode
, SKShapeNode
とそのサブクラス向けの Generator を作成します.
default
というコンピューテッドプロパティを提案します。これは setGenerator
と setProcessor
を省略するメソッドになります。SKNode.init()
の generator がセットされた状態になります。
@discardableResult
はいらないかもしれません. 現在考案中の実装では, Builder から SKNode インスタンスを生成するには必ず node()
を実行する必要があります. また, 後から生成する場合も Builder インスタンスを変数等に保持するため, これらのメソッドの戻り値は必ず使用すると結論づけられます.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.