public void FixedUpdate() { if (Object.op_Equality((Object)this.thisEntity, (Object)null) || this.entityContents == null) { return; } foreach (BaseEntity ent in this.entityContents.ToArray <BaseEntity>()) { if (ent.IsValid() && !ent.EqualNetID((BaseNetworkable)this.thisEntity)) { Rigidbody component = (Rigidbody)((Component)ent).GetComponent <Rigidbody>(); if (Object.op_Implicit((Object)component) && !component.get_isKinematic()) { float num1 = Vector3Ex.Distance2D(((Component)ent).get_transform().get_position(), ((Component)this).get_transform().get_position()); float num2 = 1f - Mathf.InverseLerp(this.minRadius, this.maxRadius, num1); float num3 = 1f - Mathf.InverseLerp(this.minRadius - 1f, this.minRadius, num1); Vector3 vector3_1 = ent.ClosestPoint(((Component)this).get_transform().get_position()); Vector3 vector3_2 = Vector3Ex.Direction2D(vector3_1, ((Component)this).get_transform().get_position()); component.AddForceAtPosition(Vector3.op_Multiply(Vector3.op_Multiply(vector3_2, this.maxPushVelocity), num2), vector3_1, (ForceMode)5); if ((double)num3 > 0.0) { component.AddForceAtPosition(Vector3.op_Multiply(Vector3.op_Multiply(vector3_2, 1f), num3), vector3_1, (ForceMode)2); } } } } }
public override void DoPushAction(BasePlayer player) { if (player.isMounted || !IsStationary() || (!(player.WaterFactor() <= 0.6f) && !IsFlipped()) || (!IsFlipped() && player.IsStandingOnEntity(this, 8192)) || Vector3.Distance(player.transform.position, base.transform.position) > 5f || dying) { return; } player.metabolism.calories.Subtract(2f); player.metabolism.SendChangesToClient(); if (IsFlipped()) { rigidBody.AddRelativeTorque(Vector3.forward * 6.5f, ForceMode.VelocityChange); } else { Vector3 vector = Vector3Ex.Direction2D(player.transform.position, base.transform.position); Vector3 vector2 = Vector3Ex.Direction2D(player.transform.position + player.eyes.BodyForward() * 3f, player.transform.position); vector2 = (Vector3.up * 0.1f + vector2).normalized; Vector3 position = base.transform.position + vector * 2f; float num = 3f; float value = Vector3.Dot(base.transform.forward, vector2); num += Mathf.InverseLerp(0.8f, 1f, value) * 3f; rigidBody.AddForceAtPosition(vector2 * num, position, ForceMode.VelocityChange); } if (HasFlag(Flags.Reserved5)) { if (pushWaterEffect.isValid) { Effect.server.Run(pushWaterEffect.resourcePath, this, 0u, Vector3.zero, Vector3.zero); } } else if (pushLandEffect.isValid) { Effect.server.Run(pushLandEffect.resourcePath, this, 0u, Vector3.zero, Vector3.zero); } }
public override Vector3 GetAimDirection() { int num = Object.op_Inequality((Object)this.currentTarget, (Object)null) ? 1 : 0; bool flag1 = num != 0 && this.currentTargetLOS; bool flag2 = (double)Vector3Ex.Distance2D(this.finalDestination, this.GetPosition()) > 0.5; Vector3 desiredVelocity = this.NavAgent.get_desiredVelocity(); desiredVelocity.y = (__Null)0.0; ((Vector3) ref desiredVelocity).Normalize(); if (num == 0) { if (flag2) { return(desiredVelocity); } return(Vector3.get_zero()); } if (flag1 && this.desiredSpeed != HumanNPC.SpeedType.Sprint) { Vector3 vector3 = Vector3.op_Subtraction(this.AimOffset(this.currentTarget), this.eyes.position); return(((Vector3) ref vector3).get_normalized()); } if (flag2) { return(desiredVelocity); } if (Vector3.op_Inequality(this.aimOverridePosition, Vector3.get_zero())) { return(Vector3Ex.Direction2D(this.aimOverridePosition, this.ServerPosition)); } return(Vector3Ex.Direction2D(Vector3.op_Addition(this.ServerPosition, Vector3.op_Multiply(this.eyes.BodyForward(), 1000f)), this.ServerPosition)); }
public override StateStatus StateThink(float delta) { base.StateThink(delta); if (status == StateStatus.Error) { return(status); } if (!brain.Navigator.Moving) { if (currentWaitTime <= 0f && currentTargetPoint.HasLookAtPoints()) { Transform randomLookAtPoint = currentTargetPoint.GetRandomLookAtPoint(); if (randomLookAtPoint != null) { brain.Navigator.SetFacingDirectionOverride(Vector3Ex.Direction2D(randomLookAtPoint.transform.position, GetEntity().ServerPosition)); } } if (currentTargetPoint.WaitTime > 0f) { currentWaitTime += delta; } if (currentTargetPoint.WaitTime <= 0f || currentWaitTime >= currentTargetPoint.WaitTime) { brain.Navigator.ClearFacingDirectionOverride(); currentWaitTime = 0f; AIMovePoint aIMovePoint = currentTargetPoint; currentTargetPoint = path.GetNextPoint(currentTargetPoint, ref pathDirection); if ((!(currentTargetPoint != null) || !(currentTargetPoint == aIMovePoint)) && (currentTargetPoint == null || !brain.Navigator.SetDestination(currentTargetPoint.transform.position, BaseNavigator.NavigationSpeed.Slow))) { return(StateStatus.Error); } } } return(StateStatus.Running); }
public void FixedUpdate() { if (this.thisEntity == null) { return; } if (this.entityContents == null) { return; } BaseEntity[] array = this.entityContents.ToArray <BaseEntity>(); for (int i = 0; i < (int)array.Length; i++) { BaseEntity baseEntity = array[i]; if (baseEntity.IsValid() && !baseEntity.EqualNetID(this.thisEntity)) { Rigidbody component = baseEntity.GetComponent <Rigidbody>(); if (component && !component.isKinematic) { float single = Vector3Ex.Distance2D(baseEntity.transform.position, base.transform.position); float single1 = 1f - Mathf.InverseLerp(this.minRadius, this.maxRadius, single); float single2 = 1f - Mathf.InverseLerp(this.minRadius - 1f, this.minRadius, single); Vector3 vector3 = baseEntity.ClosestPoint(base.transform.position); Vector3 vector31 = Vector3Ex.Direction2D(vector3, base.transform.position); component.AddForceAtPosition((vector31 * this.maxPushVelocity) * single1, vector3, ForceMode.Acceleration); if (single2 > 0f) { component.AddForceAtPosition((vector31 * 1f) * single2, vector3, ForceMode.VelocityChange); } } } } }
public void Greeting() { List <BasePlayer> list = (List <BasePlayer>)Pool.GetList <BasePlayer>(); Vis.Entities <BasePlayer>(((Component)this).get_transform().get_position(), 10f, list, 131072, (QueryTriggerInteraction)2); ((Component)this).get_transform().get_position(); BasePlayer basePlayer1 = (BasePlayer)null; foreach (BasePlayer basePlayer2 in list) { if (!basePlayer2.isClient && !basePlayer2.IsNpc && (!Object.op_Equality((Object)basePlayer2, (Object)this) && basePlayer2.IsVisible(this.eyes.position, float.PositiveInfinity)) && (!Object.op_Equality((Object)basePlayer2, (Object)this.lastWavedAtPlayer) && (double)Vector3.Dot(Vector3Ex.Direction2D(basePlayer2.eyes.position, this.eyes.position), this.initialFacingDir) >= 0.200000002980232)) { basePlayer1 = basePlayer2; break; } } if (Object.op_Equality((Object)basePlayer1, (Object)null) && !list.Contains(this.lastWavedAtPlayer)) { this.lastWavedAtPlayer = (BasePlayer)null; } if (Object.op_Inequality((Object)basePlayer1, (Object)null)) { this.SignalBroadcast(BaseEntity.Signal.Gesture, "wave", (Connection)null); this.SetAimDirection(Vector3Ex.Direction2D(basePlayer1.eyes.position, this.eyes.position)); this.lastWavedAtPlayer = basePlayer1; } else { this.SetAimDirection(this.initialFacingDir); } // ISSUE: cast to a reference type Pool.FreeList <BasePlayer>((List <M0>&) ref list); }
public override Vector3 GetAimDirection() { bool flag = this.currentTarget != null; bool flag1 = (!flag ? false : this.currentTargetLOS); bool flag2 = Vector3Ex.Distance2D(this.finalDestination, base.GetPosition()) > 0.5f; Vector3 navAgent = this.NavAgent.desiredVelocity; navAgent.y = 0f; navAgent.Normalize(); if (!flag) { if (flag2) { return(navAgent); } return(Vector3.zero); } if (flag1 && this.desiredSpeed != HumanNPC.SpeedType.Sprint) { Vector3 vector3 = this.AimOffset(this.currentTarget) - this.eyes.position; return(vector3.normalized); } if (flag2) { return(navAgent); } if (this.aimOverridePosition != Vector3.zero) { return(Vector3Ex.Direction2D(this.aimOverridePosition, this.ServerPosition)); } return(Vector3Ex.Direction2D(this.ServerPosition + (this.eyes.BodyForward() * 1000f), this.ServerPosition)); }
public override Vector3 GetAimDirection() { bool num = currentTarget != null; bool flag = num && currentTargetLOS; bool flag2 = Vector3Ex.Distance2D(finalDestination, GetPosition()) > 0.5f; Vector3 desiredVelocity = NavAgent.desiredVelocity; desiredVelocity.y = 0f; desiredVelocity.Normalize(); if (!num) { if (flag2) { return(desiredVelocity); } return(Vector3.zero); } if (flag && desiredSpeed != SpeedType.Sprint) { return((AimOffset(currentTarget) - eyes.position).normalized); } if (Vector3.Distance(currentTarget.transform.position, base.transform.position) < 5f) { return((AimOffset(currentTarget) - eyes.position).normalized); } if (flag2) { return(desiredVelocity); } if (aimOverridePosition != Vector3.zero) { return(Vector3Ex.Direction2D(aimOverridePosition, base.transform.position)); } return(Vector3Ex.Direction2D(base.transform.position + eyes.BodyForward() * 1000f, base.transform.position)); }
public void RPC_WantsPush(BaseEntity.RPCMessage msg) { BasePlayer basePlayer = msg.player; if (basePlayer.isMounted) { return; } if (this.RecentlyPushed()) { return; } if (!base.HasFlag(BaseEntity.Flags.Reserved7) || basePlayer.WaterFactor() > 0.6f && !base.IsFlipped()) { return; } if (Vector3.Distance(basePlayer.transform.position, base.transform.position) > 5f) { return; } if (this.dying) { return; } if (Interface.CallHook("CanPushBoat", basePlayer, this) != null) { return; } basePlayer.metabolism.calories.Subtract(2f); basePlayer.metabolism.SendChangesToClient(); if (!base.IsFlipped()) { Vector3 vector3 = Vector3Ex.Direction2D(basePlayer.transform.position, base.transform.position); Vector3 vector31 = Vector3Ex.Direction2D(basePlayer.transform.position + (basePlayer.eyes.BodyForward() * 3f), basePlayer.transform.position); vector31 = ((Vector3.up * 0.1f) + vector31).normalized; Vector3 vector32 = base.transform.position + (vector3 * 2f); float single = 3f; float single1 = Vector3.Dot(base.transform.forward, vector31); single = single + Mathf.InverseLerp(0.8f, 1f, single1) * 3f; this.myRigidBody.AddForceAtPosition(vector31 * single, vector32, ForceMode.VelocityChange); } else { this.myRigidBody.AddRelativeTorque(Vector3.forward * 5f, ForceMode.VelocityChange); } this.nextPushTime = UnityEngine.Time.realtimeSinceStartup + 1f; if (base.HasFlag(BaseEntity.Flags.Reserved5)) { if (this.pushWaterEffect.isValid) { Effect.server.Run(this.pushWaterEffect.resourcePath, this, 0, Vector3.zero, Vector3.zero, null, false); return; } } else if (this.pushLandEffect.isValid) { Effect.server.Run(this.pushLandEffect.resourcePath, this, 0, Vector3.zero, Vector3.zero, null, false); } }
public CH47FlightTest.HelicopterInputState_t GetAIInputState() { CH47FlightTest.HelicopterInputState_t helicopterInputStateT = new CH47FlightTest.HelicopterInputState_t(); Vector3 vector3 = Vector3.Cross(Vector3.up, base.transform.right); float single = Vector3.Dot(Vector3.Cross(Vector3.up, vector3), Vector3Ex.Direction2D(this.AIMoveTarget.position, base.transform.position)); helicopterInputStateT.yaw = (single < 0f ? 1f : 0f); ref float singlePointer = ref helicopterInputStateT.yaw;
public void KeeperLookAt(Vector3 pos) { NPCShopKeeper nPCShopKeeper = GetNPCShopKeeper(); if (!(nPCShopKeeper == null)) { nPCShopKeeper.SetAimDirection(Vector3Ex.Direction2D(pos, nPCShopKeeper.transform.position)); } }
public float AngleToTarget(BaseCombatEntity potentialtarget, bool use2D = false) { use2D = true; Transform centerMuzzle = GetCenterMuzzle(); Vector3 position = centerMuzzle.position; Vector3 vector = AimOffset(potentialtarget); Vector3 zero = Vector3.zero; return(Vector3.Angle(to: (!use2D) ? (vector - position).normalized : Vector3Ex.Direction2D(vector, position), from: use2D ? centerMuzzle.forward.XZ3D().normalized : centerMuzzle.forward)); }
public void KeeperLookAt(Vector3 pos) { NPCShopKeeper nPCShopKeeper = this.GetNPCShopKeeper(); if (nPCShopKeeper == null) { return; } nPCShopKeeper.SetAimDirection(Vector3Ex.Direction2D(pos, nPCShopKeeper.transform.position)); }
public void KeeperLookAt(Vector3 pos) { NPCShopKeeper npcShopKeeper = this.GetNPCShopKeeper(); if (Object.op_Equality((Object)npcShopKeeper, (Object)null)) { return; } npcShopKeeper.SetAimDirection(Vector3Ex.Direction2D(pos, ((Component)npcShopKeeper).get_transform().get_position())); }
public bool DidHitMarker(HitInfo info) { if (this.xMarker == null) { return(false); } if ((double)Vector3.Dot(Vector3Ex.Direction2D(base.transform.position, this.xMarker.transform.position), info.attackNormal) >= 0.3 && Vector3.Distance(this.xMarker.transform.position, info.HitPositionWorld) <= 0.2f) { return(true); } return(false); }
public void SpawnEggsAtPoint(int numEggs, Vector3 pos, Vector3 aimDir, float minDist = 1f, float maxDist = 2f) { for (int i = 0; i < numEggs; i++) { Vector3 vector = pos; aimDir = ((!(aimDir == Vector3.zero)) ? AimConeUtil.GetModifiedAimConeDirection(90f, aimDir) : UnityEngine.Random.onUnitSphere); vector = pos + Vector3Ex.Direction2D(pos + aimDir * 10f, pos) * UnityEngine.Random.Range(minDist, maxDist); vector.y = TerrainMeta.HeightMap.GetHeight(vector); CollectableEasterEgg collectableEasterEgg = GameManager.server.CreateEntity(HuntablePrefab[UnityEngine.Random.Range(0, HuntablePrefab.Length)].resourcePath, vector) as CollectableEasterEgg; collectableEasterEgg.Spawn(); _spawnedEggs.Add(collectableEasterEgg); } }
public override void CompletePendingOrder() { Effect.server.Run(this.buyEffect.resourcePath, base.transform.position, Vector3.up, null, false); NPCShopKeeper nPCShopKeeper = this.GetNPCShopKeeper(); if (nPCShopKeeper) { nPCShopKeeper.SignalBroadcast(BaseEntity.Signal.Gesture, "victory", null); if (this.vend_Player != null) { nPCShopKeeper.SetAimDirection(Vector3Ex.Direction2D(this.vend_Player.transform.position, nPCShopKeeper.transform.position)); } } base.CompletePendingOrder(); }
public override void CompletePendingOrder() { Effect.server.Run(this.buyEffect.resourcePath, ((Component)this).get_transform().get_position(), Vector3.get_up(), (Connection)null, false); NPCShopKeeper npcShopKeeper = this.GetNPCShopKeeper(); if (Object.op_Implicit((Object)npcShopKeeper)) { npcShopKeeper.SignalBroadcast(BaseEntity.Signal.Gesture, "victory", (Connection)null); if (Object.op_Inequality((Object)this.vend_Player, (Object)null)) { npcShopKeeper.SetAimDirection(Vector3Ex.Direction2D(((Component)this.vend_Player).get_transform().get_position(), ((Component)npcShopKeeper).get_transform().get_position())); } } base.CompletePendingOrder(); }
public override void CompletePendingOrder() { Effect.server.Run(buyEffect.resourcePath, base.transform.position, Vector3.up); NPCShopKeeper nPCShopKeeper = GetNPCShopKeeper(); if ((bool)nPCShopKeeper) { nPCShopKeeper.SignalBroadcast(Signal.Gesture, "victory"); if (vend_Player != null) { nPCShopKeeper.SetAimDirection(Vector3Ex.Direction2D(vend_Player.transform.position, nPCShopKeeper.transform.position)); } } base.CompletePendingOrder(); }
public void Greeting() { List <BasePlayer> list = Pool.GetList <BasePlayer>(); Vis.Entities <BasePlayer>(base.transform.position, 10f, list, 131072, QueryTriggerInteraction.Collide); Vector3 vector3 = base.transform.position; BasePlayer basePlayer = null; foreach (BasePlayer basePlayer1 in list) { if (basePlayer1.isClient || basePlayer1.IsNpc || basePlayer1 == this || !basePlayer1.IsVisible(this.eyes.position, Single.PositiveInfinity) || basePlayer1 == this.lastWavedAtPlayer || Vector3.Dot(Vector3Ex.Direction2D(basePlayer1.eyes.position, this.eyes.position), this.initialFacingDir) < 0.2f) { continue; } basePlayer = basePlayer1; if (basePlayer == null && !list.Contains(this.lastWavedAtPlayer)) { this.lastWavedAtPlayer = null; } if (basePlayer == null) { this.SetAimDirection(this.initialFacingDir); } else { base.SignalBroadcast(BaseEntity.Signal.Gesture, "wave", null); this.SetAimDirection(Vector3Ex.Direction2D(basePlayer.eyes.position, this.eyes.position)); this.lastWavedAtPlayer = basePlayer; } Pool.FreeList <BasePlayer>(ref list); return; } if (basePlayer == null && !list.Contains(this.lastWavedAtPlayer)) { this.lastWavedAtPlayer = null; } if (basePlayer == null) { this.SetAimDirection(this.initialFacingDir); } else { base.SignalBroadcast(BaseEntity.Signal.Gesture, "wave", null); this.SetAimDirection(Vector3Ex.Direction2D(basePlayer.eyes.position, this.eyes.position)); this.lastWavedAtPlayer = basePlayer; } Pool.FreeList <BasePlayer>(ref list); }
public override void StateThink(float delta) { Vector3 orbitCenter = this.GetOrbitCenter(); CH47HelicopterAIController entity = this.brain.GetEntity(); Vector3 position1 = entity.GetPosition(); Vector3 vector3_1 = Vector3Ex.Direction2D(orbitCenter, position1); Vector3 vector3_2 = Vector3.Cross(Vector3.get_up(), vector3_1); float num1 = (double)Vector3.Dot(Vector3.Cross(((Component)entity).get_transform().get_right(), Vector3.get_up()), vector3_2) < 0.0 ? -1f : 1f; float num2 = 75f; Vector3 vector3_3 = Vector3.op_Addition(Vector3.op_UnaryNegation(vector3_1), Vector3.op_Multiply(Vector3.op_Multiply(vector3_2, num1), 0.6f)); Vector3 position2 = Vector3.op_Addition(orbitCenter, Vector3.op_Multiply(((Vector3) ref vector3_3).get_normalized(), num2)); entity.SetMoveTarget(position2); entity.SetAimDirection(Vector3Ex.Direction2D(position2, position1)); base.StateThink(delta); }
public override void StateThink(float delta) { Vector3 orbitCenter = this.GetOrbitCenter(); CH47HelicopterAIController entity = this.brain.GetEntity(); Vector3 position = entity.GetPosition(); Vector3 vector3 = Vector3Ex.Direction2D(orbitCenter, position); Vector3 vector31 = Vector3.Cross(Vector3.up, vector3); float single = (Vector3.Dot(Vector3.Cross(entity.transform.right, Vector3.up), vector31) < 0f ? -1f : 1f); float single1 = 75f; Vector3 vector32 = -vector3 + ((vector31 * single) * 0.6f); Vector3 vector33 = orbitCenter + (vector32.normalized * single1); entity.SetMoveTarget(vector33); entity.SetAimDirection(Vector3Ex.Direction2D(vector33, position)); base.StateThink(delta); }
public override StateStatus StateThink(float delta) { Vector3 orbitCenter = GetOrbitCenter(); CH47HelicopterAIController entity = brain.GetEntity(); Vector3 position = entity.GetPosition(); Vector3 vector = Vector3Ex.Direction2D(orbitCenter, position); Vector3 vector2 = Vector3.Cross(Vector3.up, vector); float num = ((Vector3.Dot(Vector3.Cross(entity.transform.right, Vector3.up), vector2) < 0f) ? (-1f) : 1f); float num2 = 75f; Vector3 normalized = (-vector + vector2 * num * 0.6f).normalized; Vector3 vector3 = orbitCenter + normalized * num2; entity.SetMoveTarget(vector3); entity.SetAimDirection(Vector3Ex.Direction2D(vector3, position)); base.StateThink(delta); return(StateStatus.Running); }
public HelicopterInputState_t GetAIInputState() { HelicopterInputState_t result = default(HelicopterInputState_t); Vector3 vector = Vector3.Cross(Vector3.up, base.transform.right); float num = Vector3.Dot(Vector3.Cross(Vector3.up, vector), Vector3Ex.Direction2D(AIMoveTarget.position, base.transform.position)); result.yaw = ((num < 0f) ? 1f : 0f); result.yaw -= ((num > 0f) ? 1f : 0f); float num2 = Vector3.Dot(Vector3.up, base.transform.right); result.roll = ((num2 < 0f) ? 1f : 0f); result.roll -= ((num2 > 0f) ? 1f : 0f); float num3 = Vector3Ex.Distance2D(base.transform.position, AIMoveTarget.position); float num4 = Vector3.Dot(vector, Vector3Ex.Direction2D(AIMoveTarget.position, base.transform.position)); float num5 = Vector3.Dot(Vector3.up, base.transform.forward); if (num3 > 10f) { result.pitch = ((num4 > 0.8f) ? (-0.25f) : 0f); result.pitch -= ((num4 < -0.8f) ? (-0.25f) : 0f); if (num5 < -0.35f) { result.pitch = -1f; } else if (num5 > 0.35f) { result.pitch = 1f; } } else if (num5 < -0f) { result.pitch = -1f; } else if (num5 > 0f) { result.pitch = 1f; } float idealAltitude = GetIdealAltitude(); float y = base.transform.position.y; float num6 = 0f; num6 = ((y > idealAltitude + altitudeTolerance) ? (-1f) : ((y < idealAltitude - altitudeTolerance) ? 1f : ((!(num3 > 20f)) ? 0f : Mathf.Lerp(0f, 1f, num3 / 20f)))); Debug.Log("desiredThrottle : " + num6); result.throttle = num6 * 1f; return(result); }
public CH47FlightTest.HelicopterInputState_t GetAIInputState() { CH47FlightTest.HelicopterInputState_t helicopterInputStateT = new CH47FlightTest.HelicopterInputState_t(); Vector3 vector3 = Vector3.Cross(Vector3.get_up(), ((Component)this).get_transform().get_right()); float num1 = Vector3.Dot(Vector3.Cross(Vector3.get_up(), vector3), Vector3Ex.Direction2D(this.AIMoveTarget.get_position(), ((Component)this).get_transform().get_position())); helicopterInputStateT.yaw = (double)num1 < 0.0 ? 1f : 0.0f; helicopterInputStateT.yaw -= (double)num1 > 0.0 ? 1f : 0.0f; float num2 = Vector3.Dot(Vector3.get_up(), ((Component)this).get_transform().get_right()); helicopterInputStateT.roll = (double)num2 < 0.0 ? 1f : 0.0f; helicopterInputStateT.roll -= (double)num2 > 0.0 ? 1f : 0.0f; float num3 = Vector3Ex.Distance2D(((Component)this).get_transform().get_position(), this.AIMoveTarget.get_position()); float num4 = Vector3.Dot(vector3, Vector3Ex.Direction2D(this.AIMoveTarget.get_position(), ((Component)this).get_transform().get_position())); float num5 = Vector3.Dot(Vector3.get_up(), ((Component)this).get_transform().get_forward()); if ((double)num3 > 10.0) { helicopterInputStateT.pitch = (double)num4 > 0.800000011920929 ? -0.25f : 0.0f; helicopterInputStateT.pitch -= (double)num4 < -0.800000011920929 ? -0.25f : 0.0f; if ((double)num5 < -0.349999994039536) { helicopterInputStateT.pitch = -1f; } else if ((double)num5 > 0.349999994039536) { helicopterInputStateT.pitch = 1f; } } else if ((double)num5 < -0.0) { helicopterInputStateT.pitch = -1f; } else if ((double)num5 > 0.0) { helicopterInputStateT.pitch = 1f; } float idealAltitude = this.GetIdealAltitude(); float y = (float)((Component)this).get_transform().get_position().y; float num6 = (double)y <= (double)idealAltitude + (double)CH47FlightTest.altitudeTolerance ? ((double)y >= (double)idealAltitude - (double)CH47FlightTest.altitudeTolerance ? ((double)num3 <= 20.0 ? 0.0f : Mathf.Lerp(0.0f, 1f, num3 / 20f)) : 1f) : -1f; Debug.Log((object)("desiredThrottle : " + (object)num6)); helicopterInputStateT.throttle = num6 * 1f; return(helicopterInputStateT); }
public void Call() { CH47HelicopterAIController component = GameManager.server.CreateEntity(heliPrefab.resourcePath).GetComponent <CH47HelicopterAIController>(); if ((bool)component) { Vector3 size = TerrainMeta.Size; CH47LandingZone closest = CH47LandingZone.GetClosest(base.transform.position); Vector3 zero = Vector3.zero; zero.y = closest.transform.position.y; Vector3 vector = Vector3Ex.Direction2D(closest.transform.position, zero); Vector3 position = closest.transform.position + vector * startDist; position.y = closest.transform.position.y; component.transform.position = position; component.SetLandingTarget(closest.transform.position); component.Spawn(); } }
public AIMovePoint GetBestRoamPosition(Vector3 start) { AIInformationZone informationZone = this.GetInformationZone(); if (informationZone == null) { return(null); } float single = -1f; AIMovePoint aIMovePoint = null; foreach (AIMovePoint movePoint in informationZone.movePoints) { if (!movePoint.transform.parent.gameObject.activeSelf) { continue; } float single1 = 0f; float single2 = Vector3.Dot(this.eyes.BodyForward(), Vector3Ex.Direction2D(movePoint.transform.position, this.eyes.position)); single1 = single1 + Mathf.InverseLerp(-1f, 1f, single2) * 100f; float single3 = Vector3.Distance(this.ServerPosition, movePoint.transform.position); if (movePoint.IsUsedForRoaming()) { continue; } float single4 = Mathf.Abs(this.ServerPosition.y - movePoint.transform.position.y); single1 = single1 + (1f - Mathf.InverseLerp(1f, 10f, single4)) * 100f; if (single4 > 5f) { continue; } if (single3 > 5f) { single1 = single1 + (1f - Mathf.InverseLerp(5f, 20f, single3)) * 50f; } if (single1 <= single) { continue; } aIMovePoint = movePoint; single = single1; } return(aIMovePoint); }
public override void DoPushAction(BasePlayer player) { player.metabolism.calories.Subtract(3f); player.metabolism.SendChangesToClient(); Vector3 vector = Vector3Ex.Direction2D(player.transform.position, base.transform.position); Vector3 vector2 = player.eyes.BodyForward(); vector2.y = 0.25f; Vector3 position = base.transform.position + vector * 2f; float num = rigidBody.mass * 2f; rigidBody.AddForceAtPosition(vector2 * num, position, ForceMode.Impulse); rigidBody.AddForce(Vector3.up * 3f, ForceMode.Impulse); if (rigidBody.IsSleeping()) { rigidBody.WakeUp(); } isPushing = true; Invoke(DisablePushing, 0.5f); }
public void RPC_WantsPush(BaseEntity.RPCMessage msg) { BasePlayer player = msg.player; if (player.isMounted || this.RecentlyPushed() || !this.HasFlag(BaseEntity.Flags.Reserved7) || ((double)player.WaterFactor() > 0.600000023841858 && !this.IsFlipped() || ((double)Vector3.Distance(((Component)player).get_transform().get_position(), ((Component)this).get_transform().get_position()) > 5.0 || this.dying))) { return; } player.metabolism.calories.Subtract(2f); player.metabolism.SendChangesToClient(); if (this.IsFlipped()) { this.myRigidBody.AddRelativeTorque(Vector3.op_Multiply(Vector3.get_forward(), 5f), (ForceMode)2); } else { Vector3 vector3_1 = Vector3Ex.Direction2D(((Component)player).get_transform().get_position(), ((Component)this).get_transform().get_position()); Vector3 vector3_2 = Vector3.op_Addition(Vector3.op_Multiply(Vector3.get_up(), 0.1f), Vector3Ex.Direction2D(Vector3.op_Addition(((Component)player).get_transform().get_position(), Vector3.op_Multiply(player.eyes.BodyForward(), 3f)), ((Component)player).get_transform().get_position())); Vector3 normalized = ((Vector3) ref vector3_2).get_normalized(); Vector3 vector3_3 = Vector3.op_Addition(((Component)this).get_transform().get_position(), Vector3.op_Multiply(vector3_1, 2f)); float num = 3f + Mathf.InverseLerp(0.8f, 1f, Vector3.Dot(((Component)this).get_transform().get_forward(), normalized)) * 3f; this.myRigidBody.AddForceAtPosition(Vector3.op_Multiply(normalized, num), vector3_3, (ForceMode)2); } this.nextPushTime = Time.get_realtimeSinceStartup() + 1f; if (this.HasFlag(BaseEntity.Flags.Reserved5)) { if (!this.pushWaterEffect.isValid) { return; } Effect.server.Run(this.pushWaterEffect.resourcePath, (BaseEntity)this, 0U, Vector3.get_zero(), Vector3.get_zero(), (Connection)null, false); } else { if (!this.pushLandEffect.isValid) { return; } Effect.server.Run(this.pushLandEffect.resourcePath, (BaseEntity)this, 0U, Vector3.get_zero(), Vector3.get_zero(), (Connection)null, false); } }
public void Call() { CH47HelicopterAIController component = (CH47HelicopterAIController)((Component)GameManager.server.CreateEntity(this.heliPrefab.resourcePath, (Vector3)null, (Quaternion)null, true)).GetComponent <CH47HelicopterAIController>(); if (!Object.op_Implicit((Object)component)) { return; } Vector3 size = TerrainMeta.Size; CH47LandingZone closest = CH47LandingZone.GetClosest(((Component)this).get_transform().get_position()); Vector3 zero = Vector3.get_zero(); zero.y = ((Component)closest).get_transform().get_position().y; Vector3 vector3_1 = Vector3Ex.Direction2D(((Component)closest).get_transform().get_position(), zero); Vector3 vector3_2 = Vector3.op_Addition(((Component)closest).get_transform().get_position(), Vector3.op_Multiply(vector3_1, this.startDist)); vector3_2.y = ((Component)closest).get_transform().get_position().y; ((Component)component).get_transform().set_position(vector3_2); component.SetLandingTarget(((Component)closest).get_transform().get_position()); component.Spawn(); }