mirror of
				https://git.kittycat.homes/zoe/codename-routes.git
				synced 2024-08-15 03:18:26 +00:00 
			
		
		
		
	fuck around with native script
This commit is contained in:
		
							parent
							
								
									c8046a6e85
								
							
						
					
					
						commit
						3317db5211
					
				
					 8 changed files with 115 additions and 9 deletions
				
			
		
							
								
								
									
										6
									
								
								godot/native/StateServer.tscn
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								godot/native/StateServer.tscn
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | ||||||
|  | [gd_scene load_steps=2 format=2] | ||||||
|  | 
 | ||||||
|  | [ext_resource path="res://world/state_server.gdns" type="Script" id=1] | ||||||
|  | 
 | ||||||
|  | [node name="StateServer" type="Node"] | ||||||
|  | script = ExtResource( 1 ) | ||||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										8
									
								
								godot/world/StateApi.gd
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								godot/world/StateApi.gd
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,8 @@ | ||||||
|  | extends Node | ||||||
|  | 
 | ||||||
|  | var server = preload("res://native/StateServer.tscn").instance() | ||||||
|  | # Called when the node enters the scene tree for the first time. | ||||||
|  | func _ready(): | ||||||
|  | 	add_child(server) | ||||||
|  | 	print(server.a) | ||||||
|  | 	server.foo() | ||||||
							
								
								
									
										16
									
								
								godot/world/state_server.gd
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								godot/world/state_server.gd
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | ||||||
|  | extends Node | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # Declare member variables here. Examples: | ||||||
|  | # var a = 2 | ||||||
|  | # var b = "text" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # Called when the node enters the scene tree for the first time. | ||||||
|  | func _ready(): | ||||||
|  | 	pass | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # Called every frame. 'delta' is the elapsed time since the previous frame. | ||||||
|  | #func _process(delta): | ||||||
|  | #	pass | ||||||
|  | @ -3,10 +3,13 @@ | ||||||
| [ext_resource path="res://world/terrain/terrain.tres" type="TileSet" id=1] | [ext_resource path="res://world/terrain/terrain.tres" type="TileSet" id=1] | ||||||
| [ext_resource path="res://world/terrain.gd" type="Script" id=2] | [ext_resource path="res://world/terrain.gd" type="Script" id=2] | ||||||
| [ext_resource path="res://world/worldcam.gd" type="Script" id=3] | [ext_resource path="res://world/worldcam.gd" type="Script" id=3] | ||||||
| [ext_resource path="res://world/state_server.gdns" type="Script" id=4] | [ext_resource path="res://world/StateApi.gd" type="Script" id=5] | ||||||
| 
 | 
 | ||||||
| [node name="World" type="Node2D"] | [node name="World" type="Node2D"] | ||||||
| 
 | 
 | ||||||
|  | [node name="StateApi" type="Node" parent="."] | ||||||
|  | script = ExtResource( 5 ) | ||||||
|  | 
 | ||||||
| [node name="terrain" type="TileMap" parent="."] | [node name="terrain" type="TileMap" parent="."] | ||||||
| position = Vector2( -2, 0 ) | position = Vector2( -2, 0 ) | ||||||
| mode = 1 | mode = 1 | ||||||
|  | @ -27,6 +30,3 @@ format = 1 | ||||||
| current = true | current = true | ||||||
| zoom = Vector2( 0.4, 0.4 ) | zoom = Vector2( 0.4, 0.4 ) | ||||||
| script = ExtResource( 3 ) | script = ExtResource( 3 ) | ||||||
| 
 |  | ||||||
| [node name="state_server" type="Node" parent="."] |  | ||||||
| script = ExtResource( 4 ) |  | ||||||
|  |  | ||||||
|  | @ -10,3 +10,7 @@ crate-type = ["cdylib"] | ||||||
| 
 | 
 | ||||||
