diff --git a/protocol/cpp/include/solarxr_protocol/generated/all_generated.h b/protocol/cpp/include/solarxr_protocol/generated/all_generated.h index 799ab388..d5487943 100644 --- a/protocol/cpp/include/solarxr_protocol/generated/all_generated.h +++ b/protocol/cpp/include/solarxr_protocol/generated/all_generated.h @@ -5923,14 +5923,21 @@ inline flatbuffers::Offset CreateHeartbeatResponse( struct ResetRequest FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef ResetRequestBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_RESET_TYPE = 4 + VT_RESET_TYPE = 4, + VT_BODY_PARTS = 6 }; solarxr_protocol::rpc::ResetType reset_type() const { return static_cast(GetField(VT_RESET_TYPE, 0)); } + /// Which body parts to reset. Server handles it if empty (usually all) + const flatbuffers::Vector *body_parts() const { + return GetPointer *>(VT_BODY_PARTS); + } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_RESET_TYPE, 1) && + VerifyOffset(verifier, VT_BODY_PARTS) && + verifier.VerifyVector(body_parts()) && verifier.EndTable(); } }; @@ -5942,6 +5949,9 @@ struct ResetRequestBuilder { void add_reset_type(solarxr_protocol::rpc::ResetType reset_type) { fbb_.AddElement(ResetRequest::VT_RESET_TYPE, static_cast(reset_type), 0); } + void add_body_parts(flatbuffers::Offset> body_parts) { + fbb_.AddOffset(ResetRequest::VT_BODY_PARTS, body_parts); + } explicit ResetRequestBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); @@ -5955,12 +5965,25 @@ struct ResetRequestBuilder { inline flatbuffers::Offset CreateResetRequest( flatbuffers::FlatBufferBuilder &_fbb, - solarxr_protocol::rpc::ResetType reset_type = solarxr_protocol::rpc::ResetType::Yaw) { + solarxr_protocol::rpc::ResetType reset_type = solarxr_protocol::rpc::ResetType::Yaw, + flatbuffers::Offset> body_parts = 0) { ResetRequestBuilder builder_(_fbb); + builder_.add_body_parts(body_parts); builder_.add_reset_type(reset_type); return builder_.Finish(); } +inline flatbuffers::Offset CreateResetRequestDirect( + flatbuffers::FlatBufferBuilder &_fbb, + solarxr_protocol::rpc::ResetType reset_type = solarxr_protocol::rpc::ResetType::Yaw, + const std::vector *body_parts = nullptr) { + auto body_parts__ = body_parts ? _fbb.CreateVector(*body_parts) : 0; + return solarxr_protocol::rpc::CreateResetRequest( + _fbb, + reset_type, + body_parts__); +} + struct ResetResponse FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef ResetResponseBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { @@ -7272,15 +7295,11 @@ inline flatbuffers::Offset CreateTapDetectionSettings( struct ResetsSettings FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef ResetsSettingsBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_RESET_MOUNTING_FEET = 4, VT_ARMS_MOUNTING_RESET_MODE = 6, VT_YAW_RESET_SMOOTH_TIME = 8, VT_SAVE_MOUNTING_RESET = 10, VT_RESET_HMD_PITCH = 12 }; - bool reset_mounting_feet() const { - return GetField(VT_RESET_MOUNTING_FEET, 0) != 0; - } solarxr_protocol::rpc::ArmsMountingResetMode arms_mounting_reset_mode() const { return static_cast(GetField(VT_ARMS_MOUNTING_RESET_MODE, 0)); } @@ -7295,7 +7314,6 @@ struct ResetsSettings FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && - VerifyField(verifier, VT_RESET_MOUNTING_FEET, 1) && VerifyField(verifier, VT_ARMS_MOUNTING_RESET_MODE, 1) && VerifyField(verifier, VT_YAW_RESET_SMOOTH_TIME, 4) && VerifyField(verifier, VT_SAVE_MOUNTING_RESET, 1) && @@ -7308,9 +7326,6 @@ struct ResetsSettingsBuilder { typedef ResetsSettings Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; - void add_reset_mounting_feet(bool reset_mounting_feet) { - fbb_.AddElement(ResetsSettings::VT_RESET_MOUNTING_FEET, static_cast(reset_mounting_feet), 0); - } void add_arms_mounting_reset_mode(solarxr_protocol::rpc::ArmsMountingResetMode arms_mounting_reset_mode) { fbb_.AddElement(ResetsSettings::VT_ARMS_MOUNTING_RESET_MODE, static_cast(arms_mounting_reset_mode), 0); } @@ -7336,7 +7351,6 @@ struct ResetsSettingsBuilder { inline flatbuffers::Offset CreateResetsSettings( flatbuffers::FlatBufferBuilder &_fbb, - bool reset_mounting_feet = false, solarxr_protocol::rpc::ArmsMountingResetMode arms_mounting_reset_mode = solarxr_protocol::rpc::ArmsMountingResetMode::BACK, float yaw_reset_smooth_time = 0.0f, bool save_mounting_reset = false, @@ -7346,7 +7360,6 @@ inline flatbuffers::Offset CreateResetsSettings( builder_.add_reset_hmd_pitch(reset_hmd_pitch); builder_.add_save_mounting_reset(save_mounting_reset); builder_.add_arms_mounting_reset_mode(arms_mounting_reset_mode); - builder_.add_reset_mounting_feet(reset_mounting_feet); return builder_.Finish(); } diff --git a/protocol/java/src/solarxr_protocol/rpc/ResetRequest.java b/protocol/java/src/solarxr_protocol/rpc/ResetRequest.java index cca86e83..8d10d89f 100644 --- a/protocol/java/src/solarxr_protocol/rpc/ResetRequest.java +++ b/protocol/java/src/solarxr_protocol/rpc/ResetRequest.java @@ -16,16 +16,31 @@ public final class ResetRequest extends Table { public ResetRequest __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; } public int resetType() { int o = __offset(4); return o != 0 ? bb.get(o + bb_pos) & 0xFF : 0; } + /** + * Which body parts to reset. Server handles it if empty (usually all) + */ + public int bodyParts(int j) { int o = __offset(6); return o != 0 ? bb.get(__vector(o) + j * 1) & 0xFF : 0; } + public int bodyPartsLength() { int o = __offset(6); return o != 0 ? __vector_len(o) : 0; } + public ByteVector bodyPartsVector() { return bodyPartsVector(new ByteVector()); } + public ByteVector bodyPartsVector(ByteVector obj) { int o = __offset(6); return o != 0 ? obj.__assign(__vector(o), bb) : null; } + public ByteBuffer bodyPartsAsByteBuffer() { return __vector_as_bytebuffer(6, 1); } + public ByteBuffer bodyPartsInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 6, 1); } public static int createResetRequest(FlatBufferBuilder builder, - int resetType) { - builder.startTable(1); + int resetType, + int bodyPartsOffset) { + builder.startTable(2); + ResetRequest.addBodyParts(builder, bodyPartsOffset); ResetRequest.addResetType(builder, resetType); return ResetRequest.endResetRequest(builder); } - public static void startResetRequest(FlatBufferBuilder builder) { builder.startTable(1); } + public static void startResetRequest(FlatBufferBuilder builder) { builder.startTable(2); } public static void addResetType(FlatBufferBuilder builder, int resetType) { builder.addByte(0, (byte) resetType, (byte) 0); } + public static void addBodyParts(FlatBufferBuilder builder, int bodyPartsOffset) { builder.addOffset(1, bodyPartsOffset, 0); } + public static int createBodyPartsVector(FlatBufferBuilder builder, byte[] data) { return builder.createByteVector(data); } + public static int createBodyPartsVector(FlatBufferBuilder builder, ByteBuffer data) { return builder.createByteVector(data); } + public static void startBodyPartsVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); } public static int endResetRequest(FlatBufferBuilder builder) { int o = builder.endTable(); return o; @@ -45,12 +60,23 @@ public ResetRequestT unpack() { public void unpackTo(ResetRequestT _o) { int _oResetType = resetType(); _o.setResetType(_oResetType); + int[] _oBodyParts = new int[bodyPartsLength()]; + for (int _j = 0; _j < bodyPartsLength(); ++_j) {_oBodyParts[_j] = bodyParts(_j);} + _o.setBodyParts(_oBodyParts); } public static int pack(FlatBufferBuilder builder, ResetRequestT _o) { if (_o == null) return 0; + int _bodyParts = 0; + if (_o.getBodyParts() != null) { + byte[] __bodyParts = new byte[_o.getBodyParts().length]; + int _j = 0; + for (int _e : _o.getBodyParts()) { __bodyParts[_j] = (byte) _e; _j++;} + _bodyParts = createBodyPartsVector(builder, __bodyParts); + } return createResetRequest( builder, - _o.getResetType()); + _o.getResetType(), + _bodyParts); } } diff --git a/protocol/java/src/solarxr_protocol/rpc/ResetRequestT.java b/protocol/java/src/solarxr_protocol/rpc/ResetRequestT.java index 7d11b5af..2883685b 100644 --- a/protocol/java/src/solarxr_protocol/rpc/ResetRequestT.java +++ b/protocol/java/src/solarxr_protocol/rpc/ResetRequestT.java @@ -9,14 +9,20 @@ public class ResetRequestT { private int resetType; + private int[] bodyParts; public int getResetType() { return resetType; } public void setResetType(int resetType) { this.resetType = resetType; } + public int[] getBodyParts() { return bodyParts; } + + public void setBodyParts(int[] bodyParts) { this.bodyParts = bodyParts; } + public ResetRequestT() { this.resetType = 0; + this.bodyParts = null; } } diff --git a/protocol/java/src/solarxr_protocol/rpc/ResetsSettings.java b/protocol/java/src/solarxr_protocol/rpc/ResetsSettings.java index 75ff71c2..1cc0b129 100644 --- a/protocol/java/src/solarxr_protocol/rpc/ResetsSettings.java +++ b/protocol/java/src/solarxr_protocol/rpc/ResetsSettings.java @@ -15,14 +15,12 @@ public final class ResetsSettings extends Table { public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); } public ResetsSettings __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; } - public boolean resetMountingFeet() { int o = __offset(4); return o != 0 ? 0!=bb.get(o + bb_pos) : false; } public int armsMountingResetMode() { int o = __offset(6); return o != 0 ? bb.get(o + bb_pos) & 0xFF : 0; } public float yawResetSmoothTime() { int o = __offset(8); return o != 0 ? bb.getFloat(o + bb_pos) : 0.0f; } public boolean saveMountingReset() { int o = __offset(10); return o != 0 ? 0!=bb.get(o + bb_pos) : false; } public boolean resetHmdPitch() { int o = __offset(12); return o != 0 ? 0!=bb.get(o + bb_pos) : false; } public static int createResetsSettings(FlatBufferBuilder builder, - boolean resetMountingFeet, int armsMountingResetMode, float yawResetSmoothTime, boolean saveMountingReset, @@ -32,12 +30,10 @@ public static int createResetsSettings(FlatBufferBuilder builder, ResetsSettings.addResetHmdPitch(builder, resetHmdPitch); ResetsSettings.addSaveMountingReset(builder, saveMountingReset); ResetsSettings.addArmsMountingResetMode(builder, armsMountingResetMode); - ResetsSettings.addResetMountingFeet(builder, resetMountingFeet); return ResetsSettings.endResetsSettings(builder); } public static void startResetsSettings(FlatBufferBuilder builder) { builder.startTable(5); } - public static void addResetMountingFeet(FlatBufferBuilder builder, boolean resetMountingFeet) { builder.addBoolean(0, resetMountingFeet, false); } public static void addArmsMountingResetMode(FlatBufferBuilder builder, int armsMountingResetMode) { builder.addByte(1, (byte) armsMountingResetMode, (byte) 0); } public static void addYawResetSmoothTime(FlatBufferBuilder builder, float yawResetSmoothTime) { builder.addFloat(2, yawResetSmoothTime, 0.0f); } public static void addSaveMountingReset(FlatBufferBuilder builder, boolean saveMountingReset) { builder.addBoolean(3, saveMountingReset, false); } @@ -59,8 +55,6 @@ public ResetsSettingsT unpack() { return _o; } public void unpackTo(ResetsSettingsT _o) { - boolean _oResetMountingFeet = resetMountingFeet(); - _o.setResetMountingFeet(_oResetMountingFeet); int _oArmsMountingResetMode = armsMountingResetMode(); _o.setArmsMountingResetMode(_oArmsMountingResetMode); float _oYawResetSmoothTime = yawResetSmoothTime(); @@ -74,7 +68,6 @@ public static int pack(FlatBufferBuilder builder, ResetsSettingsT _o) { if (_o == null) return 0; return createResetsSettings( builder, - _o.getResetMountingFeet(), _o.getArmsMountingResetMode(), _o.getYawResetSmoothTime(), _o.getSaveMountingReset(), diff --git a/protocol/java/src/solarxr_protocol/rpc/ResetsSettingsT.java b/protocol/java/src/solarxr_protocol/rpc/ResetsSettingsT.java index 0fe0addf..fb4ab4b4 100644 --- a/protocol/java/src/solarxr_protocol/rpc/ResetsSettingsT.java +++ b/protocol/java/src/solarxr_protocol/rpc/ResetsSettingsT.java @@ -8,16 +8,11 @@ import com.google.flatbuffers.*; public class ResetsSettingsT { - private boolean resetMountingFeet; private int armsMountingResetMode; private float yawResetSmoothTime; private boolean saveMountingReset; private boolean resetHmdPitch; - public boolean getResetMountingFeet() { return resetMountingFeet; } - - public void setResetMountingFeet(boolean resetMountingFeet) { this.resetMountingFeet = resetMountingFeet; } - public int getArmsMountingResetMode() { return armsMountingResetMode; } public void setArmsMountingResetMode(int armsMountingResetMode) { this.armsMountingResetMode = armsMountingResetMode; } @@ -36,7 +31,6 @@ public class ResetsSettingsT { public ResetsSettingsT() { - this.resetMountingFeet = false; this.armsMountingResetMode = 0; this.yawResetSmoothTime = 0.0f; this.saveMountingReset = false; diff --git a/protocol/kotlin/src/solarxr_protocol/rpc/ResetRequest.kt b/protocol/kotlin/src/solarxr_protocol/rpc/ResetRequest.kt index 43b6616c..9a3d78f1 100644 --- a/protocol/kotlin/src/solarxr_protocol/rpc/ResetRequest.kt +++ b/protocol/kotlin/src/solarxr_protocol/rpc/ResetRequest.kt @@ -21,6 +21,23 @@ class ResetRequest : Table() { val o = __offset(4) return if(o != 0) bb.get(o + bb_pos).toUByte() else 0u } + /** + * Which body parts to reset. Server handles it if empty (usually all) + */ + fun bodyParts(j: Int) : UByte { + val o = __offset(6) + return if (o != 0) { + bb.get(__vector(o) + j * 1).toUByte() + } else { + 0u + } + } + val bodyPartsLength : Int + get() { + val o = __offset(6); return if (o != 0) __vector_len(o) else 0 + } + val bodyPartsAsByteBuffer : ByteBuffer get() = __vector_as_bytebuffer(6, 1) + fun bodyPartsInByteBuffer(_bb: ByteBuffer) : ByteBuffer = __vector_in_bytebuffer(_bb, 6, 1) companion object { @JvmStatic fun validateVersion() = Constants.FLATBUFFERS_22_10_26() @@ -32,16 +49,29 @@ class ResetRequest : Table() { return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)) } @JvmStatic - fun createResetRequest(builder: FlatBufferBuilder, resetType: UByte) : Int { - builder.startTable(1) + fun createResetRequest(builder: FlatBufferBuilder, resetType: UByte, bodyPartsOffset: Int) : Int { + builder.startTable(2) + addBodyParts(builder, bodyPartsOffset) addResetType(builder, resetType) return endResetRequest(builder) } @JvmStatic - fun startResetRequest(builder: FlatBufferBuilder) = builder.startTable(1) + fun startResetRequest(builder: FlatBufferBuilder) = builder.startTable(2) @JvmStatic fun addResetType(builder: FlatBufferBuilder, resetType: UByte) = builder.addByte(0, resetType.toByte(), 0) @JvmStatic + fun addBodyParts(builder: FlatBufferBuilder, bodyParts: Int) = builder.addOffset(1, bodyParts, 0) + @JvmStatic + fun createBodyPartsVector(builder: FlatBufferBuilder, data: UByteArray) : Int { + builder.startVector(1, data.size, 1) + for (i in data.size - 1 downTo 0) { + builder.addByte(data[i].toByte()) + } + return builder.endVector() + } + @JvmStatic + fun startBodyPartsVector(builder: FlatBufferBuilder, numElems: Int) = builder.startVector(1, numElems, 1) + @JvmStatic fun endResetRequest(builder: FlatBufferBuilder) : Int { val o = builder.endTable() return o diff --git a/protocol/kotlin/src/solarxr_protocol/rpc/ResetsSettings.kt b/protocol/kotlin/src/solarxr_protocol/rpc/ResetsSettings.kt index 1ff79fa1..a135ffb2 100644 --- a/protocol/kotlin/src/solarxr_protocol/rpc/ResetsSettings.kt +++ b/protocol/kotlin/src/solarxr_protocol/rpc/ResetsSettings.kt @@ -16,11 +16,6 @@ class ResetsSettings : Table() { __init(_i, _bb) return this } - val resetMountingFeet : Boolean - get() { - val o = __offset(4) - return if(o != 0) 0.toByte() != bb.get(o + bb_pos) else false - } val armsMountingResetMode : UByte get() { val o = __offset(6) @@ -52,20 +47,17 @@ class ResetsSettings : Table() { return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)) } @JvmStatic - fun createResetsSettings(builder: FlatBufferBuilder, resetMountingFeet: Boolean, armsMountingResetMode: UByte, yawResetSmoothTime: Float, saveMountingReset: Boolean, resetHmdPitch: Boolean) : Int { + fun createResetsSettings(builder: FlatBufferBuilder, armsMountingResetMode: UByte, yawResetSmoothTime: Float, saveMountingReset: Boolean, resetHmdPitch: Boolean) : Int { builder.startTable(5) addYawResetSmoothTime(builder, yawResetSmoothTime) addResetHmdPitch(builder, resetHmdPitch) addSaveMountingReset(builder, saveMountingReset) addArmsMountingResetMode(builder, armsMountingResetMode) - addResetMountingFeet(builder, resetMountingFeet) return endResetsSettings(builder) } @JvmStatic fun startResetsSettings(builder: FlatBufferBuilder) = builder.startTable(5) @JvmStatic - fun addResetMountingFeet(builder: FlatBufferBuilder, resetMountingFeet: Boolean) = builder.addBoolean(0, resetMountingFeet, false) - @JvmStatic fun addArmsMountingResetMode(builder: FlatBufferBuilder, armsMountingResetMode: UByte) = builder.addByte(1, armsMountingResetMode.toByte(), 0) @JvmStatic fun addYawResetSmoothTime(builder: FlatBufferBuilder, yawResetSmoothTime: Float) = builder.addFloat(2, yawResetSmoothTime, 0.0) diff --git a/protocol/rust/src/generated/solarxr_protocol/rpc/reset_request_generated.rs b/protocol/rust/src/generated/solarxr_protocol/rpc/reset_request_generated.rs index b1a40ddf..e474370d 100644 --- a/protocol/rust/src/generated/solarxr_protocol/rpc/reset_request_generated.rs +++ b/protocol/rust/src/generated/solarxr_protocol/rpc/reset_request_generated.rs @@ -26,6 +26,7 @@ impl<'a> flatbuffers::Follow<'a> for ResetRequest<'a> { impl<'a> ResetRequest<'a> { pub const VT_RESET_TYPE: flatbuffers::VOffsetT = 4; + pub const VT_BODY_PARTS: flatbuffers::VOffsetT = 6; #[inline] pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { @@ -34,9 +35,10 @@ impl<'a> ResetRequest<'a> { #[allow(unused_mut)] pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, - args: &'args ResetRequestArgs + args: &'args ResetRequestArgs<'args> ) -> flatbuffers::WIPOffset> { let mut builder = ResetRequestBuilder::new(_fbb); + if let Some(x) = args.body_parts { builder.add_body_parts(x); } builder.add_reset_type(args.reset_type); builder.finish() } @@ -49,6 +51,14 @@ impl<'a> ResetRequest<'a> { // which contains a valid value in this slot unsafe { self._tab.get::(ResetRequest::VT_RESET_TYPE, Some(ResetType::Yaw)).unwrap()} } + /// Which body parts to reset. Server handles it if empty (usually all) + #[inline] + pub fn body_parts(&self) -> Option> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>(ResetRequest::VT_BODY_PARTS, None)} + } } impl flatbuffers::Verifiable for ResetRequest<'_> { @@ -59,18 +69,21 @@ impl flatbuffers::Verifiable for ResetRequest<'_> { use self::flatbuffers::Verifiable; v.visit_table(pos)? .visit_field::("reset_type", Self::VT_RESET_TYPE, false)? + .visit_field::>>("body_parts", Self::VT_BODY_PARTS, false)? .finish(); Ok(()) } } -pub struct ResetRequestArgs { +pub struct ResetRequestArgs<'a> { pub reset_type: ResetType, + pub body_parts: Option>>, } -impl<'a> Default for ResetRequestArgs { +impl<'a> Default for ResetRequestArgs<'a> { #[inline] fn default() -> Self { ResetRequestArgs { reset_type: ResetType::Yaw, + body_parts: None, } } } @@ -85,6 +98,10 @@ impl<'a: 'b, 'b> ResetRequestBuilder<'a, 'b> { self.fbb_.push_slot::(ResetRequest::VT_RESET_TYPE, reset_type, ResetType::Yaw); } #[inline] + pub fn add_body_parts(&mut self, body_parts: flatbuffers::WIPOffset>) { + self.fbb_.push_slot_always::>(ResetRequest::VT_BODY_PARTS, body_parts); + } + #[inline] pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ResetRequestBuilder<'a, 'b> { let start = _fbb.start_table(); ResetRequestBuilder { @@ -103,6 +120,7 @@ impl core::fmt::Debug for ResetRequest<'_> { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { let mut ds = f.debug_struct("ResetRequest"); ds.field("reset_type", &self.reset_type()); + ds.field("body_parts", &self.body_parts()); ds.finish() } } diff --git a/protocol/rust/src/generated/solarxr_protocol/rpc/resets_settings_generated.rs b/protocol/rust/src/generated/solarxr_protocol/rpc/resets_settings_generated.rs index 4d66e0bd..84fcca78 100644 --- a/protocol/rust/src/generated/solarxr_protocol/rpc/resets_settings_generated.rs +++ b/protocol/rust/src/generated/solarxr_protocol/rpc/resets_settings_generated.rs @@ -25,7 +25,6 @@ impl<'a> flatbuffers::Follow<'a> for ResetsSettings<'a> { } impl<'a> ResetsSettings<'a> { - pub const VT_RESET_MOUNTING_FEET: flatbuffers::VOffsetT = 4; pub const VT_ARMS_MOUNTING_RESET_MODE: flatbuffers::VOffsetT = 6; pub const VT_YAW_RESET_SMOOTH_TIME: flatbuffers::VOffsetT = 8; pub const VT_SAVE_MOUNTING_RESET: flatbuffers::VOffsetT = 10; @@ -45,18 +44,10 @@ impl<'a> ResetsSettings<'a> { builder.add_reset_hmd_pitch(args.reset_hmd_pitch); builder.add_save_mounting_reset(args.save_mounting_reset); builder.add_arms_mounting_reset_mode(args.arms_mounting_reset_mode); - builder.add_reset_mounting_feet(args.reset_mounting_feet); builder.finish() } - #[inline] - pub fn reset_mounting_feet(&self) -> bool { - // Safety: - // Created from valid Table for this object - // which contains a valid value in this slot - unsafe { self._tab.get::(ResetsSettings::VT_RESET_MOUNTING_FEET, Some(false)).unwrap()} - } #[inline] pub fn arms_mounting_reset_mode(&self) -> ArmsMountingResetMode { // Safety: @@ -94,7 +85,6 @@ impl flatbuffers::Verifiable for ResetsSettings<'_> { ) -> Result<(), flatbuffers::InvalidFlatbuffer> { use self::flatbuffers::Verifiable; v.visit_table(pos)? - .visit_field::("reset_mounting_feet", Self::VT_RESET_MOUNTING_FEET, false)? .visit_field::("arms_mounting_reset_mode", Self::VT_ARMS_MOUNTING_RESET_MODE, false)? .visit_field::("yaw_reset_smooth_time", Self::VT_YAW_RESET_SMOOTH_TIME, false)? .visit_field::("save_mounting_reset", Self::VT_SAVE_MOUNTING_RESET, false)? @@ -104,7 +94,6 @@ impl flatbuffers::Verifiable for ResetsSettings<'_> { } } pub struct ResetsSettingsArgs { - pub reset_mounting_feet: bool, pub arms_mounting_reset_mode: ArmsMountingResetMode, pub yaw_reset_smooth_time: f32, pub save_mounting_reset: bool, @@ -114,7 +103,6 @@ impl<'a> Default for ResetsSettingsArgs { #[inline] fn default() -> Self { ResetsSettingsArgs { - reset_mounting_feet: false, arms_mounting_reset_mode: ArmsMountingResetMode::BACK, yaw_reset_smooth_time: 0.0, save_mounting_reset: false, @@ -128,10 +116,6 @@ pub struct ResetsSettingsBuilder<'a: 'b, 'b> { start_: flatbuffers::WIPOffset, } impl<'a: 'b, 'b> ResetsSettingsBuilder<'a, 'b> { - #[inline] - pub fn add_reset_mounting_feet(&mut self, reset_mounting_feet: bool) { - self.fbb_.push_slot::(ResetsSettings::VT_RESET_MOUNTING_FEET, reset_mounting_feet, false); - } #[inline] pub fn add_arms_mounting_reset_mode(&mut self, arms_mounting_reset_mode: ArmsMountingResetMode) { self.fbb_.push_slot::(ResetsSettings::VT_ARMS_MOUNTING_RESET_MODE, arms_mounting_reset_mode, ArmsMountingResetMode::BACK); @@ -166,7 +150,6 @@ impl<'a: 'b, 'b> ResetsSettingsBuilder<'a, 'b> { impl core::fmt::Debug for ResetsSettings<'_> { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { let mut ds = f.debug_struct("ResetsSettings"); - ds.field("reset_mounting_feet", &self.reset_mounting_feet()); ds.field("arms_mounting_reset_mode", &self.arms_mounting_reset_mode()); ds.field("yaw_reset_smooth_time", &self.yaw_reset_smooth_time()); ds.field("save_mounting_reset", &self.save_mounting_reset()); diff --git a/protocol/typescript/src/solarxr-protocol/rpc/reset-request.ts b/protocol/typescript/src/solarxr-protocol/rpc/reset-request.ts index 6cbd8745..29235882 100644 --- a/protocol/typescript/src/solarxr-protocol/rpc/reset-request.ts +++ b/protocol/typescript/src/solarxr-protocol/rpc/reset-request.ts @@ -2,6 +2,7 @@ import * as flatbuffers from 'flatbuffers'; +import { BodyPart } from '../../solarxr-protocol/datatypes/body-part.js'; import { ResetType } from '../../solarxr-protocol/rpc/reset-type.js'; @@ -28,46 +29,87 @@ resetType():ResetType { return offset ? this.bb!.readUint8(this.bb_pos + offset) : ResetType.Yaw; } +/** + * Which body parts to reset. Server handles it if empty (usually all) + */ +bodyParts(index: number):BodyPart|null { + const offset = this.bb!.__offset(this.bb_pos, 6); + return offset ? this.bb!.readUint8(this.bb!.__vector(this.bb_pos + offset) + index) : 0; +} + +bodyPartsLength():number { + const offset = this.bb!.__offset(this.bb_pos, 6); + return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0; +} + +bodyPartsArray():Uint8Array|null { + const offset = this.bb!.__offset(this.bb_pos, 6); + return offset ? new Uint8Array(this.bb!.bytes().buffer, this.bb!.bytes().byteOffset + this.bb!.__vector(this.bb_pos + offset), this.bb!.__vector_len(this.bb_pos + offset)) : null; +} + static startResetRequest(builder:flatbuffers.Builder) { - builder.startObject(1); + builder.startObject(2); } static addResetType(builder:flatbuffers.Builder, resetType:ResetType) { builder.addFieldInt8(0, resetType, ResetType.Yaw); } +static addBodyParts(builder:flatbuffers.Builder, bodyPartsOffset:flatbuffers.Offset) { + builder.addFieldOffset(1, bodyPartsOffset, 0); +} + +static createBodyPartsVector(builder:flatbuffers.Builder, data:BodyPart[]):flatbuffers.Offset { + builder.startVector(1, data.length, 1); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt8(data[i]!); + } + return builder.endVector(); +} + +static startBodyPartsVector(builder:flatbuffers.Builder, numElems:number) { + builder.startVector(1, numElems, 1); +} + static endResetRequest(builder:flatbuffers.Builder):flatbuffers.Offset { const offset = builder.endObject(); return offset; } -static createResetRequest(builder:flatbuffers.Builder, resetType:ResetType):flatbuffers.Offset { +static createResetRequest(builder:flatbuffers.Builder, resetType:ResetType, bodyPartsOffset:flatbuffers.Offset):flatbuffers.Offset { ResetRequest.startResetRequest(builder); ResetRequest.addResetType(builder, resetType); + ResetRequest.addBodyParts(builder, bodyPartsOffset); return ResetRequest.endResetRequest(builder); } unpack(): ResetRequestT { return new ResetRequestT( - this.resetType() + this.resetType(), + this.bb!.createScalarList(this.bodyParts.bind(this), this.bodyPartsLength()) ); } unpackTo(_o: ResetRequestT): void { _o.resetType = this.resetType(); + _o.bodyParts = this.bb!.createScalarList(this.bodyParts.bind(this), this.bodyPartsLength()); } } export class ResetRequestT implements flatbuffers.IGeneratedObject { constructor( - public resetType: ResetType = ResetType.Yaw + public resetType: ResetType = ResetType.Yaw, + public bodyParts: (BodyPart)[] = [] ){} pack(builder:flatbuffers.Builder): flatbuffers.Offset { + const bodyParts = ResetRequest.createBodyPartsVector(builder, this.bodyParts); + return ResetRequest.createResetRequest(builder, - this.resetType + this.resetType, + bodyParts ); } } diff --git a/protocol/typescript/src/solarxr-protocol/rpc/resets-settings.ts b/protocol/typescript/src/solarxr-protocol/rpc/resets-settings.ts index 804f7930..e7c34fee 100644 --- a/protocol/typescript/src/solarxr-protocol/rpc/resets-settings.ts +++ b/protocol/typescript/src/solarxr-protocol/rpc/resets-settings.ts @@ -23,11 +23,6 @@ static getSizePrefixedRootAsResetsSettings(bb:flatbuffers.ByteBuffer, obj?:Reset return (obj || new ResetsSettings()).__init(bb.readInt32(bb.position()) + bb.position(), bb); } -resetMountingFeet():boolean { - const offset = this.bb!.__offset(this.bb_pos, 4); - return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : false; -} - armsMountingResetMode():ArmsMountingResetMode { const offset = this.bb!.__offset(this.bb_pos, 6); return offset ? this.bb!.readUint8(this.bb_pos + offset) : ArmsMountingResetMode.BACK; @@ -52,10 +47,6 @@ static startResetsSettings(builder:flatbuffers.Builder) { builder.startObject(5); } -static addResetMountingFeet(builder:flatbuffers.Builder, resetMountingFeet:boolean) { - builder.addFieldInt8(0, +resetMountingFeet, +false); -} - static addArmsMountingResetMode(builder:flatbuffers.Builder, armsMountingResetMode:ArmsMountingResetMode) { builder.addFieldInt8(1, armsMountingResetMode, ArmsMountingResetMode.BACK); } @@ -77,9 +68,8 @@ static endResetsSettings(builder:flatbuffers.Builder):flatbuffers.Offset { return offset; } -static createResetsSettings(builder:flatbuffers.Builder, resetMountingFeet:boolean, armsMountingResetMode:ArmsMountingResetMode, yawResetSmoothTime:number, saveMountingReset:boolean, resetHmdPitch:boolean):flatbuffers.Offset { +static createResetsSettings(builder:flatbuffers.Builder, armsMountingResetMode:ArmsMountingResetMode, yawResetSmoothTime:number, saveMountingReset:boolean, resetHmdPitch:boolean):flatbuffers.Offset { ResetsSettings.startResetsSettings(builder); - ResetsSettings.addResetMountingFeet(builder, resetMountingFeet); ResetsSettings.addArmsMountingResetMode(builder, armsMountingResetMode); ResetsSettings.addYawResetSmoothTime(builder, yawResetSmoothTime); ResetsSettings.addSaveMountingReset(builder, saveMountingReset); @@ -89,7 +79,6 @@ static createResetsSettings(builder:flatbuffers.Builder, resetMountingFeet:boole unpack(): ResetsSettingsT { return new ResetsSettingsT( - this.resetMountingFeet(), this.armsMountingResetMode(), this.yawResetSmoothTime(), this.saveMountingReset(), @@ -99,7 +88,6 @@ unpack(): ResetsSettingsT { unpackTo(_o: ResetsSettingsT): void { - _o.resetMountingFeet = this.resetMountingFeet(); _o.armsMountingResetMode = this.armsMountingResetMode(); _o.yawResetSmoothTime = this.yawResetSmoothTime(); _o.saveMountingReset = this.saveMountingReset(); @@ -109,7 +97,6 @@ unpackTo(_o: ResetsSettingsT): void { export class ResetsSettingsT implements flatbuffers.IGeneratedObject { constructor( - public resetMountingFeet: boolean = false, public armsMountingResetMode: ArmsMountingResetMode = ArmsMountingResetMode.BACK, public yawResetSmoothTime: number = 0.0, public saveMountingReset: boolean = false, @@ -119,7 +106,6 @@ constructor( pack(builder:flatbuffers.Builder): flatbuffers.Offset { return ResetsSettings.createResetsSettings(builder, - this.resetMountingFeet, this.armsMountingResetMode, this.yawResetSmoothTime, this.saveMountingReset, diff --git a/schema/rpc.fbs b/schema/rpc.fbs index 465f6d94..9e5ee1ed 100644 --- a/schema/rpc.fbs +++ b/schema/rpc.fbs @@ -112,6 +112,8 @@ enum ResetStatus: uint8 { table ResetRequest { reset_type: ResetType; + /// Which body parts to reset. Server handles it if empty (usually all) + body_parts: [solarxr_protocol.datatypes.BodyPart]; } table ResetResponse { reset_type: ResetType; @@ -270,7 +272,7 @@ enum ArmsMountingResetMode: uint8 { } table ResetsSettings { - reset_mounting_feet: bool; + reset_mounting_feet: bool (deprecated); arms_mounting_reset_mode: ArmsMountingResetMode; yaw_reset_smooth_time: float32; save_mounting_reset: bool;