Skip to content

Commit 427e09b

Browse files
committed
update to 4.0
1 parent f88e23b commit 427e09b

20 files changed

+878
-1823
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
.import
22
*.import
33
sketchfab
4+
.*

Main.tscn

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
[gd_scene format=2]
2-
3-
[node name="Spatial" type="Spatial" index="0"]
1+
[gd_scene format=3 uid="uid://scfkut8juyym"]
42

3+
[node name="Node3D" type="Node3D"]

addons/sketchfab/Api.gd

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
tool
1+
@tool
22
extends Object
33

44
const OAUTH_HOSTNAME = "sketchfab.com"
55
const API_HOSTNAME = "api.sketchfab.com"
66
const USE_SSL = true
77
const BASE_PATH = "/v3"
8-
const CLIENT_ID = "a99JEwOhmIWHdRRDDgBsxbBf8ufC0ACoUcDAifSV"
8+
const CLIENT_ID = "IUO8d5VVOIUCzWQArQ3VuXfbwx5QekZfLeDlpOmW"
99

1010
enum SymbolicErrors {
1111
NOT_AUTHORIZED,
@@ -23,14 +23,14 @@ static func set_token(token):
2323
const Requestor = preload("res://addons/sketchfab/Requestor.gd")
2424
var Result = Requestor.Result
2525

26-
var requestor = Requestor.new(API_HOSTNAME, USE_SSL)
26+
var requestor = Requestor.new(API_HOSTNAME)
2727
var busy = false
2828

2929
func term():
3030
requestor.term()
3131

3232
func cancel():
33-
yield(requestor.cancel(), "completed")
33+
await requestor.cancel()
3434

3535
func login(username, password):
3636
var query = {
@@ -39,13 +39,13 @@ func login(username, password):
3939
}
4040

4141
busy = true
42-
var requestor = Requestor.new(OAUTH_HOSTNAME, USE_SSL)
42+
var requestor = Requestor.new(OAUTH_HOSTNAME)
4343
requestor.request(
4444
"/oauth2/token/?grant_type=password&client_id=%s" % CLIENT_ID, query,
4545
{ "method": HTTPClient.METHOD_POST, "encoding": "form" }
4646
)
4747

48-
var result = yield(requestor, "completed")
48+
var result = await requestor.completed
4949
requestor.term()
5050
busy = false
5151

@@ -61,7 +61,7 @@ func login(username, password):
6161
func get_my_info():
6262
busy = true
6363
requestor.request("%s/me" % BASE_PATH, null, { "token": get_token() })
64-
var result = yield(requestor, "completed")
64+
var result = await requestor.completed
6565
busy = false
6666

6767
return _handle_result(result)
@@ -70,7 +70,7 @@ func get_categories():
7070
busy = true
7171
requestor.request("%s/categories" % BASE_PATH)
7272

73-
var result = yield(requestor, "completed")
73+
var result = await requestor.completed
7474
busy = false
7575

7676
return _handle_result(result)
@@ -79,7 +79,7 @@ func get_model_detail(uid):
7979
busy = true
8080
requestor.request("%s/models/%s" % [BASE_PATH, uid])
8181

82-
var result = yield(requestor, "completed")
82+
var result = await requestor.completed
8383
busy = false
8484

8585
return _handle_result(result)
@@ -88,7 +88,7 @@ func request_download(uid):
8888
busy = true
8989
requestor.request("%s/models/%s/download" % [BASE_PATH, uid], null, { "token": get_token() })
9090

91-
var result = yield(requestor, "completed")
91+
var result = await requestor.completed
9292
busy = false
9393

9494
return _handle_result(result)
@@ -117,19 +117,19 @@ func search_models(q, categories, animated, staff_picked, min_face_count, max_fa
117117
var search_domain = BASE_PATH + domain_suffix
118118
requestor.request(search_domain, query, { "token": get_token() })
119119

120-
var result = yield(requestor, "completed")
120+
var result = await requestor.completed
121121
busy = false
122122

123123
return _handle_result(result)
124124

125125
func fetch_next_page(url):
126126
# Strip protocol + domain
127-
var uri = url.right(url.find(API_HOSTNAME) + API_HOSTNAME.length())
127+
var uri = url.right(url.length() - url.find(API_HOSTNAME) - API_HOSTNAME.length())
128128

129129
busy = true
130130
requestor.request(uri)
131131

132-
var result = yield(requestor, "completed")
132+
var result = await requestor.completed
133133
busy = false
134134

135135
return _handle_result(result)

addons/sketchfab/HttpImage.gd

Lines changed: 42 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,38 @@
1-
tool
2-
extends Control
1+
@tool
2+
extends TextureRect
33

44
const MAX_COUNT = 4
55

6-
export var max_size = 256
7-
export var background = Color(0, 0, 0, 0)
8-
export var immediate = false
6+
@export var max_size = 256
7+
@export var background = Color(0, 0, 0, 0)
8+
@export var immediate = false
99

10-
var url setget _set_url
10+
var url : set = _set_url
1111
var url_to_load
1212

13-
var http = HTTPRequest.new()
13+
var http_request = null
1414
var busy
1515

16-
var texture
17-
1816
func _enter_tree():
19-
if !get_tree().has_meta("__http_image_count"):
20-
get_tree().set_meta("__http_image_count", 0)
2117

22-
if !http.get_parent():
23-
add_child(http)
18+
if !http_request:
19+
http_request = HTTPRequest.new()
20+
add_child(http_request)
21+
http_request.request_completed.connect(self._http_request_completed)
22+
http_request.set_tls_options(TLSOptions.client())
2423

2524
busy = false
2625
if url_to_load:
2726
_start_load()
2827

2928
func _exit_tree():
3029
if busy:
31-
http.cancel_request()
30+
http_request.cancel_request()
3231
get_tree().set_meta("__http_image_count", get_tree().get_meta("__http_image_count") - 1)
3332
busy = false
3433

35-
func _draw():
36-
var rect = Rect2(0, 0, get_rect().size.x, get_rect().size.y)
37-
draw_rect(rect, background)
38-
39-
if !texture:
40-
return
4134

42-
var tw = texture.get_width()
43-
var th = texture.get_height()
4435

45-
if float(tw) / th > rect.size.x / rect.size.y:
46-
var old = rect.size.y
47-
rect.size.y = rect.size.x * float(th) / tw
48-
rect.position.y += 0.5 * (old - rect.size.y)
49-
else:
50-
var old = rect.size.x
51-
rect.size.x = rect.size.y * float(tw) / th
52-
rect.position.x += 0.5 * (old - rect.size.x)
53-
54-
draw_texture_rect(texture, rect, false)
5536

5637
func _set_url(url):
5738
url_to_load = url
@@ -61,11 +42,12 @@ func _set_url(url):
6142
_start_load()
6243

6344
func _start_load():
64-
http.cancel_request()
45+
http_request.cancel_request()
6546
texture = null
66-
update()
47+
queue_redraw()
6748

6849
if !url_to_load:
50+
print("there was no url to load from")
6951
return
7052

7153
while true:
@@ -76,39 +58,40 @@ func _start_load():
7658
get_tree().set_meta("__http_image_count", count + 1)
7759
break
7860
else:
79-
yield(get_tree(), "idle_frame")
61+
await get_tree().process_frame
8062

8163
_load(url_to_load)
8264
url_to_load = null
8365

84-
func _load(url_to_load):
85-
http.request(url_to_load, [], false)
66+
func _load(url_to_load):# Create an HTTP request node and connect its completion signal.
67+
# Perform the HTTP request. The URL below returns a PNG image as of writing.
68+
var error = http_request.request(url_to_load)
69+
if error != OK:
70+
push_error("An error occurred in the HTTP request.")
8671

87-
busy = true
88-
var data = yield(http, "request_completed")
72+
# Called when the HTTP request is completed.
73+
func _http_request_completed(result, response_code, headers, body):
8974

90-
busy = false
9175
get_tree().set_meta("__http_image_count", get_tree().get_meta("__http_image_count") - 1)
92-
93-
var result = data[0]
94-
var code = data[1]
95-
var headers = data[2]
96-
var body = data[3]
97-
9876
if result != HTTPRequest.RESULT_SUCCESS:
77+
push_error("Image couldn't be downloaded. Try a different image.")
78+
79+
var image = Image.new()
80+
var error = image.load_jpg_from_buffer(body)
81+
if error != OK:
82+
push_error("Couldn't load the image.")
9983
return
10084

101-
var img = Image.new()
102-
if img.load_jpg_from_buffer(body) == OK || img.load_png_from_buffer(body) == OK:
103-
var w = img.get_width()
104-
var h = img.get_height()
105-
if w > h:
106-
var new_w = min(w, max_size)
107-
img.resize(new_w, (float(h) / w) * new_w)
108-
else:
109-
var new_h = min(h, max_size)
110-
img.resize((float(w) / h) * new_h, new_h)
85+
# Display the image in a TextureRect node.
86+
var w = image.get_width()
87+
var h = image.get_height()
88+
if w > h:
89+
var new_w = min(w, max_size)
90+
image.resize(new_w, (float(h) / w) * new_w)
91+
else:
92+
var new_h = min(h, max_size)
93+
image.resize((float(w) / h) * new_h, new_h)
94+
95+
texture = ImageTexture.create_from_image(image)
96+
11197

112-
texture = ImageTexture.new()
113-
texture.create_from_image(img)
114-
update()

0 commit comments

Comments
 (0)