This commit is contained in:
5
packages/example/gen/godot/src/tween/Tween.nodes.gen.ts
Normal file
5
packages/example/gen/godot/src/tween/Tween.nodes.gen.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
declare module "godot" {
|
||||
interface SceneNodes {
|
||||
"src/tween/Tween.tscn": {};
|
||||
}
|
||||
}
|
||||
6
packages/example/gen/godot/src/tween/Tween.tscn.gen.ts
Normal file
6
packages/example/gen/godot/src/tween/Tween.tscn.gen.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
import Tween from "../../../../src/tween/Tween";
|
||||
declare module "godot" {
|
||||
interface ResourceTypes {
|
||||
"res://src/tween/Tween.tscn": PackedScene<Tween>;
|
||||
}
|
||||
}
|
||||
10
packages/example/src/components.ts
Normal file
10
packages/example/src/components.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import Godot from "godot"
|
||||
import { Component } from "react-godot-renderer"
|
||||
|
||||
|
||||
export const Control = Component.fromClass(Godot.Control)
|
||||
export const CenterContainer = Component.fromClass(Godot.CenterContainer)
|
||||
export const HBoxContainer = Component.fromClass(Godot.HBoxContainer)
|
||||
export const VBoxContainer = Component.fromClass(Godot.VBoxContainer)
|
||||
export const Label = Component.fromClass(Godot.Label)
|
||||
export const CheckBox = Component.fromClass(Godot.CheckBox)
|
||||
1
packages/example/src/components.ts.uid
Normal file
1
packages/example/src/components.ts.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://c4p5ioay76skq
|
||||
6
packages/example/src/tween/Tween.ts
Normal file
6
packages/example/src/tween/Tween.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
import { Control } from "godot"
|
||||
import { Class } from "react-godot-renderer"
|
||||
import { TweenRoot } from "./TweenRoot"
|
||||
|
||||
|
||||
export default class Tween extends Class.make(Control, TweenRoot) {}
|
||||
1
packages/example/src/tween/Tween.ts.uid
Normal file
1
packages/example/src/tween/Tween.ts.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://cau87pj31qgqr
|
||||
12
packages/example/src/tween/Tween.tscn
Normal file
12
packages/example/src/tween/Tween.tscn
Normal file
@@ -0,0 +1,12 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://cc4bbuq05f7us"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cau87pj31qgqr" path="res://src/tween/Tween.ts" id="1_cpsg0"]
|
||||
|
||||
[node name="Tween" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_cpsg0")
|
||||
45
packages/example/src/tween/TweenRoot.tsx
Normal file
45
packages/example/src/tween/TweenRoot.tsx
Normal file
@@ -0,0 +1,45 @@
|
||||
import Godot, { Vector2 } from "godot"
|
||||
import { useState } from "react"
|
||||
import { CenterContainer, CheckBox, HBoxContainer, Label, VBoxContainer } from "../components"
|
||||
|
||||
|
||||
export function TweenRoot() {
|
||||
const [show, setShow] = useState(false)
|
||||
|
||||
return (
|
||||
<CenterContainer
|
||||
anchors_preset={Godot.Control.LayoutPreset.PRESET_FULL_RECT}
|
||||
>
|
||||
<VBoxContainer>
|
||||
<HBoxContainer>
|
||||
<CheckBox
|
||||
button_pressed={show}
|
||||
toggled={setShow}
|
||||
/>
|
||||
|
||||
<Label text="Show" />
|
||||
</HBoxContainer>
|
||||
|
||||
{show &&
|
||||
<Label
|
||||
anchors_preset={Godot.Control.LayoutPreset.PRESET_CENTER}
|
||||
text="Hello World!"
|
||||
ready={async function(this) {
|
||||
// If the Control node is a child of a [Container] node, the scale will be reset to Vector2(1, 1) when the scene is instantiated.
|
||||
// To set the Control's scale when it's instantiated, wait for one frame using await get_tree().process_frame then set its [member scale] property.
|
||||
await this.get_tree().process_frame.as_promise()
|
||||
|
||||
this.scale = new Vector2(0, 0)
|
||||
const tween = this.create_tween()
|
||||
tween.tween_property(this, "scale", new Godot.Vector2(1, 1), 2)
|
||||
tween.tween_callback(Godot.Callable.create(() => console.log("Tween done!")))
|
||||
|
||||
// await tween.finished.as_promise()
|
||||
// console.log("Tween done!")
|
||||
}}
|
||||
/>
|
||||
}
|
||||
</VBoxContainer>
|
||||
</CenterContainer>
|
||||
)
|
||||
}
|
||||
@@ -12,7 +12,7 @@ export type Props<T extends Godot.Node<Godot.NodePathMap>> = {
|
||||
[K in keyof T as T[K] extends Function | Godot.Signal ? never : K]?: T[K]
|
||||
} & {
|
||||
[K in keyof T as T[K] extends Godot.Signal ? K : never]?: T[K] extends Godot.Signal<infer F>
|
||||
? (this: T, ...args: Parameters<F>) => ReturnType<F>
|
||||
? ((this: T, ...args: Parameters<F>) => ReturnType<F>) | ((this: T, ...args: Parameters<F>) => Promise<ReturnType<F>>)
|
||||
: never
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ export declare namespace useSignal {
|
||||
|
||||
export type Function<T extends Godot.Node<Godot.NodePathMap>, N extends useSignal.SignalNames<T>> = (
|
||||
T[N] extends Godot.Signal<infer F>
|
||||
? (this: T, ...args: Parameters<F>) => ReturnType<F>
|
||||
? ((this: T, ...args: Parameters<F>) => ReturnType<F>) | ((this: T, ...args: Parameters<F>) => Promise<ReturnType<F>>)
|
||||
: never
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user