Compare commits
	
		
			No commits in common. '2ed83eaa9bab5983dcc383b4fc17215b6bd89779' and '2ee8c167314785c3e6cc6275bfdc4b2ee5547980' have entirely different histories. 
		
	
	
		
			2ed83eaa9b
			...
			2ee8c16731
		
	
		
	
				 20 changed files with 271 additions and 1223 deletions
			
			
		@ -1,133 +0,0 @@ | 
				
			|||||||
[gd_scene load_steps=2 format=3 uid="uid://bonekg2q1lxx4"] | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[ext_resource type="Texture2D" uid="uid://cbq4j4svebp45" path="res://Example/Tween/Texture/gBot_pieces.png" id="1_vmu55"] | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="Node2D" type="Node2D"] | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="Gobot" type="Node2D" parent="."] | 
					 | 
				
			||||||
position = Vector2(157, 138) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="arm_left" type="Polygon2D" parent="Gobot"] | 
					 | 
				
			||||||
position = Vector2(77, 210) | 
					 | 
				
			||||||
texture = ExtResource("1_vmu55") | 
					 | 
				
			||||||
skeleton = NodePath("../../Skeleton2D") | 
					 | 
				
			||||||
polygon = PackedVector2Array(188, 36, 225, 22, 276, 47, 266, 129, 248, 188, 275, 275, 298, 302, 275, 348, 220, 360, 194, 313, 176, 246, 187, 199, 184, 102, 176, 48, 224, 96, 216, 192, 240, 304, 216, 208) | 
					 | 
				
			||||||
uv = PackedVector2Array(188, 36, 225, 22, 276, 47, 266, 129, 248, 188, 275, 275, 298, 302, 275, 348, 220, 360, 194, 313, 176, 246, 187, 199, 184, 102, 174, 44, 216, 96, 216, 192, 240, 304, 216, 200) | 
					 | 
				
			||||||
polygons = [PackedInt32Array(14, 1, 0, 13, 12), PackedInt32Array(1, 2, 3, 14), PackedInt32Array(14, 15, 4, 3), PackedInt32Array(14, 12, 11, 15), PackedInt32Array(5, 6, 7, 16), PackedInt32Array(16, 9, 8, 7), PackedInt32Array(11, 17, 15), PackedInt32Array(15, 17, 4), PackedInt32Array(17, 16, 9, 10, 11), PackedInt32Array(4, 17, 16, 5)] | 
					 | 
				
			||||||
bones = ["hip", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "hip/chest", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "hip/chest/head", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "hip/chest/head/jaw", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "hip/chest/arm_right", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "hip/chest/arm_right/hand_right", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "hip/chest/arm_left", PackedFloat32Array(1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0), "hip/chest/arm_left/hand_left", PackedFloat32Array(0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1), "hip/leg_left", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "hip/leg_left/calf_left", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "hip/leg_left/calf_left/foot_left", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "hip/leg_right", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "hip/leg_right/leg_right2", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "hip/leg_right/leg_right2/leg_right3", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)] | 
					 | 
				
			||||||
internal_vertex_count = 4 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="leg_left" type="Polygon2D" parent="Gobot"] | 
					 | 
				
			||||||
position = Vector2(-46, 56) | 
					 | 
				
			||||||
texture = ExtResource("1_vmu55") | 
					 | 
				
			||||||
skeleton = NodePath("../../Skeleton2D") | 
					 | 
				
			||||||
polygon = PackedVector2Array(285.231, 396.984, 311.252, 384.229, 343.905, 401.066, 341.354, 431.678, 333.701, 442.392, 327.578, 478.617, 337.782, 475.556, 340.843, 504.637, 326.047, 538.821, 327.578, 569.433, 349.517, 602.086, 382.17, 608.719, 391.354, 649.535, 403.088, 657.698, 406.66, 688.821, 397.476, 693.413, 250.027, 690.352, 247.476, 660.25, 252.068, 657.188, 247.986, 629.127, 254.619, 613.821, 254.619, 509.229, 281.66, 471.474, 290.992, 521.359, 297.01, 631.544, 294.695, 615.34, 297.473, 498.674) | 
					 | 
				
			||||||
uv = PackedVector2Array(285.231, 396.984, 311.252, 384.229, 343.905, 401.066, 341.354, 431.678, 333.701, 442.392, 327.578, 478.617, 337.782, 475.556, 340.843, 504.637, 326.047, 538.821, 327.578, 569.433, 349.517, 602.086, 382.17, 608.719, 391.354, 649.535, 403.088, 657.698, 406.66, 688.821, 397.476, 693.413, 250.027, 690.352, 247.476, 660.25, 252.068, 657.188, 247.986, 629.127, 254.619, 613.821, 254.619, 509.229, 281.66, 471.474, 290.992, 521.359, 297.01, 631.544, 294.695, 615.34, 297.473, 498.674) | 
					 | 
				
			||||||
polygons = [PackedInt32Array(23, 21, 20, 25, 9, 8), PackedInt32Array(25, 24, 10, 9), PackedInt32Array(20, 25, 24, 19), PackedInt32Array(26, 23, 8, 7), PackedInt32Array(22, 26, 23, 21), PackedInt32Array(7, 6, 5, 4, 3, 2, 1, 0, 22, 26), PackedInt32Array(19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 24)] | 
					 | 
				
			||||||
