// methods for: gravitizing rigidbodies // // method: gravitize all rigidbodies inside this gravity zone // protected override void gravitizeRigidbodiesInside() { base.gravitizeRigidbodiesInside(); // if attraction is currently enabled: // if (attractionEnabled) { // gravitize each of the tracked rigidbodies to gravitize by the calculation of the attractive force according to its position – and for the player, multiply the force to apply by the player's current gravity modifier as determined by any active Gravity Multipliers // foreach (Rigidbody rigidbodyToGravitize in rigidbodiesToGravitize) { if (!rigidbodyToGravitize.handHolding()) // so long as the rigidbody to gravitize is not currently held by a hand of the player { // determine the curved attractive force to apply // Vector3 forceToApply = curvedAttractiveForceForPosition(rigidbodyToGravitize.position); if (rigidbodyToGravitize.GetComponentInParent <Player>()) { forceToApply *= GravityMultiplier.currentGravityModifier(); } // apply the attractive force // rigidbodyToGravitize.velocity += (forceToApply * Time.fixedDeltaTime); } } } }
public void WritePhysics(BitWriter writer) { if (writer.Flag(!GravityMultiplier.Equals(1) || !SpeedMultiplier.Equals(1))) { writer.Write(GravityMultiplier); writer.Write(SpeedMultiplier); } writer.WriteBit(true); writer.Write <float>(0); writer.WriteBit(false); writer.WriteBit(true); writer.WriteBit(false); writer.WriteBit(HasPosition); if (!HasPosition) { return; } writer.Write(Transform.Position); writer.Write(Transform.Rotation); writer.WriteBit(IsOnGround); writer.WriteBit(NegativeAngularVelocity); writer.WriteBit(HasVelocity); if (HasVelocity) { writer.Write(Velocity); } writer.WriteBit(HasAngularVelocity); if (HasAngularVelocity) { writer.Write(AngularVelocity); } var hasPlatform = Platform != null; writer.WriteBit(hasPlatform); if (!hasPlatform) { return; } writer.Write(Platform); writer.Write(PlatformPosition); writer.WriteBit(false); }
// upon being enabled: // private void OnEnable() { // connect to the corresponding instance of this class // if (leftInstance) { left = this; } else { right = this; } }
// methods for: gravitizing rigidbodies // // method: gravitize all rigidbodies inside this gravity zone // protected virtual void gravitizeRigidbodiesInside() { // gravitize each of the tracked rigidbodies to gravitize by the force vector setting – and for the player, multiply the force to apply by the player's current gravity modifier as determined by any active Gravity Multipliers // foreach (Rigidbody rigidbodyToGravitize in rigidbodiesToGravitize) { if (!rigidbodyToGravitize.handHolding()) // so long as the rigidbody to gravitize is not currently held by a hand of the player { Vector3 forceToApply = gravitationForce; if (rigidbodyToGravitize.GetComponentInParent <Player>()) { forceToApply *= GravityMultiplier.currentGravityModifier(); } rigidbodyToGravitize.velocity += (forceToApply * Time.fixedDeltaTime); } } }
/// <summary> /// Creates the Serialize packet for the replica component. /// </summary> /// <returns>The Serialize packet for the replica component.</returns> public override ControllablePhysicsSerialization GetSerializePacket() { var packet = base.GetSerializePacket(); packet.HasSpeedOrGravityMultiplier = (!GravityMultiplier.Equals(1) || !SpeedMultiplier.Equals(1)); packet.UnknownFlag1 = true; packet.UnknownUint1 = 0; packet.UnknownFlag2 = false; packet.UnknownFlag3 = true; packet.UnknownFlag4 = false; packet.Position = Transform.Position; packet.Rotation = Transform.Rotation; packet.IsOnRail = NegativeAngularVelocity; packet.HasPlatform = (Platform != null); packet.UnknownFlag6 = false; packet.UnknownFlag7 = false; return(packet); }
// method: determine whether the player is within spherical gravity zonage that is actually enabled to gravitize the player with a nonzero force // public static bool playerWithinNonzerolyAffectingZonageSphere() { if (!playerWithinZonage || (GravityMultiplier.currentGravityModifier() == 0f)) { return(false); } else { foreach (Collider playerCollidingGravityZoneCollider in playerCollidingGravityZoneColliders) { GravityZone playerCollidingGravityZone = playerCollidingGravityZoneCollider.GetComponent <GravityZone>(); if (playerCollidingGravityZone.gravitizingEnabled && playerCollidingGravityZone.gravitizeRigidbodies && (playerCollidingGravityZone.gravitationForce != FloatsVector.zeroes) && playerCollidingGravityZoneCollider.GetComponent <GravityZoneSphere>()) { return(true); } } return(false); } }
// method: determine whether the player is within box gravity zonage that is actually enabled to gravitize the player // public static bool playerWithinAffectingZonageBox() { if (!playerWithinZonage || (GravityMultiplier.currentGravityModifier() == 0f)) { return(false); } else { foreach (Collider playerCollidingGravityZoneCollider in playerCollidingGravityZoneColliders) { GravityZone playerCollidingGravityZone = playerCollidingGravityZoneCollider.GetComponent <GravityZone>(); if (playerCollidingGravityZone.gravitizingEnabled && playerCollidingGravityZone.gravitizeRigidbodies && playerCollidingGravityZoneCollider.GetComponent <GravityZoneBox>()) { return(true); } } return(false); } }
/// <summary> /// Creates the Construct packet for the replica component. /// </summary> /// <returns>The Construct packet for the replica component.</returns> public override ControllablePhysicsConstruct GetConstructPacket() { var packet = base.GetConstructPacket(); packet.HasJetpackEffect = (JetpackEffectId != 0); packet.BypassFlyingChecks = false; packet.UnknownFlag1 = true; packet.HasSpeedOrGravityMultiplier = (!GravityMultiplier.Equals(1) || !SpeedMultiplier.Equals(1)); packet.UnknownFlag2 = true; packet.UnknownUint8 = 0; packet.UnknownFlag3 = false; packet.UnknownFlag4 = true; packet.UnknownFlag5 = false; packet.Position = Transform.Position; packet.Rotation = Transform.Rotation; packet.IsOnRail = NegativeAngularVelocity; packet.HasPlatform = (Platform != null); packet.UnknownFlag7 = false; return(packet); }
// method: change the primary gravity modifier to the given modifier for the given Gravity Multiplier // public void changeModifierPrimary_(GravityMultiplier gravityMultiplier, float modifier) { changeModifierPrimary(gravityMultiplier, modifier); }
// method: change the primary gravity modifier to the given modifier for the given Gravity Multiplier // public static void changeModifierPrimary(GravityMultiplier gravityMultiplier, float modifier) { gravityMultiplier.changeModifierPrimary(modifier); }
// method: toggle alternation for the given Gravity Multiplier, optionally playing the alternating audio // public void toggleAlternation_(GravityMultiplier gravityMultiplier, bool playAudio) { toggleAlternation(gravityMultiplier, playAudio); }
// method: toggle alternation for the given Gravity Multiplier, optionally playing the alternating audio // public static void toggleAlternation(GravityMultiplier gravityMultiplier, bool playAudio) { gravityMultiplier.toggleAlternation(playAudio); }
// method: change alternation to the given boolean for the given Gravity Multiplier, optionally playing the alternating audio // public void changeAlternation_(GravityMultiplier gravityMultiplier, bool boolean, bool playAudio) { changeAlternation(gravityMultiplier, boolean, playAudio); }
// method: change alternation to the given boolean for the given Gravity Multiplier, optionally playing the alternating audio // public static void changeAlternation(GravityMultiplier gravityMultiplier, bool boolean, bool playAudio) { gravityMultiplier.changeAlternation(boolean, playAudio); }
// method: change the alternate gravity modifier to the given modifier for the given Gravity Multiplier // public void changeModifierAlternate_(GravityMultiplier gravityMultiplier, float modifier) { changeModifierAlternate(gravityMultiplier, modifier); }
// method: change the alternate gravity modifier to the given modifier for the given Gravity Multiplier // public static void changeModifierAlternate(GravityMultiplier gravityMultiplier, float modifier) { gravityMultiplier.changeModifierAlternate(modifier); }