Skip to content

Commit a385d3f

Browse files
committed
Added Inherits(Angular)VelWhenDetached to Attachables
1 parent 8a8d282 commit a385d3f

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

Source/Entities/Attachable.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ void Attachable::Clear() {
4747
m_InheritsRotAngle = true;
4848
m_InheritedRotAngleOffset = 0;
4949
m_InheritsFrame = false;
50+
m_InheritsVelWhenDetached = 0.0F;
51+
m_InheritsAngularVelWhenDetached = 0.0F;
5052

5153
m_AtomSubgroupID = -1L;
5254
m_CollidesWithTerrainWhileAttached = true;
@@ -96,6 +98,8 @@ int Attachable::Create(const Attachable& reference) {
9698
m_InheritsRotAngle = reference.m_InheritsRotAngle;
9799
m_InheritedRotAngleOffset = reference.m_InheritedRotAngleOffset;
98100
m_InheritsFrame = reference.m_InheritsFrame;
101+
m_InheritsVelWhenDetached = reference.m_InheritsVelWhenDetached;
102+
m_InheritsAngularVelWhenDetached = reference.m_InheritsAngularVelWhenDetached;
99103

100104
m_AtomSubgroupID = GetUniqueID();
101105
m_CollidesWithTerrainWhileAttached = reference.m_CollidesWithTerrainWhileAttached;
@@ -144,6 +148,8 @@ int Attachable::ReadProperty(const std::string_view& propName, Reader& reader) {
144148
MatchForwards("InheritedRotAngleRadOffset") MatchProperty("InheritedRotAngleOffset", { reader >> m_InheritedRotAngleOffset; });
145149
MatchProperty("InheritedRotAngleDegOffset", { m_InheritedRotAngleOffset = DegreesToRadians(std::stof(reader.ReadPropValue())); });
146150
MatchProperty("InheritsFrame", { reader >> m_InheritsFrame; });
151+
MatchProperty("InheritsVelWhenDetached", { reader >> m_InheritsVelWhenDetached; });
152+
MatchProperty("InheritsAngularVelWhenDetached", { reader >> m_InheritsAngularVelWhenDetached; });
147153
MatchProperty("CollidesWithTerrainWhileAttached", { reader >> m_CollidesWithTerrainWhileAttached; });
148154
MatchProperty("IgnoresParticlesWhileAttached", { reader >> m_IgnoresParticlesWhileAttached; });
149155
MatchProperty("AddPieSlice", { m_PieSlices.emplace_back(std::unique_ptr<PieSlice>(dynamic_cast<PieSlice*>(g_PresetMan.ReadReflectedPreset(reader)))); });
@@ -170,6 +176,8 @@ int Attachable::Save(Writer& writer) const {
170176
writer.NewPropertyWithValue("InheritsHFlipped", ((m_InheritsHFlipped == 0 || m_InheritsHFlipped == 1) ? m_InheritsHFlipped : 2));
171177
writer.NewPropertyWithValue("InheritsRotAngle", m_InheritsRotAngle);
172178
writer.NewPropertyWithValue("InheritedRotAngleOffset", m_InheritedRotAngleOffset);
179+
writer.NewPropertyWithValue("InheritsVelWhenDetached", m_InheritsVelWhenDetached);
180+
writer.NewPropertyWithValue("InheritsAngularVelWhenDetached", m_InheritsAngularVelWhenDetached);
173181

174182
writer.NewPropertyWithValue("CollidesWithTerrainWhileAttached", m_CollidesWithTerrainWhileAttached);
175183
writer.NewPropertyWithValue("IgnoresParticlesWhileAttached", m_IgnoresParticlesWhileAttached);

Source/Entities/Attachable.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,14 @@ namespace RTE {
268268
/// Sets whether or not this Attachable inherits its Frame from its parent, if attached.
269269
/// @param inheritsFrame Whether or not to inherit its parent's Frame.
270270
void SetInheritsFrame(bool inheritsFrame) { m_InheritsFrame = inheritsFrame; }
271+
272+
/// How much of the root parent's velocity this attachable inherits when detached
273+
/// @return The proportion of the velocity inherited. 0.1 = 10% inheritance.
274+
float InheritsVelocityWhenDetached() { return m_InheritsVelWhenDetached; }
275+
276+
/// How much of the root parent's angular velocity this attachable inherits when detached
277+
/// @return The proportion of the angular velocity inherited. 0.1 = 10% inheritance.
278+
float InheritsAngularVelocityWhenDetached() { return m_InheritsAngularVelWhenDetached; }
271279
#pragma endregion
272280

273281
#pragma region Collision Management
@@ -437,6 +445,9 @@ namespace RTE {
437445
float m_InheritedRotAngleOffset; //!< The offset by which this Attachable should be rotated when it's set to inherit its parent's rotation angle. Defaults to 0.
438446
bool m_InheritsFrame; //!< Whether this Attachable should inherit its parent's Frame. Defaults to false.
439447

448+
float m_InheritsVelWhenDetached; //!< How much of the parents velocity this attachable inherits when detached
449+
float m_InheritsAngularVelWhenDetached; //!< How much of the parents angular velocity this attachable inherits when detached
450+
440451
long m_AtomSubgroupID; //!< The Atom IDs this' atoms will have when attached and added to a parent's AtomGroup.
441452
bool m_CollidesWithTerrainWhileAttached; //!< Whether this attachable currently has terrain collisions enabled while it's attached to a parent.
442453
bool m_IgnoresParticlesWhileAttached; //!< Whether this Attachable should ignore collisions with single-atom MOs while attached.

0 commit comments

Comments
 (0)