bones = ["hip", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "hip/chest", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "hip/chest/head", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "hip/chest/head/jaw", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "hip/chest/arm_right", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "hip/chest/arm_right/hand_right", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "hip/chest/arm_left", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "hip/chest/arm_left/hand_left", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "hip/leg_left", PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1), "hip/leg_left/calf_left", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1), "hip/leg_left/calf_left/foot_left", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0), "hip/leg_right", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "hip/leg_right/leg_right2", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "hip/leg_right/leg_right2/leg_right3", PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)] | 
					 | 
				
			||||||
internal_vertex_count = 4 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="Body" type="Polygon2D" parent="Gobot"] | 
					 | 
				
			||||||
position = Vector2(-213, 183) | 
					 | 
				
			||||||
texture = ExtResource("1_vmu55") | 
					 | 
				
			||||||
polygon = PackedVector2Array(454, 19, 483, 39, 487, 82, 521, 157, 524, 194, 509.272, 215.601, 494, 238, 475, 250, 476, 260, 493, 276, 488, 312, 462, 339, 422, 348, 367, 331, 346, 297, 349, 262, 375, 251, 372, 236, 350, 205, 340, 135, 357, 85, 384, 78, 393, 37, 427, 18) | 
					 | 
				
			||||||
uv = PackedVector2Array(454, 19, 483, 39, 487, 82, 521, 157, 524, 194, 494, 238, 475, 250, 476, 260, 493, 276, 488, 312, 462, 339, 422, 348, 367, 331, 346, 297, 349, 262, 375, 251, 372, 236, 350, 205, 340, 135, 357, 85, 384, 78, 393, 37, 427, 18) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="leg_right" type="Polygon2D" parent="Gobot"] | 
					 | 
				
			||||||
position = Vector2(59, 63) | 
					 | 
				
			||||||
texture = ExtResource("1_vmu55") | 
					 | 
				
			||||||
polygon = PackedVector2Array(89.832, 385.034, 117.043, 400.68, 119.084, 426.531, 108.88, 441.497, 108.88, 463.265, 103.437, 476.871, 115.002, 472.789, 119.084, 508.843, 104.798, 537.415, 105.478, 559.864, 125.886, 593.197, 155.818, 602.041, 166.022, 617.007, 168.063, 643.537, 182.349, 653.061, 183.029, 676.19, 174.186, 685.714, 29.2878, 683.673, 19.7639, 674.83, 25.8864, 653.061, 30.6483, 604.762, 32.6891, 510.884, 61.2605, 470.068, 63.3014, 399.32) | 
					 | 
				
			||||||
uv = PackedVector2Array(89.832, 385.034, 117.043, 400.68, 119.084, 426.531, 108.88, 441.497, 108.88, 463.265, 103.437, 476.871, 115.002, 472.789, 119.084, 508.843, 104.798, 537.415, 105.478, 559.864, 125.886, 593.197, 155.818, 602.041, 166.022, 617.007, 168.063, 643.537, 182.349, 653.061, 183.029, 676.19, 174.186, 685.714, 29.2878, 683.673, 19.7639, 674.83, 25.8864, 653.061, 30.6483, 604.762, 32.6891, 510.884, 61.2605, 470.068, 63.3014, 399.32) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="arm_right" type="Polygon2D" parent="Gobot"] | 
					 | 
				
			||||||
position = Vector2(53, 227) | 
					 | 
				
			||||||
texture = ExtResource("1_vmu55") | 
					 | 
				
			||||||
polygon = PackedVector2Array(80, 13, 141, 46, 98, 181, 139, 320, 122, 354, 62, 365, 26, 311, 14, 229, 32, 192, 21, 120, 34, 25) | 
					 | 
				
			||||||
uv = PackedVector2Array(80, 13, 141, 46, 98, 181, 139, 320, 122, 354, 62, 365, 26, 311, 14, 229, 32, 192, 21, 120, 34, 25) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="head" type="Polygon2D" parent="Gobot"] | 
					 | 
				
			||||||
position = Vector2(-427, -344) | 
					 | 
				
			||||||
texture = ExtResource("1_vmu55") | 
					 | 
				
			||||||
polygon = PackedVector2Array(481.482, 378.14, 484.033, 449.058, 495.767, 494.466, 537.094, 496.507, 544.747, 525.079, 667.196, 533.242, 677.91, 506.711, 713.624, 511.303, 721.278, 521.507, 765.155, 517.426, 772.808, 505.181, 800.869, 503.65, 807.502, 489.364, 809.033, 380.691, 801.89, 361.303, 813.624, 340.895, 784.033, 294.466, 761.073, 297.017, 763.114, 272.528, 711.073, 252.119, 663.624, 255.691, 659.543, 269.977, 643.216, 249.568, 620.767, 247.017, 554.441, 282.221, 565.155, 316.405, 546.788, 327.119, 510.053, 328.14) | 
					 | 
				
			||||||
