Example #1
0
        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;
            }
        }