amethyst 0.15.3

Data-oriented game engine written in Rust
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
# Change Log

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog][kc], and this project adheres to
[Semantic Versioning][sv].

[kc]: http://keepachangelog.com/
[sv]: http://semver.org/

## [Unreleased]

### Added

### Changed

### Fixed

## [0.15.3] - 2020-08-22

0.15.3 is a corrected version of 0.15.2, which was inadvertently published based off of an incorrect (and broken) commit.

## [0.15.2] - 2020-08-22 - YANKED

### Changed

- Internal CI improvements
- Recommend `cargo new pong` instead of deprecated `amethyst new pong` in the book tutorial ([#2448])

### Fixed

- Fix `Camera::screen_ray` bug introduced in 0.15.1 ([#2447])

[#2447]: https://github.com/amethyst/amethyst/pull/2447
[#2448]: https://github.com/amethyst/amethyst/pull/2448

## [0.15.1] - 2020-08-14

### Added

- New `optional_graphics` example demonstrating running an app with and without graphics ([#2282])
- Return a standalone `Dispatcher` from `GameDataBuilder::build_dispatcher`
  instead of using `DataInit` to build a `GameData` ([#2294])
- Added _User Interface_ chapter to The Book ([#2311], [#2346], [#2347], [#2368], [#2373])
- Support text alignment in `UiButton` and `UiLabel` ([#2316])
- You can now bind multiple inputs to a single axis via `Axis::Multiple` ([#2341])
- Support layer to be set in `UiLabelBuilder` ([#2358])
- Support line mode to be set in `UiLabelBuilder` and `UiButtonBuilder` ([#2358])
- `GltfPrefab` now also imports lights from a glTF source ([#2362])
- Added _Tiles_ chapter to The Book ([#2391])
- Added `SpriteRender::new` for cleaner instantiation ([#2395], [#2419])
- `amethyst_ui::UiButtonActionRetrigger` now derives `Default` and `Clone`. ([#2388])


### Changed

- Removed far plane from perspective projection ([#2118])
- Experimented with CI solutions, selected GitHub Actions. Fixed bors & stalebot. ([#2262], [#2380], [#2382], [#2410], [#2413], [#2414], [#2415])
- `amethyst_rendy::shape::Shape::upload` takes `&ShapeUpload`. ([#2264])
- Updated examples, with special attention to the pong example. Improved readmes, updated screenshots, colocated assets with example code ([#2248], [#2289], [#2305], [#2201], [#2310], [#2312], [#2349], [#2384], [#2396], [#2422])
- `UiText` now requires 2 more arguments `line_mode` and `align` ([#2358])
- Updated the style of The Book ([#2355])


### Fixed

- Fix tile example's `MapMovementSystem` to look for the correct components ([#2209])
- Fix issue where all `TileMap`s were rendered with the same transformation. ([#2210])
- Fix the bind method for `DynamicVertexBuffer::<B,u32>` ([#2221])
- Fix examples which would not run due to incorrect system order. ([#2213], [#2223], [#2239], [#2243], [#2267])
- Fix Texture asset debugging representation ([#2231])
- Fix fixed updates being tied to time_scale ([#2255])
- Fix incorrect assets being used when asset handles get reused ([#2258])
- Fix bug causing only one TileMap to be rendered ([#2296])
- Fix `UiButtonBuilder` so buttons it builds get rendered ([#2299])
- Fix `Tint` so its color is converted from sRGBA to linear RGBA so shader color is correct. Also update various documentation regarding linear RGBA ([#2314], [#2398])
- Fix text alignment in `UiText` ([#2316], [#2358])
- Fix release build path resolution on Windows ([#2337])
- Fix textures sometimes showing up incorrectly or not at all. ([#2339])

[#2118]: https://github.com/amethyst/amethyst/pull/2118
[#2201]: https://github.com/amethyst/amethyst/pull/2201
[#2209]: https://github.com/amethyst/amethyst/pull/2209
[#2210]: https://github.com/amethyst/amethyst/issues/2210
[#2213]: https://github.com/amethyst/amethyst/pull/2213
[#2221]: https://github.com/amethyst/amethyst/pull/2221
[#2223]: https://github.com/amethyst/amethyst/pull/2223
[#2231]: https://github.com/amethyst/amethyst/pull/2231
[#2239]: https://github.com/amethyst/amethyst/pull/2239
[#2243]: https://github.com/amethyst/amethyst/pull/2243
[#2248]: https://github.com/amethyst/amethyst/pull/2248
[#2254]: https://github.com/amethyst/amethyst/issues/2254
[#2255]: https://github.com/amethyst/amethyst/pull/2255
[#2258]: https://github.com/amethyst/amethyst/pull/2258
[#2262]: https://github.com/amethyst/amethyst/pull/2262
[#2264]: https://github.com/amethyst/amethyst/pull/2264
[#2267]: https://github.com/amethyst/amethyst/pull/2267
[#2282]: https://github.com/amethyst/amethyst/pull/2282
[#2289]: https://github.com/amethyst/amethyst/pull/2289
[#2294]: https://github.com/amethyst/amethyst/pull/2294
[#2296]: https://github.com/amethyst/amethyst/pull/2296
[#2299]: https://github.com/amethyst/amethyst/pull/2299
[#2305]: https://github.com/amethyst/amethyst/pull/2305
[#2310]: https://github.com/amethyst/amethyst/pull/2310
[#2311]: https://github.com/amethyst/amethyst/pull/2311
[#2312]: https://github.com/amethyst/amethyst/pull/2312
[#2314]: https://github.com/amethyst/amethyst/pull/2314
[#2316]: https://github.com/amethyst/amethyst/pull/2316
[#2337]: https://github.com/amethyst/amethyst/pull/2337
[#2339]: https://github.com/amethyst/amethyst/pull/2339
[#2341]: https://github.com/amethyst/amethyst/pull/2341
[#2346]: https://github.com/amethyst/amethyst/pull/2346
[#2347]: https://github.com/amethyst/amethyst/pull/2347
[#2349]: https://github.com/amethyst/amethyst/pull/2349
[#2355]: https://github.com/amethyst/amethyst/pull/2355
[#2358]: https://github.com/amethyst/amethyst/pull/2358
[#2362]: https://github.com/amethyst/amethyst/pull/2362
[#2368]: https://github.com/amethyst/amethyst/pull/2368
[#2373]: https://github.com/amethyst/amethyst/pull/2373
[#2380]: https://github.com/amethyst/amethyst/pull/2380
[#2382]: https://github.com/amethyst/amethyst/pull/2382
[#2384]: https://github.com/amethyst/amethyst/pull/2384
[#2388]: https://github.com/amethyst/amethyst/pull/2388
[#2391]: https://github.com/amethyst/amethyst/pull/2391
[#2395]: https://github.com/amethyst/amethyst/pull/2395
[#2398]: https://github.com/amethyst/amethyst/pull/2398
[#2410]: https://github.com/amethyst/amethyst/pull/2410
[#2413]: https://github.com/amethyst/amethyst/pull/2413
[#2414]: https://github.com/amethyst/amethyst/pull/2414
[#2415]: https://github.com/amethyst/amethyst/pull/2415
[#2419]: https://github.com/amethyst/amethyst/pull/2419
[#2422]: https://github.com/amethyst/amethyst/pull/2422

## [0.15.0] - 2020-03-24

### Added

- Support settings module log levels from a RON file. ([#2115])
- Export the `get_parent_pixel_size` functions from the ui module. ([[#2128])
- Export the `pixel_width` and `pixel_height` methods on the `UiTransform`. ([[#2128])
- Support UiEvents targeting multiple overlapping entities. ([#2138])
- `"storage-event-control"` feature enables the `specs` `"storage-event-control"` feature. ([#2152])

### Changed

- Re-export `TargetedEvent` from `amethyst_ui`. ([#2114])
- `amethyst::ui::Anchor` is now `Copy`. ([#2148])
- `amethyst::ui::LineMode` is now `Copy`. ([#2148])
- `UiButtonBuilder::build` takes in `&mut UiButtonBuilderResources`. ([#2148])
- ***Breaking:*** `UiBundle` depends on `InputBundle` being registered with the dispatcher first. ([#2151])
- Re-export `UiImageLoadPrefab` from `amethyst_ui`. ([#2169], [#2181])
- Don't remove `HiddenPropagate` components set by users manually. ([#2155])

### Removed

- `"nightly"` feature is removed, missing resource panic message includes type name on stable. ([#2136])

### Fixed

- Fixed an issue with `states_ui` example loading items incorrectly. ([#2117])
- Editable text fields now correctly highlight strings containing spaces. ([#2108], [#2143])
- Caret for editable text box is drawn in correct position. ([#2146], [#2149])
- Caret for editable text box is positioned correctly on first click. ([#2151])
- Editable text is correctly blurred / unfocused when clicking outside its bounds. ([#2091], [#2151])
- `amethyst_test` crate features now map 1-1 to `amethyst` features. ([#2153])

[#1917]: https://github.com/amethyst/amethyst/pull/1917
[#1988]: https://github.com/amethyst/amethyst/pull/1988
[#2091]: https://github.com/amethyst/amethyst/issues/2091
[#2108]: https://github.com/amethyst/amethyst/issues/2108
[#2114]: https://github.com/amethyst/amethyst/pull/2114
[#2115]: https://github.com/amethyst/amethyst/pull/2115
[#2117]: https://github.com/amethyst/amethyst/pull/2117
[#2128]: https://github.com/amethyst/amethyst/pull/2128
[#2136]: https://github.com/amethyst/amethyst/pull/2136
[#2138]: https://github.com/amethyst/amethyst/pull/2138
[#2143]: https://github.com/amethyst/amethyst/pull/2143
[#2146]: https://github.com/amethyst/amethyst/issues/2146
[#2148]: https://github.com/amethyst/amethyst/pull/2148
[#2149]: https://github.com/amethyst/amethyst/pull/2149
[#2151]: https://github.com/amethyst/amethyst/pull/2151
[#2152]: https://github.com/amethyst/amethyst/pull/2152
[#2153]: https://github.com/amethyst/amethyst/pull/2153
[#2155]: https://github.com/amethyst/amethyst/pull/2155
[#2169]: https://github.com/amethyst/amethyst/pull/2169
[#2181]: https://github.com/amethyst/amethyst/pull/2181


## [0.14.0] - 2020-01-30

### Added

- Implement `Debug` for `ProgressCounter` and `ProgressCounterTracker`. ([#1973])
- Added a custom render pass Example. ([#1904])
- Add an entry for `examples/tiles` to the examples readme. ([#1978])
- Added UI states/menu example. [#1986]
- Allow user to specify custom completion function in `amethyst_test::WaitForLoad`. ([#1984])
- Log warning when `amethyst_test::WaitForLoad` has not completed in 10 seconds. ([#1984])
- Derive `Copy` and `PartialEq` for `amethyst::renderer::resources::Tint`. ([#2033])
- Derive `Hash` for `amethyst::input::{Button, ControllerButton, ScrollDirection}`. ([#2041])
- Added Trans::Replace, Trans::NewStack, and Trans::Sequence to the State Machine Transitions. ([#2067],[#2071])
- Add rendy/gfx-backend log verbosity through configuration. ([#1652]) ([#2048])
- Add `Draggable` component that can be used with `UiTransform` to make widgets draggable.  ([#2080])

### Changed

- Use a premultiplied view_proj matrix in vertex shaders. ([#1964])
- amethyst_network completely rewritten to provide a new baseline with which to build. ([#1917])
- Cleaned up tiles example. Added rotation and translation tests, fixed raycast debug box. Added default zoom to PROJECT
  perspective projection since no one knew to zoom out. ([#1974])
- TileMaps to_tile and to_world now take an Option<&Transform> that allows them to work if the entire map in
 translated. ([#1987],[#1991])
- `AmethystApplication::with_fn` constraint relaxed from `Fn` to `FnOnce`. ([#1983])
- ScreenDimensions now consistently reports window size in physical pixels. ([#1988])
- `Config::load` now returns an error or failure rather than silently falling back to the default config. Same is true for the `from_config_file` methods on `RenderToWindow`, `WindowBundle`, and `WindowSystem` ([#1989])
- Adds `get` methods to the underlying net::transport resources ([#2005])
- Changed `SpriteSheetFormat::import_simple` to allow importing grid based `SpriteSheets` ([#2023])
  Migration Note: Rons need to wrap their content in either Grid() or List()
  ***Migration Note:*** Rons need to wrap their content in either `Grid()` or `List()`
- TileMap to_tile doesn't panic in debug mode. It instead return Result<Point<u32>,TileOutOfBounds>. ([#2020],[#2070])
- Added new Error options for `NetworkSimulationEvent`.
- Changed amethyst config directory from `$HOME/.amethyst` to `$HOME/.config/amethyst` ([#2079])
- Changed `world_to_screen` camera transformation to match inverse of the one in `screen_ray` ([#2057])
- `amethyst_input::Axis::Mouse` now only has a single radius value. One of the two values was guaranteed to be unused. ([#2099])
- Updated `rodio` from `0.9` to `0.10`. ([#2044])
- Updated `cpal` from `0.8` to `0.10`. ([#2044])

### Deprecated

- `Config::load_no_fallback`, use `Config::load` instead ([#1989])

### Removed

### Fixed

- Tilemap rotation was incorrect and not transposed. Fixed and uses component rotation. ([#1974])
- `Config` types no longer require a `Default` impl ([#1989])
- Fixed Incorrect path for sprite_camera_follow example ([#2004])
- Run `System::setup` for pausable systems' delegate. ([#2029])
- Fixed an incorrect dimensions being used in Tile Encoders, causing bad lookups in assymetric maps in any Z-level besides 0 ([#2017])
- Fix encoders dimensional cases and optimize storage space ([#2059])
- Fixed off by one issue in to_tile function ([#2103])
- Fix dragging UI widgets that have ScaleMode::Percent ([#2111])

### Security

[#1652]: https://github.com/amethyst/amethyst/issues/1652
[#1904]: https://github.com/amethyst/amethyst/pull/1904
[#1964]: https://github.com/amethyst/amethyst/pull/1964
[#1973]: https://github.com/amethyst/amethyst/pull/1973
[#1974]: https://github.com/amethyst/amethyst/pull/1974
[#1978]: https://github.com/amethyst/amethyst/pull/1978
[#1987]: https://github.com/amethyst/amethyst/issue/1987
[#1983]: https://github.com/amethyst/amethyst/pull/1983
[#1991]: https://github.com/amethyst/amethyst/pull/1991
[#1984]: https://github.com/amethyst/amethyst/pull/1984
[#1986]: https://github.com/amethyst/amethyst/pull/1986
[#1989]: https://github.com/amethyst/amethyst/pull/1989
[#2004]: https://github.com/amethyst/amethyst/pull/2004
[#2005]: https://github.com/amethyst/amethyst/pull/2005
[#2017]: https://github.com/amethyst/amethyst/pull/2017
[#2020]: https://github.com/amethyst/amethyst/issue/2020
[#2023]: https://github.com/amethyst/amethyst/pull/2023
[#2029]: https://github.com/amethyst/amethyst/pull/2029
[#2033]: https://github.com/amethyst/amethyst/pull/2033
[#2041]: https://github.com/amethyst/amethyst/pull/2041
[#2044]: https://github.com/amethyst/amethyst/pull/2044
[#2048]: https://github.com/amethyst/amethyst/pull/2048
[#2057]: https://github.com/amethyst/amethyst/issues/2057
[#2059]: https://github.com/amethyst/amethyst/pull/2059
[#2067]: https://github.com/amethyst/amethyst/issue/2067
[#2070]: https://github.com/amethyst/amethyst/pull/2070
[#2071]: https://github.com/amethyst/amethyst/pull/2071
[#2079]: https://github.com/amethyst/amethyst/pull/2079
[#2080]: https://github.com/amethyst/amethyst/pull/2080
[#2099]: https://github.com/amethyst/amethyst/issues/2099
[#2103]: https://github.com/amethyst/amethyst/pull/2103
[#2111]: https://github.com/amethyst/amethyst/pull/2111

## [0.13.3] - 2019-10-4

### Fixed

- Fixed a silent shader error causing amethyst_tiles not to work. ([#1968])

[#1968]: https://github.com/amethyst/amethyst/pull/1968

## [0.13.2] - 2019-10-4

### Fixed

- Fix fluent and unic-langid alignment ([#1966])

[#1966]: https://github.com/amethyst/amethyst/pull/1966

## [0.13.1] - 2019-10-3

### Added

- `FlatEncoder` added to amethyst_tiles for flat linear encoding which is optimized for space. ([#1950])
- `SystemDesc` derive no longer requires any imports. ([#1995])

### Changed

- Updated `syn`, `quote`, and `proc-macro2` to `1.0`. ([#1952])

### Fixed

- `TileMap` was not allocating enough space for to compensate for morton encoding alignment. This means that
  all tilemap allocation must occur on 2^n boundary aligned on all axis (or x-y axis for Morton2D) ([#1950])
- Add missing re-export for HideHierarchySystemDesc ([#1945])
- `TileArgs` POD had incorrect format for `tile_coordinate` argument, caused a crash on metal backend. ([#1957])

[#1945]: https://github.com/amethyst/amethyst/pull/1945
[#1950]: https://github.com/amethyst/amethyst/pull/1950
[#1952]: https://github.com/amethyst/amethyst/pull/1952
[#1957]: https://github.com/amethyst/amethyst/pull/1957
[#1995]: https://github.com/amethyst/amethyst/pull/1995

## [0.13.0] - 2019-09-25

### Major breaking changes

- Systems needing initialization with world resources must go through a `SystemDesc` intermediate builder. ([#1780])

### Added

- `SystemDesc` proc macro derive to simplify defining `SystemDesc`s. ([#1780])
- `UiButtonData` is now exported from `amethyst_ui` and can be used for custom widgets. ([#1859])
- Add an audio subchapter to the pong chapter. ([#1842])
- Add `DispatcherOperation` to store dispatcher build logic, which can be executed lazily. ([#1870])
- `AmethystApplication` takes in `SystemDesc`s through `with_system_desc`. ([#1882])
- `AmethystApplication::with_thread_local_desc` takes in `RunNowDesc`. ([#1882])
- Add `NineSlice` support to `UiImage`. ([#1896])
- `RenderingBundle` for full manual control of the rendering pipeline via a custom `GraphCreator`. ([#1839])
- `CameraOrtho::new` takes in `CameraOrthoWorldCoordinates`, which can be set to custom dimensions. ([#1916])
- `Camera::screen_ray` method added, returning an appropriate `Ray` structure ([#1918]).
- `amethyst_test`: `InMemorySource` and `WaitForLoad` helpers ([#1933]).
- Animations are available with `UiTransform`s. ([#1935])

### Changed

- All `-Builder` structs in amethyst_ui/prefab.rs are now called `-Data`. ([#1859])
- `AmethystApplication` takes in a `System` instead of a closure for `with_system`. ([#1882])
- `AmethystApplication::with_thread_local` constraint relaxed to `RunNow` (previously `System`). ([#1882])
- `SystemDesc` proc macro supports `#[system_desc(event_reader_id)]` to register event reader. ([#1883])
- `SystemDesc` proc macro supports `#[system_desc(flagged_storage_reader(Component))]`. ([#1886])
- Use `SystemDesc` derive to generate `SystemDesc` implementations for common case systems. ([#1887])
- `DispatcherOperation` stores system name and dependencies as `String`s. ([#1891])
- `TextureProcessor` renamed to `TextureProcessorSystem`. ([#1839])
- `MeshProcessor` renamed to `MeshProcessorSystem`. ([#1839])
- `AmethystApplication::with_setup` now takes in `FnOnce(&mut World) + Send + 'static`. ([#1912])
- `AmethystApplication::with_setup` runs the function before the dispatcher. ([#1912])
- `UiImage:PartialTexture` & `UiImage:Sprite` texture coordinates are correct. Clarified types. ([#1906],[#1919])
- `Camera::screen_to_world` renamed `Camera::screen_to_world_point` and its API has changed to a Point3 ([#1918]).
- 'amethyst_tiles' crate added supporting 2d and 3d tile map rendering with sprites. ([#1820])

### Fixed

- `RenderingBundle` is registered last in all examples. ([#1881])

[#1780]: https://github.com/amethyst/amethyst/pull/1780
[#1859]: https://github.com/amethyst/amethyst/pull/1859
[#1842]: https://github.com/amethyst/amethyst/pull/1842
[#1870]: https://github.com/amethyst/amethyst/pull/1870
[#1881]: https://github.com/amethyst/amethyst/pull/1881
[#1882]: https://github.com/amethyst/amethyst/pull/1882
[#1883]: https://github.com/amethyst/amethyst/pull/1883
[#1886]: https://github.com/amethyst/amethyst/pull/1886
[#1887]: https://github.com/amethyst/amethyst/pull/1887
[#1891]: https://github.com/amethyst/amethyst/pull/1891
[#1896]: https://github.com/amethyst/amethyst/pull/1896
[#1839]: https://github.com/amethyst/amethyst/pull/1839
[#1906]: https://github.com/amethyst/amethyst/issues/1906
[#1912]: https://github.com/amethyst/amethyst/pull/1912
[#1916]: https://github.com/amethyst/amethyst/pull/1916
[#1919]: https://github.com/amethyst/amethyst/pull/1919
[#1918]: https://github.com/amethyst/amethyst/pull/1918
[#1933]: https://github.com/amethyst/amethyst/pull/1933
[#1820]: https://github.com/amethyst/amethyst/pull/1820

## [0.12.0] - 2019-07-30

### Breaking changes

- `Float` newtype removed, moved back to `f32` primitive for all values ([#1747])
- `TextureProcessor` and `MeshProcessor` systems are now separated from `RenderingSystem` ([#1772])

### Added

- Add a feature flag `sentry` to disable the sentry dependency. ([#1804]) ([#1825])
- Fixes and renames regression from ([#1442]) added back `position_from_world` as `screen_to_world`. Also added
  `world_to_screen`. Also adds `Transform::copy_local_to_global()' for`debug_assertion` builds ([#1733])
- Add `add_rectangle`, `add_rotated_rectangle`, `add_box`, `add_rotated_box`, `add_circle`, `add_rotated_circle`,
  `add_cylinder`, `add_rotated_cylinder` and `add_sphere` functions to `DebugLinesComponent`
  and the corresponding draw functions to `DebugLines`, to draw simple shapes with debug lines. ([#1766])
- `InputEvent::AxisMoved` is sent upon button press / release. ([#1512], [#1797])
- `UiImage` is updated to allow for partial textures and sprites. ([#1809],[#1811])
- Added `RenderingBundle` with a rendering plugin system, making rendering setup easier ([#1772])
- Documentation for `Tint` component. ([#1802])

### Changed

- Splitted the `/resources` directory of amethyst projects into `/assets` and `/config`. ([#1806])
- Rename FPSCounter, FPSCounterBundle, FPSCounterSystem to FpsCounter, FpsCounterBundle, FpsCounterSystem. ([#1719])
- Add Tint component support for sprites. ([#1756])
- Remove remaining <N: RealField> type parameter on GameDataBuilder, add Debug derive to LoggerConfig ([#1758])
- Inverted mouse wheel scroll direction event. Now using winit's standard. ([#1767])
- Add `load_from_data_async` to Asset Loader. ([#1753])
- Add `SerializableFormat` marker trait which is now needed to be implemented for all the formats that are supposed to be serialized. ([#1720])
- Make the GltfSceneOptions field of GltfSceneFormat public. ([#1791])
- Updated fluent to version 0.6. ([#1800])
  `InputEvent<T>` now takes in the `BindingTypes` as a type parameter. ([#1797])
- Use `crossbeam-queue` crate directly. ([#1822])

### Fixed

- Fix stack overflow on serializing `Box<dyn Format<_>>`. ([#1720])
- Fix the steps for enabling the nightly flag in the pong tutorial. ([#1805])
- Fix animation unwrap on missing animated component. ([#1773])
- Fix tangent generation in procedural shapes. ([#1807])

[#1512]: https://github.com/amethyst/amethyst/issues/1512
[#1719]: https://github.com/amethyst/amethyst/pull/1719
[#1720]: https://github.com/amethyst/amethyst/pull/1720
[#1733]: https://github.com/amethyst/amethyst/pull/1733
[#1747]: https://github.com/amethyst/amethyst/pull/1747
[#1753]: https://github.com/amethyst/amethyst/pull/1753
[#1756]: https://github.com/amethyst/amethyst/pull/1756
[#1758]: https://github.com/amethyst/amethyst/pull/1758
[#1766]: https://github.com/amethyst/amethyst/pull/1766
[#1767]: https://github.com/amethyst/amethyst/pull/1719
[#1772]: https://github.com/amethyst/amethyst/pull/1772
[#1773]: https://github.com/amethyst/amethyst/pull/1773
[#1791]: https://github.com/amethyst/amethyst/pull/1791
[#1797]: https://github.com/amethyst/amethyst/pull/1797
[#1800]: https://github.com/amethyst/amethyst/pull/1800
[#1802]: https://github.com/amethyst/amethyst/pull/1802
[#1804]: https://github.com/amethyst/amethyst/pull/1804
[#1805]: https://github.com/amethyst/amethyst/pull/1805
[#1806]: https://github.com/amethyst/amethyst/pull/1806
[#1807]: https://github.com/amethyst/amethyst/pull/1807
[#1809]: https://github.com/amethyst/amethyst/issues/1809
[#1811]: https://github.com/amethyst/amethyst/pull/1811
[#1822]: https://github.com/amethyst/amethyst/pull/1822
[#1825]: https://github.com/amethyst/amethyst/pull/1825

## [0.11.0] - 2019-06

### Added

- Introduce `application_dir` utility ([#1213])
- Derive `Copy`, `PartialEq`, `Eq`, `Serialize`, `Deserialize` for `Flipped` component. ([#1237])
- A way to change the default `Source` using `set_default_source` and `with_default_source`. ([#1256])
- "How To" guides for using assets and defining custom assets. ([#1251])
- Explanation on how prefabs function in Amethyst. ([#1114])
- `amethyst_renderer::Rgba` is now a `Component` that changes the color and transparency of the entity
  it is attached to. ([#1282])
- `AutoFov` and `AutoFovSystem` to adjust horizontal FOV to screen aspect ratio. ([#1281])
- Add `icon` to `DisplayConfig` to set a window icon using a path to a file ([#1373])
- Added setting to control gfx_device_gl logging level separately, and set it to Warn by default. ([#1404])
- Add `loaded_icon` to `DisplayConfig` to set a window icon programatically ([#1405])
- Added optional feature gates which will reduce compilation times when used. ([#1412])
- Several passes got `with_transparency_settings` which changes the transparency settings for the pass. ([#1419])
- Add `SpriteRenderPrefab`. ([#1435])
- Add `ScreenSpace` component. Draws entities using the screen coordinates. ([#1424])
- Add `add_removal_to_entity` function. ([#1445])
- Add `position_from_screen` to `Camera`. Transforms position from screen space to camera space. ([#1442])
- Add `SpriteScenePrefab`. Allows load sprites from a grid and add them to the `SpriteRenderer`. ([#1469])
- Add `Widgets` resource. Allows keeping track of UI entities and their components and iterating over them. ([#1390])
- `AmethystApplication` takes in application name using `with_app_name(..)`. ([#1499])
- Add `NetEvent::Reliable` variant. When added to NetConnection, these events will eventually reach the target. ([#1513])
- "How To" guides for defining state-specific dispatchers. ([#1498])
- Adding support for AMETHYST_NUM_THREADS environment variable to control size of the threads pool used by thread_pool_builder.
- Add `Input` variant to `StateEvent`. ([#1478])
- Support type parameters in `EventReader` derive. ([#1478])
- Derive `Debug`, `PartialEq`, `Eq` for `Source`. ([#1591])
- Added `events` example which demonstrates working even reader and writer in action. ([#1538])
- Implement builder like functionality for `AnimationSet` and `AnimationControlSet` ([#1568])
- Add `get_mouse_button` and `is_mouse_button_down` utility functions to amethyst_input. ([#1582])
- Add `amethyst_input::Axis::MouseWheel` ([#1642])
- Add `amethyst_input::BindingError::MouseWheelAlreadyBound` ([#1642])
- Add `amethyst_input::InputHandler::send_frame_begin` ([#1642])
- Add `amethyst_input::InputHandler::mouse_wheel_value` ([#1642])
- Added `Float::from_f32` and `Float::from_f64` `const fn`s so `Float` can be used as `const`. ([#1687])
- Add `debug_lines_ortho` example. ([#1703])

### Changed

- `#[derive(PrefabData)]` now supports enums as well as structs
- Make `frame_limiter::do_sleep` calculate the amount of time to sleep instead of calling `sleep(0)` ([#1446])
- Make `application_root_dir` return a `Result<Path>` instead of a `String` ([#1213])
- Remove unnecessary texture coordinates offset in `Sprite::from_pixel_values` ([#1267])
- Changed `ActiveCamera` to have the `Option` inside. ([#1280])
- `AudioBundle::new()` no longer exists, as `AudioBundle` is now a unit type. It also no longer initializes the `DjSystem` ([#1356])
- Convert everything to use err-derive and amethyst_error ([#1365])
- Removed redundant code in `renderer.rs` ([#1375])
- Refactored audio initialization to be more bundle-centric ([#1388])
- Changed argument types of `exec_removal` to allow use of both Read and Write Storages. ([#1397])
- Changed default log level to Info. ([#1404])
- Remove unnecessary `mut` from `AnimationControlSet::has_animation` ([#1408])
- Moved amethyst*gltf from development workspace to be like the other amethyst*\* subcrates. ([#1411])
- Re-exported amethyst_gltf by amethyst as amethyst::gltf. ([#1411])
- `Default::default` now returns a pass with transparency enabled for all applicable passes. ([#1419])
- Several passes had a function named `with_transparency` changed to accept a boolean. ([#1419])
- `FrameRateLimitConfig` has a `new` constructor, and its fields are made public. ([#1436])
- Derive `Deserialize, Serialize` for `MaterialPrimitive` and `SpriteRenderPrimitive`, remove
  extra bounds from `AnimatablePrefab` and `AnimationSetPrefab` ([#1435])
- Renamed `amethyst_core::specs` to `amethyst_core::ecs` and `amethyst_core::nalgebra` to `amethyst_core::math`. ([#1410])
- Simplified some of the conditionals in the Pong tutorial. ([#1439])
- Changed the names of many Transform functions to better reflect their actual function and reduce potential semantic confusion ([#1451])
- `ProgressCounter#num_loading()` no longer includes failed assets. ([#1452])
- `SpriteSheetFormat` field renamed from `spritesheet_*` to `texture_*`. ([#1469])
- Add new `keep_aspect_ratio` field to `Stretch::XY`. ([#1480])
- Renamed `Text` UI Prefab to `Label` in preparation for full widget integration in prefabs. ([#1390])
- `amethyst_test` includes the application name of a failing test. ([#1499])
- `amethyst_test` returns the panic message of a failed execution. ([#1499])
- Rename `NetEvent::Custom` variant to `NetEvent::Unreliable`. ([#1513])
- Updated laminar to 0.2.0. ([#1502])
- Large binary files in examples are now tracked with `git-lfs`. ([#1509])
- Allowed the user to arrange with laminar. ([#1523])
- Removed `NetEvent::Custom` and added `NetEvent::Packet(NetPacket)` ([#1523])
- Fixed update is no longer frame rate dependent ([#1516])
- Display the syntax error when failing to parse sprite sheets ([#1526])
- Added generic parameter type to `Transform` to configure floating point precision (then removed). ([#1334]) ([#1584])
- `NetConnection` is automatically created when client starts sends data to server. ([#1539])
- User will receive `NetEvent::Connected` on new connection and `NetEvent::Disconnected` on disconnect. ([#1539])
- Added a `pivot` field to `UiTransform`. ([#1571])
- Fix fly_camera example initial camera and cube position. ([#1582])
- Add to fly_camera example code to release and capture back mouse input, and to show and hide cursor. ([#1582])
- Updated `rodio` to `0.9`. ([#1683])

#### Rendy support

- Brand new way to define rendering pipelines.
- OpenGL support temporarily dropped, Vulkan and Metal support added.
- Normalized texel coordinates are now in Vulkan convention (top-left 0.0, bottom-right 1.0), mirrored vertically compared to old one.
- World space is now Y-up consistently for all projections (2D and 3D).
- `Format` type no longer has associated `Options` and is now object-safe. It is expected to carry required options itself.
- `Format` now supports tag-based deserialization, it is no longer required to provide specific format to prefab type.
- Combined input axis/action generics into single type.
- `Material` is now an asset. Must be turned into handle before putting on an entity.
- Removed `Flipped` component. Use `flip_horizontal` and `flip_vertical` sprite property instead.
- Added [Rendy migration guide][rendy_migration]. ([#1626])

### Removed

- Removed all `NetEvent's` because they were not used. ([#1539])
- Removed filter logic, because it didn't do anything, will be added back in a later version (NetFilter, FilterConnected). ([#1539])

### Fixed

- Optimize loading of wavefront obj mesh assets by getting rid of unnecessary allocations. ([#1454])
- Fixed the "json" feature for amethyst_assets. ([#1302])
- Fixed default system font loading to accept uppercase extension ("TTF"). ([#1328])
- Set width and height of Pong Paddles ([#1363])
- Fix omission in `PosNormTangTex` documentation. ([#1371])
- Fix division by zero in vertex data building ([#1481])
- Fix tuple index generation on `PrefabData` and `EventReader` proc macros. ([#1501])
- Avoid segmentation fault on Windows when using `AudioBundle` in `amethyst_test`. ([#1595], [#1599])

[rendy_migration]: https://book.amethyst.rs/master/appendices/b_migration_notes/rendy_migration.html
[#1114]: https://github.com/amethyst/amethyst/pull/1114
[#1213]: https://github.com/amethyst/amethyst/pull/1213
[#1237]: https://github.com/amethyst/amethyst/pull/1237
[#1251]: https://github.com/amethyst/amethyst/pull/1251
[#1256]: https://github.com/amethyst/amethyst/pull/1256
[#1267]: https://github.com/amethyst/amethyst/pull/1267
[#1280]: https://github.com/amethyst/amethyst/pull/1280
[#1282]: https://github.com/amethyst/amethyst/pull/1282
[#1281]: https://github.com/amethyst/amethyst/pull/1281
[#1302]: https://github.com/amethyst/amethyst/pull/1302
[#1328]: https://github.com/amethyst/amethyst/pull/1328
[#1334]: https://github.com/amethyst/amethyst/pull/1334
[#1356]: https://github.com/amethyst/amethyst/pull/1356
[#1363]: https://github.com/amethyst/amethyst/pull/1363
[#1365]: https://github.com/amethyst/amethyst/pull/1365
[#1371]: https://github.com/amethyst/amethyst/pull/1371
[#1373]: https://github.com/amethyst/amethyst/pull/1373
[#1375]: https://github.com/amethyst/amethyst/pull/1375
[#1388]: https://github.com/amethyst/amethyst/pull/1388
[#1390]: https://github.com/amethyst/amethyst/pull/1390
[#1397]: https://github.com/amethyst/amethyst/pull/1397
[#1404]: https://github.com/amethyst/amethyst/pull/1404
[#1408]: https://github.com/amethyst/amethyst/pull/1408
[#1405]: https://github.com/amethyst/amethyst/pull/1405
[#1411]: https://github.com/amethyst/amethyst/pull/1411
[#1412]: https://github.com/amethyst/amethyst/pull/1412
[#1419]: https://github.com/amethyst/amethyst/pull/1419
[#1424]: https://github.com/amethyst/amethyst/pull/1424
[#1435]: https://github.com/amethyst/amethyst/pull/1435
[#1436]: https://github.com/amethyst/amethyst/pull/1436
[#1410]: https://github.com/amethyst/amethyst/pull/1410
[#1439]: https://github.com/amethyst/amethyst/pull/1439
[#1445]: https://github.com/amethyst/amethyst/pull/1445
[#1446]: https://github.com/amethyst/amethyst/pull/1446
[#1451]: https://github.com/amethyst/amethyst/pull/1451
[#1452]: https://github.com/amethyst/amethyst/pull/1452
[#1454]: https://github.com/amethyst/amethyst/pull/1454
[#1442]: https://github.com/amethyst/amethyst/pull/1442
[#1469]: https://github.com/amethyst/amethyst/pull/1469
[#1478]: https://github.com/amethyst/amethyst/pull/1478
[#1481]: https://github.com/amethyst/amethyst/pull/1481
[#1480]: https://github.com/amethyst/amethyst/pull/1480
[#1498]: https://github.com/amethyst/amethyst/pull/1498
[#1499]: https://github.com/amethyst/amethyst/pull/1499
[#1501]: https://github.com/amethyst/amethyst/pull/1501
[#1502]: https://github.com/amethyst/amethyst/pull/1515
[#1513]: https://github.com/amethyst/amethyst/pull/1513
[#1509]: https://github.com/amethyst/amethyst/pull/1509
[#1523]: https://github.com/amethyst/amethyst/pull/1523
[#1524]: https://github.com/amethyst/amethyst/pull/1524
[#1526]: https://github.com/amethyst/amethyst/pull/1526
[#1538]: https://github.com/amethyst/amethyst/pull/1538
[#1539]: https://github.com/amethyst/amethyst/pull/1543
[#1568]: https://github.com/amethyst/amethyst/pull/1568
[#1571]: https://github.com/amethyst/amethyst/pull/1571
[#1584]: https://github.com/amethyst/amethyst/pull/1584
[#1591]: https://github.com/amethyst/amethyst/pull/1591
[#1582]: https://github.com/amethyst/amethyst/pull/1582
[#1595]: https://github.com/amethyst/amethyst/issues/1595
[#1599]: https://github.com/amethyst/amethyst/pull/1599
[#1626]: https://github.com/amethyst/amethyst/pull/1626
[#1642]: https://github.com/amethyst/amethyst/pull/1642
[#1683]: https://github.com/amethyst/amethyst/pull/1683
[#1687]: https://github.com/amethyst/amethyst/pull/1687
[#1703]: https://github.com/amethyst/amethyst/pull/1703

## [0.10.0] - 2018-12

### Added

- Derive `PrefabData` for `CameraOrtho` component ([#1188])
- Partially migrate the project to Rust 2018. Full migration will be completed at some point after 2019-01-31 ([#1098])
- `SystemExt::pausable` for better ergonomics when pausing systems for specific states ([#1146]).
- `amethyst_test` test framework for ergonomic testing of Amethyst applications ([#1000])
- combinations of buttons triggering actions ([#1043])
- `UiPrefab` field `hidden: bool` to hide entities ([#1051])
- `PrefabData` can now be derived for many situations, see the book for more information ([#1035])
- Support for DirectionalLight and SpotLight in PBM pass. ([#1074], [#1081])
- `UiWidget` variant `Custom` for custom composited widgets ([#1112])
- `AssetLoaderSystemData` abstracts resources needed from `World` to do asset loading ([#1090])
- `amethyst_ui::get_default_font` supports loading system font from Path. ([#1108])
- Added render utilities to easily create `Material` and `Handle<Texture>`. ([#1126])
- Added `Callback` and `CallbackQueue` for use in asynchronous contexts. ([#1125])
- Added Trans event queue. Used to trigger state transitions from systems. Also used to trigger multiple state transitions at once. (For example, to `Trans::Pop` two states.) ([#1069])
- `sprite_camera_follow` example showing how to use a Camera that has a sprite Parent ([#1099])
- Added capabilities for the `DrawFlat2D` pass to draw `TextureHandle`s by themselves. Also added a simple example for this. ([#1153])
- Added a `Flipped` component which allows flipping sprites or images horizontally and vertically. ([#1153])
- Added transform constructor function `Transform::new()`. ([#1187])
- Implement generic `EventRetriggerSystem`, which enables dispatching new events as a reaction to other events ([#1189])

### Changed

- Minimum Rust version is now `1.31.0` &ndash; Rust 2018. ([#1224])
- `Transform::look_at` renamed to `Transform::face_towards` and behavior fixed. ([#1142])
- `Material` animations now directly use `Handle<Texture>` instead of using indirection. ([#1089])
- `SpriteRenderPrimitive::SpriteSheet` now takes `Handle<SpriteSheet>` instead of a `u64` ID. ([#1089])
- `nalgebra` is now the math library used by the engine. ([#1066])
- The `amethyst::renderer::Projection::orthographic` function has had its parameter order changed to match that of `nalgebra` ([#1066])
- `SpriteSheet` now use `TextureHandle` directly instead of a `u64` ID coupled with `MaterialTextureSet`. ([#1117])
- Updated `specs` to `0.14` and `specs-hierarchy` to `0.3`. ([#1122])
- Updated `winit` to `0.18` (see [Winit's changelog][winit_018]). ([#1131])
- Updated `glutin` to `0.19` (see [Glutin's changelog][glutin_019]). ([#1131])
- Renamed the `DrawSprite` pass to `DrawFlat2D` as it now handles both sprites and images without spritesheets. ([#1153])
- `BasicScenePrefab` deserialization now returns an error on invalid fields. ([#1164])
- Reordered arguments for `Transform::set_rotation_euler` to match nalgebra's Euler angles. ([#1052])
- Remove lifetimes from `SimpleState` ([#1198])
- Button interactions are now handled through an `EventRetriggerSystem`, specifically hover/click sounds and image/color changes ([#1189])

### Removed

- `SpriteSheetSet` is removed as it is no longer needed. ([#1089])
- `MaterialTextureSet` is removed as it is no longer needed. ([#1117])
- `amethyst::core::Orientation` has been removed because of limited use. ([#1066])
- `TimedDestroySystem` has been split into `DestroyAtTimeSystem` and `DestroyInTimeSystem`. ([#1129])
- Reverted [MacOS OpenGL workaround][#972] in favor of the upstream fix in `glutin`. ([#1184])
- `OnUiActionImage` and `OnUiActionSound` have been removed as they now work through `EventRetrigger`s ([#1189])

### Fixed

- `SpriteSheetFormat` converts pixel coordinates to texture coordinates on load. ([#1181])

[#1146]: https://github.com/amethyst/amethyst/pull/1146
[#1144]: https://github.com/amethyst/amethyst/pull/1144
[#1000]: https://github.com/amethyst/amethyst/pull/1000
[#1043]: https://github.com/amethyst/amethyst/pull/1043
[#1051]: https://github.com/amethyst/amethyst/pull/1051
[#1035]: https://github.com/amethyst/amethyst/pull/1035
[#1069]: https://github.com/amethyst/amethyst/pull/1069
[#1074]: https://github.com/amethyst/amethyst/pull/1074
[#1081]: https://github.com/amethyst/amethyst/pull/1081
[#1090]: https://github.com/amethyst/amethyst/pull/1090
[#1112]: https://github.com/amethyst/amethyst/pull/1112
[#1089]: https://github.com/amethyst/amethyst/pull/1089
[#1098]: https://github.com/amethyst/amethyst/pull/1098
[#1099]: https://github.com/amethyst/amethyst/pull/1099
[#1108]: https://github.com/amethyst/amethyst/pull/1108
[#1126]: https://github.com/amethyst/amethyst/pull/1126
[#1125]: https://github.com/amethyst/amethyst/pull/1125
[#1066]: https://github.com/amethyst/amethyst/pull/1066
[#1117]: https://github.com/amethyst/amethyst/pull/1117
[#1122]: https://github.com/amethyst/amethyst/pull/1122
[#1129]: https://github.com/amethyst/amethyst/pull/1129
[#1131]: https://github.com/amethyst/amethyst/pull/1131
[#1153]: https://github.com/amethyst/amethyst/pull/1153
[#1164]: https://github.com/amethyst/amethyst/pull/1164
[#1142]: https://github.com/amethyst/amethyst/pull/1142
[#1052]: https://github.com/amethyst/amethyst/pull/1052
[#1181]: https://github.com/amethyst/amethyst/pull/1181
[#1184]: https://github.com/amethyst/amethyst/pull/1184
[#1187]: https://github.com/amethyst/amethyst/pull/1187
[#1188]: https://github.com/amethyst/amethyst/pull/1188
[#1198]: https://github.com/amethyst/amethyst/pull/1198
[#1224]: https://github.com/amethyst/amethyst/pull/1224
[#1189]: https://github.com/amethyst/amethyst/pull/1189
[winit_018]: https://github.com/tomaka/winit/blob/v0.18.0/CHANGELOG.md#version-0180-2018-11-07
[glutin_019]: https://github.com/tomaka/glutin/blob/master/CHANGELOG.md#version-0190-2018-11-09

## [0.9.0] - 2018-10

### Added

- Added base networking implementation and the `amethyst_network` crate. ([#969])
- Support for debug lines using `DebugLines` pass, and `DebugLines` component or resource. ([#917], [#957])
- Added JsonFormat ([#950]).
- `SpriteRender` pass to draw sprites without using `Material` and `Mesh`. ([#829], [#830])
- Sprite animation uses the `SpriteRenderChannel`. ([#829], [#830])
- State::handle_event can now handle multiple types of events. ([#887])
- Added Named Component. ([#879])([#896])
- Support for progressive jpeg loading. ([#877])
- New `application_root_dir()` function in `amethyst_utils`. ([#831])
- Load node names for glTF prefabs. ([#905])
- Added automatic camera matrix resizing to allow clean screen resizes. ([#920])
- Added the Removal component to facilitate manual entity removal and scene cleaning. ([#920])
- Added DestroyAtTime and DestroyInTime components to easily destroy entities. ([#920])
- Support for loading TGA images. ([#934])
- GltfPrefab adds MeshData as a component on loaded entities. This is not configurable until the Prefab rework. ([#946])
- Added implementation of From<Vector3<f32>> for Transform which creates a Transform using Vector3 as the translation vector. ([#946])
- New vertices() method on MeshCreator trait. ([#946])
- Support for text alignment (align left, center, right). ([#965])
- Support for multiline text. ([#965])
- Added custom aspect ratio to OrthoCamera. ([#983])
- Added AntiStorage documentation to the book. ([#997])
- You can now stop the rotation of the FreeRotationSystem by setting HideCursor.hide value to false. ([#997])
- Support for logging to file, toggle for logging to stdout. ([#976], [#994])
- Added a `Hidden` Component, that hides a single entity, and a HideHierarchySystem that toggles `Hidden` on all children when used. ([#1001])
- Documentation for drawing sprites. ([#971])
- Added `shadow_update()` and `shadow_fixed_update()` to the `State` trait. ([#1006])
- Added configurable width for debug lines. ([#1016])
- Added `TextureMetadata::srgb_scale()` for default texture metadata with nearest filter. ([#1023])
- Added motivation to use Amethyst over gluing the building blocks yourself in the book. ([#1057])
- Added `Config::load_bytes` for reading configuration from raw bytes. ([#1067])

### Changed

- Sprites contain their dimensions and offsets to render them with the right size and desired position. ([#829], [#830])
- Texture coordinates for sprites are 1.0 at the top of the texture and 0.0 at the bottom. ([#829], [#830])
- Made get_camera public. ([#878])
- Simplified creating states with SimpleState and EmptyState. ([#887])
- Updated ProgressCounter to show loading errors. ([#892])
- Replaced the `imagefmt` crate with `image`. ([#877])
- Optimize Sprite rendering via batching. ([#902])
- Derive `Debug` and `PartialEq` for `amethyst_input::Axis`. ([#903], [#904])
- Updated `winit` to `0.17` (see [Winit's changelog][winit_017]). ([#906])
- Updated `glutin` to `0.18` (see [Glutin's changelog][glutin_018]). ([#906])
- Updated `gfx_window_glutin` to `0.26`. ([#906])
- Updated `hetseq` to `0.2`. ([#906])
- Removed unwraps from StateMachine ([#940])
- Renamed ArcBallMovementSystem to ArcBallRotationSystem. ([#946])
- Moved the ArcBallMovementSystem::get_axis method to amethyst_input/src/utils: get_input_axis_simple ([#946])
- Ui Y axis is now from bottom to top. ([#946])
- Fixed issue with global anchors not actually aligning ui elements and containers properly. ([#946])
- Fixed issue with ui events not triggering at times. ([#946])
- Reduced the complexity of the UiPass and associated shaders. ([#946])
- Added comments to UiPass and shaders explaining what is going on. ([#946])
- The z in UiTransformBuilder now defaults to 1 instead of 0, allowing to skip defining the z in the ui prefabs. ([#946])
- Added comments to ui prefab. ([#946])
- Summarized all `use amethyst::` statements to allow collapsing in IDE's. ([#974])
- `Application` now uses `EventReader`s to determine what events to send to the `State`s, more information in the `State`
  book chapter ([#996])
- Breaking: Refactor `TextureMetadata` so filter method and clamping can be configured more easily ([#981])
- Renamed `PrefabData` functions to be easier to understand ([#1008])

### Removed

- `LMenu` and `RMenu` key codes, following the `winit` update. ([#906])

### Fixed

- Material ids in GLTF loader caused multiple GLTF files to get incorrect materials applied. ([#915])
- Fix render gamma for most textures. ([#868])
- Joint entities can only be part of a single skin: Materials are not swapped anymore. ([#933])
- Fixed regression in sprite positioning after batching. ([#929])
- Now loading default fonts from the system for UiButton ([#964])
- Fixed single frame animation ([#1015])
- Improved compatibility with older drivers ([#1012])
- Forgotten `channel` field on `examples/ui` prefab ([#1024])
- `AssetPrefab` loaded files at an incorrect time ([#1020])
- Removed unreachable code in `TexturePrefab` ([#1020])
- Fix OpenGL not rendering on window creation due to `glutin` bug ([#972])
- Fix debug lines panic when no lines are rendered ([#1049])

[#829]: https://github.com/amethyst/amethyst/issues/829
[#830]: https://github.com/amethyst/amethyst/pull/830
[#879]: https://github.com/amethyst/amethyst/pull/879
[#878]: https://github.com/amethyst/amethyst/pull/878
[#887]: https://github.com/amethyst/amethyst/pull/887
[#892]: https://github.com/amethyst/amethyst/pull/892
[#877]: https://github.com/amethyst/amethyst/pull/877
[#878]: https://github.com/amethyst/amethyst/pull/878
[#896]: https://github.com/amethyst/amethyst/pull/896
[#831]: https://github.com/amethyst/amethyst/pull/831
[#902]: https://github.com/amethyst/amethyst/pull/902
[#905]: https://github.com/amethyst/amethyst/pull/905
[#920]: https://github.com/amethyst/amethyst/pull/920
[#903]: https://github.com/amethyst/amethyst/issues/903
[#904]: https://github.com/amethyst/amethyst/pull/904
[#906]: https://github.com/amethyst/amethyst/pull/906
[#915]: https://github.com/amethyst/amethyst/pull/915
[#868]: https://github.com/amethyst/amethyst/pull/868
[#917]: https://github.com/amethyst/amethyst/issues/917
[#933]: https://github.com/amethyst/amethyst/pull/933
[#929]: https://github.com/amethyst/amethyst/pull/929
[#934]: https://github.com/amethyst/amethyst/pull/934
[#940]: https://github.com/amethyst/amethyst/pull/940
[#946]: https://github.com/amethyst/amethyst/pull/946
[#950]: https://github.com/amethyst/amethyst/pull/950
[#957]: https://github.com/amethyst/amethyst/pull/957
[#964]: https://github.com/amethyst/amethyst/pull/964
[#965]: https://github.com/amethyst/amethyst/pull/965
[#969]: https://github.com/amethyst/amethyst/pull/969
[#983]: https://github.com/amethyst/amethyst/pull/983
[#971]: https://github.com/amethyst/amethyst/pull/971
[#972]: https://github.com/amethyst/amethyst/issue/972
[#974]: https://github.com/amethyst/amethyst/pull/974
[#976]: https://github.com/amethyst/amethyst/pull/976
[#981]: https://github.com/amethyst/amethyst/pull/981
[#994]: https://github.com/amethyst/amethyst/pull/994
[#996]: https://github.com/amethyst/amethyst/pull/996
[#997]: https://github.com/amethyst/amethyst/pull/997
[#1001]: https://github.com/amethyst/amethyst/pull/1001
[#1006]: https://github.com/amethyst/amethyst/pull/1006
[#1008]: https://github.com/amethyst/amethyst/pull/1008
[#1012]: https://github.com/amethyst/amethyst/pull/1012
[#1015]: https://github.com/amethyst/amethyst/pull/1015
[#1016]: https://github.com/amethyst/amethyst/pull/1016
[#1024]: https://github.com/amethyst/amethyst/pull/1024
[#1020]: https://github.com/amethyst/amethyst/pull/1020
[#1023]: https://github.com/amethyst/amethyst/pull/1023
[#1057]: https://github.com/amethyst/amethyst/pull/1057
[#1049]: https://github.com/amethyst/amethyst/pull/1049
[#1067]: https://github.com/amethyst/amethyst/pull/1067
[winit_017]: https://github.com/tomaka/winit/blob/master/CHANGELOG.md#version-0172-2018-08-19
[glutin_018]: https://github.com/tomaka/glutin/blob/master/CHANGELOG.md#version-0180-2018-08-03

## [0.8.0] - 2018-08

### Added

- UI `ScaleMode` is now functional, permitting percentage based `UiTransform`s. ([#774])
- Add serde trait derives to many core components ([#760])
- Add a generic asset `Format` for `ron` files ([#760])
- Improve error handling for asset loading ([#773])
- Add bundle for the arc ball camera ([#770])
- Add utility functions for dealing with common input ([#759])
- Add alpha cutoff support to the PBR shader ([#756])
- Basic renderer setup helper function ([#771])
- Shape mesh generators ([#777])
- Derive `PartialEq` for `SpriteSheet` ([#789])
- Add core support for Prefabs ([#716])
- Add shape prefab support ([#785])
- Specialised UI prefab format ([#786])
- Add generation of normals/tangents in GLTF ([#784])
- Localisation using FTL files and the fluent-rs library ([#663])
- Add basic scene prefab ([#791])
- Improve ergonomics of examples ([#793])
- Beginner-friendly utilities for sprite rendering ([#804])
- Derive `PartialEq` for `MaterialPrimitive` ([#809])
- Make `with_bindings_from_file` return a Result ([#811])
- Logger initialization is now optional and can be enabled with a call to `amethyst::start_logger()` ([#815])
- Gamepad support with optional builtin SDL controller event source ([#818])
- Promote `UiButton` to a fundamental Ui component ([#798])

### Changed

- UI systems will now never overwrite your local `UiTransform` values ([#774])
- Global `UiTransform` values are no longer writable ([#774])
- `UiResize` refactored to be more user friendly and more helpful ([#774])
- `Anchored` and `Stretched` components have been folded into `UiTransform` ([#774])
- Refactored asset loading so `Processor`s can defer storage insertion ([#760])
- Moved `MaterialTextureSet` to the renderer crate ([#760])
- Use `fresnel` function in PBR shader ([#772])
- Remove boilerplate for `run` + `main` in examples ([#764])
- Update dependencies ([#752], [#751], [#817])
- Formalized and documented support for overriding the global logger ([#776])
- Refactor GLTF loader to use prefabs ([#784])
- Point lights use `GlobalTransform` for positioning rather than a separate `center` ([#794])
- Point lights now require a `GlobalTransform` component to be included in rendering ([#794])
- `amethyst_input::input_handler::{keys_that_are_down, mouse_buttons_that_are_down, scan_codes_that_are_down, buttons_that_are_down}` now all return `impl Iterator` instead of concrete wrapper types ([#816])
- Renamed is_key to is_key_down and fixed example to react when the key is pressed instead of released. ([#822])
- SpriteRenderData now allows to retrieve the MeshHandle and Material before inserting them into an entity. ([#825])
- Update the pong tutorial + changelog for SpriteRenderData. ([#805])
- Loosen up generic type bounds for InputBundle. ([#808])

### Removed

- Remove `amethyst_input::{KeyCodes, ScanCodes, MouseButtons, Buttons}` in favor of `impl trait` ([#816])

### Fixed

- Resizing fixed on OSX ([#767])
- Fix color format ([#766])
- Remove individual example READMEs ([#758])
- Log an error if a pass tries to render a mesh with incompatible vertex buffers ([#749])
- Standardize vsync across examples ([#746])
- Minor Pong tutorial fixes. ([#807])
- Fix wrong resource paths in examples. ([#812])

[#663]: https://github.com/amethyst/amethyst/pull/663
[#746]: https://github.com/amethyst/amethyst/pull/746
[#749]: https://github.com/amethyst/amethyst/pull/749
[#751]: https://github.com/amethyst/amethyst/pull/751
[#752]: https://github.com/amethyst/amethyst/pull/752
[#756]: https://github.com/amethyst/amethyst/pull/756
[#758]: https://github.com/amethyst/amethyst/pull/758
[#759]: https://github.com/amethyst/amethyst/pull/759
[#760]: https://github.com/amethyst/amethyst/pull/760
[#764]: https://github.com/amethyst/amethyst/pull/764
[#766]: https://github.com/amethyst/amethyst/pull/766
[#767]: https://github.com/amethyst/amethyst/pull/767
[#770]: https://github.com/amethyst/amethyst/pull/770
[#771]: https://github.com/amethyst/amethyst/pull/771
[#772]: https://github.com/amethyst/amethyst/pull/772
[#773]: https://github.com/amethyst/amethyst/pull/773
[#774]: https://github.com/amethyst/amethyst/pull/774
[#777]: https://github.com/amethyst/amethyst/pull/777
[#776]: https://github.com/amethyst/amethyst/pull/776
[#798]: https://github.com/amethyst/amethyst/pull/798
[#716]: https://github.com/amethyst/amethyst/pull/716
[#784]: https://github.com/amethyst/amethyst/pull/784
[#785]: https://github.com/amethyst/amethyst/pull/785
[#786]: https://github.com/amethyst/amethyst/pull/786
[#791]: https://github.com/amethyst/amethyst/pull/791
[#789]: https://github.com/amethyst/amethyst/pull/789
[#793]: https://github.com/amethyst/amethyst/pull/793
[#804]: https://github.com/amethyst/amethyst/pull/804
[#805]: https://github.com/amethyst/amethyst/pull/805
[#807]: https://github.com/amethyst/amethyst/pull/807
[#808]: https://github.com/amethyst/amethyst/pull/808
[#809]: https://github.com/amethyst/amethyst/pull/809
[#811]: https://github.com/amethyst/amethyst/pull/811
[#794]: https://github.com/amethyst/amethyst/pull/794
[#812]: https://github.com/amethyst/amethyst/pull/812
[#816]: https://github.com/amethyst/amethyst/pull/816
[#815]: https://github.com/amethyst/amethyst/pull/815
[#817]: https://github.com/amethyst/amethyst/pull/817
[#818]: https://github.com/amethyst/amethyst/pull/818
[#822]: https://github.com/amethyst/amethyst/pull/822
[#825]: https://github.com/amethyst/amethyst/pull/825

## [0.7.0] - 2018-05

### Added

- Documentation for Animation crate ([#631]).
- Support for rendering sprites ([#638]).
- Fly Camera ([#578]).
- UI Layouts ([#591]).
- UI Events ([#580]).
- Introduce a generic animation system, with support for both transform and texture animation ([#558]), ([#566]), ([#567]), ([#569]), ([#570]), ([#611]), ([#641]), ([#644])
- Add transparency support to core passes ([#543]), ([#574]), ([#584])
- Add vertex skinning ([#545]), ([#619])
- Expose a basic visibility ordering system, with the ability to swap in better replacement systems ([#595])
- Audio `Output` is now added directly rather than as an `Option`, should now be fetched with `Option<Read<'a, Output>>` ([#679])
- New nightly feature that enables `shred`s nightly feature ([#689])
- `Transform` refactored, and added lots of utility functions ([#660])
- Add new raw mouse events for use with camera rotation ([#699])
- Add UiButtons and UiButtonBuilder ([#613])
- Add arc ball camera ([#700])

### Changed

- Update dependencies to the newest versions: cgmath, winit, glutin, gfx, gfx_glyph ([#527]), ([#572]), ([#648])
- Rodio updated to 0.7 ([#676])
- Refactored bundles to only contain `System`s ([#675])
- Refactor to use new specs, major breakage! ([#674]), ([#679]), ([#683]), ([#662]).
- Upgrade to winit 1.13.1 ([#698])
- Refactor game data, permit greater extensibility ([#691])
- Disable multisampling on all examples, and add a single example with multisampling on ([#671])

### Fixed

- Asset loading tolerates paths constructed using back slashes ([#623]).
- Pong text alignment ([#621]).
- Updated book introduction ([#588]).
- Renderable runtime crash ([#586]).

[#580]: https://github.com/amethyst/amethyst/pull/580
[#591]: https://github.com/amethyst/amethyst/pull/591
[#578]: https://github.com/amethyst/amethyst/pull/578
[#586]: https://github.com/amethyst/amethyst/pull/586
[#588]: https://github.com/amethyst/amethyst/pull/588
[#631]: https://github.com/amethyst/amethyst/pull/631
[#638]: https://github.com/amethyst/amethyst/pull/638
[#623]: https://github.com/amethyst/amethyst/pull/623
[#621]: https://github.com/amethyst/amethyst/pull/621
[#558]: https://github.com/amethyst/amethyst/pull/558
[#566]: https://github.com/amethyst/amethyst/pull/566
[#567]: https://github.com/amethyst/amethyst/pull/567
[#569]: https://github.com/amethyst/amethyst/pull/569
[#570]: https://github.com/amethyst/amethyst/pull/570
[#611]: https://github.com/amethyst/amethyst/pull/611
[#641]: https://github.com/amethyst/amethyst/pull/641
[#644]: https://github.com/amethyst/amethyst/pull/644
[#543]: https://github.com/amethyst/amethyst/pull/543
[#574]: https://github.com/amethyst/amethyst/pull/574
[#584]: https://github.com/amethyst/amethyst/pull/584
[#545]: https://github.com/amethyst/amethyst/pull/545
[#619]: https://github.com/amethyst/amethyst/pull/619
[#527]: https://github.com/amethyst/amethyst/pull/527
[#572]: https://github.com/amethyst/amethyst/pull/572
[#648]: https://github.com/amethyst/amethyst/pull/648
[#595]: https://github.com/amethyst/amethyst/pull/595
[#679]: https://github.com/amethyst/amethyst/pull/679
[#675]: https://github.com/amethyst/amethyst/pull/675
[#676]: https://github.com/amethyst/amethyst/pull/676
[#674]: https://github.com/amethyst/amethyst/pull/674
[#679]: https://github.com/amethyst/amethyst/pull/679
[#683]: https://github.com/amethyst/amethyst/pull/683
[#660]: https://github.com/amethyst/amethyst/pull/660
[#671]: https://github.com/amethyst/amethyst/pull/671
[#689]: https://github.com/amethyst/amethyst/pull/689
[#691]: https://github.com/amethyst/amethyst/pull/691
[#698]: https://github.com/amethyst/amethyst/pull/698
[#699]: https://github.com/amethyst/amethyst/pull/699
[#662]: https://github.com/amethyst/amethyst/pull/662
[#613]: https://github.com/amethyst/amethyst/pull/613
[#700]: https://github.com/amethyst/amethyst/pull/700

## [0.5.1] - 2017-08-30

- Fix syntax highlighting in documentation.

## [0.5.0] - 2017-08-29

### Added

- Add audio support ([#265])

### Changed

- Asset management rewrite (pull request [#244]).
- Use RON as config format ([#269])
- Overhaul input system ([#247]), ([#261]), and ([#274])
- Total overhaul of the game renderer ([#285])

[#244]: https://github.com/amethyst/amethyst/pull/244
[#247]: https://github.com/amethyst/amethyst/pull/247
[#261]: https://github.com/amethyst/amethyst/pull/261
[#265]: https://github.com/amethyst/amethyst/pull/265
[#269]: https://github.com/amethyst/amethyst/pull/269
[#274]: https://github.com/amethyst/amethyst/pull/274
[#285]: https://github.com/amethyst/amethyst/pull/285

## [0.4.3] - 2017-06-03

### Added

- Add mouse button events to `InputHandler` (pull request [#181]).
- Built-in application profiler using [`thread_profiler`][tp] (pull request
  [#212]).
- Screenshots for all in-repo examples (pull request [#213]).
- Pre-commit hook to automate local testing for commits (pull request [#228]).

### Changed

- Changes to `CONTRIBUTING.md` (pull requests [#206], [#226]).
- Update to `specs` 0.8.1 (pull request [#219]).

### Fixed

- Fix deferred rendering in renderable example (pull request [#211]).
- Fix AppVeyor curl command (pull request [#217]).
- Ignore IntelliJ IDEA project files (pull request [#218]).
- Fix `InputHandler` key press bug (pull request [#227]).
- Fix CRLF normalization on extensionless files (pull request [#207]).
- Update code to latest template (pull request [#215]).

[#181]: https://github.com/amethyst/amethyst/pull/181
[#206]: https://github.com/amethyst/amethyst/pull/206
[#207]: https://github.com/amethyst/amethyst/pull/207
[#211]: https://github.com/amethyst/amethyst/pull/211
[#212]: https://github.com/amethyst/amethyst/pull/212
[#213]: https://github.com/amethyst/amethyst/pull/213
[#215]: https://github.com/amethyst/amethyst/pull/215
[#217]: https://github.com/amethyst/amethyst/pull/217
[#218]: https://github.com/amethyst/amethyst/pull/218
[#219]: https://github.com/amethyst/amethyst/pull/219
[#226]: https://github.com/amethyst/amethyst/pull/226
[#228]: https://github.com/amethyst/amethyst/pull/228
[#227]: https://github.com/amethyst/amethyst/pull/227
[tp]: https://github.com/glennw/thread_profiler

## [0.4.2] - 2017-03-07

### Added

- Allow loading configuration files directly from strings.
- Add `#[derive(Default)]` for some types in ECS module.
- Add Ilya Bogdanov, Konstantin Zverev, and Scott Corbeil to `AUTHORS.md`.

### Changed

- Implement some clippy suggestions.
- Use `FnvHasher` instead of Rust's default SipHash implementation for better
  performance.

### Fixed

- Correct the quick example given in `README.md`.
- Replace constant paddle width with actual value in Pong example.
- Minor fix of line numbers in link in `CONTRIBUTING.md`.
- Add backticks around word in doc comment within `input.rs`.
- Match `Stopwatch` behavior to API documentation.
- Fix AppVeyor build failures due to `timing.rs` test failure.

## [0.4.1] - 2017-02-10

### Added

- Make `CONTRIBUTING.md` have teeth by enabling `#[deny(missing_docs)]`.
- Add lots of shiny new API documentation.
- Convert `amethyst` crate into a workspace.
- Add Travis and Appveyor badges to Cargo manifests.

### Changed

- Bump `amethyst` to version 0.4.1, `amethyst_renderer` to 0.4.1, and
  `amethyst_config` to 0.2.1.
- Temporarily disable `cargo fmt` checking in Travis due to panics.
- Update to `dds` 0.4.
- Update to `gfx` 0.14, fix breaking changes relating to shaders, PSO, and
  module layout changes.
- Update to `gfx_device_gl` 0.13.
- Update to `gfx_window_glutin` 0.14.
- Update to `glutin` 0.7.
- Improve quality of existing doc comments.
- Implement `Deref` and `DerefMut` into `glutin::Event` for `WindowEvent`.
- Re-export contents of `engine` to top-level and make module private.
- Shorten certain variable names to help combat rightward drift.
- Update `.travis.yml` and `appveyor.yml` to use `cargo test --all` instead of
  specifying explicit crates.
- Rename `06_assets` to `05_assets`.
- Make Git line endings consistent for source and config files throughout the
  repo.
- Process entire codebase through `cargo fmt`.
- Improve wording and formatting in `CONTRIBUTING.md` and in `README.md`.

### Removed

- Delete `rustfmt.toml` from `amethyst_renderer`.
- Delete outdated example from `amethyst_renderer`.
- Delete redundant `extern crate` directives outside of `lib.rs`.

## [0.4.0] - 2017-02-07

### Added

- Add transform system, transform components, light components, `specs`
  resources (camera, input handler, game time counter, screen dimensions, event
  handling).
- Make mesh primitives with [genmesh][gm].
- Add basic asset management.
  - Add support for Wavefront OBJ assets with [wavefront_obj][wo], and
    texture loading with [imagefmt][if].
  - Add support for DirectDraw surfaces (.dds files).
- Moar examples! Oh, and we have a [basic pong game][pg] too.
- Fix several `unused_variables` and `unused_mut` warnings.
- Add gitattributes to prevent line-ending conversion for binary files.
- Add lots of API documentation.

[gm]: https://github.com/gfx-rs/genmesh
[wo]: https://github.com/PistonDevelopers/wavefront_obj
[if]: https://github.com/lgvz/imagefmt
[pg]: examples/pong/

### Changed

- Relicense under the terms of both MIT/Apache-2.0.
- Revamp `amethyst_renderer`
  - Graphics backend chosen at compile time using features.
  - Add specular lighting, switching propagation -> attenuation.
- Update instructions for generating a new project using Cargo templates.
- Scale number of `specs` threads according to system core count.
- Improve Travis CI build speeds.
- Rewrite `Stopwatch` to be an enum.
- Update contribution guidelines and change log.
- Update book to reflect new API changes.
- Update dependency versions.

### Removed

- Remove `amethyst_ecs` crate in favor of using `specs` directly.
- Remove `amethyst_context` and refactor to greatly improve performance.
- Remove unused lights from included forward and deferred renderer pipelines.
- Remove dependency on `time` crate.

## [0.3.1] - 2016-09-07

### Fixed

- Fixed broken API reference link in `README.md`.
- amethyst.rs book: link to API reference broken (issue [#86]).
- Master branch no longer builds on beta/nightly Rust (issue [#94]).

[#86]: https://github.com/amethyst/amethyst/issues/86
[#94]: https://github.com/amethyst/amethyst/issues/94

## 0.3.0 - 2016-03-31

### Added

- Initial version of `amethyst_ecs` crate (issue [#37]).
- Add Gitter webhooks support to Travis (issue [#27]).

### Changed

- Update `amethyst_renderer` crate slightly (issue [#37]).
- Remove `publish.sh` script since website repo handles docs now (issue [#27]).
- Updated contribution guidelines on submitting code (issue [#37]).

### Fixed

- Update broken links for website, wiki, chat, and blog (issue [#27]).

[#27]: https://github.com/amethyst/amethyst/issues/27
[#37]: https://github.com/amethyst/amethyst/issues/37

## 0.2.1 (2016-01-27)

### Changed

- Add keywords to sub-crates.
- Remove reference to missing README file from `amethyst_engine`

## 0.2.0 (2016-01-27) [YANKED]

### Added

- Pass slice references to functions instead of `&Vec<T>`.
- Add state machine unit tests (issue [#9], pull request [#15])

### Changed

- Mention nightly Rust in "Hello World" tutorial (issue [#11], pull request
  [#12])
- Split amethyst` into separate sub-crates (issue [#13], pull request [#14])
- Update example to reflect API changes
- Depend on gfx-rs to reduce workload and foster cooperation, removed old
  renderer backend code

[#9]: https://github.com/amethyst/amethyst/issues/9
[#11]: https://github.com/amethyst/amethyst/issues/11
[#12]: https://github.com/amethyst/amethyst/issues/12
[#13]: https://github.com/amethyst/amethyst/issues/13
[#14]: https://github.com/amethyst/amethyst/issues/14
[#15]: https://github.com/amethyst/amethyst/issues/15

## 0.1.4 - 2016-01-10

### Added

- Stabilize state machine API (pull request [#6]).
  - Implement pushdown automaton state machine.
  - Implement state transitions.

### Changed

- Remove standardized `State` constructor (pull request [#6]).
- Update book and doc comments.

[#6]: https://github.com/amethyst/amethyst/issues/6

### Fixed

- Fix unreachable shutdown statement bug (issue [#5]).

[#5]: https://github.com/amethyst/amethyst/issues/5

## 0.1.3 - 2016-01-09

### Changed

- Clean up use statements.
- Renderer design progress (issue [#7]).
  - Split `ir.rs` and `frontend.rs` into separate files.
  - Frontend
    - Objects and Lights (enums) are now structs impl'ing `Renderable` trait.
    - `Frame` is a container of `Renderable` trait objects.
    - Start compiling library of common objects and light types.
  - Intermediate Representation
    - Move GPU state modeling out of Backend and into IR.
    - CommandBuffers are now directly sortable.
    - CommandQueue now takes in CommandBuffers directly
  - Backend
    - Consolidate traits into one short file.

[#7]: https://github.com/amethyst/amethyst/issues/7

## 0.1.1 - 2016-01-06

### Added

- Add `Frame::with_data` constructor to renderer.

### Changed

- Hide engine submodule, reexport desired contents as public.
- Updated hello_world.rs to new API.
- Significantly expanded Amethyst book and doc comments.

## 0.1.0 - 2016-01-03

- Initial release

[unreleased]: https://github.com/amethyst/amethyst/compare/v0.15.3...HEAD
[0.15.3]: https://github.com/amethyst/amethyst/compare/v0.15.2...v0.15.3
[0.15.2]: https://github.com/amethyst/amethyst/compare/v0.15.1...v0.15.2
[0.15.1]: https://github.com/amethyst/amethyst/compare/v0.15.0...v0.15.1
[0.15.0]: https://github.com/amethyst/amethyst/compare/v0.14.0...v0.15.0
[0.14.0]: https://github.com/amethyst/amethyst/compare/v0.13.3...v0.14.0
[0.13.3]: https://github.com/amethyst/amethyst/compare/v0.13.2...v0.13.3
[0.13.2]: https://github.com/amethyst/amethyst/compare/v0.13.1...v0.13.2
[0.13.1]: https://github.com/amethyst/amethyst/compare/v0.13.0...v0.13.1
[0.13.0]: https://github.com/amethyst/amethyst/compare/v0.12.0...v0.13.0
[0.12.0]: https://github.com/amethyst/amethyst/compare/v0.11.0...v0.12.0
[0.11.0]: https://github.com/amethyst/amethyst/compare/v0.10.0...v0.11.0
[0.10.0]: https://github.com/amethyst/amethyst/compare/v0.9.0...v0.10.0
[0.9.0]: https://github.com/amethyst/amethyst/compare/v0.8.0...v0.9.0
[0.8.0]: https://github.com/amethyst/amethyst/compare/v0.7.0...v0.8.0
[0.7.0]: https://github.com/amethyst/amethyst/compare/v0.5.1...v0.7.0
[0.5.1]: https://github.com/amethyst/amethyst/compare/v0.5.0...v0.5.1
[0.5.0]: https://github.com/amethyst/amethyst/compare/v0.4.3...v0.5.0
[0.4.3]: https://github.com/amethyst/amethyst/compare/v0.4.2...v0.4.3
[0.4.2]: https://github.com/amethyst/amethyst/compare/v0.4.1...v0.4.2
[0.4.1]: https://github.com/amethyst/amethyst/compare/v0.4...v0.4.1
[0.4.0]: https://github.com/amethyst/amethyst/compare/v0.3.1...v0.4
[0.3.1]: https://github.com/amethyst/amethyst/compare/v0.3...v0.3.1