public static Kn5 FromFile(string filename, bool skipTextures, bool readNodesAsBytes = true) { if (!File.Exists(filename)) { throw new FileNotFoundException(filename); } var kn5 = new Kn5(filename); using (var reader = new Kn5Reader(filename)) { kn5.FromFile_Header(reader); if (skipTextures) { kn5.FromFile_Textures(reader, BlankKn5TextureLoader.Instance); } else { kn5.FromFile_Textures(reader, DefaultKn5TextureLoader.Instance); } kn5.FromFile_Materials(reader); kn5.FromFile_Nodes(reader, readNodesAsBytes); } return(kn5); }
public void Combine(Kn5 other, float[] position, float[] rotation) { if (position.Any(x => !Equals(x, 0f)) || rotation.Any(x => !Equals(x, 0f))) { other.RootNode.Transform = CalculateMatrix(position, rotation); } Combine(other); }
public static Kn5 FromFile(string filename, IKn5TextureLoader textureLoader = null, IKn5MaterialLoader materialLoader = null, IKn5NodeLoader nodeLoader = null) { if (!File.Exists(filename)) { throw new FileNotFoundException(filename); } var kn5 = new Kn5(filename); (textureLoader = textureLoader ?? DefaultKn5TextureLoader.Instance).OnNewKn5(filename); (materialLoader = materialLoader ?? DefaultKn5MaterialLoader.Instance).OnNewKn5(filename); (nodeLoader = nodeLoader ?? DefaultKn5NodeLoader.Instance).OnNewKn5(filename); using (var reader = new Kn5Reader(filename)) { kn5.FromFile_Header(reader); kn5.FromFile_Textures(reader, textureLoader); if (nodeLoader != SkippingNodeLoader.Instance || materialLoader != SkippingMaterialLoader.Instance) { kn5.FromFile_Materials(reader, materialLoader); kn5.FromFile_Nodes(reader, nodeLoader); } } return(kn5); }
public void DisposeFor(Kn5 kn5) { var keyPrefix = _kn5.OriginalFilename + "//"; var keys = _materials.Keys.Where(x => x.StartsWith(keyPrefix)).ToList(); foreach (var key in keys) { _materials[key].Dispose(); _materials.Remove(key); } }
public static Kn5 FromStream(Stream entry, IKn5TextureLoader textureLoader = null) { var kn5 = new Kn5(string.Empty); using (var reader = new Kn5Reader(entry)) { kn5.FromFile_Header(reader); kn5.FromFile_Textures(reader, textureLoader ?? DefaultKn5TextureLoader.Instance); kn5.FromFile_Materials(reader); kn5.FromFile_Nodes(reader, false); } return(kn5); }
public static Kn5 FromDirectory(string dir, bool jsonMode) { if (!Directory.Exists(dir)) { throw new DirectoryNotFoundException(dir); } var kn5 = new Kn5(dir); kn5.FromDirectory_Header(dir); kn5.FromDirectory_Textures(dir); kn5.FromDirectory_Materials(dir); kn5.FromDirectory_Nodes(dir, jsonMode); return kn5; }
public static Kn5 FromDirectory(string dir, bool jsonMode) { if (!Directory.Exists(dir)) { throw new DirectoryNotFoundException(dir); } var kn5 = new Kn5(dir); kn5.FromDirectory_Header(dir); kn5.FromDirectory_Textures(dir); kn5.FromDirectory_Materials(dir); kn5.FromDirectory_Nodes(dir, jsonMode); return(kn5); }
public static Kn5 FromStream(Stream entry, IKn5TextureLoader textureLoader = null, IKn5MaterialLoader materialLoader = null, IKn5NodeLoader nodeLoader = null) { var kn5 = new Kn5(string.Empty); using (var reader = new Kn5Reader(entry)) { kn5.FromFile_Header(reader); kn5.FromFile_Textures(reader, textureLoader ?? DefaultKn5TextureLoader.Instance); if (nodeLoader != SkippingNodeLoader.Instance || materialLoader != SkippingMaterialLoader.Instance) { kn5.FromFile_Materials(reader, materialLoader ?? DefaultKn5MaterialLoader.Instance); kn5.FromFile_Nodes(reader, nodeLoader ?? DefaultKn5NodeLoader.Instance); } } return(kn5); }
public static Kn5 FromFile(string filename, IKn5TextureLoader textureLoader = null) { if (!File.Exists(filename)) { throw new FileNotFoundException(filename); } var kn5 = new Kn5(filename); using (var reader = new Kn5Reader(filename)) { kn5.FromFile_Header(reader); kn5.FromFile_Textures(reader, textureLoader ?? DefaultKn5TextureLoader.Instance); kn5.FromFile_Materials(reader); kn5.FromFile_Nodes(reader, false); } return(kn5); }
public static Kn5 FromStream(Stream entry, bool skipTextures = false) { var kn5 = new Kn5(string.Empty); using (var reader = new Kn5Reader(entry)) { kn5.FromFile_Header(reader); if (skipTextures) { kn5.FromFile_SkipTextures(reader); } else { kn5.FromFile_Textures(reader); } kn5.FromFile_Materials(reader); kn5.FromFile_Nodes(reader); } return kn5; }
public Task UpdateOverridesForAsync(Kn5 kn5, string textureName, DeviceContextHolder contextHolder) { IOverridedTextureProvider provider; if (!_overridedProviders.TryGetValue(kn5.OriginalFilename, out provider)) return Task.Delay(0); var keyPrefix = kn5.OriginalFilename + "//"; if (OptionOverrideAsync) { return Task.WhenAll(_textures.Where(x => x.Key.StartsWith(keyPrefix)) .Select(key => key.Value) .Where(x => textureName == null || string.Equals(x.Name, textureName, StringComparison.OrdinalIgnoreCase)) .OfType<RenderableTexture>().Select(async texture => { var overrided = await provider.GetOverridedDataAsync(texture.Name); if (overrided != null) { await texture.LoadOverrideAsync(overrided, contextHolder.Device); } else { texture.Override = null; } })); } foreach (var texture in _textures.Where(x => x.Key.StartsWith(keyPrefix)) .Select(key => key.Value) .Where(x => textureName == null || string.Equals(x.Name, textureName, StringComparison.OrdinalIgnoreCase)) .OfType<RenderableTexture>()) { try { var overrided = provider.GetOverridedData(texture.Name); if (overrided != null) { texture.LoadOverride(overrided, contextHolder.Device); } else { texture.Override = null; } } catch (Exception e) { Logging.Warning("Can’t load override texture: " + e); texture.Override = null; } } return Task.Delay(0); }
public static Kn5 FromFile(string filename, bool skipTextures = false) { if (!File.Exists(filename)) { throw new FileNotFoundException(filename); } var kn5 = new Kn5(filename); using (var reader = new Kn5Reader(filename)) { kn5.FromFile_Header(reader); if (skipTextures) { kn5.FromFile_SkipTextures(reader); } else { kn5.FromFile_Textures(reader); } kn5.FromFile_Materials(reader); kn5.FromFile_Nodes(reader); } return kn5; }
public TrackMapPreparationRenderer(Kn5 kn5) : base(kn5) { Camera = new CameraOrtho(); }
public CarTextureDialogViewModel([CanBeNull] BaseRenderer renderer, [CanBeNull] CarSkinObject activeSkin, [NotNull] Kn5 kn5, [NotNull] string textureName) { _renderer = renderer; _activeSkin = activeSkin; _kn5 = kn5; TextureName = textureName; var format = Regex.Match(textureName, @"(?<=\.)([a-zA-Z]{3,4})$").Value; TextureFormat = string.IsNullOrWhiteSpace(format) ? null : format.ToUpperInvariant(); byte[] data; Data = kn5.TexturesData.TryGetValue(textureName, out data) ? data : null; }
public void Combine(Kn5 other) { RootNode.Children.Add(other.RootNode); }
public void DisposeFor(Kn5 kn5) { var keyPrefix = kn5.OriginalFilename + "//"; var keys = _textures.Keys.Where(x => x.StartsWith(keyPrefix)).ToList(); foreach (var key in keys) { _textures[key].Dispose(); _textures.Remove(key); } var entry = _kn5Entries.FirstOrDefault(x => x.Kn5 == kn5); if (entry == null) return; _kn5Entries.Remove(entry); }
public Task UpdateOverridesForAsync(Kn5 kn5, DeviceContextHolder contextHolder) { return UpdateOverridesForAsync(kn5, null, contextHolder); }
public IEnumerable<IRenderableTexture> GetFor(Kn5 kn5) { var keyPrefix = kn5.OriginalFilename + "//"; return _textures.Where(x => x.Key.StartsWith(keyPrefix)).Select(key => key.Value); }
public TrackMapRenderer(Kn5 kn5) { _kn5 = kn5; }
public UvRenderer(Kn5 kn5) { _kn5 = kn5; Width = 2048; Height = 2048; }
public void SetKn5(Kn5 kn5) { _kn5 = kn5; }
public void SetKn5(string filename, Kn5 kn5) { _kn5Entries.Add(new Kn5Entry { Filename = filename, Kn5 = kn5 }); }
public AmbientShadowKn5ObjectRenderer(Kn5 kn5, string carLocation = null) { _kn5 = kn5; _carHelper = new CarHelper(_kn5, carLocation); _scene = new RenderableList(); }