// The data line.
log_print("%" SCS_PF_U64 ";%" SCS_PF_U64 ";%" SCS_PF_U64 ";%" SCS_PF_U64, telemetry->timestamp, telemetry->raw_rendering_timestamp, telemetry->raw_simulation_timestamp, telemetry->raw_paused_simulation_timestamp);
- if (telemetry->orientation_available) {
+ if (telemetry->placement_available) {
log_print(";%f;%f;%f", telemetry->heading, telemetry->pitch, telemetry->roll);
}
else {
// Handling of individual channels.
-SCSAPI_VOID telemetry_store_orientation(const scs_string_t name, const scs_u32_t index, const scs_value_t *const value, const scs_context_t context)
+SCSAPI_VOID telemetry_store_dplacement(const scs_string_t name, const scs_u32_t index, const scs_value_t *const value, const scs_context_t context)
{
assert(context);
- telemetry_state_t *const state = static_cast<telemetry_state_t *>(context);
+ telemetry_state_t *const tele = static_cast<telemetry_state_t *>(context);
// This callback was registered with the SCS_TELEMETRY_CHANNEL_FLAG_no_value flag
// so it is called even when the value is not available.
-
- if (! value) {
- state->orientation_available = false;
+ if ( !value || value->type != SCS_VALUE_TYPE_dplacement ) {
+ tele->placement_available = false;
return;
}
-
- assert(value);
- assert(value->type == SCS_VALUE_TYPE_euler);
- state->orientation_available = true;
- state->heading = value->value_euler.heading * 360.0f;
- state->pitch = value->value_euler.pitch * 360.0f;
- state->roll = value->value_euler.roll * 360.0f;
+ tele->placement_available = true;
+ tele->x = value->value_dplacement.position.x;
+ tele->y = value->value_dplacement.position.y;
+ tele->z = value->value_dplacement.position.z;
+ tele->heading = value->value_dplacement.orientation.heading;
+ tele->pitch = value->value_dplacement.orientation.pitch;
+ tele->roll = value->value_dplacement.orientation.roll;
}
SCSAPI_VOID telemetry_store_float(const scs_string_t name, const scs_u32_t index, const scs_value_t *const value, const scs_context_t context)
// (SCS_RESULT_unsupported_type). For purpose of this example we ignore the failues
// so the unsupported channels will remain at theirs default value.
- version_params->register_for_channel(SCS_TELEMETRY_TRUCK_CHANNEL_world_placement, SCS_U32_NIL, SCS_VALUE_TYPE_euler, SCS_TELEMETRY_CHANNEL_FLAG_no_value, telemetry_store_orientation, &telemetry);
+ version_params->register_for_channel(SCS_TELEMETRY_TRUCK_CHANNEL_world_placement, SCS_U32_NIL, SCS_VALUE_TYPE_dplacement, SCS_TELEMETRY_CHANNEL_FLAG_no_value, telemetry_store_dplacement, telemetry);
version_params->register_for_channel(SCS_TELEMETRY_TRUCK_CHANNEL_speed, SCS_U32_NIL, SCS_VALUE_TYPE_float, SCS_TELEMETRY_CHANNEL_FLAG_none, telemetry_store_float, &telemetry->speed);
version_params->register_for_channel(SCS_TELEMETRY_TRUCK_CHANNEL_engine_rpm, SCS_U32_NIL, SCS_VALUE_TYPE_float, SCS_TELEMETRY_CHANNEL_FLAG_none, telemetry_store_float, &telemetry->rpm);
version_params->register_for_channel(SCS_TELEMETRY_TRUCK_CHANNEL_engine_gear, SCS_U32_NIL, SCS_VALUE_TYPE_s32, SCS_TELEMETRY_CHANNEL_FLAG_none, telemetry_store_s32, &telemetry->gear);