proto3 initial commit

This commit is contained in:
Segey Lapin
2020-04-13 12:45:25 +03:00
parent 69410badf6
commit 1084b6d5c3
1588 changed files with 368852 additions and 23 deletions

Binary file not shown.

View File

@@ -0,0 +1,430 @@
[gd_resource type="AnimationNodeBlendTree" load_steps=98 format=2]
[sub_resource type="AnimationNodeAnimation" id=98]
animation = "hang-grab_a-loop"
[sub_resource type="AnimationNodeOneShot" id=99]
[sub_resource type="AnimationNodeAnimation" id=100]
animation = "climb-low-obstacle"
[sub_resource type="AnimationNodeTimeScale" id=101]
[sub_resource type="AnimationNodeTransition" id=102]
input_count = 2
input_0/name = "free"
input_0/auto_advance = false
input_1/name = "grabbed"
input_1/auto_advance = false
[sub_resource type="AnimationNodeBlend2" id=103]
filter_enabled = true
filters = [ ".:clavicle_L", ".:finger1-1_L", ".:finger1-2_L", ".:finger1-3_L", ".:finger2-1_L", ".:finger2-2_L", ".:finger2-3_L", ".:finger3-1_L", ".:finger3-2_L", ".:finger3-3_L", ".:finger4-1_L", ".:finger4-2_L", ".:finger4-3_L", ".:finger5-1_L", ".:finger5-2_L", ".:finger5-3_L", ".:grabber_L", ".:lowerarm01_L", ".:metacarpal1_L", ".:metacarpal2_L", ".:metacarpal3_L", ".:metacarpal4_L", ".:shoulder01_L", ".:spine01", ".:spine02", ".:spine03", ".:spine04", ".:spine05", ".:upperarm01_L", ".:upperarm02_L", ".:wrist_L" ]
[sub_resource type="AnimationNodeOneShot" id=104]
[sub_resource type="AnimationNodeAnimation" id=105]
animation = "hang-grab_attack_a"
[sub_resource type="AnimationNodeTimeScale" id=106]
[sub_resource type="AnimationNodeTimeScale" id=107]
[sub_resource type="AnimationNodeTimeSeek" id=108]
[sub_resource type="AnimationNodeAnimation" id=109]
animation = "hang-grab_b-loop"
[sub_resource type="AnimationNodeAnimation" id=110]
animation = "hang-grab_attack_b"
[sub_resource type="AnimationNodeTimeScale" id=111]
[sub_resource type="AnimationNodeOneShot" id=112]
[sub_resource type="AnimationNodeTimeScale" id=113]
[sub_resource type="AnimationNodeTimeSeek" id=114]
[sub_resource type="AnimationNodeAnimation" id=93]
animation = "kneeling-loop"
[sub_resource type="AnimationNodeTimeScale" id=94]
[sub_resource type="AnimationNodeBlendTree" id=95]
nodes/kneel_animation/node = SubResource( 93 )
nodes/kneel_animation/position = Vector2( 180, 120 )
nodes/kneel_speed/node = SubResource( 94 )
nodes/kneel_speed/position = Vector2( 500, 120 )
nodes/output/position = Vector2( 740, 120 )
node_connections = [ "output", 0, "kneel_speed", "kneel_speed", 0, "kneel_animation" ]
[sub_resource type="AnimationNodeAnimation" id=18]
animation = "stand-to-walk"
[sub_resource type="AnimationNodeAnimation" id=19]
animation = "stand"
[sub_resource type="AnimationNodeTimeScale" id=20]
[sub_resource type="AnimationNodeTimeScale" id=21]
[sub_resource type="AnimationNodeBlendTree" id=22]
nodes/Animation/node = SubResource( 19 )
nodes/Animation/position = Vector2( 240, 100 )
nodes/output/position = Vector2( 1000, 100 )
nodes/speed/node = SubResource( 20 )
nodes/speed/position = Vector2( 800, 100 )
nodes/stand_speed/node = SubResource( 21 )
nodes/stand_speed/position = Vector2( 520, 100 )
node_connections = [ "speed", 0, "stand_speed", "output", 0, "speed", "stand_speed", 0, "Animation" ]
[sub_resource type="AnimationNodeTimeScale" id=23]
[sub_resource type="AnimationNodeTimeScale" id=24]
[sub_resource type="AnimationNodeAnimation" id=25]
animation = "walk-loop"
[sub_resource type="AnimationNodeAnimation" id=26]
animation = "walk2-loop"
[sub_resource type="AnimationNodeBlendSpace1D" id=27]
blend_point_0/node = SubResource( 25 )
blend_point_0/pos = 0.0
blend_point_1/node = SubResource( 26 )
blend_point_1/pos = 1.0
[sub_resource type="AnimationNodeBlendTree" id=28]
graph_offset = Vector2( 0, 133.5 )
nodes/output/position = Vector2( 1000, 140 )
nodes/speed/node = SubResource( 23 )
nodes/speed/position = Vector2( 760, 140 )
nodes/walk_speed/node = SubResource( 24 )
nodes/walk_speed/position = Vector2( 480, 140 )
nodes/walking/node = SubResource( 27 )
nodes/walking/position = Vector2( 120, 260 )
node_connections = [ "speed", 0, "walk_speed", "output", 0, "speed", "walk_speed", 0, "walking" ]
[sub_resource type="AnimationNodeTimeScale" id=29]
[sub_resource type="AnimationNodeAnimation" id=30]
animation = "wash-floor-loop"
[sub_resource type="AnimationNodeBlendTree" id=31]
graph_offset = Vector2( 0, -251 )
nodes/TimeScale/node = SubResource( 29 )
nodes/TimeScale/position = Vector2( 460, 160 )
nodes/output/position = Vector2( 700, 160 )
nodes/wash_floor_animation/node = SubResource( 30 )
nodes/wash_floor_animation/position = Vector2( 140, 160 )
node_connections = [ "output", 0, "TimeScale", "TimeScale", 0, "wash_floor_animation" ]
[sub_resource type="AnimationNodeStateMachineTransition" id=32]
[sub_resource type="AnimationNodeStateMachineTransition" id=33]
[sub_resource type="AnimationNodeStateMachineTransition" id=34]
[sub_resource type="AnimationNodeStateMachineTransition" id=35]
[sub_resource type="AnimationNodeStateMachineTransition" id=36]
[sub_resource type="AnimationNodeStateMachineTransition" id=96]
[sub_resource type="AnimationNodeStateMachineTransition" id=97]
[sub_resource type="AnimationNodeStateMachine" id=37]
states/kneel/node = SubResource( 95 )
states/kneel/position = Vector2( 459, 358 )
states/stand/node = SubResource( 22 )
states/stand/position = Vector2( 222, 87 )
states/stand-to-walk/node = SubResource( 18 )
states/stand-to-walk/position = Vector2( 605, 71 )
states/walk/node = SubResource( 28 )
states/walk/position = Vector2( 647, 210 )
states/wash_floor/node = SubResource( 31 )
states/wash_floor/position = Vector2( 140, 268 )
transitions = [ "stand", "stand-to-walk", SubResource( 32 ), "stand-to-walk", "walk", SubResource( 33 ), "walk", "stand", SubResource( 34 ), "stand", "wash_floor", SubResource( 35 ), "wash_floor", "stand", SubResource( 36 ), "stand", "kneel", SubResource( 96 ), "kneel", "stand", SubResource( 97 ) ]
start_node = "stand"
[sub_resource type="AnimationNodeAnimation" id=115]
animation = "bed_torture_beating_b-loop"
[sub_resource type="AnimationNodeTimeScale" id=116]
[sub_resource type="AnimationNodeBlendTree" id=117]
nodes/Animation/node = SubResource( 115 )
nodes/Animation/position = Vector2( 97, 97 )
nodes/beating_speed/node = SubResource( 116 )
nodes/beating_speed/position = Vector2( 420, 100 )
nodes/output/position = Vector2( 700, 120 )
node_connections = [ "output", 0, "beating_speed", "beating_speed", 0, "Animation" ]
[sub_resource type="AnimationNodeAnimation" id=118]
animation = "bed_torture_beating_a-loop"
[sub_resource type="AnimationNodeTimeScale" id=119]
[sub_resource type="AnimationNodeBlendTree" id=120]
graph_offset = Vector2( 0, -251 )
nodes/Animation/node = SubResource( 118 )
nodes/Animation/position = Vector2( 80, 100 )
nodes/beating_m_speed/node = SubResource( 119 )
nodes/beating_m_speed/position = Vector2( 560, 100 )
nodes/output/position = Vector2( 960, 140 )
node_connections = [ "output", 0, "beating_m_speed", "beating_m_speed", 0, "Animation" ]
[sub_resource type="AnimationNodeAnimation" id=121]
animation = "lying-on-back-arms-tied-loop"
[sub_resource type="AnimationNodeTimeScale" id=122]
[sub_resource type="AnimationNodeBlendTree" id=123]
nodes/Animation/node = SubResource( 121 )
nodes/Animation/position = Vector2( 60, 80 )
nodes/TimeScale/node = SubResource( 122 )
nodes/TimeScale/position = Vector2( 480, 80 )
nodes/output/position = Vector2( 720, 80 )
node_connections = [ "output", 0, "TimeScale", "TimeScale", 0, "Animation" ]
[sub_resource type="AnimationNodeAnimation" id=124]
animation = "bed_torture_start_b"
[sub_resource type="AnimationNodeTimeScale" id=125]
[sub_resource type="AnimationNodeBlendTree" id=126]
nodes/Animation/node = SubResource( 124 )
nodes/Animation/position = Vector2( 80, 80 )
nodes/bed_start_speed/node = SubResource( 125 )
nodes/bed_start_speed/position = Vector2( 380, 80 )
nodes/output/position = Vector2( 620, 80 )
node_connections = [ "output", 0, "bed_start_speed", "bed_start_speed", 0, "Animation" ]
[sub_resource type="AnimationNodeAnimation" id=127]
animation = "bed_torture_start_a"
[sub_resource type="AnimationNodeTimeScale" id=128]
[sub_resource type="AnimationNodeBlendTree" id=129]
graph_offset = Vector2( 0, 15.75 )
nodes/Animation/node = SubResource( 127 )
nodes/Animation/position = Vector2( 69, 94 )
nodes/bed_start_m_speed/node = SubResource( 128 )
nodes/bed_start_m_speed/position = Vector2( 360, 80 )
nodes/output/position = Vector2( 660, 80 )
node_connections = [ "output", 0, "bed_start_m_speed", "bed_start_m_speed", 0, "Animation" ]
[sub_resource type="AnimationNodeAnimation" id=130]
animation = "bed_torture_forcing_b"
[sub_resource type="AnimationNodeTimeScale" id=131]
[sub_resource type="AnimationNodeBlendTree" id=132]
graph_offset = Vector2( 0, -55 )
nodes/forcing_animation/node = SubResource( 130 )
nodes/forcing_animation/position = Vector2( 159, 121 )
nodes/forcing_speed/node = SubResource( 131 )
nodes/forcing_speed/position = Vector2( 460, 100 )
nodes/output/position = Vector2( 740, 100 )
node_connections = [ "output", 0, "forcing_speed", "forcing_speed", 0, "forcing_animation" ]
[sub_resource type="AnimationNodeAnimation" id=133]
animation = "bed_torture_forcing_a"
[sub_resource type="AnimationNodeTimeScale" id=134]
[sub_resource type="AnimationNodeBlendTree" id=135]
nodes/forcing_m_animation/node = SubResource( 133 )
nodes/forcing_m_animation/position = Vector2( 102, 110 )
nodes/forcing_m_speed/node = SubResource( 134 )
nodes/forcing_m_speed/position = Vector2( 442, 120 )
nodes/output/position = Vector2( 740, 120 )
node_connections = [ "output", 0, "forcing_m_speed", "forcing_m_speed", 0, "forcing_m_animation" ]
[sub_resource type="AnimationNodeAnimation" id=136]
animation = "bed_torture_forcing_s1_b-loop"
[sub_resource type="AnimationNodeTimeScale" id=137]
[sub_resource type="AnimationNodeBlendTree" id=138]
nodes/forcing_s1_animation/node = SubResource( 136 )
nodes/forcing_s1_animation/position = Vector2( 160, 140 )
nodes/forcing_s1_speed/node = SubResource( 137 )
nodes/forcing_s1_speed/position = Vector2( 640, 160 )
nodes/output/position = Vector2( 920, 160 )
node_connections = [ "output", 0, "forcing_s1_speed", "forcing_s1_speed", 0, "forcing_s1_animation" ]
[sub_resource type="AnimationNodeAnimation" id=139]
animation = "bed_torture_forcing_s1_a-loop"
[sub_resource type="AnimationNodeTimeScale" id=140]
[sub_resource type="AnimationNodeBlendTree" id=141]
nodes/forcing_s1_animation/node = SubResource( 139 )
nodes/forcing_s1_animation/position = Vector2( 300, 260 )
nodes/forcing_s1_speed/node = SubResource( 140 )
nodes/forcing_s1_speed/position = Vector2( 680, 260 )
nodes/output/position = Vector2( 980, 280 )
node_connections = [ "output", 0, "forcing_s1_speed", "forcing_s1_speed", 0, "forcing_s1_animation" ]
[sub_resource type="AnimationNodeStateMachineTransition" id=142]
[sub_resource type="AnimationNodeStateMachineTransition" id=143]
[sub_resource type="AnimationNodeStateMachineTransition" id=144]
[sub_resource type="AnimationNodeStateMachineTransition" id=145]
[sub_resource type="AnimationNodeStateMachineTransition" id=146]
[sub_resource type="AnimationNodeStateMachineTransition" id=147]
[sub_resource type="AnimationNodeStateMachineTransition" id=148]
[sub_resource type="AnimationNodeStateMachineTransition" id=149]
[sub_resource type="AnimationNodeStateMachine" id=150]
states/beating/node = SubResource( 117 )
states/beating/position = Vector2( 421, 244 )
states/beating_m/node = SubResource( 120 )
states/beating_m/position = Vector2( 225, 283 )
states/bed_facing_up/node = SubResource( 123 )
states/bed_facing_up/position = Vector2( 189, 53 )
states/bed_start/node = SubResource( 126 )
states/bed_start/position = Vector2( 299, 138 )
states/bed_start_m/node = SubResource( 129 )
states/bed_start_m/position = Vector2( 201, 203 )
states/forcing/node = SubResource( 132 )
states/forcing/position = Vector2( 429, 330 )
states/forcing_m/node = SubResource( 135 )
states/forcing_m/position = Vector2( 247, 390 )
states/forcing_s1/node = SubResource( 138 )
states/forcing_s1/position = Vector2( 533, 428 )
states/forcing_s1_m/node = SubResource( 141 )
states/forcing_s1_m/position = Vector2( 247, 544 )
transitions = [ "bed_facing_up", "bed_start", SubResource( 142 ), "bed_facing_up", "bed_start_m", SubResource( 143 ), "bed_start_m", "beating_m", SubResource( 144 ), "bed_start", "beating", SubResource( 145 ), "beating_m", "forcing_m", SubResource( 146 ), "beating", "forcing", SubResource( 147 ), "forcing_m", "forcing_s1_m", SubResource( 148 ), "forcing", "forcing_s1", SubResource( 149 ) ]
start_node = "bed_facing_up"
[sub_resource type="AnimationNodeStateMachine" id=151]
states/bed/node = SubResource( 150 )
states/bed/position = Vector2( 251, 82 )
start_node = "bed"
[sub_resource type="AnimationNodeStateMachineTransition" id=152]
[sub_resource type="AnimationNodeStateMachineTransition" id=153]
[sub_resource type="AnimationNodeStateMachine" id=154]
states/Motion/node = SubResource( 37 )
states/Motion/position = Vector2( 188, 65 )
states/SmartObject/node = SubResource( 151 )
states/SmartObject/position = Vector2( 250, 140 )
transitions = [ "Motion", "SmartObject", SubResource( 152 ), "SmartObject", "Motion", SubResource( 153 ) ]
start_node = "Motion"
[sub_resource type="AnimationNodeOneShot" id=155]
[sub_resource type="AnimationNodeAnimation" id=156]
animation = "throw"
[sub_resource type="AnimationNodeTimeScale" id=157]
[sub_resource type="AnimationNodeOneShot" id=158]
[sub_resource type="AnimationNodeAnimation" id=159]
animation = "small_turn_left"
[sub_resource type="AnimationNodeTimeScale" id=160]
[sub_resource type="AnimationNodeOneShot" id=161]
[sub_resource type="AnimationNodeAnimation" id=162]
animation = "small_turn_right"
[sub_resource type="AnimationNodeTimeScale" id=163]
[sub_resource type="AnimationNodeOneShot" id=164]
[sub_resource type="AnimationNodeAnimation" id=165]
animation = "unstuck1"
[sub_resource type="AnimationNodeTimeScale" id=166]
[sub_resource type="AnimationNodeOneShot" id=167]
[sub_resource type="AnimationNodeAnimation" id=168]
animation = "unstuck2"
[sub_resource type="AnimationNodeTimeScale" id=169]
[resource]
graph_offset = Vector2( -227.051, -544.846 )
nodes/Animation/node = SubResource( 98 )
nodes/Animation/position = Vector2( 120, -200 )
nodes/climb_low_obstacle/node = SubResource( 99 )
nodes/climb_low_obstacle/position = Vector2( 2340, -380 )
nodes/climb_low_obstacle_animation/node = SubResource( 100 )
nodes/climb_low_obstacle_animation/position = Vector2( 1800, 20 )
nodes/climb_low_obstacle_speed/node = SubResource( 101 )
nodes/climb_low_obstacle_speed/position = Vector2( 2120, -160 )
nodes/free_grabbed/node = SubResource( 102 )
nodes/free_grabbed/position = Vector2( 3500, -260 )
nodes/grab/node = SubResource( 103 )
nodes/grab/position = Vector2( 2640, -380 )
nodes/grab_attack/node = SubResource( 104 )
nodes/grab_attack/position = Vector2( 600, -420 )
nodes/grab_attack_animation/node = SubResource( 105 )
nodes/grab_attack_animation/position = Vector2( 400, -40 )
nodes/grab_attack_speed/node = SubResource( 106 )
nodes/grab_attack_speed/position = Vector2( 680, -40 )
nodes/grab_scale/node = SubResource( 107 )
nodes/grab_scale/position = Vector2( 600, -200 )
nodes/grab_seek/node = SubResource( 108 )
nodes/grab_seek/position = Vector2( 400, -200 )
nodes/grabbed_animation/node = SubResource( 109 )
nodes/grabbed_animation/position = Vector2( 2260, 160 )
nodes/grabbed_attack_animation/node = SubResource( 110 )
nodes/grabbed_attack_animation/position = Vector2( 2340, 340 )
nodes/grabbed_attack_speed/node = SubResource( 111 )
nodes/grabbed_attack_speed/position = Vector2( 2680, 340 )
nodes/grabbed_attacked/node = SubResource( 112 )
nodes/grabbed_attacked/position = Vector2( 3080, 0 )
nodes/grabbed_scale/node = SubResource( 113 )
nodes/grabbed_scale/position = Vector2( 2800, 40 )
nodes/grabbed_seek/node = SubResource( 114 )
nodes/grabbed_seek/position = Vector2( 2540, 40 )
nodes/main/node = SubResource( 154 )
nodes/main/position = Vector2( 280, -360 )
nodes/output/position = Vector2( 3740, -260 )
nodes/throw/node = SubResource( 155 )
nodes/throw/position = Vector2( 3000, -280 )
nodes/throw_animation/node = SubResource( 156 )
nodes/throw_animation/position = Vector2( 2560, -160 )
nodes/throw_speed/node = SubResource( 157 )
nodes/throw_speed/position = Vector2( 2800, -160 )
nodes/turn_left/node = SubResource( 158 )
nodes/turn_left/position = Vector2( 1200, -400 )
nodes/turn_left_animation/node = SubResource( 159 )
nodes/turn_left_animation/position = Vector2( 440, 100 )
nodes/turn_left_speed/node = SubResource( 160 )
nodes/turn_left_speed/position = Vector2( 680, 100 )
nodes/turn_right/node = SubResource( 161 )
nodes/turn_right/position = Vector2( 900, -400 )
nodes/turn_right_animation/node = SubResource( 162 )
nodes/turn_right_animation/position = Vector2( 440, 220 )
nodes/turn_right_speed/node = SubResource( 163 )
nodes/turn_right_speed/position = Vector2( 680, 220 )
nodes/unstuck1/node = SubResource( 164 )
nodes/unstuck1/position = Vector2( 1520, -380 )
nodes/unstuck1_animation/node = SubResource( 165 )
nodes/unstuck1_animation/position = Vector2( 1180, 0 )
nodes/unstuck1_speed/node = SubResource( 166 )
nodes/unstuck1_speed/position = Vector2( 1380, -160 )
nodes/unstuck2/node = SubResource( 167 )
nodes/unstuck2/position = Vector2( 1920, -380 )
nodes/unstuck2_animation/node = SubResource( 168 )
nodes/unstuck2_animation/position = Vector2( 1460, -20 )
nodes/unstuck2_speed/node = SubResource( 169 )
nodes/unstuck2_speed/position = Vector2( 1700, -160 )
node_connections = [ "output", 0, "free_grabbed", "grab_seek", 0, "Animation", "climb_low_obstacle", 0, "unstuck2", "climb_low_obstacle", 1, "climb_low_obstacle_speed", "grab_scale", 0, "grab_seek", "grabbed_seek", 0, "grabbed_animation", "unstuck1", 0, "turn_left", "unstuck1", 1, "unstuck1_speed", "turn_left_speed", 0, "turn_left_animation", "throw_speed", 0, "throw_animation", "unstuck1_speed", 0, "unstuck1_animation", "grab_attack_speed", 0, "grab_attack_animation", "unstuck2", 0, "unstuck1", "unstuck2", 1, "unstuck2_speed", "turn_right", 0, "grab_attack", "turn_right", 1, "turn_right_speed", "grab", 0, "climb_low_obstacle", "grab", 1, "grab_scale", "grabbed_scale", 0, "grabbed_seek", "turn_left", 0, "turn_right", "turn_left", 1, "turn_left_speed", "grabbed_attack_speed", 0, "grabbed_attack_animation", "climb_low_obstacle_speed", 0, "climb_low_obstacle_animation", "free_grabbed", 0, "throw", "free_grabbed", 1, "grabbed_attacked", "grabbed_attacked", 0, "grabbed_scale", "grabbed_attacked", 1, "grabbed_attack_speed", "unstuck2_speed", 0, "unstuck2_animation", "throw", 0, "grab", "throw", 1, "throw_speed", "turn_right_speed", 0, "turn_right_animation", "grab_attack", 0, "main", "grab_attack", 1, "grab_attack_speed" ]

