void OnGUI()
    {
        if (GUILayout.Button("Go"))
        {
            var root = new GameObject("Dump").transform;

            var agentgo = new GameObject("Agent");
            var a       = agentgo.transform;
            var agent   = agentgo.AddComponent <DotsNavPathFindingAgent>();
            agent.DrawCorners = true;
            agent.DrawGizmos  = false;
            agentgo.AddComponent <ConvertToEntity>().ConversionMode = ConvertToEntity.Mode.ConvertAndInjectGameObject;
            a.parent = root;
            var s = GameObject.CreatePrimitive(PrimitiveType.Sphere).transform;
            s.GetComponent <MeshRenderer>().material = AssetDatabase.LoadAssetAtPath <Material>("Assets/Development/Assets/start.mat");
            s.name       = "Start";
            s.parent     = a;
            s.position   = Start.ToXxY();
            s.localScale = (float3)Scale;

            var g = GameObject.CreatePrimitive(PrimitiveType.Sphere).transform;
            g.GetComponent <MeshRenderer>().material = AssetDatabase.LoadAssetAtPath <Material>("Assets/Development/Assets/goal.mat");
            g.name       = "Goal";
            g.parent     = a;
            g.position   = Goal.ToXxY();
            g.localScale = (float3)Scale;

            foreach (var obstacle in ToDump)
            {
                var go = new GameObject("Obstacle");
                go.AddComponent <ConvertToEntity>().ConversionMode = ConvertToEntity.Mode.ConvertAndInjectGameObject;
                go.transform.parent = root;
                var o = go.AddComponent <DotsNavObstacle>();
                o.Vertices = obstacle.ToArray();
            }

            Close();
        }
    }
Beispiel #2
0
 static void DebugDraw(float2 from, float2 to, Color color)
 {
     Line.Draw(from.ToXxY(.01f), to.ToXxY(.01f), color);
 }
Beispiel #3
0
 internal static void DrawLine(float2 a, float2 b, Color color) => DrawLine(a.ToXxY(), b.ToXxY(), color);
Beispiel #4
0
 internal static void DrawCircle(float2 pos, float radius, Color color, float start = 0, float total = 2 *math.PI, bool delimit = true)
 => DrawEllipse(pos.ToXxY(), new float3(0, 0, 1), new float3(0, 1, 0), radius, radius, color, start, total, delimit);
Beispiel #5
0
 internal static void DrawArrow(float2 from, float2 to, Color color, float size = .025f) => DrawArrow(from.ToXxY(), to.ToXxY(), color, size);
Beispiel #6
0
 internal static void DrawPoint(float2 pos, Color color, float size = .05f) => DrawPoint(pos.ToXxY(), quaternion.identity, color, size);
Beispiel #7
0
 internal static void DrawCircle(float2 pos, float radius, float start = 0, float total = 2 *math.PI)
 => DrawEllipse(pos.ToXxY(), new float3(0, 0, 1), new float3(0, 1, 0), radius, radius, Color.white, start, total);
Beispiel #8
0
        void Update()
        {
            Assert.IsTrue(math.all(_size > 0), "CameraController not initialized");

            var mousePosRaw = Input.mousePosition;

            mousePosRaw.z = _camera.nearClipPlane;
            var mousePos = ((float3)_camera.ScreenToWorldPoint(mousePosRaw)).xz;

            var wasd = new float2();

            if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
            {
                wasd.x -= 1;
            }
            if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
            {
                wasd.x += 1;
            }
            if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))
            {
                wasd.y += 1;
            }
            if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow))
            {
                wasd.y -= 1;
            }

            if (math.all(wasd != 0))
            {
                wasd = math.normalize(wasd);
            }

            var scrollDelta = Input.mouseScrollDelta.y;
            var mouseDelta  = mousePos - _previousMouse;

            if (scrollDelta != 0 && !IgnoreZoom)
            {
                _sizeTarget = math.clamp(_sizeTarget - scrollDelta * ZoomSpeed * _sizeTarget, MinSize, _maxSize);
            }

            var orthoSize = _camera.orthographicSize;
            var newSize   = math.lerp(orthoSize, _sizeTarget, 1 - math.pow(ZoomSmoothness, Time.deltaTime));
            var change    = orthoSize - newSize;
            var t         = mousePos.xxy;

            t.y = _camera.transform.position.y;
            var multiplier = change / orthoSize;
            var offset     = ((Vector3)t - _camera.transform.position) * multiplier;

            if (math.sign(change) == -1)
            {
                offset *= ZoomOutPanMultiplier;
            }

            orthoSize -= change;
            orthoSize  = Mathf.Clamp(orthoSize, MinSize, _maxSize);

            if (Input.GetMouseButton(2))
            {
                _cameraTarget -= mouseDelta;
            }
            _previousMouse = ((float3)_camera.ScreenToWorldPoint(mousePosRaw)).xz;

            var zoomLevel  = orthoSize / _maxSize;
            var margin     = Margin * _size * zoomLevel;
            var cameraSize = new float2(_camera.aspect * orthoSize, orthoSize);
            var max        = new float2(_size / 2 + margin) - cameraSize;

            _cameraTarget = math.clamp(_cameraTarget + wasd * MoveSpeed * orthoSize * Time.deltaTime, -max, max) + offset.xz();
            _camera.transform.position  = Vector3.Lerp(_camera.transform.position, _cameraTarget.ToXxY(5), 1 - math.pow(MoveSmoothness, Time.deltaTime));
            _camera.transform.position += offset;

            var p = math.clamp(_camera.transform.position.xz(), math.min(0, -max), math.max(0, max));

            _camera.transform.position = new Vector3(p.x, 5, p.y);
            _camera.orthographicSize   = orthoSize;
        }
Beispiel #9
0
 public Vector3 DirectionToWorldSpace(float2 dir)
 {
     return(transform.InverseTransformDirection(dir.ToXxY()));
 }
Beispiel #10
0
 internal Line(float2 begin, float2 end, Color color) : this(begin.ToXxY(), end.ToXxY(), color)
 {
 }