public override void SecondaryUse(float deltaTime, Character character = null) { if (this.character == null || this.character != character || this.character.SelectedConstruction != item || !character.CanInteractWith(item)) { character = null; return; } Entity focusTarget = null; if (character == null) { return; } foreach (Connection c in item.Connections) { if (c.Name != "position_out") { continue; } foreach (Connection c2 in c.Recipients) { if (c2 == null || c2.Item == null || !c2.Item.Prefab.FocusOnSelected) { continue; } focusTarget = c2.Item; break; } } if (focusTarget == null) { item.SendSignal(0, XMLExtensions.Vector2ToString(character.CursorWorldPosition), "position_out", character); return; } character.ViewTarget = focusTarget; #if CLIENT if (character == Character.Controlled && cam != null) { Lights.LightManager.ViewTarget = focusTarget; cam.TargetPos = focusTarget.WorldPosition; cam.OffsetAmount = MathHelper.Lerp(cam.OffsetAmount, (focusTarget as Item).Prefab.OffsetOnSelected, deltaTime * 10.0f); } #endif if (!character.IsRemotePlayer || character.ViewTarget == focusTarget) { item.SendSignal(0, XMLExtensions.Vector2ToString(character.CursorWorldPosition), "position_out", character); } }
public override bool SecondaryUse(float deltaTime, Character character = null) { if (this.character == null || this.character != character || this.character.SelectedConstruction != item || !character.CanInteractWith(item)) { character = null; return(false); } if (character == null) { return(false); } Entity focusTarget = GetFocusTarget(); if (focusTarget == null) { item.SendSignal(0, XMLExtensions.Vector2ToString(character.CursorWorldPosition), "position_out", character); return(false); } character.ViewTarget = focusTarget; #if CLIENT if (character == Character.Controlled && cam != null) { Lights.LightManager.ViewTarget = focusTarget; cam.TargetPos = focusTarget.WorldPosition; cam.OffsetAmount = MathHelper.Lerp(cam.OffsetAmount, (focusTarget as Item).Prefab.OffsetOnSelected, deltaTime * 10.0f); } #endif if (!character.IsRemotePlayer || character.ViewTarget == focusTarget) { item.SendSignal(0, XMLExtensions.Vector2ToString(character.CursorWorldPosition), "position_out", character); } return(true); }
public override void Save(XElement element) { base.Save(element); for (int i = 0; i < deformRows.Count; i++) { element.Add(new XAttribute("row" + i, string.Join(" ", deformRows[i].Select(r => XMLExtensions.Vector2ToString(r))))); } }