├── .gitignore
├── LICENSE
├── Menu.tscn
├── README.md
├── addons
└── Trail
│ ├── LICENSE
│ ├── plugin.cfg
│ ├── plugin.gd
│ ├── trail2d_icon.svg
│ ├── trail2d_icon.svg.import
│ ├── trail3d_icon.svg
│ ├── trail3d_icon.svg.import
│ ├── trail_2d.gd
│ ├── trail_3d.gd
│ └── trail_3d_v1.gd
├── assets
├── Alpha_Body_MAT.material
├── Alpha_Joints_MAT.material
├── LICENSE.Noto.txt
├── NotoSansUI_Regular.ttf
├── character.dae
├── character.dae.import
├── checker.png
├── checker.png.import
├── checker_normal.png
├── checker_normal.png.import
├── checker_roughness.png
├── checker_roughness.png.import
├── flow_trail.png
├── flow_trail.png.import
├── glow.png
├── glow.png.import
├── path_1.png
├── path_1.png.import
├── projectile_shape_1.mtl
├── projectile_shape_1.obj
├── projectile_shape_1.obj.import
├── swoosh.png
├── swoosh.png.import
├── sword.mtl
├── sword.obj
├── sword.obj.import
├── tex_1.png
├── tex_1.png.import
├── trail_1.png
├── trail_1.png.import
├── trail_1_a.png
├── trail_1_a.png.import
├── trail_2.png
└── trail_2.png.import
├── character.png
├── character.png.import
├── character.tscn
├── default_environment.tres
├── demo_3d_1.tscn
├── demo_3d_2.tscn
├── godot_trail.png
├── godot_trail.png.import
├── icon.png
├── icon.png.import
├── level.tscn
├── map.png
├── map.png.import
├── navigation.gd
├── navmesh.gd
├── navmesh.tscn
├── parameters.png
├── parameters.png.import
├── particle.png
├── particle.png.import
├── project.godot
├── projectile_1.tscn
└── sword.tscn
/.gitignore:
--------------------------------------------------------------------------------
1 | # Godot-specific ignores
2 | .import/
3 | export.cfg
4 | export_presets.cfg
5 |
6 | # Imported translations (automatically generated from CSV files)
7 | *.translation
8 |
9 | # Mono-specific ignores
10 | .mono/
11 | data_*/
12 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Oussama
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/Menu.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=7 format=2]
2 |
3 | [ext_resource path="res://assets/NotoSansUI_Regular.ttf" type="DynamicFontData" id=1]
4 | [ext_resource path="res://addons/Trail/trail3d_icon.svg" type="Texture" id=2]
5 | [ext_resource path="res://addons/Trail/trail2d_icon.svg" type="Texture" id=3]
6 |
7 | [sub_resource type="GDScript" id=1]
8 | script/source = "extends Control
9 |
10 |
11 |
12 |
13 | func _on_btn1_button_down():
14 | get_tree().change_scene(\"res://level.tscn\")
15 |
16 |
17 | func _on_btn2_button_down():
18 | get_tree().change_scene(\"res://navmesh.tscn\")
19 |
20 |
21 | func _on_btn3_button_down():
22 | get_tree().change_scene(\"res://demo_3d_1.tscn\")
23 |
24 |
25 | func _on_btn4_button_down():
26 | get_tree().change_scene(\"res://demo_3d_2.tscn\")
27 |
28 |
29 | func _on_btn_quit_button_down():
30 | get_tree().quit()
31 |
32 |
33 | "
34 |
35 | [sub_resource type="DynamicFont" id=2]
36 | size = 64
37 | use_mipmaps = true
38 | use_filter = true
39 | font_data = ExtResource( 1 )
40 |
41 | [sub_resource type="DynamicFont" id=3]
42 | size = 18
43 | use_mipmaps = true
44 | use_filter = true
45 | font_data = ExtResource( 1 )
46 |
47 | [node name="Control" type="Control"]
48 | anchor_right = 1.0
49 | anchor_bottom = 1.0
50 | script = SubResource( 1 )
51 | __meta__ = {
52 | "_edit_use_anchors_": false
53 | }
54 |
55 | [node name="panel" type="Panel" parent="."]
56 | anchor_right = 1.0
57 | anchor_bottom = 1.0
58 | __meta__ = {
59 | "_edit_use_anchors_": false
60 | }
61 |
62 | [node name="title" type="Label" parent="panel"]
63 | anchor_right = 1.0
64 | margin_left = 20.0
65 | margin_top = 20.0
66 | margin_right = -20.0
67 | margin_bottom = 14.0
68 | custom_fonts/font = SubResource( 2 )
69 | text = "Trail System Demo"
70 | align = 1
71 | valign = 1
72 |
73 | [node name="vbc" type="VBoxContainer" parent="panel"]
74 | anchor_top = 1.0
75 | anchor_right = 1.0
76 | anchor_bottom = 1.0
77 | margin_left = 220.0
78 | margin_top = -347.0
79 | margin_right = -220.0
80 | margin_bottom = -50.0
81 | custom_constants/separation = 10
82 | __meta__ = {
83 | "_edit_use_anchors_": false
84 | }
85 |
86 | [node name="btn1" type="Button" parent="panel/vbc"]
87 | margin_right = 584.0
88 | margin_bottom = 32.0
89 | custom_fonts/font = SubResource( 3 )
90 | text = "[2D] Navigation Mesh"
91 | icon = ExtResource( 3 )
92 |
93 | [node name="btn2" type="Button" parent="panel/vbc"]
94 | margin_top = 42.0
95 | margin_right = 584.0
96 | margin_bottom = 74.0
97 | custom_fonts/font = SubResource( 3 )
98 | text = "[3D] Navigation Mesh"
99 | icon = ExtResource( 2 )
100 |
101 | [node name="btn3" type="Button" parent="panel/vbc"]
102 | margin_top = 84.0
103 | margin_right = 584.0
104 | margin_bottom = 116.0
105 | custom_fonts/font = SubResource( 3 )
106 | text = "[3D] Projectile trail"
107 | icon = ExtResource( 2 )
108 |
109 | [node name="btn4" type="Button" parent="panel/vbc"]
110 | margin_top = 126.0
111 | margin_right = 584.0
112 | margin_bottom = 158.0
113 | custom_fonts/font = SubResource( 3 )
114 | text = "[3D] Character Sword/Capoeira"
115 | icon = ExtResource( 2 )
116 |
117 | [node name="spacer" type="Control" parent="panel/vbc"]
118 | margin_top = 168.0
119 | margin_right = 584.0
120 | margin_bottom = 255.0
121 | size_flags_horizontal = 3
122 | size_flags_vertical = 3
123 |
124 | [node name="btn_quit" type="Button" parent="panel/vbc"]
125 | margin_top = 265.0
126 | margin_right = 584.0
127 | margin_bottom = 297.0
128 | custom_fonts/font = SubResource( 3 )
129 | text = "Quit"
130 | [connection signal="button_down" from="panel/vbc/btn1" to="." method="_on_btn1_button_down"]
131 | [connection signal="button_down" from="panel/vbc/btn2" to="." method="_on_btn2_button_down"]
132 | [connection signal="button_down" from="panel/vbc/btn3" to="." method="_on_btn3_button_down"]
133 | [connection signal="button_down" from="panel/vbc/btn4" to="." method="_on_btn4_button_down"]
134 | [connection signal="button_down" from="panel/vbc/btn_quit" to="." method="_on_btn_quit_button_down"]
135 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | # Godot Trail System
4 | Advanced 2D/3D Trail system.
5 |
6 | [](https://github.com/OBKF/Godot-Trail-System/issues) [](https://github.com/OBKF/Godot-Trail-System/network) [](https://github.com/OBKF/Godot-Trail-System/stargazers) [](https://github.com/OBKF/Godot-Trail-System/blob/master/LICENSE) [](https://twitter.com/intent/tweet?text=Wow:&url=https%3A%2F%2Fgithub.com%2FOBKF%2FGodot-Trail-System)
7 |
8 | 
9 |
10 | If you like this plugin and want to thank me with a small donation feel free to do this here:
11 |
12 | [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=KWUGZUUBASZY4)
13 |
14 | ## Description
15 | Godot Trail System is an advanced trail/ribbon plugin for the Godot Engine similar to Unity3D's system. The plugin offers full features in 3D and basic 2D functionality (it will be updated later).
16 |
17 | ### Features
18 | - Variable width using Curve.
19 | - Variable color using Gradient.
20 | - Stretched and Tiled texture.
21 | - Align to the view so it gives volume effect.
22 | - Chaikin’s smoothing Algorithm [PDF](https://www.cs.unc.edu/~dm/UNC/COMP258/LECTURES/Chaikins-Algorithm.pdf).
23 | - Customizable via script.
24 | - Open-Source under MIT license.
25 |
26 | ### Editor Parameters (3D)
27 | - **Emit**: Whether the system process or not, it must be disabled when using script functions.
28 | - **Distance**: The distance between each point of the trail.
29 | - **Segments**: The number of points that make up the path.
30 | - **Lifetime**: Time in seconds before the point gets deleted.
31 | - **Base Width**: The width of the trail if the ___"Width Profile"___ is not set up.
32 | - **Tiled Texture**: Tile the UVs for the textures used in the material, it is calculated automatically if ___"Tilling"___ is set to.
33 | - **Tiling**: Tile the UVs for the textures used in the material by a fixed number of times.
34 | - **Width Profile**: Change the width of the trail according to the curve relative to the ___"Base Width"___.
35 | - **Color Gradient**: Change the color of the trail according to the gradient, ___Material>Vertex Color>Use As Albedo___ must be enabled for this function to work.
36 | - **Smooth Iterations**: Choose how much smoothing you want for the trail (3 levels), This is helpful if ___"Distance"___ is set to a large number.
37 | - **Smoothing Ratio**: Smoothing factor for Chaikin's smoothing algorithm.
38 | - **Alignment**: The method used to calculate the width normal of the trail:
39 | - View (default): Makes the trail look 3D by aligning the geometry to face the camera.
40 | - Normal: The points width orientation follow the parent object's orientation when the point was emitted (Sword Slash).
41 | - Object: Makes all points of the trail width orientation follow the parent object's orientation (Tron like trail).
42 | - **Axe**: The axes used to calculate the Alignment (doesn't work for ___"View"___ since it follows the camera).
43 | - **Show Wireframe**: Show a wireframe overlay over the trail for debug purposes.
44 | - **Wireframe Color**: The color of the wireframe.
45 | - **Wire Line Width**: The width of the wireframe (currently not working).
46 |
47 | \*Similar parameters for 2D.\*
48 |
49 | ### Using Script
50 | You can use the trail from script to create Vehicle skid marks, Path (see 3D Navigation Mesh demo) and many more.
51 |
52 | Example from [3D Navigation Mesh demo](navmesh.gd)
53 | ```gdscript
54 | extends Navigation
55 |
56 | def draw_path():
57 | var src_points = get_simple_path(begin, end, true)
58 | get_node("trail").clear_points()
59 | for i in range(src_points.size()):
60 | var normal = get_closest_point_normal(src_points[i]).normalized()
61 | var offset = normal*0.1
62 | var _transform = Transform(Basis(normal), src_points[i]+offset)
63 | get_node("trail").add_point(_transform)
64 | get_node("trail").smooth()
65 | get_node("trail").render(true)
66 | ```
67 |
68 | ### Showcase (Youtube)
69 | [](https://youtu.be/cqkCt9XIBA0)
70 |
71 | ### Contact
72 | - [Twitter](https://twitter.com/OBKF_/)
73 |
74 |
--------------------------------------------------------------------------------
/addons/Trail/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Oussama
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/addons/Trail/plugin.cfg:
--------------------------------------------------------------------------------
1 | [plugin]
2 |
3 | name="Trail System"
4 | description="Advanced 2D/3D Trail system."
5 | author="Oussama BOUKHELF"
6 | version="0.1"
7 | script="plugin.gd"
8 |
--------------------------------------------------------------------------------
/addons/Trail/plugin.gd:
--------------------------------------------------------------------------------
1 | tool
2 | extends EditorPlugin
3 |
4 | func _enter_tree():
5 | add_custom_type("Trail3D","ImmediateGeometry",preload("res://addons/Trail/trail_3d.gd"),preload("res://addons/Trail/trail3d_icon.svg"))
6 | add_custom_type("Trail2D","Line2D",preload("res://addons/Trail/trail_2d.gd"),preload("res://addons/Trail/trail2d_icon.svg"))
7 | pass
8 |
9 | func _exit_tree():
10 | remove_custom_type("Trail3D")
11 | remove_custom_type("Trail2D")
12 | pass
13 |
--------------------------------------------------------------------------------
/addons/Trail/trail2d_icon.svg:
--------------------------------------------------------------------------------
1 |
2 |
36 |
--------------------------------------------------------------------------------
/addons/Trail/trail2d_icon.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path="res://.import/trail2d_icon.svg-9e9ef099e5828833aa533f66fd1b657e.stex"
6 | metadata={
7 | "vram_texture": false
8 | }
9 |
10 | [deps]
11 |
12 | source_file="res://addons/Trail/trail2d_icon.svg"
13 | dest_files=[ "res://.import/trail2d_icon.svg-9e9ef099e5828833aa533f66fd1b657e.stex" ]
14 |
15 | [params]
16 |
17 | compress/mode=0
18 | compress/lossy_quality=0.7
19 | compress/hdr_mode=0
20 | compress/bptc_ldr=0
21 | compress/normal_map=0
22 | flags/repeat=0
23 | flags/filter=true
24 | flags/mipmaps=false
25 | flags/anisotropic=false
26 | flags/srgb=2
27 | process/fix_alpha_border=true
28 | process/premult_alpha=false
29 | process/HDR_as_SRGB=false
30 | process/invert_color=false
31 | stream=false
32 | size_limit=0
33 | detect_3d=true
34 | svg/scale=1.0
35 |
--------------------------------------------------------------------------------
/addons/Trail/trail3d_icon.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
84 |
--------------------------------------------------------------------------------
/addons/Trail/trail3d_icon.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path="res://.import/trail3d_icon.svg-60360d95e003e9f2e157d4d86537e5fd.stex"
6 | metadata={
7 | "vram_texture": false
8 | }
9 |
10 | [deps]
11 |
12 | source_file="res://addons/Trail/trail3d_icon.svg"
13 | dest_files=[ "res://.import/trail3d_icon.svg-60360d95e003e9f2e157d4d86537e5fd.stex" ]
14 |
15 | [params]
16 |
17 | compress/mode=0
18 | compress/lossy_quality=0.7
19 | compress/hdr_mode=0
20 | compress/bptc_ldr=0
21 | compress/normal_map=0
22 | flags/repeat=0
23 | flags/filter=true
24 | flags/mipmaps=false
25 | flags/anisotropic=false
26 | flags/srgb=2
27 | process/fix_alpha_border=true
28 | process/premult_alpha=false
29 | process/HDR_as_SRGB=false
30 | process/invert_color=false
31 | stream=false
32 | size_limit=0
33 | detect_3d=true
34 | svg/scale=1.0
35 |
--------------------------------------------------------------------------------
/addons/Trail/trail_2d.gd:
--------------------------------------------------------------------------------
1 | """
2 | Author: Oussama BOUKHELF
3 | License: MIT
4 | Version: 0.1
5 | Email: o.boukhelf@gmail.com
6 | Description: Advanced 2D/3D Trail system.
7 | Note: This is a simple implementation, I will update it later on.
8 | """
9 |
10 | extends Line2D
11 |
12 |
13 | export(bool) var emit := true
14 | export(float) var lifetime := 0.5
15 | export(float) var distance := 20.0
16 | export(int) var segments := 20
17 | var target
18 |
19 | var trail_points := []
20 | var offset := Vector2()
21 |
22 | class Point:
23 | var position := Vector2()
24 | var age := 0.0
25 |
26 | func _init(position :Vector2, age :float) -> void:
27 | self.position = position
28 | self.age = age
29 |
30 | func update(delta :float, points :Array) -> void:
31 | self.age -= delta
32 | if self.age <= 0:
33 | points.erase(self)
34 |
35 |
36 | func _ready():
37 | offset = position
38 | show_behind_parent = true
39 | target = get_parent()
40 | clear_points()
41 | set_as_toplevel(true)
42 | position = Vector2()
43 |
44 | func _emit():
45 | var _rotated_offset :Vector2 = offset.rotated(target.rotation)
46 | var _position :Vector2 = target.global_transform.origin + _rotated_offset
47 | var point = Point.new(_position, lifetime)
48 |
49 | if trail_points.size() < 1:
50 | trail_points.push_back(point)
51 | return
52 |
53 | if trail_points[-1].position.distance_squared_to(_position) > distance*distance:
54 | trail_points.push_back(point)
55 |
56 | update_points()
57 |
58 | func update_points() -> void:
59 | var delta = get_process_delta_time()
60 |
61 | if trail_points.size() > segments:
62 | trail_points.invert()
63 | trail_points.resize(segments)
64 | trail_points.invert()
65 |
66 | clear_points()
67 | for point in trail_points:
68 | point.update(delta, trail_points)
69 |
70 | # if point:
71 | add_point(point.position)
72 |
73 |
74 | func _process(delta):
75 | if emit:
76 | _emit()
77 |
78 |
--------------------------------------------------------------------------------
/addons/Trail/trail_3d.gd:
--------------------------------------------------------------------------------
1 | """
2 | Author: Oussama BOUKHELF
3 | License: MIT
4 | Version: 0.1
5 | Email: o.boukhelf@gmail.com
6 | Description: Advanced 2D/3D Trail system.
7 | """
8 |
9 | extends ImmediateGeometry
10 |
11 |
12 | export(bool) var emit := true
13 | export(float) var distance := 0.1
14 | export(int, 0, 99999) var segments := 20
15 | export(float) var lifetime := 0.5
16 | export(float, 0, 99999) var base_width := 0.5
17 | export(bool) var tiled_texture := false
18 | export(int) var tiling := 0
19 | export(Curve) var width_profile
20 | export(Gradient) var color_gradient
21 | export(int, 0, 3) var smoothing_iterations := 0
22 | export(float, 0, 0.5) var smoothing_ratio := 0.25
23 | export(String, "View", "Normal", "Object") var alignment := "View"
24 | export(String, "X", "Y", "Z") var axe := "Y"
25 | export(bool) var show_wireframe := false
26 | export(Color) var wireframe_color := Color(1, 1, 1, 1)
27 | export(float, 0, 100, 0.1) var wire_line_width := 1.0
28 |
29 | var points := []
30 | var color := Color(1, 1, 1, 1)
31 | var always_update = false
32 |
33 | var _target :Spatial
34 | var _wire_obj :ImmediateGeometry = ImmediateGeometry.new()
35 | var _wire_mat :SpatialMaterial = SpatialMaterial.new()
36 | var _A: Point
37 | var _B: Point
38 | var _C: Point
39 | var _temp_segment := []
40 | var _points := []
41 |
42 |
43 | class Point:
44 | """
45 | Class for the 3D point that will be emmited when the object move.
46 | """
47 | var transform := Transform()
48 | var age := 0.0
49 |
50 | func _init(transform :Transform, age :float) -> void:
51 | self.transform = transform
52 | self.age = age
53 |
54 | func update(delta :float, points :Array) -> void:
55 | self.age -= delta
56 | if self.age <= 0:
57 | points.erase(self)
58 |
59 |
60 | func add_point(transform :Transform) -> void:
61 | """
62 | Add a point to the list of points.
63 | This function is called programmatically.
64 | """
65 | var point = Point.new(transform, lifetime)
66 | points.push_back(point)
67 |
68 |
69 | func clear_points() -> void:
70 | """
71 | Cleat points list.
72 | This function is called programmatically.
73 | """
74 | points.clear()
75 |
76 |
77 | func _prepare_geometry(point_prev :Point, point :Point, half_width :float, factor :float) -> Array:
78 | """
79 | Generate and transform the trail geometry based on the path points that
80 | the target object generated.
81 | """
82 | var normal := Vector3()
83 |
84 | if alignment == "View":
85 | if get_viewport().get_camera():
86 | var cam_pos = get_viewport().get_camera().get_global_transform().origin
87 | var path_direction :Vector3 = (point.transform.origin - point_prev.transform.origin).normalized()
88 | normal = (cam_pos - (point.transform.origin + point_prev.transform.origin)/2).cross(path_direction).normalized()
89 | else:
90 | print("There is no camera in the scene")
91 |
92 | elif alignment == "Normal":
93 | if axe == "X":
94 | normal = point.transform.basis.x.normalized()
95 | elif axe == "Y":
96 | normal = point.transform.basis.y.normalized()
97 | else:
98 | normal = point.transform.basis.z.normalized()
99 |
100 | else:
101 | if axe == "X":
102 | normal = _target.global_transform.basis.x.normalized()
103 | elif axe == "Y":
104 | normal = _target.global_transform.basis.y.normalized()
105 | else:
106 | normal = _target.global_transform.basis.z.normalized()
107 |
108 | var width = half_width
109 | if width_profile:
110 | width = half_width * width_profile.interpolate(factor)
111 |
112 | var p1 = point.transform.origin-normal*width
113 | var p2 = point.transform.origin+normal*width
114 | return [p1, p2]
115 |
116 |
117 | func render(update := false) -> void:
118 | """
119 | Render the points.
120 | This function is called programmatically.
121 | """
122 | if update:
123 | always_update = update
124 | else:
125 | _render_geometry(points)
126 |
127 |
128 | func _render_realtime() -> void:
129 | """
130 | Render the points every frame when "emit" is set to True.
131 | """
132 | var render_points = _points+_temp_segment+[_C]
133 | _render_geometry(render_points)
134 |
135 |
136 | func _render_geometry(source: Array) -> void:
137 | """
138 | Base function for rendering the generated geometry to the screen.
139 | Renders the trail, and the wireframe if set in parameters.
140 | """
141 | var points_count = source.size()
142 | if points_count < 2:
143 | return
144 |
145 | # The following section is a hack to make orientation "view" work.
146 | # but it may cause an artifact at the end of the trail.
147 | # You can use transparency in the gradient to hide it for now.
148 | var _d :Vector3 = source[0].transform.origin - source[1].transform.origin
149 | var _t :Transform = source[0].transform
150 | _t.origin = _t.origin + _d
151 | var point = Point.new(_t, source[0].age)
152 | var to_be_rendered = [point]+source
153 | points_count += 1
154 |
155 | var half_width :float = base_width/2.0
156 | var wire_points = []
157 | var u := 0.0
158 |
159 | clear()
160 | begin(Mesh.PRIMITIVE_TRIANGLE_STRIP, null)
161 | for i in range(1, points_count):
162 | var factor :float = float(i)/(points_count-1)
163 |
164 | var _color = color
165 | if color_gradient:
166 | _color = color * color_gradient.interpolate(1.0-factor)
167 |
168 | var vertices = _prepare_geometry(to_be_rendered[i-1], to_be_rendered[i], half_width, 1.0-factor)
169 | if tiled_texture:
170 | if tiling > 0:
171 | factor *= tiling
172 | else:
173 | var travel = (to_be_rendered[i-1].transform.origin - to_be_rendered[i].transform.origin).length()
174 | u += travel/base_width
175 | factor = u
176 |
177 | set_color(_color)
178 | set_uv(Vector2(factor, 0))
179 | add_vertex(vertices[0])
180 | set_uv(Vector2(factor, 1))
181 | add_vertex(vertices[1])
182 |
183 | if show_wireframe:
184 | wire_points += vertices
185 | end()
186 |
187 | # For some reason I had to add a second Meshinstance as a child to make the
188 | # wireframe to render, normally you can just draw on top.
189 | if show_wireframe:
190 | _wire_mat.params_line_width = wire_line_width
191 | _wire_obj.clear()
192 | _wire_obj.begin(Mesh.PRIMITIVE_LINE_STRIP, null)
193 | _wire_obj.set_color(wireframe_color)
194 | _wire_obj.set_uv(Vector2(0.5, 0.5))
195 | for i in range(1, wire_points.size()-2, 2):
196 | ## order: i-1, i+1, i, i+2
197 | _wire_obj.add_vertex(wire_points[i-1])
198 | _wire_obj.add_vertex(wire_points[i+1])
199 | _wire_obj.add_vertex(wire_points[i])
200 | _wire_obj.add_vertex(wire_points[i+2])
201 | _wire_obj.end()
202 |
203 |
204 | func _update_points() -> void:
205 | """
206 | Update ages of the points and remove extra ones.
207 | """
208 | var delta = get_process_delta_time()
209 |
210 | _A.update(delta, _points)
211 | _B.update(delta, _points)
212 | _C.update(delta, _points)
213 | for point in _points:
214 | point.update(delta, _points)
215 |
216 | var size_multiplier = [1, 2, 4, 6][smoothing_iterations]
217 | var max_points_count :int = segments * size_multiplier
218 | if _points.size() > max_points_count:
219 | _points.invert()
220 | _points.resize(max_points_count)
221 | _points.invert()
222 |
223 |
224 | func smooth() -> void:
225 | """
226 | Smooth the given path.
227 | This function is called programmatically.
228 | """
229 | if points.size() < 3:
230 | return
231 |
232 | var output := [points[0]]
233 | for i in range(1, points.size()-1):
234 | output += _chaikin(points[i-1], points[i], points[i+1])
235 |
236 | output.push_back(points[-1])
237 | points = output
238 |
239 |
240 | func _chaikin(A, B, C) -> Array:
241 | """
242 | Chaikin’s smoothing Algorithm
243 | https://www.cs.unc.edu/~dm/UNC/COMP258/LECTURES/Chaikins-Algorithm.pdf
244 |
245 | Ps: I could have avoided a lot of trouble automating this function using FOR loop,
246 | but I opted for a more optimized approach which maybe helpful when dealing with a
247 | large amount of objects.
248 | """
249 | if smoothing_iterations == 0:
250 | return [B]
251 |
252 | var out := []
253 | var x :float = smoothing_ratio
254 |
255 | # Pre-calculate some parameters to improve performance
256 | var xi :float = (1-x)
257 | var xpa :float = (x*x-2*x+1)
258 | var xpb :float = (-x*x+2*x)
259 | # transforms
260 | var A1_t :Transform = A.transform.interpolate_with(B.transform, xi)
261 | var B1_t :Transform = B.transform.interpolate_with(C.transform, x)
262 | # ages
263 | var A1_a :float = lerp(A.age, B.age, xi)
264 | var B1_a :float = lerp(B.age, C.age, x)
265 |
266 | if smoothing_iterations == 1:
267 | out = [Point.new(A1_t, A1_a), Point.new(B1_t, B1_a)]
268 |
269 | else:
270 | # transforms
271 | var A2_t :Transform = A.transform.interpolate_with(B.transform, xpa)
272 | var B2_t :Transform = B.transform.interpolate_with(C.transform, xpb)
273 | var A11_t :Transform = A1_t.interpolate_with(B1_t, x)
274 | var B11_t :Transform = A1_t.interpolate_with(B1_t, xi)
275 | # ages
276 | var A2_a :float = lerp(A.age, B.age, xpa)
277 | var B2_a :float = lerp(B.age, C.age, xpb)
278 | var A11_a :float = lerp(A1_a, B1_a, x)
279 | var B11_a :float = lerp(A1_a, B1_a, xi)
280 |
281 | if smoothing_iterations == 2:
282 | out += [Point.new(A2_t, A2_a), Point.new(A11_t, A11_a),
283 | Point.new(B11_t, B11_a), Point.new(B2_t, B2_a)]
284 | elif smoothing_iterations == 3:
285 | # transforms
286 | var A12_t :Transform = A1_t.interpolate_with(B1_t, xpb)
287 | var B12_t :Transform = A1_t.interpolate_with(B1_t, xpa)
288 | var A121_t :Transform = A11_t.interpolate_with(A2_t, x)
289 | var B121_t :Transform = B11_t.interpolate_with(B2_t, x)
290 | # ages
291 | var A12_a :float = lerp(A1_a, B1_a, xpb)
292 | var B12_a :float = lerp(A1_a, B1_a, xpa)
293 | var A121_a :float = lerp(A11_a, A2_a, x)
294 | var B121_a :float = lerp(B11_a, B2_a, x)
295 | out += [Point.new(A2_t, A2_a), Point.new(A121_t, A121_a), Point.new(A12_t, A12_a),
296 | Point.new(B12_t, B12_a), Point.new(B121_t, B121_a), Point.new(B2_t, B2_a)]
297 |
298 | return out
299 |
300 |
301 | func _emit(delta) -> void:
302 | """
303 | Adding points to be rendered, called every frame when "emit" is set to True.
304 | """
305 | var _transform :Transform = _target.global_transform
306 |
307 | var point = Point.new(_transform, lifetime)
308 | if not _A:
309 | _A = point
310 | return
311 | elif not _B:
312 | _A.update(delta, _points)
313 | _B = point
314 | return
315 |
316 | if _B.transform.origin.distance_squared_to(_transform.origin) >= distance*distance:
317 | _A = _B
318 | _B = point
319 | _points += _temp_segment
320 |
321 | _C = point
322 |
323 | _update_points()
324 | _temp_segment = _chaikin(_A, _B, _C)
325 | _render_realtime()
326 |
327 |
328 | func _ready() -> void:
329 | _target = get_parent()
330 |
331 | _wire_mat.flags_unshaded = true
332 | _wire_mat.flags_use_point_size = true
333 | _wire_mat.vertex_color_use_as_albedo = true
334 | _wire_mat.params_line_width = 10.0
335 | _wire_obj.material_override = _wire_mat
336 | add_child(_wire_obj)
337 |
338 | set_as_toplevel(true)
339 | global_transform = Transform()
340 |
341 |
342 | func _process(delta) -> void:
343 | if emit:
344 | _emit(delta)
345 |
346 | elif always_update:
347 | # This is needed for alignment == view, so it can be updated every frame.
348 | _render_geometry(points)
349 |
350 |
--------------------------------------------------------------------------------
/addons/Trail/trail_3d_v1.gd:
--------------------------------------------------------------------------------
1 | #tool
2 | extends ImmediateGeometry
3 |
4 | export(bool) var emit = true
5 | export(float) var max_distance = 0.5
6 | export(int, 0, 99999) var segments = 20
7 | export(float) var life_time = 5.0
8 | export(float, 0, 99999) var base_width = 1.0
9 | export(bool) var tiled_texture = false
10 | export(int) var tiling = 0
11 | export(Curve) var width_profile
12 | export(Curve) var width_over_time
13 | export(Gradient) var color_gradient
14 | export(float, 0, 0.5) var smoothing_ratio = 0.2
15 | export(int, 4) var smoothing_iterations = 1
16 | export(String, "View", "Motion", "Object") var alignment = "View"
17 | export(String, "Idle", "Fixed") var prcess_mode = "Idle"
18 | export(bool) var show_wireframe = false
19 | export(Color) var wireframe_color = Color(1, 1, 1)
20 |
21 | var target
22 | var path_points = []
23 |
24 |
25 | class Point:
26 | var position = Vector3()
27 | var normal = Vector3()
28 | var age = 0
29 |
30 | func _init(position, normal, age):
31 | self.position = position
32 | self.normal = normal
33 | self.age = age
34 |
35 | func update(delta):
36 | age -= delta
37 |
38 | func _ready():
39 | set_as_toplevel(true)
40 | target = get_parent()
41 | global_transform = Transform()
42 |
43 | func _process(delta):
44 | if emit:
45 | add_point()
46 | update_points()
47 | render()
48 |
49 |
50 | func add_point():
51 | if target:
52 | var pos = target.global_transform.origin
53 | var normal = target.global_transform.basis.y.normalized()
54 |
55 | if emit:
56 | var points_count = path_points.size()
57 |
58 | if points_count < 1:
59 | var point = Point.new(pos, normal, life_time)
60 | path_points.append(point)
61 | else:
62 | var distance = path_points[points_count-2].position.distance_squared_to(pos)
63 | if distance > (max_distance * max_distance):
64 | var point = Point.new(pos, normal, life_time)
65 | path_points.append(point)
66 |
67 | if points_count > 1:
68 | path_points[points_count-1].position = pos
69 |
70 |
71 | func update_points():
72 | var delta = 0
73 | if prcess_mode == "Fixed":
74 | delta = get_physics_process_delta_time()
75 | else:
76 | delta = get_process_delta_time()
77 |
78 | var points_count = path_points.size()
79 | if points_count > segments:
80 | path_points.pop_front()
81 |
82 | for i in range(path_points.size()-1):
83 | path_points[i].update(delta)
84 | if path_points[i].age <= 0:
85 | path_points.remove(i)
86 |
87 |
88 | func render():
89 | if path_points.size() < 2:
90 | clear()
91 | return
92 |
93 | # path_points = [Vector3(-5, 2, 0),Vector3(-5, 2, 0),Vector3(5, 2, 0)]
94 | var to_be_rendered: Array = []
95 | for point in path_points:
96 | to_be_rendered.append(point.position)
97 | to_be_rendered = chaikin(to_be_rendered, smoothing_iterations)
98 |
99 | var points_to_render: int = to_be_rendered.size()
100 | # var tiling_factor: float = segments*max_distance/base_width if tiled_texture else 0
101 | var step: float = 1.0/(points_to_render-1)
102 | var factor: float = 0
103 | var wire_points: Array = []
104 | var _u = 0
105 |
106 | clear()
107 | begin(Mesh.PRIMITIVE_TRIANGLE_STRIP, null)
108 |
109 | for i in range(1, to_be_rendered.size()):
110 | var mapped_index = floor(float(i) / points_to_render * path_points.size())
111 | var normal = Vector3()
112 | if alignment == "Motion":
113 | normal = path_points[mapped_index].normal
114 |
115 | elif alignment == "View":
116 | var path_direction = (to_be_rendered[i] - to_be_rendered[i-1]).normalized()
117 | var cam_pos = get_viewport().get_camera().get_global_transform().origin
118 | normal = (cam_pos - (to_be_rendered[i] + to_be_rendered[i-1])/2).cross(path_direction).normalized()
119 |
120 | else:
121 | normal = target.get_global_transform().basis.y.normalized()
122 |
123 | var rr = 1-factor
124 | var width = base_width
125 | if width_profile:
126 | width = base_width * width_profile.interpolate(rr)
127 | if width_over_time:
128 | var fact = 1 - path_points[mapped_index].age/life_time
129 | width = width * width_over_time.interpolate(fact)
130 |
131 | var color = Color(1, 1, 1)
132 | if color_gradient:
133 | color = color_gradient.interpolate(rr)
134 |
135 | # --------------------------RENDERING----------------------------
136 | var p1 = to_be_rendered[i] - normal*width/2
137 | var p2 = to_be_rendered[i] + normal*width/2
138 | var u: float = factor
139 |
140 | if tiled_texture:
141 | if tiling:
142 | u *= tiling
143 | else:
144 | _u += (to_be_rendered[i] - to_be_rendered[i-1]).length()/base_width
145 | u = _u
146 |
147 | set_color(color)
148 | set_uv(Vector2(u, 0))
149 | add_vertex(p1)
150 | set_uv(Vector2(u, 1))
151 | add_vertex(p2)
152 | factor += step
153 |
154 | wire_points += [p1, p2]
155 | end()
156 |
157 | if show_wireframe:
158 | begin(Mesh.PRIMITIVE_LINE_STRIP, null)
159 | set_color(wireframe_color)
160 | for i in range(1, wire_points.size()-2, 2):
161 | ## i-1, i+1, i, i+2
162 | add_vertex(wire_points[i-1])
163 | add_vertex(wire_points[i+1])
164 | add_vertex(wire_points[i])
165 | add_vertex(wire_points[i+2])
166 | end()
167 |
168 |
169 | func chaikin(points, iterations):
170 | """ Chaikin’s Algorithms for curves """
171 | if points.size() > 1:
172 | if (iterations == 0):
173 | return points
174 |
175 | var result = [points[0]]
176 | for i in range(0, points.size()-1):
177 | result += chaikin_cut(points[i], points[i+1])
178 | result += [points[points.size()-1]]
179 |
180 | return chaikin(result, iterations-1)
181 | return points
182 |
183 | func chaikin_cut(a, b):
184 | """ Cutting one segment """
185 | var ratio = clamp(smoothing_ratio, 0, 1)
186 | if (ratio > 0.5): ratio = 1 - ratio;
187 |
188 | # Find point at a given ratio going from A to B
189 | var p1 = a.linear_interpolate(b, ratio)
190 | # Find point at a given ratio going from B to A
191 | var p2 = b.linear_interpolate(a, ratio)
192 |
193 | return [p1, p2]
194 |
195 |
--------------------------------------------------------------------------------
/assets/Alpha_Body_MAT.material:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OBKF/Godot-Trail-System/8827d6b5842b2dbc448461d75bc8cc54a3b654b1/assets/Alpha_Body_MAT.material
--------------------------------------------------------------------------------
/assets/Alpha_Joints_MAT.material:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OBKF/Godot-Trail-System/8827d6b5842b2dbc448461d75bc8cc54a3b654b1/assets/Alpha_Joints_MAT.material
--------------------------------------------------------------------------------
/assets/LICENSE.Noto.txt:
--------------------------------------------------------------------------------
1 | This Font Software is licensed under the SIL Open Font License,
2 | Version 1.1.
3 |
4 | This license is copied below, and is also available with a FAQ at:
5 | http://scripts.sil.org/OFL
6 |
7 | -----------------------------------------------------------
8 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
9 | -----------------------------------------------------------
10 |
11 | PREAMBLE
12 | The goals of the Open Font License (OFL) are to stimulate worldwide
13 | development of collaborative font projects, to support the font
14 | creation efforts of academic and linguistic communities, and to
15 | provide a free and open framework in which fonts may be shared and
16 | improved in partnership with others.
17 |
18 | The OFL allows the licensed fonts to be used, studied, modified and
19 | redistributed freely as long as they are not sold by themselves. The
20 | fonts, including any derivative works, can be bundled, embedded,
21 | redistributed and/or sold with any software provided that any reserved
22 | names are not used by derivative works. The fonts and derivatives,
23 | however, cannot be released under any other type of license. The
24 | requirement for fonts to remain under this license does not apply to
25 | any document created using the fonts or their derivatives.
26 |
27 | DEFINITIONS
28 | "Font Software" refers to the set of files released by the Copyright
29 | Holder(s) under this license and clearly marked as such. This may
30 | include source files, build scripts and documentation.
31 |
32 | "Reserved Font Name" refers to any names specified as such after the
33 | copyright statement(s).
34 |
35 | "Original Version" refers to the collection of Font Software
36 | components as distributed by the Copyright Holder(s).
37 |
38 | "Modified Version" refers to any derivative made by adding to,
39 | deleting, or substituting -- in part or in whole -- any of the
40 | components of the Original Version, by changing formats or by porting
41 | the Font Software to a new environment.
42 |
43 | "Author" refers to any designer, engineer, programmer, technical
44 | writer or other person who contributed to the Font Software.
45 |
46 | PERMISSION & CONDITIONS
47 | Permission is hereby granted, free of charge, to any person obtaining
48 | a copy of the Font Software, to use, study, copy, merge, embed,
49 | modify, redistribute, and sell modified and unmodified copies of the
50 | Font Software, subject to the following conditions:
51 |
52 | 1) Neither the Font Software nor any of its individual components, in
53 | Original or Modified Versions, may be sold by itself.
54 |
55 | 2) Original or Modified Versions of the Font Software may be bundled,
56 | redistributed and/or sold with any software, provided that each copy
57 | contains the above copyright notice and this license. These can be
58 | included either as stand-alone text files, human-readable headers or
59 | in the appropriate machine-readable metadata fields within text or
60 | binary files as long as those fields can be easily viewed by the user.
61 |
62 | 3) No Modified Version of the Font Software may use the Reserved Font
63 | Name(s) unless explicit written permission is granted by the
64 | corresponding Copyright Holder. This restriction only applies to the
65 | primary font name as presented to the users.
66 |
67 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
68 | Software shall not be used to promote, endorse or advertise any
69 | Modified Version, except to acknowledge the contribution(s) of the
70 | Copyright Holder(s) and the Author(s) or with their explicit written
71 | permission.
72 |
73 | 5) The Font Software, modified or unmodified, in part or in whole,
74 | must be distributed entirely under this license, and must not be
75 | distributed under any other license. The requirement for fonts to
76 | remain under this license does not apply to any document created using
77 | the Font Software.
78 |
79 | TERMINATION
80 | This license becomes null and void if any of the above conditions are
81 | not met.
82 |
83 | DISCLAIMER
84 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
85 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
86 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
87 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
88 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
89 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
90 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
91 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
92 | OTHER DEALINGS IN THE FONT SOFTWARE.
93 |
--------------------------------------------------------------------------------
/assets/NotoSansUI_Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OBKF/Godot-Trail-System/8827d6b5842b2dbc448461d75bc8cc54a3b654b1/assets/NotoSansUI_Regular.ttf
--------------------------------------------------------------------------------
/assets/character.dae.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="scene"
4 | type="PackedScene"
5 | path="res://.import/character.dae-d0811ca915fae73b20c90e1040b6e2c7.scn"
6 |
7 | [deps]
8 |
9 | source_file="res://assets/character.dae"
10 | dest_files=[ "res://.import/character.dae-d0811ca915fae73b20c90e1040b6e2c7.scn" ]
11 |
12 | [params]
13 |
14 | nodes/root_type="Spatial"
15 | nodes/root_name="Scene Root"
16 | nodes/root_scale=1.0
17 | nodes/custom_script=""
18 | nodes/storage=0
19 | materials/location=1
20 | materials/storage=1
21 | materials/keep_on_reimport=true
22 | meshes/compress=true
23 | meshes/ensure_tangents=true
24 | meshes/storage=0
25 | meshes/light_baking=0
26 | meshes/lightmap_texel_size=0.1
27 | external_files/store_in_subdir=false
28 | animation/import=true
29 | animation/fps=30.0
30 | animation/filter_script=""
31 | animation/storage=false
32 | animation/keep_custom_tracks=false
33 | animation/optimizer/enabled=true
34 | animation/optimizer/max_linear_error=0.05
35 | animation/optimizer/max_angular_error=0.01
36 | animation/optimizer/max_angle=22
37 | animation/optimizer/remove_unused_tracks=true
38 | animation/clips/amount=0
39 | animation/clip_1/name=""
40 | animation/clip_1/start_frame=0
41 | animation/clip_1/end_frame=0
42 | animation/clip_1/loops=false
43 | animation/clip_2/name=""
44 | animation/clip_2/start_frame=0
45 | animation/clip_2/end_frame=0
46 | animation/clip_2/loops=false
47 | animation/clip_3/name=""
48 | animation/clip_3/start_frame=0
49 | animation/clip_3/end_frame=0
50 | animation/clip_3/loops=false
51 | animation/clip_4/name=""
52 | animation/clip_4/start_frame=0
53 | animation/clip_4/end_frame=0
54 | animation/clip_4/loops=false
55 | animation/clip_5/name=""
56 | animation/clip_5/start_frame=0
57 | animation/clip_5/end_frame=0
58 | animation/clip_5/loops=false
59 | animation/clip_6/name=""
60 | animation/clip_6/start_frame=0
61 | animation/clip_6/end_frame=0
62 | animation/clip_6/loops=false
63 | animation/clip_7/name=""
64 | animation/clip_7/start_frame=0
65 | animation/clip_7/end_frame=0
66 | animation/clip_7/loops=false
67 | animation/clip_8/name=""
68 | animation/clip_8/start_frame=0
69 | animation/clip_8/end_frame=0
70 | animation/clip_8/loops=false
71 | animation/clip_9/name=""
72 | animation/clip_9/start_frame=0
73 | animation/clip_9/end_frame=0
74 | animation/clip_9/loops=false
75 | animation/clip_10/name=""
76 | animation/clip_10/start_frame=0
77 | animation/clip_10/end_frame=0
78 | animation/clip_10/loops=false
79 | animation/clip_11/name=""
80 | animation/clip_11/start_frame=0
81 | animation/clip_11/end_frame=0
82 | animation/clip_11/loops=false
83 | animation/clip_12/name=""
84 | animation/clip_12/start_frame=0
85 | animation/clip_12/end_frame=0
86 | animation/clip_12/loops=false
87 | animation/clip_13/name=""
88 | animation/clip_13/start_frame=0
89 | animation/clip_13/end_frame=0
90 | animation/clip_13/loops=false
91 | animation/clip_14/name=""
92 | animation/clip_14/start_frame=0
93 | animation/clip_14/end_frame=0
94 | animation/clip_14/loops=false
95 | animation/clip_15/name=""
96 | animation/clip_15/start_frame=0
97 | animation/clip_15/end_frame=0
98 | animation/clip_15/loops=false
99 | animation/clip_16/name=""
100 | animation/clip_16/start_frame=0
101 | animation/clip_16/end_frame=0
102 | animation/clip_16/loops=false
103 | animation/clip_17/name=""
104 | animation/clip_17/start_frame=0
105 | animation/clip_17/end_frame=0
106 | animation/clip_17/loops=false
107 | animation/clip_18/name=""
108 | animation/clip_18/start_frame=0
109 | animation/clip_18/end_frame=0
110 | animation/clip_18/loops=false
111 | animation/clip_19/name=""
112 | animation/clip_19/start_frame=0
113 | animation/clip_19/end_frame=0
114 | animation/clip_19/loops=false
115 | animation/clip_20/name=""
116 | animation/clip_20/start_frame=0
117 | animation/clip_20/end_frame=0
118 | animation/clip_20/loops=false
119 | animation/clip_21/name=""
120 | animation/clip_21/start_frame=0
121 | animation/clip_21/end_frame=0
122 | animation/clip_21/loops=false
123 | animation/clip_22/name=""
124 | animation/clip_22/start_frame=0
125 | animation/clip_22/end_frame=0
126 | animation/clip_22/loops=false
127 | animation/clip_23/name=""
128 | animation/clip_23/start_frame=0
129 | animation/clip_23/end_frame=0
130 | animation/clip_23/loops=false
131 | animation/clip_24/name=""
132 | animation/clip_24/start_frame=0
133 | animation/clip_24/end_frame=0
134 | animation/clip_24/loops=false
135 | animation/clip_25/name=""
136 | animation/clip_25/start_frame=0
137 | animation/clip_25/end_frame=0
138 | animation/clip_25/loops=false
139 | animation/clip_26/name=""
140 | animation/clip_26/start_frame=0
141 | animation/clip_26/end_frame=0
142 | animation/clip_26/loops=false
143 | animation/clip_27/name=""
144 | animation/clip_27/start_frame=0
145 | animation/clip_27/end_frame=0
146 | animation/clip_27/loops=false
147 | animation/clip_28/name=""
148 | animation/clip_28/start_frame=0
149 | animation/clip_28/end_frame=0
150 | animation/clip_28/loops=false
151 | animation/clip_29/name=""
152 | animation/clip_29/start_frame=0
153 | animation/clip_29/end_frame=0
154 | animation/clip_29/loops=false
155 | animation/clip_30/name=""
156 | animation/clip_30/start_frame=0
157 | animation/clip_30/end_frame=0
158 | animation/clip_30/loops=false
159 | animation/clip_31/name=""
160 | animation/clip_31/start_frame=0
161 | animation/clip_31/end_frame=0
162 | animation/clip_31/loops=false
163 | animation/clip_32/name=""
164 | animation/clip_32/start_frame=0
165 | animation/clip_32/end_frame=0
166 | animation/clip_32/loops=false
167 | animation/clip_33/name=""
168 | animation/clip_33/start_frame=0
169 | animation/clip_33/end_frame=0
170 | animation/clip_33/loops=false
171 | animation/clip_34/name=""
172 | animation/clip_34/start_frame=0
173 | animation/clip_34/end_frame=0
174 | animation/clip_34/loops=false
175 | animation/clip_35/name=""
176 | animation/clip_35/start_frame=0
177 | animation/clip_35/end_frame=0
178 | animation/clip_35/loops=false
179 | animation/clip_36/name=""
180 | animation/clip_36/start_frame=0
181 | animation/clip_36/end_frame=0
182 | animation/clip_36/loops=false
183 | animation/clip_37/name=""
184 | animation/clip_37/start_frame=0
185 | animation/clip_37/end_frame=0
186 | animation/clip_37/loops=false
187 | animation/clip_38/name=""
188 | animation/clip_38/start_frame=0
189 | animation/clip_38/end_frame=0
190 | animation/clip_38/loops=false
191 | animation/clip_39/name=""
192 | animation/clip_39/start_frame=0
193 | animation/clip_39/end_frame=0
194 | animation/clip_39/loops=false
195 | animation/clip_40/name=""
196 | animation/clip_40/start_frame=0
197 | animation/clip_40/end_frame=0
198 | animation/clip_40/loops=false
199 | animation/clip_41/name=""
200 | animation/clip_41/start_frame=0
201 | animation/clip_41/end_frame=0
202 | animation/clip_41/loops=false
203 | animation/clip_42/name=""
204 | animation/clip_42/start_frame=0
205 | animation/clip_42/end_frame=0
206 | animation/clip_42/loops=false
207 | animation/clip_43/name=""
208 | animation/clip_43/start_frame=0
209 | animation/clip_43/end_frame=0
210 | animation/clip_43/loops=false
211 | animation/clip_44/name=""
212 | animation/clip_44/start_frame=0
213 | animation/clip_44/end_frame=0
214 | animation/clip_44/loops=false
215 | animation/clip_45/name=""
216 | animation/clip_45/start_frame=0
217 | animation/clip_45/end_frame=0
218 | animation/clip_45/loops=false
219 | animation/clip_46/name=""
220 | animation/clip_46/start_frame=0
221 | animation/clip_46/end_frame=0
222 | animation/clip_46/loops=false
223 | animation/clip_47/name=""
224 | animation/clip_47/start_frame=0
225 | animation/clip_47/end_frame=0
226 | animation/clip_47/loops=false
227 | animation/clip_48/name=""
228 | animation/clip_48/start_frame=0
229 | animation/clip_48/end_frame=0
230 | animation/clip_48/loops=false
231 | animation/clip_49/name=""
232 | animation/clip_49/start_frame=0
233 | animation/clip_49/end_frame=0
234 | animation/clip_49/loops=false
235 | animation/clip_50/name=""
236 | animation/clip_50/start_frame=0
237 | animation/clip_50/end_frame=0
238 | animation/clip_50/loops=false
239 | animation/clip_51/name=""
240 | animation/clip_51/start_frame=0
241 | animation/clip_51/end_frame=0
242 | animation/clip_51/loops=false
243 | animation/clip_52/name=""
244 | animation/clip_52/start_frame=0
245 | animation/clip_52/end_frame=0
246 | animation/clip_52/loops=false
247 | animation/clip_53/name=""
248 | animation/clip_53/start_frame=0
249 | animation/clip_53/end_frame=0
250 | animation/clip_53/loops=false
251 | animation/clip_54/name=""
252 | animation/clip_54/start_frame=0
253 | animation/clip_54/end_frame=0
254 | animation/clip_54/loops=false
255 | animation/clip_55/name=""
256 | animation/clip_55/start_frame=0
257 | animation/clip_55/end_frame=0
258 | animation/clip_55/loops=false
259 | animation/clip_56/name=""
260 | animation/clip_56/start_frame=0
261 | animation/clip_56/end_frame=0
262 | animation/clip_56/loops=false
263 | animation/clip_57/name=""
264 | animation/clip_57/start_frame=0
265 | animation/clip_57/end_frame=0
266 | animation/clip_57/loops=false
267 | animation/clip_58/name=""
268 | animation/clip_58/start_frame=0
269 | animation/clip_58/end_frame=0
270 | animation/clip_58/loops=false
271 | animation/clip_59/name=""
272 | animation/clip_59/start_frame=0
273 | animation/clip_59/end_frame=0
274 | animation/clip_59/loops=false
275 | animation/clip_60/name=""
276 | animation/clip_60/start_frame=0
277 | animation/clip_60/end_frame=0
278 | animation/clip_60/loops=false
279 | animation/clip_61/name=""
280 | animation/clip_61/start_frame=0
281 | animation/clip_61/end_frame=0
282 | animation/clip_61/loops=false
283 | animation/clip_62/name=""
284 | animation/clip_62/start_frame=0
285 | animation/clip_62/end_frame=0
286 | animation/clip_62/loops=false
287 | animation/clip_63/name=""
288 | animation/clip_63/start_frame=0
289 | animation/clip_63/end_frame=0
290 | animation/clip_63/loops=false
291 | animation/clip_64/name=""
292 | animation/clip_64/start_frame=0
293 | animation/clip_64/end_frame=0
294 | animation/clip_64/loops=false
295 | animation/clip_65/name=""
296 | animation/clip_65/start_frame=0
297 | animation/clip_65/end_frame=0
298 | animation/clip_65/loops=false
299 | animation/clip_66/name=""
300 | animation/clip_66/start_frame=0
301 | animation/clip_66/end_frame=0
302 | animation/clip_66/loops=false
303 | animation/clip_67/name=""
304 | animation/clip_67/start_frame=0
305 | animation/clip_67/end_frame=0
306 | animation/clip_67/loops=false
307 | animation/clip_68/name=""
308 | animation/clip_68/start_frame=0
309 | animation/clip_68/end_frame=0
310 | animation/clip_68/loops=false
311 | animation/clip_69/name=""
312 | animation/clip_69/start_frame=0
313 | animation/clip_69/end_frame=0
314 | animation/clip_69/loops=false
315 | animation/clip_70/name=""
316 | animation/clip_70/start_frame=0
317 | animation/clip_70/end_frame=0
318 | animation/clip_70/loops=false
319 | animation/clip_71/name=""
320 | animation/clip_71/start_frame=0
321 | animation/clip_71/end_frame=0
322 | animation/clip_71/loops=false
323 | animation/clip_72/name=""
324 | animation/clip_72/start_frame=0
325 | animation/clip_72/end_frame=0
326 | animation/clip_72/loops=false
327 | animation/clip_73/name=""
328 | animation/clip_73/start_frame=0
329 | animation/clip_73/end_frame=0
330 | animation/clip_73/loops=false
331 | animation/clip_74/name=""
332 | animation/clip_74/start_frame=0
333 | animation/clip_74/end_frame=0
334 | animation/clip_74/loops=false
335 | animation/clip_75/name=""
336 | animation/clip_75/start_frame=0
337 | animation/clip_75/end_frame=0
338 | animation/clip_75/loops=false
339 | animation/clip_76/name=""
340 | animation/clip_76/start_frame=0
341 | animation/clip_76/end_frame=0
342 | animation/clip_76/loops=false
343 | animation/clip_77/name=""
344 | animation/clip_77/start_frame=0
345 | animation/clip_77/end_frame=0
346 | animation/clip_77/loops=false
347 | animation/clip_78/name=""
348 | animation/clip_78/start_frame=0
349 | animation/clip_78/end_frame=0
350 | animation/clip_78/loops=false
351 | animation/clip_79/name=""
352 | animation/clip_79/start_frame=0
353 | animation/clip_79/end_frame=0
354 | animation/clip_79/loops=false
355 | animation/clip_80/name=""
356 | animation/clip_80/start_frame=0
357 | animation/clip_80/end_frame=0
358 | animation/clip_80/loops=false
359 | animation/clip_81/name=""
360 | animation/clip_81/start_frame=0
361 | animation/clip_81/end_frame=0
362 | animation/clip_81/loops=false
363 | animation/clip_82/name=""
364 | animation/clip_82/start_frame=0
365 | animation/clip_82/end_frame=0
366 | animation/clip_82/loops=false
367 | animation/clip_83/name=""
368 | animation/clip_83/start_frame=0
369 | animation/clip_83/end_frame=0
370 | animation/clip_83/loops=false
371 | animation/clip_84/name=""
372 | animation/clip_84/start_frame=0
373 | animation/clip_84/end_frame=0
374 | animation/clip_84/loops=false
375 | animation/clip_85/name=""
376 | animation/clip_85/start_frame=0
377 | animation/clip_85/end_frame=0
378 | animation/clip_85/loops=false
379 | animation/clip_86/name=""
380 | animation/clip_86/start_frame=0
381 | animation/clip_86/end_frame=0
382 | animation/clip_86/loops=false
383 | animation/clip_87/name=""
384 | animation/clip_87/start_frame=0
385 | animation/clip_87/end_frame=0
386 | animation/clip_87/loops=false
387 | animation/clip_88/name=""
388 | animation/clip_88/start_frame=0
389 | animation/clip_88/end_frame=0
390 | animation/clip_88/loops=false
391 | animation/clip_89/name=""
392 | animation/clip_89/start_frame=0
393 | animation/clip_89/end_frame=0
394 | animation/clip_89/loops=false
395 | animation/clip_90/name=""
396 | animation/clip_90/start_frame=0
397 | animation/clip_90/end_frame=0
398 | animation/clip_90/loops=false
399 | animation/clip_91/name=""
400 | animation/clip_91/start_frame=0
401 | animation/clip_91/end_frame=0
402 | animation/clip_91/loops=false
403 | animation/clip_92/name=""
404 | animation/clip_92/start_frame=0
405 | animation/clip_92/end_frame=0
406 | animation/clip_92/loops=false
407 | animation/clip_93/name=""
408 | animation/clip_93/start_frame=0
409 | animation/clip_93/end_frame=0
410 | animation/clip_93/loops=false
411 | animation/clip_94/name=""
412 | animation/clip_94/start_frame=0
413 | animation/clip_94/end_frame=0
414 | animation/clip_94/loops=false
415 | animation/clip_95/name=""
416 | animation/clip_95/start_frame=0
417 | animation/clip_95/end_frame=0
418 | animation/clip_95/loops=false
419 | animation/clip_96/name=""
420 | animation/clip_96/start_frame=0
421 | animation/clip_96/end_frame=0
422 | animation/clip_96/loops=false
423 | animation/clip_97/name=""
424 | animation/clip_97/start_frame=0
425 | animation/clip_97/end_frame=0
426 | animation/clip_97/loops=false
427 | animation/clip_98/name=""
428 | animation/clip_98/start_frame=0
429 | animation/clip_98/end_frame=0
430 | animation/clip_98/loops=false
431 | animation/clip_99/name=""
432 | animation/clip_99/start_frame=0
433 | animation/clip_99/end_frame=0
434 | animation/clip_99/loops=false
435 | animation/clip_100/name=""
436 | animation/clip_100/start_frame=0
437 | animation/clip_100/end_frame=0
438 | animation/clip_100/loops=false
439 | animation/clip_101/name=""
440 | animation/clip_101/start_frame=0
441 | animation/clip_101/end_frame=0
442 | animation/clip_101/loops=false
443 | animation/clip_102/name=""
444 | animation/clip_102/start_frame=0
445 | animation/clip_102/end_frame=0
446 | animation/clip_102/loops=false
447 | animation/clip_103/name=""
448 | animation/clip_103/start_frame=0
449 | animation/clip_103/end_frame=0
450 | animation/clip_103/loops=false
451 | animation/clip_104/name=""
452 | animation/clip_104/start_frame=0
453 | animation/clip_104/end_frame=0
454 | animation/clip_104/loops=false
455 | animation/clip_105/name=""
456 | animation/clip_105/start_frame=0
457 | animation/clip_105/end_frame=0
458 | animation/clip_105/loops=false
459 | animation/clip_106/name=""
460 | animation/clip_106/start_frame=0
461 | animation/clip_106/end_frame=0
462 | animation/clip_106/loops=false
463 | animation/clip_107/name=""
464 | animation/clip_107/start_frame=0
465 | animation/clip_107/end_frame=0
466 | animation/clip_107/loops=false
467 | animation/clip_108/name=""
468 | animation/clip_108/start_frame=0
469 | animation/clip_108/end_frame=0
470 | animation/clip_108/loops=false
471 | animation/clip_109/name=""
472 | animation/clip_109/start_frame=0
473 | animation/clip_109/end_frame=0
474 | animation/clip_109/loops=false
475 | animation/clip_110/name=""
476 | animation/clip_110/start_frame=0
477 | animation/clip_110/end_frame=0
478 | animation/clip_110/loops=false
479 | animation/clip_111/name=""
480 | animation/clip_111/start_frame=0
481 | animation/clip_111/end_frame=0
482 | animation/clip_111/loops=false
483 | animation/clip_112/name=""
484 | animation/clip_112/start_frame=0
485 | animation/clip_112/end_frame=0
486 | animation/clip_112/loops=false
487 | animation/clip_113/name=""
488 | animation/clip_113/start_frame=0
489 | animation/clip_113/end_frame=0
490 | animation/clip_113/loops=false
491 | animation/clip_114/name=""
492 | animation/clip_114/start_frame=0
493 | animation/clip_114/end_frame=0
494 | animation/clip_114/loops=false
495 | animation/clip_115/name=""
496 | animation/clip_115/start_frame=0
497 | animation/clip_115/end_frame=0
498 | animation/clip_115/loops=false
499 | animation/clip_116/name=""
500 | animation/clip_116/start_frame=0
501 | animation/clip_116/end_frame=0
502 | animation/clip_116/loops=false
503 | animation/clip_117/name=""
504 | animation/clip_117/start_frame=0
505 | animation/clip_117/end_frame=0
506 | animation/clip_117/loops=false
507 | animation/clip_118/name=""
508 | animation/clip_118/start_frame=0
509 | animation/clip_118/end_frame=0
510 | animation/clip_118/loops=false
511 | animation/clip_119/name=""
512 | animation/clip_119/start_frame=0
513 | animation/clip_119/end_frame=0
514 | animation/clip_119/loops=false
515 | animation/clip_120/name=""
516 | animation/clip_120/start_frame=0
517 | animation/clip_120/end_frame=0
518 | animation/clip_120/loops=false
519 | animation/clip_121/name=""
520 | animation/clip_121/start_frame=0
521 | animation/clip_121/end_frame=0
522 | animation/clip_121/loops=false
523 | animation/clip_122/name=""
524 | animation/clip_122/start_frame=0
525 | animation/clip_122/end_frame=0
526 | animation/clip_122/loops=false
527 | animation/clip_123/name=""
528 | animation/clip_123/start_frame=0
529 | animation/clip_123/end_frame=0
530 | animation/clip_123/loops=false
531 | animation/clip_124/name=""
532 | animation/clip_124/start_frame=0
533 | animation/clip_124/end_frame=0
534 | animation/clip_124/loops=false
535 | animation/clip_125/name=""
536 | animation/clip_125/start_frame=0
537 | animation/clip_125/end_frame=0
538 | animation/clip_125/loops=false
539 | animation/clip_126/name=""
540 | animation/clip_126/start_frame=0
541 | animation/clip_126/end_frame=0
542 | animation/clip_126/loops=false
543 | animation/clip_127/name=""
544 | animation/clip_127/start_frame=0
545 | animation/clip_127/end_frame=0
546 | animation/clip_127/loops=false
547 | animation/clip_128/name=""
548 | animation/clip_128/start_frame=0
549 | animation/clip_128/end_frame=0
550 | animation/clip_128/loops=false
551 | animation/clip_129/name=""
552 | animation/clip_129/start_frame=0
553 | animation/clip_129/end_frame=0
554 | animation/clip_129/loops=false
555 | animation/clip_130/name=""
556 | animation/clip_130/start_frame=0
557 | animation/clip_130/end_frame=0
558 | animation/clip_130/loops=false
559 | animation/clip_131/name=""
560 | animation/clip_131/start_frame=0
561 | animation/clip_131/end_frame=0
562 | animation/clip_131/loops=false
563 | animation/clip_132/name=""
564 | animation/clip_132/start_frame=0
565 | animation/clip_132/end_frame=0
566 | animation/clip_132/loops=false
567 | animation/clip_133/name=""
568 | animation/clip_133/start_frame=0
569 | animation/clip_133/end_frame=0
570 | animation/clip_133/loops=false
571 | animation/clip_134/name=""
572 | animation/clip_134/start_frame=0
573 | animation/clip_134/end_frame=0
574 | animation/clip_134/loops=false
575 | animation/clip_135/name=""
576 | animation/clip_135/start_frame=0
577 | animation/clip_135/end_frame=0
578 | animation/clip_135/loops=false
579 | animation/clip_136/name=""
580 | animation/clip_136/start_frame=0
581 | animation/clip_136/end_frame=0
582 | animation/clip_136/loops=false
583 | animation/clip_137/name=""
584 | animation/clip_137/start_frame=0
585 | animation/clip_137/end_frame=0
586 | animation/clip_137/loops=false
587 | animation/clip_138/name=""
588 | animation/clip_138/start_frame=0
589 | animation/clip_138/end_frame=0
590 | animation/clip_138/loops=false
591 | animation/clip_139/name=""
592 | animation/clip_139/start_frame=0
593 | animation/clip_139/end_frame=0
594 | animation/clip_139/loops=false
595 | animation/clip_140/name=""
596 | animation/clip_140/start_frame=0
597 | animation/clip_140/end_frame=0
598 | animation/clip_140/loops=false
599 | animation/clip_141/name=""
600 | animation/clip_141/start_frame=0
601 | animation/clip_141/end_frame=0
602 | animation/clip_141/loops=false
603 | animation/clip_142/name=""
604 | animation/clip_142/start_frame=0
605 | animation/clip_142/end_frame=0
606 | animation/clip_142/loops=false
607 | animation/clip_143/name=""
608 | animation/clip_143/start_frame=0
609 | animation/clip_143/end_frame=0
610 | animation/clip_143/loops=false
611 | animation/clip_144/name=""
612 | animation/clip_144/start_frame=0
613 | animation/clip_144/end_frame=0
614 | animation/clip_144/loops=false
615 | animation/clip_145/name=""
616 | animation/clip_145/start_frame=0
617 | animation/clip_145/end_frame=0
618 | animation/clip_145/loops=false
619 | animation/clip_146/name=""
620 | animation/clip_146/start_frame=0
621 | animation/clip_146/end_frame=0
622 | animation/clip_146/loops=false
623 | animation/clip_147/name=""
624 | animation/clip_147/start_frame=0
625 | animation/clip_147/end_frame=0
626 | animation/clip_147/loops=false
627 | animation/clip_148/name=""
628 | animation/clip_148/start_frame=0
629 | animation/clip_148/end_frame=0
630 | animation/clip_148/loops=false
631 | animation/clip_149/name=""
632 | animation/clip_149/start_frame=0
633 | animation/clip_149/end_frame=0
634 | animation/clip_149/loops=false
635 | animation/clip_150/name=""
636 | animation/clip_150/start_frame=0
637 | animation/clip_150/end_frame=0
638 | animation/clip_150/loops=false
639 | animation/clip_151/name=""
640 | animation/clip_151/start_frame=0
641 | animation/clip_151/end_frame=0
642 | animation/clip_151/loops=false
643 | animation/clip_152/name=""
644 | animation/clip_152/start_frame=0
645 | animation/clip_152/end_frame=0
646 | animation/clip_152/loops=false
647 | animation/clip_153/name=""
648 | animation/clip_153/start_frame=0
649 | animation/clip_153/end_frame=0
650 | animation/clip_153/loops=false
651 | animation/clip_154/name=""
652 | animation/clip_154/start_frame=0
653 | animation/clip_154/end_frame=0
654 | animation/clip_154/loops=false
655 | animation/clip_155/name=""
656 | animation/clip_155/start_frame=0
657 | animation/clip_155/end_frame=0
658 | animation/clip_155/loops=false
659 | animation/clip_156/name=""
660 | animation/clip_156/start_frame=0
661 | animation/clip_156/end_frame=0
662 | animation/clip_156/loops=false
663 | animation/clip_157/name=""
664 | animation/clip_157/start_frame=0
665 | animation/clip_157/end_frame=0
666 | animation/clip_157/loops=false
667 | animation/clip_158/name=""
668 | animation/clip_158/start_frame=0
669 | animation/clip_158/end_frame=0
670 | animation/clip_158/loops=false
671 | animation/clip_159/name=""
672 | animation/clip_159/start_frame=0
673 | animation/clip_159/end_frame=0
674 | animation/clip_159/loops=false
675 | animation/clip_160/name=""
676 | animation/clip_160/start_frame=0
677 | animation/clip_160/end_frame=0
678 | animation/clip_160/loops=false
679 | animation/clip_161/name=""
680 | animation/clip_161/start_frame=0
681 | animation/clip_161/end_frame=0
682 | animation/clip_161/loops=false
683 | animation/clip_162/name=""
684 | animation/clip_162/start_frame=0
685 | animation/clip_162/end_frame=0
686 | animation/clip_162/loops=false
687 | animation/clip_163/name=""
688 | animation/clip_163/start_frame=0
689 | animation/clip_163/end_frame=0
690 | animation/clip_163/loops=false
691 | animation/clip_164/name=""
692 | animation/clip_164/start_frame=0
693 | animation/clip_164/end_frame=0
694 | animation/clip_164/loops=false
695 | animation/clip_165/name=""
696 | animation/clip_165/start_frame=0
697 | animation/clip_165/end_frame=0
698 | animation/clip_165/loops=false
699 | animation/clip_166/name=""
700 | animation/clip_166/start_frame=0
701 | animation/clip_166/end_frame=0
702 | animation/clip_166/loops=false
703 | animation/clip_167/name=""
704 | animation/clip_167/start_frame=0
705 | animation/clip_167/end_frame=0
706 | animation/clip_167/loops=false
707 | animation/clip_168/name=""
708 | animation/clip_168/start_frame=0
709 | animation/clip_168/end_frame=0
710 | animation/clip_168/loops=false
711 | animation/clip_169/name=""
712 | animation/clip_169/start_frame=0
713 | animation/clip_169/end_frame=0
714 | animation/clip_169/loops=false
715 | animation/clip_170/name=""
716 | animation/clip_170/start_frame=0
717 | animation/clip_170/end_frame=0
718 | animation/clip_170/loops=false
719 | animation/clip_171/name=""
720 | animation/clip_171/start_frame=0
721 | animation/clip_171/end_frame=0
722 | animation/clip_171/loops=false
723 | animation/clip_172/name=""
724 | animation/clip_172/start_frame=0
725 | animation/clip_172/end_frame=0
726 | animation/clip_172/loops=false
727 | animation/clip_173/name=""
728 | animation/clip_173/start_frame=0
729 | animation/clip_173/end_frame=0
730 | animation/clip_173/loops=false
731 | animation/clip_174/name=""
732 | animation/clip_174/start_frame=0
733 | animation/clip_174/end_frame=0
734 | animation/clip_174/loops=false
735 | animation/clip_175/name=""
736 | animation/clip_175/start_frame=0
737 | animation/clip_175/end_frame=0
738 | animation/clip_175/loops=false
739 | animation/clip_176/name=""
740 | animation/clip_176/start_frame=0
741 | animation/clip_176/end_frame=0
742 | animation/clip_176/loops=false
743 | animation/clip_177/name=""
744 | animation/clip_177/start_frame=0
745 | animation/clip_177/end_frame=0
746 | animation/clip_177/loops=false
747 | animation/clip_178/name=""
748 | animation/clip_178/start_frame=0
749 | animation/clip_178/end_frame=0
750 | animation/clip_178/loops=false
751 | animation/clip_179/name=""
752 | animation/clip_179/start_frame=0
753 | animation/clip_179/end_frame=0
754 | animation/clip_179/loops=false
755 | animation/clip_180/name=""
756 | animation/clip_180/start_frame=0
757 | animation/clip_180/end_frame=0
758 | animation/clip_180/loops=false
759 | animation/clip_181/name=""
760 | animation/clip_181/start_frame=0
761 | animation/clip_181/end_frame=0
762 | animation/clip_181/loops=false
763 | animation/clip_182/name=""
764 | animation/clip_182/start_frame=0
765 | animation/clip_182/end_frame=0
766 | animation/clip_182/loops=false
767 | animation/clip_183/name=""
768 | animation/clip_183/start_frame=0
769 | animation/clip_183/end_frame=0
770 | animation/clip_183/loops=false
771 | animation/clip_184/name=""
772 | animation/clip_184/start_frame=0
773 | animation/clip_184/end_frame=0
774 | animation/clip_184/loops=false
775 | animation/clip_185/name=""
776 | animation/clip_185/start_frame=0
777 | animation/clip_185/end_frame=0
778 | animation/clip_185/loops=false
779 | animation/clip_186/name=""
780 | animation/clip_186/start_frame=0
781 | animation/clip_186/end_frame=0
782 | animation/clip_186/loops=false
783 | animation/clip_187/name=""
784 | animation/clip_187/start_frame=0
785 | animation/clip_187/end_frame=0
786 | animation/clip_187/loops=false
787 | animation/clip_188/name=""
788 | animation/clip_188/start_frame=0
789 | animation/clip_188/end_frame=0
790 | animation/clip_188/loops=false
791 | animation/clip_189/name=""
792 | animation/clip_189/start_frame=0
793 | animation/clip_189/end_frame=0
794 | animation/clip_189/loops=false
795 | animation/clip_190/name=""
796 | animation/clip_190/start_frame=0
797 | animation/clip_190/end_frame=0
798 | animation/clip_190/loops=false
799 | animation/clip_191/name=""
800 | animation/clip_191/start_frame=0
801 | animation/clip_191/end_frame=0
802 | animation/clip_191/loops=false
803 | animation/clip_192/name=""
804 | animation/clip_192/start_frame=0
805 | animation/clip_192/end_frame=0
806 | animation/clip_192/loops=false
807 | animation/clip_193/name=""
808 | animation/clip_193/start_frame=0
809 | animation/clip_193/end_frame=0
810 | animation/clip_193/loops=false
811 | animation/clip_194/name=""
812 | animation/clip_194/start_frame=0
813 | animation/clip_194/end_frame=0
814 | animation/clip_194/loops=false
815 | animation/clip_195/name=""
816 | animation/clip_195/start_frame=0
817 | animation/clip_195/end_frame=0
818 | animation/clip_195/loops=false
819 | animation/clip_196/name=""
820 | animation/clip_196/start_frame=0
821 | animation/clip_196/end_frame=0
822 | animation/clip_196/loops=false
823 | animation/clip_197/name=""
824 | animation/clip_197/start_frame=0
825 | animation/clip_197/end_frame=0
826 | animation/clip_197/loops=false
827 | animation/clip_198/name=""
828 | animation/clip_198/start_frame=0
829 | animation/clip_198/end_frame=0
830 | animation/clip_198/loops=false
831 | animation/clip_199/name=""
832 | animation/clip_199/start_frame=0
833 | animation/clip_199/end_frame=0
834 | animation/clip_199/loops=false
835 | animation/clip_200/name=""
836 | animation/clip_200/start_frame=0
837 | animation/clip_200/end_frame=0
838 | animation/clip_200/loops=false
839 | animation/clip_201/name=""
840 | animation/clip_201/start_frame=0
841 | animation/clip_201/end_frame=0
842 | animation/clip_201/loops=false
843 | animation/clip_202/name=""
844 | animation/clip_202/start_frame=0
845 | animation/clip_202/end_frame=0
846 | animation/clip_202/loops=false
847 | animation/clip_203/name=""
848 | animation/clip_203/start_frame=0
849 | animation/clip_203/end_frame=0
850 | animation/clip_203/loops=false
851 | animation/clip_204/name=""
852 | animation/clip_204/start_frame=0
853 | animation/clip_204/end_frame=0
854 | animation/clip_204/loops=false
855 | animation/clip_205/name=""
856 | animation/clip_205/start_frame=0
857 | animation/clip_205/end_frame=0
858 | animation/clip_205/loops=false
859 | animation/clip_206/name=""
860 | animation/clip_206/start_frame=0
861 | animation/clip_206/end_frame=0
862 | animation/clip_206/loops=false
863 | animation/clip_207/name=""
864 | animation/clip_207/start_frame=0
865 | animation/clip_207/end_frame=0
866 | animation/clip_207/loops=false
867 | animation/clip_208/name=""
868 | animation/clip_208/start_frame=0
869 | animation/clip_208/end_frame=0
870 | animation/clip_208/loops=false
871 | animation/clip_209/name=""
872 | animation/clip_209/start_frame=0
873 | animation/clip_209/end_frame=0
874 | animation/clip_209/loops=false
875 | animation/clip_210/name=""
876 | animation/clip_210/start_frame=0
877 | animation/clip_210/end_frame=0
878 | animation/clip_210/loops=false
879 | animation/clip_211/name=""
880 | animation/clip_211/start_frame=0
881 | animation/clip_211/end_frame=0
882 | animation/clip_211/loops=false
883 | animation/clip_212/name=""
884 | animation/clip_212/start_frame=0
885 | animation/clip_212/end_frame=0
886 | animation/clip_212/loops=false
887 | animation/clip_213/name=""
888 | animation/clip_213/start_frame=0
889 | animation/clip_213/end_frame=0
890 | animation/clip_213/loops=false
891 | animation/clip_214/name=""
892 | animation/clip_214/start_frame=0
893 | animation/clip_214/end_frame=0
894 | animation/clip_214/loops=false
895 | animation/clip_215/name=""
896 | animation/clip_215/start_frame=0
897 | animation/clip_215/end_frame=0
898 | animation/clip_215/loops=false
899 | animation/clip_216/name=""
900 | animation/clip_216/start_frame=0
901 | animation/clip_216/end_frame=0
902 | animation/clip_216/loops=false
903 | animation/clip_217/name=""
904 | animation/clip_217/start_frame=0
905 | animation/clip_217/end_frame=0
906 | animation/clip_217/loops=false
907 | animation/clip_218/name=""
908 | animation/clip_218/start_frame=0
909 | animation/clip_218/end_frame=0
910 | animation/clip_218/loops=false
911 | animation/clip_219/name=""
912 | animation/clip_219/start_frame=0
913 | animation/clip_219/end_frame=0
914 | animation/clip_219/loops=false
915 | animation/clip_220/name=""
916 | animation/clip_220/start_frame=0
917 | animation/clip_220/end_frame=0
918 | animation/clip_220/loops=false
919 | animation/clip_221/name=""
920 | animation/clip_221/start_frame=0
921 | animation/clip_221/end_frame=0
922 | animation/clip_221/loops=false
923 | animation/clip_222/name=""
924 | animation/clip_222/start_frame=0
925 | animation/clip_222/end_frame=0
926 | animation/clip_222/loops=false
927 | animation/clip_223/name=""
928 | animation/clip_223/start_frame=0
929 | animation/clip_223/end_frame=0
930 | animation/clip_223/loops=false
931 | animation/clip_224/name=""
932 | animation/clip_224/start_frame=0
933 | animation/clip_224/end_frame=0
934 | animation/clip_224/loops=false
935 | animation/clip_225/name=""
936 | animation/clip_225/start_frame=0
937 | animation/clip_225/end_frame=0
938 | animation/clip_225/loops=false
939 | animation/clip_226/name=""
940 | animation/clip_226/start_frame=0
941 | animation/clip_226/end_frame=0
942 | animation/clip_226/loops=false
943 | animation/clip_227/name=""
944 | animation/clip_227/start_frame=0
945 | animation/clip_227/end_frame=0
946 | animation/clip_227/loops=false
947 | animation/clip_228/name=""
948 | animation/clip_228/start_frame=0
949 | animation/clip_228/end_frame=0
950 | animation/clip_228/loops=false
951 | animation/clip_229/name=""
952 | animation/clip_229/start_frame=0
953 | animation/clip_229/end_frame=0
954 | animation/clip_229/loops=false
955 | animation/clip_230/name=""
956 | animation/clip_230/start_frame=0
957 | animation/clip_230/end_frame=0
958 | animation/clip_230/loops=false
959 | animation/clip_231/name=""
960 | animation/clip_231/start_frame=0
961 | animation/clip_231/end_frame=0
962 | animation/clip_231/loops=false
963 | animation/clip_232/name=""
964 | animation/clip_232/start_frame=0
965 | animation/clip_232/end_frame=0
966 | animation/clip_232/loops=false
967 | animation/clip_233/name=""
968 | animation/clip_233/start_frame=0
969 | animation/clip_233/end_frame=0
970 | animation/clip_233/loops=false
971 | animation/clip_234/name=""
972 | animation/clip_234/start_frame=0
973 | animation/clip_234/end_frame=0
974 | animation/clip_234/loops=false
975 | animation/clip_235/name=""
976 | animation/clip_235/start_frame=0
977 | animation/clip_235/end_frame=0
978 | animation/clip_235/loops=false
979 | animation/clip_236/name=""
980 | animation/clip_236/start_frame=0
981 | animation/clip_236/end_frame=0
982 | animation/clip_236/loops=false
983 | animation/clip_237/name=""
984 | animation/clip_237/start_frame=0
985 | animation/clip_237/end_frame=0
986 | animation/clip_237/loops=false
987 | animation/clip_238/name=""
988 | animation/clip_238/start_frame=0
989 | animation/clip_238/end_frame=0
990 | animation/clip_238/loops=false
991 | animation/clip_239/name=""
992 | animation/clip_239/start_frame=0
993 | animation/clip_239/end_frame=0
994 | animation/clip_239/loops=false
995 | animation/clip_240/name=""
996 | animation/clip_240/start_frame=0
997 | animation/clip_240/end_frame=0
998 | animation/clip_240/loops=false
999 | animation/clip_241/name=""
1000 | animation/clip_241/start_frame=0
1001 | animation/clip_241/end_frame=0
1002 | animation/clip_241/loops=false
1003 | animation/clip_242/name=""
1004 | animation/clip_242/start_frame=0
1005 | animation/clip_242/end_frame=0
1006 | animation/clip_242/loops=false
1007 | animation/clip_243/name=""
1008 | animation/clip_243/start_frame=0
1009 | animation/clip_243/end_frame=0
1010 | animation/clip_243/loops=false
1011 | animation/clip_244/name=""
1012 | animation/clip_244/start_frame=0
1013 | animation/clip_244/end_frame=0
1014 | animation/clip_244/loops=false
1015 | animation/clip_245/name=""
1016 | animation/clip_245/start_frame=0
1017 | animation/clip_245/end_frame=0
1018 | animation/clip_245/loops=false
1019 | animation/clip_246/name=""
1020 | animation/clip_246/start_frame=0
1021 | animation/clip_246/end_frame=0
1022 | animation/clip_246/loops=false
1023 | animation/clip_247/name=""
1024 | animation/clip_247/start_frame=0
1025 | animation/clip_247/end_frame=0
1026 | animation/clip_247/loops=false
1027 | animation/clip_248/name=""
1028 | animation/clip_248/start_frame=0
1029 | animation/clip_248/end_frame=0
1030 | animation/clip_248/loops=false
1031 | animation/clip_249/name=""
1032 | animation/clip_249/start_frame=0
1033 | animation/clip_249/end_frame=0
1034 | animation/clip_249/loops=false
1035 | animation/clip_250/name=""
1036 | animation/clip_250/start_frame=0
1037 | animation/clip_250/end_frame=0
1038 | animation/clip_250/loops=false
1039 | animation/clip_251/name=""
1040 | animation/clip_251/start_frame=0
1041 | animation/clip_251/end_frame=0
1042 | animation/clip_251/loops=false
1043 | animation/clip_252/name=""
1044 | animation/clip_252/start_frame=0
1045 | animation/clip_252/end_frame=0
1046 | animation/clip_252/loops=false
1047 | animation/clip_253/name=""
1048 | animation/clip_253/start_frame=0
1049 | animation/clip_253/end_frame=0
1050 | animation/clip_253/loops=false
1051 | animation/clip_254/name=""
1052 | animation/clip_254/start_frame=0
1053 | animation/clip_254/end_frame=0
1054 | animation/clip_254/loops=false
1055 | animation/clip_255/name=""
1056 | animation/clip_255/start_frame=0
1057 | animation/clip_255/end_frame=0
1058 | animation/clip_255/loops=false
1059 | animation/clip_256/name=""
1060 | animation/clip_256/start_frame=0
1061 | animation/clip_256/end_frame=0
1062 | animation/clip_256/loops=false
1063 |
--------------------------------------------------------------------------------
/assets/checker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OBKF/Godot-Trail-System/8827d6b5842b2dbc448461d75bc8cc54a3b654b1/assets/checker.png
--------------------------------------------------------------------------------
/assets/checker.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path.s3tc="res://.import/checker.png-7dcf8ccb90954474f03b6153c771f4ea.s3tc.stex"
6 | path.etc2="res://.import/checker.png-7dcf8ccb90954474f03b6153c771f4ea.etc2.stex"
7 | metadata={
8 | "imported_formats": [ "s3tc", "etc2" ],
9 | "vram_texture": true
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://assets/checker.png"
15 | dest_files=[ "res://.import/checker.png-7dcf8ccb90954474f03b6153c771f4ea.s3tc.stex", "res://.import/checker.png-7dcf8ccb90954474f03b6153c771f4ea.etc2.stex" ]
16 |
17 | [params]
18 |
19 | compress/mode=2
20 | compress/lossy_quality=0.7
21 | compress/hdr_mode=0
22 | compress/bptc_ldr=0
23 | compress/normal_map=0
24 | flags/repeat=true
25 | flags/filter=true
26 | flags/mipmaps=true
27 | flags/anisotropic=false
28 | flags/srgb=1
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/HDR_as_SRGB=false
32 | process/invert_color=false
33 | stream=false
34 | size_limit=0
35 | detect_3d=false
36 | svg/scale=1.0
37 |
--------------------------------------------------------------------------------
/assets/checker_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OBKF/Godot-Trail-System/8827d6b5842b2dbc448461d75bc8cc54a3b654b1/assets/checker_normal.png
--------------------------------------------------------------------------------
/assets/checker_normal.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path.s3tc="res://.import/checker_normal.png-5a6e997e189b08c91923d891b55d7445.s3tc.stex"
6 | path.etc2="res://.import/checker_normal.png-5a6e997e189b08c91923d891b55d7445.etc2.stex"
7 | metadata={
8 | "imported_formats": [ "s3tc", "etc2" ],
9 | "vram_texture": true
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://assets/checker_normal.png"
15 | dest_files=[ "res://.import/checker_normal.png-5a6e997e189b08c91923d891b55d7445.s3tc.stex", "res://.import/checker_normal.png-5a6e997e189b08c91923d891b55d7445.etc2.stex" ]
16 |
17 | [params]
18 |
19 | compress/mode=2
20 | compress/lossy_quality=0.7
21 | compress/hdr_mode=0
22 | compress/bptc_ldr=0
23 | compress/normal_map=1
24 | flags/repeat=true
25 | flags/filter=true
26 | flags/mipmaps=true
27 | flags/anisotropic=false
28 | flags/srgb=2
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/HDR_as_SRGB=false
32 | process/invert_color=false
33 | stream=false
34 | size_limit=0
35 | detect_3d=false
36 | svg/scale=1.0
37 |
--------------------------------------------------------------------------------
/assets/checker_roughness.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OBKF/Godot-Trail-System/8827d6b5842b2dbc448461d75bc8cc54a3b654b1/assets/checker_roughness.png
--------------------------------------------------------------------------------
/assets/checker_roughness.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path.s3tc="res://.import/checker_roughness.png-9896f95dcca6ccf35bfdf285f6c550cc.s3tc.stex"
6 | path.etc2="res://.import/checker_roughness.png-9896f95dcca6ccf35bfdf285f6c550cc.etc2.stex"
7 | metadata={
8 | "imported_formats": [ "s3tc", "etc2" ],
9 | "vram_texture": true
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://assets/checker_roughness.png"
15 | dest_files=[ "res://.import/checker_roughness.png-9896f95dcca6ccf35bfdf285f6c550cc.s3tc.stex", "res://.import/checker_roughness.png-9896f95dcca6ccf35bfdf285f6c550cc.etc2.stex" ]
16 |
17 | [params]
18 |
19 | compress/mode=2
20 | compress/lossy_quality=0.7
21 | compress/hdr_mode=0
22 | compress/bptc_ldr=0
23 | compress/normal_map=0
24 | flags/repeat=true
25 | flags/filter=true
26 | flags/mipmaps=true
27 | flags/anisotropic=false
28 | flags/srgb=1
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/HDR_as_SRGB=false
32 | process/invert_color=false
33 | stream=false
34 | size_limit=0
35 | detect_3d=false
36 | svg/scale=1.0
37 |
--------------------------------------------------------------------------------
/assets/flow_trail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OBKF/Godot-Trail-System/8827d6b5842b2dbc448461d75bc8cc54a3b654b1/assets/flow_trail.png
--------------------------------------------------------------------------------
/assets/flow_trail.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path.s3tc="res://.import/flow_trail.png-4f8d483dd3f967556cb771b0537c4df0.s3tc.stex"
6 | path.etc2="res://.import/flow_trail.png-4f8d483dd3f967556cb771b0537c4df0.etc2.stex"
7 | metadata={
8 | "imported_formats": [ "s3tc", "etc2" ],
9 | "vram_texture": true
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://assets/flow_trail.png"
15 | dest_files=[ "res://.import/flow_trail.png-4f8d483dd3f967556cb771b0537c4df0.s3tc.stex", "res://.import/flow_trail.png-4f8d483dd3f967556cb771b0537c4df0.etc2.stex" ]
16 |
17 | [params]
18 |
19 | compress/mode=2
20 | compress/lossy_quality=0.7
21 | compress/hdr_mode=0
22 | compress/bptc_ldr=0
23 | compress/normal_map=0
24 | flags/repeat=true
25 | flags/filter=true
26 | flags/mipmaps=true
27 | flags/anisotropic=false
28 | flags/srgb=1
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/HDR_as_SRGB=false
32 | process/invert_color=false
33 | stream=false
34 | size_limit=0
35 | detect_3d=false
36 | svg/scale=1.0
37 |
--------------------------------------------------------------------------------
/assets/glow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OBKF/Godot-Trail-System/8827d6b5842b2dbc448461d75bc8cc54a3b654b1/assets/glow.png
--------------------------------------------------------------------------------
/assets/glow.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path.s3tc="res://.import/glow.png-4d8aec1199c9cdee0799aae85deffaf9.s3tc.stex"
6 | path.etc2="res://.import/glow.png-4d8aec1199c9cdee0799aae85deffaf9.etc2.stex"
7 | metadata={
8 | "imported_formats": [ "s3tc", "etc2" ],
9 | "vram_texture": true
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://assets/glow.png"
15 | dest_files=[ "res://.import/glow.png-4d8aec1199c9cdee0799aae85deffaf9.s3tc.stex", "res://.import/glow.png-4d8aec1199c9cdee0799aae85deffaf9.etc2.stex" ]
16 |
17 | [params]
18 |
19 | compress/mode=2
20 | compress/lossy_quality=0.7
21 | compress/hdr_mode=0
22 | compress/bptc_ldr=0
23 | compress/normal_map=0
24 | flags/repeat=true
25 | flags/filter=true
26 | flags/mipmaps=true
27 | flags/anisotropic=false
28 | flags/srgb=2
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/HDR_as_SRGB=false
32 | process/invert_color=false
33 | stream=false
34 | size_limit=0
35 | detect_3d=false
36 | svg/scale=1.0
37 |
--------------------------------------------------------------------------------
/assets/path_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OBKF/Godot-Trail-System/8827d6b5842b2dbc448461d75bc8cc54a3b654b1/assets/path_1.png
--------------------------------------------------------------------------------
/assets/path_1.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path.s3tc="res://.import/path_1.png-3229f92448e52679ff6ccd4b13849e3e.s3tc.stex"
6 | path.etc2="res://.import/path_1.png-3229f92448e52679ff6ccd4b13849e3e.etc2.stex"
7 | metadata={
8 | "imported_formats": [ "s3tc", "etc2" ],
9 | "vram_texture": true
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://assets/path_1.png"
15 | dest_files=[ "res://.import/path_1.png-3229f92448e52679ff6ccd4b13849e3e.s3tc.stex", "res://.import/path_1.png-3229f92448e52679ff6ccd4b13849e3e.etc2.stex" ]
16 |
17 | [params]
18 |
19 | compress/mode=2
20 | compress/lossy_quality=0.7
21 | compress/hdr_mode=0
22 | compress/bptc_ldr=0
23 | compress/normal_map=0
24 | flags/repeat=true
25 | flags/filter=false
26 | flags/mipmaps=false
27 | flags/anisotropic=false
28 | flags/srgb=1
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/HDR_as_SRGB=false
32 | process/invert_color=false
33 | stream=false
34 | size_limit=0
35 | detect_3d=false
36 | svg/scale=1.0
37 |
--------------------------------------------------------------------------------
/assets/projectile_shape_1.mtl:
--------------------------------------------------------------------------------
1 | # Blender MTL File: 'projectile_shape_1.blend'
2 | # Material Count: 1
3 |
4 | newmtl mat
5 | Ns 0.000000
6 | Ka 1.000000 1.000000 1.000000
7 | Kd 0.800000 0.800000 0.800000
8 | Ks 0.000000 0.000000 0.000000
9 | Ke 0.000000 0.000000 0.000000
10 | Ni 1.450000
11 | d 1.000000
12 | illum 1
13 | map_d tex_1.png
14 |
--------------------------------------------------------------------------------
/assets/projectile_shape_1.obj:
--------------------------------------------------------------------------------
1 | # Blender v2.81 (sub 16) OBJ File: 'projectile_shape_1.blend'
2 | # www.blender.org
3 | mtllib projectile_shape_1.mtl
4 | o Sphere
5 | v 0.000000 -0.194746 -2.030232
6 | v 0.000000 -0.379954 -1.896427
7 | v 0.000000 -0.544601 -1.662542
8 | v 0.000000 -0.675424 -1.301634
9 | v 0.000000 -0.757155 -0.787693
10 | v 0.000000 -0.774607 -0.112082
11 | v 0.000000 -0.718234 0.688753
12 | v 0.000000 -0.592956 1.510259
13 | v 0.000000 -0.423978 2.199700
14 | v 0.037993 -0.191004 -2.030232
15 | v 0.074125 -0.372653 -1.896427
16 | v 0.106246 -0.534136 -1.662542
17 | v 0.131769 -0.662446 -1.301634
18 | v 0.147714 -0.742606 -0.787693
19 | v 0.151118 -0.759723 -0.112082
20 | v 0.140121 -0.704433 0.688753
21 | v 0.115680 -0.581563 1.510259
22 | v 0.082714 -0.415831 2.199700
23 | v 0.074526 -0.179922 -2.030232
24 | v 0.145402 -0.351031 -1.896427
25 | v 0.208410 -0.503145 -1.662542
26 | v 0.258474 -0.624010 -1.301634
27 | v 0.289751 -0.699520 -0.787693
28 | v 0.296429 -0.715644 -0.112082
29 | v 0.274856 -0.663562 0.688753
30 | v 0.226915 -0.547820 1.510259
31 | v 0.162249 -0.391704 2.199700
32 | v 0.108195 -0.161925 -2.030232
33 | v 0.211091 -0.315920 -1.896427
34 | v 0.302564 -0.452819 -1.662542
35 | v 0.375246 -0.561595 -1.301634
36 | v 0.420653 -0.629551 -0.787693
37 | v 0.430349 -0.644062 -0.112082
38 | v 0.399029 -0.597189 0.688753
39 | v 0.329429 -0.493025 1.510258
40 | v 0.235550 -0.352525 2.199700
41 | v 0.137706 -0.137706 -2.030232
42 | v 0.268668 -0.268668 -1.896427
43 | v 0.385091 -0.385091 -1.662542
44 | v 0.477597 -0.477597 -1.301634
45 | v 0.535389 -0.535389 -0.787693
46 | v 0.547730 -0.547730 -0.112082
47 | v 0.507868 -0.507868 0.688753
48 | v 0.419284 -0.419283 1.510258
49 | v 0.299798 -0.299797 2.199700
50 | v 0.161925 -0.108195 -2.030232
51 | v 0.315920 -0.211091 -1.896427
52 | v 0.452819 -0.302564 -1.662542
53 | v 0.561595 -0.375245 -1.301634
54 | v 0.629551 -0.420653 -0.787693
55 | v 0.644062 -0.430349 -0.112082
56 | v 0.597190 -0.399029 0.688753
57 | v 0.493025 -0.329429 1.510258
58 | v 0.352525 -0.235549 2.199700
59 | v 0.179922 -0.074526 -2.030232
60 | v 0.351032 -0.145402 -1.896427
61 | v 0.503146 -0.208410 -1.662542
62 | v 0.624011 -0.258473 -1.301634
63 | v 0.699520 -0.289750 -0.787693
64 | v 0.715644 -0.296429 -0.112081
65 | v 0.663562 -0.274856 0.688753
66 | v 0.547820 -0.226914 1.510259
67 | v 0.391704 -0.162249 2.199700
68 | v 0.191004 -0.037993 -2.030232
69 | v 0.372653 -0.074125 -1.896427
70 | v 0.534136 -0.106246 -1.662542
71 | v 0.662446 -0.131769 -1.301634
72 | v 0.742606 -0.147713 -0.787693
73 | v 0.759723 -0.151118 -0.112082
74 | v 0.704433 -0.140120 0.688753
75 | v 0.581563 -0.115680 1.510259
76 | v 0.415831 -0.082714 2.199700
77 | v 0.194746 0.000000 -2.030232
78 | v 0.379954 0.000000 -1.896427
79 | v 0.544601 0.000000 -1.662542
80 | v 0.675424 0.000000 -1.301634
81 | v 0.757155 0.000000 -0.787693
82 | v 0.774607 0.000000 -0.112082
83 | v 0.718234 0.000000 0.688753
84 | v 0.592956 0.000000 1.510259
85 | v 0.423978 0.000000 2.199700
86 | v 0.191004 0.037993 -2.030232
87 | v 0.372653 0.074126 -1.896427
88 | v 0.534136 0.106247 -1.662542
89 | v 0.662446 0.131769 -1.301634
90 | v 0.742606 0.147714 -0.787693
91 | v 0.759723 0.151118 -0.112082
92 | v 0.704433 0.140121 0.688753
93 | v 0.581563 0.115680 1.510259
94 | v 0.415831 0.082714 2.199700
95 | v 0.179922 0.074526 -2.030232
96 | v 0.351032 0.145402 -1.896427
97 | v 0.503146 0.208410 -1.662542
98 | v 0.624011 0.258474 -1.301634
99 | v 0.699520 0.289751 -0.787693
100 | v 0.715644 0.296429 -0.112082
101 | v 0.663561 0.274856 0.688753
102 | v 0.547820 0.226915 1.510259
103 | v 0.391704 0.162249 2.199700
104 | v 0.161925 0.108195 -2.030232
105 | v 0.315920 0.211091 -1.896427
106 | v 0.452819 0.302564 -1.662542
107 | v 0.561595 0.375246 -1.301634
108 | v 0.629551 0.420653 -0.787693
109 | v 0.644062 0.430349 -0.112082
110 | v 0.597190 0.399029 0.688753
111 | v 0.493025 0.329429 1.510258
112 | v 0.352525 0.235550 2.199700
113 | v 0.137706 0.137706 -2.030232
114 | v 0.268668 0.268668 -1.896427
115 | v 0.385091 0.385091 -1.662542
116 | v 0.477597 0.477597 -1.301634
117 | v 0.535389 0.535389 -0.787693
118 | v 0.547730 0.547730 -0.112082
119 | v 0.507868 0.507868 0.688753
120 | v 0.419284 0.419284 1.510258
121 | v 0.299798 0.299798 2.199700
122 | v 0.108195 0.161926 -2.030232
123 | v 0.211091 0.315920 -1.896427
124 | v 0.302564 0.452819 -1.662542
125 | v 0.375245 0.561595 -1.301634
126 | v 0.420653 0.629551 -0.787693
127 | v 0.430349 0.644062 -0.112082
128 | v 0.399029 0.597190 0.688753
129 | v 0.329429 0.493025 1.510258
130 | v 0.235549 0.352525 2.199700
131 | v 0.074526 0.179922 -2.030232
132 | v 0.145402 0.351032 -1.896427
133 | v 0.208410 0.503146 -1.662541
134 | v 0.258474 0.624011 -1.301634
135 | v 0.289750 0.699520 -0.787693
136 | v 0.296429 0.715644 -0.112081
137 | v 0.274856 0.663561 0.688753
138 | v 0.226915 0.547820 1.510258
139 | v 0.162249 0.391704 2.199700
140 | v 0.037993 0.191004 -2.030232
141 | v 0.074125 0.372653 -1.896427
142 | v 0.106246 0.534136 -1.662542
143 | v 0.131769 0.662446 -1.301634
144 | v 0.147713 0.742606 -0.787693
145 | v 0.151118 0.759723 -0.112082
146 | v 0.140120 0.704433 0.688753
147 | v 0.115680 0.581563 1.510258
148 | v 0.082714 0.415831 2.199700
149 | v -0.000000 0.194746 -2.030232
150 | v 0.000000 0.379954 -1.896427
151 | v 0.000000 0.544601 -1.662542
152 | v -0.000000 0.675424 -1.301634
153 | v -0.000000 0.757155 -0.787693
154 | v 0.000000 0.774607 -0.112082
155 | v -0.000000 0.718234 0.688753
156 | v 0.000000 0.592956 1.510259
157 | v 0.000000 0.423978 2.199700
158 | v -0.037993 0.191004 -2.030232
159 | v -0.074125 0.372653 -1.896427
160 | v -0.106246 0.534136 -1.662542
161 | v -0.131769 0.662446 -1.301634
162 | v -0.147714 0.742606 -0.787693
163 | v -0.151118 0.759723 -0.112082
164 | v -0.140120 0.704433 0.688753
165 | v -0.115680 0.581563 1.510258
166 | v -0.082714 0.415831 2.199700
167 | v -0.074526 0.179922 -2.030232
168 | v -0.145402 0.351032 -1.896427
169 | v -0.208410 0.503146 -1.662541
170 | v -0.258474 0.624011 -1.301634
171 | v -0.289750 0.699519 -0.787693
172 | v -0.296429 0.715644 -0.112082
173 | v -0.274856 0.663561 0.688753
174 | v -0.226915 0.547820 1.510258
175 | v -0.162249 0.391704 2.199700
176 | v -0.108195 0.161926 -2.030232
177 | v -0.211091 0.315920 -1.896427
178 | v -0.302564 0.452819 -1.662542
179 | v -0.375245 0.561595 -1.301634
180 | v -0.420652 0.629551 -0.787693
181 | v -0.430349 0.644062 -0.112082
182 | v -0.399029 0.597189 0.688753
183 | v -0.329429 0.493025 1.510258
184 | v -0.235549 0.352525 2.199700
185 | v -0.000000 0.000000 -2.085699
186 | v -0.137706 0.137706 -2.030232
187 | v -0.268668 0.268668 -1.896427
188 | v -0.385091 0.385091 -1.662542
189 | v -0.477597 0.477597 -1.301634
190 | v -0.535389 0.535389 -0.787693
191 | v -0.547730 0.547730 -0.112082
192 | v -0.507868 0.507868 0.688753
193 | v -0.419284 0.419284 1.510258
194 | v -0.299797 0.299797 2.199700
195 | v -0.161925 0.108195 -2.030232
196 | v -0.315920 0.211091 -1.896427
197 | v -0.452819 0.302564 -1.662542
198 | v -0.561594 0.375246 -1.301634
199 | v -0.629551 0.420652 -0.787692
200 | v -0.644062 0.430349 -0.112082
201 | v -0.597189 0.399029 0.688753
202 | v -0.493025 0.329429 1.510258
203 | v -0.352524 0.235549 2.199700
204 | v -0.179922 0.074526 -2.030232
205 | v -0.351031 0.145402 -1.896427
206 | v -0.503145 0.208410 -1.662542
207 | v -0.624010 0.258474 -1.301634
208 | v -0.699519 0.289750 -0.787693
209 | v -0.715643 0.296429 -0.112082
210 | v -0.663561 0.274856 0.688753
211 | v -0.547820 0.226915 1.510259
212 | v -0.391704 0.162249 2.199700
213 | v -0.191004 0.037993 -2.030232
214 | v -0.372653 0.074125 -1.896427
215 | v -0.534136 0.106246 -1.662542
216 | v -0.662446 0.131769 -1.301634
217 | v -0.742606 0.147713 -0.787693
218 | v -0.759723 0.151118 -0.112082
219 | v -0.704433 0.140120 0.688753
220 | v -0.581563 0.115680 1.510259
221 | v -0.415831 0.082714 2.199700
222 | v -0.194746 0.000000 -2.030232
223 | v -0.379954 0.000000 -1.896427
224 | v -0.544601 0.000000 -1.662542
225 | v -0.675424 0.000000 -1.301634
226 | v -0.757154 0.000000 -0.787693
227 | v -0.774607 0.000000 -0.112082
228 | v -0.718233 -0.000000 0.688753
229 | v -0.592956 -0.000000 1.510259
230 | v -0.423977 -0.000000 2.199700
231 | v -0.191004 -0.037993 -2.030232
232 | v -0.372653 -0.074125 -1.896427
233 | v -0.534136 -0.106246 -1.662542
234 | v -0.662446 -0.131769 -1.301634
235 | v -0.742606 -0.147713 -0.787693
236 | v -0.759723 -0.151118 -0.112082
237 | v -0.704433 -0.140120 0.688753
238 | v -0.581563 -0.115680 1.510259
239 | v -0.415831 -0.082714 2.199700
240 | v -0.179922 -0.074526 -2.030232
241 | v -0.351031 -0.145402 -1.896427
242 | v -0.503145 -0.208409 -1.662542
243 | v -0.624010 -0.258473 -1.301634
244 | v -0.699519 -0.289750 -0.787693
245 | v -0.715643 -0.296429 -0.112082
246 | v -0.663561 -0.274856 0.688753
247 | v -0.547820 -0.226915 1.510259
248 | v -0.391704 -0.162249 2.199700
249 | v -0.161925 -0.108195 -2.030232
250 | v -0.315920 -0.211091 -1.896427
251 | v -0.452819 -0.302564 -1.662542
252 | v -0.561594 -0.375245 -1.301634
253 | v -0.629551 -0.420652 -0.787693
254 | v -0.644062 -0.430348 -0.112081
255 | v -0.597189 -0.399029 0.688753
256 | v -0.493025 -0.329429 1.510258
257 | v -0.352524 -0.235549 2.199700
258 | v -0.137706 -0.137706 -2.030232
259 | v -0.268668 -0.268667 -1.896427
260 | v -0.385091 -0.385091 -1.662542
261 | v -0.477597 -0.477597 -1.301634
262 | v -0.535389 -0.535389 -0.787693
263 | v -0.547730 -0.547730 -0.112082
264 | v -0.507868 -0.507868 0.688753
265 | v -0.419283 -0.419283 1.510258
266 | v -0.299797 -0.299797 2.199700
267 | v -0.108195 -0.161925 -2.030232
268 | v -0.211091 -0.315920 -1.896427
269 | v -0.302564 -0.452819 -1.662542
270 | v -0.375245 -0.561594 -1.301634
271 | v -0.420652 -0.629551 -0.787693
272 | v -0.430348 -0.644062 -0.112082
273 | v -0.399029 -0.597189 0.688753
274 | v -0.329429 -0.493025 1.510258
275 | v -0.235549 -0.352524 2.199700
276 | v -0.074526 -0.179922 -2.030232
277 | v -0.145402 -0.351031 -1.896427
278 | v -0.208409 -0.503145 -1.662542
279 | v -0.258473 -0.624010 -1.301634
280 | v -0.289750 -0.699519 -0.787693
281 | v -0.296429 -0.715643 -0.112081
282 | v -0.274856 -0.663561 0.688753
283 | v -0.226914 -0.547820 1.510259
284 | v -0.162249 -0.391704 2.199700
285 | v -0.037993 -0.191004 -2.030232
286 | v -0.074125 -0.372653 -1.896427
287 | v -0.106246 -0.534136 -1.662542
288 | v -0.131768 -0.662446 -1.301634
289 | v -0.147713 -0.742606 -0.787693
290 | v -0.151118 -0.759723 -0.112081
291 | v -0.140120 -0.704433 0.688753
292 | v -0.115680 -0.581562 1.510259
293 | v -0.082714 -0.415831 2.199700
294 | vt 0.746305 0.012962
295 | vt 0.746305 0.120979
296 | vt 0.715517 0.120979
297 | vt 0.715517 0.012962
298 | vt 0.746305 0.769079
299 | vt 0.746305 0.877096
300 | vt 0.715517 0.877096
301 | vt 0.715517 0.769079
302 | vt 0.746305 0.661062
303 | vt 0.715517 0.661062
304 | vt 0.746305 0.553046
305 | vt 0.715517 0.553046
306 | vt 0.746305 0.445029
307 | vt 0.715517 0.445029
308 | vt 0.746305 0.337012
309 | vt 0.715517 0.337012
310 | vt 0.746305 0.228995
311 | vt 0.715517 0.228995
312 | vt 0.730911 0.985112
313 | vt 0.684729 0.228995
314 | vt 0.684729 0.120979
315 | vt 0.700123 0.985112
316 | vt 0.684729 0.877096
317 | vt 0.684729 0.012962
318 | vt 0.684729 0.769079
319 | vt 0.684729 0.661062
320 | vt 0.684729 0.553046
321 | vt 0.684729 0.445029
322 | vt 0.684729 0.337012
323 | vt 0.653941 0.661062
324 | vt 0.653941 0.553046
325 | vt 0.653941 0.445029
326 | vt 0.653941 0.337012
327 | vt 0.653941 0.228995
328 | vt 0.653941 0.120979
329 | vt 0.669335 0.985112
330 | vt 0.653940 0.877096
331 | vt 0.653941 0.012962
332 | vt 0.653941 0.769079
333 | vt 0.623152 0.228995
334 | vt 0.623152 0.120979
335 | vt 0.638546 0.985112
336 | vt 0.623152 0.877095
337 | vt 0.623152 0.012962
338 | vt 0.623152 0.769079
339 | vt 0.623152 0.661062
340 | vt 0.623152 0.553046
341 | vt 0.623152 0.445029
342 | vt 0.623152 0.337012
343 | vt 0.592364 0.553046
344 | vt 0.592364 0.445029
345 | vt 0.592364 0.337012
346 | vt 0.592364 0.228995
347 | vt 0.592364 0.120979
348 | vt 0.607758 0.985112
349 | vt 0.592364 0.877095
350 | vt 0.592364 0.012962
351 | vt 0.592364 0.769079
352 | vt 0.592364 0.661062
353 | vt 0.561576 0.120979
354 | vt 0.561576 0.012962
355 | vt 0.561576 0.877095
356 | vt 0.561576 0.769079
357 | vt 0.561576 0.661062
358 | vt 0.561576 0.553046
359 | vt 0.561576 0.445029
360 | vt 0.561576 0.337012
361 | vt 0.561576 0.228995
362 | vt 0.576970 0.985112
363 | vt 0.530788 0.445029
364 | vt 0.530788 0.337012
365 | vt 0.530788 0.228995
366 | vt 0.530788 0.120979
367 | vt 0.546182 0.985112
368 | vt 0.530788 0.877095
369 | vt 0.530788 0.012962
370 | vt 0.530788 0.769079
371 | vt 0.530788 0.661062
372 | vt 0.530788 0.553046
373 | vt 0.500000 0.877095
374 | vt 0.500000 0.769079
375 | vt 0.500000 0.661062
376 | vt 0.500000 0.553046
377 | vt 0.500000 0.445029
378 | vt 0.500000 0.337012
379 | vt 0.500000 0.228995
380 | vt 0.500000 0.120979
381 | vt 0.515393 0.985112
382 | vt 0.500000 0.012962
383 | vt 0.469212 0.445029
384 | vt 0.469212 0.337012
385 | vt 0.469212 0.228995
386 | vt 0.469212 0.120979
387 | vt 0.484605 0.985112
388 | vt 0.469211 0.877095
389 | vt 0.469212 0.012962
390 | vt 0.469212 0.769079
391 | vt 0.469212 0.661062
392 | vt 0.469212 0.553046
393 | vt 0.438423 0.769079
394 | vt 0.438423 0.661062
395 | vt 0.438423 0.553046
396 | vt 0.438423 0.445029
397 | vt 0.438424 0.337012
398 | vt 0.438423 0.228995
399 | vt 0.438423 0.120979
400 | vt 0.453817 0.985112
401 | vt 0.438423 0.877095
402 | vt 0.438423 0.012962
403 | vt 0.407635 0.337012
404 | vt 0.407635 0.228995
405 | vt 0.407635 0.120979
406 | vt 0.423029 0.985112
407 | vt 0.407635 0.877095
408 | vt 0.407635 0.012962
409 | vt 0.407635 0.769079
410 | vt 0.407635 0.661062
411 | vt 0.407635 0.553045
412 | vt 0.407635 0.445029
413 | vt 0.376847 0.769079
414 | vt 0.376847 0.661062
415 | vt 0.376847 0.553046
416 | vt 0.376847 0.445029
417 | vt 0.376847 0.337012
418 | vt 0.376847 0.228995
419 | vt 0.376847 0.120979
420 | vt 0.392241 0.985112
421 | vt 0.376847 0.877095
422 | vt 0.376847 0.012962
423 | vt 0.346059 0.337012
424 | vt 0.346059 0.228995
425 | vt 0.346059 0.120979
426 | vt 0.361453 0.985112
427 | vt 0.346059 0.877095
428 | vt 0.346059 0.012962
429 | vt 0.346059 0.769079
430 | vt 0.346059 0.661062
431 | vt 0.346059 0.553045
432 | vt 0.346059 0.445029
433 | vt 0.315271 0.661062
434 | vt 0.315271 0.553046
435 | vt 0.315271 0.445029
436 | vt 0.315271 0.337012
437 | vt 0.315271 0.228995
438 | vt 0.315271 0.120979
439 | vt 0.330665 0.985112
440 | vt 0.315271 0.877095
441 | vt 0.315271 0.012962
442 | vt 0.315271 0.769079
443 | vt 0.284483 0.228995
444 | vt 0.284483 0.120979
445 | vt 0.299877 0.985112
446 | vt 0.284483 0.877095
447 | vt 0.284483 0.012962
448 | vt 0.284483 0.769079
449 | vt 0.284483 0.661062
450 | vt 0.284483 0.553046
451 | vt 0.284483 0.445029
452 | vt 0.284483 0.337012
453 | vt 0.253695 0.553046
454 | vt 0.253695 0.445029
455 | vt 0.253695 0.337012
456 | vt 0.253695 0.228995
457 | vt 0.253695 0.120979
458 | vt 0.269088 0.985112
459 | vt 0.253694 0.877095
460 | vt 0.253694 0.012962
461 | vt 0.253695 0.769079
462 | vt 0.253695 0.661062
463 | vt 0.238300 0.985112
464 | vt 0.222906 0.877095
465 | vt 0.222906 0.120979
466 | vt 0.222906 0.012962
467 | vt 0.222906 0.769079
468 | vt 0.222906 0.661062
469 | vt 0.222906 0.553046
470 | vt 0.222906 0.445029
471 | vt 0.222906 0.337012
472 | vt 0.222906 0.228995
473 | vt 0.192118 0.553046
474 | vt 0.192118 0.445029
475 | vt 0.192118 0.337012
476 | vt 0.192118 0.228995
477 | vt 0.192118 0.120979
478 | vt 0.207512 0.985112
479 | vt 0.192118 0.877095
480 | vt 0.192118 0.012962
481 | vt 0.192118 0.769079
482 | vt 0.192118 0.661062
483 | vt 0.161330 0.120979
484 | vt 0.161330 0.012962
485 | vt 0.161330 0.877095
486 | vt 0.161330 0.769079
487 | vt 0.161330 0.661062
488 | vt 0.161330 0.553046
489 | vt 0.161330 0.445029
490 | vt 0.161330 0.337012
491 | vt 0.161330 0.228995
492 | vt 0.176724 0.985112
493 | vt 0.130542 0.445029
494 | vt 0.130542 0.337012
495 | vt 0.130542 0.228995
496 | vt 0.130542 0.120979
497 | vt 0.145936 0.985112
498 | vt 0.130542 0.877095
499 | vt 0.130542 0.012962
500 | vt 0.130542 0.769079
501 | vt 0.130542 0.661062
502 | vt 0.130542 0.553046
503 | vt 0.099754 0.877095
504 | vt 0.099754 0.769079
505 | vt 0.099754 0.661062
506 | vt 0.099754 0.553046
507 | vt 0.099754 0.445029
508 | vt 0.099754 0.337012
509 | vt 0.099754 0.228995
510 | vt 0.099754 0.120979
511 | vt 0.115148 0.985112
512 | vt 0.099754 0.012962
513 | vt 0.068966 0.445029
514 | vt 0.068966 0.337012
515 | vt 0.068966 0.228996
516 | vt 0.068966 0.120979
517 | vt 0.084360 0.985112
518 | vt 0.068966 0.877095
519 | vt 0.068966 0.012962
520 | vt 0.068966 0.769079
521 | vt 0.068966 0.661062
522 | vt 0.068966 0.553046
523 | vt 0.038177 0.769079
524 | vt 0.038177 0.661062
525 | vt 0.038177 0.553046
526 | vt 0.038177 0.445029
527 | vt 0.038177 0.337012
528 | vt 0.038177 0.228996
529 | vt 0.038177 0.120979
530 | vt 0.053572 0.985112
531 | vt 0.038178 0.877095
532 | vt 0.038177 0.012962
533 | vt 0.007389 0.337012
534 | vt 0.007389 0.228996
535 | vt 0.007389 0.120979
536 | vt 0.022784 0.985112
537 | vt 0.007389 0.877096
538 | vt 0.007389 0.012962
539 | vt 0.007389 0.769079
540 | vt 0.007389 0.661062
541 | vt 0.007389 0.553046
542 | vt 0.007389 0.445029
543 | vt 0.992611 0.553046
544 | vt 0.992611 0.661062
545 | vt 0.961822 0.661062
546 | vt 0.961822 0.553046
547 | vt 0.992611 0.445029
548 | vt 0.961822 0.445029
549 | vt 0.992611 0.337012
550 | vt 0.961822 0.337012
551 | vt 0.992611 0.228996
552 | vt 0.961822 0.228996
553 | vt 0.992611 0.120979
554 | vt 0.961822 0.120979
555 | vt 0.992611 0.877096
556 | vt 0.977217 0.985112
557 | vt 0.961823 0.877096
558 | vt 0.992611 0.012962
559 | vt 0.961822 0.012962
560 | vt 0.992611 0.769079
561 | vt 0.961823 0.769079
562 | vt 0.931034 0.228996
563 | vt 0.931034 0.120979
564 | vt 0.946429 0.985112
565 | vt 0.931034 0.877096
566 | vt 0.931034 0.012962
567 | vt 0.931034 0.769079
568 | vt 0.931034 0.661062
569 | vt 0.931034 0.553046
570 | vt 0.931034 0.445029
571 | vt 0.931034 0.337012
572 | vt 0.900246 0.661062
573 | vt 0.900246 0.553046
574 | vt 0.900246 0.445029
575 | vt 0.900246 0.337012
576 | vt 0.900246 0.228996
577 | vt 0.900246 0.120979
578 | vt 0.915641 0.985112
579 | vt 0.900246 0.877096
580 | vt 0.900246 0.012962
581 | vt 0.900246 0.769079
582 | vt 0.869458 0.228996
583 | vt 0.869458 0.120979
584 | vt 0.884852 0.985112
585 | vt 0.869458 0.877096
586 | vt 0.869458 0.012962
587 | vt 0.869458 0.769079
588 | vt 0.869458 0.661062
589 | vt 0.869458 0.553046
590 | vt 0.869458 0.445029
591 | vt 0.869458 0.337012
592 | vt 0.838670 0.553046
593 | vt 0.838670 0.445029
594 | vt 0.838670 0.337012
595 | vt 0.838670 0.228996
596 | vt 0.838670 0.120979
597 | vt 0.854064 0.985112
598 | vt 0.838670 0.877096
599 | vt 0.838670 0.012962
600 | vt 0.838670 0.769079
601 | vt 0.838670 0.661062
602 | vt 0.823276 0.985112
603 | vt 0.807882 0.877096
604 | vt 0.807882 0.120979
605 | vt 0.807882 0.012962
606 | vt 0.807882 0.769079
607 | vt 0.807882 0.661062
608 | vt 0.807882 0.553046
609 | vt 0.807882 0.445029
610 | vt 0.807882 0.337012
611 | vt 0.807882 0.228996
612 | vt 0.777093 0.553046
613 | vt 0.777093 0.445029
614 | vt 0.777093 0.337012
615 | vt 0.777093 0.228996
616 | vt 0.777093 0.120979
617 | vt 0.792488 0.985112
618 | vt 0.777093 0.877096
619 | vt 0.777093 0.012962
620 | vt 0.777093 0.769079
621 | vt 0.777093 0.661062
622 | vt 0.761699 0.985112
623 | vn 0.0000 -0.9713 0.2380
624 | vn 0.0000 -0.9810 0.1940
625 | vn 0.1914 -0.9621 0.1940
626 | vn 0.1895 -0.9526 0.2380
627 | vn 0.0000 -0.7164 -0.6976
628 | vn 0.0000 -0.4450 -0.8955
629 | vn 0.0868 -0.4365 -0.8955
630 | vn 0.1397 -0.7027 -0.6976
631 | vn 0.0000 -0.8885 -0.4589
632 | vn 0.1733 -0.8714 -0.4589
633 | vn 0.0000 -0.9686 -0.2486
634 | vn 0.1889 -0.9500 -0.2486
635 | vn 0.0000 -0.9958 -0.0913
636 | vn 0.1943 -0.9767 -0.0913
637 | vn 0.0000 -0.9997 0.0222
638 | vn 0.1950 -0.9805 0.0222
639 | vn 0.0000 -0.9939 0.1103
640 | vn 0.1939 -0.9748 0.1103
641 | vn 0.0000 0.0000 -1.0000
642 | vn 0.3803 -0.9182 0.1103
643 | vn 0.3754 -0.9063 0.1940
644 | vn 0.1703 -0.4111 -0.8955
645 | vn 0.3717 -0.8973 0.2380
646 | vn 0.2741 -0.6619 -0.6976
647 | vn 0.3400 -0.8208 -0.4589
648 | vn 0.3706 -0.8949 -0.2486
649 | vn 0.3811 -0.9200 -0.0913
650 | vn 0.3826 -0.9236 0.0222
651 | vn 0.4936 -0.7387 -0.4589
652 | vn 0.5381 -0.8054 -0.2486
653 | vn 0.5532 -0.8280 -0.0913
654 | vn 0.5554 -0.8313 0.0222
655 | vn 0.5522 -0.8264 0.1103
656 | vn 0.5450 -0.8156 0.1940
657 | vn 0.2472 -0.3700 -0.8955
658 | vn 0.5396 -0.8076 0.2380
659 | vn 0.3980 -0.5957 -0.6976
660 | vn 0.7028 -0.7028 0.1103
661 | vn 0.6937 -0.6937 0.1940
662 | vn 0.3147 -0.3147 -0.8955
663 | vn 0.6868 -0.6868 0.2380
664 | vn 0.5066 -0.5066 -0.6976
665 | vn 0.6282 -0.6282 -0.4589
666 | vn 0.6849 -0.6849 -0.2486
667 | vn 0.7042 -0.7042 -0.0913
668 | vn 0.7069 -0.7069 0.0222
669 | vn 0.8054 -0.5381 -0.2486
670 | vn 0.8280 -0.5532 -0.0913
671 | vn 0.8313 -0.5554 0.0222
672 | vn 0.8264 -0.5522 0.1103
673 | vn 0.8156 -0.5450 0.1940
674 | vn 0.3700 -0.2472 -0.8955
675 | vn 0.8076 -0.5396 0.2380
676 | vn 0.5957 -0.3980 -0.6976
677 | vn 0.7387 -0.4936 -0.4589
678 | vn 0.9063 -0.3754 0.1940
679 | vn 0.8973 -0.3717 0.2380
680 | vn 0.4111 -0.1703 -0.8955
681 | vn 0.6619 -0.2741 -0.6976
682 | vn 0.8208 -0.3400 -0.4589
683 | vn 0.8949 -0.3706 -0.2486
684 | vn 0.9200 -0.3811 -0.0913
685 | vn 0.9236 -0.3826 0.0222
686 | vn 0.9182 -0.3803 0.1103
687 | vn 0.9767 -0.1943 -0.0913
688 | vn 0.9805 -0.1950 0.0222
689 | vn 0.9748 -0.1939 0.1103
690 | vn 0.9621 -0.1914 0.1940
691 | vn 0.4365 -0.0868 -0.8955
692 | vn 0.9526 -0.1895 0.2380
693 | vn 0.7027 -0.1397 -0.6976
694 | vn 0.8714 -0.1733 -0.4589
695 | vn 0.9500 -0.1889 -0.2486
696 | vn 0.4450 0.0000 -0.8955
697 | vn 0.7164 0.0000 -0.6976
698 | vn 0.8885 0.0000 -0.4589
699 | vn 0.9686 0.0000 -0.2486
700 | vn 0.9958 0.0000 -0.0913
701 | vn 0.9997 0.0000 0.0222
702 | vn 0.9939 0.0000 0.1103
703 | vn 0.9810 0.0000 0.1940
704 | vn 0.9713 0.0000 0.2380
705 | vn 0.9767 0.1943 -0.0913
706 | vn 0.9805 0.1950 0.0222
707 | vn 0.9748 0.1939 0.1103
708 | vn 0.9621 0.1914 0.1940
709 | vn 0.4365 0.0868 -0.8955
710 | vn 0.9526 0.1895 0.2380
711 | vn 0.7027 0.1397 -0.6976
712 | vn 0.8714 0.1733 -0.4589
713 | vn 0.9500 0.1889 -0.2486
714 | vn 0.6619 0.2741 -0.6976
715 | vn 0.8208 0.3400 -0.4589
716 | vn 0.8949 0.3706 -0.2486
717 | vn 0.9200 0.3811 -0.0913
718 | vn 0.9236 0.3826 0.0222
719 | vn 0.9182 0.3803 0.1103
720 | vn 0.9063 0.3754 0.1940
721 | vn 0.4111 0.1703 -0.8955
722 | vn 0.8973 0.3717 0.2380
723 | vn 0.8313 0.5554 0.0222
724 | vn 0.8264 0.5522 0.1103
725 | vn 0.8156 0.5450 0.1940
726 | vn 0.3700 0.2472 -0.8955
727 | vn 0.8076 0.5396 0.2380
728 | vn 0.5957 0.3980 -0.6976
729 | vn 0.7387 0.4936 -0.4589
730 | vn 0.8054 0.5381 -0.2486
731 | vn 0.8280 0.5532 -0.0913
732 | vn 0.5066 0.5066 -0.6976
733 | vn 0.6282 0.6282 -0.4589
734 | vn 0.6849 0.6849 -0.2486
735 | vn 0.7042 0.7042 -0.0913
736 | vn 0.7069 0.7069 0.0222
737 | vn 0.7028 0.7028 0.1103
738 | vn 0.6937 0.6937 0.1940
739 | vn 0.3147 0.3147 -0.8955
740 | vn 0.6868 0.6868 0.2380
741 | vn 0.5554 0.8313 0.0222
742 | vn 0.5522 0.8264 0.1103
743 | vn 0.5450 0.8156 0.1940
744 | vn 0.2472 0.3700 -0.8955
745 | vn 0.5396 0.8076 0.2380
746 | vn 0.3980 0.5957 -0.6976
747 | vn 0.4936 0.7387 -0.4589
748 | vn 0.5381 0.8054 -0.2486
749 | vn 0.5532 0.8280 -0.0913
750 | vn 0.3400 0.8208 -0.4589
751 | vn 0.3706 0.8949 -0.2486
752 | vn 0.3811 0.9200 -0.0913
753 | vn 0.3826 0.9236 0.0222
754 | vn 0.3803 0.9182 0.1103
755 | vn 0.3754 0.9063 0.1940
756 | vn 0.1703 0.4111 -0.8955
757 | vn 0.3717 0.8973 0.2380
758 | vn 0.2741 0.6619 -0.6976
759 | vn 0.1939 0.9748 0.1103
760 | vn 0.1914 0.9621 0.1940
761 | vn 0.0868 0.4365 -0.8955
762 | vn 0.1895 0.9526 0.2380
763 | vn 0.1397 0.7027 -0.6976
764 | vn 0.1733 0.8714 -0.4589
765 | vn 0.1889 0.9500 -0.2486
766 | vn 0.1943 0.9767 -0.0913
767 | vn 0.1950 0.9805 0.0222
768 | vn 0.0000 0.9686 -0.2486
769 | vn 0.0000 0.9958 -0.0913
770 | vn 0.0000 0.9997 0.0222
771 | vn 0.0000 0.9939 0.1103
772 | vn 0.0000 0.9810 0.1940
773 | vn 0.0000 0.4450 -0.8955
774 | vn 0.0000 0.9713 0.2380
775 | vn 0.0000 0.7164 -0.6976
776 | vn 0.0000 0.8885 -0.4589
777 | vn -0.0868 0.4365 -0.8955
778 | vn -0.1914 0.9621 0.1940
779 | vn -0.1895 0.9526 0.2380
780 | vn -0.1397 0.7027 -0.6976
781 | vn -0.1733 0.8714 -0.4589
782 | vn -0.1889 0.9500 -0.2486
783 | vn -0.1943 0.9767 -0.0913
784 | vn -0.1950 0.9805 0.0222
785 | vn -0.1939 0.9748 0.1103
786 | vn -0.3706 0.8949 -0.2486
787 | vn -0.3811 0.9200 -0.0913
788 | vn -0.3826 0.9236 0.0222
789 | vn -0.3803 0.9182 0.1103
790 | vn -0.3754 0.9063 0.1940
791 | vn -0.1703 0.4111 -0.8955
792 | vn -0.3717 0.8973 0.2380
793 | vn -0.2741 0.6619 -0.6976
794 | vn -0.3400 0.8208 -0.4589
795 | vn -0.5450 0.8156 0.1940
796 | vn -0.5396 0.8076 0.2380
797 | vn -0.2472 0.3700 -0.8955
798 | vn -0.3980 0.5957 -0.6976
799 | vn -0.4936 0.7387 -0.4589
800 | vn -0.5381 0.8054 -0.2486
801 | vn -0.5532 0.8280 -0.0913
802 | vn -0.5554 0.8313 0.0222
803 | vn -0.5522 0.8264 0.1103
804 | vn -0.7042 0.7042 -0.0913
805 | vn -0.7069 0.7069 0.0222
806 | vn -0.7028 0.7028 0.1103
807 | vn -0.6937 0.6937 0.1940
808 | vn -0.3147 0.3147 -0.8955
809 | vn -0.6868 0.6868 0.2380
810 | vn -0.5066 0.5066 -0.6976
811 | vn -0.6282 0.6282 -0.4589
812 | vn -0.6849 0.6849 -0.2486
813 | vn -0.3700 0.2472 -0.8955
814 | vn -0.5957 0.3980 -0.6976
815 | vn -0.7387 0.4936 -0.4589
816 | vn -0.8054 0.5381 -0.2486
817 | vn -0.8280 0.5532 -0.0913
818 | vn -0.8313 0.5554 0.0222
819 | vn -0.8264 0.5522 0.1103
820 | vn -0.8156 0.5450 0.1940
821 | vn -0.8076 0.5396 0.2380
822 | vn -0.9200 0.3811 -0.0913
823 | vn -0.9236 0.3826 0.0222
824 | vn -0.9182 0.3803 0.1103
825 | vn -0.9063 0.3754 0.1940
826 | vn -0.4111 0.1703 -0.8955
827 | vn -0.8973 0.3717 0.2380
828 | vn -0.6619 0.2741 -0.6976
829 | vn -0.8208 0.3400 -0.4589
830 | vn -0.8949 0.3706 -0.2486
831 | vn -0.7027 0.1397 -0.6976
832 | vn -0.8714 0.1733 -0.4589
833 | vn -0.9500 0.1889 -0.2486
834 | vn -0.9767 0.1943 -0.0913
835 | vn -0.9805 0.1950 0.0222
836 | vn -0.9748 0.1939 0.1103
837 | vn -0.9621 0.1914 0.1940
838 | vn -0.4365 0.0868 -0.8955
839 | vn -0.9526 0.1895 0.2380
840 | vn -0.9997 0.0000 0.0222
841 | vn -0.9939 0.0000 0.1103
842 | vn -0.9810 0.0000 0.1940
843 | vn -0.4450 0.0000 -0.8955
844 | vn -0.9713 0.0000 0.2380
845 | vn -0.7164 0.0000 -0.6976
846 | vn -0.8885 0.0000 -0.4589
847 | vn -0.9686 0.0000 -0.2486
848 | vn -0.9958 0.0000 -0.0913
849 | vn -0.8714 -0.1733 -0.4589
850 | vn -0.9500 -0.1889 -0.2486
851 | vn -0.9767 -0.1943 -0.0913
852 | vn -0.9805 -0.1950 0.0222
853 | vn -0.9748 -0.1939 0.1103
854 | vn -0.9621 -0.1914 0.1940
855 | vn -0.4365 -0.0868 -0.8955
856 | vn -0.9526 -0.1895 0.2380
857 | vn -0.7027 -0.1397 -0.6976
858 | vn -0.9182 -0.3803 0.1103
859 | vn -0.9063 -0.3754 0.1940
860 | vn -0.4111 -0.1703 -0.8955
861 | vn -0.8973 -0.3717 0.2380
862 | vn -0.6619 -0.2741 -0.6976
863 | vn -0.8208 -0.3400 -0.4589
864 | vn -0.8949 -0.3706 -0.2486
865 | vn -0.9200 -0.3811 -0.0913
866 | vn -0.9236 -0.3826 0.0222
867 | vn -0.7387 -0.4936 -0.4589
868 | vn -0.8054 -0.5381 -0.2486
869 | vn -0.8280 -0.5532 -0.0913
870 | vn -0.8313 -0.5554 0.0222
871 | vn -0.8264 -0.5522 0.1103
872 | vn -0.8156 -0.5450 0.1940
873 | vn -0.3700 -0.2472 -0.8955
874 | vn -0.8076 -0.5396 0.2380
875 | vn -0.5957 -0.3980 -0.6976
876 | vn -0.7028 -0.7028 0.1103
877 | vn -0.6937 -0.6937 0.1940
878 | vn -0.3147 -0.3147 -0.8955
879 | vn -0.6868 -0.6868 0.2380
880 | vn -0.5066 -0.5066 -0.6976
881 | vn -0.6282 -0.6282 -0.4589
882 | vn -0.6849 -0.6849 -0.2486
883 | vn -0.7042 -0.7042 -0.0913
884 | vn -0.7069 -0.7069 0.0222
885 | vn -0.5381 -0.8054 -0.2486
886 | vn -0.5532 -0.8280 -0.0913
887 | vn -0.5554 -0.8313 0.0222
888 | vn -0.5522 -0.8264 0.1103
889 | vn -0.5450 -0.8156 0.1940
890 | vn -0.2472 -0.3700 -0.8955
891 | vn -0.5396 -0.8076 0.2380
892 | vn -0.3980 -0.5957 -0.6976
893 | vn -0.4936 -0.7387 -0.4589
894 | vn -0.1703 -0.4111 -0.8955
895 | vn -0.3754 -0.9063 0.1940
896 | vn -0.3717 -0.8973 0.2380
897 | vn -0.2741 -0.6619 -0.6976
898 | vn -0.3400 -0.8208 -0.4589
899 | vn -0.3706 -0.8949 -0.2486
900 | vn -0.3811 -0.9200 -0.0913
901 | vn -0.3826 -0.9236 0.0222
902 | vn -0.3803 -0.9182 0.1103
903 | vn -0.1889 -0.9500 -0.2486
904 | vn -0.1943 -0.9767 -0.0913
905 | vn -0.1950 -0.9805 0.0222
906 | vn -0.1939 -0.9748 0.1103
907 | vn -0.1914 -0.9621 0.1940
908 | vn -0.0868 -0.4365 -0.8955
909 | vn -0.1895 -0.9526 0.2380
910 | vn -0.1397 -0.7027 -0.6976
911 | vn -0.1733 -0.8714 -0.4589
912 | usemtl mat
913 | s 1
914 | f 9/1/1 8/2/2 17/3/3 18/4/4
915 | f 2/5/5 1/6/6 10/7/7 11/8/8
916 | f 3/9/9 2/5/5 11/8/8 12/10/10
917 | f 4/11/11 3/9/9 12/10/10 13/12/12
918 | f 5/13/13 4/11/11 13/12/12 14/14/14
919 | f 6/15/15 5/13/13 14/14/14 15/16/16
920 | f 7/17/17 6/15/15 15/16/16 16/18/18
921 | f 8/2/2 7/17/17 16/18/18 17/3/3
922 | f 1/6/6 181/19/19 10/7/7
923 | f 17/3/3 16/18/18 25/20/20 26/21/21
924 | f 10/7/7 181/22/19 19/23/22
925 | f 18/4/4 17/3/3 26/21/21 27/24/23
926 | f 11/8/8 10/7/7 19/23/22 20/25/24
927 | f 12/10/10 11/8/8 20/25/24 21/26/25
928 | f 13/12/12 12/10/10 21/26/25 22/27/26
929 | f 14/14/14 13/12/12 22/27/26 23/28/27
930 | f 15/16/16 14/14/14 23/28/27 24/29/28
931 | f 16/18/18 15/16/16 24/29/28 25/20/20
932 | f 22/27/26 21/26/25 30/30/29 31/31/30
933 | f 23/28/27 22/27/26 31/31/30 32/32/31
934 | f 24/29/28 23/28/27 32/32/31 33/33/32
935 | f 25/20/20 24/29/28 33/33/32 34/34/33
936 | f 26/21/21 25/20/20 34/34/33 35/35/34
937 | f 19/23/22 181/36/19 28/37/35
938 | f 27/24/23 26/21/21 35/35/34 36/38/36
939 | f 20/25/24 19/23/22 28/37/35 29/39/37
940 | f 21/26/25 20/25/24 29/39/37 30/30/29
941 | f 35/35/34 34/34/33 43/40/38 44/41/39
942 | f 28/37/35 181/42/19 37/43/40
943 | f 36/38/36 35/35/34 44/41/39 45/44/41
944 | f 29/39/37 28/37/35 37/43/40 38/45/42
945 | f 30/30/29 29/39/37 38/45/42 39/46/43
946 | f 31/31/30 30/30/29 39/46/43 40/47/44
947 | f 32/32/31 31/31/30 40/47/44 41/48/45
948 | f 33/33/32 32/32/31 41/48/45 42/49/46
949 | f 34/34/33 33/33/32 42/49/46 43/40/38
950 | f 41/48/45 40/47/44 49/50/47 50/51/48
951 | f 42/49/46 41/48/45 50/51/48 51/52/49
952 | f 43/40/38 42/49/46 51/52/49 52/53/50
953 | f 44/41/39 43/40/38 52/53/50 53/54/51
954 | f 37/43/40 181/55/19 46/56/52
955 | f 45/44/41 44/41/39 53/54/51 54/57/53
956 | f 38/45/42 37/43/40 46/56/52 47/58/54
957 | f 39/46/43 38/45/42 47/58/54 48/59/55
958 | f 40/47/44 39/46/43 48/59/55 49/50/47
959 | f 54/57/53 53/54/51 62/60/56 63/61/57
960 | f 47/58/54 46/56/52 55/62/58 56/63/59
961 | f 48/59/55 47/58/54 56/63/59 57/64/60
962 | f 49/50/47 48/59/55 57/64/60 58/65/61
963 | f 50/51/48 49/50/47 58/65/61 59/66/62
964 | f 51/52/49 50/51/48 59/66/62 60/67/63
965 | f 52/53/50 51/52/49 60/67/63 61/68/64
966 | f 53/54/51 52/53/50 61/68/64 62/60/56
967 | f 46/56/52 181/69/19 55/62/58
968 | f 60/67/63 59/66/62 68/70/65 69/71/66
969 | f 61/68/64 60/67/63 69/71/66 70/72/67
970 | f 62/60/56 61/68/64 70/72/67 71/73/68
971 | f 55/62/58 181/74/19 64/75/69
972 | f 63/61/57 62/60/56 71/73/68 72/76/70
973 | f 56/63/59 55/62/58 64/75/69 65/77/71
974 | f 57/64/60 56/63/59 65/77/71 66/78/72
975 | f 58/65/61 57/64/60 66/78/72 67/79/73
976 | f 59/66/62 58/65/61 67/79/73 68/70/65
977 | f 65/77/71 64/75/69 73/80/74 74/81/75
978 | f 66/78/72 65/77/71 74/81/75 75/82/76
979 | f 67/79/73 66/78/72 75/82/76 76/83/77
980 | f 68/70/65 67/79/73 76/83/77 77/84/78
981 | f 69/71/66 68/70/65 77/84/78 78/85/79
982 | f 70/72/67 69/71/66 78/85/79 79/86/80
983 | f 71/73/68 70/72/67 79/86/80 80/87/81
984 | f 64/75/69 181/88/19 73/80/74
985 | f 72/76/70 71/73/68 80/87/81 81/89/82
986 | f 78/85/79 77/84/78 86/90/83 87/91/84
987 | f 79/86/80 78/85/79 87/91/84 88/92/85
988 | f 80/87/81 79/86/80 88/92/85 89/93/86
989 | f 73/80/74 181/94/19 82/95/87
990 | f 81/89/82 80/87/81 89/93/86 90/96/88
991 | f 74/81/75 73/80/74 82/95/87 83/97/89
992 | f 75/82/76 74/81/75 83/97/89 84/98/90
993 | f 76/83/77 75/82/76 84/98/90 85/99/91
994 | f 77/84/78 76/83/77 85/99/91 86/90/83
995 | f 84/98/90 83/97/89 92/100/92 93/101/93
996 | f 85/99/91 84/98/90 93/101/93 94/102/94
997 | f 86/90/83 85/99/91 94/102/94 95/103/95
998 | f 87/91/84 86/90/83 95/103/95 96/104/96
999 | f 88/92/85 87/91/84 96/104/96 97/105/97
1000 | f 89/93/86 88/92/85 97/105/97 98/106/98
1001 | f 82/95/87 181/107/19 91/108/99
1002 | f 90/96/88 89/93/86 98/106/98 99/109/100
1003 | f 83/97/89 82/95/87 91/108/99 92/100/92
1004 | f 97/105/97 96/104/96 105/110/101 106/111/102
1005 | f 98/106/98 97/105/97 106/111/102 107/112/103
1006 | f 91/108/99 181/113/19 100/114/104
1007 | f 99/109/100 98/106/98 107/112/103 108/115/105
1008 | f 92/100/92 91/108/99 100/114/104 101/116/106
1009 | f 93/101/93 92/100/92 101/116/106 102/117/107
1010 | f 94/102/94 93/101/93 102/117/107 103/118/108
1011 | f 95/103/95 94/102/94 103/118/108 104/119/109
1012 | f 96/104/96 95/103/95 104/119/109 105/110/101
1013 | f 102/117/107 101/116/106 110/120/110 111/121/111
1014 | f 103/118/108 102/117/107 111/121/111 112/122/112
1015 | f 104/119/109 103/118/108 112/122/112 113/123/113
1016 | f 105/110/101 104/119/109 113/123/113 114/124/114
1017 | f 106/111/102 105/110/101 114/124/114 115/125/115
1018 | f 107/112/103 106/111/102 115/125/115 116/126/116
1019 | f 100/114/104 181/127/19 109/128/117
1020 | f 108/115/105 107/112/103 116/126/116 117/129/118
1021 | f 101/116/106 100/114/104 109/128/117 110/120/110
1022 | f 115/125/115 114/124/114 123/130/119 124/131/120
1023 | f 116/126/116 115/125/115 124/131/120 125/132/121
1024 | f 109/128/117 181/133/19 118/134/122
1025 | f 117/129/118 116/126/116 125/132/121 126/135/123
1026 | f 110/120/110 109/128/117 118/134/122 119/136/124
1027 | f 111/121/111 110/120/110 119/136/124 120/137/125
1028 | f 112/122/112 111/121/111 120/137/125 121/138/126
1029 | f 113/123/113 112/122/112 121/138/126 122/139/127
1030 | f 114/124/114 113/123/113 122/139/127 123/130/119
1031 | f 121/138/126 120/137/125 129/140/128 130/141/129
1032 | f 122/139/127 121/138/126 130/141/129 131/142/130
1033 | f 123/130/119 122/139/127 131/142/130 132/143/131
1034 | f 124/131/120 123/130/119 132/143/131 133/144/132
1035 | f 125/132/121 124/131/120 133/144/132 134/145/133
1036 | f 118/134/122 181/146/19 127/147/134
1037 | f 126/135/123 125/132/121 134/145/133 135/148/135
1038 | f 119/136/124 118/134/122 127/147/134 128/149/136
1039 | f 120/137/125 119/136/124 128/149/136 129/140/128
1040 | f 134/145/133 133/144/132 142/150/137 143/151/138
1041 | f 127/147/134 181/152/19 136/153/139
1042 | f 135/148/135 134/145/133 143/151/138 144/154/140
1043 | f 128/149/136 127/147/134 136/153/139 137/155/141
1044 | f 129/140/128 128/149/136 137/155/141 138/156/142
1045 | f 130/141/129 129/140/128 138/156/142 139/157/143
1046 | f 131/142/130 130/141/129 139/157/143 140/158/144
1047 | f 132/143/131 131/142/130 140/158/144 141/159/145
1048 | f 133/144/132 132/143/131 141/159/145 142/150/137
1049 | f 140/158/144 139/157/143 148/160/146 149/161/147
1050 | f 141/159/145 140/158/144 149/161/147 150/162/148
1051 | f 142/150/137 141/159/145 150/162/148 151/163/149
1052 | f 143/151/138 142/150/137 151/163/149 152/164/150
1053 | f 136/153/139 181/165/19 145/166/151
1054 | f 144/154/140 143/151/138 152/164/150 153/167/152
1055 | f 137/155/141 136/153/139 145/166/151 146/168/153
1056 | f 138/156/142 137/155/141 146/168/153 147/169/154
1057 | f 139/157/143 138/156/142 147/169/154 148/160/146
1058 | f 145/166/151 181/170/19 154/171/155
1059 | f 153/167/152 152/164/150 161/172/156 162/173/157
1060 | f 146/168/153 145/166/151 154/171/155 155/174/158
1061 | f 147/169/154 146/168/153 155/174/158 156/175/159
1062 | f 148/160/146 147/169/154 156/175/159 157/176/160
1063 | f 149/161/147 148/160/146 157/176/160 158/177/161
1064 | f 150/162/148 149/161/147 158/177/161 159/178/162
1065 | f 151/163/149 150/162/148 159/178/162 160/179/163
1066 | f 152/164/150 151/163/149 160/179/163 161/172/156
1067 | f 158/177/161 157/176/160 166/180/164 167/181/165
1068 | f 159/178/162 158/177/161 167/181/165 168/182/166
1069 | f 160/179/163 159/178/162 168/182/166 169/183/167
1070 | f 161/172/156 160/179/163 169/183/167 170/184/168
1071 | f 154/171/155 181/185/19 163/186/169
1072 | f 162/173/157 161/172/156 170/184/168 171/187/170
1073 | f 155/174/158 154/171/155 163/186/169 164/188/171
1074 | f 156/175/159 155/174/158 164/188/171 165/189/172
1075 | f 157/176/160 156/175/159 165/189/172 166/180/164
1076 | f 171/187/170 170/184/168 179/190/173 180/191/174
1077 | f 164/188/171 163/186/169 172/192/175 173/193/176
1078 | f 165/189/172 164/188/171 173/193/176 174/194/177
1079 | f 166/180/164 165/189/172 174/194/177 175/195/178
1080 | f 167/181/165 166/180/164 175/195/178 176/196/179
1081 | f 168/182/166 167/181/165 176/196/179 177/197/180
1082 | f 169/183/167 168/182/166 177/197/180 178/198/181
1083 | f 170/184/168 169/183/167 178/198/181 179/190/173
1084 | f 163/186/169 181/199/19 172/192/175
1085 | f 177/197/180 176/196/179 186/200/182 187/201/183
1086 | f 178/198/181 177/197/180 187/201/183 188/202/184
1087 | f 179/190/173 178/198/181 188/202/184 189/203/185
1088 | f 172/192/175 181/204/19 182/205/186
1089 | f 180/191/174 179/190/173 189/203/185 190/206/187
1090 | f 173/193/176 172/192/175 182/205/186 183/207/188
1091 | f 174/194/177 173/193/176 183/207/188 184/208/189
1092 | f 175/195/178 174/194/177 184/208/189 185/209/190
1093 | f 176/196/179 175/195/178 185/209/190 186/200/182
1094 | f 183/207/188 182/205/186 191/210/191 192/211/192
1095 | f 184/208/189 183/207/188 192/211/192 193/212/193
1096 | f 185/209/190 184/208/189 193/212/193 194/213/194
1097 | f 186/200/182 185/209/190 194/213/194 195/214/195
1098 | f 187/201/183 186/200/182 195/214/195 196/215/196
1099 | f 188/202/184 187/201/183 196/215/196 197/216/197
1100 | f 189/203/185 188/202/184 197/216/197 198/217/198
1101 | f 182/205/186 181/218/19 191/210/191
1102 | f 190/206/187 189/203/185 198/217/198 199/219/199
1103 | f 196/215/196 195/214/195 204/220/200 205/221/201
1104 | f 197/216/197 196/215/196 205/221/201 206/222/202
1105 | f 198/217/198 197/216/197 206/222/202 207/223/203
1106 | f 191/210/191 181/224/19 200/225/204
1107 | f 199/219/199 198/217/198 207/223/203 208/226/205
1108 | f 192/211/192 191/210/191 200/225/204 201/227/206
1109 | f 193/212/193 192/211/192 201/227/206 202/228/207
1110 | f 194/213/194 193/212/193 202/228/207 203/229/208
1111 | f 195/214/195 194/213/194 203/229/208 204/220/200
1112 | f 202/228/207 201/227/206 210/230/209 211/231/210
1113 | f 203/229/208 202/228/207 211/231/210 212/232/211
1114 | f 204/220/200 203/229/208 212/232/211 213/233/212
1115 | f 205/221/201 204/220/200 213/233/212 214/234/213
1116 | f 206/222/202 205/221/201 214/234/213 215/235/214
1117 | f 207/223/203 206/222/202 215/235/214 216/236/215
1118 | f 200/225/204 181/237/19 209/238/216
1119 | f 208/226/205 207/223/203 216/236/215 217/239/217
1120 | f 201/227/206 200/225/204 209/238/216 210/230/209
1121 | f 215/235/214 214/234/213 223/240/218 224/241/219
1122 | f 216/236/215 215/235/214 224/241/219 225/242/220
1123 | f 209/238/216 181/243/19 218/244/221
1124 | f 217/239/217 216/236/215 225/242/220 226/245/222
1125 | f 210/230/209 209/238/216 218/244/221 219/246/223
1126 | f 211/231/210 210/230/209 219/246/223 220/247/224
1127 | f 212/232/211 211/231/210 220/247/224 221/248/225
1128 | f 213/233/212 212/232/211 221/248/225 222/249/226
1129 | f 214/234/213 213/233/212 222/249/226 223/240/218
1130 | f 221/250/225 220/251/224 229/252/227 230/253/228
1131 | f 222/254/226 221/250/225 230/253/228 231/255/229
1132 | f 223/256/218 222/254/226 231/255/229 232/257/230
1133 | f 224/258/219 223/256/218 232/257/230 233/259/231
1134 | f 225/260/220 224/258/219 233/259/231 234/261/232
1135 | f 218/262/221 181/263/19 227/264/233
1136 | f 226/265/222 225/260/220 234/261/232 235/266/234
1137 | f 219/267/223 218/262/221 227/264/233 228/268/235
1138 | f 220/251/224 219/267/223 228/268/235 229/252/227
1139 | f 234/261/232 233/259/231 242/269/236 243/270/237
1140 | f 227/264/233 181/271/19 236/272/238
1141 | f 235/266/234 234/261/232 243/270/237 244/273/239
1142 | f 228/268/235 227/264/233 236/272/238 237/274/240
1143 | f 229/252/227 228/268/235 237/274/240 238/275/241
1144 | f 230/253/228 229/252/227 238/275/241 239/276/242
1145 | f 231/255/229 230/253/228 239/276/242 240/277/243
1146 | f 232/257/230 231/255/229 240/277/243 241/278/244
1147 | f 233/259/231 232/257/230 241/278/244 242/269/236
1148 | f 239/276/242 238/275/241 247/279/245 248/280/246
1149 | f 240/277/243 239/276/242 248/280/246 249/281/247
1150 | f 241/278/244 240/277/243 249/281/247 250/282/248
1151 | f 242/269/236 241/278/244 250/282/248 251/283/249
1152 | f 243/270/237 242/269/236 251/283/249 252/284/250
1153 | f 236/272/238 181/285/19 245/286/251
1154 | f 244/273/239 243/270/237 252/284/250 253/287/252
1155 | f 237/274/240 236/272/238 245/286/251 246/288/253
1156 | f 238/275/241 237/274/240 246/288/253 247/279/245
1157 | f 252/284/250 251/283/249 260/289/254 261/290/255
1158 | f 245/286/251 181/291/19 254/292/256
1159 | f 253/287/252 252/284/250 261/290/255 262/293/257
1160 | f 246/288/253 245/286/251 254/292/256 255/294/258
1161 | f 247/279/245 246/288/253 255/294/258 256/295/259
1162 | f 248/280/246 247/279/245 256/295/259 257/296/260
1163 | f 249/281/247 248/280/246 257/296/260 258/297/261
1164 | f 250/282/248 249/281/247 258/297/261 259/298/262
1165 | f 251/283/249 250/282/248 259/298/262 260/289/254
1166 | f 258/297/261 257/296/260 266/299/263 267/300/264
1167 | f 259/298/262 258/297/261 267/300/264 268/301/265
1168 | f 260/289/254 259/298/262 268/301/265 269/302/266
1169 | f 261/290/255 260/289/254 269/302/266 270/303/267
1170 | f 254/292/256 181/304/19 263/305/268
1171 | f 262/293/257 261/290/255 270/303/267 271/306/269
1172 | f 255/294/258 254/292/256 263/305/268 264/307/270
1173 | f 256/295/259 255/294/258 264/307/270 265/308/271
1174 | f 257/296/260 256/295/259 265/308/271 266/299/263
1175 | f 263/305/268 181/309/19 272/310/272
1176 | f 271/306/269 270/303/267 279/311/273 280/312/274
1177 | f 264/307/270 263/305/268 272/310/272 273/313/275
1178 | f 265/308/271 264/307/270 273/313/275 274/314/276
1179 | f 266/299/263 265/308/271 274/314/276 275/315/277
1180 | f 267/300/264 266/299/263 275/315/277 276/316/278
1181 | f 268/301/265 267/300/264 276/316/278 277/317/279
1182 | f 269/302/266 268/301/265 277/317/279 278/318/280
1183 | f 270/303/267 269/302/266 278/318/280 279/311/273
1184 | f 276/316/278 275/315/277 284/319/281 285/320/282
1185 | f 277/317/279 276/316/278 285/320/282 286/321/283
1186 | f 278/318/280 277/317/279 286/321/283 287/322/284
1187 | f 279/311/273 278/318/280 287/322/284 288/323/285
1188 | f 272/310/272 181/324/19 281/325/286
1189 | f 280/312/274 279/311/273 288/323/285 289/326/287
1190 | f 273/313/275 272/310/272 281/325/286 282/327/288
1191 | f 274/314/276 273/313/275 282/327/288 283/328/289
1192 | f 275/315/277 274/314/276 283/328/289 284/319/281
1193 | f 289/326/287 288/323/285 8/2/2 9/1/1
1194 | f 282/327/288 281/325/286 1/6/6 2/5/5
1195 | f 283/328/289 282/327/288 2/5/5 3/9/9
1196 | f 284/319/281 283/328/289 3/9/9 4/11/11
1197 | f 285/320/282 284/319/281 4/11/11 5/13/13
1198 | f 286/321/283 285/320/282 5/13/13 6/15/15
1199 | f 287/322/284 286/321/283 6/15/15 7/17/17
1200 | f 288/323/285 287/322/284 7/17/17 8/2/2
1201 | f 281/325/286 181/329/19 1/6/6
1202 |
--------------------------------------------------------------------------------
/assets/projectile_shape_1.obj.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wavefront_obj"
4 | type="Mesh"
5 | path="res://.import/projectile_shape_1.obj-2075ac9f747bbe89405a5ef4f516b397.mesh"
6 |
7 | [deps]
8 |
9 | files=[ "res://.import/projectile_shape_1.obj-2075ac9f747bbe89405a5ef4f516b397.mesh" ]
10 |
11 | source_file="res://assets/projectile_shape_1.obj"
12 | dest_files=[ "res://.import/projectile_shape_1.obj-2075ac9f747bbe89405a5ef4f516b397.mesh", "res://.import/projectile_shape_1.obj-2075ac9f747bbe89405a5ef4f516b397.mesh" ]
13 |
14 | [params]
15 |
16 | generate_tangents=true
17 | scale_mesh=Vector3( 1, 1, 1 )
18 | offset_mesh=Vector3( 0, 0, 0 )
19 | optimize_mesh=true
20 |
--------------------------------------------------------------------------------
/assets/swoosh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OBKF/Godot-Trail-System/8827d6b5842b2dbc448461d75bc8cc54a3b654b1/assets/swoosh.png
--------------------------------------------------------------------------------
/assets/swoosh.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path.s3tc="res://.import/swoosh.png-f9155c757ba7a905fb8736f4a5858a5d.s3tc.stex"
6 | path.etc2="res://.import/swoosh.png-f9155c757ba7a905fb8736f4a5858a5d.etc2.stex"
7 | metadata={
8 | "imported_formats": [ "s3tc", "etc2" ],
9 | "vram_texture": true
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://assets/swoosh.png"
15 | dest_files=[ "res://.import/swoosh.png-f9155c757ba7a905fb8736f4a5858a5d.s3tc.stex", "res://.import/swoosh.png-f9155c757ba7a905fb8736f4a5858a5d.etc2.stex" ]
16 |
17 | [params]
18 |
19 | compress/mode=2
20 | compress/lossy_quality=0.7
21 | compress/hdr_mode=0
22 | compress/bptc_ldr=0
23 | compress/normal_map=0
24 | flags/repeat=true
25 | flags/filter=true
26 | flags/mipmaps=true
27 | flags/anisotropic=false
28 | flags/srgb=1
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/HDR_as_SRGB=false
32 | process/invert_color=false
33 | stream=false
34 | size_limit=0
35 | detect_3d=false
36 | svg/scale=1.0
37 |
--------------------------------------------------------------------------------
/assets/sword.mtl:
--------------------------------------------------------------------------------
1 | # Blender MTL File: 'sword.blend'
2 | # Material Count: 2
3 |
4 | newmtl blade
5 | Ns 323.999994
6 | Ka 1.000000 1.000000 1.000000
7 | Kd 0.800000 0.800000 0.800000
8 | Ks 0.500000 0.500000 0.500000
9 | Ke 0.000000 0.000000 0.000000
10 | Ni 1.000000
11 | d 1.000000
12 | illum 2
13 |
14 | newmtl handle
15 | Ns 440.999985
16 | Ka 0.900000 0.900000 0.900000
17 | Kd 0.057802 0.057802 0.057802
18 | Ks 0.500000 0.500000 0.500000
19 | Ke 0.000000 0.000000 0.000000
20 | Ni 1.450000
21 | d 1.000000
22 | illum 3
23 |
--------------------------------------------------------------------------------
/assets/sword.obj:
--------------------------------------------------------------------------------
1 | # Blender v2.81 (sub 16) OBJ File: 'sword.blend'
2 | # www.blender.org
3 | mtllib sword.mtl
4 | o sword_Cylinder
5 | v -0.000000 1.400000 0.000000
6 | v 0.017321 0.120000 0.010000
7 | v 0.010000 0.120000 0.017321
8 | v -0.010000 0.120000 0.017321
9 | v -0.020000 0.120000 0.000000
10 | v -0.010000 0.120000 -0.017321
11 | v 0.010000 0.090000 -0.017321
12 | v 0.017321 0.090000 -0.010000
13 | v 0.020000 0.090000 0.000000
14 | v 0.017321 0.090000 0.010000
15 | v 0.010000 0.090000 0.017321
16 | v 0.000000 0.090000 0.020000
17 | v -0.010000 0.090000 0.017321
18 | v -0.017321 0.090000 0.010000
19 | v -0.020000 0.090000 0.000000
20 | v -0.017321 0.090000 -0.010000
21 | v -0.010000 0.090000 -0.017321
22 | v 0.000000 0.090000 -0.020000
23 | v 0.000000 0.111000 -0.040000
24 | v 0.020000 0.111000 -0.034641
25 | v 0.034641 0.111000 -0.020000
26 | v 0.040000 0.111000 -0.000000
27 | v 0.034641 0.111000 0.020000
28 | v 0.020000 0.111000 0.034641
29 | v 0.000000 0.111000 0.040000
30 | v -0.020000 0.111000 0.034641
31 | v -0.034641 0.111000 0.020000
32 | v -0.040000 0.111000 0.000000
33 | v -0.034641 0.111000 -0.020000
34 | v -0.020000 0.111000 -0.034641
35 | v 0.020000 0.099000 -0.034641
36 | v 0.034641 0.099000 -0.020000
37 | v 0.040000 0.099000 -0.000000
38 | v 0.034641 0.099000 0.020000
39 | v 0.020000 0.099000 0.034641
40 | v 0.000000 0.099000 0.040000
41 | v -0.020000 0.099000 0.034641
42 | v -0.034641 0.099000 0.020000
43 | v -0.040000 0.099000 0.000000
44 | v -0.034641 0.099000 -0.020000
45 | v -0.020000 0.099000 -0.034641
46 | v 0.000000 0.099000 -0.040000
47 | v 0.010000 -0.159500 -0.017321
48 | v 0.017321 -0.159500 -0.010000
49 | v 0.020000 -0.159500 0.000000
50 | v 0.017321 -0.159500 0.010000
51 | v 0.010000 -0.159500 0.017321
52 | v 0.000000 -0.159500 0.020000
53 | v -0.010000 -0.159500 0.017321
54 | v -0.017321 -0.159500 0.010000
55 | v -0.020000 -0.159500 0.000000
56 | v -0.017321 -0.159500 -0.010000
57 | v -0.010000 -0.159500 -0.017321
58 | v 0.000000 -0.159500 -0.020000
59 | v 0.000000 -0.199875 0.000000
60 | v 0.014000 -0.179625 -0.024249
61 | v 0.024249 -0.179625 -0.014000
62 | v 0.028000 -0.179625 0.000000
63 | v 0.024249 -0.179625 0.014000
64 | v 0.014000 -0.179625 0.024249
65 | v 0.000000 -0.179625 0.028000
66 | v -0.014000 -0.179625 0.024249
67 | v -0.024249 -0.179625 0.014000
68 | v -0.028000 -0.179625 0.000000
69 | v -0.024249 -0.179625 -0.014000
70 | v -0.014000 -0.179625 -0.024249
71 | v 0.000000 -0.179625 -0.028000
72 | v 0.000000 -0.199875 -0.028000
73 | v 0.014000 -0.199875 -0.024249
74 | v 0.024249 -0.199875 -0.014000
75 | v 0.028000 -0.199875 0.000000
76 | v 0.024249 -0.199875 0.014000
77 | v 0.014000 -0.199875 0.024249
78 | v 0.000000 -0.199875 0.028000
79 | v -0.014000 -0.199875 0.024249
80 | v -0.024249 -0.199875 0.014000
81 | v -0.028000 -0.199875 0.000000
82 | v -0.024249 -0.199875 -0.014000
83 | v -0.014000 -0.199875 -0.024249
84 | v 0.010000 1.400000 -0.017321
85 | v 0.000000 1.400000 -0.020000
86 | v 0.017321 1.400000 -0.010000
87 | v 0.020000 1.400000 0.000000
88 | v 0.017321 1.400000 0.010000
89 | v 0.010000 1.400000 0.017321
90 | v 0.000000 1.400000 0.020000
91 | v -0.010000 1.400000 0.017321
92 | v -0.017321 1.400000 0.010000
93 | v -0.020000 1.400000 0.000000
94 | v -0.017321 1.400000 -0.010000
95 | v -0.010000 1.400000 -0.017321
96 | v 0.000000 0.200000 -0.020000
97 | v -0.017321 0.200000 -0.010000
98 | v -0.020000 0.200000 0.000000
99 | v -0.017321 0.200000 0.010000
100 | v 0.000000 0.200000 0.020000
101 | v 0.010000 0.200000 -0.017321
102 | v 0.017321 0.160000 0.010000
103 | v 0.010000 0.160000 0.017321
104 | v 0.000000 0.160000 0.020000
105 | v -0.010000 0.160000 0.017321
106 | v -0.017321 0.160000 0.010000
107 | v -0.020000 0.160000 0.000000
108 | v -0.017321 0.160000 -0.010000
109 | v 0.010000 0.130000 -0.017321
110 | v 0.017321 0.130000 0.010000
111 | v -0.010000 0.130000 0.017321
112 | v 0.000000 0.151000 -0.040000
113 | v 0.020000 0.151000 -0.034641
114 | v 0.034641 0.151000 -0.020000
115 | v 0.040000 0.151000 -0.000000
116 | v 0.034641 0.151000 0.020000
117 | v 0.020000 0.151000 0.034641
118 | v 0.000000 0.151000 0.040000
119 | v -0.020000 0.151000 0.034641
120 | v -0.034641 0.151000 0.020000
121 | v -0.040000 0.151000 0.000000
122 | v -0.034641 0.151000 -0.020000
123 | v -0.020000 0.151000 -0.034641
124 | v 0.020000 0.139000 -0.034641
125 | v 0.034641 0.139000 -0.020000
126 | v 0.040000 0.139000 -0.000000
127 | v 0.034641 0.139000 0.020000
128 | v 0.020000 0.139000 0.034641
129 | v 0.000000 0.139000 0.040000
130 | v -0.020000 0.139000 0.034641
131 | v -0.034641 0.139000 0.020000
132 | v -0.040000 0.139000 0.000000
133 | v -0.034641 0.139000 -0.020000
134 | v -0.020000 0.139000 -0.034641
135 | v 0.000000 0.139000 -0.040000
136 | v 0.017321 0.200000 -0.010000
137 | v 0.017321 0.200000 0.010000
138 | v 0.010000 0.200000 0.017321
139 | v -0.010000 0.200000 0.017321
140 | v -0.010000 0.200000 -0.017321
141 | v 0.010000 0.170000 -0.017321
142 | v 0.017321 0.170000 -0.010000
143 | v 0.000000 0.170000 0.020000
144 | v -0.017321 0.170000 0.010000
145 | v -0.020000 0.170000 0.000000
146 | v -0.017321 0.170000 -0.010000
147 | v 0.000000 0.191000 -0.040000
148 | v 0.020000 0.191000 -0.034641
149 | v 0.034641 0.191000 -0.020000
150 | v 0.040000 0.191000 -0.000000
151 | v 0.034641 0.191000 0.020000
152 | v 0.020000 0.191000 0.034641
153 | v 0.000000 0.191000 0.040000
154 | v -0.020000 0.191000 0.034641
155 | v -0.034641 0.191000 0.020000
156 | v -0.040000 0.191000 0.000000
157 | v -0.034641 0.191000 -0.020000
158 | v -0.020000 0.191000 -0.034641
159 | v 0.020000 0.179000 -0.034641
160 | v 0.034641 0.179000 -0.020000
161 | v 0.040000 0.179000 -0.000000
162 | v 0.034641 0.179000 0.020000
163 | v 0.020000 0.179000 0.034641
164 | v 0.000000 0.179000 0.040000
165 | v -0.020000 0.179000 0.034641
166 | v -0.034641 0.179000 0.020000
167 | v -0.040000 0.179000 0.000000
168 | v -0.034641 0.179000 -0.020000
169 | v -0.020000 0.179000 -0.034641
170 | v 0.000000 0.179000 -0.040000
171 | v 0.020000 0.200000 0.000000
172 | v 0.020000 0.170000 0.000000
173 | v -0.010000 0.170000 -0.017321
174 | v 0.000000 0.170000 -0.020000
175 | v -0.010000 0.170000 0.017321
176 | v 0.010000 0.170000 0.017321
177 | v 0.017321 0.170000 0.010000
178 | v 0.020000 0.160000 0.000000
179 | v -0.010000 0.160000 -0.017321
180 | v 0.000000 0.160000 -0.020000
181 | v 0.017321 0.160000 -0.010000
182 | v 0.010000 0.160000 -0.017321
183 | v 0.020000 0.130000 0.000000
184 | v -0.010000 0.130000 -0.017321
185 | v 0.000000 0.130000 -0.020000
186 | v -0.017321 0.130000 -0.010000
187 | v -0.020000 0.130000 0.000000
188 | v -0.017321 0.130000 0.010000
189 | v 0.000000 0.130000 0.020000
190 | v 0.010000 0.130000 0.017321
191 | v 0.017321 0.130000 -0.010000
192 | v 0.020000 0.120000 0.000000
193 | v 0.000000 0.120000 -0.020000
194 | v -0.017321 0.120000 -0.010000
195 | v -0.017321 0.120000 0.010000
196 | v 0.000000 0.120000 0.020000
197 | v 0.017321 0.120000 -0.010000
198 | v 0.010000 0.120000 -0.017321
199 | vt 0.569050 0.432452
200 | vt 0.609802 0.432452
201 | vt 0.609802 0.463846
202 | vt 0.569050 0.463846
203 | vt 0.528297 0.512416
204 | vt 0.487545 0.512416
205 | vt 0.487545 0.481023
206 | vt 0.528297 0.481023
207 | vt 0.772812 0.432452
208 | vt 0.813564 0.432452
209 | vt 0.813564 0.463846
210 | vt 0.772812 0.463846
211 | vt 0.691307 0.512416
212 | vt 0.650555 0.512416
213 | vt 0.650555 0.481023
214 | vt 0.691307 0.481023
215 | vt 0.976575 0.512416
216 | vt 0.935823 0.512416
217 | vt 0.935822 0.481023
218 | vt 0.976574 0.481023
219 | vt 0.854317 0.432452
220 | vt 0.854317 0.463846
221 | vt 0.609802 0.512416
222 | vt 0.609802 0.481023
223 | vt 0.895070 0.512416
224 | vt 0.895069 0.481023
225 | vt 0.895069 0.432452
226 | vt 0.895069 0.463846
227 | vt 0.854317 0.512416
228 | vt 0.854317 0.481023
229 | vt 0.935821 0.432452
230 | vt 0.935821 0.463846
231 | vt 0.650555 0.432452
232 | vt 0.650555 0.463846
233 | vt 0.609802 0.075315
234 | vt 0.569050 0.075315
235 | vt 0.528297 0.432452
236 | vt 0.528297 0.075315
237 | vt 0.487545 0.432452
238 | vt 0.487545 0.075315
239 | vt 0.976572 0.075315
240 | vt 0.976574 0.432452
241 | vt 0.935819 0.075315
242 | vt 0.895067 0.075315
243 | vt 0.854315 0.075315
244 | vt 0.813563 0.075315
245 | vt 0.772811 0.075315
246 | vt 0.732059 0.432452
247 | vt 0.732059 0.075315
248 | vt 0.691307 0.432452
249 | vt 0.691307 0.075315
250 | vt 0.650554 0.075315
251 | vt 0.691307 0.463846
252 | vt 0.732060 0.463846
253 | vt 0.732060 0.481023
254 | vt 0.772812 0.481023
255 | vt 0.813564 0.481023
256 | vt 0.976574 0.463846
257 | vt 0.528297 0.463846
258 | vt 0.487545 0.463846
259 | vt 0.569050 0.481023
260 | vt 0.732060 0.512416
261 | vt 0.569050 0.512416
262 | vt 0.772813 0.512416
263 | vt 0.813564 0.512416
264 | vt 0.732058 0.044315
265 | vt 0.772811 0.044315
266 | vt 0.854315 0.044315
267 | vt 0.895067 0.044315
268 | vt 0.487545 0.044315
269 | vt 0.528297 0.044315
270 | vt 0.691307 0.044315
271 | vt 0.813563 0.044315
272 | vt 0.935819 0.044315
273 | vt 0.976571 0.044315
274 | vt 0.650554 0.044315
275 | vt 0.569050 0.044315
276 | vt 0.609802 0.044315
277 | vt 0.650554 0.015329
278 | vt 0.609802 0.015329
279 | vt 0.691306 0.015329
280 | vt 0.732059 0.015329
281 | vt 0.772811 0.015329
282 | vt 0.813563 0.015329
283 | vt 0.854315 0.015329
284 | vt 0.895067 0.015329
285 | vt 0.935819 0.015329
286 | vt 0.976571 0.015329
287 | vt 0.528297 0.015329
288 | vt 0.487545 0.015329
289 | vt 0.569050 0.015329
290 | vt 0.574935 0.819019
291 | vt 0.662324 0.795603
292 | vt 0.662324 0.842434
293 | vt 0.638908 0.882992
294 | vt 0.598351 0.906408
295 | vt 0.551519 0.906408
296 | vt 0.510961 0.882992
297 | vt 0.487545 0.842434
298 | vt 0.487545 0.795603
299 | vt 0.510961 0.755045
300 | vt 0.551519 0.731629
301 | vt 0.598351 0.731629
302 | vt 0.638908 0.755045
303 | vt 0.569050 0.526730
304 | vt 0.609802 0.526730
305 | vt 0.609802 0.558123
306 | vt 0.569050 0.558123
307 | vt 0.528297 0.606693
308 | vt 0.487545 0.606694
309 | vt 0.487545 0.575300
310 | vt 0.528297 0.575300
311 | vt 0.772813 0.526730
312 | vt 0.813564 0.526730
313 | vt 0.813564 0.558123
314 | vt 0.772813 0.558123
315 | vt 0.691307 0.606693
316 | vt 0.650555 0.606693
317 | vt 0.650555 0.575300
318 | vt 0.691307 0.575300
319 | vt 0.976577 0.606694
320 | vt 0.935824 0.606693
321 | vt 0.935823 0.575300
322 | vt 0.976576 0.575300
323 | vt 0.854317 0.526730
324 | vt 0.854317 0.558123
325 | vt 0.609802 0.606693
326 | vt 0.609802 0.575300
327 | vt 0.895072 0.606693
328 | vt 0.895071 0.575300
329 | vt 0.895070 0.526730
330 | vt 0.895071 0.558123
331 | vt 0.854317 0.606693
332 | vt 0.854317 0.575300
333 | vt 0.935823 0.526730
334 | vt 0.935823 0.558123
335 | vt 0.650555 0.526730
336 | vt 0.650555 0.558123
337 | vt 0.691307 0.558123
338 | vt 0.732060 0.558123
339 | vt 0.732061 0.575300
340 | vt 0.772813 0.575300
341 | vt 0.813564 0.575300
342 | vt 0.976575 0.558123
343 | vt 0.528297 0.558123
344 | vt 0.487545 0.558123
345 | vt 0.569050 0.575300
346 | vt 0.732061 0.606693
347 | vt 0.732060 0.526730
348 | vt 0.569050 0.606693
349 | vt 0.528297 0.526730
350 | vt 0.772813 0.606693
351 | vt 0.691307 0.526730
352 | vt 0.487545 0.526730
353 | vt 0.813564 0.606693
354 | vt 0.976575 0.526730
355 | vt 0.569050 0.621008
356 | vt 0.609802 0.621008
357 | vt 0.609802 0.652401
358 | vt 0.569050 0.652401
359 | vt 0.528297 0.700971
360 | vt 0.487545 0.700971
361 | vt 0.487545 0.669578
362 | vt 0.528297 0.669578
363 | vt 0.772813 0.621008
364 | vt 0.813564 0.621008
365 | vt 0.813564 0.652401
366 | vt 0.772813 0.652401
367 | vt 0.691307 0.700971
368 | vt 0.650555 0.700971
369 | vt 0.650555 0.669578
370 | vt 0.691307 0.669578
371 | vt 0.976578 0.700971
372 | vt 0.935826 0.700971
373 | vt 0.935825 0.669578
374 | vt 0.976578 0.669578
375 | vt 0.854317 0.621008
376 | vt 0.854317 0.652401
377 | vt 0.609802 0.700971
378 | vt 0.609802 0.669578
379 | vt 0.895073 0.700971
380 | vt 0.895073 0.669578
381 | vt 0.895072 0.621008
382 | vt 0.895073 0.652401
383 | vt 0.854317 0.700971
384 | vt 0.854317 0.669578
385 | vt 0.935825 0.621008
386 | vt 0.935825 0.652401
387 | vt 0.650555 0.621008
388 | vt 0.650555 0.652401
389 | vt 0.691307 0.652401
390 | vt 0.732061 0.652401
391 | vt 0.732061 0.669578
392 | vt 0.772814 0.669578
393 | vt 0.813564 0.669578
394 | vt 0.976577 0.652401
395 | vt 0.528297 0.652401
396 | vt 0.487545 0.652401
397 | vt 0.569050 0.669578
398 | vt 0.732062 0.700971
399 | vt 0.732061 0.621008
400 | vt 0.569050 0.700971
401 | vt 0.528297 0.621008
402 | vt 0.772814 0.700971
403 | vt 0.691307 0.621008
404 | vt 0.487545 0.621008
405 | vt 0.813564 0.700971
406 | vt 0.976577 0.621008
407 | vt 0.125719 0.015329
408 | vt 0.125719 0.984671
409 | vt 0.088923 0.984671
410 | vt 0.088922 0.015329
411 | vt 0.052126 0.984671
412 | vt 0.052126 0.015329
413 | vt 0.015330 0.984671
414 | vt 0.015329 0.015329
415 | vt 0.456887 0.015329
416 | vt 0.456887 0.984671
417 | vt 0.420091 0.984671
418 | vt 0.420090 0.015329
419 | vt 0.383294 0.984671
420 | vt 0.383294 0.015329
421 | vt 0.346498 0.984671
422 | vt 0.346497 0.015329
423 | vt 0.309701 0.984671
424 | vt 0.309701 0.015329
425 | vt 0.272905 0.984671
426 | vt 0.272905 0.015329
427 | vt 0.236108 0.984671
428 | vt 0.236108 0.015329
429 | vt 0.199312 0.984671
430 | vt 0.199311 0.015329
431 | vt 0.162515 0.984671
432 | vt 0.162515 0.015329
433 | vt 0.755404 0.794050
434 | vt 0.801099 0.748355
435 | vt 0.817824 0.777325
436 | vt 0.772129 0.731629
437 | vt 0.738678 0.731629
438 | vt 0.709708 0.748355
439 | vt 0.692982 0.777325
440 | vt 0.692983 0.810776
441 | vt 0.709708 0.839745
442 | vt 0.738678 0.856471
443 | vt 0.772129 0.856471
444 | vt 0.801099 0.839746
445 | vt 0.817824 0.810776
446 | vn 0.2052 -0.9119 -0.3554
447 | vn -0.0000 -0.9119 -0.4104
448 | vn 0.3554 0.9119 -0.2052
449 | vn 0.4104 0.9119 -0.0000
450 | vn -0.3554 -0.9119 0.2052
451 | vn -0.2052 -0.9119 0.3554
452 | vn -0.3554 0.9119 -0.2052
453 | vn -0.2052 0.9119 -0.3554
454 | vn 0.3554 0.9119 0.2052
455 | vn 0.0000 -0.9119 0.4104
456 | vn -0.0000 0.9119 -0.4104
457 | vn 0.2052 0.9119 0.3554
458 | vn 0.2052 -0.9119 0.3554
459 | vn 0.0000 0.9119 0.4104
460 | vn 0.3554 -0.9119 0.2052
461 | vn -0.2052 -0.9119 -0.3554
462 | vn -0.0000 0.1940 -0.9810
463 | vn -0.0000 0.0000 -1.0000
464 | vn 0.2588 0.0000 -0.9659
465 | vn 0.4905 0.1940 -0.8496
466 | vn 0.7071 0.0000 -0.7071
467 | vn 0.8496 0.1940 -0.4905
468 | vn 0.9659 0.0000 -0.2588
469 | vn 1.0000 0.0000 0.0000
470 | vn 0.9810 0.1940 0.0000
471 | vn 0.8660 0.0000 0.5000
472 | vn 0.8496 0.1940 0.4905
473 | vn 0.5000 0.0000 0.8660
474 | vn 0.4905 0.1940 0.8496
475 | vn 0.0000 0.0000 1.0000
476 | vn 0.0000 0.1940 0.9810
477 | vn -0.5000 0.0000 0.8660
478 | vn -0.4905 0.1940 0.8496
479 | vn -0.8660 0.0000 0.5000
480 | vn -0.8496 0.1940 0.4905
481 | vn -1.0000 0.0000 0.0000
482 | vn -0.9810 0.1940 0.0000
483 | vn -0.8660 0.0000 -0.5000
484 | vn -0.8496 0.1940 -0.4905
485 | vn -0.7071 0.0000 -0.7071
486 | vn -0.4905 0.1940 -0.8496
487 | vn -0.2588 0.0000 -0.9659
488 | vn -0.7071 0.0000 0.7071
489 | vn -0.2588 0.0000 0.9659
490 | vn 0.7071 0.0000 0.7071
491 | vn 0.9659 0.0000 0.2588
492 | vn 0.8660 0.0000 -0.5000
493 | vn -0.4104 0.9119 0.0000
494 | vn -0.4104 -0.9119 0.0000
495 | vn 0.2052 0.9119 -0.3554
496 | vn 0.3554 -0.9119 -0.2052
497 | vn -0.3554 0.9119 0.2052
498 | vn -0.3554 -0.9119 -0.2052
499 | vn 0.4104 -0.9119 -0.0000
500 | vn -0.2052 0.9119 0.3554
501 | vn -0.9832 0.1826 0.0000
502 | vn -0.8515 0.1826 0.4916
503 | vn 0.0000 0.1826 0.9832
504 | vn 0.4916 0.1826 0.8515
505 | vn 0.9832 0.1826 0.0000
506 | vn 0.8515 0.1826 -0.4916
507 | vn -0.8515 0.1826 -0.4916
508 | vn -0.4916 0.1826 0.8515
509 | vn 0.8515 0.1826 0.4916
510 | vn -0.4916 0.1826 -0.8515
511 | vn 0.4916 0.1826 -0.8515
512 | vn -0.0000 0.1826 -0.9832
513 | vn 0.2588 0.0000 0.9659
514 | vn 0.5000 0.0000 -0.8660
515 | vn 0.0000 -1.0000 0.0000
516 | vn 0.0000 1.0000 -0.0000
517 | vn -0.9659 0.0000 -0.2588
518 | vn -0.9659 0.0000 0.2588
519 | vn -0.5000 0.0000 -0.8660
520 | usemtl handle
521 | s 1
522 | f 7/1/1 18/2/2 42/3/2 31/4/1
523 | f 193/5/3 188/6/4 22/7/4 21/8/3
524 | f 14/9/5 13/10/6 37/11/6 38/12/5
525 | f 190/13/7 6/14/8 30/15/8 29/16/7
526 | f 188/17/4 2/18/9 23/19/9 22/20/4
527 | f 13/10/6 12/21/10 36/22/10 37/11/6
528 | f 6/14/8 189/23/11 19/24/11 30/15/8
529 | f 2/18/9 3/25/12 24/26/12 23/19/9
530 | f 12/21/10 11/27/13 35/28/13 36/22/10
531 | f 3/25/12 192/29/14 25/30/14 24/26/12
532 | f 11/27/13 10/31/15 34/32/15 35/28/13
533 | f 18/2/2 17/33/16 41/34/16 42/3/2
534 | f 54/35/17 18/2/18 7/1/19 43/36/20
535 | f 43/36/20 7/1/21 8/37/21 44/38/22
536 | f 44/38/22 8/37/23 9/39/24 45/40/25
537 | f 45/41/25 9/42/24 10/31/26 46/43/27
538 | f 46/43/27 10/31/26 11/27/28 47/44/29
539 | f 47/44/29 11/27/28 12/21/30 48/45/31
540 | f 48/45/31 12/21/30 13/10/32 49/46/33
541 | f 49/46/33 13/10/32 14/9/34 50/47/35
542 | f 50/47/35 14/9/34 15/48/36 51/49/37
543 | f 51/49/37 15/48/36 16/50/38 52/51/39
544 | f 52/51/39 16/50/38 17/33/40 53/52/41
545 | f 53/52/41 17/33/42 18/2/18 54/35/17
546 | f 41/34/42 30/15/42 19/24/18 42/3/18
547 | f 40/53/38 29/16/38 30/15/40 41/34/40
548 | f 39/54/36 28/55/36 29/16/38 40/53/38
549 | f 38/12/34 27/56/34 28/55/36 39/54/36
550 | f 37/11/43 26/57/43 27/56/34 38/12/34
551 | f 36/22/30 25/30/30 26/57/44 37/11/44
552 | f 35/28/28 24/26/28 25/30/30 36/22/30
553 | f 34/32/45 23/19/45 24/26/28 35/28/28
554 | f 33/58/24 22/20/24 23/19/46 34/32/46
555 | f 32/59/47 21/8/47 22/7/24 33/60/24
556 | f 31/4/21 20/61/21 21/8/47 32/59/47
557 | f 42/3/18 19/24/18 20/61/19 31/4/19
558 | f 5/62/48 190/13/7 29/16/7 28/55/48
559 | f 15/48/49 14/9/5 38/12/5 39/54/49
560 | f 194/63/50 193/5/3 21/8/3 20/61/50
561 | f 8/37/51 7/1/1 31/4/1 32/59/51
562 | f 191/64/52 5/62/48 28/55/48 27/56/52
563 | f 16/50/53 15/48/49 39/54/49 40/53/53
564 | f 189/23/11 194/63/50 20/61/50 19/24/11
565 | f 9/39/54 8/37/51 32/59/51 33/60/54
566 | f 4/65/55 191/64/52 27/56/52 26/57/55
567 | f 17/33/16 16/50/53 40/53/53 41/34/16
568 | f 10/31/15 9/42/54 33/58/54 34/32/15
569 | f 192/29/14 4/65/55 26/57/55 25/30/14
570 | f 50/47/35 51/49/37 64/66/56 63/67/57
571 | f 47/44/29 48/45/31 61/68/58 60/69/59
572 | f 44/38/22 45/40/25 58/70/60 57/71/61
573 | f 51/49/37 52/51/39 65/72/62 64/66/56
574 | f 48/45/31 49/46/33 62/73/63 61/68/58
575 | f 45/41/25 46/43/27 59/74/64 58/75/60
576 | f 52/51/39 53/52/41 66/76/65 65/72/62
577 | f 54/35/17 43/36/20 56/77/66 67/78/67
578 | f 49/46/33 50/47/35 63/67/57 62/73/63
579 | f 46/43/27 47/44/29 60/69/59 59/74/64
580 | f 53/52/41 54/35/17 67/78/67 66/76/65
581 | f 43/36/20 44/38/22 57/71/61 56/77/66
582 | f 79/79/42 66/76/65 67/78/67 68/80/42
583 | f 78/81/38 65/72/62 66/76/65 79/79/40
584 | f 77/82/36 64/66/56 65/72/62 78/81/38
585 | f 76/83/34 63/67/57 64/66/56 77/82/36
586 | f 75/84/32 62/73/63 63/67/57 76/83/34
587 | f 74/85/30 61/68/58 62/73/63 75/84/32
588 | f 73/86/68 60/69/59 61/68/58 74/85/30
589 | f 72/87/26 59/74/64 60/69/59 73/86/45
590 | f 71/88/24 58/75/60 59/74/64 72/87/26
591 | f 70/89/23 57/71/61 58/70/60 71/90/24
592 | f 69/91/69 56/77/66 57/71/61 70/89/21
593 | f 68/80/19 67/78/67 56/77/66 69/91/69
594 | f 55/92/70 68/93/70 69/94/70
595 | f 55/92/70 69/94/70 70/95/70
596 | f 55/92/70 70/95/70 71/96/70
597 | f 55/92/70 71/96/70 72/97/70
598 | f 55/92/70 72/97/70 73/98/70
599 | f 55/92/70 73/98/70 74/99/70
600 | f 55/92/70 74/99/70 75/100/70
601 | f 55/92/70 75/100/70 76/101/70
602 | f 55/92/70 76/101/70 77/102/70
603 | f 55/92/70 77/102/70 78/103/70
604 | f 55/92/70 78/103/70 79/104/70
605 | f 55/92/70 79/104/70 68/93/70
606 | f 105/105/1 181/106/2 131/107/2 120/108/1
607 | f 177/109/3 174/110/4 111/111/4 110/112/3
608 | f 184/113/5 107/114/6 126/115/6 127/116/5
609 | f 104/117/7 175/118/8 119/119/8 118/120/7
610 | f 174/121/4 98/122/9 112/123/9 111/124/4
611 | f 107/114/6 185/125/10 125/126/10 126/115/6
612 | f 175/118/8 176/127/11 108/128/11 119/119/8
613 | f 98/122/9 99/129/12 113/130/12 112/123/9
614 | f 185/125/10 186/131/13 124/132/13 125/126/10
615 | f 99/129/12 100/133/14 114/134/14 113/130/12
616 | f 186/131/13 106/135/15 123/136/15 124/132/13
617 | f 181/106/2 180/137/16 130/138/16 131/107/2
618 | f 130/138/42 119/119/42 108/128/18 131/107/18
619 | f 129/139/38 118/120/38 119/119/40 130/138/40
620 | f 128/140/36 117/141/36 118/120/38 129/139/38
621 | f 127/116/34 116/142/34 117/141/36 128/140/36
622 | f 126/115/32 115/143/32 116/142/34 127/116/34
623 | f 125/126/30 114/134/30 115/143/32 126/115/32
624 | f 124/132/28 113/130/28 114/134/30 125/126/30
625 | f 123/136/45 112/123/45 113/130/28 124/132/28
626 | f 122/144/24 111/124/24 112/123/46 123/136/46
627 | f 121/145/47 110/112/47 111/111/24 122/146/24
628 | f 120/108/21 109/147/21 110/112/47 121/145/47
629 | f 131/107/18 108/128/18 109/147/19 120/108/19
630 | f 103/148/48 104/117/7 118/120/7 117/141/48
631 | f 183/149/49 184/113/5 127/116/5 128/140/49
632 | f 178/150/50 177/109/3 110/112/3 109/147/50
633 | f 187/151/51 105/105/1 120/108/1 121/145/51
634 | f 102/152/52 103/148/48 117/141/48 116/142/52
635 | f 182/153/53 183/149/49 128/140/49 129/139/53
636 | f 176/127/11 178/150/50 109/147/50 108/128/11
637 | f 179/154/54 187/151/51 121/145/51 122/146/54
638 | f 101/155/55 102/152/52 116/142/52 115/143/55
639 | f 180/137/16 182/153/53 129/139/53 130/138/16
640 | f 106/135/15 179/156/54 122/144/54 123/136/15
641 | f 100/133/14 101/155/55 115/143/55 114/134/14
642 | f 137/157/1 170/158/2 166/159/2 155/160/1
643 | f 132/161/3 167/162/4 146/163/4 145/164/3
644 | f 140/165/5 171/166/6 161/167/6 162/168/5
645 | f 93/169/7 136/170/8 154/171/8 153/172/7
646 | f 167/173/4 133/174/9 147/175/9 146/176/4
647 | f 171/166/6 139/177/10 160/178/10 161/167/6
648 | f 136/170/8 92/179/11 143/180/11 154/171/8
649 | f 133/174/9 134/181/12 148/182/12 147/175/9
650 | f 139/177/10 172/183/13 159/184/13 160/178/10
651 | f 134/181/12 96/185/14 149/186/14 148/182/12
652 | f 172/183/13 173/187/15 158/188/15 159/184/13
653 | f 170/158/2 169/189/16 165/190/16 166/159/2
654 | f 165/190/42 154/171/42 143/180/42 166/159/42
655 | f 164/191/38 153/172/38 154/171/40 165/190/40
656 | f 163/192/36 152/193/36 153/172/38 164/191/38
657 | f 162/168/34 151/194/34 152/193/36 163/192/36
658 | f 161/167/43 150/195/43 151/194/34 162/168/34
659 | f 160/178/30 149/186/30 150/195/44 161/167/44
660 | f 159/184/28 148/182/28 149/186/30 160/178/30
661 | f 158/188/45 147/175/45 148/182/28 159/184/28
662 | f 157/196/24 146/176/24 147/175/46 158/188/46
663 | f 156/197/47 145/164/47 146/163/24 157/198/24
664 | f 155/160/69 144/199/69 145/164/47 156/197/47
665 | f 166/159/19 143/180/19 144/199/69 155/160/69
666 | f 94/200/48 93/169/7 153/172/7 152/193/48
667 | f 141/201/49 140/165/5 162/168/5 163/192/49
668 | f 97/202/50 132/161/3 145/164/3 144/199/50
669 | f 138/203/51 137/157/1 155/160/1 156/197/51
670 | f 95/204/52 94/200/48 152/193/48 151/194/52
671 | f 142/205/53 141/201/49 163/192/49 164/191/53
672 | f 92/179/11 97/202/50 144/199/50 143/180/11
673 | f 168/206/54 138/203/51 156/197/51 157/198/54
674 | f 135/207/55 95/204/52 151/194/52 150/195/55
675 | f 169/189/16 142/205/53 164/191/53 165/190/16
676 | f 173/187/15 168/208/54 157/196/54 158/188/15
677 | f 96/185/14 135/207/55 150/195/55 149/186/14
678 | usemtl blade
679 | f 92/209/19 81/210/19 80/211/19 97/212/19
680 | f 97/212/21 80/211/21 82/213/47 132/214/47
681 | f 132/214/47 82/213/47 83/215/24 167/216/24
682 | f 167/217/24 83/218/24 84/219/26 133/220/26
683 | f 133/220/26 84/219/26 85/221/45 134/222/45
684 | f 134/222/68 85/221/68 86/223/30 96/224/30
685 | f 96/224/30 86/223/30 87/225/32 135/226/32
686 | f 135/226/32 87/225/32 88/227/34 95/228/34
687 | f 95/228/34 88/227/34 89/229/36 94/230/36
688 | f 94/230/36 89/229/36 90/231/38 93/232/38
689 | f 93/232/38 90/231/38 91/233/40 136/234/40
690 | f 136/234/42 91/233/42 81/210/42 92/209/42
691 | f 1/235/71 80/236/71 81/237/71
692 | f 1/235/71 82/238/71 80/236/71
693 | f 1/235/71 83/239/71 82/238/71
694 | f 1/235/71 84/240/71 83/239/71
695 | f 1/235/71 85/241/71 84/240/71
696 | f 1/235/71 86/242/71 85/241/71
697 | f 1/235/71 87/243/71 86/242/71
698 | f 1/235/71 88/244/71 87/243/71
699 | f 1/235/71 89/245/71 88/244/71
700 | f 1/235/71 90/246/71 89/245/71
701 | f 1/235/71 91/247/71 90/246/71
702 | f 1/235/71 81/237/71 91/247/71
703 | f 139/177/30 171/166/32 101/155/32 100/133/30
704 | f 141/201/72 142/205/38 104/117/38 103/148/72
705 | f 138/203/47 168/206/24 174/110/24 177/109/47
706 | f 172/183/68 139/177/30 100/133/30 99/129/68
707 | f 140/165/34 141/201/73 103/148/73 102/152/34
708 | f 137/157/21 138/203/47 177/109/47 178/150/21
709 | f 169/189/74 170/158/42 176/127/42 175/118/74
710 | f 173/187/26 172/183/45 99/129/45 98/122/26
711 | f 171/166/32 140/165/34 102/152/34 101/155/32
712 | f 170/158/19 137/157/19 178/150/19 176/127/19
713 | f 142/205/38 169/189/74 175/118/74 104/117/38
714 | f 168/208/24 173/187/26 98/122/26 174/121/24
715 | f 184/113/34 183/149/36 5/62/36 191/64/34
716 | f 105/105/21 187/151/47 193/5/47 194/63/21
717 | f 180/137/74 181/106/42 189/23/42 6/14/74
718 | f 106/135/26 186/131/45 3/25/45 2/18/26
719 | f 107/114/43 184/113/34 191/64/34 4/65/43
720 | f 181/106/19 105/105/19 194/63/19 189/23/19
721 | f 182/153/38 180/137/74 6/14/74 190/13/38
722 | f 179/156/46 106/135/26 2/18/26 188/17/46
723 | f 185/125/30 107/114/44 4/65/44 192/29/30
724 | f 183/149/36 182/153/38 190/13/38 5/62/36
725 | f 187/151/47 179/154/23 188/6/23 193/5/47
726 | f 186/131/68 185/125/30 192/29/30 3/25/68
727 |
--------------------------------------------------------------------------------
/assets/sword.obj.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wavefront_obj"
4 | type="Mesh"
5 | path="res://.import/sword.obj-502b66c7573a8d998b0891ef5f512331.mesh"
6 |
7 | [deps]
8 |
9 | files=[ "res://.import/sword.obj-502b66c7573a8d998b0891ef5f512331.mesh" ]
10 |
11 | source_file="res://assets/sword.obj"
12 | dest_files=[ "res://.import/sword.obj-502b66c7573a8d998b0891ef5f512331.mesh", "res://.import/sword.obj-502b66c7573a8d998b0891ef5f512331.mesh" ]
13 |
14 | [params]
15 |
16 | generate_tangents=true
17 | scale_mesh=Vector3( 1, 1, 1 )
18 | offset_mesh=Vector3( 0, 0, 0 )
19 | optimize_mesh=true
20 |
--------------------------------------------------------------------------------
/assets/tex_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OBKF/Godot-Trail-System/8827d6b5842b2dbc448461d75bc8cc54a3b654b1/assets/tex_1.png
--------------------------------------------------------------------------------
/assets/tex_1.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path.s3tc="res://.import/tex_1.png-412a62c20cd74c1bec3f4fc86c360995.s3tc.stex"
6 | path.etc2="res://.import/tex_1.png-412a62c20cd74c1bec3f4fc86c360995.etc2.stex"
7 | metadata={
8 | "imported_formats": [ "s3tc", "etc2" ],
9 | "vram_texture": true
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://assets/tex_1.png"
15 | dest_files=[ "res://.import/tex_1.png-412a62c20cd74c1bec3f4fc86c360995.s3tc.stex", "res://.import/tex_1.png-412a62c20cd74c1bec3f4fc86c360995.etc2.stex" ]
16 |
17 | [params]
18 |
19 | compress/mode=2
20 | compress/lossy_quality=0.7
21 | compress/hdr_mode=0
22 | compress/bptc_ldr=0
23 | compress/normal_map=0
24 | flags/repeat=true
25 | flags/filter=true
26 | flags/mipmaps=true
27 | flags/anisotropic=false
28 | flags/srgb=1
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/HDR_as_SRGB=false
32 | process/invert_color=false
33 | stream=false
34 | size_limit=0
35 | detect_3d=false
36 | svg/scale=1.0
37 |
--------------------------------------------------------------------------------
/assets/trail_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OBKF/Godot-Trail-System/8827d6b5842b2dbc448461d75bc8cc54a3b654b1/assets/trail_1.png
--------------------------------------------------------------------------------
/assets/trail_1.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path.s3tc="res://.import/trail_1.png-5069f1f4ba9d41e183bc365901936f2b.s3tc.stex"
6 | path.etc2="res://.import/trail_1.png-5069f1f4ba9d41e183bc365901936f2b.etc2.stex"
7 | metadata={
8 | "imported_formats": [ "s3tc", "etc2" ],
9 | "vram_texture": true
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://assets/trail_1.png"
15 | dest_files=[ "res://.import/trail_1.png-5069f1f4ba9d41e183bc365901936f2b.s3tc.stex", "res://.import/trail_1.png-5069f1f4ba9d41e183bc365901936f2b.etc2.stex" ]
16 |
17 | [params]
18 |
19 | compress/mode=2
20 | compress/lossy_quality=0.7
21 | compress/hdr_mode=0
22 | compress/bptc_ldr=0
23 | compress/normal_map=0
24 | flags/repeat=true
25 | flags/filter=true
26 | flags/mipmaps=true
27 | flags/anisotropic=false
28 | flags/srgb=1
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/HDR_as_SRGB=false
32 | process/invert_color=false
33 | stream=false
34 | size_limit=0
35 | detect_3d=false
36 | svg/scale=1.0
37 |
--------------------------------------------------------------------------------
/assets/trail_1_a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OBKF/Godot-Trail-System/8827d6b5842b2dbc448461d75bc8cc54a3b654b1/assets/trail_1_a.png
--------------------------------------------------------------------------------
/assets/trail_1_a.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path.s3tc="res://.import/trail_1_a.png-9f7f6638c5e8fe5833ee7ece0790dd33.s3tc.stex"
6 | path.etc2="res://.import/trail_1_a.png-9f7f6638c5e8fe5833ee7ece0790dd33.etc2.stex"
7 | metadata={
8 | "imported_formats": [ "s3tc", "etc2" ],
9 | "vram_texture": true
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://assets/trail_1_a.png"
15 | dest_files=[ "res://.import/trail_1_a.png-9f7f6638c5e8fe5833ee7ece0790dd33.s3tc.stex", "res://.import/trail_1_a.png-9f7f6638c5e8fe5833ee7ece0790dd33.etc2.stex" ]
16 |
17 | [params]
18 |
19 | compress/mode=2
20 | compress/lossy_quality=0.7
21 | compress/hdr_mode=0
22 | compress/bptc_ldr=0
23 | compress/normal_map=0
24 | flags/repeat=true
25 | flags/filter=true
26 | flags/mipmaps=true
27 | flags/anisotropic=false
28 | flags/srgb=1
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/HDR_as_SRGB=false
32 | process/invert_color=false
33 | stream=false
34 | size_limit=0
35 | detect_3d=false
36 | svg/scale=1.0
37 |
--------------------------------------------------------------------------------
/assets/trail_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OBKF/Godot-Trail-System/8827d6b5842b2dbc448461d75bc8cc54a3b654b1/assets/trail_2.png
--------------------------------------------------------------------------------
/assets/trail_2.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path.s3tc="res://.import/trail_2.png-2fac6f3070ff20c94d3ceca9d882a9f0.s3tc.stex"
6 | path.etc2="res://.import/trail_2.png-2fac6f3070ff20c94d3ceca9d882a9f0.etc2.stex"
7 | metadata={
8 | "imported_formats": [ "s3tc", "etc2" ],
9 | "vram_texture": true
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://assets/trail_2.png"
15 | dest_files=[ "res://.import/trail_2.png-2fac6f3070ff20c94d3ceca9d882a9f0.s3tc.stex", "res://.import/trail_2.png-2fac6f3070ff20c94d3ceca9d882a9f0.etc2.stex" ]
16 |
17 | [params]
18 |
19 | compress/mode=2
20 | compress/lossy_quality=0.7
21 | compress/hdr_mode=0
22 | compress/bptc_ldr=0
23 | compress/normal_map=0
24 | flags/repeat=true
25 | flags/filter=true
26 | flags/mipmaps=true
27 | flags/anisotropic=false
28 | flags/srgb=1
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/HDR_as_SRGB=false
32 | process/invert_color=false
33 | stream=false
34 | size_limit=0
35 | detect_3d=false
36 | svg/scale=1.0
37 |
--------------------------------------------------------------------------------
/character.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OBKF/Godot-Trail-System/8827d6b5842b2dbc448461d75bc8cc54a3b654b1/character.png
--------------------------------------------------------------------------------
/character.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path="res://.import/character.png-7a996d3b758d22c506b76a7c15391284.stex"
6 | metadata={
7 | "vram_texture": false
8 | }
9 |
10 | [deps]
11 |
12 | source_file="res://character.png"
13 | dest_files=[ "res://.import/character.png-7a996d3b758d22c506b76a7c15391284.stex" ]
14 |
15 | [params]
16 |
17 | compress/mode=0
18 | compress/lossy_quality=0.7
19 | compress/hdr_mode=0
20 | compress/bptc_ldr=0
21 | compress/normal_map=0
22 | flags/repeat=0
23 | flags/filter=true
24 | flags/mipmaps=false
25 | flags/anisotropic=false
26 | flags/srgb=2
27 | process/fix_alpha_border=true
28 | process/premult_alpha=false
29 | process/HDR_as_SRGB=false
30 | process/invert_color=false
31 | stream=false
32 | size_limit=0
33 | detect_3d=true
34 | svg/scale=1.0
35 |
--------------------------------------------------------------------------------
/default_environment.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="Environment" load_steps=2 format=2]
2 |
3 | [sub_resource type="ProceduralSky" id=1]
4 | sun_longitude = 180.0
5 |
6 | [resource]
7 | background_mode = 2
8 | background_sky = SubResource( 1 )
9 | glow_enabled = true
10 | glow_blend_mode = 1
11 | glow_hdr_threshold = 1.3
12 | glow_bicubic_upscale = true
13 |
--------------------------------------------------------------------------------
/demo_3d_1.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=9 format=2]
2 |
3 | [ext_resource path="res://projectile_1.tscn" type="PackedScene" id=1]
4 | [ext_resource path="res://assets/flow_trail.png" type="Texture" id=2]
5 | [ext_resource path="res://assets/NotoSansUI_Regular.ttf" type="DynamicFontData" id=3]
6 |
7 | [sub_resource type="GDScript" id=1]
8 | script/source = "extends Spatial
9 |
10 |
11 | var speed := 1.0
12 | func _ready():
13 | pass
14 |
15 |
16 | func _process(delta):
17 | $rot.rotate_y(speed*delta)
18 |
19 |
20 | func _on_back_btn_button_down():
21 | get_tree().change_scene(\"res://Menu.tscn\")
22 | "
23 |
24 | [sub_resource type="DynamicFont" id=5]
25 | size = 18
26 | use_mipmaps = true
27 | use_filter = true
28 | font_data = ExtResource( 3 )
29 |
30 | [sub_resource type="Shader" id=2]
31 | code = "shader_type spatial;
32 |
33 | render_mode unshaded;
34 |
35 | uniform vec4 color : hint_color = vec4(1.0);
36 | uniform sampler2D flow_texture :hint_albedo;
37 | uniform float flow_strength = 1.0;
38 | uniform float flow_speed = 1.0;
39 | uniform float dark_edge = 1.0;
40 | uniform float trail_offset_speed = 1.0;
41 | uniform float dissolve_flow_speed = 1.0;
42 |
43 |
44 | void fragment(){
45 | vec4 _color = COLOR*color;
46 | float edge_mask = clamp(UV.y*(1.0-UV.y)*4.0, 0.0, 1.0);
47 |
48 | /// Tail
49 | vec2 uv_tail_offset = UV + vec2(flow_speed*TIME, 0.0);
50 | vec2 tail_distortion = (texture(flow_texture, uv_tail_offset).rg-vec2(0.5))*2.0*flow_strength*(1.0-UV.x);
51 | uv_tail_offset = UV + tail_distortion + vec2(TIME * trail_offset_speed, 0);
52 | float t = texture(flow_texture, uv_tail_offset).b;
53 |
54 | /// Dissolve
55 | vec2 uv_d = UV + vec2(dissolve_flow_speed*TIME, 0);
56 | float d = texture(flow_texture, uv_d).g + 2.0 * UV.x - 1.0;
57 | d = clamp(d, 0.0, 1.0);
58 |
59 | float tail = t * d * edge_mask;
60 | // ALBEDO = vec3(tail);
61 | EMISSION = _color.rgb * clamp(tail+edge_mask, 0, 1);
62 | ALPHA = _color.a*tail;
63 | // a
64 | }"
65 |
66 | [sub_resource type="ShaderMaterial" id=3]
67 | shader = SubResource( 2 )
68 | shader_param/color = Color( 1, 1, 1, 1 )
69 | shader_param/flow_strength = 0.4
70 | shader_param/flow_speed = 1.0
71 | shader_param/dark_edge = 1.0
72 | shader_param/trail_offset_speed = 1.2
73 | shader_param/dissolve_flow_speed = 0.8
74 | shader_param/flow_texture = ExtResource( 2 )
75 |
76 | [sub_resource type="QuadMesh" id=4]
77 | size = Vector2( 4, 1 )
78 |
79 | [node name="root" type="Spatial"]
80 | script = SubResource( 1 )
81 |
82 | [node name="ui" type="Control" parent="."]
83 | anchor_right = 1.0
84 | anchor_bottom = 1.0
85 | __meta__ = {
86 | "_edit_use_anchors_": false
87 | }
88 |
89 | [node name="back_btn" type="Button" parent="ui"]
90 | margin_left = 20.0
91 | margin_top = 20.0
92 | margin_right = 144.0
93 | margin_bottom = 52.0
94 | custom_fonts/font = SubResource( 5 )
95 | text = "<- Back"
96 | __meta__ = {
97 | "_edit_use_anchors_": false,
98 | "_editor_description_": ""
99 | }
100 |
101 | [node name="rot" type="Spatial" parent="."]
102 |
103 | [node name="projectile" parent="rot" instance=ExtResource( 1 )]
104 | transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 0 )
105 |
106 | [node name="projectile2" parent="rot" instance=ExtResource( 1 )]
107 | transform = Transform( -1, 0, -3.25841e-07, 0, 1, 0, 3.25841e-07, 0, -1, -10, 0, 0 )
108 |
109 | [node name="Camera" type="Camera" parent="."]
110 | transform = Transform( 0.707107, 0.298836, -0.640856, 0, 0.906308, 0.422618, 0.707107, -0.298836, 0.640856, -15, 10, 15 )
111 |
112 | [node name="MeshInstance" type="MeshInstance" parent="Camera"]
113 | transform = Transform( 1, 0, 0, 0, 1, -8.9407e-08, 0, 1.49012e-07, 1, 0, 1.90735e-06, -2.72972 )
114 | visible = false
115 | material_override = SubResource( 3 )
116 | mesh = SubResource( 4 )
117 | material/0 = null
118 | [connection signal="button_down" from="ui/back_btn" to="." method="_on_back_btn_button_down"]
119 |
--------------------------------------------------------------------------------
/demo_3d_2.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=10 format=2]
2 |
3 | [ext_resource path="res://character.tscn" type="PackedScene" id=1]
4 | [ext_resource path="res://assets/checker_roughness.png" type="Texture" id=2]
5 | [ext_resource path="res://assets/checker.png" type="Texture" id=3]
6 | [ext_resource path="res://assets/checker_normal.png" type="Texture" id=4]
7 | [ext_resource path="res://assets/NotoSansUI_Regular.ttf" type="DynamicFontData" id=5]
8 |
9 | [sub_resource type="GDScript" id=1]
10 | script/source = "extends Spatial
11 |
12 |
13 | var ap :AnimationPlayer
14 |
15 |
16 | func _ready():
17 | ap = $character/AnimationPlayer
18 | ap.play(\"TPos\")
19 |
20 | $sun.shadow_enabled = true
21 |
22 |
23 |
24 | func _on_SpinBox_item_selected(id):
25 | if id == 1:
26 | ap.playback_speed = 1
27 | $character/character/Skeleton/sword/sword.visible = true
28 | $character/character/Skeleton/foot_r/trail.visible = false
29 | $character/character/Skeleton/foot_l/trail.visible = false
30 | ap.play(\"Sword_loop\")
31 | elif id == 2:
32 | ap.playback_speed = 1
33 | $character/character/Skeleton/sword/sword.visible = false
34 | $character/character/Skeleton/foot_r/trail.visible = true
35 | $character/character/Skeleton/foot_l/trail.visible = true
36 | ap.play(\"Capoeira_Flair_loop\")
37 | else:
38 | ap.playback_speed = 1
39 | $character/character/Skeleton/sword/sword.visible = false
40 | $character/character/Skeleton/foot_r/trail.visible = false
41 | $character/character/Skeleton/foot_l/trail.visible = false
42 | ap.play(\"TPos\")
43 |
44 |
45 |
46 | func _on_back_btn_button_down():
47 | get_tree().change_scene(\"res://Menu.tscn\")
48 | "
49 |
50 | [sub_resource type="DynamicFont" id=4]
51 | size = 18
52 | use_mipmaps = true
53 | use_filter = true
54 | font_data = ExtResource( 5 )
55 |
56 | [sub_resource type="SpatialMaterial" id=2]
57 | albedo_texture = ExtResource( 3 )
58 | roughness = 0.9
59 | roughness_texture = ExtResource( 2 )
60 | normal_enabled = true
61 | normal_scale = 1.0
62 | normal_texture = ExtResource( 4 )
63 | uv1_triplanar = true
64 |
65 | [sub_resource type="PlaneMesh" id=3]
66 | size = Vector2( 100, 100 )
67 |
68 | [node name="root" type="Spatial"]
69 | script = SubResource( 1 )
70 |
71 | [node name="ui" type="Control" parent="."]
72 | anchor_right = 1.0
73 | anchor_bottom = 1.0
74 | __meta__ = {
75 | "_edit_use_anchors_": false
76 | }
77 |
78 | [node name="back_btn" type="Button" parent="ui"]
79 | margin_left = 20.0
80 | margin_top = 20.0
81 | margin_right = 144.0
82 | margin_bottom = 52.0
83 | custom_fonts/font = SubResource( 4 )
84 | text = "<- Back"
85 | __meta__ = {
86 | "_edit_use_anchors_": false,
87 | "_editor_description_": ""
88 | }
89 |
90 | [node name="gnd" type="MeshInstance" parent="."]
91 | material_override = SubResource( 2 )
92 | mesh = SubResource( 3 )
93 | material/0 = null
94 |
95 | [node name="character" parent="." instance=ExtResource( 1 )]
96 |
97 | [node name="SpinBox" type="OptionButton" parent="."]
98 | margin_left = 20.0
99 | margin_top = 100.0
100 | margin_right = 74.0
101 | margin_bottom = 24.0
102 | text = "T-Pos"
103 | items = [ "T-Pos", null, false, 0, null, "Sword", null, false, 1, null, "Capoeira Flair", null, false, 2, null ]
104 | selected = 0
105 | __meta__ = {
106 | "_edit_use_anchors_": false
107 | }
108 |
109 | [node name="sun" type="DirectionalLight" parent="."]
110 | transform = Transform( 1, 0, 0, 0, 0.819152, 0.573577, 0, -0.573577, 0.819152, 0, 0, 0 )
111 | light_energy = 5.0
112 | directional_shadow_mode = 0
113 | directional_shadow_depth_range = 1
114 | directional_shadow_max_distance = 32.0
115 |
116 | [node name="Camera" type="Camera" parent="."]
117 | transform = Transform( 0.707107, 0.353553, -0.612372, 0, 0.866025, 0.5, 0.707107, -0.353553, 0.612372, -1.80367, 2.46431, 3.0144 )
118 | visible = false
119 | [connection signal="button_down" from="ui/back_btn" to="." method="_on_back_btn_button_down"]
120 | [connection signal="item_selected" from="SpinBox" to="." method="_on_SpinBox_item_selected"]
121 |
--------------------------------------------------------------------------------
/godot_trail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OBKF/Godot-Trail-System/8827d6b5842b2dbc448461d75bc8cc54a3b654b1/godot_trail.png
--------------------------------------------------------------------------------
/godot_trail.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path="res://.import/godot_trail.png-a1470f335d0a69edadcced018844d290.stex"
6 | metadata={
7 | "vram_texture": false
8 | }
9 |
10 | [deps]
11 |
12 | source_file="res://godot_trail.png"
13 | dest_files=[ "res://.import/godot_trail.png-a1470f335d0a69edadcced018844d290.stex" ]
14 |
15 | [params]
16 |
17 | compress/mode=0
18 | compress/lossy_quality=0.7
19 | compress/hdr_mode=0
20 | compress/bptc_ldr=0
21 | compress/normal_map=0
22 | flags/repeat=0
23 | flags/filter=true
24 | flags/mipmaps=false
25 | flags/anisotropic=false
26 | flags/srgb=2
27 | process/fix_alpha_border=true
28 | process/premult_alpha=false
29 | process/HDR_as_SRGB=false
30 | process/invert_color=false
31 | stream=false
32 | size_limit=0
33 | detect_3d=true
34 | svg/scale=1.0
35 |
--------------------------------------------------------------------------------
/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OBKF/Godot-Trail-System/8827d6b5842b2dbc448461d75bc8cc54a3b654b1/icon.png
--------------------------------------------------------------------------------
/icon.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path.s3tc="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.s3tc.stex"
6 | path.etc2="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.etc2.stex"
7 | metadata={
8 | "imported_formats": [ "s3tc", "etc2" ],
9 | "vram_texture": true
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://icon.png"
15 | dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.s3tc.stex", "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.etc2.stex" ]
16 |
17 | [params]
18 |
19 | compress/mode=2
20 | compress/lossy_quality=0.7
21 | compress/hdr_mode=0
22 | compress/bptc_ldr=0
23 | compress/normal_map=0
24 | flags/repeat=true
25 | flags/filter=true
26 | flags/mipmaps=true
27 | flags/anisotropic=false
28 | flags/srgb=2
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/HDR_as_SRGB=false
32 | process/invert_color=false
33 | stream=false
34 | size_limit=0
35 | detect_3d=false
36 | svg/scale=1.0
37 |
--------------------------------------------------------------------------------
/level.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=12 format=2]
2 |
3 | [ext_resource path="res://navigation.gd" type="Script" id=1]
4 | [ext_resource path="res://map.png" type="Texture" id=2]
5 | [ext_resource path="res://character.png" type="Texture" id=3]
6 | [ext_resource path="res://addons/Trail/trail_2d.gd" type="Script" id=4]
7 | [ext_resource path="res://assets/trail_1_a.png" type="Texture" id=5]
8 | [ext_resource path="res://assets/NotoSansUI_Regular.ttf" type="DynamicFontData" id=6]
9 |
10 | [sub_resource type="GDScript" id=1]
11 | script/source = "extends Control
12 |
13 |
14 | func _input(event):
15 | if event.is_action(\"ui_cancel\"):
16 | get_tree().change_scene(\"res://Menu.tscn\")
17 |
18 |
19 | func _on_back_btn_button_down():
20 | get_tree().change_scene(\"res://Menu.tscn\")
21 | "
22 |
23 | [sub_resource type="DynamicFont" id=2]
24 | size = 18
25 | use_mipmaps = true
26 | use_filter = true
27 | font_data = ExtResource( 6 )
28 |
29 | [sub_resource type="NavigationPolygon" id=3]
30 | vertices = PoolVector2Array( 587.833, 271.924, 530.464, 284.878, 508.256, 281.177, 497.153, 255.269, 624.926, 359.595, 648.903, 394.065, 620.443, 383.995, 669.26, 297.833, 648.903, 321.891, 650.754, 251.567, 619.293, 510.654, 676.663, 493.998, 706.272, 501.401, 669.26, 529.16, 602.638, 523.608, 587.833, 179.393, 573.028, 140.53, 645.202, 159.036, 710.106, 179.216, 630.397, 212.704, 597.086, 192.348, 471.244, 251.567, 421.277, 270.074, 428.68, 246.015, 502.704, 97.9661, 517.509, 55.4019, 537.866, 99.8167, 536.016, 175.692, 495.302, 164.588, 487.899, 85.0117, 310.24, 75.7586, 308.39, 92.4142, 345.402, 210.854, 360.207, 223.808, 297.286, 258.97, 288.033, 231.211, 319.493, 190.497, 193.651, 423.675, 245.469, 477.343, 221.41, 488.446, 147.386, 408.87, 182.548, 382.961, 145.584, 224.311, 175.145, 332.995, 202.904, 99.8167, 310.24, 62.8043, 695.169, 303.385, 682.214, 284.878, 598.937, 492.148, 571.177, 501.401, 605.437, 456.366, 621.144, 486.596, 538.077, 499.891, 395.879, 501.87, 536.407, 524.944, 371.311, 518.056, 573.028, 94.2648, 582.281, 47.9994, 667.409, 75.7586, 350.954, 447.733, 363.908, 351.501, 384.265, 351.501, 376.862, 418.123, 373.441, 436.494, 424.978, 334.845, 421.277, 360.754, 352.804, 320.04, 321.344, 338.546, 299.136, 283.028, 241.767, 327.443, 234.365, 244.165, 325.228, 486.302, 300.441, 497.494, 317.643, 447.733, 332.441, 457.494, 524.608, 359.37, 526.762, 342.248, 366.441, 467.494, 480.497, 434.779, 496.638, 439.381, 476.441, 468.494, 265.825, 407.019, 184.398, 349.65, 310.24, 112.771, 267.676, 153.485, 221.41, 171.991, 700.721, 268.223, 397.219, 188.646, 415.725, 177.543, 465.692, 179.393, 476.796, 207.152, 443.485, 192.348, 437.933, 170.14, 452.738, 166.439, 460.14, 123.875, 476.796, 149.783, 189.95, 231.211 )
31 | polygons = [ PoolIntArray( 0, 1, 2, 3 ), PoolIntArray( 4, 5, 6 ), PoolIntArray( 7, 8, 9 ), PoolIntArray( 10, 11, 12, 13, 14 ), PoolIntArray( 15, 16, 17, 18, 19, 20 ), PoolIntArray( 21, 3, 2, 22, 23 ), PoolIntArray( 24, 25, 26, 27, 28 ), PoolIntArray( 25, 24, 29 ), PoolIntArray( 30, 25, 29, 31 ), PoolIntArray( 32, 33, 34, 35, 36 ), PoolIntArray( 37, 38, 39, 40 ), PoolIntArray( 41, 37, 40 ), PoolIntArray( 41, 40, 42, 43 ), PoolIntArray( 44, 45, 30, 31 ), PoolIntArray( 46, 12, 11, 7, 47 ), PoolIntArray( 47, 7, 9 ), PoolIntArray( 48, 10, 14, 49 ), PoolIntArray( 50, 6, 5, 51, 48 ), PoolIntArray( 52, 50, 48, 49 ), PoolIntArray( 53, 52, 49, 54, 55 ), PoolIntArray( 17, 56, 57, 58, 18 ), PoolIntArray( 59, 60, 61, 62, 63 ), PoolIntArray( 64, 65, 61, 66 ), PoolIntArray( 66, 61, 60, 67, 68 ), PoolIntArray( 68, 67, 69, 70 ), PoolIntArray( 68, 70, 35, 34 ), PoolIntArray( 71, 53, 55, 72 ), PoolIntArray( 71, 72, 73, 74 ), PoolIntArray( 4, 6, 75, 76 ), PoolIntArray( 63, 77, 74, 59 ), PoolIntArray( 78, 2, 1, 76, 75, 79, 80 ), PoolIntArray( 78, 80, 63, 62 ), PoolIntArray( 81, 59, 74, 73 ), PoolIntArray( 81, 73, 41, 82 ), PoolIntArray( 44, 31, 83, 84, 85 ), PoolIntArray( 18, 86, 47, 9, 19 ), PoolIntArray( 15, 20, 3, 21 ), PoolIntArray( 23, 22, 87, 88 ), PoolIntArray( 89, 28, 27, 90, 91 ), PoolIntArray( 89, 91, 92, 93 ), PoolIntArray( 36, 94, 95, 93, 92 ), PoolIntArray( 36, 92, 88 ), PoolIntArray( 36, 88, 87, 32 ), PoolIntArray( 36, 35, 85, 84 ), PoolIntArray( 42, 44, 85, 96 ), PoolIntArray( 42, 96, 43 ), PoolIntArray( 41, 43, 82 ) ]
32 | outlines = [ PoolVector2Array( 221.41, 488.446, 147.386, 408.87, 145.584, 224.311, 202.904, 99.8167, 310.24, 62.8043, 310.24, 75.7586, 517.509, 55.4019, 537.866, 99.8167, 536.016, 175.692, 476.796, 207.152, 443.485, 192.348, 437.933, 170.14, 415.725, 177.543, 428.68, 246.015, 471.244, 251.567, 587.833, 179.393, 573.028, 140.53, 645.202, 159.036, 573.028, 94.2648, 582.281, 47.9994, 667.409, 75.7586, 710.106, 179.216, 700.721, 268.223, 682.214, 284.878, 695.169, 303.385, 706.272, 501.401, 669.26, 529.16, 602.638, 523.608, 571.177, 501.401, 536.407, 524.944, 371.311, 518.056, 300.441, 497.494, 317.643, 447.733, 182.548, 382.961, 193.651, 423.675, 245.469, 477.343 ), PoolVector2Array( 350.954, 447.733, 363.908, 351.501, 321.344, 338.546, 241.767, 327.443, 234.365, 244.165, 288.033, 231.211, 221.41, 171.991, 189.95, 231.211, 175.145, 332.995, 184.398, 349.65, 265.825, 407.019 ), PoolVector2Array( 267.676, 153.485, 310.24, 112.771, 308.39, 92.4142, 487.899, 85.0117, 502.704, 97.9661, 495.302, 164.588, 465.692, 179.393, 452.738, 166.439, 476.796, 149.783, 460.14, 123.875, 319.493, 190.497 ), PoolVector2Array( 397.219, 188.646, 345.402, 210.854, 360.207, 223.808, 297.286, 258.97, 299.136, 283.028, 352.804, 320.04, 424.978, 334.845, 421.277, 360.754, 384.265, 351.501, 376.862, 418.123, 480.497, 434.779, 508.256, 281.177, 421.277, 270.074 ), PoolVector2Array( 497.153, 255.269, 597.086, 192.348, 630.397, 212.704, 650.754, 251.567, 648.903, 321.891, 669.26, 297.833, 676.663, 493.998, 619.293, 510.654, 598.937, 492.148, 621.144, 486.596, 648.903, 394.065, 624.926, 359.595, 526.762, 342.248, 530.464, 284.878, 587.833, 271.924 ), PoolVector2Array( 325.228, 486.302, 332.441, 457.494, 366.441, 467.494, 373.441, 436.494, 476.441, 468.494, 496.638, 439.381, 524.608, 359.37, 620.443, 383.995, 605.437, 456.366, 538.077, 499.891, 395.879, 501.87 ) ]
33 |
34 | [sub_resource type="Curve" id=4]
35 | _data = [ Vector2( 0, 0 ), 0.0, 2.70451, 0, 0, Vector2( 1, 1 ), -0.163193, 0.0, 0, 0 ]
36 |
37 | [sub_resource type="Gradient" id=5]
38 | colors = PoolColorArray( 0.980469, 0.0306396, 0.0306396, 1, 0.735413, 1, 0.00390625, 1 )
39 |
40 | [node name="2D_demo" type="Control"]
41 | anchor_right = 1.0
42 | anchor_bottom = 1.0
43 | script = SubResource( 1 )
44 | __meta__ = {
45 | "_edit_use_anchors_": false
46 | }
47 |
48 | [node name="ui" type="Control" parent="."]
49 | anchor_right = 1.0
50 | anchor_bottom = 1.0
51 | __meta__ = {
52 | "_edit_use_anchors_": false
53 | }
54 |
55 | [node name="back_btn" type="Button" parent="ui"]
56 | margin_left = 20.0
57 | margin_top = 20.0
58 | margin_right = 144.0
59 | margin_bottom = 52.0
60 | custom_fonts/font = SubResource( 2 )
61 | text = "<- Back"
62 | __meta__ = {
63 | "_edit_use_anchors_": false,
64 | "_editor_description_": ""
65 | }
66 |
67 | [node name="Navigation2D" type="Navigation2D" parent="."]
68 | script = ExtResource( 1 )
69 |
70 | [node name="Navmesh" type="NavigationPolygonInstance" parent="Navigation2D"]
71 | navpoly = SubResource( 3 )
72 |
73 | [node name="Map" type="Sprite" parent="Navigation2D"]
74 | position = Vector2( 429.585, 287.32 )
75 | texture = ExtResource( 2 )
76 |
77 | [node name="Character" type="Sprite" parent="Navigation2D"]
78 | position = Vector2( 228.464, 132.594 )
79 | scale = Vector2( 0.5, 0.5 )
80 | texture = ExtResource( 3 )
81 | offset = Vector2( 0, -26 )
82 |
83 | [node name="Trail2D" type="Line2D" parent="Navigation2D/Character"]
84 | show_behind_parent = true
85 | width = 30.0
86 | width_curve = SubResource( 4 )
87 | default_color = Color( 1, 1, 1, 1 )
88 | gradient = SubResource( 5 )
89 | texture = ExtResource( 5 )
90 | texture_mode = 2
91 | joint_mode = 2
92 | script = ExtResource( 4 )
93 |
94 | [node name="Camera2D" type="Camera2D" parent="Navigation2D"]
95 | offset = Vector2( 400, 300 )
96 | current = true
97 | [connection signal="button_down" from="ui/back_btn" to="." method="_on_back_btn_button_down"]
98 |
--------------------------------------------------------------------------------
/map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OBKF/Godot-Trail-System/8827d6b5842b2dbc448461d75bc8cc54a3b654b1/map.png
--------------------------------------------------------------------------------
/map.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path="res://.import/map.png-9eea34967fae34f4388f4a32a16da936.stex"
6 | metadata={
7 | "vram_texture": false
8 | }
9 |
10 | [deps]
11 |
12 | source_file="res://map.png"
13 | dest_files=[ "res://.import/map.png-9eea34967fae34f4388f4a32a16da936.stex" ]
14 |
15 | [params]
16 |
17 | compress/mode=0
18 | compress/lossy_quality=0.7
19 | compress/hdr_mode=0
20 | compress/bptc_ldr=0
21 | compress/normal_map=0
22 | flags/repeat=0
23 | flags/filter=true
24 | flags/mipmaps=false
25 | flags/anisotropic=false
26 | flags/srgb=2
27 | process/fix_alpha_border=true
28 | process/premult_alpha=false
29 | process/HDR_as_SRGB=false
30 | process/invert_color=false
31 | stream=false
32 | size_limit=0
33 | detect_3d=true
34 | svg/scale=1.0
35 |
--------------------------------------------------------------------------------
/navigation.gd:
--------------------------------------------------------------------------------
1 | extends Navigation2D
2 |
3 | export(float) var CHARACTER_SPEED = 400.0
4 | var path = []
5 |
6 | # The 'click' event is a custom input action defined in
7 | # Project > Project Settings > Input Map tab
8 | func _input(event):
9 | if not event.is_action_pressed('click'):
10 | return
11 | _update_navigation_path($Character.position, get_local_mouse_position())
12 |
13 |
14 | func _update_navigation_path(start_position, end_position):
15 | # get_simple_path is part of the Navigation2D class
16 | # it returns a PoolVector2Array of points that lead you from the
17 | # start_position to the end_position
18 | path = get_simple_path(start_position, end_position, true)
19 | # The first point is always the start_position
20 | # We don't need it in this example as it corresponds to the character's position
21 | path.remove(0)
22 | set_process(true)
23 |
24 |
25 | func _process(delta):
26 | var walk_distance = CHARACTER_SPEED * delta
27 | move_along_path(walk_distance)
28 |
29 |
30 | func move_along_path(distance):
31 | var last_point = $Character.position
32 | while path.size():
33 | var distance_between_points = last_point.distance_to(path[0])
34 |
35 | # the position to move to falls between two points
36 | if distance <= distance_between_points:
37 | $Character.position = last_point.linear_interpolate(path[0], distance / distance_between_points)
38 | return
39 |
40 | # the position is past the end of the segment
41 | distance -= distance_between_points
42 | last_point = path[0]
43 | path.remove(0)
44 | # the character reached the end of the path
45 | $Character.position = last_point
46 | set_process(false)
47 |
--------------------------------------------------------------------------------
/navmesh.gd:
--------------------------------------------------------------------------------
1 | extends Navigation
2 |
3 | const SPEED = 4.0
4 |
5 | var camrot = 0.0
6 |
7 | var begin = Vector3()
8 | var end = Vector3()
9 | var m = SpatialMaterial.new()
10 |
11 | var path = []
12 | var draw_path = true
13 |
14 | func _ready():
15 | set_process_input(true)
16 | m.flags_unshaded = true
17 | m.flags_use_point_size = true
18 | m.albedo_color = Color.white
19 |
20 |
21 | func _process(delta):
22 | if path.size() > 1:
23 | var to_walk = delta * SPEED
24 | var to_watch = Vector3.UP
25 | while to_walk > 0 and path.size() >= 2:
26 | var pfrom = path[path.size() - 1]
27 | var pto = path[path.size() - 2]
28 | to_watch = (pto - pfrom).normalized()
29 | var d = pfrom.distance_to(pto)
30 | if d <= to_walk:
31 | path.remove(path.size() - 1)
32 | to_walk -= d
33 | else:
34 | path[path.size() - 1] = pfrom.linear_interpolate(pto, to_walk / d)
35 | to_walk = 0
36 |
37 | var atpos = path[path.size() - 1]
38 | var atdir = to_watch
39 | atdir.y = 0
40 |
41 | var t = Transform()
42 | t.origin = atpos
43 | t = t.looking_at(atpos + atdir, Vector3.UP)
44 | get_node("RobotBase").set_transform(t)
45 |
46 | if path.size() < 2:
47 | path = []
48 | set_process(false)
49 | else:
50 | set_process(false)
51 |
52 |
53 | func _input(event):
54 | if event.is_action("ui_cancel"):
55 | get_tree().change_scene("res://Menu.tscn")
56 |
57 | if event is InputEventMouseButton and event.button_index == BUTTON_LEFT and event.pressed:
58 | var from = get_node("CameraBase/Camera").project_ray_origin(event.position)
59 | var to = from + get_node("CameraBase/Camera").project_ray_normal(event.position) * 100
60 | var p = get_closest_point_to_segment(from, to)
61 |
62 | begin = get_closest_point(get_node("RobotBase").get_translation())
63 | end = p
64 | _update_path()
65 |
66 | if event is InputEventMouseMotion:
67 | if event.button_mask & (BUTTON_MASK_MIDDLE + BUTTON_MASK_RIGHT):
68 | camrot += event.relative.x * 0.005
69 | get_node("CameraBase").set_rotation(Vector3(0, camrot, 0))
70 | print("Camera Rotation: ", camrot)
71 |
72 |
73 | func _update_path():
74 | var p = get_simple_path(begin, end, true)
75 | path = Array(p) # Vector3 array too complex to use, convert to regular array.
76 | path.invert()
77 | set_process(true)
78 |
79 | if draw_path:
80 | # var im = get_node("Draw")
81 | # im.set_material_override(m)
82 | # im.clear()
83 | # im.begin(Mesh.PRIMITIVE_POINTS, null)
84 | # im.add_vertex(begin)
85 | # im.add_vertex(end)
86 | # im.end()
87 | # im.begin(Mesh.PRIMITIVE_LINE_STRIP, null)
88 | # for x in p:
89 | # im.add_vertex(x)
90 | # im.end()
91 |
92 | get_node("RobotBase/target").clear_points()
93 | # for i in range(p.size()-1, -1, -1):
94 | for i in range(p.size()):
95 | var normal = get_closest_point_normal(p[i]).normalized()
96 | var offset = normal*0.1
97 | var _transform = Transform(Basis(normal), p[i]+offset)
98 | get_node("RobotBase/target").add_point(_transform)
99 | get_node("RobotBase/target").smooth()
100 | get_node("RobotBase/target").render(true)
101 |
102 |
103 | func _on_back_btn_button_down():
104 | get_tree().change_scene("res://Menu.tscn")
105 |
--------------------------------------------------------------------------------
/parameters.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OBKF/Godot-Trail-System/8827d6b5842b2dbc448461d75bc8cc54a3b654b1/parameters.png
--------------------------------------------------------------------------------
/parameters.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path="res://.import/parameters.png-97a78828efd281025e3ff53ae2ecfd92.stex"
6 | metadata={
7 | "vram_texture": false
8 | }
9 |
10 | [deps]
11 |
12 | source_file="res://parameters.png"
13 | dest_files=[ "res://.import/parameters.png-97a78828efd281025e3ff53ae2ecfd92.stex" ]
14 |
15 | [params]
16 |
17 | compress/mode=0
18 | compress/lossy_quality=0.7
19 | compress/hdr_mode=0
20 | compress/bptc_ldr=0
21 | compress/normal_map=0
22 | flags/repeat=0
23 | flags/filter=true
24 | flags/mipmaps=false
25 | flags/anisotropic=false
26 | flags/srgb=2
27 | process/fix_alpha_border=true
28 | process/premult_alpha=false
29 | process/HDR_as_SRGB=false
30 | process/invert_color=false
31 | stream=false
32 | size_limit=0
33 | detect_3d=true
34 | svg/scale=1.0
35 |
--------------------------------------------------------------------------------
/particle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OBKF/Godot-Trail-System/8827d6b5842b2dbc448461d75bc8cc54a3b654b1/particle.png
--------------------------------------------------------------------------------
/particle.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="StreamTexture"
5 | path.s3tc="res://.import/particle.png-c2ba3d91e96c62035d672392a1197218.s3tc.stex"
6 | path.etc2="res://.import/particle.png-c2ba3d91e96c62035d672392a1197218.etc2.stex"
7 | metadata={
8 | "imported_formats": [ "s3tc", "etc2" ],
9 | "vram_texture": true
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://particle.png"
15 | dest_files=[ "res://.import/particle.png-c2ba3d91e96c62035d672392a1197218.s3tc.stex", "res://.import/particle.png-c2ba3d91e96c62035d672392a1197218.etc2.stex" ]
16 |
17 | [params]
18 |
19 | compress/mode=2
20 | compress/lossy_quality=0.7
21 | compress/hdr_mode=0
22 | compress/bptc_ldr=0
23 | compress/normal_map=0
24 | flags/repeat=true
25 | flags/filter=true
26 | flags/mipmaps=true
27 | flags/anisotropic=false
28 | flags/srgb=1
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/HDR_as_SRGB=false
32 | process/invert_color=false
33 | stream=false
34 | size_limit=0
35 | detect_3d=false
36 | svg/scale=1.0
37 |
--------------------------------------------------------------------------------
/project.godot:
--------------------------------------------------------------------------------
1 | ; Engine configuration file.
2 | ; It's best edited using the editor UI and not directly,
3 | ; since the parameters that go here are not all obvious.
4 | ;
5 | ; Format:
6 | ; [section] ; section goes between []
7 | ; param=value ; assign values to parameters
8 |
9 | config_version=4
10 |
11 | _global_script_classes=[ ]
12 | _global_script_class_icons={
13 |
14 | }
15 |
16 | [application]
17 |
18 | config/name="Trail Demo"
19 | run/main_scene="res://Menu.tscn"
20 | config/icon="res://icon.png"
21 |
22 | [display]
23 |
24 | window/size/width=1280
25 | window/size/height=720
26 | window/size/fullscreen=true
27 | window/stretch/mode="2d"
28 | window/stretch/aspect="keep"
29 |
30 | [editor_plugins]
31 |
32 | enabled=PoolStringArray( "Trail" )
33 |
34 | [gdnative]
35 |
36 | singletons=[ ]
37 |
38 | [input]
39 |
40 | click={
41 | "deadzone": 0.5,
42 | "events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":false,"script":null)
43 | ]
44 | }
45 |
46 | [rendering]
47 |
48 | environment/default_environment="res://default_environment.tres"
49 |
--------------------------------------------------------------------------------
/projectile_1.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=14 format=2]
2 |
3 | [ext_resource path="res://assets/projectile_shape_1.obj" type="ArrayMesh" id=1]
4 | [ext_resource path="res://assets/tex_1.png" type="Texture" id=2]
5 | [ext_resource path="res://addons/Trail/trail_3d.gd" type="Script" id=3]
6 | [ext_resource path="res://assets/glow.png" type="Texture" id=4]
7 | [ext_resource path="res://assets/flow_trail.png" type="Texture" id=5]
8 |
9 | [sub_resource type="GDScript" id=1]
10 | script/source = "extends Spatial
11 |
12 |
13 | var time := 0.0
14 |
15 | func _ready():
16 | pass # Replace with function body.
17 |
18 |
19 | func _process(delta):
20 | time += delta
21 | $shape.material_override.set_shader_param('time', time)
22 | "
23 |
24 | [sub_resource type="Shader" id=2]
25 | code = "shader_type spatial;
26 |
27 | uniform vec4 color : hint_color = vec4(1.0);
28 | uniform float speed = -1.0;
29 | uniform float time = 0.0;
30 | uniform sampler2D base: hint_albedo;
31 |
32 | varying vec2 uv;
33 | void vertex(){
34 | uv = vec2(UV.x+time*speed, UV.y);
35 | }
36 |
37 | void fragment(){
38 | float a = texture(base, uv).a;
39 |
40 | EMISSION = color.rgb*2.0;
41 | ALPHA = clamp(a * color.a * 1.5 - 0.3, 0.0, 1.0);
42 | }"
43 |
44 | [sub_resource type="ShaderMaterial" id=3]
45 | shader = SubResource( 2 )
46 | shader_param/color = Color( 0, 0.505882, 1, 1 )
47 | shader_param/speed = -1.0
48 | shader_param/time = 0.0
49 | shader_param/base = ExtResource( 2 )
50 |
51 | [sub_resource type="SpatialMaterial" id=4]
52 | params_blend_mode = 1
53 | params_billboard_mode = 1
54 |
55 | [sub_resource type="Shader" id=5]
56 | code = "shader_type spatial;
57 |
58 | //render_mode unshaded;
59 |
60 | uniform vec4 color : hint_color = vec4(1.0);
61 | uniform sampler2D flow_texture :hint_albedo;
62 | uniform float flow_strength = 1.0;
63 | uniform float flow_speed = 1.0;
64 | uniform float dark_edge = 1.0;
65 | uniform float trail_offset_speed = 1.0;
66 | uniform float dissolve_flow_speed = 1.0;
67 |
68 |
69 | void fragment(){
70 | vec4 _color = COLOR*color;
71 | float edge_mask = clamp(UV.y*(1.0-UV.y)*4.0, 0.0, 1.0);
72 |
73 | /// Tail
74 | // vec2 uv_tail_offset = UV + vec2(flow_speed*TIME, 0.0);
75 | // vec2 tail_distortion = (texture(flow_texture, uv_tail_offset).rg-vec2(0.5))*2.0*flow_strength*(1.0-UV.x);
76 | // uv_tail_offset = UV + tail_distortion + vec2(TIME * trail_offset_speed, 0);
77 | // float t = texture(flow_texture, uv_tail_offset).b;
78 |
79 | /// Dissolve
80 | vec2 uv_d = UV + vec2(dissolve_flow_speed*TIME, 0);
81 | float d = texture(flow_texture, uv_d).g + 2.0 * UV.x - 1.0;
82 | d = clamp(d*2.0-1.0, 0.0, 1.0);
83 | //
84 | // float tail = t * d * edge_mask;
85 |
86 | // ALBEDO = vec3(tail);
87 | ALBEDO = vec3(0.0);
88 | EMISSION = COLOR.rgb * d * edge_mask;
89 | // EMISSION = _color.rgb * clamp(tail+edge_mask, 0, 1);
90 | // ALPHA = _color.a*tail;
91 | ALPHA = _color.a*d;
92 |
93 | }"
94 |
95 | [sub_resource type="ShaderMaterial" id=6]
96 | shader = SubResource( 5 )
97 | shader_param/color = Color( 1, 1, 1, 1 )
98 | shader_param/flow_strength = 1.0
99 | shader_param/flow_speed = 1.0
100 | shader_param/dark_edge = 1.0
101 | shader_param/trail_offset_speed = 1.0
102 | shader_param/dissolve_flow_speed = 1.0
103 | shader_param/flow_texture = ExtResource( 5 )
104 |
105 | [sub_resource type="Curve" id=7]
106 | _data = [ Vector2( 0, 0.157084 ), 0.0, 4.82292, 0, 0, Vector2( 0.374581, 1 ), 0.0, 0.0, 0, 0 ]
107 |
108 | [sub_resource type="Gradient" id=8]
109 | offsets = PoolRealArray( 0, 0.210046, 0.56621, 1 )
110 | colors = PoolColorArray( 0.691406, 0.691406, 0.691406, 1, 0, 0.305511, 0.832031, 1, 0.996094, 0.962288, 0.602714, 1, 0.992188, 0.986368, 0.980173, 0 )
111 |
112 | [node name="projectile" type="Spatial"]
113 | script = SubResource( 1 )
114 |
115 | [node name="shape" type="MeshInstance" parent="."]
116 | transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.752557 )
117 | material_override = SubResource( 3 )
118 | mesh = ExtResource( 1 )
119 | material/0 = null
120 |
121 | [node name="glow" type="Sprite3D" parent="."]
122 | material_override = SubResource( 4 )
123 | pixel_size = 0.03
124 | texture = ExtResource( 4 )
125 |
126 | [node name="trail" type="ImmediateGeometry" parent="."]
127 | material_override = SubResource( 6 )
128 | script = ExtResource( 3 )
129 | distance = 0.5
130 | segments = 25
131 | lifetime = 2.0
132 | base_width = 1.9
133 | width_profile = SubResource( 7 )
134 | color_gradient = SubResource( 8 )
135 |
--------------------------------------------------------------------------------
/sword.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=10 format=2]
2 |
3 | [ext_resource path="res://assets/sword.obj" type="ArrayMesh" id=1]
4 | [ext_resource path="res://addons/Trail/trail_3d.gd" type="Script" id=2]
5 | [ext_resource path="res://assets/swoosh.png" type="Texture" id=3]
6 |
7 | [sub_resource type="SpatialMaterial" id=1]
8 | albedo_color = Color( 0.156863, 0.156863, 0.243137, 1 )
9 | metallic = 0.9
10 | roughness = 0.3
11 |
12 | [sub_resource type="SpatialMaterial" id=2]
13 | albedo_color = Color( 0, 0, 0, 1 )
14 | emission_enabled = true
15 | emission = Color( 1, 0.211765, 0, 1 )
16 | emission_energy = 5.0
17 | emission_operator = 0
18 | emission_on_uv2 = false
19 |
20 | [sub_resource type="Shader" id=3]
21 | code = "shader_type spatial;
22 | render_mode blend_mix,depth_draw_opaque,cull_disabled,diffuse_toon,specular_disabled,shadows_disabled,ambient_light_disabled;
23 | uniform vec4 albedo : hint_color = vec4(1.0);
24 | uniform sampler2D texture_emission : hint_albedo;
25 | uniform float emission_energy = 1.0;
26 |
27 |
28 | void vertex() {
29 | if (!OUTPUT_IS_SRGB) {
30 | COLOR.rgb = mix( pow((COLOR.rgb + vec3(0.055)) * (1.0 / (1.0 + 0.055)), vec3(2.4)), COLOR.rgb* (1.0 / 12.92), lessThan(COLOR.rgb,vec3(0.04045)) );
31 | }
32 | }
33 |
34 |
35 | void fragment() {
36 | ALBEDO = albedo.rgb;
37 | vec3 emission_tex = texture(texture_emission, UV).rgb;
38 | // EMISSION = emission_tex * emission_energy * COLOR.rgb;
39 | EMISSION = emission_energy * COLOR.rgb;
40 | // ALPHA = emission_tex.r * COLOR.a * albedo.a;
41 | ALPHA = emission_tex.r*COLOR.a;
42 | }
43 | "
44 |
45 | [sub_resource type="ShaderMaterial" id=4]
46 | shader = SubResource( 3 )
47 | shader_param/albedo = Color( 0, 0, 0, 1 )
48 | shader_param/emission_energy = 3.0
49 | shader_param/texture_emission = ExtResource( 3 )
50 |
51 | [sub_resource type="Curve" id=5]
52 | _data = [ Vector2( 0, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), -2.85721, 0.0, 0, 0 ]
53 |
54 | [sub_resource type="Gradient" id=6]
55 | offsets = PoolRealArray( 0, 0.881279, 1 )
56 | colors = PoolColorArray( 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0 )
57 |
58 | [node name="sword" type="MeshInstance"]
59 | mesh = ExtResource( 1 )
60 | material/0 = SubResource( 1 )
61 | material/1 = SubResource( 2 )
62 |
63 | [node name="target_position" type="Position3D" parent="."]
64 | transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.8, 0 )
65 |
66 | [node name="trail" type="ImmediateGeometry" parent="target_position"]
67 | material_override = SubResource( 4 )
68 | script = ExtResource( 2 )
69 | distance = 0.001
70 | lifetime = 0.8
71 | base_width = 1.2
72 | width_profile = SubResource( 5 )
73 | color_gradient = SubResource( 6 )
74 | smoothing_iterations = 2
75 | alignment = "Normal"
76 |
77 | [node name="OmniLight" type="OmniLight" parent="target_position"]
78 | light_energy = 3.0
79 | omni_range = 1.0
80 | omni_attenuation = 0.31864
81 |
--------------------------------------------------------------------------------