Here are the examples of the csharp api UnityEngine.Vector2.Distance(UnityEngine.Vector2, UnityEngine.Vector2) taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
46 Examples
19
View Source File : Bullet.cs
License : GNU General Public License v3.0
Project Creator : aelariane
License : GNU General Public License v3.0
Project Creator : aelariane
private void GetSpiral(Vector3 masterposition, Vector3 masterrotation)
{
float num = 30f;
float num2 = 0.5f;
float num3 = 0.05f + (float)this.spiralcount * 0.03f;
float num5;
if (this.spiralcount < 5)
{
float num4 = Vector2.Distance(new Vector2(masterposition.x, masterposition.z), new Vector2(baseGT.position.x, baseGT.position.z));
num5 = num4;
}
else
{
num5 = 1.2f + (float)(60 - this.spiralcount) * 0.1f;
}
num2 -= (float)this.spiralcount * 0.06f;
float num6 = num5 / num;
float num7 = num3 / num;
float num8 = num7 * 2f * 3.14159274f;
num2 *= 6.28318548f;
this.spiralNodes = new List<Vector3>();
int num9 = 1;
while ((float)num9 <= num)
{
float num10 = (float)num9 * num6 * (1f + 0.05f * (float)num9);
float f = (float)num9 * num8 + num2 + 1.2566371f + masterrotation.y * 0.0173f;
float x = Mathf.Cos(f) * num10;
float z = -Mathf.Sin(f) * num10;
this.spiralNodes.Add(new Vector3(x, 0f, z));
num9++;
}
}
19
View Source File : GUIWindowEditSynapse.cs
License : MIT License
Project Creator : BelkinAndrey
License : MIT License
Project Creator : BelkinAndrey
private void ButtonOn(Synapse value)
{
if (GizmaSynapse != null)
{
GizmaSynapse.SetActive(true);
GizmaSynapse.GetComponent<LineRenderer>().SetPosition(0, value.parentNeuron.position);
GizmaSynapse.GetComponent<LineRenderer>().SetPosition(1, value.targetNeuron.position);
}
EditSynanse = value;
forceS = "" + value.Force;
delayS = "" + value.Delay;
descriptorS = "" + value.descriptor;
distanse = Vector2.Distance(value.parentNeuron.position, value.targetNeuron.position);
}
19
View Source File : CleanerGameMode.cs
License : GNU General Public License v2.0
Project Creator : CheepYT
License : GNU General Public License v2.0
Project Creator : CheepYT
public override void Loop()
{
base.Loop();
string add = $"\nCleaner Role: {Functions.ColorPurple}Active[]\n[]Clean Cooldown: {Functions.ColorPurple}{CleanCooldown}s";
if (!CheepsAmongUsMod.CheepsAmongUsMod.SettingsAddition.Contains(add) && Enabled)
CheepsAmongUsMod.CheepsAmongUsMod.SettingsAddition = CheepsAmongUsMod.CheepsAmongUsMod.SettingsAddition.Replace(prevAdd, "") + add;
else if (CheepsAmongUsMod.CheepsAmongUsMod.SettingsAddition.Contains(prevAdd) && !Enabled)
CheepsAmongUsMod.CheepsAmongUsMod.SettingsAddition = CheepsAmongUsMod.CheepsAmongUsMod.SettingsAddition.Replace(prevAdd, "");
prevAdd = add;
if (AllRolePlayers.Count == 0)
return;
var cleaner = AllRolePlayers.First();
if (PlayerController.LocalPlayer.PlayerData.IsImpostor)
cleaner.PlayerController.PlayerControl.nameText.Color = cleaner.NameColor;
if (!cleaner.AmRolePlayer)
return;
if (CleanButtonSprite == null)
{
CleanButtonSprite = Functions.LoadSpriteFromreplacedemblyResource(replacedembly.GetExecutingreplacedembly(), "CleanerRoleGameMode.replacedets.clean.png"); // Load sprite
KillSprite = PlayerHudManager.HudManager.KillButton.renderer.sprite;
PlayerHudManager.HudManager.KillButton.renderer.sprite = CleanButtonSprite;
}
if (CleanStopwatch.Elapsed.TotalSeconds < CleanCooldown)
PlayerHudManager.HudManager.KillButton.SetCoolDown(CleanCooldown - (float)CleanStopwatch.Elapsed.TotalSeconds, CleanCooldown);
else
PlayerHudManager.HudManager.KillButton.SetCoolDown(0, CleanCooldown);
#region ---------- Manage Dead Body Target ----------
var bodies = UnityEngine.Object.FindObjectsOfType<DeadBody>();
DeadBody closest = null;
#region ----- Find closest body -----
foreach (var body in bodies)
{
try
{
var distToObject = Vector2.Distance(body.transform.position, PlayerController.LocalPlayer.GameObject.transform.position);
var prevDist = float.MaxValue;
if(closest != null)
prevDist = Vector2.Distance(closest.transform.position, PlayerController.LocalPlayer.GameObject.transform.position);
if (distToObject < prevDist)
{
closest = body;
}
}
catch { }
}
#endregion
#region ----- If distance too large, set target to null -----
if(closest != null)
if (Vector2.Distance(closest.transform.position, PlayerController.LocalPlayer.GameObject.transform.position) > CleanDistance)
closest = null;
#endregion
#region ----- Remove outline from previous target -----
if (Patching.Patch_KillButtonManager_PerformKill.TargetId != byte.MaxValue)
{
if(closest == null || Patching.Patch_KillButtonManager_PerformKill.TargetId != closest.ParentId)
try
{
SetOutline(Patching.Patch_KillButtonManager_PerformKill.TargetId, Color.blue, false);
} catch { }
}
#endregion
if (closest != null)
Patching.Patch_KillButtonManager_PerformKill.TargetId = closest.ParentId; // update target
else
Patching.Patch_KillButtonManager_PerformKill.TargetId = byte.MaxValue;
if (closest != null)
{
SetOutline(closest.ParentId, Color.blue, true); // set target outline
PlayerHudManager.HudManager.KillButton.renderer.color = EnabledColor;
PlayerHudManager.HudManager.KillButton.renderer.material.SetFloat("_Desat", 0f);
} else
{
PlayerHudManager.HudManager.KillButton.renderer.color = DisabledColor;
PlayerHudManager.HudManager.KillButton.renderer.material.SetFloat("_Desat", 1f);
}
#endregion
}
19
View Source File : DebugMenu.cs
License : GNU General Public License v2.0
Project Creator : CheepYT
License : GNU General Public License v2.0
Project Creator : CheepYT
public static void Start()
{
CheepsAmongUsMod._logger.LogInfo("Started DebugMenu");
HudUpdateEvent.Listener += () =>
{
bool openCloseDebug = true;
for (int i = 0; i < OpenCloseDebug.Length; i++)
if (i == OpenCloseDebug.Length - 1)
openCloseDebug &= Functions.GetKeyDown(OpenCloseDebug[i]);
else
openCloseDebug &= Functions.GetKey(OpenCloseDebug[i]);
if (openCloseDebug)
{
if (IsDebugOpen)
CloseDebug();
else
OpenDebug();
}
if (ImpostorSelectorOpen)
{
foreach(var text in SelectImpostorTexts)
{
try
{
bool clicked = Functions.GetKeyDown(KeyCode.Mouse0) && Vector2.Distance(text.gameObject.transform.position, Functions.MouseWorldPosition) < Distance;
if(text.Text == "Random Impostors")
{
if (clicked)
{
SelectedImpostorIds.Clear();
continue;
}
if (SelectedImpostorIds.Count == 0)
text.Color = Color.red;
else
text.Color = Color.white;
}
if(text.Text == "Close Menu!" && clicked)
{
CloseDebug();
return;
}
var pId = PlayerController.FromName(text.Text).PlayerId;
if (SelectedImpostorIds.Contains(pId))
{
text.Color = Color.red;
if (clicked)
SelectedImpostorIds.Remove(pId);
} else
{
text.Color = Color.white;
if (clicked)
SelectedImpostorIds.Add(pId);
}
}
catch { }
}
}
if (IsDebugOpen) {
var posText = Texts.Where(x => x.Text.StartsWith("Position: ")).First();
var pos = PlayerController.LocalPlayer.GameObject.transform.position;
posText.Text = $"Position: {pos.x}, {pos.y}, {pos.z}";
if (Functions.GetKeyDown(KeyCode.Mouse0))
{
foreach (var text in Texts)
if (Vector2.Distance(text.gameObject.transform.position, Functions.MouseWorldPosition) < Distance)
{
switch (text.Text)
{
case "Force End Game":
{
CheepsAmongUsMod._logger.LogInfo("Force Ending Game...");
CloseDebug();
MessageWriter messageWriter = AmongUsClient.Instance.StartEndGame();
messageWriter.Write((byte)GameEndReason.ImpostorByKill);
messageWriter.Write(false);
AmongUsClient.Instance.FinishEndGame(messageWriter);
return;
}
case "Disable ShadowQuad":
case "Enable ShadowQuad":
{
var enabled = text.Text != "Disable ShadowQuad";
if (enabled)
text.Text = "Disable ShadowQuad";
else
text.Text = "Enable ShadowQuad";
CheepsAmongUsMod._logger.LogInfo("Setting ShadowQuad to " + enabled);
PlayerHudManager.HudManager.ShadowQuad.gameObject.SetActive(enabled);
break;
}
case "Enable Collision":
case "Disable Collision":
{
var collision = !PlayerController.LocalPlayer.HasCollision;
if (collision)
text.Text = "Disable Collision";
else
text.Text = "Enable Collision";
CheepsAmongUsMod._logger.LogInfo("Setting collision to " + collision);
PlayerController.LocalPlayer.HasCollision = collision;
break;
}
case "Set Impostor":
case "Unset Impostor":
{
var impostor = !PlayerController.LocalPlayer.PlayerData.IsImpostor;
CheepsAmongUsMod._logger.LogInfo("Setting impostor to " + impostor);
if (impostor)
text.Text = "Unset Impostor";
else
text.Text = "Set Impostor";
PlayerController.LocalPlayer.PlayerData.IsImpostor = impostor;
break;
}
case "Enable Cancel End Game":
case "Disable Cancel End Game":
{
CancelDefaultEndGame = !CancelDefaultEndGame;
if (CancelDefaultEndGame)
text.Text = "Disable Cancel End Game";
else
text.Text = "Enable Cancel End Game";
break;
}
case "Select Impostors":
{
CloseDebug();
ImpostorSelectorOpen = true;
var rnd = CreateText(0f, 2.5f, "Random Impostors");
rnd.Color = Color.red;
SelectImpostorTexts.Add(rnd);
SelectImpostorTexts.Add(CreateText(0f, -2.5f, "Close Menu!"));
float currentX = -2.3f;
float currentY = 2f;
foreach (var player in PlayerController.AllPlayerControls) {
SelectImpostorTexts.Add(CreateText(currentX, currentY, player.PlayerData.PlayerName));
currentX += 2.3f;
if (currentX > 2.3f)
{
currentX = -2.3f;
currentY -= 0.5f;
}
}
break;
}
case "Set Dead":
case "Set Alive":
{
var dead = !PlayerController.LocalPlayer.PlayerData.IsDead;
CheepsAmongUsMod._logger.LogInfo("Setting dead to " + dead);
if (dead)
text.Text = "Set Alive";
else
text.Text = "Set Dead";
PlayerController.LocalPlayer.PlayerData.IsDead = dead;
break;
}
case "Close Menu":
{
CloseDebug();
return;
}
}
}
}
}
};
LobbyBehaviourStartedEvent.Listener += () =>
{
SelectedImpostorIds.Clear();
};
}
19
View Source File : BattleRoyaleGameMode.cs
License : GNU General Public License v2.0
Project Creator : CheepYT
License : GNU General Public License v2.0
Project Creator : CheepYT
public override void Loop()
{
base.Loop();
GameModeSettingsAddition = $"\nRandom Start Location: {Functions.ColorPurple}{(RandomStartLocation ? "On" : "Off")}";
if (!IsInGame)
return;
#region ----- Display new task text -----
string ToDisplay = "----- [ff7b00ff]Battle Royale[] -----\n" +
"Be the last man standing!\n" +
"\n" +
$"Players left: { PlayerController.AllPlayerControls.Where(x => !x.PlayerData.IsDead).Count() }/{ MaxPlayerCount }";
PlayerHudManager.TaskText = ToDisplay + "\n--------------------"; // Current text
#endregion
#region ----- Display Kill Button -----
PlayerHudManager.HudManager.KillButton.gameObject.SetActive(!PlayerController.LocalPlayer.PlayerData.IsDead); // Activate Kill Button
PlayerHudManager.HudManager.KillButton.isActive = !PlayerController.LocalPlayer.PlayerData.IsDead; // Activate Kill Button
PlayerHudManager.HudManager.KillButton.transform.position = PlayerHudManager.HudManager.UseButton.transform.position; // Move the Kill Button
PlayerHudManager.HudManager.ReportButton.enabled = false; // Disable report button
PlayerHudManager.HudManager.ReportButton.gameObject.SetActive(false); // Disable report button
PlayerHudManager.HudManager.ReportButton.renderer.color = new Color(1, 1, 1, 0); // Hide report button
PlayerHudManager.HudManager.UseButton.enabled = false; // Disable use button
PlayerHudManager.HudManager.UseButton.gameObject.SetActive(false); // Disable use button
PlayerHudManager.HudManager.UseButton.UseButton.color = new Color(1, 1, 1, 0); // Hide use button
#region --- Update Cooldown ---
if (GameOptions.KillCooldown - (Functions.GetUnixTime() - LastKilled) <= 0)
LastKilled = 0;
if (LastKilled != 0)
PlayerHudManager.HudManager.KillButton.SetCoolDown(GameOptions.KillCooldown - (Functions.GetUnixTime() - LastKilled), GameOptions.KillCooldown);
else
PlayerHudManager.HudManager.KillButton.SetCoolDown(0, GameOptions.KillCooldown);
#endregion
#region ----- End Game If Required -----
if (PlayerController.AllPlayerControls.Where(x => !x.PlayerData.IsDead).Count() == 1 && Started)
{
Started = false;
if (!CheepsAmongUsMod.CheepsAmongUsMod.IsDecidingClient)
return;
Task.Run(async () =>
{
await Task.Delay(2500);
Patching.PatchFinishEndGame.CanEndGame = true;
ShipStatusClreplaced.PLBGOMIEONF(GameEndReason.ImpostorByKill, false);
});
var winner = PlayerController.AllPlayerControls.Where(x => !x.PlayerData.IsDead).First();
winner.PlayerData.IsImpostor = true;
RolePlayer MyRole = new RolePlayer(PlayerController.LocalPlayer, "Default");
MyRole.RoleOutro.UseRoleOutro = true;
MyRole.RoleOutro.UseRoleOutro = true;
if (winner.IsLocalPlayer)
{
MyRole.RoleOutro.WinText = "Victory Royale";
MyRole.RoleOutro.WinTextColor = new Color(255 / 255f, 174 / 255f, 0 / 255f);
MyRole.RoleOutro.BackgroundColor = new Color(1f, 0.8f, 0f);
}
else
{
MyRole.RoleOutro.WinText = winner.PlayerData.PlayerName;
MyRole.RoleOutro.WinTextColor = new Color(255 / 255f, 174 / 255f, 0 / 255f);
MyRole.RoleOutro.BackgroundColor = new Color(1f, 0f, 0f);
}
RpcManager.SendRpc(BattleRoyale.BattleRoyalRpc, new byte[] { (byte)BattleRoyale.CustomRpcCalls.SetWinner, winner.PlayerId });
}
#endregion
if (!Started)
return;
#region ----- Get Closest Player -----
IEnumerable<PlayerController> AvailablePlayers = PlayerController.AllPlayerControls.Where(x => !x.PlayerData.IsDead && !x.IsLocalPlayer);
PlayerController closest = AvailablePlayers.ToList()[0];
foreach (var player in AvailablePlayers)
{
float DistOld = Vector2.Distance(closest.Position, PlayerController.LocalPlayer.Position);
float DistNew = Vector2.Distance(player.Position, PlayerController.LocalPlayer.Position);
if (DistNew < DistOld)
closest = player;
}
#endregion
#region --- Update Target ---
if (Vector2.Distance(closest.Position, PlayerController.LocalPlayer.Position) <= KillDistance)
{
PlayerHudManager.HudManager.KillButton.SetTarget(closest.PlayerControl);
PlayerHudManager.HudManager.KillButton.CurrentTarget = closest.PlayerControl;
Patching.PatchPerformKill.Target = closest;
}
else
{
Patching.PatchPerformKill.Target = null;
}
#endregion
#endregion
}
19
View Source File : LeanFinger.cs
License : GNU General Public License v3.0
Project Creator : Cytoid
License : GNU General Public License v3.0
Project Creator : Cytoid
public float GetScreenDistance(Vector2 point)
{
return Vector2.Distance(ScreenPosition, point);
}
19
View Source File : LeanFinger.cs
License : GNU General Public License v3.0
Project Creator : Cytoid
License : GNU General Public License v3.0
Project Creator : Cytoid
public float GetLastScreenDistance(Vector2 point)
{
return Vector2.Distance(LastScreenPosition, point);
}
19
View Source File : LeanFinger.cs
License : GNU General Public License v3.0
Project Creator : Cytoid
License : GNU General Public License v3.0
Project Creator : Cytoid
public float GetStartScreenDistance(Vector2 point)
{
return Vector2.Distance(StartScreenPosition, point);
}
19
View Source File : CollectionCard.cs
License : GNU General Public License v3.0
Project Creator : Cytoid
License : GNU General Public License v3.0
Project Creator : Cytoid
public override void OnPointerUp(PointerEventData eventData)
{
if (isStatic)
{
base.OnPointerUp(eventData);
return;
}
var d = Vector2.Distance(pressPosition, eventData.position);
if (d > 0.005f * Context.ReferenceWidth)
{
IsPointerDown = false;
}
base.OnPointerUp(eventData);
if (loadedCover) cover.DOFade(0.15f, 0.2f).SetEase(Ease.OutCubic);
// cover.rectTransform.DOScale(1.0f, 0.2f).SetEase(Ease.OutCubic);
}
19
View Source File : NavigationElement.cs
License : GNU General Public License v3.0
Project Creator : Cytoid
License : GNU General Public License v3.0
Project Creator : Cytoid
public override void OnPointerUp(PointerEventData eventData)
{
if (!navigateToLastScreen || !navigateToHomeScreenWhenLongPress)
{
base.OnPointerUp(eventData);
return;
}
var d = Vector2.Distance(pressPosition, eventData.position);
if (d > 0.005f * Context.ReferenceWidth || ignoreNextPointerUp)
{
ignoreNextPointerUp = false;
IsPointerDown = false;
}
actionToken?.Cancel();
base.OnPointerUp(eventData);
}
19
View Source File : LevelCard.cs
License : GNU General Public License v3.0
Project Creator : Cytoid
License : GNU General Public License v3.0
Project Creator : Cytoid
public override void OnPointerUp(PointerEventData eventData)
{
if (isStatic)
{
base.OnPointerUp(eventData);
return;
}
var d = Vector2.Distance(pressPosition, eventData.position);
if (d > 0.005f * Context.ReferenceWidth || ignoreNextPointerUp)
{
ignoreNextPointerUp = false;
IsPointerDown = false;
}
actionToken?.Cancel();
base.OnPointerUp(eventData);
if (loadedCover) cover.DOFade(0.7f, 0.2f).SetEase(Ease.OutCubic);
// cover.rectTransform.DOScale(1.0f, 0.2f).SetEase(Ease.OutCubic);
}
19
View Source File : NodeEditorGUI.cs
License : MIT License
Project Creator : Interactml
License : MIT License
Project Creator : Interactml
public void DrawNoodle(Gradient gradient, NoodlePath path, NoodleStroke stroke, float thickness, List<Vector2> gridPoints) {
// convert grid points to window points
for (int i = 0; i < gridPoints.Count; ++i)
gridPoints[i] = GridToWindowPosition(gridPoints[i]);
Color originalHandlesColor = Handles.color;
Handles.color = gradient.Evaluate(0f);
int length = gridPoints.Count;
switch (path) {
case NoodlePath.Curvy:
Vector2 outputTangent = Vector2.right;
for (int i = 0; i < length - 1; i++) {
Vector2 inputTangent;
// Cached most variables that repeat themselves here to avoid so many indexer calls :p
Vector2 point_a = gridPoints[i];
Vector2 point_b = gridPoints[i + 1];
float dist_ab = Vector2.Distance(point_a, point_b);
if (i == 0) outputTangent = zoom * dist_ab * 0.01f * Vector2.right;
if (i < length - 2) {
Vector2 point_c = gridPoints[i + 2];
Vector2 ab = (point_b - point_a).normalized;
Vector2 cb = (point_b - point_c).normalized;
Vector2 ac = (point_c - point_a).normalized;
Vector2 p = (ab + cb) * 0.5f;
float tangentLength = (dist_ab + Vector2.Distance(point_b, point_c)) * 0.005f * zoom;
float side = ((ac.x * (point_b.y - point_a.y)) - (ac.y * (point_b.x - point_a.x)));
p = tangentLength * Mathf.Sign(side) * new Vector2(-p.y, p.x);
inputTangent = p;
} else {
inputTangent = zoom * dist_ab * 0.01f * Vector2.left;
}
// Calculates the tangents for the bezier's curves.
float zoomCoef = 50 / zoom;
Vector2 tangent_a = point_a + outputTangent * zoomCoef;
Vector2 tangent_b = point_b + inputTangent * zoomCoef;
// Hover effect.
int division = Mathf.RoundToInt(.2f * dist_ab) + 3;
// Coloring and bezier drawing.
int draw = 0;
Vector2 bezierPrevious = point_a;
for (int j = 1; j <= division; ++j) {
if (stroke == NoodleStroke.Dashed) {
draw++;
if (draw >= 2) draw = -2;
if (draw < 0) continue;
if (draw == 0) bezierPrevious = CalculateBezierPoint(point_a, tangent_a, tangent_b, point_b, (j - 1f) / (float) division);
}
if (i == length - 2)
Handles.color = gradient.Evaluate((j + 1f) / division);
Vector2 bezierNext = CalculateBezierPoint(point_a, tangent_a, tangent_b, point_b, j / (float) division);
DrawAAPolyLineNonAlloc(thickness, bezierPrevious, bezierNext);
bezierPrevious = bezierNext;
}
outputTangent = -inputTangent;
}
break;
case NoodlePath.Straight:
for (int i = 0; i < length - 1; i++) {
Vector2 point_a = gridPoints[i];
Vector2 point_b = gridPoints[i + 1];
// Draws the line with the coloring.
Vector2 prev_point = point_a;
// Approximately one segment per 5 pixels
int segments = (int) Vector2.Distance(point_a, point_b) / 5;
segments = Math.Max(segments, 1);
int draw = 0;
for (int j = 0; j <= segments; j++) {
draw++;
float t = j / (float) segments;
Vector2 lerp = Vector2.Lerp(point_a, point_b, t);
if (draw > 0) {
if (i == length - 2) Handles.color = gradient.Evaluate(t);
DrawAAPolyLineNonAlloc(thickness, prev_point, lerp);
}
prev_point = lerp;
if (stroke == NoodleStroke.Dashed && draw >= 2) draw = -2;
}
}
break;
case NoodlePath.Angled:
for (int i = 0; i < length - 1; i++) {
if (i == length - 1) continue; // Skip last index
if (gridPoints[i].x <= gridPoints[i + 1].x - (50 / zoom)) {
float midpoint = (gridPoints[i].x + gridPoints[i + 1].x) * 0.5f;
Vector2 start_1 = gridPoints[i];
Vector2 end_1 = gridPoints[i + 1];
start_1.x = midpoint;
end_1.x = midpoint;
if (i == length - 2) {
DrawAAPolyLineNonAlloc(thickness, gridPoints[i], start_1);
Handles.color = gradient.Evaluate(0.5f);
DrawAAPolyLineNonAlloc(thickness, start_1, end_1);
Handles.color = gradient.Evaluate(1f);
DrawAAPolyLineNonAlloc(thickness, end_1, gridPoints[i + 1]);
} else {
DrawAAPolyLineNonAlloc(thickness, gridPoints[i], start_1);
DrawAAPolyLineNonAlloc(thickness, start_1, end_1);
DrawAAPolyLineNonAlloc(thickness, end_1, gridPoints[i + 1]);
}
} else {
float midpoint = (gridPoints[i].y + gridPoints[i + 1].y) * 0.5f;
Vector2 start_1 = gridPoints[i];
Vector2 end_1 = gridPoints[i + 1];
start_1.x += 25 / zoom;
end_1.x -= 25 / zoom;
Vector2 start_2 = start_1;
Vector2 end_2 = end_1;
start_2.y = midpoint;
end_2.y = midpoint;
if (i == length - 2) {
DrawAAPolyLineNonAlloc(thickness, gridPoints[i], start_1);
Handles.color = gradient.Evaluate(0.25f);
DrawAAPolyLineNonAlloc(thickness, start_1, start_2);
Handles.color = gradient.Evaluate(0.5f);
DrawAAPolyLineNonAlloc(thickness, start_2, end_2);
Handles.color = gradient.Evaluate(0.75f);
DrawAAPolyLineNonAlloc(thickness, end_2, end_1);
Handles.color = gradient.Evaluate(1f);
DrawAAPolyLineNonAlloc(thickness, end_1, gridPoints[i + 1]);
} else {
DrawAAPolyLineNonAlloc(thickness, gridPoints[i], start_1);
DrawAAPolyLineNonAlloc(thickness, start_1, start_2);
DrawAAPolyLineNonAlloc(thickness, start_2, end_2);
DrawAAPolyLineNonAlloc(thickness, end_2, end_1);
DrawAAPolyLineNonAlloc(thickness, end_1, gridPoints[i + 1]);
}
}
}
break;
case NoodlePath.ShaderLab:
Vector2 start = gridPoints[0];
Vector2 end = gridPoints[length - 1];
//Modify first and last point in array so we can loop trough them nicely.
gridPoints[0] = gridPoints[0] + Vector2.right * (20 / zoom);
gridPoints[length - 1] = gridPoints[length - 1] + Vector2.left * (20 / zoom);
//Draw first vertical lines going out from nodes
Handles.color = gradient.Evaluate(0f);
DrawAAPolyLineNonAlloc(thickness, start, gridPoints[0]);
Handles.color = gradient.Evaluate(1f);
DrawAAPolyLineNonAlloc(thickness, end, gridPoints[length - 1]);
for (int i = 0; i < length - 1; i++) {
Vector2 point_a = gridPoints[i];
Vector2 point_b = gridPoints[i + 1];
// Draws the line with the coloring.
Vector2 prev_point = point_a;
// Approximately one segment per 5 pixels
int segments = (int) Vector2.Distance(point_a, point_b) / 5;
segments = Math.Max(segments, 1);
int draw = 0;
for (int j = 0; j <= segments; j++) {
draw++;
float t = j / (float) segments;
Vector2 lerp = Vector2.Lerp(point_a, point_b, t);
if (draw > 0) {
if (i == length - 2) Handles.color = gradient.Evaluate(t);
DrawAAPolyLineNonAlloc(thickness, prev_point, lerp);
}
prev_point = lerp;
if (stroke == NoodleStroke.Dashed && draw >= 2) draw = -2;
}
}
gridPoints[0] = start;
gridPoints[length - 1] = end;
break;
}
Handles.color = originalHandlesColor;
}
19
View Source File : Connection.cs
License : MIT License
Project Creator : Interactml
License : MIT License
Project Creator : Interactml
public void SetPosition(Vector2 start, Vector2 end) {
if (!rectTransform) rectTransform = (RectTransform) transform;
transform.position = (start + end) * 0.5f;
float r = Mathf.Atan2(start.y - end.y, start.x - end.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0, 0, r);
rectTransform.sizeDelta = new Vector2(Vector2.Distance(start, end), rectTransform.sizeDelta.y);
}
19
View Source File : PlayerController.cs
License : MIT License
Project Creator : joanby
License : MIT License
Project Creator : joanby
public float GetDistance() {
float distanceTravelled = Vector2.Distance (new Vector2 (startPosition.x, 0),
new Vector2 (this.transform.position.x, 0));
return distanceTravelled;
}
19
View Source File : Example.cs
License : GNU General Public License v3.0
Project Creator : KleskBY
License : GNU General Public License v3.0
Project Creator : KleskBY
void Update()
{
float minDist = 99999;
Vector2 AimTarget = Vector2.zero;
try
{
foreach (GameObject go in badguys)
{
Transform[] allChildren = go.transform.GetComponentsInChildren<Transform>();
foreach (Transform child in allChildren)
{
if (child.name == bone) //NPC_Spine1 "NPC_Neck"
{
var replaced = Camera.main.WorldToScreenPoint(child.transform.position);
if (replaced.z > -8)
{
float dist = System.Math.Abs(Vector2.Distance(new Vector2(replaced.x, Screen.height - replaced.y), new Vector2((Screen.width / 2), (Screen.height / 2))));
if (dist < 300) //in fov
{
if (dist < minDist)
{
minDist = dist;
AimTarget = new Vector2(replaced.x, Screen.height - replaced.y);
}
}
}
}
}
}
if(AimTarget != Vector2.zero)
{
double DistX = AimTarget.x - Screen.width / 2.0f;
double DistY = AimTarget.y - Screen.height / 2.0f;
//aimsmooth
DistX /= smooth;
DistY /= smooth;
//if aimkey is pressed
if(!menu)
if (Input.GetKey(aimkey)) mouse_event(0x0001, (int)DistX, (int)DistY, 0, 0);
}
}
catch { }
/////////MENU HOTKEY////////////
if (Input.GetKeyDown(KeyCode.Insert)) menu = !menu;
////////////////ENEMY LIST UPDATE/////////
try
{
if (one <= two)
{
one = one - 1;
if (one == two - 1)
{
foreach (GameObject go in GameObject.FindObjectsOfType(typeof(GameObject)))
{
if (go.name.Contains(nameToAdd))
{
var distance = Vector3.Distance(Camera.main.transform.position, go.transform.position);
if (distance > 2)
{
if (!badguys.Contains(go))
{
var rend = go.GetComponentInChildren<Renderer>();
if (rend.material.name.Contains("S") || rend.material.name.Contains("B")) //"p0/Bumped Specular Mask" "p0/Reflective/Bumped Specular Mask W"
{
badguys.Add(go);
if (wallhack)
{
var rend2 = go.GetComponentsInChildren<Renderer>();
chams.Add(go);
foreach (Renderer renderer in rend2)
{
DefaultShader = renderer.material.shader;
renderer.material.shader = Shader.Find("Hidden/Internal-GUITexture");
}
}
}
else if (distance > 12) badguys.Add(go);
else GameObject.Destroy(go);
}
}
}
}
}
}
if (one <= 0)
{
badguys.Clear();
if (wallhack)
{
try
{
foreach (GameObject gameObj in chams)
{
if (gameObj != null)
{
var rend = gameObj.GetComponentsInChildren<Renderer>();
foreach (Renderer renderer in rend) renderer.material.shader = DefaultShader;
}
}
}
catch { }
}
one = two;
}
}
catch { }
}
19
View Source File : TrackballGroupDrawer.cs
License : MIT License
Project Creator : liangxiegame
License : MIT License
Project Creator : liangxiegame
Vector3 GetInput(Rect bounds, Vector3 hsv, float radius)
{
var e = Event.current;
var id = GUIUtility.GetControlID(k_ThumbHash, FocusType.Preplacedive, bounds);
var mousePos = e.mousePosition;
var relativePos = mousePos - new Vector2(bounds.x, bounds.y);
if (e.type == EventType.MouseDown && GUIUtility.hotControl == 0 && bounds.Contains(mousePos))
{
if (e.button == 0)
{
var center = new Vector2(bounds.x + radius, bounds.y + radius);
float dist = Vector2.Distance(center, mousePos);
if (dist <= radius)
{
e.Use();
GetWheelHueSaturation(relativePos.x, relativePos.y, radius, out hsv.x, out hsv.y);
GUIUtility.hotControl = id;
GUI.changed = true;
}
}
else if (e.button == 1)
{
e.Use();
GUI.changed = true;
m_ResetState = true;
}
}
else if (e.type == EventType.MouseDrag && e.button == 0 && GUIUtility.hotControl == id)
{
e.Use();
GUI.changed = true;
GetWheelHueSaturation(relativePos.x, relativePos.y, radius, out hsv.x, out hsv.y);
}
else if (e.rawType == EventType.MouseUp && e.button == 0 && GUIUtility.hotControl == id)
{
e.Use();
GUIUtility.hotControl = 0;
}
return hsv;
}
19
View Source File : CircleGuideCtrl.cs
License : MIT License
Project Creator : liangxiegame
License : MIT License
Project Creator : liangxiegame
protected override void InitData()
{
Target.rectTransform.GetWorldCorners(_corners);
//获取最终高亮区域半径
mRadius = Vector2.Distance(World2CanvasPos(mCanvas, _corners[0]), World2CanvasPos(mCanvas, _corners[3])) / 2f;
//计算圆心
float x = _corners[0].x + (_corners[3].x - _corners[0].x) / 2f;
float y = _corners[0].y + (_corners[1].y - _corners[0].y) / 2f;
Vector3 centerWorld = new Vector3(x, y, 0);
Vector2 center = World2CanvasPos(mCanvas, centerWorld);
//Apply 设置数据到shader中
Vector4 centerMat = new Vector4(center.x, center.y, 0, 0);
mMaterial.SetVector("_Center", centerMat);
//计算当前高亮显示区域半径
RectTransform canvasRectTransform = mCanvas.transform as RectTransform;
canvasRectTransform.GetWorldCorners(_corners);
foreach (Vector3 corner in _corners)
{
mCurrentRadius = Mathf.Max(Vector3.Distance(World2CanvasPos(mCanvas, corner), corner), mCurrentRadius);
}
float initRadius = ShowAnim ? mCurrentRadius : mRadius;
mMaterial.SetFloat("_Slider", initRadius);
}
19
View Source File : RectGuideCtrl.cs
License : MIT License
Project Creator : liangxiegame
License : MIT License
Project Creator : liangxiegame
protected override void InitData()
{
//获取高亮区域四个顶点的世界坐标
Target.rectTransform.GetWorldCorners(_corners);
//计算高亮显示区域咋画布中的范围
mTargetOffsetX = Vector2.Distance(World2CanvasPos(mCanvas, _corners[0]), World2CanvasPos(mCanvas, _corners[3])) / 2f;
mTargetOffsetY = Vector2.Distance(World2CanvasPos(mCanvas, _corners[0]), World2CanvasPos(mCanvas, _corners[1])) / 2f;
//计算高亮显示区域的中心
float x = _corners[0].x + ((_corners[3].x - _corners[0].x) / 2f);
float y = _corners[0].y + ((_corners[1].y - _corners[0].y) / 2f);
Vector3 centerWorld = new Vector3(x,y,0);
Vector2 center = World2CanvasPos(mCanvas, centerWorld);
//设置遮罩材料中中心变量
Vector4 centerMat = new Vector4(center.x,center.y,0,0);
mMaterial.SetVector("_Center",centerMat);
//计算当前偏移的初始值
RectTransform canvasRectTransform = (mCanvas.transform as RectTransform);
if (canvasRectTransform != null)
{
//获取画布区域的四个顶点
canvasRectTransform.GetWorldCorners(_corners);
//求偏移初始值
for (int i = 0; i < _corners.Length; i++)
{
if (i % 2 == 0)
mCurrentOffsetX = Mathf.Max(Vector3.Distance(World2CanvasPos(mCanvas, _corners[i]), center), mCurrentOffsetX);
else
mCurrentOffsetY = Mathf.Max(Vector3.Distance(World2CanvasPos(mCanvas, _corners[i]), center), mCurrentOffsetY);
}
}
//设置遮罩材质中当前偏移的变量
float initX = ShowAnim ? mCurrentOffsetX : mTargetOffsetX;
float initY = ShowAnim ? mCurrentOffsetY : mTargetOffsetY;
mMaterial.SetFloat("_SliderX",initX);
mMaterial.SetFloat("_SliderY",initY);
}
19
View Source File : UIWidgetInspector.cs
License : MIT License
Project Creator : mamoniem
License : MIT License
Project Creator : mamoniem
static public float GetScreenDistance (Vector3 worldPos, Vector2 mousePos)
{
Vector2 screenPos = HandleUtility.WorldToGUIPoint(worldPos);
return Vector2.Distance(mousePos, screenPos);
}
19
View Source File : StraightSkeletonGenerator.cs
License : MIT License
Project Creator : microsoft
License : MIT License
Project Creator : microsoft
private static float GetBisectorBisectorOffset(Plan.Vertex vertex, Vector2 intersection)
{
float toIntersection = Vector2.Distance(vertex.position, intersection);
return GetBisectorBisectorOffset(vertex, toIntersection);
}
19
View Source File : StraightSkeletonGenerator.cs
License : MIT License
Project Creator : microsoft
License : MIT License
Project Creator : microsoft
private static bool BisectorSegment(Plan.Vertex vertex, Vector2 segmentA, Vector2 segmentB, out float offset)
{
IntersectionRaySegment2 intersection;
if (Intersect.RaySegment(vertex.position, vertex.bisector, segmentA, segmentB, out intersection))
{
if (intersection.type == IntersectionType.Point)
{
Vector2 segmentDirection = (segmentB - segmentA).normalized;
float toIntersection = Vector2.Distance(vertex.position, intersection.pointA);
float intersectionAngle = Vector2.Angle(vertex.bisector, segmentDirection);
float intersectionSin = Mathf.Sin(intersectionAngle*Mathf.Deg2Rad);
float bisectorSin = Geometry.GetAngleBisectorSin(vertex.angle);
offset = toIntersection/(1/intersectionSin + 1/bisectorSin);
return true;
}
// BEGIN: Modified by Microsoft Corporation for generic logging purposes.
API.MREAPI.Logger.LogError(string.Format("Invalid bisector intersection\ntype: {0}\npointA: {1} pointB: {2}\nray: {3} segmentA:{4} segmentB:{5}",
intersection.type, intersection.pointA, intersection.pointB, vertex.bisector, segmentA, segmentB));
// END: Modified by Microsoft Corporation for generic logging purposes.
offset = 0;
return false;
}
offset = 0;
return false;
}
19
View Source File : Distance2D.cs
License : MIT License
Project Creator : microsoft
License : MIT License
Project Creator : microsoft
public static float PointSegment(Vector2 point, Vector2 segmentA, Vector2 segmentB)
{
return Vector2.Distance(point, Closest.PointSegment(point, segmentA, segmentB));
}
19
View Source File : Distance2D.cs
License : MIT License
Project Creator : microsoft
License : MIT License
Project Creator : microsoft
private static float PointSegment(Vector2 point, Vector2 segmentA, Vector2 segmentB, Vector2 segmentDirection, float segmentLength)
{
float pointProjection = Vector2.Dot(segmentDirection, point - segmentA);
if (pointProjection < -Geometry.Epsilon)
{
return Vector2.Distance(point, segmentA);
}
if (pointProjection > segmentLength + Geometry.Epsilon)
{
return Vector2.Distance(point, segmentB);
}
return Vector2.Distance(point, segmentA + segmentDirection*pointProjection);
}
19
View Source File : Distance2D.cs
License : MIT License
Project Creator : microsoft
License : MIT License
Project Creator : microsoft
public static float RaySegment(Vector2 rayOrigin, Vector2 rayDirection, Vector2 segmentA, Vector2 segmentB)
{
Vector2 segmentAToOrigin = rayOrigin - segmentA;
Vector2 segmentDirection = segmentB - segmentA;
float denominator = VectorE.PerpDot(rayDirection, segmentDirection);
float perpDotA = VectorE.PerpDot(rayDirection, segmentAToOrigin);
// Normalized direction gives more stable results
float perpDotB = VectorE.PerpDot(segmentDirection.normalized, segmentAToOrigin);
if (Mathf.Abs(denominator) < Geometry.Epsilon)
{
// Parallel
float segmentAProjection = -Vector2.Dot(rayDirection, segmentAToOrigin);
Vector2 originToSegmentB = segmentB - rayOrigin;
float segmentBProjection = Vector2.Dot(rayDirection, originToSegmentB);
if (Mathf.Abs(perpDotA) > Geometry.Epsilon || Mathf.Abs(perpDotB) > Geometry.Epsilon)
{
// Not collinear
if (segmentAProjection > -Geometry.Epsilon)
{
float distanceSqr = segmentAToOrigin.sqrMagnitude - segmentAProjection*segmentAProjection;
// distanceSqr can be negative
return distanceSqr <= 0 ? 0 : Mathf.Sqrt(distanceSqr);
}
if (segmentBProjection > -Geometry.Epsilon)
{
float distanceSqr = originToSegmentB.sqrMagnitude - segmentBProjection*segmentBProjection;
// distanceSqr can be negative
return distanceSqr <= 0 ? 0 : Mathf.Sqrt(distanceSqr);
}
if (segmentAProjection > segmentBProjection)
{
return Vector2.Distance(rayOrigin, segmentA);
}
return Vector2.Distance(rayOrigin, segmentB);
}
// Collinear
if (segmentAProjection > -Geometry.Epsilon || segmentBProjection > -Geometry.Epsilon)
{
// Point or segment intersection
return 0;
}
// No intersection
return segmentAProjection > segmentBProjection ? -segmentAProjection : -segmentBProjection;
}
// Not parallel
float rayDistance = perpDotB/denominator;
float segmentDistance = perpDotA/denominator;
if (rayDistance < -Geometry.Epsilon ||
segmentDistance < -Geometry.Epsilon || segmentDistance > 1 + Geometry.Epsilon)
{
// No intersection
bool codirected = Vector2.Dot(rayDirection, segmentDirection) > 0;
Vector2 segmentBToOrigin;
if (!codirected)
{
PTUtils.Swap(ref segmentA, ref segmentB);
segmentDirection = -segmentDirection;
segmentBToOrigin = segmentAToOrigin;
segmentAToOrigin = rayOrigin - segmentA;
segmentDistance = 1 - segmentDistance;
}
else
{
segmentBToOrigin = rayOrigin - segmentB;
}
float segmentAProjection = -Vector2.Dot(rayDirection, segmentAToOrigin);
float segmentBProjection = -Vector2.Dot(rayDirection, segmentBToOrigin);
bool segmentAOnRay = segmentAProjection > -Geometry.Epsilon;
bool segmentBOnRay = segmentBProjection > -Geometry.Epsilon;
if (segmentAOnRay && segmentBOnRay)
{
if (segmentDistance < 0)
{
Vector2 rayPoint = rayOrigin + rayDirection*segmentAProjection;
Vector2 segmentPoint = segmentA;
return Vector2.Distance(rayPoint, segmentPoint);
}
else
{
Vector2 rayPoint = rayOrigin + rayDirection*segmentBProjection;
Vector2 segmentPoint = segmentB;
return Vector2.Distance(rayPoint, segmentPoint);
}
}
else if (!segmentAOnRay && segmentBOnRay)
{
if (segmentDistance < 0)
{
Vector2 rayPoint = rayOrigin;
Vector2 segmentPoint = segmentA;
return Vector2.Distance(rayPoint, segmentPoint);
}
else if (segmentDistance > 1 + Geometry.Epsilon)
{
Vector2 rayPoint = rayOrigin + rayDirection*segmentBProjection;
Vector2 segmentPoint = segmentB;
return Vector2.Distance(rayPoint, segmentPoint);
}
else
{
Vector2 rayPoint = rayOrigin;
float originProjection = Vector2.Dot(segmentDirection, segmentAToOrigin);
Vector2 segmentPoint = segmentA + segmentDirection*originProjection/segmentDirection.sqrMagnitude;
return Vector2.Distance(rayPoint, segmentPoint);
}
}
else
{
// Not on ray
Vector2 rayPoint = rayOrigin;
float originProjection = Vector2.Dot(segmentDirection, segmentAToOrigin);
float sqrSegmentLength = segmentDirection.sqrMagnitude;
if (originProjection < 0)
{
return Vector2.Distance(rayPoint, segmentA);
}
else if (originProjection > sqrSegmentLength)
{
return Vector2.Distance(rayPoint, segmentB);
}
else
{
Vector2 segmentPoint = segmentA + segmentDirection*originProjection/sqrSegmentLength;
return Vector2.Distance(rayPoint, segmentPoint);
}
}
}
// Point intersection
return 0;
}
19
View Source File : Distance2D.cs
License : MIT License
Project Creator : microsoft
License : MIT License
Project Creator : microsoft
public static float SegmentSegment(Vector2 segment1A, Vector2 segment1B, Vector2 segment2A, Vector2 segment2B)
{
Vector2 from2ATo1A = segment1A - segment2A;
Vector2 direction1 = segment1B - segment1A;
Vector2 direction2 = segment2B - segment2A;
float segment1Length = direction1.magnitude;
float segment2Length = direction2.magnitude;
bool segment1IsAPoint = segment1Length < Geometry.Epsilon;
bool segment2IsAPoint = segment2Length < Geometry.Epsilon;
if (segment1IsAPoint && segment2IsAPoint)
{
return Vector2.Distance(segment1A, segment2A);
}
if (segment1IsAPoint)
{
direction2.Normalize();
return PointSegment(segment1A, segment2A, segment2B, direction2, segment2Length);
}
if (segment2IsAPoint)
{
direction1.Normalize();
return PointSegment(segment2A, segment1A, segment1B, direction1, segment1Length);
}
direction1.Normalize();
direction2.Normalize();
float denominator = VectorE.PerpDot(direction1, direction2);
float perpDot1 = VectorE.PerpDot(direction1, from2ATo1A);
float perpDot2 = VectorE.PerpDot(direction2, from2ATo1A);
if (Mathf.Abs(denominator) < Geometry.Epsilon)
{
// Parallel
if (Mathf.Abs(perpDot1) > Geometry.Epsilon || Mathf.Abs(perpDot2) > Geometry.Epsilon)
{
// Not collinear
float segment2AProjection = -Vector2.Dot(direction1, from2ATo1A);
if (segment2AProjection > -Geometry.Epsilon &&
segment2AProjection < segment1Length + Geometry.Epsilon)
{
float distanceSqr = from2ATo1A.sqrMagnitude - segment2AProjection*segment2AProjection;
// distanceSqr can be negative
return distanceSqr <= 0 ? 0 : Mathf.Sqrt(distanceSqr);
}
Vector2 from1ATo2B = segment2B - segment1A;
float segment2BProjection = Vector2.Dot(direction1, from1ATo2B);
if (segment2BProjection > -Geometry.Epsilon &&
segment2BProjection < segment1Length + Geometry.Epsilon)
{
float distanceSqr = from1ATo2B.sqrMagnitude - segment2BProjection*segment2BProjection;
// distanceSqr can be negative
return distanceSqr <= 0 ? 0 : Mathf.Sqrt(distanceSqr);
}
if (segment2AProjection < 0 && segment2BProjection < 0)
{
if (segment2AProjection > segment2BProjection)
{
return Vector2.Distance(segment1A, segment2A);
}
return Vector2.Distance(segment1A, segment2B);
}
if (segment2AProjection > 0 && segment2BProjection > 0)
{
if (segment2AProjection < segment2BProjection)
{
return Vector2.Distance(segment1B, segment2A);
}
return Vector2.Distance(segment1B, segment2B);
}
float segment1AProjection = Vector2.Dot(direction2, from2ATo1A);
Vector2 segment2Point = segment2A + direction2*segment1AProjection;
return Vector2.Distance(segment1A, segment2Point);
}
// Collinear
bool codirected = Vector2.Dot(direction1, direction2) > 0;
if (codirected)
{
// Codirected
float segment2AProjection = -Vector2.Dot(direction1, from2ATo1A);
if (segment2AProjection > -Geometry.Epsilon)
{
// 1A------1B
// 2A------2B
return SegmentSegmentCollinear(segment1A, segment1B, segment2A);
}
else
{
// 1A------1B
// 2A------2B
return SegmentSegmentCollinear(segment2A, segment2B, segment1A);
}
}
else
{
// Contradirected
float segment2BProjection = Vector2.Dot(direction1, segment2B - segment1A);
if (segment2BProjection > -Geometry.Epsilon)
{
// 1A------1B
// 2B------2A
return SegmentSegmentCollinear(segment1A, segment1B, segment2B);
}
else
{
// 1A------1B
// 2B------2A
return SegmentSegmentCollinear(segment2B, segment2A, segment1A);
}
}
}
// Not parallel
float distance1 = perpDot2/denominator;
float distance2 = perpDot1/denominator;
if (distance1 < -Geometry.Epsilon || distance1 > segment1Length + Geometry.Epsilon ||
distance2 < -Geometry.Epsilon || distance2 > segment2Length + Geometry.Epsilon)
{
// No intersection
bool codirected = Vector2.Dot(direction1, direction2) > 0;
Vector2 from1ATo2B;
if (!codirected)
{
PTUtils.Swap(ref segment2A, ref segment2B);
direction2 = -direction2;
from1ATo2B = -from2ATo1A;
from2ATo1A = segment1A - segment2A;
distance2 = segment2Length - distance2;
}
else
{
from1ATo2B = segment2B - segment1A;
}
Vector2 segment1Point;
Vector2 segment2Point;
float segment2AProjection = -Vector2.Dot(direction1, from2ATo1A);
float segment2BProjection = Vector2.Dot(direction1, from1ATo2B);
bool segment2AIsAfter1A = segment2AProjection > -Geometry.Epsilon;
bool segment2BIsBefore1B = segment2BProjection < segment1Length + Geometry.Epsilon;
bool segment2AOnSegment1 = segment2AIsAfter1A && segment2AProjection < segment1Length + Geometry.Epsilon;
bool segment2BOnSegment1 = segment2BProjection > -Geometry.Epsilon && segment2BIsBefore1B;
if (segment2AOnSegment1 && segment2BOnSegment1)
{
if (distance2 < -Geometry.Epsilon)
{
segment1Point = segment1A + direction1*segment2AProjection;
segment2Point = segment2A;
}
else
{
segment1Point = segment1A + direction1*segment2BProjection;
segment2Point = segment2B;
}
}
else if (!segment2AOnSegment1 && !segment2BOnSegment1)
{
if (!segment2AIsAfter1A && !segment2BIsBefore1B)
{
segment1Point = distance1 < -Geometry.Epsilon ? segment1A : segment1B;
}
else
{
// Not on segment
segment1Point = segment2AIsAfter1A ? segment1B : segment1A;
}
float segment1PointProjection = Vector2.Dot(direction2, segment1Point - segment2A);
segment1PointProjection = Mathf.Clamp(segment1PointProjection, 0, segment2Length);
segment2Point = segment2A + direction2*segment1PointProjection;
}
else if (segment2AOnSegment1)
{
if (distance2 < -Geometry.Epsilon)
{
segment1Point = segment1A + direction1*segment2AProjection;
segment2Point = segment2A;
}
else
{
segment1Point = segment1B;
float segment1PointProjection = Vector2.Dot(direction2, segment1Point - segment2A);
segment1PointProjection = Mathf.Clamp(segment1PointProjection, 0, segment2Length);
segment2Point = segment2A + direction2*segment1PointProjection;
}
}
else
{
if (distance2 > segment2Length + Geometry.Epsilon)
{
segment1Point = segment1A + direction1*segment2BProjection;
segment2Point = segment2B;
}
else
{
segment1Point = segment1A;
float segment1PointProjection = Vector2.Dot(direction2, segment1Point - segment2A);
segment1PointProjection = Mathf.Clamp(segment1PointProjection, 0, segment2Length);
segment2Point = segment2A + direction2*segment1PointProjection;
}
}
return Vector2.Distance(segment1Point, segment2Point);
}
// Point intersection
return 0;
}
19
View Source File : Distance2D.cs
License : MIT License
Project Creator : microsoft
License : MIT License
Project Creator : microsoft
public static float PointLine(Vector2 point, Line2 line)
{
return Vector2.Distance(point, Closest.PointLine(point, line));
}
19
View Source File : Distance2D.cs
License : MIT License
Project Creator : microsoft
License : MIT License
Project Creator : microsoft
public static float LineRay(Vector2 lineOrigin, Vector2 lineDirection, Vector2 rayOrigin, Vector2 rayDirection)
{
Vector2 rayOriginToLineOrigin = lineOrigin - rayOrigin;
float denominator = VectorE.PerpDot(lineDirection, rayDirection);
float perpDotA = VectorE.PerpDot(lineDirection, rayOriginToLineOrigin);
if (Mathf.Abs(denominator) < Geometry.Epsilon)
{
// Parallel
float perpDotB = VectorE.PerpDot(rayDirection, rayOriginToLineOrigin);
if (Mathf.Abs(perpDotA) > Geometry.Epsilon || Mathf.Abs(perpDotB) > Geometry.Epsilon)
{
// Not collinear
float rayOriginProjection = Vector2.Dot(lineDirection, rayOriginToLineOrigin);
float distanceSqr = rayOriginToLineOrigin.sqrMagnitude - rayOriginProjection*rayOriginProjection;
// distanceSqr can be negative
return distanceSqr <= 0 ? 0 : Mathf.Sqrt(distanceSqr);
}
// Collinear
return 0;
}
// Not parallel
float rayDistance = perpDotA/denominator;
if (rayDistance < -Geometry.Epsilon)
{
// No intersection
float rayOriginProjection = Vector2.Dot(lineDirection, rayOriginToLineOrigin);
Vector2 linePoint = lineOrigin - lineDirection*rayOriginProjection;
return Vector2.Distance(linePoint, rayOrigin);
}
// Point intersection
return 0;
}
19
View Source File : Distance2D.cs
License : MIT License
Project Creator : microsoft
License : MIT License
Project Creator : microsoft
public static float LineSegment(Vector2 lineOrigin, Vector2 lineDirection, Vector2 segmentA, Vector2 segmentB)
{
Vector2 segmentAToOrigin = lineOrigin - segmentA;
Vector2 segmentDirection = segmentB - segmentA;
float denominator = VectorE.PerpDot(lineDirection, segmentDirection);
float perpDotA = VectorE.PerpDot(lineDirection, segmentAToOrigin);
if (Mathf.Abs(denominator) < Geometry.Epsilon)
{
// Parallel
// Normalized direction gives more stable results
float perpDotB = VectorE.PerpDot(segmentDirection.normalized, segmentAToOrigin);
if (Mathf.Abs(perpDotA) > Geometry.Epsilon || Mathf.Abs(perpDotB) > Geometry.Epsilon)
{
// Not collinear
float segmentAProjection = Vector2.Dot(lineDirection, segmentAToOrigin);
float distanceSqr = segmentAToOrigin.sqrMagnitude - segmentAProjection*segmentAProjection;
// distanceSqr can be negative
return distanceSqr <= 0 ? 0 : Mathf.Sqrt(distanceSqr);
}
// Collinear
return 0;
}
// Not parallel
float segmentDistance = perpDotA/denominator;
if (segmentDistance < -Geometry.Epsilon || segmentDistance > 1 + Geometry.Epsilon)
{
// No intersection
Vector2 segmentPoint = segmentA + segmentDirection*Mathf.Clamp01(segmentDistance);
float segmentPointProjection = Vector2.Dot(lineDirection, segmentPoint - lineOrigin);
Vector2 linePoint = lineOrigin + lineDirection*segmentPointProjection;
return Vector2.Distance(linePoint, segmentPoint);
}
// Point intersection
return 0;
}
19
View Source File : Distance2D.cs
License : MIT License
Project Creator : microsoft
License : MIT License
Project Creator : microsoft
public static float RayRay(Vector2 originA, Vector2 directionA, Vector2 originB, Vector2 directionB)
{
Vector2 originBToA = originA - originB;
float denominator = VectorE.PerpDot(directionA, directionB);
float perpDotA = VectorE.PerpDot(directionA, originBToA);
float perpDotB = VectorE.PerpDot(directionB, originBToA);
bool codirected = Vector2.Dot(directionA, directionB) > 0;
if (Mathf.Abs(denominator) < Geometry.Epsilon)
{
// Parallel
float originBProjection = -Vector2.Dot(directionA, originBToA);
if (Mathf.Abs(perpDotA) > Geometry.Epsilon || Mathf.Abs(perpDotB) > Geometry.Epsilon)
{
// Not collinear
if (!codirected && originBProjection < Geometry.Epsilon)
{
return Vector2.Distance(originA, originB);
}
float distanceSqr = originBToA.sqrMagnitude - originBProjection*originBProjection;
// distanceSqr can be negative
return distanceSqr <= 0 ? 0 : Mathf.Sqrt(distanceSqr);
}
// Collinear
if (codirected)
{
// Ray intersection
return 0;
}
else
{
if (originBProjection < Geometry.Epsilon)
{
// No intersection
return Vector2.Distance(originA, originB);
}
else
{
// Segment intersection
return 0;
}
}
}
// Not parallel
float distanceA = perpDotB/denominator;
float distanceB = perpDotA/denominator;
if (distanceA < -Geometry.Epsilon || distanceB < -Geometry.Epsilon)
{
// No intersection
if (codirected)
{
float originAProjection = Vector2.Dot(directionB, originBToA);
if (originAProjection > -Geometry.Epsilon)
{
Vector2 rayPointA = originA;
Vector2 rayPointB = originB + directionB*originAProjection;
return Vector2.Distance(rayPointA, rayPointB);
}
float originBProjection = -Vector2.Dot(directionA, originBToA);
if (originBProjection > -Geometry.Epsilon)
{
Vector2 rayPointA = originA + directionA*originBProjection;
Vector2 rayPointB = originB;
return Vector2.Distance(rayPointA, rayPointB);
}
return Vector2.Distance(originA, originB);
}
else
{
if (distanceA > -Geometry.Epsilon)
{
float originBProjection = -Vector2.Dot(directionA, originBToA);
if (originBProjection > -Geometry.Epsilon)
{
Vector2 rayPointA = originA + directionA*originBProjection;
Vector2 rayPointB = originB;
return Vector2.Distance(rayPointA, rayPointB);
}
}
else if (distanceB > -Geometry.Epsilon)
{
float originAProjection = Vector2.Dot(directionB, originBToA);
if (originAProjection > -Geometry.Epsilon)
{
Vector2 rayPointA = originA;
Vector2 rayPointB = originB + directionB*originAProjection;
return Vector2.Distance(rayPointA, rayPointB);
}
}
return Vector2.Distance(originA, originB);
}
}
// Point intersection
return 0;
}
19
View Source File : Distance2D.cs
License : MIT License
Project Creator : microsoft
License : MIT License
Project Creator : microsoft
public static float PointLine(Vector2 point, Vector2 lineOrigin, Vector2 lineDirection)
{
return Vector2.Distance(point, Closest.PointLine(point, lineOrigin, lineDirection));
}
19
View Source File : Distance2D.cs
License : MIT License
Project Creator : microsoft
License : MIT License
Project Creator : microsoft
public static float PointRay(Vector2 point, Ray2D ray)
{
return Vector2.Distance(point, Closest.PointRay(point, ray));
}
19
View Source File : Distance2D.cs
License : MIT License
Project Creator : microsoft
License : MIT License
Project Creator : microsoft
public static float PointRay(Vector2 point, Vector2 rayOrigin, Vector2 rayDirection)
{
return Vector2.Distance(point, Closest.PointRay(point, rayOrigin, rayDirection));
}
19
View Source File : StraightSkeletonGenerator.cs
License : MIT License
Project Creator : microsoft
License : MIT License
Project Creator : microsoft
private static bool BisectorBisector(Plan.Vertex vertexA, Plan.Vertex vertexB, out float offset)
{
IntersectionRayRay2 intersection;
if (Intersect.RayRay(vertexA.position, vertexA.bisector, vertexB.position, vertexB.bisector, out intersection))
{
if (intersection.type == IntersectionType.Point)
{
float offsetA = GetBisectorBisectorOffset(vertexA, intersection.pointA);
float offsetB = GetBisectorBisectorOffset(vertexB, intersection.pointA);
offset = Mathf.Min(offsetA, offsetB);
return true;
}
if (intersection.type == IntersectionType.Segment)
{
float toIntersection = Vector2.Distance(vertexA.position, vertexB.position);
float offsetA = GetBisectorBisectorOffset(vertexA, toIntersection)/2;
float offsetB = GetBisectorBisectorOffset(vertexB, toIntersection)/2;
offset = Mathf.Min(offsetA, offsetB);
return true;
}
// BEGIN: Modified by Microsoft Corporation for generic logging purposes.
API.MREAPI.Logger.LogError(string.Format("Invalid bisector intersection\ntype: {0}\npointA: {1} pointB: {2}\nbisectorA: {3} bisectorB:{4}",
intersection.type, intersection.pointA, intersection.pointB, vertexA.bisector, vertexB.bisector));
// END: Modified by Microsoft Corporation for generic logging purposes.
offset = 0;
return false;
}
offset = 0;
return false;
}
19
View Source File : Distance2D.cs
License : MIT License
Project Creator : microsoft
License : MIT License
Project Creator : microsoft
public static float PointSegment(Vector2 point, Segment2 segment)
{
return Vector2.Distance(point, Closest.PointSegment(point, segment));
}
19
View Source File : Distance2D.cs
License : MIT License
Project Creator : microsoft
License : MIT License
Project Creator : microsoft
public static float CircleCircle(Vector2 centerA, float radiusA, Vector2 centerB, float radiusB)
{
return Vector2.Distance(centerA, centerB) - radiusA - radiusB;
}
19
View Source File : MonoSinCurve.cs
License : Apache License 2.0
Project Creator : mogoson
License : Apache License 2.0
Project Creator : mogoson
protected virtual float EvaluateLength()
{
if (args.angular == 0)
{
return radian;
}
var halfPI = Mathf.PI * 0.5f;
var angularAbs = Mathf.Abs(args.angular);
var piece = Vector2.Distance(Vector2.zero, new Vector2(halfPI / angularAbs, args.amplitude));
var pieces = piece * angularAbs;
var segments = Mathf.RoundToInt(radian / halfPI);
return pieces * segments;
}
19
View Source File : PlayerController.cs
License : MIT License
Project Creator : PacktPublishing
License : MIT License
Project Creator : PacktPublishing
public float GetDistance() {
float traveledDistance = Vector2.Distance(new Vector2(startingPosition.x, 0),
new Vector2(this.transform.position.x, 0));
return traveledDistance;
}
19
View Source File : BaseItem.cs
License : MIT License
Project Creator : peteschmitz
License : MIT License
Project Creator : peteschmitz
private void MoveToDestination(float timeSeconds)
{
var maxDistance = timeSeconds * this.movementVelocity;
var currentPosition = this.RootTransform.position.AddY(-this.SpriteOffsetY);
var remainingDistance = Vector2.Distance(this.CentralPosition, this.warehouseDestination.CentralPosition);
if (maxDistance > Math.Abs(remainingDistance))
{
this.ArriveDestination();
return;
}
this.RootTransform.position = Vector2.MoveTowards(this.CentralPosition, this.warehouseDestination.CentralPosition, maxDistance)
.AddY(this.SpriteOffsetY);
}
19
View Source File : DottedLineRenderer.cs
License : MIT License
Project Creator : silverua
License : MIT License
Project Creator : silverua
public void ScaleMaterial()
{
lR = GetComponent<LineRenderer>();
rend = GetComponent<Renderer>();
rend.material.mainTextureScale =
new Vector2(Vector2.Distance(lR.GetPosition(0), lR.GetPosition(lR.positionCount - 1)) / lR.widthMultiplier,
1);
}
19
View Source File : DottedLineRenderer.cs
License : MIT License
Project Creator : silverua
License : MIT License
Project Creator : silverua
private void Update()
{
rend.material.mainTextureScale =
new Vector2(Vector2.Distance(lR.GetPosition(0), lR.GetPosition(lR.positionCount - 1)) / lR.widthMultiplier,
1);
}
19
View Source File : EasyTouch.cs
License : MIT License
Project Creator : slicol
License : MIT License
Project Creator : slicol
private void TwoFinger(){
float timeSinceStartAction=0;
bool move=false;
Vector2 position = Vector2.zero;
Vector2 deltaPosition = Vector2.zero;
float fingerDistance = 0;
// A touch starts
if ( complexCurrentGesture==GestureType.None){
twoFinger0 = GetTwoFinger(-1);
twoFinger1 = GetTwoFinger(twoFinger0);
startTimeAction = Time.realtimeSinceStartup;
complexCurrentGesture=GestureType.Tap;
fingers[twoFinger0].complexStartPosition = fingers[twoFinger0].position;
fingers[twoFinger1].complexStartPosition = fingers[twoFinger1].position;
fingers[twoFinger0].oldPosition = fingers[twoFinger0].position;
fingers[twoFinger1].oldPosition = fingers[twoFinger1].position;
oldFingerDistance = Mathf.Abs( Vector2.Distance(fingers[twoFinger0].position, fingers[twoFinger1].position));
startPosition2Finger = new Vector2((fingers[twoFinger0].position.x+fingers[twoFinger1].position.x)/2, (fingers[twoFinger0].position.y+fingers[twoFinger1].position.y)/2);
deltaPosition = Vector2.zero;
// do we touch a pickable gameobject ?
if (autoSelect){
pickObject2Finger = GetPickeGameObject(fingers[twoFinger0].complexStartPosition);
if (pickObject2Finger!= GetPickeGameObject(fingers[twoFinger1].complexStartPosition)){
pickObject2Finger =null;
}
}
// we notify the touch
CreateGesture2Finger(EventName.On_TouchStart2Fingers,startPosition2Finger,startPosition2Finger,deltaPosition,timeSinceStartAction, SwipeType.None,0,Vector2.zero,0,0,oldFingerDistance);
}
// Calculates the time since the beginning of the action.
timeSinceStartAction = Time.realtimeSinceStartup -startTimeAction;
// Position & deltaPosition
position = new Vector2((fingers[twoFinger0].position.x+fingers[twoFinger1].position.x)/2, (fingers[twoFinger0].position.y+fingers[twoFinger1].position.y)/2);
deltaPosition = position - oldStartPosition2Finger;
fingerDistance = Mathf.Abs(Vector2.Distance(fingers[twoFinger0].position, fingers[twoFinger1].position));
// Cancel
if (fingers[twoFinger0].phase == TouchPhase.Canceled ||fingers[twoFinger1].phase == TouchPhase.Canceled){
complexCurrentGesture = GestureType.Cancel;
}
// Let's go
if (fingers[twoFinger0].phase != TouchPhase.Ended && fingers[twoFinger1].phase != TouchPhase.Ended && complexCurrentGesture != GestureType.Cancel ){
// Are we stationary ?
if (complexCurrentGesture == GestureType.Tap && timeSinceStartAction >= longTapTime && FingerInTolerance(fingers[twoFinger0]) && FingerInTolerance(fingers[twoFinger1])){
complexCurrentGesture = GestureType.LongTap;
// we notify the beginning of a longtouch
CreateGesture2Finger(EventName.On_LongTapStart2Fingers,startPosition2Finger,position,deltaPosition,timeSinceStartAction, SwipeType.None,0,Vector2.zero,0,0,fingerDistance);
}
// Let's move us ?
//if (FingerInTolerance(fingers[twoFinger0])==false ||FingerInTolerance(fingers[twoFinger1])==false){
move=true;
//}
// we move
if (move){
float dot = Vector2.Dot(fingers[twoFinger0].deltaPosition.normalized, fingers[twoFinger1].deltaPosition.normalized);
// Pinch
if (enablePinch && fingerDistance != oldFingerDistance ){
// Pinch
if (Mathf.Abs( fingerDistance-oldFingerDistance)>=minPinchLength){
complexCurrentGesture = GestureType.Pinch;
}
// update pinch
if (complexCurrentGesture == GestureType.Pinch){
//complexCurrentGesture = GestureType.Acquisition;
if (fingerDistance<oldFingerDistance){
// Send end message
if (oldGesture != GestureType.Pinch){
CreateStateEnd2Fingers(oldGesture,startPosition2Finger,position,deltaPosition,timeSinceStartAction,false,fingerDistance);
startTimeAction = Time.realtimeSinceStartup;
}
// Send pinch
CreateGesture2Finger(EventName.On_PinchIn,startPosition2Finger,position,deltaPosition,timeSinceStartAction, GetSwipe(fingers[twoFinger0].complexStartPosition,fingers[twoFinger0].position),0,Vector2.zero,0,Mathf.Abs(fingerDistance-oldFingerDistance),fingerDistance);
complexCurrentGesture = GestureType.Pinch;
}
else if (fingerDistance>oldFingerDistance){
// Send end message
if (oldGesture != GestureType.Pinch){
CreateStateEnd2Fingers(oldGesture,startPosition2Finger,position,deltaPosition,timeSinceStartAction,false,fingerDistance);
startTimeAction = Time.realtimeSinceStartup;
}
// Send pinch
CreateGesture2Finger(EventName.On_PinchOut,startPosition2Finger,position,deltaPosition,timeSinceStartAction, GetSwipe(fingers[twoFinger0].complexStartPosition,fingers[twoFinger0].position),0,Vector2.zero,0,Mathf.Abs(fingerDistance-oldFingerDistance),fingerDistance);
complexCurrentGesture = GestureType.Pinch;
}
}
}
// Twist
if (enableTwist){
if (Mathf.Abs(TwistAngle())>minTwistAngle){
// Send end message
if (complexCurrentGesture != GestureType.Twist){
CreateStateEnd2Fingers(complexCurrentGesture,startPosition2Finger,position,deltaPosition,timeSinceStartAction,false,fingerDistance);
startTimeAction = Time.realtimeSinceStartup;
}
complexCurrentGesture = GestureType.Twist;
}
// Update Twist
if (complexCurrentGesture == GestureType.Twist){
CreateGesture2Finger(EventName.On_Twist,startPosition2Finger,position,deltaPosition,timeSinceStartAction, SwipeType.None,0,Vector2.zero,TwistAngle(),0,fingerDistance);
}
fingers[twoFinger0].oldPosition = fingers[twoFinger0].position;
fingers[twoFinger1].oldPosition = fingers[twoFinger1].position;
}
// Drag
if (dot>0 ){
if (pickObject2Finger && !twoFingerDragStart){
// Send end message
if (complexCurrentGesture != GestureType.Tap){
CreateStateEnd2Fingers(complexCurrentGesture,startPosition2Finger,position,deltaPosition,timeSinceStartAction,false,fingerDistance);
startTimeAction = Time.realtimeSinceStartup;
}
//
CreateGesture2Finger(EventName.On_DragStart2Fingers,startPosition2Finger,position,deltaPosition,timeSinceStartAction, SwipeType.None,0,Vector2.zero,0,0,fingerDistance);
twoFingerDragStart = true;
}
else if (!pickObject2Finger && !twoFingerSwipeStart ) {
// Send end message
if (complexCurrentGesture!= GestureType.Tap){
CreateStateEnd2Fingers(complexCurrentGesture,startPosition2Finger,position,deltaPosition,timeSinceStartAction,false,fingerDistance);
startTimeAction = Time.realtimeSinceStartup;
}
//
CreateGesture2Finger(EventName.On_SwipeStart2Fingers,startPosition2Finger,position,deltaPosition,timeSinceStartAction, SwipeType.None,0,Vector2.zero,0,0,fingerDistance);
twoFingerSwipeStart=true;
}
}
else{
if (dot<0){
twoFingerDragStart=false;
twoFingerSwipeStart=false;
}
}
//
if (twoFingerDragStart){
CreateGesture2Finger(EventName.On_Drag2Fingers,startPosition2Finger,position,deltaPosition,timeSinceStartAction, GetSwipe(oldStartPosition2Finger,position),0,deltaPosition,0,0,fingerDistance);
}
if (twoFingerSwipeStart){
CreateGesture2Finger(EventName.On_Swipe2Fingers,startPosition2Finger,position,deltaPosition,timeSinceStartAction, GetSwipe(oldStartPosition2Finger,position),0,deltaPosition,0,0,fingerDistance);
}
}
else{
// Long tap update
if (complexCurrentGesture == GestureType.LongTap){
CreateGesture2Finger(EventName.On_LongTap2Fingers,startPosition2Finger,position,deltaPosition,timeSinceStartAction, SwipeType.None,0,Vector2.zero,0,0,fingerDistance);
}
}
CreateGesture2Finger(EventName.On_TouchDown2Fingers,startPosition2Finger,position,deltaPosition,timeSinceStartAction, GetSwipe(oldStartPosition2Finger,position),0,deltaPosition,0,0,fingerDistance);
oldFingerDistance = fingerDistance;
oldStartPosition2Finger = position;
oldGesture = complexCurrentGesture;
}
else{
CreateStateEnd2Fingers(complexCurrentGesture,startPosition2Finger,position,deltaPosition,timeSinceStartAction,true,fingerDistance);
complexCurrentGesture = GestureType.None;
pickObject2Finger=null;
twoFingerSwipeStart = false;
twoFingerDragStart = false;
}
}
19
View Source File : ONSPPropagationMaterialEditor.cs
License : MIT License
Project Creator : Tobbse
License : MIT License
Project Creator : Tobbse
private void HandleEvent(Rect r, Event e){
Vector2 position = e.mousePosition;
switch(e.type){
case EventType.MouseDown:
if(r.Contains(position)){
if(e.clickCount == 2){
spectrum.selection = spectrum.points.Count;
spectrum.points.Add(MapMouseEvent(r, position));
Undo.SetCurrentGroupName("Point Added");
GUI.changed = true;
} else{
int selection = spectrum.selection;
float minDistance = float.MaxValue;
for(int i = 0; i < spectrum.points.Count; i++){
float distance = Vector2.Distance(MapPointPosition(r, spectrum.points[i]), position);
if(distance < minDistance){
selection = i;
minDistance = distance;
}
}
if(selection != spectrum.selection){
spectrum.selection = selection;
Undo.SetCurrentGroupName("Point Selected");
GUI.changed = true;
}
}
focus = spectrum.GetHashCode();
dragInitiated = true;
} else{
isDragging = false;
focus = 0;
}
e.Use();
break;
case EventType.MouseDrag:
if(dragInitiated){
dragInitiated = false;
isDragging = true;
}
if(isDragging && spectrum.selection < spectrum.points.Count){
spectrum.points[spectrum.selection] = MapMouseEvent(r, position);
e.Use();
}
break;
case EventType.Ignore:
case EventType.MouseUp:
dragInitiated = false;
if(isDragging){
isDragging = false;
Undo.SetCurrentGroupName("Point Moved");
GUI.changed = true;
e.Use();
}
break;
case EventType.KeyDown:
switch(e.keyCode){
case KeyCode.Delete:
case KeyCode.Backspace:
if(spectrum.selection < spectrum.points.Count){
RemovePointAt(spectrum.selection);
e.Use();
}
break;
}
break;
}
}
19
View Source File : VentPatch.cs
License : MIT License
Project Creator : tomozbot
License : MIT License
Project Creator : tomozbot
public static bool Prefix(Vent __instance, ref float __result, [HarmonyArgument(0)] GameDataPlayerInfo pc, [HarmonyArgument(1)] out bool creplacede, [HarmonyArgument(2)] out bool couldUse)
{
float num = float.MaxValue;
PlayerControl @object = pc.LAOEJKHLKAI;
couldUse = (pc.DAPKNDBLKIA || pc.JKOMCOJCAID == PlayerControlPatch.Sweeper.PlayerId) && !pc.DLPCKPBIJOE && (@object.GEBLLBHGHLD || @object.inVent);
creplacede = couldUse;
if (creplacede)
{
num = Vector2.Distance(@object.GetTruePosition(), __instance.transform.position);
creplacede &= num <= __instance.ILPBJHPGNBJ;
}
__result = num;
return false;
}
19
View Source File : VentPatch.cs
License : MIT License
Project Creator : tomozbot
License : MIT License
Project Creator : tomozbot
public static bool Prefix(Vent __instance, ref float __result, [HarmonyArgument(0)] GameDataPlayerInfo pc, [HarmonyArgument(1)] out bool creplacede, [HarmonyArgument(2)] out bool couldUse)
{
float num = float.MaxValue;
PlayerControl @object = pc.LAOEJKHLKAI;
couldUse = (pc.DAPKNDBLKIA || pc.JKOMCOJCAID == PlayerControlPatch.Sweeper.PlayerId) && !pc.DLPCKPBIJOE && (@object.GEBLLBHGHLD || @object.inVent);
creplacede = couldUse;
if (creplacede)
{
num = Vector2.Distance(@object.GetTruePosition(), __instance.transform.position);
creplacede &= num <= __instance.ILPBJHPGNBJ;
}
__result = num;
return false;
}
19
View Source File : Distance.cs
License : MIT License
Project Creator : XINCGer
License : MIT License
Project Creator : XINCGer
public override TaskStatus OnUpdate()
{
storeResult.Value = Vector2.Distance(firstVector2.Value, secondVector2.Value);
return TaskStatus.Success;
}
19
View Source File : SF_Tools.cs
License : MIT License
Project Creator : XINCGer
License : MIT License
Project Creator : XINCGer
public static float DistanceToLine(Vector2 a, Vector2 b, Vector2 point){
// Return minimum distance between line segment vw and point p
float l2 = Vector2.SqrMagnitude(a - b); // i.e. |w-v|^2 - avoid a sqrt
if (l2 == 0.0)
return Vector2.Distance(point, a); // v == w case
// Consider the line extending the segment, parameterized as v + t (w - v).
// We find projection of point p onto the line.
// It falls where t = [(p-v) . (w-v)] / |w-v|^2
float t = Vector2.Dot(point - a, b - a) / l2;
if (t < 0.0)
return Vector2.Distance(point, a); // Beyond the 'v' end of the segment
else if (t > 1.0)
return Vector2.Distance(point, b); // Beyond the 'w' end of the segment
Vector2 projection = a + t * (b - a); // Projection falls on the segment
return Vector2.Distance(point, projection);
}