uv = PackedVector2Array(481.482, 378.14, 484.033, 449.058, 495.767, 494.466, 537.094, 496.507, 544.747, 525.079, 667.196, 533.242, 677.91, 506.711, 713.624, 511.303, 721.278, 521.507, 765.155, 517.426, 772.808, 505.181, 800.869, 503.65, 807.502, 489.364, 809.033, 380.691, 801.89, 361.303, 813.624, 340.895, 784.033, 294.466, 761.073, 297.017, 763.114, 272.528, 711.073, 252.119, 663.624, 255.691, 659.543, 269.977, 643.216, 249.568, 620.767, 247.017, 554.441, 282.221, 565.155, 316.405, 546.788, 327.119, 510.053, 328.14) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="jaw" type="Polygon2D" parent="Gobot"] | 
					 | 
				
			||||||
position = Vector2(-423, -438) | 
					 | 
				
			||||||
texture = ExtResource("1_vmu55") | 
					 | 
				
			||||||
polygon = PackedVector2Array(488.089, 572.317, 541.793, 575.404, 544.879, 600.712, 548.583, 574.169, 616.484, 574.169, 620.805, 585.898, 635.003, 585.898, 644.879, 571.083, 716.484, 572.317, 723.891, 582.194, 738.706, 582.811, 744.262, 571.083, 819.57, 561.823, 815.867, 613.058, 788.089, 657.503, 754.756, 674.169, 654.138, 688.984, 547.965, 680.959, 498.583, 643.922, 481.916, 605.651) | 
					 | 
				
			||||||
uv = PackedVector2Array(488.089, 572.317, 541.793, 575.404, 544.879, 600.712, 548.583, 574.169, 616.484, 574.169, 620.805, 585.898, 635.003, 585.898, 644.879, 571.083, 716.484, 572.317, 723.891, 582.194, 738.706, 582.811, 744.262, 571.083, 819.57, 561.823, 815.867, 613.058, 788.089, 657.503, 754.756, 674.169, 654.138, 688.984, 547.965, 680.959, 498.583, 643.922, 481.916, 605.651) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="Skeleton2D" type="Skeleton2D" parent="."] | 
					 | 
				
			||||||
position = Vector2(157, 138) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="hip" type="Bone2D" parent="Skeleton2D"] | 
					 | 
				
			||||||
position = Vector2(218, 493) | 
					 | 
				
			||||||
rest = Transform2D(1, 0, 0, 1, 218, 493) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="chest" type="Bone2D" parent="Skeleton2D/hip"] | 
					 | 
				
			||||||
position = Vector2(1, -45) | 
					 | 
				
			||||||
rest = Transform2D(1, 0, 0, 1, 1, -45) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="head" type="Bone2D" parent="Skeleton2D/hip/chest"] | 
					 | 
				
			||||||
position = Vector2(5, -185) | 
					 | 
				
			||||||
rest = Transform2D(1, 0, 0, 1, 5, -185) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="jaw" type="Bone2D" parent="Skeleton2D/hip/chest/head"] | 
					 | 
				
			||||||
position = Vector2(-95, -64) | 
					 | 
				
			||||||
rest = Transform2D(1, 0, 0, 1, -95, -64) | 
					 | 
				
			||||||
auto_calculate_length_and_angle = false | 
					 | 
				
			||||||
length = 150.0 | 
					 | 
				
			||||||
bone_angle = 0.0 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="arm_right" type="Bone2D" parent="Skeleton2D/hip/chest"] | 
					 | 
				
			||||||
position = Vector2(-95, -132) | 
					 | 
				
			||||||
rest = Transform2D(1, 0, 0, 1, -95, -132) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="hand_right" type="Bone2D" parent="Skeleton2D/hip/chest/arm_right"] | 
					 | 
				
			||||||
position = Vector2(-5, 101) | 
					 | 
				
			||||||
rotation = 1.39626 | 
					 | 
				
			||||||
rest = Transform2D(0.173648, 0.984808, -0.984808, 0.173648, -5, 101) | 
					 | 
				
			||||||
auto_calculate_length_and_angle = false | 
					 | 
				
			||||||
length = 120.0 | 
					 | 
				
			||||||
bone_angle = 0.0 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="arm_left" type="Bone2D" parent="Skeleton2D/hip/chest"] | 
					 | 
				
			||||||
position = Vector2(78, -142) | 
					 | 
				
			||||||
rest = Transform2D(1, 0, 0, 1, 78, -142) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="hand_left" type="Bone2D" parent="Skeleton2D/hip/chest/arm_left"] | 
					 | 
				
			||||||
position = Vector2(1, 99) | 
					 | 
				
			||||||
rest = Transform2D(1, 0, 0, 1, 1, 99) | 
					 | 
				
			||||||
auto_calculate_length_and_angle = false | 
					 | 
				
			||||||
length = 120.0 | 
					 | 
				
			||||||
bone_angle = 70.0 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="leg_left" type="Bone2D" parent="Skeleton2D/hip"] | 
					 | 
				
			||||||
position = Vector2(55, -21) | 
					 | 
				
			||||||
rest = Transform2D(1, 0, 0, 1, 55, -21) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="calf_left" type="Bone2D" parent="Skeleton2D/hip/leg_left"] | 
					 | 
				
			||||||
position = Vector2(-29, 98) | 
					 | 
				
			||||||
