protected override void StartPerform() { base.StartPerform(); Game.Instance.CameraController.LargeShake(); var forward = Vector3.Normalize(EndPosition - StartPosition); var right = Vector3.Normalize(Vector3.Cross(new Vector3(forward.X, forward.Y, 0), Vector3.UnitZ)); var tl = StartPosition + right * Width / 2f; var tr = StartPosition - right * Width / 2f; var bl = EndPosition + right * Width / 2f; var br = EndPosition - right * Width / 2f; region = new Common.Bounding.Region { Nodes = new Common.Bounding.RegionNode[] { new Common.Bounding.RegionNode(new Vector3[] { tl, tr, br }), new Common.Bounding.RegionNode(new Vector3[] { tl, br, bl }), } }; Game.Instance.Scene.Add(lavaDitch = new Props.LavaDitchWithEffects1 { Translation = StartPosition, Rotation = Quaternion.RotationAxis(Vector3.UnitZ, (float)Common.Math.AngleFromVector3XY(forward)) }); #if LAVA_DITCH_DISPLAY_ATTACK_AREA pebbles.Clear(); for (float y = Math.Min(StartPosition.Y, EndPosition.Y) - 10; y < Math.Max(StartPosition.Y, EndPosition.Y) + 10; y += 0.25f) { for (float x = Math.Min(StartPosition.X, EndPosition.X) - 10; x < Math.Max(StartPosition.Y, EndPosition.Y) + 10; x += 0.25f) { if (region.GetNodeAt(new Vector3(x, y, 0)) != null) { Props.Pebble1 p; Game.Instance.Scene.Add(p = new Props.Pebble1 { Translation = new Vector3(x, y, StartPosition.Z), Scale = new Vector3(1, 1, 10) }); pebbles.Add(p); } } } #endif effects.Clear(); }
protected override void StartPerform() { base.StartPerform(); Game.Instance.CameraController.LargeShake(); var forward = Vector3.Normalize(EndPosition - StartPosition); var right = Vector3.Normalize(Vector3.Cross(new Vector3(forward.X, forward.Y, 0), Vector3.UnitZ)); var tl = StartPosition + right * Width / 2f; var tr = StartPosition -right * Width / 2f; var bl = EndPosition + right * Width / 2f; var br = EndPosition -right * Width / 2f; region = new Common.Bounding.Region { Nodes = new Common.Bounding.RegionNode[] { new Common.Bounding.RegionNode(new Vector3[] { tl, tr, br }), new Common.Bounding.RegionNode(new Vector3[] { tl, br, bl }), } }; Game.Instance.Scene.Add(lavaDitch = new Props.LavaDitchWithEffects1 { Translation = StartPosition, Rotation = Quaternion.RotationAxis(Vector3.UnitZ, (float)Common.Math.AngleFromVector3XY(forward)) }); #if LAVA_DITCH_DISPLAY_ATTACK_AREA pebbles.Clear(); for (float y = Math.Min(StartPosition.Y, EndPosition.Y) - 10; y < Math.Max(StartPosition.Y, EndPosition.Y) + 10; y += 0.25f) for (float x = Math.Min(StartPosition.X, EndPosition.X) - 10; x < Math.Max(StartPosition.Y, EndPosition.Y) + 10; x += 0.25f) if (region.GetNodeAt(new Vector3(x, y, 0)) != null) { Props.Pebble1 p; Game.Instance.Scene.Add(p = new Props.Pebble1 { Translation = new Vector3(x, y, StartPosition.Z), Scale = new Vector3(1, 1, 10) }); pebbles.Add(p); } #endif effects.Clear(); }