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(); } }
static void DebugDraw(float2 from, float2 to, Color color) { Line.Draw(from.ToXxY(.01f), to.ToXxY(.01f), color); }
internal static void DrawLine(float2 a, float2 b, Color color) => DrawLine(a.ToXxY(), b.ToXxY(), color);
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);
internal static void DrawArrow(float2 from, float2 to, Color color, float size = .025f) => DrawArrow(from.ToXxY(), to.ToXxY(), color, size);
internal static void DrawPoint(float2 pos, Color color, float size = .05f) => DrawPoint(pos.ToXxY(), quaternion.identity, color, size);
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);
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; }
public Vector3 DirectionToWorldSpace(float2 dir) { return(transform.InverseTransformDirection(dir.ToXxY())); }
internal Line(float2 begin, float2 end, Color color) : this(begin.ToXxY(), end.ToXxY(), color) { }