/// <summary> /// Check if a specific version of Blender is present /// </summary> public bool IsVersionAvailable(string version) { //if (!SystemInfo.IsOS(SystemInfo.OS_MACOS)) return(Directory.Exists(GetVersionPath(version, SystemInfo.GetOSName()))); //else // return File.Exists(GetVersionPath(version, SystemInfo.GetOSName()) + ".dmg"); }
public ComputerInfoResponse Packet_ComputerInfo(ComputerInfoRequest req) { return(new ComputerInfoResponse() { Cores = Environment.ProcessorCount, Name = Environment.MachineName, OS = SystemInfo.GetOSName() }); }
/// <summary> /// Renders a batch of render settings in a single Blender instance. /// </summary> public List <string> RenderBatch(string version, string file, BlenderRenderSettings[] batch, Action <BlenderProcess> beforeStart = null) { if (Busy) { throw new InvalidOperationException("Currently already rendering"); } Busy = true; try { Directory.CreateDirectory(Path.GetFullPath(RenderData)); string os = SystemInfo.GetOSName(); string blenderDir = GetVersionPath(version, os); try { FinalizeSettings(batch); } catch (Exception ex) { throw new Exception("Failed to parse/finalize settings due to:" + ex.Message); } string json = JsonSerializer.Serialize(batch); UseTemporaryFile(json, (path) => { string cmd = $"{blenderDir}/blender"; //MacOS has to be special. if (SystemInfo.IsOS(SystemInfo.OS_MACOS)) { cmd = $"{blenderDir}/Contents/MacOS/Blender"; } string arg = $"--factory-startup -noaudio -b \"{Path.GetFullPath(file)}\" -P \"{GetRenderScriptPath()}\" -- \"{path}\""; RenderProcess = new BlenderProcess(cmd, arg); if (beforeStart != null) { beforeStart(RenderProcess); } RenderProcess.Run(); }); return(batch.Select(x => x.Output).ToList()); } finally { RenderSession = null; RenderProcess = null; Busy = false; } }
public static bool IsVersionValid(string blenderDataPath, string version) { string os = SystemInfo.GetOSName(); string blenderDir = GetVersionPath(blenderDataPath, version, os); if (!Directory.Exists(blenderDir)) { return(false); } return(File.Exists(GetVersionExecutablePath(blenderDataPath, version))); }
public static string GetVersionExecutablePath(string blenderDataPath, string version) { string os = SystemInfo.GetOSName(); string blenderDir = GetVersionPath(blenderDataPath, version, os); string executable = null; switch (os) { case SystemInfo.OS_WINDOWS64: executable = $"{blenderDir}/blender.exe"; break; case SystemInfo.OS_LINUX64: executable = $"{blenderDir}/blender"; break; case SystemInfo.OS_MACOS: executable = $"{blenderDir}/Contents/MacOS/Blender"; break; } return(executable); }
/// <summary> /// Prepare a version of Blender /// </summary> /// <param name="version"></param> public void Prepare(string version) { BlenderVersion v = BlenderVersion.FindVersion(version, SystemInfo.RelativeToApplicationDirectory("VersionCache"), SystemInfo.RelativeToApplicationDirectory("VersionCustom")); if (v == null) { throw new ArgumentException("Version not found"); } string targetDir = GetVersionPath(version, SystemInfo.GetOSName()); if (Directory.Exists(targetDir)) { Console.WriteLine($"{version} already present"); } else if (v.IsCustom) { throw new ArgumentException("Custom version missing"); } else { Download(SystemInfo.GetOSName(), v); } }
public SyncResponse Packet_SyncNetwork(SyncNetworkRequest req) { try { if (!sessions.Contains(req.SessionID)) { sessions.Add(req.SessionID); } SessionData session = SessionData.GetOrCreate(req.SessionID); string uploadID = Guid.NewGuid().ToString(); if (req.FileID != session.FileID) { session.UpdatingFile(); string path = null; switch (SystemInfo.GetOSName()) { case SystemInfo.OS_WINDOWS64: path = req.WindowsPath; break; case SystemInfo.OS_LINUX64: path = req.LinuxPath; break; case SystemInfo.OS_MACOS: path = req.MacOSPath; break; default: throw new NotImplementedException("Unknown OS"); } string sessionPath = SessionUtil.GetSessionNetworkPath(path, req.SessionID); if (!File.Exists(sessionPath)) { throw new InvalidOperationException($"File does not exist [{sessionPath}]"); } session.IsNetworked = true; session.NetworkedPath = sessionPath; session.UpdatedFile(req.FileID); } return(new SyncResponse() { Success = true, SameFile = req.FileID == session.FileID, UploadID = uploadID }); } catch (Exception ex) { return(new SyncResponse() { Success = false, Message = "Failed due to exception:" + ex.Message }); } }
/// <summary> /// Returns OS version, Blender formatted (eg. windows64, linux64) /// </summary> public string GetOSVersion() { return(SystemInfo.GetOSName()); }