прилепил возможность самому задавать свои колбэки, с возможностью указывать интервал времени между вызовами (как в XPlane SDK), т.к. далеко не всегда надо вызывать колбэки на каждом цикле обработки флайт модели.
This API allows you to get regular callbacks during the flight loop, the part of X-Plane where the plane’s position calculates the physics of flight, etc. Use these APIs to accomplish periodic tasks like logging data and performing I/O.
И да, привет sasl’у. Они даже рисуют некоторые вещи на каждом цикле флайт модели
inv
01.03.2016 в 13:04
И да, еще пример колбэка, в стиле «ООП» )
FlightLoop = function(freq) {
var freq = freq;
var T = 1/freq;
var prevtSinceFl = 0;
this.update = function(dtLastCall, tSinceFl, counter) {
dt = tSinceFl - prevtSinceFl;
fcc.update(dt);
prevtSinceFl = tSinceFl;
return T;
}
var updId = regFLCallback(this.update, T); // register callback, which is called approx. only 15 times per second
}
var fl = new FlightLoop(15);
К сожалению XPlane не hard realtime система и время до вызова следующего колбэка — это не дэдлайн, а наоборот А жаль.
Ghost-V
01.03.2016 в 14:17
К сожалению XPlane не hard realtime система
Вот тут как раз радоваться надо, что не. По многим причинам
inv
01.03.2016 в 14:20
Вот тут как раз радоваться надо, что не. По многим причинам
Ну ок, перефразирую. Хотелось бы таки API, которое бы гарантировало вызов моего колбэка в неком интервале времени Разве что самому костылять, увеличивая частоту вызовов.
А вообще не вижу проблемы, если риалтайм относительно времени внутри симулятора, XPlane и так время любит тормозить, если не укладывается.
Ghost-V
01.03.2016 в 14:50
Ну ок, перефразирую. Хотелось бы таки API, которое бы гарантировало вызов моего колбэка в неком интервале времени
Ну, можно к таймеру прицепиться. Но череповато разбеганием галактик
А вообще не вижу проблемы, если риалтайм относительно времени внутри симулятора,
Кстати, тогда у меня тут вопрос возникает попутно. Какое время я получаю в параметрах sinceLastCall и sinceLastFlightLoop?
Это время внутри симулятора или вне симулятора?
Ghost-V
01.03.2016 в 15:41
Какое время я получаю в параметрах sinceLastCall и sinceLastFlightLoop? Это время внутри симулятора или вне симулятора?
По логике — модельное. В противном случае невозможна реализация внешних автопилотов, флаев-по-верёвкам и прочих артификал стабильностей. Другое дело, что это время в нормальных условиях отличается от реального чисто символически
inv
01.03.2016 в 16:11
флайт модели или на каждом кадре?
В самом начале написано, что именно речь о флайт моделе.
Хотя в паре мест в доке используется слово cycle и тут же рядом frame как синоним.
This API allows you to get regular callbacks during the flight loop, the part of X-Plane where the plane’s position calculates the physics of flight, etc. Use these APIs to accomplish periodic tasks like logging data and performing I/O.
И да, привет sasl’у. Они даже рисуют некоторые вещи на каждом цикле флайт модели
Сообщение отредактировано inv: 01 March 2016 — 16:32
inv
01.03.2016 в 16:24
По логике — модельное. В противном случае невозможна реализация внешних автопилотов, флаев-по-верёвкам и прочих артификал стабильностей. Другое дело, что это время в нормальных условиях отличается от реального чисто символически
Так вот тут-то и проблема. Это время плавает (и я бы не сказал, что символически)… Грубо говоря на примере выше (обновления 15 раз в секунду). Вид из кабины — 0.076с, переключил на внешний — 0.066с, т.е. 15%, что мягко говоря, дофига. Потому есть все основания предполагать, что это таки не модельное время.
upd: Таки да. То, что я получаю/задаю в колбэках — это реальное время.
Real time can be tracked using XPLMGetElaspedTime. Real time is also the time passed to the XPLMProcessing callback functions, and is the time used to schedule periodic flight loop callbacks.
Так что вот я и говорю — проблема в том, что я не могу привязать колбэк к времени в симуляторе. И не могу потребовать (и получить гарантию) его выполнения каждые t секунд модельного времени.
inv
01.03.2016 в 17:04
И да, еще пример колбэка, в стиле «ООП» )
FlightLoop = function(freq) {
var freq = freq;
var T = 1/freq;
var prevtSinceFl = 0;
this.update = function(dtLastCall, tSinceFl, counter) {
dt = tSinceFl - prevtSinceFl;
fcc.update(dt);
prevtSinceFl = tSinceFl;
return T;
}
var updId = regFLCallback(this.update, T); // register callback, which is called approx. only 15 times per second
}
var fl = new FlightLoop(15);
К сожалению XPlane не hard realtime система и время до вызова следующего колбэка — это не дэдлайн, а наоборот А жаль.
Сообщение отредактировано inv: 01 March 2016 — 17:13
Ghost-V
01.03.2016 в 18:12
upd: Таки да. То, что я получаю/задаю в колбэках — это реальное время.
Что, в принципе, не сильно портит картину при наличии sim/time/sim_speed
Так что вот я и говорю — проблема в том, что я не могу привязать колбэк к времени в симуляторе. И не могу потребовать (и получить гарантию) его выполнения каждые t секунд модельного времени.
(слегка поразмыслив) А так ли уж оно надо? Если sim_speed≈1, то особой проблемы нет. КМК писатели плагинов не сильно заморачиваются отклонениями от такого состояния
Ghost-V
01.03.2016 в 18:17
К сожалению XPlane не hard realtime система
Вот тут как раз радоваться надо, что не. По многим причинам
inv
01.03.2016 в 18:20
Вот тут как раз радоваться надо, что не. По многим причинам
Ну ок, перефразирую. Хотелось бы таки API, которое бы гарантировало вызов моего колбэка в неком интервале времени Разве что самому костылять, увеличивая частоту вызовов.
А вообще не вижу проблемы, если риалтайм относительно времени внутри симулятора, XPlane и так время любит тормозить, если не укладывается.
Сообщение отредактировано inv: 01 March 2016 — 18:24
Ghost-V
01.03.2016 в 18:50
Ну ок, перефразирую. Хотелось бы таки API, которое бы гарантировало вызов моего колбэка в неком интервале времени
Ну, можно к таймеру прицепиться. Но череповато разбеганием галактик
А вообще не вижу проблемы, если риалтайм относительно времени внутри симулятора,
Кстати, тогда у меня тут вопрос возникает попутно. Какое время я получаю в параметрах sinceLastCall и sinceLastFlightLoop?
Это время внутри симулятора или вне симулятора?
Сообщение отредактировано inv: 01 March 2016 — 18:56
inv
01.03.2016 в 19:01
Что, в принципе, не сильно портит картину при наличии sim/time/sim_speed
(слегка поразмыслив) А так ли уж оно надо? Если sim_speed≈1, то особой проблемы нет. КМК писатели плагинов не сильно заморачиваются отклонениями от такого состояния
Ну, хотелось бы, чтобы всё кошерненько было и не лопатить при этом апдейты на каждом цикле обработки флайт модели.
При требуемых 0.0667 оно мне выдает вот такое чудо.
Есть подозрение, что автопилот при таком разбросе будет не всегда адекватно себя вести.
Ghost-V
01.03.2016 в 19:41
Какое время я получаю в параметрах sinceLastCall и sinceLastFlightLoop? Это время внутри симулятора или вне симулятора?
По логике — модельное. В противном случае невозможна реализация внешних автопилотов, флаев-по-верёвкам и прочих артификал стабильностей. Другое дело, что это время в нормальных условиях отличается от реального чисто символически
inv
01.03.2016 в 23:01
Что, в принципе, не сильно портит картину при наличии sim/time/sim_speed
(слегка поразмыслив) А так ли уж оно надо? Если sim_speed≈1, то особой проблемы нет. КМК писатели плагинов не сильно заморачиваются отклонениями от такого состояния
Ну, хотелось бы, чтобы всё кошерненько было и не лопатить при этом апдейты на каждом цикле обработки флайт модели.
При требуемых 0.0667 оно мне выдает вот такое чудо.
Есть подозрение, что автопилот при таком разбросе будет не всегда адекватно себя вести.
Сообщение отредактировано inv: 01 March 2016 — 23:30
Ghost-V
01.03.2016 в 20:01
При требуемых 0.0667 оно мне выдает вот такое чудо.
Живописьненько…
Есть подозрение, что автопилот при таком разбросе будет не всегда адекватно себя вести.
Не исключено. Хотя… инерция немного спасёт.
inv
01.03.2016 в 20:24
По логике — модельное. В противном случае невозможна реализация внешних автопилотов, флаев-по-верёвкам и прочих артификал стабильностей. Другое дело, что это время в нормальных условиях отличается от реального чисто символически
Так вот тут-то и проблема. Это время плавает (и я бы не сказал, что символически)… Грубо говоря на примере выше (обновления 15 раз в секунду). Вид из кабины — 0.076с, переключил на внешний — 0.066с, т.е. 15%, что мягко говоря, дофига. Потому есть все основания предполагать, что это таки не модельное время.
upd: Таки да. То, что я получаю/задаю в колбэках — это реальное время.
Real time can be tracked using XPLMGetElaspedTime. Real time is also the time passed to the XPLMProcessing callback functions, and is the time used to schedule periodic flight loop callbacks.
Так что вот я и говорю — проблема в том, что я не могу привязать колбэк к времени в симуляторе. И не могу потребовать (и получить гарантию) его выполнения каждые t секунд модельного времени.
Сообщение отредактировано inv: 01 March 2016 — 21:44
Ghost-V
01.03.2016 в 22:12
upd: Таки да. То, что я получаю/задаю в колбэках — это реальное время.
Что, в принципе, не сильно портит картину при наличии sim/time/sim_speed
Так что вот я и говорю — проблема в том, что я не могу привязать колбэк к времени в симуляторе. И не могу потребовать (и получить гарантию) его выполнения каждые t секунд модельного времени.
(слегка поразмыслив) А так ли уж оно надо? Если sim_speed≈1, то особой проблемы нет. КМК писатели плагинов не сильно заморачиваются отклонениями от такого состояния
Ghost-V
02.03.2016 в 00:01
При требуемых 0.0667 оно мне выдает вот такое чудо.
Живописьненько…
Есть подозрение, что автопилот при таком разбросе будет не всегда адекватно себя вести.
прилепил возможность самому задавать свои колбэки, с возможностью указывать интервал времени между вызовами (как в XPlane SDK), т.к. далеко не всегда надо вызывать колбэки на каждом цикле обработки флайт модели.
update = function(elapsedSinceLastCall, elapsedSinceLastFlightLoop, counter) { fcc.update(elapsedSinceLastCall); return 0.066; } const updId = regFLCallback(update, 0.066);флайт модели или на каждом кадре?
флайт модели или на каждом кадре?
Сообщение отредактировано skyteacher: 01 March 2016 — 08:10
В самом начале написано, что именно речь о флайт моделе.
Хотя в паре мест в доке используется слово cycle и тут же рядом frame как синоним.
http://www.xsquawkbo…:XPLMProcessing
И да, привет sasl’у. Они даже рисуют некоторые вещи на каждом цикле флайт модели
И да, еще пример колбэка, в стиле «ООП»
)
FlightLoop = function(freq) { var freq = freq; var T = 1/freq; var prevtSinceFl = 0; this.update = function(dtLastCall, tSinceFl, counter) { dt = tSinceFl - prevtSinceFl; fcc.update(dt); prevtSinceFl = tSinceFl; return T; } var updId = regFLCallback(this.update, T); // register callback, which is called approx. only 15 times per second } var fl = new FlightLoop(15);К сожалению XPlane не hard realtime система и время до вызова следующего колбэка — это не дэдлайн, а наоборот
А жаль.
Вот тут как раз радоваться надо, что не. По многим причинам
Ну ок, перефразирую. Хотелось бы таки API, которое бы гарантировало вызов моего колбэка в неком интервале времени
Разве что самому костылять, увеличивая частоту вызовов.
А вообще не вижу проблемы, если риалтайм относительно времени внутри симулятора, XPlane и так время любит тормозить, если не укладывается.
Ну, можно к таймеру прицепиться. Но череповато разбеганием галактик
Дык, вот он сообразно этому рИалу и работает. Не стреляйте в пианиста©
Кстати, тогда у меня тут вопрос возникает попутно. Какое время я получаю в параметрах sinceLastCall и sinceLastFlightLoop?
Это время внутри симулятора или вне симулятора?
По логике — модельное. В противном случае невозможна реализация внешних автопилотов, флаев-по-верёвкам и прочих артификал стабильностей. Другое дело, что это время в нормальных условиях отличается от реального чисто символически
В самом начале написано, что именно речь о флайт моделе.
Хотя в паре мест в доке используется слово cycle и тут же рядом frame как синоним.
http://www.xsquawkbo…:XPLMProcessing
И да, привет sasl’у. Они даже рисуют некоторые вещи на каждом цикле флайт модели
Сообщение отредактировано inv: 01 March 2016 — 16:32
Так вот тут-то и проблема. Это время плавает (и я бы не сказал, что символически)… Грубо говоря на примере выше (обновления 15 раз в секунду). Вид из кабины — 0.076с, переключил на внешний — 0.066с, т.е. 15%, что мягко говоря, дофига. Потому есть все основания предполагать, что это таки не модельное время.
upd: Таки да. То, что я получаю/задаю в колбэках — это реальное время.
http://www.xsquawkbo…/Simulated_Time
Так что вот я и говорю — проблема в том, что я не могу привязать колбэк к времени в симуляторе. И не могу потребовать (и получить гарантию) его выполнения каждые t секунд модельного времени.
И да, еще пример колбэка, в стиле «ООП»
)
FlightLoop = function(freq) { var freq = freq; var T = 1/freq; var prevtSinceFl = 0; this.update = function(dtLastCall, tSinceFl, counter) { dt = tSinceFl - prevtSinceFl; fcc.update(dt); prevtSinceFl = tSinceFl; return T; } var updId = regFLCallback(this.update, T); // register callback, which is called approx. only 15 times per second } var fl = new FlightLoop(15);К сожалению XPlane не hard realtime система и время до вызова следующего колбэка — это не дэдлайн, а наоборот
А жаль.
Сообщение отредактировано inv: 01 March 2016 — 17:13
Что, в принципе, не сильно портит картину при наличии sim/time/sim_speed
(слегка поразмыслив) А так ли уж оно надо? Если sim_speed≈1, то особой проблемы нет. КМК писатели плагинов не сильно заморачиваются отклонениями от такого состояния
Вот тут как раз радоваться надо, что не. По многим причинам
Ну ок, перефразирую. Хотелось бы таки API, которое бы гарантировало вызов моего колбэка в неком интервале времени
Разве что самому костылять, увеличивая частоту вызовов.
А вообще не вижу проблемы, если риалтайм относительно времени внутри симулятора, XPlane и так время любит тормозить, если не укладывается.
Сообщение отредактировано inv: 01 March 2016 — 18:24
Ну, можно к таймеру прицепиться. Но череповато разбеганием галактик
Дык, вот он сообразно этому рИалу и работает. Не стреляйте в пианиста©
Кстати, тогда у меня тут вопрос возникает попутно. Какое время я получаю в параметрах sinceLastCall и sinceLastFlightLoop?
Это время внутри симулятора или вне симулятора?
Сообщение отредактировано inv: 01 March 2016 — 18:56
Ну, хотелось бы, чтобы всё кошерненько было и не лопатить при этом апдейты на каждом цикле обработки флайт модели.
При требуемых 0.0667 оно мне выдает вот такое чудо.
Действия: старт сима. переключение вида, переключение окна, зум, манипуляции с джойстиком.
Есть подозрение, что автопилот при таком разбросе будет не всегда адекватно себя вести.
По логике — модельное. В противном случае невозможна реализация внешних автопилотов, флаев-по-верёвкам и прочих артификал стабильностей. Другое дело, что это время в нормальных условиях отличается от реального чисто символически
Ну, хотелось бы, чтобы всё кошерненько было и не лопатить при этом апдейты на каждом цикле обработки флайт модели.
При требуемых 0.0667 оно мне выдает вот такое чудо.
Действия: старт сима. переключение вида, переключение окна, зум, манипуляции с джойстиком.
Есть подозрение, что автопилот при таком разбросе будет не всегда адекватно себя вести.
Сообщение отредактировано inv: 01 March 2016 — 23:30
Живописьненько…
Не исключено. Хотя… инерция немного спасёт.
Так вот тут-то и проблема. Это время плавает (и я бы не сказал, что символически)… Грубо говоря на примере выше (обновления 15 раз в секунду). Вид из кабины — 0.076с, переключил на внешний — 0.066с, т.е. 15%, что мягко говоря, дофига. Потому есть все основания предполагать, что это таки не модельное время.
upd: Таки да. То, что я получаю/задаю в колбэках — это реальное время.
http://www.xsquawkbo…/Simulated_Time
Так что вот я и говорю — проблема в том, что я не могу привязать колбэк к времени в симуляторе. И не могу потребовать (и получить гарантию) его выполнения каждые t секунд модельного времени.
Сообщение отредактировано inv: 01 March 2016 — 21:44
Что, в принципе, не сильно портит картину при наличии sim/time/sim_speed
(слегка поразмыслив) А так ли уж оно надо? Если sim_speed≈1, то особой проблемы нет. КМК писатели плагинов не сильно заморачиваются отклонениями от такого состояния
Живописьненько…
Не исключено. Хотя… инерция немного спасёт.