rest = Transform2D(1, 0, 0, 1, -29, 98) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="foot_left" type="Bone2D" parent="Skeleton2D/hip/leg_left/calf_left"] | 
					 | 
				
			||||||
position = Vector2(20, 135) | 
					 | 
				
			||||||
rest = Transform2D(1, 0, 0, 1, 20, 135) | 
					 | 
				
			||||||
auto_calculate_length_and_angle = false | 
					 | 
				
			||||||
length = 60.0 | 
					 | 
				
			||||||
bone_angle = 0.0 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="leg_right" type="Bone2D" parent="Skeleton2D/hip"] | 
					 | 
				
			||||||
position = Vector2(-69, -16) | 
					 | 
				
			||||||
rest = Transform2D(1, 0, 0, 1, -69, -16) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="leg_right2" type="Bone2D" parent="Skeleton2D/hip/leg_right"] | 
					 | 
				
			||||||
position = Vector2(-20, 98) | 
					 | 
				
			||||||
rest = Transform2D(1, 0, 0, 1, -20, 98) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="leg_right3" type="Bone2D" parent="Skeleton2D/hip/leg_right/leg_right2"] | 
					 | 
				
			||||||
position = Vector2(13, 133) | 
					 | 
				
			||||||
rest = Transform2D(1, 0, 0, 1, 13, 133) | 
					 | 
				
			||||||
auto_calculate_length_and_angle = false | 
					 | 
				
			||||||
length = 60.0 | 
					 | 
				
			||||||
bone_angle = 0.0 | 
					 | 
				
			||||||
| 
		 Before Width: | Height: | Size: 453 KiB  | 
@ -1,34 +0,0 @@ | 
				
			|||||||
[remap] | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
importer="texture" | 
					 | 
				
			||||||
type="CompressedTexture2D" | 
					 | 
				
			||||||
uid="uid://cbq4j4svebp45" | 
					 | 
				
			||||||
path="res://.godot/imported/gBot_pieces.png-1c5266364ba54cfdb5b194e098160c14.ctex" | 
					 | 
				
			||||||
