struct DragEvent: Codable, Hashable { let kind: Kind let startLocation: Vec2 let location: Vec2 enum Kind: String, Codable, Hashable { case updated case ended } }