public ThermalRenderingData <C> GetThermalData <T, C>(uint level, int time) where T : ThermalDataT <C>, new() where C : struct { ThermalDataBase levelData = thermalData[level]; if (levelData == null || !(levelData is T) || time < levelData.startTime || time >= levelData.endTime) { LoadThermalData <T, C>(level, time); levelData = (ThermalDataT <C>)thermalData[level]; if (levelData == null || levelData.Cells <C>() == null) { Debug.LogWarning("No thermal data found for level " + level); return(null); } } int sampleIndex = (time % fileTimeInterval) / sampleInterval; ThermalFrame frame = levelData.frames[sampleIndex + 1]; ThermalRenderingData <C> renderData = new ThermalRenderingData <C>(); renderData.cells = levelData.Cells <C>(); renderData.cellType = level < maxLevel ? CellType.GroundQuad : CellType.Billboard; renderData.startIndex = levelData.frames[sampleIndex].offset; renderData.endIndex = frame.offset; renderData.minTemperature = frame.minTemperature; renderData.maxTemperature = frame.minTemperature + frame.temperatureRange; renderData.resolution = (uint)Math.Pow(2, level); return(renderData); }
public override void LoadThermalData <T, C>() { if (thermalData == null || !(thermalData is T)) { thermalData = new T(); } VisionDataIO.LoadFromBinary(visionFile, thermalData as T, ref dataHeader); }
private void Init() { // Reset thermal data thermalData = null; }