Merge branch 'player-controls'

This commit is contained in:
Jens Pitkänen 2024-08-18 22:16:59 +03:00
commit e35b1215b8
11 changed files with 396 additions and 20 deletions

3
.gitignore vendored
View File

@ -7,3 +7,6 @@
# Project-specific ignores # Project-specific ignores
/builds /builds
# For blender
*.blend[0-9]

BIN
models/grappling_hook.blend Normal file

Binary file not shown.

View File

@ -0,0 +1,51 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://8nth3l65bb7r"
path="res://.godot/imported/grappling_hook.blend-2e604f48b288f3a507a2e743fac7348f.scn"
[deps]
source_file="res://models/grappling_hook.blend"
dest_files=["res://.godot/imported/grappling_hook.blend-2e604f48b288f3a507a2e743fac7348f.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
_subresources={}
blender/nodes/visible=0
blender/nodes/active_collection_only=false
blender/nodes/punctual_lights=true
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/colors=false
blender/meshes/uvs=true
blender/meshes/normals=true
blender/meshes/tangents=true
blender/meshes/skins=2
blender/meshes/export_bones_deforming_mesh_only=false
blender/materials/unpack_enabled=true
blender/materials/export_materials=1
blender/animation/limit_playback=true
blender/animation/always_sample=true
blender/animation/group_tracks=true

View File

@ -19,6 +19,8 @@ config/icon="res://misc/icon.svg"
window/size/viewport_width=1920 window/size/viewport_width=1920
window/size/viewport_height=1080 window/size/viewport_height=1080
window/stretch/mode="canvas_items"
window/stretch/scale=2.0
[dotnet] [dotnet]
@ -97,9 +99,8 @@ jump={
sprint={ sprint={
"deadzone": 0.5, "deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":1,"pressure":0.0,"pressed":true,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":2,"pressure":0.0,"pressed":true,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":9,"pressure":0.0,"pressed":true,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":9,"pressure":0.0,"pressed":true,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":3,"pressure":0.0,"pressed":true,"script":null)
] ]
} }

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,31 @@
[gd_scene load_steps=4 format=3 uid="uid://7povmsfyrjf4"]
[ext_resource type="PackedScene" uid="uid://8nth3l65bb7r" path="res://models/grappling_hook.blend" id="1_nljl0"]
[sub_resource type="CSharpScript" id="CSharpScript_4q8vt"]
script/source = "using Godot;
namespace Gmtk24 {
public partial class GrapplingHook : RigidBody3D {
public void OnCollisionEntered(Node node) {
Freeze = true;
}
}
}
"
[sub_resource type="BoxShape3D" id="BoxShape3D_rp2xw"]
size = Vector3(0.872498, 0.875122, 0.902222)
[node name="GrapplingHook" type="RigidBody3D"]
contact_monitor = true
max_contacts_reported = 1
script = SubResource("CSharpScript_4q8vt")
[node name="grappling_hook" parent="." instance=ExtResource("1_nljl0")]
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 0, 0, 1, 0.00187739, -0.0024816, -0.348884)
shape = SubResource("BoxShape3D_rp2xw")
[connection signal="body_entered" from="." to="." method="OnCollisionEntered"]

View File

@ -7,8 +7,9 @@ height = 1.9
radius = 0.3 radius = 0.3
[node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("Eye")] [node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("Eye")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.51124, 0)
script = ExtResource("1_aff2a") script = ExtResource("1_aff2a")
JumpVelocity = 15.0
Gravity = 25.0
Eye = NodePath("PlayerEyeCamera") Eye = NodePath("PlayerEyeCamera")
[node name="PlayerEyeCamera" type="Camera3D" parent="."] [node name="PlayerEyeCamera" type="Camera3D" parent="."]
@ -17,3 +18,20 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.7, 0)
[node name="CollisionShape3D" type="CollisionShape3D" parent="."] [node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.95, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.95, 0)
shape = SubResource("CylinderShape3D_rgktv") shape = SubResource("CylinderShape3D_rgktv")
[node name="CenterContainer" type="CenterContainer" parent="."]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="ColorRect" type="ColorRect" parent="CenterContainer"]
custom_minimum_size = Vector2(16, 2)
layout_mode = 2
mouse_filter = 1
[node name="ColorRect2" type="ColorRect" parent="CenterContainer"]
custom_minimum_size = Vector2(2, 16)
layout_mode = 2
mouse_filter = 1