Binary file not shown.

After

Width:  |  Height:  |  Size: 596 KiB

View File

@@ -0,0 +1,36 @@
[remap]
importer="texture"
type="StreamTexture"
path.s3tc="res://.import/brown_eye.png-60d098a1f88d54238400fc846fa1ccdd.s3tc.stex"
path.etc2="res://.import/brown_eye.png-60d098a1f88d54238400fc846fa1ccdd.etc2.stex"
metadata={
"imported_formats": [ "s3tc", "etc2" ],
"vram_texture": true
}
[deps]
source_file="res://scenes/characters/brown_eye.png"
dest_files=[ "res://.import/brown_eye.png-60d098a1f88d54238400fc846fa1ccdd.s3tc.stex", "res://.import/brown_eye.png-60d098a1f88d54238400fc846fa1ccdd.etc2.stex" ]
[params]
compress/mode=2
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=true
flags/filter=true
flags/mipmaps=true
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

@@ -0,0 +1,20 @@
extends Spatial
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
# Called when the node enters the scene tree for the first time.
func _ready():
$male2.add_collision_exception_with($male)
$male2.set_meta("smart_object", true)
# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta):
# pass
func _physics_process(delta):
$male2.global_transform = $male.global_transform

View File

@@ -0,0 +1,26 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://scenes/characters/male.tscn" type="PackedScene" id=1]
[ext_resource path="res://scenes/characters/dual_test.gd" type="Script" id=2]
[sub_resource type="BoxShape" id=1]
extents = Vector3( 100, 0.5, 100 )
[node name="dual_test" type="Spatial"]
script = ExtResource( 2 )
[node name="male" parent="." instance=ExtResource( 1 )]
[node name="male2" parent="." instance=ExtResource( 1 )]
[node name="StaticBody" type="StaticBody" parent="."]
[node name="CollisionShape" type="CollisionShape" parent="StaticBody"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.25, 0 )
shape = SubResource( 1 )
[node name="DirectionalLight" type="DirectionalLight" parent="."]
transform = Transform( 1, 0, 0, 0, 0.608332, 0.793683, 0, -0.793683, 0.608332, 0, 3.00065, 0 )
[node name="Camera" type="Camera" parent="."]
transform = Transform( 0.707107, 0, -0.707107, 0, 1, 0, 0.707107, 0, 0.707107, -1, 0.6, 1 )

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

View File

@@ -0,0 +1,36 @@
[remap]
importer="texture"
type="StreamTexture"
path.s3tc="res://.import/eyelashes04.png-d20f38ad08e742a4c5e005cc75324a62.s3tc.stex"
path.etc2="res://.import/eyelashes04.png-d20f38ad08e742a4c5e005cc75324a62.etc2.stex"
metadata={
"imported_formats": [ "s3tc", "etc2" ],
"vram_texture": true
}
[deps]
source_file="res://scenes/characters/eyelashes04.png"
dest_files=[ "res://.import/eyelashes04.png-d20f38ad08e742a4c5e005cc75324a62.s3tc.stex", "res://.import/eyelashes04.png-d20f38ad08e742a4c5e005cc75324a62.etc2.stex" ]
[params]
compress/mode=2
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=true
flags/filter=true
flags/mipmaps=true
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

@@ -0,0 +1,198 @@
extends KinematicBody
const MOTION_INTERPOLATE_SPEED = 10
var orientation = Transform()
var fixup = Transform()
var root_motion = Transform()
var motion = Vector2()
var motion_target = Vector2()
var velocity = Vector3()
var disable_gravity = false
const p1 = "parameters/main/playback"
const p2 = "parameters/main/Motion/playback"
func _ready():
# var ap = $AnimationTree.get_node($AnimationTree.get_animation_player())
orientation = global_transform
orientation.origin = Vector3()
add_to_group("characters")
do_ungrab()
func _physics_process(delta):
# motion = motion.linear_interpolate(motion_target, MOTION_INTERPOLATE_SPEED * delta)
assert(has_meta("grabbed"))
var in_smart_obj = get_meta("smart_object")
if get_meta("grabbed"):
orientation.basis = get_parent().global_transform.basis
root_motion = $AnimationTree.get_root_motion_transform()
orientation *= root_motion
var h_velocity = orientation.origin / delta
velocity.x = h_velocity.x
velocity.z = h_velocity.z
velocity.y = h_velocity.y
if !get_meta("grabbed") && !in_smart_obj && !disable_gravity:
velocity.y += -9.8 * delta
velocity = move_and_slide(velocity,Vector3(0,1,0))
orientation.origin = Vector3()
fixup.origin = Vector3()
orientation *= Transform().interpolate_with(fixup, delta)
orientation = orientation.orthonormalized()
global_transform.basis = orientation.basis
if get_meta("grabbed"):
global_transform.origin = get_parent().global_transform.origin
# global_transform = get_parent().global_transform
if attacking >= 0.0:
attacking -= delta
rpg.update_stats(self)
rpg.update_needs(self)
var skel
func get_skeleton():
if skel:
return get_node(skel)
var queue = [self]
while queue.size() > 0:
var item = queue.pop_front()
if item is Skeleton:
skel = get_path_to(item)
return get_node(skel)
for k in item.get_children():
queue.push_back(k)
func get_anim_player():
return $female_2018/female_2018/AnimationPlayer
var attachment_start
var attachment_end
var mod_p = false
func get_front_neck_target():
if !mod_p:
$female_2018/female_2018/neck02BoneAttachment/front_neck_target.transform.basis = Basis()
mod_p = true
return $female_2018/female_2018/neck02BoneAttachment/front_neck_target
func add_attachment(bname, xform):
var ba: BoneAttachment = BoneAttachment.new()
ba.bone_name = bname
var sk = get_skeleton()
sk.add_child(ba)
var on1 = Spatial.new()
ba.add_child(on1)
var on2 = Spatial.new()
ba.add_child(on2)
on1.transform = Transform()
# on1.global_transform.basis = Basis()
on2.transform = xform
# on2.rotate_y(PI)
attachment_start = ba
attachment_end = on2
return on2
static func calc_offset(c2, bone2):
var skel2 = c2.get_skeleton()
var id2 = skel2.find_bone(bone2)
assert(skel2 != null)
assert(id2 >= 0)
var offt2 = skel2.get_bone_global_pose(id2).origin
var offset = Vector3(-offt2.x, -offt2.y, -offt2.z)
# print("offset: ", offset)
return offset
var act = {
"stop":[
["travel", p1, "Motion"],
["travel", p2, "stand"],
],
"walk":[
["travel", p1, "Motion"],
["travel", p2, "walk"],
],
"grabbed":[
["set", "parameters/free_grabbed/current", 1],
["set", "parameters/grabbed_seek/seek_position", 0.0]
],
"ungrabbed":[
["set", "parameters/free_grabbed/current", 0]
],
"grab":[
["set", "parameters/grab/blend_amount", 1.0],
["set", "parameters/grab_seek/seek_position", 0.0]
],
"grab_attack1_on":[
["set", "parameters/grab_attack/active", true],
],
"grabbed_attacked1_on":[
["set", "parameters/grabbed_attacked/active", true],
],
"ungrab":[
["set", "parameters/grab/blend_amount", 0.0]
],
"throw_projectile":[
["set", "parameters/throw/active", true]
]
}
#func skirt_simulation(enable):
# if enable:
# var skel: Skeleton = get_skeleton()
# for k in range(skel.get_bone_count()):
# var bone = skel.get_bone_name(k)
# if bone.begins_with("skirt"):
# var pb: = PhysicalBone.new()
# pb.bone_name = bone
# pb.joint_type = pb.JOINT_TYPE_HINGE
# pb.body_offset = skel.get_bone_global_pose(k)
# pb.joint_offset = skel.get_bone_global_pose(k)
# skel.add_child(pb)
# var cs = CollisionShape.new()
# var sshape: = BoxShape.new()
# sshape.extents = Vector3(0.05, 0.05, 0.05)
# cs.shape = sshape
# pb.add_child(cs)
# skel.physical_bones_add_collision_exception(self.get_rid())
# skel.physical_bones_start_simulation()
# else:
# var skel: Skeleton = get_skeleton()
# skel.physical_bones_stop_simulation()
# skel.physical_bones_remove_collision_exception(self.get_rid())
# for k in skel.get_children():
# if k is PhysicalBone:
# k.queue_free()
func smart_obj(sm):
for k in sm:
if k[0] == "travel":
$AnimationTree[k[1]].travel(k[2])
if k[0] == "set":
$AnimationTree[k[1]] = k[2]
func do_stop():
# if name != "player":
# print(name, " stop")
smart_obj(act.stop)
func do_walk():
# if name != "player":
# print(name, "walk")
smart_obj(act.walk)
func set_walk_speed(x):
var s = [["set", "parameters/main/Motion/walk/walk_speed/scale", x]]
smart_obj(s)
var grab_bone = "grabber_L"
func do_grab():
smart_obj(act.grab)
var attacking = 0.0
func do_attack():
if attacking > 0.0:
return
if get_meta("grabbing"):
smart_obj(act.grab_attack1_on)
var s = grabbing.get_grabbed(self)
s.do_attacked()
rpg.melee_attack(self, s)
attacking += 1.0
else:
smart_obj(act.throw_projectile)
func do_attacked():
if get_meta("grabbed"):
smart_obj(act.grabbed_attacked1_on)
func do_ungrab():
smart_obj(act.ungrab)
func do_grabbed():
smart_obj(act.grabbed)
func do_ungrabbed():
smart_obj(act.ungrabbed)

View File

@@ -0,0 +1,70 @@
[gd_scene load_steps=9 format=2]
[ext_resource path="res://scenes/characters/female_2018.escn" type="PackedScene" id=1]
[ext_resource path="res://scenes/characters/female.gd" type="Script" id=2]
[ext_resource path="res://scenes/characters/animation_tree_root.tres" type="AnimationNodeBlendTree" id=3]
[sub_resource type="CapsuleShape" id=1]
radius = 0.234161
height = 1.26341
[sub_resource type="AnimationNodeStateMachinePlayback" id=2]
[sub_resource type="AnimationNodeStateMachinePlayback" id=3]
[sub_resource type="AnimationNodeStateMachinePlayback" id=4]
[sub_resource type="AnimationNodeStateMachinePlayback" id=5]
[node name="female" type="KinematicBody"]
collision_layer = 4
collision_mask = 31
script = ExtResource( 2 )
[node name="CollisionShape" type="CollisionShape" parent="."]
transform = Transform( 1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 0, 0.869824, 0 )
shape = SubResource( 1 )
[node name="col-lying" type="CollisionShape" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.25, 0.8 )
shape = SubResource( 1 )
disabled = true
[node name="col-lying2" type="CollisionShape" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.25, -0.8 )
shape = SubResource( 1 )
disabled = true
[node name="AnimationTree" type="AnimationTree" parent="."]
tree_root = ExtResource( 3 )
anim_player = NodePath("../female_2018/female_2018/AnimationPlayer")
active = true
process_mode = 0
root_motion_track = NodePath(".:root")
parameters/free_grabbed/current = 0
parameters/grab/blend_amount = 0.0
parameters/grab_attack/active = false
parameters/grab_attack_speed/scale = 1.0
parameters/grab_scale/scale = 0.5
parameters/grab_seek/seek_position = -1.0
parameters/grabbed_attack_speed/scale = 1.0
parameters/grabbed_attacked/active = false
parameters/grabbed_scale/scale = 0.5
parameters/grabbed_seek/seek_position = -1.0
parameters/main/playback = SubResource( 2 )
parameters/main/Motion/playback = SubResource( 3 )
parameters/main/Motion/stand/speed/scale = 1.0
parameters/main/Motion/stand/stand_speed/scale = 1.0
parameters/main/Motion/walk/speed/scale = 1.0
parameters/main/Motion/walk/walk_speed/scale = 1.0
parameters/main/SmartObject/playback = SubResource( 4 )
parameters/main/SmartObject/bed/playback = SubResource( 5 )
parameters/main/SmartObject/bed/beating/beating_speed/scale = 1.0
parameters/main/SmartObject/bed/beating_m/beating_m_speed/scale = 1.0
parameters/main/SmartObject/bed/bed_facing_up/TimeScale/scale = 1.0
parameters/main/SmartObject/bed/bed_start/bed_start_speed/scale = 1.0
parameters/main/SmartObject/bed/bed_start_m/bed_start_m_speed/scale = 1.0
parameters/throw/active = false
parameters/throw_speed/scale = 1.0
[node name="female_2018" parent="." instance=ExtResource( 1 )]

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,171 @@
extends KinematicBody
const MOTION_INTERPOLATE_SPEED = 10
var orientation = Transform()
var root_motion = Transform()
var fixup = Transform()
var motion = Vector2()
var motion_target = Vector2()
var velocity = Vector3()
var disable_gravity = false
const p1 = "parameters/main/playback"
const p2 = "parameters/main/Motion/playback"
func _ready():
# var _ap = $AnimationTree.get_node($AnimationTree.get_animation_player())
orientation = global_transform
orientation.origin = Vector3()
add_to_group("characters")
do_ungrab()
func _physics_process(delta):
# motion = motion.linear_interpolate(motion_target, MOTION_INTERPOLATE_SPEED * delta)
assert(has_meta("grabbed"))
var in_smart_obj = get_meta("smart_object")
if get_meta("grabbed"):
orientation.basis = get_parent().global_transform.basis
root_motion = $AnimationTree.get_root_motion_transform()
orientation *= root_motion
var h_velocity = orientation.origin / delta
velocity.x = h_velocity.x
velocity.z = h_velocity.z
velocity.y = h_velocity.y
if !get_meta("grabbed") && !in_smart_obj && !disable_gravity:
velocity.y += -9.8 * delta
velocity = move_and_slide(velocity,Vector3(0,1,0))
orientation.origin = Vector3()
fixup.origin = Vector3()
orientation *= Transform().interpolate_with(fixup, delta)
orientation = orientation.orthonormalized()
global_transform.basis = orientation.basis
if get_meta("grabbed"):
global_transform.origin = get_parent().global_transform.origin
# global_transform = get_parent().global_transform
if attacking >= 0.0:
attacking -= delta
rpg.update_stats(self)
var skel
func get_skeleton():
if skel:
return get_node(skel)
var queue = [self]
while queue.size() > 0:
var item = queue.pop_front()
if item is Skeleton:
skel = get_path_to(item)
return get_node(skel)
for k in item.get_children():
queue.push_back(k)
func get_anim_player():
return $male_2018/male_g_2018/AnimationPlayer
var attachment_start
var attachment_end
var mod_p = false
func get_front_neck_target():
if !mod_p:
$male_2018/male_g_2018/neck02BoneAttachment/grab_neck_front.transform.basis = Basis()
mod_p = true
return $male_2018/male_g_2018/neck02BoneAttachment/grab_neck_front
func add_attachment(bname, xform):
var ba: BoneAttachment = BoneAttachment.new()
ba.bone_name = bname
var sk = get_skeleton()
sk.add_child(ba)
var on1 = Spatial.new()
ba.add_child(on1)
var on2 = Spatial.new()
ba.add_child(on2)
on1.transform = Transform()
# on1.global_transform.basis = Basis()
on2.transform = xform
# on2.rotate_y(PI)
attachment_start = ba
attachment_end = on2
return on2
static func calc_offset(c2, bone2):
var skel2 = c2.get_skeleton()
var id2 = skel2.find_bone(bone2)
assert(skel2 != null)
assert(id2 >= 0)
var offt2 = skel2.get_bone_global_pose(id2).origin
var offset = Vector3(-offt2.x, -offt2.y, -offt2.z)
# print("offset: ", offset)
return offset
var act = {
"stop":[
["travel", p1, "Motion"],
["travel", p2, "stand"],
],
"walk":[
["travel", p1, "Motion"],
["travel", p2, "walk"],
],
"grabbed":[
["set", "parameters/free_grabbed/current", 1],
["set", "parameters/grabbed_seek/seek_position", 0.0]
],
"ungrabbed":[
["set", "parameters/free_grabbed/current", 0]
],
"grab":[
["set", "parameters/grab/blend_amount", 1.0],
["set", "parameters/grab_seek/seek_position", 0.0]
],
"grab_attack1_on":[
["set", "parameters/grab_attack/active", true],
],
"grabbed_attacked1_on":[
["set", "parameters/grabbed_attacked/active", true],
],
"ungrab":[
["set", "parameters/grab/blend_amount", 0.0]
],
"throw_projectile":[
["set", "parameters/throw/active", true]
]
}
func smart_obj(sm):
for k in sm:
if k[0] == "travel":
$AnimationTree[k[1]].travel(k[2])
if k[0] == "set":
$AnimationTree[k[1]] = k[2]
func do_stop():
# if name != "player":
# print(name, " stop")
smart_obj(act.stop)
func do_walk():
# if name != "player":
# print(name, "walk")
smart_obj(act.walk)
func set_walk_speed(x):
var s = [["set", "parameters/main/Motion/walk/walk_speed/scale", x]]
smart_obj(s)
var grab_bone = "grabber_L"
func do_grab():
smart_obj(act.grab)
var attacking = 0.0
func do_attack():
if attacking > 0.0:
return
if get_meta("grabbing"):
smart_obj(act.grab_attack1_on)
var s = grabbing.get_grabbed(self)
s.do_attacked()
rpg.melee_attack(self, s)
attacking += 1.0
else:
smart_obj(act.throw_projectile)
func do_attacked():
if get_meta("grabbed"):
smart_obj(act.grabbed_attacked1_on)
func do_ungrab():
smart_obj(act.ungrab)
func do_grabbed():
smart_obj(act.grabbed)
func do_ungrabbed():
smart_obj(act.ungrabbed)

View File

@@ -0,0 +1,87 @@
[gd_scene load_steps=9 format=2]
[ext_resource path="res://scenes/characters/male_2018.escn" type="PackedScene" id=1]
[ext_resource path="res://scenes/characters/male.gd" type="Script" id=2]
[ext_resource path="res://scenes/characters/animation_tree_root.tres" type="AnimationNodeBlendTree" id=3]
[sub_resource type="CapsuleShape" id=1]
radius = 0.234161
height = 1.26341
[sub_resource type="AnimationNodeStateMachinePlayback" id=2]
[sub_resource type="AnimationNodeStateMachinePlayback" id=3]
[sub_resource type="AnimationNodeStateMachinePlayback" id=4]
[sub_resource type="AnimationNodeStateMachinePlayback" id=5]
[node name="male" type="KinematicBody"]
collision_layer = 4
collision_mask = 31
script = ExtResource( 2 )
[node name="CollisionShape" type="CollisionShape" parent="."]
transform = Transform( 1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 0, 0.869824, 0 )
shape = SubResource( 1 )
[node name="col-lying" type="CollisionShape" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.25, 0.8 )
shape = SubResource( 1 )
disabled = true
[node name="col-lying2" type="CollisionShape" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.25, -0.8 )
shape = SubResource( 1 )
disabled = true
[node name="AnimationTree" type="AnimationTree" parent="."]
tree_root = ExtResource( 3 )
anim_player = NodePath("../male_2018/male_g_2018/AnimationPlayer")
active = true
process_mode = 0
root_motion_track = NodePath(".:root")
parameters/climb_low_obstacle/active = false
parameters/climb_low_obstacle_speed/scale = 1.0
parameters/free_grabbed/current = 0
parameters/grab/blend_amount = 0.0
parameters/grab_attack/active = false
parameters/grab_attack_speed/scale = 1.0
parameters/grab_scale/scale = 0.5
parameters/grab_seek/seek_position = -1.0
parameters/grabbed_attack_speed/scale = 1.0
parameters/grabbed_attacked/active = false
parameters/grabbed_scale/scale = 0.5
parameters/grabbed_seek/seek_position = -1.0
parameters/main/playback = SubResource( 2 )
parameters/main/Motion/playback = SubResource( 3 )
parameters/main/Motion/kneel/kneel_speed/scale = 1.0
parameters/main/Motion/stand/speed/scale = 1.0
parameters/main/Motion/stand/stand_speed/scale = 1.0
parameters/main/Motion/walk/speed/scale = 1.0
parameters/main/Motion/walk/walk_speed/scale = 1.0
parameters/main/Motion/walk/walking/blend_position = 0.0
parameters/main/Motion/wash_floor/TimeScale/scale = 1.0
parameters/main/SmartObject/playback = SubResource( 4 )
parameters/main/SmartObject/bed/playback = SubResource( 5 )
parameters/main/SmartObject/bed/beating/beating_speed/scale = 1.0
parameters/main/SmartObject/bed/beating_m/beating_m_speed/scale = 1.0
parameters/main/SmartObject/bed/bed_facing_up/TimeScale/scale = 1.0
parameters/main/SmartObject/bed/bed_start/bed_start_speed/scale = 1.0
parameters/main/SmartObject/bed/bed_start_m/bed_start_m_speed/scale = 1.0
parameters/main/SmartObject/bed/forcing/forcing_speed/scale = 1.0
parameters/main/SmartObject/bed/forcing_m/forcing_m_speed/scale = 1.0
parameters/main/SmartObject/bed/forcing_s1/forcing_s1_speed/scale = 1.0
parameters/main/SmartObject/bed/forcing_s1_m/forcing_s1_speed/scale = 1.0
parameters/throw/active = false
parameters/throw_speed/scale = 1.0
parameters/turn_left/active = false
parameters/turn_left_speed/scale = 1.0
parameters/turn_right/active = false
parameters/turn_right_speed/scale = 1.0
parameters/unstuck1/active = false
parameters/unstuck1_speed/scale = 1.0
parameters/unstuck2/active = false
parameters/unstuck2_speed/scale = 1.0
[node name="male_2018" parent="." instance=ExtResource( 1 )]

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,199 @@
extends Spatial
class_name SmartObject
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
# Called when the node enters the scene tree for the first time.
# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta):
# pass
var first
var second
var script1
var script2
var state = -1
var _state
class SmartObjectState:
var first
var second
var script1
var script2
var active = false
var next_cond
var exit_cond
var stage_name
func init(n, p1, s1, p2, s2):
stage_name = n
first = p1
second = p2
script1 = s1
script2 = s2
first.set_meta("smart_object", true)
second.set_meta("smart_object", true)
func activate():
second.add_collision_exception_with(first)
second.global_transform = first.global_transform
first.smart_obj(script1)
second.smart_obj(script2)
active = true
func leave():
active = false
func process():
if active:
second.global_transform = first.global_transform
func finalize():
second.remove_collision_exception_with(first)
first.do_stop()
second.do_stop()
first.set_meta("smart_object", false)
second.set_meta("smart_object", false)
func parse(sc: String):
var stages = {}
var init_stage
var cur_stage
var cur_character
for k in sc.split("\n"):
var sc_line: String = k
sc_line = sc_line.strip_edges()
if sc_line.substr(0, 1) == "#":
continue
var words: = Array(sc_line.split(" "))
if words[0] == "stage":
cur_stage = words[1]
if !init_stage:
init_stage = cur_stage
elif words[0] == "init:":
init_stage = cur_stage
elif words[0] == "first:":
cur_character = "first"
elif words[0] == "second:":
cur_character = "second"
elif words[0] == "next_cond":
assert(cur_stage)
if !stages.has(cur_stage):
stages[cur_stage] = {}
stages[cur_stage].next_cond = words.slice(1, words.size() - 1)
elif words[0] == "exit_cond":
assert(cur_stage)
if !stages.has(cur_stage):
stages[cur_stage] = {}
stages[cur_stage].exit_cond = words.slice(1, words.size() - 1)
elif words[0] == "next_stage":
assert(cur_stage)
if !stages.has(cur_stage):
stages[cur_stage] = {}
stages[cur_stage].next_stage = words[1]
elif words[0] == "mod_stat":
assert(cur_stage)
assert(cur_character)
if !stages.has(cur_stage):
stages[cur_stage] = {}
if !stages[cur_stage].has(cur_character):
stages[cur_stage][cur_character] = []
if !stages[cur_stage].has("mod_stats"):
stages[cur_stage].mod_stats = {}
if !stages[cur_stage].mod_stats.has(cur_character):
stages[cur_stage].mod_stats[cur_character] = {}
stages[cur_stage].mod_stats[cur_character][words[1]] = float(words[2])
else:
assert(cur_stage)
assert(cur_character)
if !stages.has(cur_stage):
stages[cur_stage] = {}
if !stages[cur_stage].has(cur_character):
stages[cur_stage][cur_character] = []
stages[cur_stage][cur_character].push_back(words)
for k in stages:
for e in stages[k]:
if e == "mod_stats":
continue
if !stages[k].has("mod_stats"):
stages[k].mod_stats = {}
if !stages[k].mod_stats.has(e):
stages[k].mod_stats[e] = {}
stages.init_stage = init_stage
print(stages)
return stages
func activate(npc, m_script, s, s_script):
main.init(npc, m_script, s, s_script)
_state = main
main.activate()
var _stages
var _exit_cond
var npcs = {}
func activate2(npc, s, script):
npcs.first = npc
npcs.second = s
_stages = parse(script)
for k in _stages.keys():
if k == "init_stage":
continue
var st = SmartObjectState.new()
_stages[k].obj = st
_stages[k].obj.init(k, npc, _stages[k].first, s, _stages[k].second)
if _stages[k].has("next_cond"):
_stages[k].obj.next_cond = _stages[k].next_cond
if _stages[k].has("exit_cond"):
_stages[k].obj.exit_cond = _stages[k].exit_cond
if k == _stages.init_stage:
_state = st
_state.activate()
func cond_stat_morethan(which, stat, val):
if npcs[which].get_meta(stat) > float(val):
return true
return false
func cond_stat_lessthan(which, stat, val):
if npcs[which].get_meta(stat) < float(val):
return true
return false
func _physics_process(delta):
if _state:
_state.process()
var nextc = false
var leave = false
for k in _stages[_state.stage_name]:
if k in ["mod_stats", "next_stage", "next_cond", "obj"]:
continue
var mod_stats = _stages[_state.stage_name].mod_stats[k]
for l in mod_stats.keys():
if npcs.has(k):
var sval = npcs[k].get_meta(l)
sval += mod_stats[l] * delta
npcs[k].set_meta(l, sval)
if _state.next_cond:
var c = _state.next_cond
if c.size() > 1:
nextc = callv(c[0], c.slice(1, c.size() - 1))
else:
nextc = callv(c[0], [])
if _state.exit_cond:
var c = _state.exit_cond
if c.size() > 1:
leave = callv(c[0], c.slice(1, c.size() - 1))
else:
leave = callv(c[0], [])
if nextc:
_state.leave()
if _stages[_state.stage_name].has("next_stage"):
var next = _stages[_state.stage_name].next_stage
_state = _stages[next].obj
_state.activate()
else:
_state.finalize()
_state = null
queue_free()
if leave:
_state.finalize()
_state = null
queue_free()
var main
func _ready():
main = SmartObjectState.new()

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

View File

@@ -0,0 +1,36 @@
[remap]
importer="texture"
type="StreamTexture"
path.s3tc="res://.import/teeth.png-d6f1c3b87461533d507186ee347e1628.s3tc.stex"
path.etc2="res://.import/teeth.png-d6f1c3b87461533d507186ee347e1628.etc2.stex"
metadata={
"imported_formats": [ "s3tc", "etc2" ],
"vram_texture": true
}
[deps]
source_file="res://scenes/characters/teeth.png"
dest_files=[ "res://.import/teeth.png-d6f1c3b87461533d507186ee347e1628.s3tc.stex", "res://.import/teeth.png-d6f1c3b87461533d507186ee347e1628.etc2.stex" ]
[params]
compress/mode=2
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=true
flags/filter=true
flags/mipmaps=true
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 611 KiB

View File

@@ -0,0 +1,36 @@
[remap]
importer="texture"
type="StreamTexture"
path.s3tc="res://.import/tongue01_diffuse.png-1e5b4e69a407696ad7e313af1e409e13.s3tc.stex"
path.etc2="res://.import/tongue01_diffuse.png-1e5b4e69a407696ad7e313af1e409e13.etc2.stex"
metadata={
"imported_formats": [ "s3tc", "etc2" ],
"vram_texture": true
}
[deps]
source_file="res://scenes/characters/tongue01_diffuse.png"
dest_files=[ "res://.import/tongue01_diffuse.png-1e5b4e69a407696ad7e313af1e409e13.s3tc.stex", "res://.import/tongue01_diffuse.png-1e5b4e69a407696ad7e313af1e409e13.etc2.stex" ]
[params]
compress/mode=2
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=true
flags/filter=true
flags/mipmaps=true
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0