metadata={ | 
					 | 
				
			||||||
"vram_texture": false | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[deps] | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
source_file="res://Example/Tween/Texture/gBot_pieces.png" | 
					 | 
				
			||||||
dest_files=["res://.godot/imported/gBot_pieces.png-1c5266364ba54cfdb5b194e098160c14.ctex"] | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[params] | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
compress/mode=0 | 
					 | 
				
			||||||
compress/high_quality=false | 
					 | 
				
			||||||
compress/lossy_quality=0.7 | 
					 | 
				
			||||||
compress/hdr_compression=1 | 
					 | 
				
			||||||
compress/normal_map=0 | 
					 | 
				
			||||||
compress/channel_pack=0 | 
					 | 
				
			||||||
mipmaps/generate=false | 
					 | 
				
			||||||
mipmaps/limit=-1 | 
					 | 
				
			||||||
roughness/mode=0 | 
					 | 
				
			||||||
roughness/src_normal="" | 
					 | 
				
			||||||
process/fix_alpha_border=true | 
					 | 
				
			||||||
process/premult_alpha=false | 
					 | 
				
			||||||
process/normal_map_invert_y=false | 
					 | 
				
			||||||
process/hdr_as_srgb=false | 
					 | 
				
			||||||
process/hdr_clamp_exposure=false | 
					 | 
				
			||||||
process/size_limit=0 | 
					 | 
				
			||||||
detect_3d/compress_to=1 | 
					 | 
				
			||||||
@ -0,0 +1,15 @@ | 
				
			|||||||
 | 
					using System; | 
				
			||||||
 | 
					using System.Collections.Generic; | 
				
			||||||
 | 
					using System.Linq; | 
				
			||||||
 | 
					using System.Threading.Tasks; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace EGFramework | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    public class EGCsv : EGModule | 
				
			||||||
 | 
					    { | 
				
			||||||
 | 
					        public override void Init() | 
				
			||||||
 | 
					        { | 
				
			||||||
 | 
					             | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -1,226 +0,0 @@ | 
				
			|||||||
using System; | 
					 | 
				
			||||||
using System.Collections; | 
					 | 
				
			||||||
using System.Collections.Generic; | 
					 | 
				
			||||||
using System.Data; | 
					 | 
				
			||||||
using System.IO; | 
					 | 
				
			||||||
using System.Linq; | 
					 | 
				
			||||||
using System.Linq.Expressions; | 
					 | 
				
			||||||
using System.Threading.Tasks; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace EGFramework | 
					 | 
				
			||||||
{ | 
					 | 
				
			||||||
    public class EGCsvSave : IEGSaveData, IEGSave, IEGSaveReadOnly | 
					 | 
				
			||||||
    { | 
					 | 
				
			||||||
        public bool IsReadOnly { get; set; } | 
					 | 
				
			||||||
        public Encoding StringEncoding { set; get; } = Encoding.UTF8; | 
					 | 
				
			||||||
        private string DefaultPath { set; get; } | 
					 | 
				
			||||||
        private List<string[]> CsvDataBlock { get; set; } | 
					 | 
				
			||||||
        private Dictionary<string,int> CsvDataHeader = new Dictionary<string,int>(); | 
					 | 
				
			||||||
        public IOCContainer TypeDataContainer = new IOCContainer(); | 
					 | 
				
			||||||
        private string ReadText { set; get; } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        public void InitSaveFile(string path) | 
					 | 
				
			||||||
        { | 
					 | 
				
			||||||
            ReadDataBlock(path); | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        public void InitReadOnly(string data) | 
					 | 
				
			||||||
        { | 
					 | 
				
			||||||
            ReadText = data; | 
					 | 
				
			||||||
            if(ReadText != null || ReadText != ""){ | 
					 | 
				
			||||||
                CsvDataBlock = GetCSVDataBlockFromText(ReadText,out CsvDataHeader); | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        public void InitReadOnly(byte[] data) | 
					 | 
				
			||||||
        { | 
					 | 
				
			||||||
            ReadText = StringEncoding.GetString(data); | 
					 | 
				
			||||||
            if(ReadText != null || ReadText != ""){ | 
					 | 
				
			||||||
                CsvDataBlock = GetCSVDataBlockFromText(ReadText,out CsvDataHeader); | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        public void ReadDataBlock(string path){ | 
					 | 
				
			||||||
            DefaultPath = path; | 
					 | 
				
			||||||
            try | 
					 | 
				
			||||||
            { | 
					 | 
				
			||||||
                FileStream fileStream = new FileStream(path,FileMode.Open); | 
					 | 
				
			||||||
                byte[] buffer = new byte[fileStream.Length]; | 
					 | 
				
			||||||
                fileStream.Read(buffer, 0, (int)fileStream.Length); | 
					 | 
				
			||||||
                fileStream.Close(); | 
					 | 
				
			||||||
                fileStream.Dispose(); | 
					 | 
				
			||||||
                ReadText = StringEncoding.GetString(buffer); | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
            catch (System.Exception e) | 
					 | 
				
			||||||
            { | 
					 | 
				
			||||||
                Godot.GD.Print("e:" + e); | 
					 | 
				
			||||||
                throw; | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
            if(ReadText != null || ReadText != ""){ | 
					 | 
				
			||||||
                CsvDataBlock = GetCSVDataBlockFromText(ReadText,out CsvDataHeader); | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        public void WriteDataBlock(string path){ | 
					 | 
				
			||||||
            try | 
					 | 
				
			||||||
            { | 
					 | 
				
			||||||
                FileStream fileStream = File.Create(path); | 
					 | 
				
			||||||
                string writeText = ""; | 
					 | 
				
			||||||
                string headerText = ""; | 
					 | 
				
			||||||
                foreach(string headStr in CsvDataHeader.Keys){ | 
					 | 
				
			||||||
                    headerText+=headStr + ","; | 
					 | 
				
			||||||
                } | 
					 | 
				
			||||||
                headerText = headerText.Remove(headerText.Length-1,1); | 
					 | 
				
			||||||
                writeText = headerText + "\n"; | 
					 | 
				
			||||||
                foreach(string[] lineData in CsvDataBlock){ | 
					 | 
				
			||||||
                    string lineText = ""; | 
					 | 
				
			||||||
                    foreach(string singleData in lineData){ | 
					 | 
				
			||||||
                        lineText += singleData + ","; | 
					 | 
				
			||||||
                    } | 
					 | 
				
			||||||
                    lineText = lineText.Remove(lineText.Length-1,1); | 
					 | 
				
			||||||
                    writeText += lineText + "\n"; | 
					 | 
				
			||||||
                } | 
					 | 
				
			||||||
                writeText = writeText.Remove(writeText.Length-1,1); | 
					 | 
				
			||||||
                byte[] data = StringEncoding.GetBytes(writeText); | 
					 | 
				
			||||||
                fileStream.Write(data,0,data.Length); | 
					 | 
				
			||||||
                fileStream.Close(); | 
					 | 
				
			||||||
                fileStream.Dispose(); | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
            catch (System.Exception e) | 
					 | 
				
			||||||
            { | 
					 | 
				
			||||||
                Godot.GD.Print("e:" + e); | 
					 | 
				
			||||||
                throw; | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        public List<string[]> GetCSVDataBlockFromText(string text,out Dictionary<string,int> header){ | 
					 | 
				
			||||||
            List<string[]> csvBlock = new List<string[]>(); | 
					 | 
				
			||||||
            string[] lineData = text.Split('\n'); | 
					 | 
				
			||||||
            string[] headerStr = lineData[0].Split(','); | 
					 | 
				
			||||||
            header = new Dictionary<string,int>(); | 
					 | 
				
			||||||
            for (int i = 0; i < headerStr.Length; i++) | 
					 | 
				
			||||||
            { | 
					 | 
				
			||||||
                header.Add(headerStr[i],i); | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
            for (int lineID = 0; lineID < lineData.Length; lineID++) | 
					 | 
				
			||||||
            { | 
					 | 
				
			||||||
                if (lineID!=0){ | 
					 | 
				
			||||||
                    csvBlock.Add(lineData[lineID].Split(',')); | 
					 | 
				
			||||||
                } | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
            return csvBlock; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        public string[] ReadLine(int id){ | 
					 | 
				
			||||||
            if(CsvDataBlock.Count()>0){ | 
					 | 
				
			||||||
                return CsvDataBlock[id]; | 
					 | 
				
			||||||
            }else{ | 
					 | 
				
			||||||
                return null; | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        public void WriteLine(string[] lineData){ | 
					 | 
				
			||||||
            CsvDataBlock.Add(lineData); | 
					 | 
				
			||||||
            this.WriteDataBlock(DefaultPath); | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        public void SetData<TData>(string dataKey, TData data, object id) | 
					 | 
				
			||||||
        { | 
					 | 
				
			||||||
            if(IsReadOnly){ | 
					 | 
				
			||||||
                throw new Exception("This file is readonly! can't set any data to file."); | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
            bool IsAdd = false; | 
					 | 
				
			||||||
            int dataID = 0; | 
					 | 
				
			||||||
            if(id.GetType()==typeof(int)){ | 
					 | 
				
			||||||
                dataID = (int)id; | 
					 | 
				
			||||||
            }else if(int.TryParse(id.ToString() ,out dataID)){ | 
					 | 
				
			||||||
                throw new Exception("Id cannot be convert to int!"); | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
            if(dataID>=CsvDataBlock.Count() || dataID < 0){ | 
					 | 
				
			||||||
                IsAdd = true; | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
            string[] csvSet = new string[CsvDataHeader.Keys.Count()]; | 
					 | 
				
			||||||
            foreach(PropertyInfo property in data.GetType().GetProperties()){ | 
					 | 
				
			||||||
                CsvParamAttribute csvParam = property.GetCustomAttribute<CsvParamAttribute>(); | 
					 | 
				
			||||||
                if(csvParam != null && CsvDataHeader.ContainsKey(csvParam._name)){ | 
					 | 
				
			||||||
                    csvSet[CsvDataHeader[csvParam._name]] = property.GetValue(data).ToString(); | 
					 | 
				
			||||||
                } | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
            if(IsAdd){ | 
					 | 
				
			||||||
                CsvDataBlock.Add(csvSet); | 
					 | 
				
			||||||
            }else{ | 
					 | 
				
			||||||
                CsvDataBlock[dataID] = csvSet; | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
            this.WriteDataBlock(DefaultPath); | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        public TData GetData<TData>(string dataKey, object id) where TData : new() | 
					 | 
				
			||||||
        { | 
					 | 
				
			||||||
            TData data = new TData(); | 
					 | 
				
			||||||
            int dataID = 0; | 
					 | 
				
			||||||
            if(id.GetType()==typeof(int)){ | 
					 | 
				
			||||||
                dataID = (int)id; | 
					 | 
				
			||||||
            }else if(int.TryParse(id.ToString() ,out dataID)){ | 
					 | 
				
			||||||
                throw new Exception("Id cannot be convert to int!"); | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
            if(dataID>=CsvDataBlock.Count()){ | 
					 | 
				
			||||||
                throw new IndexOutOfRangeException("Parameter index is out of range."); | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
            foreach(PropertyInfo property in data.GetType().GetProperties()){ | 
					 | 
				
			||||||
                CsvParamAttribute csvParam = property.GetCustomAttribute<CsvParamAttribute>(); | 
					 | 
				
			||||||
                if(csvParam != null && CsvDataHeader.ContainsKey(csvParam._name)){ | 
					 | 
				
			||||||
                    string valueStr = CsvDataBlock[dataID][CsvDataHeader[csvParam._name]]; | 
					 | 
				
			||||||
                    if(property.PropertyType==typeof(string)){ | 
					 | 
				
			||||||
                        property.SetValue(data,valueStr); | 
					 | 
				
			||||||
                    }else{ | 
					 | 
				
			||||||
                        property.SetValue(data,Convert.ChangeType(valueStr,property.PropertyType)); | 
					 | 
				
			||||||
                    } | 
					 | 
				
			||||||
                } | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
            return data; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
        public IEnumerable<TData> GetAll<TData>(string dataKey) where TData : new() | 
					 | 
				
			||||||
        { | 
					 | 
				
			||||||
            // throw new NotImplementedException(); | 
					 | 
				
			||||||
            List<TData> DataList = new List<TData>(); | 
					 | 
				
			||||||
            PropertyInfo[] properties = typeof(TData).GetProperties(); | 
					 | 
				
			||||||
            for (int dataID = 0; dataID < CsvDataBlock.Count(); dataID++){ | 
					 | 
				
			||||||
                TData data = new TData(); | 
					 | 
				
			||||||
                foreach(PropertyInfo property in properties){ | 
					 | 
				
			||||||
                    CsvParamAttribute csvParam = property.GetCustomAttribute<CsvParamAttribute>(); | 
					 | 
				
			||||||
                    if(csvParam != null && CsvDataHeader.ContainsKey(csvParam._name)){ | 
					 | 
				
			||||||
                        string valueStr = CsvDataBlock[dataID][CsvDataHeader[csvParam._name]]; | 
					 | 
				
			||||||
                        if(property.PropertyType==typeof(string)){ | 
					 | 
				
			||||||
                            property.SetValue(data,valueStr); | 
					 | 
				
			||||||
                        }else{ | 
					 | 
				
			||||||
                            property.SetValue(data,Convert.ChangeType(valueStr,property.PropertyType)); | 
					 | 
				
			||||||
                        } | 
					 | 
				
			||||||
                    } | 
					 | 
				
			||||||
                } | 
					 | 
				
			||||||
                DataList.Add(data); | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
            TypeDataContainer.Register(DataList); | 
					 | 
				
			||||||
            return DataList; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
         | 
					 | 
				
			||||||
        public IEnumerable<TData> FindData<TData>(string dataKey, Expression<Func<TData, bool>> expression) where TData : new() | 
					 | 
				
			||||||
        { | 
					 | 
				
			||||||
            List<TData> sourceList; | 
					 | 
				
			||||||
            if(TypeDataContainer.self.ContainsKey(typeof(List<TData>))){ | 
					 | 
				
			||||||
                sourceList = TypeDataContainer.Get<List<TData>>(); | 
					 | 
				
			||||||
            }else{ | 
					 | 
				
			||||||
                sourceList = (List<TData>)GetAll<TData>(dataKey); | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
            return sourceList.Where(expression.Compile()); | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)] | 
					 | 
				
			||||||
    public class CsvParamAttribute: Attribute{ | 
					 | 
				
			||||||
        public string _name { set; get; } | 
					 | 
				
			||||||
        public CsvParamAttribute(string name){ | 
					 | 
				
			||||||
            this._name = name; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
@ -0,0 +1,16 @@ | 
				
			|||||||
 | 
					using System; | 
				
			||||||
 | 
					using System.Collections.Generic; | 
				
			||||||
 | 
					using System.Linq; | 
				
			||||||
 | 
					using System.Threading.Tasks; | 
				
			||||||
 | 
					using LiteDB; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace EGFramework | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    public class EGLiteDB : EGModule | 
				
			||||||
 | 
					    { | 
				
			||||||
 | 
					        public override void Init() | 
				
			||||||
 | 
					        { | 
				
			||||||
 | 
					            // throw new NotImplementedException(); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -1,65 +0,0 @@ | 
				
			|||||||
using System; | 
					 | 
				
			||||||
using System.Collections.Generic; | 
					 | 
				
			||||||
using System.IO; | 
					 | 
				
			||||||
using System.Linq; | 
					 | 
				
			||||||
using System.Linq.Expressions; | 
					 | 
				
			||||||
using System.Threading.Tasks; | 
					 | 
				
			||||||
using LiteDB; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace EGFramework | 
					 | 
				
			||||||
{ | 
					 | 
				
			||||||
    public class EGLiteDBSave : IEGSave,IEGSaveData | 
					 | 
				
			||||||
    { | 
					 | 
				
			||||||
        private string DefaultPath { set; get; } | 
					 | 
				
			||||||
        private LiteDatabase _Database { set; get; } | 
					 | 
				
			||||||
        private LiteDatabase Database{  | 
					 | 
				
			||||||
            get { | 
					 | 
				
			||||||
                if(_Database == null){ | 
					 | 
				
			||||||
                    InitSaveFile(DefaultPath); | 
					 | 
				
			||||||
                } | 
					 | 
				
			||||||
                return _Database; | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
         | 
					 | 
				
			||||||
        public void InitSaveFile(string path) | 
					 | 
				
			||||||
        { | 
					 | 
				
			||||||
            DefaultPath = path; | 
					 | 
				
			||||||
            if (!Directory.Exists(Path.GetDirectoryName(DefaultPath))) | 
					 | 
				
			||||||
            { | 
					 | 
				
			||||||
                Directory.CreateDirectory(Path.GetDirectoryName(DefaultPath)); | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
            // Default is "SaveData/DefaultLiteDBData.db" | 
					 | 
				
			||||||
            _Database = new LiteDatabase(path); | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
         | 
					 | 
				
			||||||
        public TData GetData<TData>(string dataKey, object id) where TData : new() | 
					 | 
				
			||||||
        { | 
					 | 
				
			||||||
            LiteCollection<TData> collection = (LiteCollection<TData>)Database.GetCollection<TData>(dataKey); | 
					 | 
				
			||||||
            TData result = collection.FindById((BsonValue)id); | 
					 | 
				
			||||||
            return result; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
         | 
					 | 
				
			||||||
        public void SetData<TData>(string dataKey, TData data, object id) | 
					 | 
				
			||||||
        { | 
					 | 
				
			||||||
            LiteCollection<TData> collection = (LiteCollection<TData>)Database.GetCollection<TData>(dataKey); | 
					 | 
				
			||||||
            if(collection.FindById((BsonValue)id)==null){ | 
					 | 
				
			||||||
                collection.Insert((BsonValue)id, data); | 
					 | 
				
			||||||
            } | 
					 | 
				
			||||||
            collection.Update(data); | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        public IEnumerable<TData> GetAll<TData>(string dataKey) where TData : new() | 
					 | 
				
			||||||
        { | 
					 | 
				
			||||||
            LiteCollection<TData> collection = (LiteCollection<TData>)Database.GetCollection<TData>(dataKey); | 
					 | 
				
			||||||
            return collection.FindAll(); | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        public IEnumerable<TData> FindData<TData>(string dataKey, Expression<Func<TData, bool>> expression) where TData : new() | 
					 | 
				
			||||||
        { | 
					 | 
				
			||||||
            LiteCollection<TData> collection = (LiteCollection<TData>)Database.GetCollection<TData>(dataKey); | 
					 | 
				
			||||||
            return collection.Find(expression); | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
         | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
@ -0,0 +1,54 @@ | 
				
			|||||||
 | 
					#if TOOLS | 
				
			||||||
 | 
					using Godot; | 
				
			||||||
 | 
					using System; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace EGFramework.Example.SystemExamples.PlayerStorage | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
						[Tool] | 
				
			||||||
 | 
						public partial class ToolItemImporter : EditorPlugin | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							PackedScene MainPanel = ResourceLoader.Load<PackedScene>("res://addons/Tools/ItemImporter/ToolItemImporter.tscn"); | 
				
			||||||
 | 
					    	Control MainPanelInstance; | 
				
			||||||
 | 
							public override void _EnterTree() | 
				
			||||||
 | 
							{ | 
				
			||||||
 | 
								// Initialization of the plugin goes here. | 
				
			||||||
 | 
								MainPanelInstance = (Control)MainPanel.Instantiate(); | 
				
			||||||
 | 
								// Add the main panel to the editor's main viewport. | 
				
			||||||
 | 
								EditorInterface.Singleton.GetEditorMainScreen().AddChild(MainPanelInstance); | 
				
			||||||
 | 
								// Hide the main panel. Very much required. | 
				
			||||||
 | 
								_MakeVisible(false); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public override void _ExitTree() | 
				
			||||||
 | 
							{ | 
				
			||||||
 | 
								// Clean-up of the plugin goes here. | 
				
			||||||
 | 
								if (MainPanelInstance != null) | 
				
			||||||
 | 
								{ | 
				
			||||||
 | 
									MainPanelInstance.QueueFree(); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							public override bool _HasMainScreen() | 
				
			||||||
 | 
							{ | 
				
			||||||
 | 
								return true; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public override void _MakeVisible(bool visible) | 
				
			||||||
 | 
							{ | 
				
			||||||
 | 
								if (MainPanelInstance != null) | 
				
			||||||
 | 
								{ | 
				
			||||||
 | 
									MainPanelInstance.Visible = visible; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public override string _GetPluginName() | 
				
			||||||
 | 
							{ | 
				
			||||||
 | 
								return "Tool Item Importer"; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public override Texture2D _GetPluginIcon() | 
				
			||||||
 | 
							{ | 
				
			||||||
 | 
								return EditorInterface.Singleton.GetEditorTheme().GetIcon("Node", "EditorIcons"); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					#endif | 
				
			||||||
@ -0,0 +1,37 @@ | 
				
			|||||||
 | 
					[gd_scene format=3 uid="uid://bglw1yht7w1kt"] | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="ToolItemImporter" type="Control"] | 
				
			||||||
 | 
					layout_mode = 3 | 
				
			||||||
 | 
					anchors_preset = 15 | 
				
			||||||
 | 
					anchor_right = 1.0 | 
				
			||||||
 | 
					anchor_bottom = 1.0 | 
				
			||||||
 | 
					grow_horizontal = 2 | 
				
			||||||
 | 
					grow_vertical = 2 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Button" type="Button" parent="."] | 
				
			||||||
 | 
					layout_mode = 1 | 
				
			||||||
 | 
					offset_right = 69.0 | 
				
			||||||
 | 
					offset_bottom = 31.0 | 
				
			||||||
 | 
					text = "导入CSV" | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Button2" type="Button" parent="."] | 
				
			||||||
 | 
					layout_mode = 1 | 
				
			||||||
 | 
					anchors_preset = 1 | 
				
			||||||
 | 
					anchor_left = 1.0 | 
				
			||||||
 | 
					anchor_right = 1.0 | 
				
			||||||
 | 
					offset_left = -72.0 | 
				
			||||||
 | 
					offset_bottom = 31.0 | 
				
			||||||
 | 
					grow_horizontal = 0 | 
				
			||||||
 | 
					text = "重新载入" | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Button3" type="Button" parent="."] | 
				
			||||||
 | 
					layout_mode = 1 | 
				
			||||||
 | 
					anchors_preset = 1 | 
				
			||||||
 | 
					anchor_left = 1.0 | 
				
			||||||
 | 
					anchor_right = 1.0 | 
				
			||||||
 | 
					offset_left = -71.0 | 
				
			||||||
 | 
					offset_top = 36.0 | 
				
			||||||
 | 
					offset_right = 1.0 | 
				
			||||||
 | 
					offset_bottom = 67.0 | 
				
			||||||
 | 
					grow_horizontal = 0 | 
				
			||||||
 | 
					text = "重新载入" | 
				
			||||||
@ -0,0 +1,7 @@ | 
				
			|||||||
 | 
					[plugin] | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					name="ItemImporter" | 
				
			||||||
 | 
					description="a csv ItemImporter" | 
				
			||||||
 | 
					author="jkpete" | 
				
			||||||
 | 
					version="" | 
				
			||||||
 | 
					script="ToolItemImporter.cs" | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue