Line drawn through Line.add.point disappearing after finite time

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By ashish

Hello everyone,
I am doing project where I mimic drawing of lines through strokes of a a brush. The brush is a KinematicBody2D which has a trailing line behind it. The line is formed by a $Line by adding points as the brush moves and mimics providing strokes. The brush’s moves is restricted by walls which are made up of StaticBody2Ds.

Here is the Scene structure:

https://drive.google.com/file/d/1w7aoGGGJbStMnAoHp_VgybDgexSENRB2/view?usp=sharing

extends KinematicBody2D

onready var line = get_node("../line")
var speed = 250
var velocity = Vector2(0,0)
var use_slide = true
var adjust =Vector2(10, 0)
var old_position
var carry_on = true
var strokes = 100

	

func get_input():
	velocity = Vector2()
	old_position = position
	if Input.is_action_pressed('ui_right'):
		velocity.x += 1
	if Input.is_action_pressed('ui_left'):
		velocity.x -= 1
	if Input.is_action_pressed('ui_down'):
		velocity.y += 1
	if Input.is_action_pressed('ui_up'):
		velocity.y -= 1
	velocity = velocity.normalized() * speed

func _physics_process(delta):
	get_input()
	var temp = get_viewport().get_mouse_position()
	move_and_slide(velocity)
	line.add_point(old_position)
	line.add_point(position)

The problem is that although the lines do get traced as I move the KinematicBody2D, they all disappear together after a finite lapse of time. After the lines disappear, the lines do not get traced anymore even after I move the brush (read, KinematicBody2D).

What am I doing wrong? How can I make the traced lines to remain persistent?

Please help.

Access denied on that link.

exuin | 2021-03-07 18:41

Sorry about that.
Have updated the access criteria.
Thanks for pointing that out.

I had missed out a few variables and a few lines of code. Have updated the code also.
Thanks in advance.

ashish | 2021-03-07 18:48

Do you get any errors in Godot?

exuin | 2021-03-07 19:14

Error in Godot.
Please see screenshot:

https://drive.google.com/file/d/1e15GJb6Oy604RWfsdOu556wRDRnFkGBQ/view?usp=sharing

ashish | 2021-03-08 02:22

:bust_in_silhouette: Reply From: exuin

You have too many points in your Line2D! As stated in the docs here,

By default, Godot can only draw up to 4,096 polygon points at a time.

Try only adding points when velocity is not zero to reduce the number of points you draw.

Thanks a lot. This works.

ashish | 2021-03-08 15:25