@@ -74,8 +74,8 @@ public bool Visible
74
74
75
75
private SpriteSystem ? _sys ;
76
76
private SpriteTreeSystem ? _treeSys ;
77
- private SpriteSystem Sys => _sys ??= entities . System < SpriteSystem > ( ) ;
78
- private SpriteTreeSystem TreeSys => _treeSys ??= entities . System < SpriteTreeSystem > ( ) ;
77
+ private SpriteSystem Sys => _sys ??= ( entities . Started ? entities . System < SpriteSystem > ( ) : null ) ! ;
78
+ private SpriteTreeSystem TreeSys => _treeSys ??= ( entities . Started ? entities . System < SpriteTreeSystem > ( ) : null ) ! ;
79
79
80
80
[ DataField ( "drawdepth" , customTypeSerializer : typeof ( ConstantSerializer < DrawDepthTag > ) ) ]
81
81
internal int drawDepth = DrawDepthTag . Default ;
@@ -456,14 +456,6 @@ public void RemoveLayer(object layerKey)
456
456
RemoveLayer ( layer ) ;
457
457
}
458
458
459
- [ Obsolete ( "Use SpriteSystem.RebuildBounds() instead." ) ]
460
- internal void RebuildBounds ( )
461
- {
462
- // I Love ISerializationHooks & inconsistent initialization ordering between server, client, and tests.
463
- if ( entities . Started && entities . TrySystem ( out SpriteSystem ? sys ) )
464
- sys . RebuildBounds ( ( Owner , this ) ) ;
465
- }
466
-
467
459
/// <summary>
468
460
/// Fills in a layer's values using some <see cref="PrototypeLayerData"/>.
469
461
/// </summary>
@@ -595,7 +587,8 @@ private void LayerSetData(Layer layer, int index, PrototypeLayerData layerDatum)
595
587
layer . CopyToShaderParameters = null ;
596
588
}
597
589
598
- RebuildBounds ( ) ;
590
+ // ReSharper disable once ConditionalAccessQualifierIsNonNullableAccordingToAPIContract
591
+ Sys ? . RebuildBounds ( ( Owner , this ) ) ;
599
592
}
600
593
601
594
private object ParseKey ( string keyString )
@@ -682,8 +675,8 @@ public void LayerSetTexture(int layer, Texture? texture)
682
675
return ;
683
676
theLayer . SetTexture ( texture ) ;
684
677
685
- QueueUpdateIsInert ( ) ;
686
- RebuildBounds ( ) ;
678
+ Sys . QueueUpdateIsInert ( ( Owner , this ) ) ;
679
+ Sys . RebuildBounds ( ( Owner , this ) ) ;
687
680
}
688
681
689
682
public void LayerSetTexture ( object layerKey , Texture texture )
@@ -735,7 +728,7 @@ public void LayerSetState(int layer, RSI.StateId stateId)
735
728
if ( ! TryGetLayer ( layer , out var theLayer , true ) )
736
729
return ;
737
730
theLayer . SetState ( stateId ) ;
738
- RebuildBounds ( ) ;
731
+ Sys . RebuildBounds ( ( Owner , this ) ) ;
739
732
}
740
733
741
734
public void LayerSetState ( object layerKey , RSI . StateId stateId )
@@ -774,8 +767,8 @@ public void LayerSetState(int layer, RSI.StateId stateId, RSI? rsi)
774
767
}
775
768
}
776
769
777
- QueueUpdateIsInert ( ) ;
778
- RebuildBounds ( ) ;
770
+ Sys . QueueUpdateIsInert ( ( Owner , this ) ) ;
771
+ Sys . RebuildBounds ( ( Owner , this ) ) ;
779
772
}
780
773
781
774
public void LayerSetState ( object layerKey , RSI . StateId stateId , RSI rsi )
@@ -819,7 +812,7 @@ public void LayerSetRSI(int layer, RSI? rsi)
819
812
if ( ! TryGetLayer ( layer , out var theLayer , true ) )
820
813
return ;
821
814
theLayer . SetRsi ( rsi ) ;
822
- RebuildBounds ( ) ;
815
+ Sys . RebuildBounds ( ( Owner , this ) ) ;
823
816
}
824
817
825
818
public void LayerSetRSI ( object layerKey , RSI rsi )
@@ -863,7 +856,7 @@ public void LayerSetScale(int layer, Vector2 scale)
863
856
if ( ! TryGetLayer ( layer , out var theLayer , true ) )
864
857
return ;
865
858
theLayer . Scale = scale ;
866
- RebuildBounds ( ) ;
859
+ Sys . RebuildBounds ( ( Owner , this ) ) ;
867
860
}
868
861
869
862
public void LayerSetScale ( object layerKey , Vector2 scale )
@@ -880,7 +873,7 @@ public void LayerSetRotation(int layer, Angle rotation)
880
873
if ( ! TryGetLayer ( layer , out var theLayer , true ) )
881
874
return ;
882
875
theLayer . Rotation = rotation ;
883
- RebuildBounds ( ) ;
876
+ Sys . RebuildBounds ( ( Owner , this ) ) ;
884
877
}
885
878
886
879
public void LayerSetRotation ( object layerKey , Angle rotation )
@@ -913,8 +906,7 @@ public void LayerSetColor(int layer, Color color)
913
906
return ;
914
907
915
908
theLayer . Color = color ;
916
-
917
- RebuildBounds ( ) ;
909
+ Sys . RebuildBounds ( ( Owner , this ) ) ;
918
910
}
919
911
920
912
public void LayerSetColor ( object layerKey , Color color )
@@ -931,8 +923,7 @@ public void LayerSetDirOffset(int layer, DirectionOffset offset)
931
923
return ;
932
924
933
925
theLayer . DirOffset = offset ;
934
-
935
- RebuildBounds ( ) ;
926
+ Sys . RebuildBounds ( ( Owner , this ) ) ;
936
927
}
937
928
938
929
public void LayerSetDirOffset ( object layerKey , DirectionOffset offset )
@@ -981,8 +972,7 @@ public void LayerSetOffset(int layer, Vector2 layerOffset)
981
972
return ;
982
973
983
974
theLayer . Offset = layerOffset ;
984
-
985
- RebuildBounds ( ) ;
975
+ Sys . RebuildBounds ( ( Owner , this ) ) ;
986
976
}
987
977
988
978
public void LayerSetOffset ( object layerKey , Vector2 layerOffset )
@@ -1054,7 +1044,7 @@ public bool SnapCardinals
1054
1044
return ;
1055
1045
1056
1046
_snapCardinals = value ;
1057
- RebuildBounds ( ) ;
1047
+ Sys . RebuildBounds ( ( Owner , this ) ) ;
1058
1048
}
1059
1049
}
1060
1050
@@ -1156,21 +1146,6 @@ public int GetLayerDirectionCount(ISpriteLayer layer)
1156
1146
} ;
1157
1147
}
1158
1148
1159
- private void QueueUpdateRenderTree ( )
1160
- {
1161
- TreeSys . QueueTreeUpdate ( ( Owner , this ) ) ;
1162
- }
1163
-
1164
- internal void QueueUpdateIsInert ( )
1165
- {
1166
- if ( _inertUpdateQueued || ! Owner . IsValid ( ) )
1167
- return ;
1168
-
1169
- // TODO whenever sprite comp gets ECS'd , just make this a direct method call.
1170
- var ev = new SpriteUpdateInertEvent ( ) ;
1171
- entities . EventBus . RaiseComponentEvent ( Owner , this , ref ev ) ;
1172
- }
1173
-
1174
1149
[ Obsolete ( "Use SpriteSystem instead." ) ]
1175
1150
internal static RSI . State GetFallbackState ( IResourceCache cache )
1176
1151
{
@@ -1343,7 +1318,7 @@ public Vector2 Scale
1343
1318
1344
1319
_scale = value ;
1345
1320
UpdateLocalMatrix ( ) ;
1346
- _parent . RebuildBounds ( ) ;
1321
+ _parent . Sys . RebuildBounds ( ( _parent . Owner , _parent ) ) ;
1347
1322
}
1348
1323
}
1349
1324
internal Vector2 _scale = Vector2 . One ;
@@ -1358,7 +1333,7 @@ public Angle Rotation
1358
1333
1359
1334
_rotation = value ;
1360
1335
UpdateLocalMatrix ( ) ;
1361
- _parent . RebuildBounds ( ) ;
1336
+ _parent . Sys . RebuildBounds ( ( _parent . Owner , _parent ) ) ;
1362
1337
}
1363
1338
}
1364
1339
internal Angle _rotation = Angle . Zero ;
@@ -1374,8 +1349,9 @@ public bool Visible
1374
1349
return ;
1375
1350
_visible = value ;
1376
1351
1377
- _parent . QueueUpdateIsInert ( ) ;
1378
- _parent . RebuildBounds ( ) ;
1352
+ // ReSharper disable once ConditionalAccessQualifierIsNonNullableAccordingToAPIContract
1353
+ _parent . Sys ? . QueueUpdateIsInert ( ( _parent . Owner , _parent ) ) ;
1354
+ _parent . Sys ? . RebuildBounds ( ( _parent . Owner , _parent ) ) ;
1379
1355
}
1380
1356
}
1381
1357
@@ -1395,7 +1371,8 @@ public bool AutoAnimated
1395
1371
if ( _autoAnimated == value )
1396
1372
return ;
1397
1373
_autoAnimated = value ;
1398
- _parent . QueueUpdateIsInert ( ) ;
1374
+ // ReSharper disable once ConditionalAccessQualifierIsNonNullableAccordingToAPIContract
1375
+ _parent . Sys ? . QueueUpdateIsInert ( ( _parent . Owner , _parent ) ) ;
1399
1376
}
1400
1377
}
1401
1378
@@ -1409,7 +1386,8 @@ public Vector2 Offset
1409
1386
1410
1387
_offset = value ;
1411
1388
UpdateLocalMatrix ( ) ;
1412
- _parent . RebuildBounds ( ) ;
1389
+ // ReSharper disable once ConditionalAccessQualifierIsNonNullableAccordingToAPIContract
1390
+ _parent . Sys ? . RebuildBounds ( ( _parent . Owner , _parent ) ) ;
1413
1391
}
1414
1392
}
1415
1393
@@ -1581,7 +1559,7 @@ public void SetAutoAnimated(bool value)
1581
1559
{
1582
1560
AutoAnimated = value ;
1583
1561
1584
- _parent . QueueUpdateIsInert ( ) ;
1562
+ _parent . Sys . QueueUpdateIsInert ( ( _parent . Owner , _parent ) ) ;
1585
1563
}
1586
1564
1587
1565
public void SetRsi ( RSI ? rsi )
@@ -1613,8 +1591,8 @@ public void SetRsi(RSI? rsi)
1613
1591
}
1614
1592
}
1615
1593
1616
- _parent . QueueUpdateRenderTree ( ) ;
1617
- _parent . QueueUpdateIsInert ( ) ;
1594
+ _parent . TreeSys . QueueTreeUpdate ( ( _parent . Owner , _parent ) ) ;
1595
+ _parent . Sys . QueueUpdateIsInert ( ( _parent . Owner , _parent ) ) ;
1618
1596
}
1619
1597
1620
1598
public void SetState ( RSI . StateId stateId )
@@ -1646,16 +1624,16 @@ public void SetState(RSI.StateId stateId)
1646
1624
AnimationTime = 0 ;
1647
1625
AnimationTimeLeft = state . GetDelay ( 0 ) ;
1648
1626
1649
- _parent . QueueUpdateIsInert ( ) ;
1627
+ _parent . Sys . QueueUpdateIsInert ( ( _parent . Owner , _parent ) ) ;
1650
1628
}
1651
1629
1652
1630
public void SetTexture ( Texture ? texture )
1653
1631
{
1654
1632
State = default ;
1655
1633
Texture = texture ;
1656
1634
1657
- _parent . QueueUpdateRenderTree ( ) ;
1658
- _parent . QueueUpdateIsInert ( ) ;
1635
+ _parent . TreeSys . QueueTreeUpdate ( ( _parent . Owner , _parent ) ) ;
1636
+ _parent . Sys . QueueUpdateIsInert ( ( _parent . Owner , _parent ) ) ;
1659
1637
}
1660
1638
1661
1639
/// <inheritdoc/>
@@ -1723,7 +1701,8 @@ public Box2 CalculateBoundingBox()
1723
1701
/// </summary>
1724
1702
internal void UpdateActualState ( )
1725
1703
{
1726
- _parent . QueueUpdateIsInert ( ) ;
1704
+ // ReSharper disable once ConditionalAccessQualifierIsNonNullableAccordingToAPIContract
1705
+ _parent . Sys ? . QueueUpdateIsInert ( ( _parent . Owner , _parent ) ) ;
1727
1706
if ( ! State . IsValid )
1728
1707
{
1729
1708
_actualState = null ;
@@ -2078,10 +2057,4 @@ public static IRsiStateLike GetPrototypeIcon(EntityPrototype prototype, IResourc
2078
2057
return result ;
2079
2058
}
2080
2059
}
2081
-
2082
-
2083
- [ ByRefEvent ]
2084
- internal struct SpriteUpdateInertEvent
2085
- {
2086
- }
2087
2060
}
0 commit comments