public static Offset <DesiredPhysics> ToFlatBuffer(this ObjectPhysics physics, FlatBufferBuilder builder) { DesiredPhysics.StartDesiredPhysics(builder); DesiredPhysics.AddLocation(builder, physics.Location.ToFlatBufferPartial(builder)); DesiredPhysics.AddVelocity(builder, physics.Velocity.ToFlatBufferPartial(builder)); DesiredPhysics.AddRotation(builder, physics.Rotation.ToFlatBuffer(builder)); DesiredPhysics.AddAngularVelocity(builder, physics.AngularVelocity.ToFlatBufferPartial(builder)); return(DesiredPhysics.EndDesiredPhysics(builder)); }
private double GetDistancePriority(BoostPad boostPad, ObjectPhysics playerPhysics) { if (boostPad == null) { return(0); } var playerLocation = playerPhysics.Location; var rawDistance = playerLocation.Distance2d(boostPad.Location); var maxDistance = boostPad.IsFullBoost ? MaxFullDistance : MaxNormalDistance; var angleToBoost = Math.Abs(BotMovementHelper.AngleToTarget(playerPhysics, boostPad.Location)); return((1 - (rawDistance / maxDistance)) * (1 - (angleToBoost / (Math.PI / 2)))); }
static JsonData SerializeObjPhysics(ObjectPhysics p) { var r = CreateObj(); r["density"] = p.Density; r["restitution"] = p.Restitution; r["group"] = p.Group; r["lineardamp"] = p.LinearDamping; r["angulardamp"] = p.AngularDamping; r["friction"] = p.Friction; r["kinematic"] = p.Kinematic; r["unk0"] = p.Unknown0; r["unk1"] = p.Unknown1; return(r); }
public static double AngleToTarget(ObjectPhysics source, Vector3 target) { var sourceToTargetAngle = Math.Atan2(target.Y - source.Location.Y, target.X - source.Location.X); var sourceFrontToTargetAngle = sourceToTargetAngle - source.Rotation.Yaw; if (sourceFrontToTargetAngle < -Math.PI) { sourceFrontToTargetAngle += 2 * Math.PI; } else if (sourceFrontToTargetAngle > Math.PI) { sourceFrontToTargetAngle -= 2 * Math.PI; } return(sourceFrontToTargetAngle); }
public void CheckForImpact() { ObjectPhysics op = GetComponent <ObjectPhysics>(); if (velocity > 0f && op.impact) { op.impact = false; Collider[] col = Physics.OverlapSphere(transform.position + (Vector3.down * impactRange), 0.2f); foreach (Collider c in col) { if (c.tag == "Player") { PlayerController.DestroyPlayer(1); } else if (c.gameObject.tag != "Levelgrid" || c.tag != "Bomb") { //Destroy(c.gameObject); } if (c.tag == "Levelgrid" && op.CheckSpace(op.px, op.py - 1).type != 2) { Debug.Log(op.CheckSpace(op.px, op.py - 1).type); LevelGrid.RemoveTile(op.px, op.py - 1); if (op.CheckSpace(op.px + 1, op.py)._col) { LevelGrid.RemoveTile(op.px + 1, op.py); } if (op.CheckSpace(op.px - 1, op.py)._col) { LevelGrid.RemoveTile(op.px - 1, op.py); } GameObject exp = Instantiate(GameController._prefabs[3]); exp.transform.position = transform.position; LevelGrid.UpdateGrid(); Destroy(this.gameObject); } } } }
public static void Update(this ObjectPhysics physics, Physics partial) { if (partial.Location.HasValue) { physics.Location = partial.Location.Value.ToNumerics(); } if (partial.Velocity.HasValue) { physics.Velocity = partial.Velocity.Value.ToNumerics(); } if (partial.Rotation.HasValue) { physics.Rotation.Update(partial.Rotation.Value); } if (partial.AngularVelocity.HasValue) { physics.AngularVelocity = partial.AngularVelocity.Value.ToNumerics(); } }