mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-01 07:45:33 +00:00
force fields
This commit is contained in:
parent
c0a1853468
commit
22936c4678
19 changed files with 854 additions and 682 deletions
Binary file not shown.
File diff suppressed because one or more lines are too long
|
|
@ -512,10 +512,10 @@
|
|||
// brush 56
|
||||
{
|
||||
( 320 336 16 ) ( 320 336 17 ) ( 320 335 16 ) Walls/Wall0 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 -1 1
|
||||
( 312 288 16 ) ( 312 288 17 ) ( 313 288 16 ) Walls/Wall0 [ 1 0 0 -8 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 312 288 16 ) ( 312 288 17 ) ( 313 288 16 ) Walls/Wall0 [ 1 0 0 8 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 312 336 16 ) ( 312 335 16 ) ( 313 336 16 ) Walls/Wall0 [ 0 -1 0 0 ] [ -1 0 0 -8 ] 270 1 1
|
||||
( 328 208 48 ) ( 329 208 48 ) ( 328 207 48 ) Manual/Black [ 0 -1 0 0 ] [ -1 0 0 -8 ] 270 1 1
|
||||
( 312 336 16 ) ( 313 336 16 ) ( 312 336 17 ) Walls/Wall0 [ 1 0 0 -8 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 328 208 48 ) ( 329 208 48 ) ( 328 207 48 ) Manual/Black [ 0 -1 0 0 ] [ -1 0 0 0 ] 270 1 1
|
||||
( 312 336 16 ) ( 313 336 16 ) ( 312 336 17 ) Walls/Wall0 [ 1 0 0 8 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 328 208 32 ) ( 328 207 32 ) ( 328 208 33 ) Walls/Wall0 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 -1 1
|
||||
}
|
||||
// brush 57
|
||||
|
|
@ -947,7 +947,7 @@
|
|||
( 248 176 16 ) ( 248 176 17 ) ( 249 176 16 ) Walls/Wall0 [ 1 0 0 8 ] [ 0 0 -1 0 ] 270 1 1
|
||||
( 248 312 16 ) ( 248 311 16 ) ( 249 312 16 ) Walls/Wall0 [ 0 -1 0 -8 ] [ -1 0 0 -8 ] 0 1 1
|
||||
( 264 184 48 ) ( 265 184 48 ) ( 264 183 48 ) Manual/Black [ 0 -1 0 -8 ] [ -1 0 0 -8 ] 180 1 1
|
||||
( 248 224 16 ) ( 249 224 16 ) ( 248 224 17 ) Walls/Wall0 [ 1 0 0 8 ] [ 0 0 -1 0 ] 90 1 1
|
||||
( 248 192 16 ) ( 249 192 16 ) ( 248 192 17 ) Walls/Wall0 [ 1 0 0 8 ] [ 0 0 -1 0 ] 180 1 1
|
||||
( 264 184 32 ) ( 264 183 32 ) ( 264 184 33 ) Walls/Wall0 [ 0 1 0 -8 ] [ 0 0 -1 0 ] 270 -1 1
|
||||
}
|
||||
// brush 105
|
||||
|
|
@ -3370,7 +3370,7 @@
|
|||
// entity 137
|
||||
{
|
||||
"classname" "actor_terminal"
|
||||
"origin" "168 396 28"
|
||||
"origin" "168 396 30"
|
||||
"timeline" "computer1"
|
||||
}
|
||||
// entity 138
|
||||
|
|
@ -3865,27 +3865,63 @@
|
|||
"classname" "actor_keypad"
|
||||
"origin" "348 692 36"
|
||||
"key" "BLUE_KEY"
|
||||
"target" "door_secret_1"
|
||||
"target" "forcefield_1"
|
||||
}
|
||||
// entity 216
|
||||
{
|
||||
"classname" "actor_door_1"
|
||||
"origin" "304 732 32"
|
||||
"targetname" "door_secret_1"
|
||||
}
|
||||
// entity 217
|
||||
{
|
||||
"classname" "actor_forcefield_1"
|
||||
"origin" "344 720 32"
|
||||
"targetname" "forcefield_1"
|
||||
"startenabled" "1"
|
||||
}
|
||||
// entity 218
|
||||
// entity 217
|
||||
{
|
||||
"classname" "actor_chest_1"
|
||||
"origin" "264 712 24"
|
||||
}
|
||||
// entity 218
|
||||
{
|
||||
"classname" "actor_furniture_computertower"
|
||||
"origin" "170 396 26"
|
||||
}
|
||||
// entity 219
|
||||
{
|
||||
"classname" "actor_furniture_computertower"
|
||||
"origin" "274 241 19"
|
||||
"angles" "0 0 90"
|
||||
}
|
||||
// entity 220
|
||||
{
|
||||
"classname" "func_group"
|
||||
"_tb_type" "_tb_group"
|
||||
"_tb_name" "Wall_Panel_Blue"
|
||||
"_tb_id" "38"
|
||||
"_tb_linked_group_id" "{ad70deec-5095-4407-afc9-0f7b57c61fe5}"
|
||||
"_tb_transformation" "-1.8369701987210297e-16 1 0 104.00000000000006 -1 -1.8369701987210297e-16 0 400.0000000000001 0 0 1 0 0 0 0 1"
|
||||
// brush 0
|
||||
{
|
||||
( 256 400 32 ) ( 256 400 33 ) ( 256 399 32 ) Manual/Black [ -1.8369701987210297e-16 -1 0 0 ] [ 0 0 -1 0 ] 90 1 1
|
||||
( 136 192 32 ) ( 135 192 32 ) ( 136 192 33 ) special/clip [ -1 1.8369701987210297e-16 0 -16 ] [ 0 0 1 -16 ] 270 0.5 -1
|
||||
( 264 416 16 ) ( 263 416 16 ) ( 264 415 16 ) special/clip [ -1 1.8369701987210297e-16 0 8 ] [ 1.8369701987210297e-16 1 0 0 ] 90 1 1
|
||||
( 136 400 48 ) ( 136 399 48 ) ( 135 400 48 ) Manual/Black [ -1 1.8369701987210297e-16 0 0 ] [ 1.8369701987210297e-16 1 0 0 ] 90 1 1
|
||||
( 264 224 16 ) ( 264 224 17 ) ( 263 224 16 ) special/clip [ -1 1.8369701987210297e-16 0 -16 ] [ 0 0 1 -16 ] 90 0.5 -1
|
||||
( 264 416 16 ) ( 264 415 16 ) ( 264 416 17 ) Manual/Blue_Panel_Wall [ -1.8369701987210297e-16 -1 0 0 ] [ 0 0 -1 -16 ] 270 1 1
|
||||
}
|
||||
}
|
||||
// entity 221
|
||||
{
|
||||
"classname" "actor_door_1"
|
||||
"origin" "348 232 32"
|
||||
"targetname" "door_secret_2"
|
||||
}
|
||||
// entity 222
|
||||
{
|
||||
"classname" "actor_controlpad"
|
||||
"origin" "352 212 28"
|
||||
"target" "door_secret_2"
|
||||
}
|
||||
// entity 223
|
||||
{
|
||||
"classname" "func_group"
|
||||
"_tb_type" "_tb_layer"
|
||||
"_tb_name" "Computer Room"
|
||||
|
|
@ -3964,37 +4000,37 @@
|
|||
( 104 -200 60 ) ( 104 -200 61 ) ( 104 -199 60 ) Manual/Blue_Panel_Wall [ 0 1 0 -16 ] [ 0 0 -1 24 ] 0 1 1
|
||||
}
|
||||
}
|
||||
// entity 220
|
||||
// entity 224
|
||||
{
|
||||
"classname" "actor_table"
|
||||
"origin" "48 -164 60"
|
||||
"_tb_layer" "37"
|
||||
}
|
||||
// entity 221
|
||||
// entity 225
|
||||
{
|
||||
"classname" "actor_terminal_big"
|
||||
"origin" "8 -140 68"
|
||||
"_tb_layer" "37"
|
||||
}
|
||||
// entity 222
|
||||
// entity 226
|
||||
{
|
||||
"classname" "actor_terminal_big"
|
||||
"origin" "8 -164 68"
|
||||
"_tb_layer" "37"
|
||||
}
|
||||
// entity 223
|
||||
// entity 227
|
||||
{
|
||||
"classname" "actor_mainframe"
|
||||
"origin" "8 -184 68"
|
||||
"_tb_layer" "37"
|
||||
}
|
||||
// entity 224
|
||||
// entity 228
|
||||
{
|
||||
"classname" "actor_mainframe"
|
||||
"origin" "8 -200 68"
|
||||
"_tb_layer" "37"
|
||||
}
|
||||
// entity 225
|
||||
// entity 229
|
||||
{
|
||||
"classname" "actor_terminal"
|
||||
"origin" "48 -168 68"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
[gd_scene load_steps=5 format=3 uid="uid://dioiq4nb7kiet"]
|
||||
[gd_scene load_steps=6 format=3 uid="uid://dioiq4nb7kiet"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://buneqosduiwkm" path="res://Scripts/Actors/3D/ForceField3D.cs" id="1_4cotp"]
|
||||
[ext_resource type="Texture2D" uid="uid://6p28earvo6m2" path="res://textures/Manual/Forcefield/ForceField1.png" id="1_xl5wo"]
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_7axon"]
|
||||
|
|
@ -18,6 +19,8 @@ size = Vector2(2, 2)
|
|||
[node name="Forcefield" type="AnimatableBody3D" groups=["Solid"]]
|
||||
collision_layer = 16
|
||||
collision_mask = 0
|
||||
script = ExtResource("1_4cotp")
|
||||
TargetName = &""
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00500488, 0.00234985, -0.00524902)
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ class_property_descriptions = {}
|
|||
auto_apply_to_matching_node_properties = false
|
||||
meta_properties = {
|
||||
"size": AABB(-8, -8, -8, 8, 8, 8),
|
||||
"studio": "\"3D\\MapModels/actor_capacitor_mini.glb\""
|
||||
"studio": "\"3D/MapModels/actor_capacitor_mini.glb\""
|
||||
}
|
||||
node_class = ""
|
||||
name_property = ""
|
||||
|
|
|
|||
|
|
@ -20,8 +20,12 @@ classname = "actor_forcefield_1"
|
|||
description = "Forcefield Type 1"
|
||||
func_godot_internal = false
|
||||
base_classes = Array[Resource]([ExtResource("1_wufju"), ExtResource("2_6wd32")])
|
||||
class_properties = {}
|
||||
class_property_descriptions = {}
|
||||
class_properties = {
|
||||
"startenabled": false
|
||||
}
|
||||
class_property_descriptions = {
|
||||
"startenabled": "Whether to start enabled or not"
|
||||
}
|
||||
auto_apply_to_matching_node_properties = false
|
||||
meta_properties = {
|
||||
"model": "\"3D/MapModels/actor_forcefield_1.glb\"",
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ class_properties = {}
|
|||
class_property_descriptions = {}
|
||||
auto_apply_to_matching_node_properties = false
|
||||
meta_properties = {
|
||||
"model": "\"3D/MapModels/actor_furniture_box.glb\"",
|
||||
"size": AABB(-2, -2, -2, 2, 2, 2)
|
||||
}
|
||||
node_class = ""
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ class_properties = {}
|
|||
class_property_descriptions = {}
|
||||
auto_apply_to_matching_node_properties = false
|
||||
meta_properties = {
|
||||
"model": "\"3D/MapModels/actor_furniture_can.glb\"",
|
||||
"size": AABB(-2, -2, -2, 2, 2, 2)
|
||||
}
|
||||
node_class = ""
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ class_properties = {}
|
|||
class_property_descriptions = {}
|
||||
auto_apply_to_matching_node_properties = false
|
||||
meta_properties = {
|
||||
"model": "\"3D/MapModels/actor_furniture_shelf.glb\"",
|
||||
"size": AABB(-4, -8, -1, 4, 8, 1)
|
||||
}
|
||||
node_class = ""
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ class_property_descriptions = {}
|
|||
auto_apply_to_matching_node_properties = false
|
||||
meta_properties = {
|
||||
"size": AABB(-32, -16, -16, 32, 16, 16),
|
||||
"studio": "\"3D\\MapModels/actor_tank_large.glb\""
|
||||
"studio": "\"3D/MapModels/actor_tank_large.glb\""
|
||||
}
|
||||
node_class = ""
|
||||
name_property = ""
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ class_properties = {}
|
|||
class_property_descriptions = {}
|
||||
auto_apply_to_matching_node_properties = false
|
||||
meta_properties = {
|
||||
"model": "\"3D\\MapModels/actor_chest_1.glb\"",
|
||||
"model": "\"3D/MapModels/actor_chest_1.glb\"",
|
||||
"size": AABB(-8, -8, -8, 8, 8, 8)
|
||||
}
|
||||
node_class = ""
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ class_properties = {}
|
|||
class_property_descriptions = {}
|
||||
auto_apply_to_matching_node_properties = false
|
||||
meta_properties = {
|
||||
"model": "\"3D/MapModels/actor_keypad.glb\"",
|
||||
"size": AABB(-4, -4, -4, 4, 4, 4)
|
||||
}
|
||||
node_class = ""
|
||||
|
|
|
|||
113
Scripts/Actors/3D/ForceField3D.cs
Normal file
113
Scripts/Actors/3D/ForceField3D.cs
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
using System;
|
||||
using Godot;
|
||||
using Godot.Collections;
|
||||
|
||||
namespace Cirno.Scripts.Actors._3D;
|
||||
|
||||
[Tool]
|
||||
public partial class ForceField3D : AnimatableBody3D, IActivable
|
||||
{
|
||||
[Export] public StringName TargetName { get; set; }
|
||||
|
||||
[Export] public bool StartActive { get; set; }
|
||||
|
||||
[Signal]
|
||||
public delegate void EnabledEventHandler();
|
||||
|
||||
[Signal]
|
||||
public delegate void DisabledEventHandler();
|
||||
|
||||
private bool _enabled = false;
|
||||
|
||||
private CollisionShape3D _collisionShape;
|
||||
|
||||
public bool Activate(ActivationType activationType = ActivationType.Toggle)
|
||||
{
|
||||
if (Engine.IsEditorHint()) return false;
|
||||
|
||||
switch (activationType)
|
||||
{
|
||||
case ActivationType.Toggle:
|
||||
case ActivationType.Use:
|
||||
if (_enabled)
|
||||
{
|
||||
Disable();
|
||||
}
|
||||
else
|
||||
{
|
||||
Enable();
|
||||
}
|
||||
break;
|
||||
case ActivationType.Enable:
|
||||
case ActivationType.Close:
|
||||
Enable();
|
||||
break;
|
||||
case ActivationType.Disable:
|
||||
case ActivationType.Open:
|
||||
Disable();
|
||||
break;
|
||||
case ActivationType.Destroy:
|
||||
return false;
|
||||
break;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public void Toggle()
|
||||
{
|
||||
this.Activate();
|
||||
}
|
||||
|
||||
public void _func_godot_apply_properties(Dictionary props)
|
||||
{
|
||||
TargetName = (string)props["targetname"];
|
||||
StartActive = (bool)props["startenabled"];
|
||||
}
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
if (Engine.IsEditorHint()) return;
|
||||
if (!string.IsNullOrWhiteSpace(TargetName))
|
||||
{
|
||||
this.AddToGroup(TargetName);
|
||||
}
|
||||
|
||||
_collisionShape = GetNode<CollisionShape3D>("CollisionShape3D");
|
||||
|
||||
if (StartActive)
|
||||
{
|
||||
Enable();
|
||||
}
|
||||
else
|
||||
{
|
||||
Disable();
|
||||
}
|
||||
}
|
||||
|
||||
public void Enable()
|
||||
{
|
||||
_enabled = true;
|
||||
EmitSignalEnabled();
|
||||
|
||||
CallDeferred(MethodName.ToggleCollisionDeferred, true);
|
||||
Show();
|
||||
}
|
||||
|
||||
public void Disable()
|
||||
{
|
||||
_enabled = false;
|
||||
EmitSignalDisabled();
|
||||
|
||||
CallDeferred(MethodName.ToggleCollisionDeferred, false);
|
||||
Hide();
|
||||
}
|
||||
|
||||
private void ToggleCollisionDeferred(bool enable)
|
||||
{
|
||||
_collisionShape.Disabled = !enable;
|
||||
}
|
||||
}
|
||||
1
Scripts/Actors/3D/ForceField3D.cs.uid
Normal file
1
Scripts/Actors/3D/ForceField3D.cs.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://buneqosduiwkm
|
||||
|
|
@ -3,20 +3,19 @@
|
|||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bvybqletsvqgk"
|
||||
path.s3tc="res://.godot/imported/BlueKeycard_Small.png-b925d0e80a2eaa9ef7fe1ee182ce6c65.s3tc.ctex"
|
||||
path="res://.godot/imported/BlueKeycard_Small.png-b925d0e80a2eaa9ef7fe1ee182ce6c65.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Sprites/Items/BlueKeycard_Small.png"
|
||||
dest_files=["res://.godot/imported/BlueKeycard_Small.png-b925d0e80a2eaa9ef7fe1ee182ce6c65.s3tc.ctex"]
|
||||
dest_files=["res://.godot/imported/BlueKeycard_Small.png-b925d0e80a2eaa9ef7fe1ee182ce6c65.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/mode=3
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
|
|
|
|||
|
|
@ -15,13 +15,13 @@ dest_files=["res://.godot/imported/GrayKeycard_Small.png-78c37a83db89e8ab4ee0abe
|
|||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/mode=3
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
|
|
@ -31,4 +31,4 @@ process/normal_map_invert_y=false
|
|||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
detect_3d/compress_to=0
|
||||
|
|
|
|||
|
|
@ -15,13 +15,13 @@ dest_files=["res://.godot/imported/GreenKeycard_Small.png-a8d591427ed9e736d5a900
|
|||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/mode=3
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
|
|
@ -31,4 +31,4 @@ process/normal_map_invert_y=false
|
|||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
detect_3d/compress_to=0
|
||||
|
|
|
|||
|
|
@ -15,13 +15,13 @@ dest_files=["res://.godot/imported/RedKeycard_Small.png-11803ebfee263388f1f5d2bd
|
|||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/mode=3
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
|
|
@ -31,4 +31,4 @@ process/normal_map_invert_y=false
|
|||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
detect_3d/compress_to=0
|
||||
|
|
|
|||
|
|
@ -15,13 +15,13 @@ dest_files=["res://.godot/imported/YellowKeycard_Small.png-070bc4c2d61c321670798
|
|||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/mode=3
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
|
|
@ -31,4 +31,4 @@ process/normal_map_invert_y=false
|
|||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
detect_3d/compress_to=0
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue