├── .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 | ![](icon.png) 2 | 3 | # Godot Trail System 4 | Advanced 2D/3D Trail system. 5 | 6 | [![GitHub issues](https://img.shields.io/github/issues/OBKF/Godot-Trail-System)](https://github.com/OBKF/Godot-Trail-System/issues) [![GitHub forks](https://img.shields.io/github/forks/OBKF/Godot-Trail-System)](https://github.com/OBKF/Godot-Trail-System/network) [![GitHub stars](https://img.shields.io/github/stars/OBKF/Godot-Trail-System)](https://github.com/OBKF/Godot-Trail-System/stargazers) [![GitHub license](https://img.shields.io/github/license/OBKF/Godot-Trail-System)](https://github.com/OBKF/Godot-Trail-System/blob/master/LICENSE) [![Twitter](https://img.shields.io/twitter/url?style=social&url=https%3A%2F%2Ftwitter.com%2FOBKF_)](https://twitter.com/intent/tweet?text=Wow:&url=https%3A%2F%2Fgithub.com%2FOBKF%2FGodot-Trail-System) 7 | 8 | ![](godot_trail.png) 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.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](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 | [![See it in action](https://img.youtube.com/vi/cqkCt9XIBA0/0.jpg)](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 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 30 | 34 | 35 | 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 | 19 | 21 | 35 | 36 | 60 | 62 | 63 | 65 | image/svg+xml 66 | 68 | 69 | 70 | 71 | 72 | 77 | 82 | 83 | 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 | --------------------------------------------------------------------------------