Ejemplo n.º 1
0
        // Extra step for when this parent texture's size doesn't match with hardcoded sizes.
        private static void ScaleSubtextureCoords(MTexture parent, ref int x, ref int y, ref int width, ref int height)
        {
            VirtualTexture parentTexture = ((patch_MTexture)parent)._Texture;

            // Try to find the most up-to-date MTexture parent belonging to this texture.
            // Use it for subtexturing instead.
            MTexture atlased;

            if (AtlasExt.VTextureToMTextureMap != null && AtlasExt.VTextureToMTextureMap.TryGetValue(parentTexture.Name, out atlased))
            {
                parent = atlased;
            }

            MTextureOverride layer = ((patch_MTexture)parent).OverrideMeta;

            if (layer == null)
            {
                return;
            }

            // Works just fine... except for the _orignal_ snow flakes in GameLoader.
            float xf = parentTexture.Width / (float)parent.Width;
            float yf = parentTexture.Height / (float)parent.Height;

            x      = (int)Math.Round(x * xf);
            y      = (int)Math.Round(y * yf);
            width  = (int)Math.Round(width * xf);
            height = (int)Math.Round(height * yf);
        }
Ejemplo n.º 2
0
        public MTextureOverride AddOverride(MTextureOverride layer)
        {
            _CachedOverrideMeta    = null;
            _CachedOverrideTexture = null;

            if (layer == null)
            {
                return(null);
            }

            if (_Overrides == null)
            {
                _Overrides = new MTextureOverride[16];
            }

            if (_OverrideCount + 1 >= _Overrides.Length)
            {
                MTextureOverride[] grown = new MTextureOverride[_Overrides.Length * 2];
                Array.Copy(_Overrides, grown, _Overrides.Length);
                _Overrides = grown;
            }
            _Overrides[_OverrideCount] = layer;
            ++_OverrideCount;

            return(layer);
        }
Ejemplo n.º 3
0
 public MTextureOverride AddOverride(MTextureOverride layer)
 {
     if (_Overrides == null)
     {
         _Overrides = new List <MTextureOverride>();
     }
     _Overrides.Add(layer);
     _CachedOverrideMeta    = null;
     _CachedOverrideTexture = null;
     return(layer);
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Add a new override layer.
 /// </summary>
 public static MTextureOverride AddOverride(this MTexture self, MTextureOverride layer)
 => ((patch_MTexture)self).AddOverride(layer);