From c59d91f73f5ff74cbc21af0f7f7f98b46cb6369f Mon Sep 17 00:00:00 2001 From: Pravus Date: Tue, 2 Sep 2025 20:02:05 +0200 Subject: [PATCH 1/3] added first version of main and result components --- .../sdk/components/mesh_collider.proto | 1 + .../sdk/components/trigger_area.proto | 23 +++++++++++++ .../sdk/components/trigger_area_result.proto | 33 +++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 proto/decentraland/sdk/components/trigger_area.proto create mode 100644 proto/decentraland/sdk/components/trigger_area_result.proto diff --git a/proto/decentraland/sdk/components/mesh_collider.proto b/proto/decentraland/sdk/components/mesh_collider.proto index 3289566b..a3ee44da 100644 --- a/proto/decentraland/sdk/components/mesh_collider.proto +++ b/proto/decentraland/sdk/components/mesh_collider.proto @@ -59,4 +59,5 @@ enum ColliderLayer { CL_CUSTOM6 = 8192; CL_CUSTOM7 = 16384; CL_CUSTOM8 = 32768; + CL_PLAYER = 65536; } \ No newline at end of file diff --git a/proto/decentraland/sdk/components/trigger_area.proto b/proto/decentraland/sdk/components/trigger_area.proto new file mode 100644 index 00000000..c99932d2 --- /dev/null +++ b/proto/decentraland/sdk/components/trigger_area.proto @@ -0,0 +1,23 @@ +syntax = "proto3"; + +package decentraland.sdk.components; + +import "decentraland/sdk/components/common/id.proto"; + +option (common.ecs_component_id) = 1060; + +// The PBTriggerArea component is used to raise collision triggering events (through the TriggerAreaResult component) +// when entities enter this component's defined area. +// +// ADR: https://github.com/decentraland/adr/blob/2b30a5e2b4f359a7c22a68fb827db282f6e5f887/content/ADR-258-trigger-areas.md +// +// The area size and rotation is defined by the Entity's Transform. +message PBTriggerArea { + optional MeshType mesh = 1; // default: MT_BOX + optional uint32 collision_mask = 2; // default: CL_PLAYER +} + +enum MeshType { + MT_BOX = 0; + MT_SPHERE = 1; +} \ No newline at end of file diff --git a/proto/decentraland/sdk/components/trigger_area_result.proto b/proto/decentraland/sdk/components/trigger_area_result.proto new file mode 100644 index 00000000..ac78ab1c --- /dev/null +++ b/proto/decentraland/sdk/components/trigger_area_result.proto @@ -0,0 +1,33 @@ +syntax = "proto3"; + +package decentraland.sdk.components; + +import "decentraland/common/vectors.proto"; +import "decentraland/sdk/components/common/id.proto"; + +option (common.ecs_component_id) = 1061; + +// The PBTriggerAreaResult component is used to transport the trigger collision event data for the PBTriggerArea component. +// ADR: https://github.com/decentraland/adr/blob/2b30a5e2b4f359a7c22a68fb827db282f6e5f887/content/ADR-258-trigger-areas.md +message PBTriggerAreaResult { + // Trigger data object + message Trigger { + uint32 entity = 1; // The entity that triggered the Trigger Area + uint32 layer = 2; // The collision layer of the entity that triggered the Trigger Area + decentraland.common.Vector3 position = 3; // The position of the entity that triggered the trigger + decentraland.common.Quaternion rotation = 4; // The rotation of the entity that triggered the trigger + decentraland.common.Vector3 scale = 5; // The scale of the entity that triggered the trigger + } + + uint32 triggered_entity = 1; // The entity that was triggered (this is the entity that owns the trigger area) + decentraland.common.Vector3 triggered_entity_position = 2; // The position of the triggered entity at the time of the trigger + decentraland.common.Quaternion triggered_entity_rotation = 3; // The rotation of the triggered entity at the time of the trigger + TriggerAreaEventType event_type = 4; // The state of the trigger event (ENTER, STAY, EXIT) + uint32 timestamp = 5; // The timestamp of the trigger event +} + +enum TriggerAreaEventType { + TAET_ENTER = 0; + TAET_STAY = 1; + TAET_EXIT = 2; +} \ No newline at end of file From d24bdc887c0dac7089941bfbb4b0ba98de580bda Mon Sep 17 00:00:00 2001 From: Pravus Date: Tue, 2 Sep 2025 20:24:42 +0200 Subject: [PATCH 2/3] corrected TriggerAreaMeshType enum --- proto/decentraland/sdk/components/trigger_area.proto | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/proto/decentraland/sdk/components/trigger_area.proto b/proto/decentraland/sdk/components/trigger_area.proto index c99932d2..6c238f4d 100644 --- a/proto/decentraland/sdk/components/trigger_area.proto +++ b/proto/decentraland/sdk/components/trigger_area.proto @@ -13,11 +13,11 @@ option (common.ecs_component_id) = 1060; // // The area size and rotation is defined by the Entity's Transform. message PBTriggerArea { - optional MeshType mesh = 1; // default: MT_BOX + optional TriggerAreaMeshType mesh = 1; // default: MT_BOX optional uint32 collision_mask = 2; // default: CL_PLAYER } -enum MeshType { - MT_BOX = 0; - MT_SPHERE = 1; +enum TriggerAreaMeshType { + TAMT_BOX = 0; + TAMT_SPHERE = 1; } \ No newline at end of file From 879f441691249bc8b3ce571659c0344faa03667a Mon Sep 17 00:00:00 2001 From: Pravus Date: Fri, 5 Sep 2025 02:24:02 +0200 Subject: [PATCH 3/3] added forgotten trigger field --- proto/decentraland/sdk/components/trigger_area_result.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/proto/decentraland/sdk/components/trigger_area_result.proto b/proto/decentraland/sdk/components/trigger_area_result.proto index ac78ab1c..85146cb1 100644 --- a/proto/decentraland/sdk/components/trigger_area_result.proto +++ b/proto/decentraland/sdk/components/trigger_area_result.proto @@ -24,6 +24,7 @@ message PBTriggerAreaResult { decentraland.common.Quaternion triggered_entity_rotation = 3; // The rotation of the triggered entity at the time of the trigger TriggerAreaEventType event_type = 4; // The state of the trigger event (ENTER, STAY, EXIT) uint32 timestamp = 5; // The timestamp of the trigger event + Trigger trigger = 6; } enum TriggerAreaEventType {