Unity, the game engine, uses a component system heavily. It uses C# and retrieves components using generic functions. And no, it doesn't force having a single instance of each component class:
http://swiftlang.ng.bluemix.net/#/repl/7be36f2d70a31da3b6ab09b7b89277a4463c23b40c28e1663e56c959a1f3eca8 Crashes the compiler, but that's how I would implement it. Sent from my iPad > On 08 Apr 2016, at 02:29, Jens Alfke via swift-users <swift-users@swift.org> > wrote: > > I’m not familiar with this design pattern, but it looks like Entity would > just contain an array of Component. That makes add() and remove() > straightforward. > > I’m not sure about your get() method. It sounds as though the implication is > that an entity could only contain a single component of a given class, but > that sounds awfully limiting. (If Limb is a Component, then a Spider entity > needs eight of them…) I also don’t believe that Swift is dynamic enough to be > able to interrogate the classes of components that way at runtime. You could > implement that at a higher level by adding a `type` property to > ComponentType, that returns some component-type enumeration or maybe a > string, and checking component types via that property. > > —Jens > _______________________________________________ > swift-users mailing list > swift-users@swift.org > https://lists.swift.org/mailman/listinfo/swift-users _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users