| [dependencies] | [dependencies] | ||||||
| gdnative = "0.10" | gdnative = "0.10" | ||||||
|  | tokio = {version = "1.18.0", features = ["sync"]} | ||||||
|  | lazy_static = "1.4.0" | ||||||
|  | strum = "0.24.0" | ||||||
|  | strum_macros = "0.24" | ||||||
|  |  | ||||||
							
								
								
									
										44
									
								
								routes-native/\
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								routes-native/\
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,44 @@ | ||||||
|  | use gdnative::{export::hint::EnumHint, prelude::*}; | ||||||
|  | use lazy_static::lazy_static; | ||||||
|  | use std::{string::ToString, vec}; | ||||||
|  | use strum::IntoEnumIterator; | ||||||
|  | use strum_macros::{Display, EnumIter}; | ||||||
|  | use tokio::sync::RwLock; | ||||||
|  | 
 | ||||||
|  | lazy_static! { | ||||||
|  |      // static ref STATE: RwLock<Vector3> = RwLock::new(Vector3::new(1.0, 2.0, 3.0)); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #[derive(Debug, EnumIter, Display, FromVariant, ToVariant)] | ||||||
|  | enum Terrain { | ||||||
|  |     Earth, | ||||||
|  |     Rock, | ||||||
|  |     Sand, | ||||||
|  |     Water, | ||||||
|  |     Air, | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #[derive(NativeClass)] | ||||||
|  | #[inherit(Node)] | ||||||
|  | pub struct StateServer; | ||||||
|  | 
 | ||||||
|  | #[methods] | ||||||
|  | impl StateServer { | ||||||
|  |     fn new(_owner: &Node) -> Self { | ||||||
|  |         StateServer | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     #[export] | ||||||
|  |     fn _ready(&self, _owner: &Node) { | ||||||
|  |         // godot_print!("hello, state") | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     #[export] | ||||||
|  |     fn terrain_types(&self, _owner: &Node) -> EnumHint{ | ||||||
|  |         let mut hints = vec![]; | ||||||
|  |         for terrain in Terrain::iter() { | ||||||
|  |             hints.push(terrain.to_string()); | ||||||
|  |         } | ||||||
|  |         EnumHint::new(hints) | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -1,18 +1,46 @@ | ||||||
| use gdnative::prelude::*; | use gdnative::{export::hint::EnumHint, prelude::*}; | ||||||
|  | use lazy_static::lazy_static; | ||||||
|  | use std::{string::ToString, vec}; | ||||||
|  | use strum::IntoEnumIterator; | ||||||
|  | use strum_macros::{Display, EnumIter}; | ||||||
|  | use tokio::sync::RwLock; | ||||||
|  | 
 | ||||||
|  | lazy_static! { | ||||||
|  |      // static ref STATE: RwLock<Vector3> = RwLock::new(Vector3::new(1.0, 2.0, 3.0));
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #[derive(Debug, EnumIter, Display, FromVariant, ToVariant)] | ||||||
|  | enum Terrain { | ||||||
|  |     Earth, | ||||||
|  |     Rock, | ||||||
|  |     Sand, | ||||||
|  |     Water, | ||||||
|  |     Air, | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| #[derive(NativeClass)] | #[derive(NativeClass)] | ||||||
| #[inherit(Node)] | #[inherit(Node)] | ||||||
| pub struct StateServer; | pub struct StateServer { | ||||||
|  |     #[property] | ||||||
|  |     a: u8, | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| #[methods] | #[methods] | ||||||
| impl StateServer { | impl StateServer { | ||||||
|     fn new(_owner: &Node) -> Self { |     fn new(_owner: &Node) -> Self { | ||||||
|         StateServer |         StateServer { | ||||||
|  |             a: 9, | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     #[export] |     #[export] | ||||||
|     fn _ready(&self, _owner: &Node) { |     fn _ready(&self, _owner: &Node) { | ||||||
|         godot_print!("hello, state") |         godot_print!("hello, uwu") | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     #[export] | ||||||
|  |     fn foo(&self, _owner: &Node) { | ||||||
|  |         godot_print!("bar") | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 |  | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue