private void UpdateAuthChangeGroup() { Entities.With(authChangeGroup).ForEach( (Rigidbody rigidbody, ref KinematicStateWhenAuth kinematicStateWhenAuth, ref SpatialEntityId spatialEntityId) => { var changes = updateSystem.GetAuthorityChangesReceived(spatialEntityId.EntityId, TransformInternal.ComponentId); if (changes.Count == 0) { return; } var auth = changes[changes.Count - 1]; switch (auth.Authority) { case Authority.NotAuthoritative: kinematicStateWhenAuth = new KinematicStateWhenAuth { KinematicWhenAuthoritative = rigidbody.isKinematic }; rigidbody.isKinematic = true; break; case Authority.Authoritative: case Authority.AuthorityLossImminent: rigidbody.isKinematic = kinematicStateWhenAuth.KinematicWhenAuthoritative; break; } }); }
private void UpdateAuthChangeGroup() { var rigidbodyArray = authChangeGroup.GetComponentArray <Rigidbody>(); var kinematicStateWhenAuthArray = authChangeGroup.GetComponentDataArray <KinematicStateWhenAuth>(); var spatialEntityIdArray = authChangeGroup.GetComponentDataArray <SpatialEntityId>(); for (int i = 0; i < rigidbodyArray.Length; ++i) { var rigidbody = rigidbodyArray[i]; var changes = updateSystem.GetAuthorityChangesReceived(spatialEntityIdArray[i].EntityId, TransformInternal.ComponentId); if (changes.Count == 0) { continue; } var auth = changes[changes.Count - 1]; switch (auth.Authority) { case Authority.NotAuthoritative: kinematicStateWhenAuthArray[i] = new KinematicStateWhenAuth { KinematicWhenAuthoritative = rigidbody.isKinematic }; rigidbody.isKinematic = true; break; case Authority.Authoritative: case Authority.AuthorityLossImminent: rigidbody.isKinematic = kinematicStateWhenAuthArray[i].KinematicWhenAuthoritative; break; } } }
public void InitKinematicState(ref KinematicStateWhenAuth kinematicStateWhenAuth, Rigidbody rigidbody) { kinematicStateWhenAuth = new KinematicStateWhenAuth { KinematicWhenAuthoritative = rigidbody.isKinematic }; rigidbody.isKinematic = true; }
private void UpdateNewEntityGroup() { Entities.With(newEntityGroup).ForEach((ref KinematicStateWhenAuth kinematicStateWhenAuth, Rigidbody rigidbody) => { kinematicStateWhenAuth = new KinematicStateWhenAuth { KinematicWhenAuthoritative = rigidbody.isKinematic }; rigidbody.isKinematic = true; }); }
private void UpdateNewEntityGroup() { var rigidbodyArray = newEntityGroup.GetComponentArray <Rigidbody>(); var kinematicStateWhenAuthArray = newEntityGroup.GetComponentDataArray <KinematicStateWhenAuth>(); for (int i = 0; i < rigidbodyArray.Length; ++i) { var rigidbody = rigidbodyArray[i]; kinematicStateWhenAuthArray[i] = new KinematicStateWhenAuth { KinematicWhenAuthoritative = rigidbody.isKinematic }; rigidbody.isKinematic = true; } }
public void ApplyKinematicStateOnAuthChange(ref KinematicStateWhenAuth kinematicStateWhenAuth, AuthorityChangeReceived authChange, Rigidbody rigidbody) { switch (authChange.Authority) { case Authority.NotAuthoritative: kinematicStateWhenAuth = new KinematicStateWhenAuth { KinematicWhenAuthoritative = rigidbody.isKinematic }; rigidbody.isKinematic = true; break; case Authority.Authoritative: rigidbody.isKinematic = kinematicStateWhenAuth.KinematicWhenAuthoritative; break; } }