View File

@ -2,7 +2,7 @@ using Godot;
namespace Gmtk24 { namespace Gmtk24 {
public partial class PauseMenu : Control { public partial class PauseMenu : Control {
private Vector2 SavedMousePosition = Vector2.Zero; private bool Opened = false;
public override void _Ready() { public override void _Ready() {
Close(); Close();
@ -10,21 +10,26 @@ namespace Gmtk24 {
public override void _Input(InputEvent @event) { public override void _Input(InputEvent @event) {
if (@event is InputEventKey keyEvent) { if (@event is InputEventKey keyEvent) {
if (keyEvent.Keycode == Key.Escape) { if (keyEvent.Pressed && keyEvent.Keycode == Key.Escape) {
if (Opened) {
Close();
} else {
Open(); Open();
} }
} }
} }
}
public void Open() { public void Open() {
Visible = true; Visible = true;
Input.MouseMode = Input.MouseModeEnum.Visible; Input.MouseMode = Input.MouseModeEnum.Visible;
SavedMousePosition = GetLocalMousePosition(); Opened = true;
} }
public void Close() { public void Close() {
Input.MouseMode = Input.MouseModeEnum.Captured; Input.MouseMode = Input.MouseModeEnum.Captured;
Visible = false; Visible = false;
Opened = false;
} }
} }
} }

View File

@ -11,25 +11,28 @@ namespace Gmtk24 {
[Export] [Export]
public float JumpBufferLengthSeconds = 0.2f; public float JumpBufferLengthSeconds = 0.2f;
[Export] [Export]
public float Gravity = 20;
[Export]
public Node3D Eye; public Node3D Eye;
private float CurrentYaw = 0; private float CurrentYaw = 0;
private float CurrentPitch = 0; private float CurrentPitch = 0;
private float JumpBufferTime = 0; private float JumpBufferTime = 0;
private RigidBody3D SentHook;
public override void _Ready() {
Input.MouseMode = Input.MouseModeEnum.Captured;
}
public override void _UnhandledInput(InputEvent @event) { public override void _UnhandledInput(InputEvent @event) {
if (@event is InputEventMouseMotion ev && Input.MouseMode == Input.MouseModeEnum.Captured) { if (@event is InputEventMouseMotion mouseMotion && Input.MouseMode == Input.MouseModeEnum.Captured) {
var cameraSensitivityX = 2f; // FIXME: use camera sensitivity and invert settings var cameraSensitivityX = 2f; // FIXME: use camera sensitivity and invert settings
var cameraSensitivityY = 2f; // FIXME: use camera sensitivity and invert settings var cameraSensitivityY = 2f; // FIXME: use camera sensitivity and invert settings
var mouseMultiplier = 0.0003f; var mouseMultiplier = 0.0003f;
CurrentYaw -= ev.Relative.X * mouseMultiplier * cameraSensitivityX; CurrentYaw -= mouseMotion.ScreenRelative.X * mouseMultiplier * cameraSensitivityX;
CurrentPitch -= ev.Relative.Y * mouseMultiplier * cameraSensitivityY; CurrentPitch -= mouseMotion.ScreenRelative.Y * mouseMultiplier * cameraSensitivityY;
GetViewport().SetInputAsHandled(); GetViewport().SetInputAsHandled();
} }
if (@event.IsActionPressed("jump")) {
JumpBufferTime = JumpBufferLengthSeconds;
}
} }
public override void _Process(double delta) { public override void _Process(double delta) {
@ -47,9 +50,6 @@ namespace Gmtk24 {
if (JumpBufferTime > 0) { if (JumpBufferTime > 0) {
JumpBufferTime -= (float)delta; JumpBufferTime -= (float)delta;
} }
if (Input.IsActionJustPressed("jump")) {
JumpBufferTime = JumpBufferLengthSeconds;
}
} }
public override void _PhysicsProcess(double delta) { public override void _PhysicsProcess(double delta) {
@ -58,7 +58,8 @@ namespace Gmtk24 {
Input.GetActionStrength("move_backward") - Input.GetActionStrength("move_forward") Input.GetActionStrength("move_backward") - Input.GetActionStrength("move_forward")
); );
Vector3 move = Eye.Basis * moveInput; Vector3 move = Eye.Basis * moveInput;
move = move.Normalized() * Mathf.Min(1, move.Length()) * MovementSpeed; move.Y = 0;
move = move.Normalized() * Mathf.Min(1, moveInput.Length()) * MovementSpeed;
if (Input.IsActionPressed("sprint")) { if (Input.IsActionPressed("sprint")) {
move *= SprintMultiplier; move *= SprintMultiplier;
} }
@ -66,11 +67,16 @@ namespace Gmtk24 {
Vector3 vel = Velocity; Vector3 vel = Velocity;
vel.X = move.X; vel.X = move.X;
vel.Z = move.Z; vel.Z = move.Z;
vel += GetGravity() * (float)delta; vel += Vector3.Down * Gravity * (float)delta;
if (IsOnFloor() && JumpBufferTime > 0) { bool tooLow = Position.Y < 0;
bool askedToJump = (IsOnFloor() || tooLow) && JumpBufferTime > 0;
if (askedToJump) {
JumpBufferTime = 0; JumpBufferTime = 0;
vel += Vector3.Up * JumpVelocity; vel += Vector3.Up * JumpVelocity;
} }
if (tooLow && vel.Y < 0) {
vel.Y = 0;
}
Velocity = vel; Velocity = vel;
MoveAndSlide(); MoveAndSlide();

View File

@ -15,6 +15,267 @@
( 64 2048 0 ) ( 65 2048 0 ) ( 64 2048 1 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 ( 64 2048 0 ) ( 65 2048 0 ) ( 64 2048 1 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 2048 64 0 ) ( 2048 64 1 ) ( 2048 65 0 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 ( 2048 64 0 ) ( 2048 64 1 ) ( 2048 65 0 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
} }
// brush 1
{
( -2048 1408 0 ) ( -2048 1409 0 ) ( -2048 1408 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -2048 1408 0 ) ( -2048 1408 1 ) ( -2047 1408 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -2048 1408 0 ) ( -2047 1408 0 ) ( -2048 1409 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -1536 1920 384 ) ( -1536 1921 384 ) ( -1535 1920 384 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -1536 1920 128 ) ( -1535 1920 128 ) ( -1536 1920 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1536 1920 128 ) ( -1536 1920 129 ) ( -1536 1921 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 2
{
( -1920 768 0 ) ( -1920 769 0 ) ( -1920 768 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1920 768 0 ) ( -1920 768 1 ) ( -1919 768 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1920 768 0 ) ( -1919 768 0 ) ( -1920 769 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -1408 1280 768 ) ( -1408 1281 768 ) ( -1407 1280 768 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -1408 1280 128 ) ( -1407 1280 128 ) ( -1408 1280 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1408 1280 128 ) ( -1408 1280 129 ) ( -1408 1281 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 3
{
( -2048 0 0 ) ( -2048 1 0 ) ( -2048 0 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -2048 0 0 ) ( -2048 0 1 ) ( -2047 0 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -2048 0 0 ) ( -2047 0 0 ) ( -2048 1 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -1536 512 1280 ) ( -1536 513 1280 ) ( -1535 512 1280 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -1536 512 128 ) ( -1535 512 128 ) ( -1536 512 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1536 512 128 ) ( -1536 512 129 ) ( -1536 513 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 4
{
( -2048 -640 0 ) ( -2048 -639 0 ) ( -2048 -640 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -2048 -640 0 ) ( -2048 -640 1 ) ( -2047 -640 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -2048 -640 0 ) ( -2047 -640 0 ) ( -2048 -639 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -1536 -128 512 ) ( -1536 -127 512 ) ( -1535 -128 512 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -1536 -128 128 ) ( -1535 -128 128 ) ( -1536 -128 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1536 -128 128 ) ( -1536 -128 129 ) ( -1536 -127 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 5
{
( -2048 -1408 0 ) ( -2048 -1407 0 ) ( -2048 -1408 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -2048 -1408 0 ) ( -2048 -1408 1 ) ( -2047 -1408 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -2048 -1408 0 ) ( -2047 -1408 0 ) ( -2048 -1407 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -1536 -896 768 ) ( -1536 -895 768 ) ( -1535 -896 768 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -1536 -896 128 ) ( -1535 -896 128 ) ( -1536 -896 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1536 -896 128 ) ( -1536 -896 129 ) ( -1536 -895 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 6
{
( -1920 -2048 0 ) ( -1920 -2047 0 ) ( -1920 -2048 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1920 -2048 0 ) ( -1920 -2048 1 ) ( -1919 -2048 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1920 -2048 0 ) ( -1919 -2048 0 ) ( -1920 -2047 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -1408 -1536 768 ) ( -1408 -1535 768 ) ( -1407 -1536 768 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -1408 -1536 128 ) ( -1407 -1536 128 ) ( -1408 -1536 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1408 -1536 128 ) ( -1408 -1536 129 ) ( -1408 -1535 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 7
{
( -1280 -2048 0 ) ( -1280 -2047 0 ) ( -1280 -2048 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1280 -2048 0 ) ( -1280 -2048 1 ) ( -1279 -2048 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1280 -2048 0 ) ( -1279 -2048 0 ) ( -1280 -2047 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -768 -1536 384 ) ( -768 -1535 384 ) ( -767 -1536 384 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -768 -1536 128 ) ( -767 -1536 128 ) ( -768 -1536 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -768 -1536 128 ) ( -768 -1536 129 ) ( -768 -1535 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 8
{
( -512 -1920 0 ) ( -512 -1919 0 ) ( -512 -1920 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -512 -1920 0 ) ( -512 -1920 1 ) ( -511 -1920 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -512 -1920 0 ) ( -511 -1920 0 ) ( -512 -1919 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 0 -1408 768 ) ( 0 -1407 768 ) ( 1 -1408 768 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 0 -1408 128 ) ( 1 -1408 128 ) ( 0 -1408 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 0 -1408 128 ) ( 0 -1408 129 ) ( 0 -1407 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 9
{
( 256 -2048 0 ) ( 256 -2047 0 ) ( 256 -2048 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 256 -2048 0 ) ( 256 -2048 1 ) ( 257 -2048 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 256 -2048 0 ) ( 257 -2048 0 ) ( 256 -2047 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 768 -1536 1280 ) ( 768 -1535 1280 ) ( 769 -1536 1280 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 768 -1536 128 ) ( 769 -1536 128 ) ( 768 -1536 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 768 -1536 128 ) ( 768 -1536 129 ) ( 768 -1535 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 10
{
( 1280 -1536 0 ) ( 1280 -1535 0 ) ( 1280 -1536 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1280 -1536 0 ) ( 1280 -1536 1 ) ( 1281 -1536 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1280 -1536 0 ) ( 1281 -1536 0 ) ( 1280 -1535 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 1792 -1024 512 ) ( 1792 -1023 512 ) ( 1793 -1024 512 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 1792 -1024 128 ) ( 1793 -1024 128 ) ( 1792 -1024 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1792 -1024 128 ) ( 1792 -1024 129 ) ( 1792 -1023 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 11
{
( 1280 -768 0 ) ( 1280 -767 0 ) ( 1280 -768 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1280 -768 0 ) ( 1280 -768 1 ) ( 1281 -768 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1280 -768 0 ) ( 1281 -768 0 ) ( 1280 -767 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 1792 -256 1280 ) ( 1792 -255 1280 ) ( 1793 -256 1280 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 1792 -256 128 ) ( 1793 -256 128 ) ( 1792 -256 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1792 -256 128 ) ( 1792 -256 129 ) ( 1792 -255 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 12
{
( 1152 128 0 ) ( 1152 129 0 ) ( 1152 128 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1152 128 0 ) ( 1152 128 1 ) ( 1153 128 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1152 128 0 ) ( 1153 128 0 ) ( 1152 129 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 1664 640 512 ) ( 1664 641 512 ) ( 1665 640 512 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 1664 640 128 ) ( 1665 640 128 ) ( 1664 640 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1664 640 128 ) ( 1664 640 129 ) ( 1664 641 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 13
{
( 1280 768 0 ) ( 1280 769 0 ) ( 1280 768 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1280 768 0 ) ( 1280 768 1 ) ( 1281 768 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1280 768 0 ) ( 1281 768 0 ) ( 1280 769 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 1792 1280 768 ) ( 1792 1281 768 ) ( 1793 1280 768 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 1792 1280 128 ) ( 1793 1280 128 ) ( 1792 1280 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1792 1280 128 ) ( 1792 1280 129 ) ( 1792 1281 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 14
{
( 1280 1408 0 ) ( 1280 1409 0 ) ( 1280 1408 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1280 1408 0 ) ( 1280 1408 1 ) ( 1281 1408 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1280 1408 0 ) ( 1281 1408 0 ) ( 1280 1409 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 1792 1920 384 ) ( 1792 1921 384 ) ( 1793 1920 384 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 1792 1920 128 ) ( 1793 1920 128 ) ( 1792 1920 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1792 1920 128 ) ( 1792 1920 129 ) ( 1792 1921 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 15
{
( 384 1408 0 ) ( 384 1409 0 ) ( 384 1408 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 384 1408 0 ) ( 384 1408 1 ) ( 385 1408 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 384 1408 0 ) ( 385 1408 0 ) ( 384 1409 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 896 1920 1280 ) ( 896 1921 1280 ) ( 897 1920 1280 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 896 1920 128 ) ( 897 1920 128 ) ( 896 1920 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 896 1920 128 ) ( 896 1920 129 ) ( 896 1921 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 16
{
( -384 1280 0 ) ( -384 1281 0 ) ( -384 1280 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -384 1280 0 ) ( -384 1280 1 ) ( -383 1280 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -384 1280 0 ) ( -383 1280 0 ) ( -384 1281 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 128 1792 384 ) ( 128 1793 384 ) ( 129 1792 384 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 128 1792 128 ) ( 129 1792 128 ) ( 128 1792 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 128 1792 128 ) ( 128 1792 129 ) ( 128 1793 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 17
{
( -1280 1408 0 ) ( -1280 1409 0 ) ( -1280 1408 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1280 1408 0 ) ( -1280 1408 1 ) ( -1279 1408 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1280 1408 0 ) ( -1279 1408 0 ) ( -1280 1409 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -768 1920 512 ) ( -768 1921 512 ) ( -767 1920 512 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -768 1920 128 ) ( -767 1920 128 ) ( -768 1920 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -768 1920 128 ) ( -768 1920 129 ) ( -768 1921 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 18
{
( -768 1152 0 ) ( -768 1153 0 ) ( -768 1152 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -896 1024 0 ) ( -896 1024 1 ) ( -895 1024 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -896 1152 0 ) ( -895 1152 0 ) ( -896 1153 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -512 1280 256 ) ( -512 1281 256 ) ( -511 1280 256 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -512 1280 128 ) ( -511 1280 128 ) ( -512 1280 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -512 1280 128 ) ( -512 1280 129 ) ( -512 1281 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 19
{
( -1536 512 0 ) ( -1536 513 0 ) ( -1536 512 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1664 384 0 ) ( -1664 384 1 ) ( -1663 384 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1664 512 0 ) ( -1663 512 0 ) ( -1664 513 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -1280 640 512 ) ( -1280 641 512 ) ( -1279 640 512 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -1280 640 128 ) ( -1279 640 128 ) ( -1280 640 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1280 640 128 ) ( -1280 640 129 ) ( -1280 641 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 20
{
( 768 768 0 ) ( 768 769 0 ) ( 768 768 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 640 640 0 ) ( 640 640 1 ) ( 641 640 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 640 768 0 ) ( 641 768 0 ) ( 640 769 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 1024 896 256 ) ( 1024 897 256 ) ( 1025 896 256 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 1024 896 128 ) ( 1025 896 128 ) ( 1024 896 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1024 896 128 ) ( 1024 896 129 ) ( 1024 897 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 21
{
( 128 1152 0 ) ( 128 1153 0 ) ( 128 1152 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 0 1024 0 ) ( 0 1024 1 ) ( 1 1024 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 0 1152 0 ) ( 1 1152 0 ) ( 0 1153 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 384 1280 512 ) ( 384 1281 512 ) ( 385 1280 512 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 384 1280 128 ) ( 385 1280 128 ) ( 384 1280 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 384 1280 128 ) ( 384 1280 129 ) ( 384 1281 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 22
{
( 896 -128 0 ) ( 896 -127 0 ) ( 896 -128 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 768 -256 0 ) ( 768 -256 1 ) ( 769 -256 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 768 -128 0 ) ( 769 -128 0 ) ( 768 -127 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 1152 0 512 ) ( 1152 1 512 ) ( 1153 0 512 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 1152 0 128 ) ( 1153 0 128 ) ( 1152 0 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1152 0 128 ) ( 1152 0 129 ) ( 1152 1 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 23
{
( -768 -1024 0 ) ( -768 -1023 0 ) ( -768 -1024 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -896 -1152 0 ) ( -896 -1152 1 ) ( -895 -1152 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -896 -1024 0 ) ( -895 -1024 0 ) ( -896 -1023 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -512 -896 512 ) ( -512 -895 512 ) ( -511 -896 512 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -512 -896 128 ) ( -511 -896 128 ) ( -512 -896 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -512 -896 128 ) ( -512 -896 129 ) ( -512 -895 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 24
{
( 512 -1152 0 ) ( 512 -1151 0 ) ( 512 -1152 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 384 -1280 0 ) ( 384 -1280 1 ) ( 385 -1280 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 384 -1152 0 ) ( 385 -1152 0 ) ( 384 -1151 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 768 -1024 512 ) ( 768 -1023 512 ) ( 769 -1024 512 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 768 -1024 128 ) ( 769 -1024 128 ) ( 768 -1024 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 768 -1024 128 ) ( 768 -1024 129 ) ( 768 -1023 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 25
{
( -1280 -512 0 ) ( -1280 -511 0 ) ( -1280 -512 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1408 -640 0 ) ( -1408 -640 1 ) ( -1407 -640 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1408 -512 0 ) ( -1407 -512 0 ) ( -1408 -511 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -1024 -384 256 ) ( -1024 -383 256 ) ( -1023 -384 256 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -1024 -384 128 ) ( -1023 -384 128 ) ( -1024 -384 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1024 -384 128 ) ( -1024 -384 129 ) ( -1024 -383 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 26
{
( -384 -1280 0 ) ( -384 -1279 0 ) ( -384 -1280 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -512 -1408 0 ) ( -512 -1408 1 ) ( -511 -1408 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -512 -1280 0 ) ( -511 -1280 0 ) ( -512 -1279 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -128 -1152 896 ) ( -128 -1151 896 ) ( -127 -1152 896 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -128 -1152 128 ) ( -127 -1152 128 ) ( -128 -1152 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -128 -1152 128 ) ( -128 -1152 129 ) ( -128 -1151 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 27
{
( 896 -512 0 ) ( 896 -511 0 ) ( 896 -512 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 768 -640 0 ) ( 768 -640 1 ) ( 769 -640 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 768 -512 0 ) ( 769 -512 0 ) ( 768 -511 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 1152 -384 256 ) ( 1152 -383 256 ) ( 1153 -384 256 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 1152 -384 128 ) ( 1153 -384 128 ) ( 1152 -384 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1152 -384 128 ) ( 1152 -384 129 ) ( 1152 -383 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 28
{
( 640 1152 0 ) ( 640 1153 0 ) ( 640 1152 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 512 1024 0 ) ( 512 1024 1 ) ( 513 1024 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 512 1152 0 ) ( 513 1152 0 ) ( 512 1153 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 896 1280 256 ) ( 896 1281 256 ) ( 897 1280 256 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 896 1280 128 ) ( 897 1280 128 ) ( 896 1280 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 896 1280 128 ) ( 896 1280 129 ) ( 896 1281 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 29
{
( -1152 896 0 ) ( -1152 897 0 ) ( -1152 896 1 ) white [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1280 768 0 ) ( -1280 768 1 ) ( -1279 768 0 ) white [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1280 896 0 ) ( -1279 896 0 ) ( -1280 897 0 ) white [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -896 1024 896 ) ( -896 1025 896 ) ( -895 1024 896 ) white [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -896 1024 128 ) ( -895 1024 128 ) ( -896 1024 129 ) white [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -896 1024 128 ) ( -896 1024 129 ) ( -896 1025 128 ) white [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
} }
// entity 1 // entity 1
{ {