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);
    }
Пример #2
0
    public override void LoadThermalData <T, C>()
    {
        if (thermalData == null || !(thermalData is T))
        {
            thermalData = new T();
        }

        VisionDataIO.LoadFromBinary(visionFile, thermalData as T, ref dataHeader);
    }
Пример #3
0
 private void Init()
 {
     // Reset thermal data
     thermalData = null;
 }