Merge branch 'release/0.12.2'
This commit is contained in:
commit
cd2d0caefd
|
|
@ -4,19 +4,15 @@ import PackageDescription
|
|||
let package = Package(
|
||||
name: "FirebladeECS",
|
||||
products: [
|
||||
.library(
|
||||
name: "FirebladeECS",
|
||||
targets: ["FirebladeECS"])
|
||||
.library(name: "FirebladeECS",
|
||||
targets: ["FirebladeECS"])
|
||||
],
|
||||
targets: [
|
||||
.target(
|
||||
name: "FirebladeECS",
|
||||
dependencies: []),
|
||||
.testTarget(
|
||||
name: "FirebladeECSTests",
|
||||
dependencies: ["FirebladeECS"]),
|
||||
.testTarget(
|
||||
name: "FirebladeECSPerformanceTests",
|
||||
dependencies: ["FirebladeECS"])
|
||||
]
|
||||
.target(name: "FirebladeECS"),
|
||||
.testTarget(name: "FirebladeECSTests",
|
||||
dependencies: ["FirebladeECS"]),
|
||||
.testTarget(name: "FirebladeECSPerformanceTests",
|
||||
dependencies: ["FirebladeECS"])
|
||||
],
|
||||
swiftLanguageVersions: [.v5]
|
||||
)
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ import PackageDescription
|
|||
let package = Package(
|
||||
name: "YourPackageName",
|
||||
dependencies: [
|
||||
.package(url: "https://github.com/fireblade-engine/ecs.git", from: "0.12.1")
|
||||
.package(url: "https://github.com/fireblade-engine/ecs.git", from: "0.12.2")
|
||||
],
|
||||
targets: [
|
||||
.target(
|
||||
|
|
|
|||
|
|
@ -31,4 +31,23 @@ extension Entity {
|
|||
let compC: C? = get(component: C.self)
|
||||
return (compA, compB, compC)
|
||||
}
|
||||
|
||||
@inlinable
|
||||
public subscript<C: Component, Value>(_ componentKeyPath: WritableKeyPath<C, Value>) -> Value? {
|
||||
nonmutating set {
|
||||
guard var comp = self.get(component: C.self),
|
||||
let value = newValue else {
|
||||
return
|
||||
}
|
||||
comp[keyPath: componentKeyPath] = value
|
||||
}
|
||||
get {
|
||||
self.get(component: C.self)?[keyPath: componentKeyPath]
|
||||
}
|
||||
}
|
||||
|
||||
@inlinable
|
||||
public subscript<C: Component>(_ componentType: C.Type) -> C? {
|
||||
self.get(component: componentType)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -81,6 +81,33 @@ class EntityTests: XCTestCase {
|
|||
|
||||
XCTAssertEqual(generator.count, 1)
|
||||
}
|
||||
|
||||
func testEntitySubscripts() {
|
||||
let nexus = Nexus()
|
||||
let pos = Position(x: 12, y: 45)
|
||||
let name = Name(name: "SomeName")
|
||||
let entity = nexus.createEntity(with: pos, name)
|
||||
|
||||
XCTAssertEqual(entity[\Position.x], 12)
|
||||
XCTAssertEqual(entity[\Position.y], 45)
|
||||
XCTAssertEqual(entity[\Name.name], "SomeName")
|
||||
|
||||
entity[\Position.x] = 67
|
||||
entity[\Position.y] = 89
|
||||
entity[\Name.name] = "AnotherName"
|
||||
|
||||
XCTAssertEqual(entity[\Position.x], 67)
|
||||
XCTAssertEqual(entity[\Position.y], 89)
|
||||
XCTAssertEqual(entity[\Name.name], "AnotherName")
|
||||
|
||||
entity[\Velocity.a] = 123
|
||||
XCTAssertNil(entity[\Velocity.a])
|
||||
|
||||
entity[Position.self]?.x = 1234
|
||||
XCTAssertEqual(entity[Position.self]?.x, 1234)
|
||||
XCTAssertNil(entity[Velocity.self]?.a)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extension Sequence {
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ extension EntityTests {
|
|||
("testEntityEquality", testEntityEquality),
|
||||
("testEntityIdentifierAndIndex", testEntityIdentifierAndIndex),
|
||||
("testEntityIdGenerator", testEntityIdGenerator),
|
||||
("testEntitySubscripts", testEntitySubscripts),
|
||||
("testRemoveAllComponentsFromEntity", testRemoveAllComponentsFromEntity)
|
||||
]
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue