예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
 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)))));
     }
 }