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

Reply via email to