public override TimeRecord<Vector3d<double>> GetRecordAt(ITime2 at, List<string> eventArgMessages) { if (at.DurationInDays > 0) throw new Exception(); var vs = _engineProxy.GetComponent1Values(at.StampAsModifiedJulianDay, _link.ID); var record = ToTimeRecord(at, vs, _missingValue); _cache.Add(record); if (_cache.Count > 0) ((Utilities.Standard1.DummyComponent1Target)_link.TargetComponent).EarliestInputTime = new Utilities.Standard1.TimeStamp(_cache[0].Time.StampAsModifiedJulianDay); return base.GetRecordAt(at, eventArgMessages); }
static TimeRecord<Vector3d<double>> ToTimeRecord(ITime2 time2, IValueSet vs, Vector3d<double> missingValue) { var vectorSet = vs as IVectorSet; if (vectorSet == null) throw new Exception("Scalar set should be using ValueSetConverterTimeEngineDoubleStandard1"); var values = new Vector3d<double>[vectorSet.Count]; for (int n = 0; n < vectorSet.Count; ++n) { if (vectorSet.IsValid(n)) { var vector = vectorSet.GetVector(n); values[n] = new Vector3d<double>( vector.XComponent, vector.YComponent, vector.ZComponent); } else values[n] = missingValue; } return new TimeRecord<Vector3d<double>>(time2, values); }
static TimeRecord<double> ToTimeRecord(ITime2 time2, IValueSet vs, double missingValue) { var scalarSet = vs as IScalarSet; if (scalarSet == null) throw new Exception("Vector set should be using ValueSetConverterTimeEngineDoubleVector3dStandard1"); var values = new double[scalarSet.Count]; for (int n = 0; n < scalarSet.Count; ++n) values[n] = scalarSet.IsValid(n) ? scalarSet.GetScalar(n) : missingValue; return new TimeRecord<double>(time2, values); }