@@ -343,14 +343,14 @@ public VirtualGroup AnimGroup(int animation) {
343343
344344 public readonly object Lock = new ( ) ;
345345
346- public readonly List < VirtualSequence > Seq = [ ] ;
347- public readonly List < VirtualGeneric > Anim = [ ] ;
348- public readonly List < VirtualGeneric > Attachment = [ ] ;
349- public readonly List < VirtualGeneric > Pose = [ ] ;
346+ public List < VirtualSequence > Seq = [ ] ;
347+ public List < VirtualGeneric > Anim = [ ] ;
348+ public List < VirtualGeneric > Attachment = [ ] ;
349+ public List < VirtualGeneric > Pose = [ ] ;
350350 public readonly List < VirtualGroup > Group = [ ] ;
351- public readonly List < VirtualGeneric > Node = [ ] ;
352- public readonly List < VirtualGeneric > IKLock = [ ] ;
353- public readonly List < short > AutoplaySequences = [ ] ;
351+ public List < VirtualGeneric > Node = [ ] ;
352+ public List < VirtualGeneric > IKLock = [ ] ;
353+ public short [ ] AutoplaySequences = [ ] ;
354354}
355355
356356public enum StudioMeshGroupFlags
@@ -2038,7 +2038,7 @@ public class StudioHdr
20382038 public Span < MStudioBone > Bones ( ) => studioHdr . Bones ( ) ;
20392039
20402040
2041- readonly List < StudioHeader ? > StudioHdrCache = [ ] ;
2041+ StudioHeader ? [ ] StudioHdrCache = [ ] ;
20422042
20432043 public StudioHdrFlags Flags ( ) => studioHdr ! . Flags ;
20442044 public AnonymousSafeFieldPointer < int > FrameUnlockCounterPtr ;
@@ -2048,7 +2048,7 @@ public void Init(StudioHeader? studioHdr, IMDLCache mdlcache) {
20482048 this . studioHdr = studioHdr ;
20492049
20502050 this . vModel = null ;
2051- StudioHdrCache . Clear ( ) ;
2051+ StudioHdrCache = [ ] ;
20522052
20532053 if ( this . studioHdr == null )
20542054 return ;
@@ -2088,10 +2088,7 @@ public bool SequencesAvailable() {
20882088 private VirtualModel ? ResetVModel ( VirtualModel ? virtualModel ) {
20892089 if ( virtualModel != null ) {
20902090 vModel = virtualModel ;
2091- StudioHdrCache ! . EnsureCountDefault ( vModel . Group . Count ( ) ) ;
2092-
2093- for ( int i = 0 ; i < StudioHdrCache . Count ; i ++ )
2094- StudioHdrCache [ i ] = null ! ;
2091+ StudioHdrCache = new StudioHeader ? [ vModel . Group . Count ( ) ] ;
20952092
20962093 return vModel ;
20972094 }
@@ -2120,13 +2117,13 @@ public int RemapSeqBone(int sequence, int localBone) {
21202117 lock ( FrameUnlockCounterMutex ) {
21212118 if ( FrameUnlockCounterPtr . Get ( ) != FrameUnlockCounter ) // i.e., this thread got the mutex
21222119 {
2123- memcreset ( StudioHdrCache . Base ( ) ) ;
2120+ memcreset < StudioHeader > ( StudioHdrCache ) ;
21242121 FrameUnlockCounter = FrameUnlockCounterPtr . Get ( ) ;
21252122 }
21262123 }
21272124 }
21282125
2129- if ( ! StudioHdrCache . IsValidIndex ( i ) ) {
2126+ if ( ( uint ) i >= ( uint ) StudioHdrCache . Length ) {
21302127 ReadOnlySpan < char > name = ( this . studioHdr != null ) ? this . studioHdr . GetName ( ) : "<<null>>" ;
21312128 Debugger . Break ( ) ;
21322129 return this . studioHdr ; // return something known to probably exist, certainly things will be messed up, but hopefully not crash before the warning is noticed
@@ -2674,7 +2671,7 @@ internal int RelativeSeq(int baseseq, int relseq) {
26742671 return group . MasterSeq [ relseq ] ;
26752672 }
26762673
2677- public int GetAutoplayList ( out Span < short > pList ) {
2674+ public int GetAutoplayList ( out ReadOnlySpan < short > pList ) {
26782675 return studioHdr ! . GetAutoplayList ( out pList ) ;
26792676 }
26802677
@@ -3181,7 +3178,7 @@ public ref byte LocalTransition(int i) {
31813178 }
31823179
31833180
3184- public int GetAutoplayList ( out Span < short > pList ) {
3181+ public int GetAutoplayList ( out ReadOnlySpan < short > pList ) {
31853182 return modelinfo . GetAutoplayList ( this , out pList ) ;
31863183 }
31873184
@@ -3221,18 +3218,6 @@ public int CountAutoplaySequences() {
32213218 return count ;
32223219 }
32233220
3224- public void CopyAutoplaySequences ( ref Memory < short > autoplaySequenceList , int outCount ) {
3225- int outIndex = 0 ;
3226- for ( int i = 0 ; i < GetNumSeq ( ) && outIndex < outCount ; i ++ ) {
3227- MStudioSeqDesc seqdesc = Seqdesc ( i ) ;
3228- if ( ( seqdesc . Flags & StudioAnimSeqFlags . Autoplay ) != 0 ) {
3229- autoplaySequenceList . Span [ outIndex ] = ( short ) i ;
3230- outIndex ++ ;
3231- }
3232- }
3233- autoplaySequenceList = autoplaySequenceList [ .. outIndex ] ;
3234- }
3235-
32363221 public int CopyAutoplaySequences ( Span < short > autoplaySequenceList , int outCount ) {
32373222 int outIndex = 0 ;
32383223 for ( int i = 0 ; i < GetNumSeq ( ) && outIndex < outCount ; i ++ ) {
0 commit comments