DemoBots/Components/IntelligenceComponent.swift
/* |
Copyright (C) 2016 Apple Inc. All Rights Reserved. |
See LICENSE.txt for this sample’s licensing information |
Abstract: |
A `GKComponent` that provides a `GKStateMachine` for entities to use in determining their actions. |
*/ |
import SpriteKit |
import GameplayKit |
class IntelligenceComponent: GKComponent { |
// MARK: Properties |
let stateMachine: GKStateMachine |
let initialStateClass: AnyClass |
// MARK: Initializers |
init(states: [GKState]) { |
stateMachine = GKStateMachine(states: states) |
let firstState = states.first! |
initialStateClass = type(of: firstState) |
super.init() |
} |
required init?(coder aDecoder: NSCoder) { |
fatalError("init(coder:) has not been implemented") |
} |
// MARK: GKComponent Life Cycle |
override func update(deltaTime seconds: TimeInterval) { |
super.update(deltaTime: seconds) |
stateMachine.update(deltaTime: seconds) |
} |
// MARK: Actions |
func enterInitialState() { |
stateMachine.enter(initialStateClass) |
} |
} |
Copyright © 2016 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2016-09-13