public void SetShapeDescriptor(DataSources dataSource, ShapeDescriptor shapeDescriptor) { short transferMode; switch (dataSource) { case DataSources.Primary: if (shapeDescriptor.Equals(NativeObject.Primary.Texture)) { // Texture is not different, so exit return; } NativeObject.Primary.Texture = shapeDescriptor; transferMode = NativeObject.PrimaryTransferMode; break; case DataSources.Secondary: if (shapeDescriptor.Equals(NativeObject.Secondary.Texture)) { // Texture is not different, so exit return; } NativeObject.Secondary.Texture = shapeDescriptor; transferMode = NativeObject.SecondaryTransferMode; break; case DataSources.Transparent: if (shapeDescriptor.Equals(NativeObject.Transparent.Texture)) { // Texture is not different, so exit return; } NativeObject.Transparent.Texture = shapeDescriptor; transferMode = NativeObject.TransparentTransferMode; break; default: return; } short newTransferMode = 0; if (shapeDescriptor.UsesLandscapeCollection()) { newTransferMode = 9; } else if (transferMode != 9) { newTransferMode = transferMode; } switch (dataSource) { case LevelEntity_Side.DataSources.Primary: NativeObject.PrimaryTransferMode = newTransferMode; PrimarySurface.ApplyTexture(); break; case LevelEntity_Side.DataSources.Secondary: NativeObject.SecondaryTransferMode = newTransferMode; SecondarySurface.ApplyTexture(); break; case LevelEntity_Side.DataSources.Transparent: NativeObject.TransparentTransferMode = newTransferMode; TransparentSurface.ApplyTexture(innerLayer: !NativeObject.HasLayeredTransparentSide(ParentLevel.Level)); break; } }