diff --git a/.mono/metadata/scripts_metadata.editor b/.mono/metadata/scripts_metadata.editor
index 0db8e1a..bd62ee8 100644
--- a/.mono/metadata/scripts_metadata.editor
+++ b/.mono/metadata/scripts_metadata.editor
@@ -1 +1 @@
-{"res://codigos/BoardManager.cs":{"modified_time":"1587380554","class":{"namespace":"","class_name":"BoardManager","nested":false}},"res://codigos/Escena_Principal.cs":{"modified_time":"1587392515","class":{"namespace":"","class_name":"Escena_Principal","nested":false}},"res://codigos/GameManager.cs":{"modified_time":"1587385613","class":{"namespace":"","class_name":"GameManager","nested":false}},"res://codigos/MovingObject.cs":{"modified_time":"1587654867","class":{"namespace":"","class_name":"MovingObject","nested":false}}}
\ No newline at end of file
+{"res://codigos/BoardManager.cs":{"modified_time":"1587848329","class":{"namespace":"","class_name":"BoardManager","nested":false}},"res://codigos/Escena_Principal.cs":{"modified_time":"1587745563","class":{"namespace":"","class_name":"Escena_Principal","nested":false}},"res://codigos/GameManager.cs":{"modified_time":"1587745519","class":{"namespace":"","class_name":"GameManager","nested":false}},"res://codigos/MovingObject.cs":{"modified_time":"1587905680","class":{"namespace":"","class_name":"MovingObject","nested":false}},"res://codigos/Player.cs":{"modified_time":"1587905772","class":{"namespace":"","class_name":"Player","nested":false}},"res://codigos/SuelosScript/Suelo1.cs":{"modified_time":"1587836811","class":{"namespace":"","class_name":"Suelo1","nested":false}},"res://codigos/Wall.cs":{"modified_time":"1587905397","class":{"namespace":"","class_name":"Wall","nested":false}}}
\ No newline at end of file
diff --git a/.mono/metadata/scripts_metadata.editor_player b/.mono/metadata/scripts_metadata.editor_player
index 0db8e1a..bd62ee8 100644
--- a/.mono/metadata/scripts_metadata.editor_player
+++ b/.mono/metadata/scripts_metadata.editor_player
@@ -1 +1 @@
-{"res://codigos/BoardManager.cs":{"modified_time":"1587380554","class":{"namespace":"","class_name":"BoardManager","nested":false}},"res://codigos/Escena_Principal.cs":{"modified_time":"1587392515","class":{"namespace":"","class_name":"Escena_Principal","nested":false}},"res://codigos/GameManager.cs":{"modified_time":"1587385613","class":{"namespace":"","class_name":"GameManager","nested":false}},"res://codigos/MovingObject.cs":{"modified_time":"1587654867","class":{"namespace":"","class_name":"MovingObject","nested":false}}}
\ No newline at end of file
+{"res://codigos/BoardManager.cs":{"modified_time":"1587848329","class":{"namespace":"","class_name":"BoardManager","nested":false}},"res://codigos/Escena_Principal.cs":{"modified_time":"1587745563","class":{"namespace":"","class_name":"Escena_Principal","nested":false}},"res://codigos/GameManager.cs":{"modified_time":"1587745519","class":{"namespace":"","class_name":"GameManager","nested":false}},"res://codigos/MovingObject.cs":{"modified_time":"1587905680","class":{"namespace":"","class_name":"MovingObject","nested":false}},"res://codigos/Player.cs":{"modified_time":"1587905772","class":{"namespace":"","class_name":"Player","nested":false}},"res://codigos/SuelosScript/Suelo1.cs":{"modified_time":"1587836811","class":{"namespace":"","class_name":"Suelo1","nested":false}},"res://codigos/Wall.cs":{"modified_time":"1587905397","class":{"namespace":"","class_name":"Wall","nested":false}}}
\ No newline at end of file
diff --git a/.mono/temp/bin/Debug/Rogue en Godot.dll b/.mono/temp/bin/Debug/Rogue en Godot.dll
index 3f22f85..e5d413d 100644
Binary files a/.mono/temp/bin/Debug/Rogue en Godot.dll and b/.mono/temp/bin/Debug/Rogue en Godot.dll differ
diff --git a/.mono/temp/bin/Debug/Rogue en Godot.pdb b/.mono/temp/bin/Debug/Rogue en Godot.pdb
index 00938ff..e39b1e8 100644
Binary files a/.mono/temp/bin/Debug/Rogue en Godot.pdb and b/.mono/temp/bin/Debug/Rogue en Godot.pdb differ
diff --git a/.mono/temp/obj/Debug/Rogue en Godot.csprojAssemblyReference.cache b/.mono/temp/obj/Debug/Rogue en Godot.csprojAssemblyReference.cache
index afd9db9..50cfb72 100644
Binary files a/.mono/temp/obj/Debug/Rogue en Godot.csprojAssemblyReference.cache and b/.mono/temp/obj/Debug/Rogue en Godot.csprojAssemblyReference.cache differ
diff --git a/.mono/temp/obj/Debug/Rogue en Godot.dll b/.mono/temp/obj/Debug/Rogue en Godot.dll
index 3f22f85..e5d413d 100644
Binary files a/.mono/temp/obj/Debug/Rogue en Godot.dll and b/.mono/temp/obj/Debug/Rogue en Godot.dll differ
diff --git a/.mono/temp/obj/Debug/Rogue en Godot.pdb b/.mono/temp/obj/Debug/Rogue en Godot.pdb
index 00938ff..e39b1e8 100644
Binary files a/.mono/temp/obj/Debug/Rogue en Godot.pdb and b/.mono/temp/obj/Debug/Rogue en Godot.pdb differ
diff --git a/Rogue en Godot.csproj b/Rogue en Godot.csproj
index 98c2654..6164224 100644
--- a/Rogue en Godot.csproj
+++ b/Rogue en Godot.csproj
@@ -57,6 +57,9 @@
+
+
+
diff --git a/codigos/BoardManager.cs b/codigos/BoardManager.cs
index f901131..5d4234a 100644
--- a/codigos/BoardManager.cs
+++ b/codigos/BoardManager.cs
@@ -96,20 +96,22 @@ public void SetupScene(int level)//esto crea los muros del borde y el suelo..Tom
}
- private void BoardSetup() //metodo para crear el escenario inciial
+ private async void BoardSetup() //metodo para crear el escenario inciial
{
//recorremos la X
for(int x = -1; x < columns + 1; x++ )//si el area es 8x8 quiero tambien incluir en ese area el borde,entonces si la x primera es el cero en -1 iria el muro
{
//recorremos la y
+ await ToSignal(GetTree().CreateTimer(0.01f),"timeout");
for(int y = -1; y < rows + 1; y++ )//lo mismo pasa en el eje y..Por eso empieza en -1
{
-
+ await ToSignal(GetTree().CreateTimer(0.01f),"timeout");
toInstantiate = GetRandomInArray(floorTiles);//devuelve un objeto instanciado de tipo sprite toma como parametro un array de packetscene
if(x == -1 || y ==-1 || x == columns || y == rows )//si la posicion pertenece al borde
{
+ //await ToSignal(GetTree().CreateTimer(1.0f),"timeout");
//referencio a un elemento aleatorio del borde
toInstantiate = GetRandomInArray(outerWallTiles);//devuelve un objeto isntanciado de tipo sprite toma como parametro un array de packetscene
}
diff --git a/codigos/Escena_Principal.cs b/codigos/Escena_Principal.cs
index 21d087d..031da00 100644
--- a/codigos/Escena_Principal.cs
+++ b/codigos/Escena_Principal.cs
@@ -25,12 +25,12 @@ private void TestGameManager() //esto es para verificar si existe en el nodo un
if(i.IsInsideTree())//si esta en la escena
{
existeGameManager = true;//existe un game Manager
- GD.Print("ya existe un gameManger");
+ //GD.Print("ya existe un gameManger");
}
}
if(existeGameManager == false)//sino existe un game manager
{
- GD.Print("No existe un GameManger creo uno nuevo");
+ //GD.Print("No existe un GameManger creo uno nuevo");
instanciarGameManager();//instancio el gameManager
}
}
diff --git a/codigos/GameManager.cs b/codigos/GameManager.cs
index 4561af9..ec14d01 100644
--- a/codigos/GameManager.cs
+++ b/codigos/GameManager.cs
@@ -1,11 +1,12 @@
using Godot;
using System;
-public class GameManager : Node
+public class GameManager : Node2D
{
//voy a hacer que este GameManager sea un singleton y que nunca se destruya
public BoardManager boardScript;//creo una referencia al board manager
-
+ public int playerFoodPoint = 100;//puntos iniciales de comida del jugador
+ public bool playersTurn = true;//si es el turno del jugador
// Called when the node enters the scene tree for the first time.
public override void _Ready()
{
@@ -18,7 +19,10 @@ private void InitGame()//inicializa el juego
boardScript.SetupScene(16);//llamo a la función que esta en board manager para crear la escena toma como parametro el nivel actual que es la cantidad de enemigos
}
-
+ public void GameOver()
+ {
+ Visible = false;//desactivo el nodo que contiene este script,esto tendria que desactivar el Game manager para saber que es Game over puede que lo haga de otra manera
+ }
// // Called every frame. 'delta' is the elapsed time since the previous frame.
// public override void _Process(float delta)
// {
diff --git a/codigos/MovingObject.cs b/codigos/MovingObject.cs
index ddc0253..5a86b7e 100644
--- a/codigos/MovingObject.cs
+++ b/codigos/MovingObject.cs
@@ -6,23 +6,25 @@ public abstract class MovingObject : KinematicBody2D//esta es una clase global q
{
public float moveTime = 0.1f;//tiempo en moverse de una casilla a otra
- private float movementSpeed;//velocidad a la que se devera mover un objeto de una casilla a otra para que tarde 0.1
+ public float movementSpeed;//velocidad a la que se devera mover un objeto de una casilla a otra para que tarde 0.1
private int blokingLayer;//referencia a la capa activa se representa por el Z-index
public CollisionShape2D BoxCollider;
public RayCast2D rayo;
public RigidBody2D rb2D;
-
+ public GameManager _GameManager;
+ public bool enable;//para saber si el objeto puede estar enable y moverse
public Tween moverConTween;
+ public int dimensionSprite = 32;
// Called when the node enters the scene tree for the first time.
- public override void _Ready()
+ /*public override void _Ready()//no puedo implementar override desde player o enemigo por eso muevo todas estas variables del ready a cada script independiente
{
movementSpeed = 1f / moveTime;//velocidad a la que se movera
BoxCollider = GetNode("CollisionShape2D");
rayo = GetNode("RayCast2D");
moverConTween = GetNode("Tween");
//rb2D = thi;por ahora voy a evitarla
- }
+ }*/
protected void SmoothMovementWithTween(Vector2 end)//Esta función va a procesar el movimiento en unity se usa una corrutina,pero en godot puede hacerce lo mismo con un nodo tween
{
@@ -30,8 +32,8 @@ protected void SmoothMovementWithTween(Vector2 end)//Esta función va a procesar
this,//que objeto quiero crear la interpolación osea este mismo
"Position",//que propiedad quiero interpolar,osea la posición
this.Position,//posición inicial
- end,//posicion final
- 0.5f,//tiempo para ir de una posición a otra
+ end,//posicion final y multiplico por el tamaño del sprite,para esto tengo que hacer pruebas,pero creo que asi tendria que funcionar
+ 0.3f,//tiempo para ir de una posición a otra
Tween.TransitionType.Linear,//tipo de interpolación es Tween.TRANS_LINEAR
Tween.EaseType.InOut//como termina la transición Tween.EASE_IN_OUT
);
@@ -46,7 +48,7 @@ protected bool Move(int xDir, int Ydir,RayCast2D hitRaycast)//es privada para cu
bool colisiono;//para saber cuando el raycast colisiona
Vector2 start = Position;//posicion inicial
Vector2 end = start + new Vector2(xDir,Ydir);//la posición de adonde queremos movernos suma de vectores (0,0) + (1,0) = (1,0)
- hitRaycast.CastTo = new Vector2(xDir,Ydir);//esto determina para adonde va apuntar el raycast,por ahora es para prueba ya que supuestamente recibo por parametro donde tendría que apuntar
+ hitRaycast.CastTo = new Vector2(-Ydir,xDir);//esto determina para adonde va apuntar el raycast
//hacemos una raycast entre el punto inicial y final
//si hay un collider por donde pasa esa linea abremos encontrado ese objeto
@@ -56,33 +58,41 @@ protected bool Move(int xDir, int Ydir,RayCast2D hitRaycast)//es privada para cu
if(colisiono == false)//sino esta colisionando
{
//hacemos el movimiento
+ //GD.Print("tendria que moverse");
+ //GD.Print("cantidad que mueve en X: ",xDir);
+ //GD.Print("cantidad que mueve en Y: ",Ydir);
+ //GD.Print("la posicion en final X: ",end.x);
+ //GD.Print("laposicion en final Y: ",end.y);
+
SmoothMovementWithTween(end);//movemos con interpolación lineal recibe por parametro la ultima posición
return true;
}
else//si en la mascara 2 hay 1 personaje o un obstaculo
{
+ GD.Print("No podemos movernos");
return false;//no hemos podido movernos
}
}
-
- protected abstract void OnCantMove(KinematicBody2D go); //aqui viene el comportamiento luego de no poder moverse,es un meotdoABstracto ya que se va a comportar de diferente manera según sea el personaje o elenemigo
-
+ //Esto es relacionado al movimiento y al tipo de obstaculo
+ protected abstract void OnCantMoveStaticBody2D(StaticBody2D go); //aqui viene el comportamiento luego de no poder moverse,es un meotdoABstracto ya que se va a comportar de diferente manera según sea el personaje o elenemigo
+ protected abstract void OnCantMoveRigidBody2D(KinematicBody2D go);
protected virtual void AttempMove(int xDir,int yDir)//metodo para internar moverse esto recive por arametro cuanto en x y cuanto en y lo marcamos como abstracto ya que cada esto lo haremos en cada personaje
{
RayCast2D hit = rayo;//tomo la referencia del nodo que esta en la función ready
bool canMove = Move(xDir,yDir,hit);//
if(canMove) return;//si se movio termino esta función
- var col = hit.IsColliding();//nose si funcione luego lo voy a probar con el personaje
- //sino notificamos que nos hemos encontrado cno cierto objeto que nos bloquea el paso,sin embargo el jugador y el enemigo tienen diferente comportamiento
- OnCantMove((KinematicBody2D)hit.GetCollider());//aqui tengo que pasarle el kinematicBody que estamos colisionando
- }
-// // Called every frame. 'delta' is the elapsed time since the previous frame.
-// public override void _Process(float delta)
-// {
-//
-// }
-
-
-
+
+ Node col = (Node)hit.GetCollider();//usando la colisicioń del raycast busco el nodo
+ if(col.IsInGroup("Wall"))//si el nodo colisionado esta en el grupo wall
+ {
+ //GD.Print("estoy conlisionado con un muro");
+ OnCantMoveStaticBody2D((StaticBody2D)hit.GetCollider());//aqui tengo que pasarle el staticbody que estamos colisionando
+ }
+ if(col.IsInGroup("characters"))//si el nodo colisionado esta enel grupo character
+ {
+ //GD.Print("estoy conlisionado con un personaje");
+ OnCantMoveRigidBody2D((KinematicBody2D)hit.GetCollider());//aqui tengo que pasarle el kinematicBody que estamos colisionando)
+ }
+ }
}
diff --git a/codigos/Player.cs b/codigos/Player.cs
new file mode 100644
index 0000000..81e3387
--- /dev/null
+++ b/codigos/Player.cs
@@ -0,0 +1,140 @@
+using Godot;
+using System;
+
+public class Player : MovingObject
+{
+ public int wallDamage = 1;//daño
+ public int pointPerFood = 10;//puntos por comida
+ public int pointPerSOda = 20;//puntos por soda
+ public float restardLevelDelay = 1f;//segundos antes de reiniciar o pasar al siguente nivel
+
+ private AnimationTree animator;//referencia al nodo animationthree
+ private int food;//para llevar la cuenta de cuanta comida tiene
+ private AnimationNodeStateMachinePlayback playback;//referencia al nodo animation tree con el parametro para acceder a los stados
+
+ //private bool seMovio = false;
+
+ Wall hitWall;//referencia a la pared que esta chocando
+
+ // Called when the node enters the scene tree for the first time.
+ public override void _Ready()
+ {
+ movementSpeed = 1f / moveTime;//velocidad a la que se movera
+ BoxCollider = GetNode("CollisionShape2D");
+ rayo = GetNode("RayCast2D");
+ moverConTween = GetNode("Tween");
+ //rb2D = thi;por ahora voy a evitarla
+ animator = GetNode("AnimationTree");//referencia al animation three
+ _GameManager = (GameManager)GetTree().GetNodesInGroup("GameManager")[0];
+ food = _GameManager.playerFoodPoint;//la comida inicial del jugador busco desde el game manager
+
+ playback = (AnimationNodeStateMachinePlayback)GetNode("AnimationTree").Get("parameters/playback");//accedo al nodo animation three y a la propiedad de las maquinas de estado
+ playback.Start("PlayerIdle");//animación inicial player estatico osea igle
+
+ }
+
+
+ private void CheckIfGameOver()//verifica que si es GameOver
+ {
+ if(food <= 0)//sino tenemos comida
+ {
+ _GameManager.GameOver();//llamo a la función Game Over,ojo esta función tiene que terminar el juego
+ }
+ }
+
+ protected override void AttempMove(int xDir, int yDir)
+ {
+ food --;//en cada paso dismunuje la comida
+ base.AttempMove(xDir,yDir);//ejecuto esta acción
+ CheckIfGameOver();//siempre que se decrementa la comida verificamos si es game over
+ _GameManager.playersTurn = false;//luego terminamos el turno del jugador
+ }
+
+ public override void _PhysicsProcess(float delta)
+ {
+ if(!_GameManager.playersTurn)//si no es el turno del jugador
+ {
+ return;//dejamos de ejecutar
+ }
+
+ int horizontal = Convert.ToInt16((Input.GetActionStrength("d") - Input.GetActionStrength("a")) * dimensionSprite);//mover izquierda derecha
+ int vertical = Convert.ToInt16((Input.GetActionStrength("s") - Input.GetActionStrength("w")) * dimensionSprite );//mover arriba abajo
+ if(horizontal != 0)//esto es para que NO se mueva en diagonal
+ {
+ vertical = 0;//esto es para que NO se mueva en diagonal
+ }
+ if(horizontal != 0 || vertical != 0 )///nos estamos moviendo
+ {
+ AttempMove(horizontal,vertical);//movemos el personaje
+ //if(!seMovio)//esto es para prueba
+ //{
+ //seMovio = true;
+ //
+ //}
+ //GD.Print(rayo.IsColliding());//esto es para prueba compruebo si el rayo colisiona
+ // await ToSignal(GetTree().CreateTimer(0.1f),"timeout");//esto es para prueba
+ //seMovio = false;//esto es para prueba
+ }
+
+ }
+
+
+
+
+
+ protected override void OnCantMoveStaticBody2D(StaticBody2D pared)//si "NO" podemos movernos recibe el cuerpo estatico y es un una pared.Este es un metodo que se sobreescribe
+ {
+ if(pared.IsInGroup("Wall"))
+ {
+ hitWall = (Wall)pared.GetParent();//con esto tendria que poder acceder al script que maneja ese piso para cambiar la figura al ser golpeado
+ }
+ if(hitWall != null)//si el personaje esta chocando con un muro
+ {
+ hitWall.DamageWall(wallDamage);//descuento el hp al suelo,se me esta complicando entender el concepto de unity y pasarlo a godot
+ //activo animación romper bloque
+ playback.Travel("PlayerChop");//activo animación romper pared
+ }
+ }
+ protected override void OnCantMoveRigidBody2D(KinematicBody2D pared)//si "NO" podemos movernos recibe el cuerpo rigido y es un character.Este es un metodo que se sobreescribe
+ {
+ playback.Travel("PlayerChop");//activo animación romper pared
+ }
+
+
+
+
+
+ private void Restart()
+ {
+ GetTree().ReloadCurrentScene();//reinicia la scena esto puede cambiar
+ }
+
+ public void LoseFood(int loss)
+ {
+ food -= loss;//cantidad de comida que pierdo
+ playback.Travel("PlayerHit");//activo animación daño
+ CheckIfGameOver();//verifico sino todavia tengo comida osea sino es game over
+ }
+
+ public async void _on_Area2D_area_entered(Area _area)//esta funcion tiene una corrutina para detener el flujo por un tiempo
+ {
+ if(_area.IsInGroup("Exit"))//si entramos al aerea de exit
+ {
+ enable = false;//el jugador no se puede mover
+ //aqui tendria que venir una transcición al cambiar de pantalla
+ await ToSignal(GetTree().CreateTimer(1.0f),"timeout");//detengo por 1 segundo
+ Restart();//reinicio el nivel,voy a tener que utilizar un singleton para guardar puntajes
+ }
+ if(_area.IsInGroup("Food"))
+ {
+ food += pointPerFood;//sumo el puntaje de la comida
+ (_area.GetParent() as Sprite).Visible = false;//hago invisible el nodo padre que contiene el sprite por lo tanto todos los hijos tendrian que ser inviisble
+ }
+ if(_area.IsInGroup("Soda"))
+ {
+ food += pointPerSOda;//sumo el puntaje de la soda
+ (_area.GetParent() as Sprite).Visible = false;//hago invisible el nodo padre que contiene el sprite por lo tanto todos los hijos tendrian que ser inviisble
+ }
+ }
+
+}
diff --git a/codigos/SuelosScript/Suelo1.cs b/codigos/SuelosScript/Suelo1.cs
new file mode 100644
index 0000000..b0155c2
--- /dev/null
+++ b/codigos/SuelosScript/Suelo1.cs
@@ -0,0 +1,21 @@
+using Godot;
+using System;
+
+public class Suelo1 : Wall
+{
+ // Declare member variables here. Examples:
+ // private int a = 2;
+ // private string b = "text";
+
+ // Called when the node enters the scene tree for the first time.
+ public override void _Ready()
+ {
+
+ }
+
+// // Called every frame. 'delta' is the elapsed time since the previous frame.
+// public override void _Process(float delta)
+// {
+//
+// }
+}
diff --git a/codigos/Wall.cs b/codigos/Wall.cs
new file mode 100644
index 0000000..3673f9d
--- /dev/null
+++ b/codigos/Wall.cs
@@ -0,0 +1,30 @@
+using Godot;
+using System;
+
+public class Wall : Sprite
+{
+ [Export]
+ private int indiceDmgSprite = 0;
+ public int hp = 4;
+ private CollisionShape2D _collisionShape2D;
+
+ // Called when the node enters the scene tree for the first time.
+ public override void _Ready()
+ {
+ _collisionShape2D = GetNode("StaticBody2DWall/CollisionShape2D");
+ }
+
+ public void DamageWall(int loss)//funcion publica que usara el personaje para dañar y hacer invisible este nodo
+ {
+ Frame = indiceDmgSprite;//cuando es golpeado toma esta textura que esta en el indice DmgSprite
+ hp -= loss;//descuento puntaje
+ if(hp<2)
+ if(hp <= 0)//si el hp de esta columna es menor a cero
+ {
+ _collisionShape2D.Disabled = true;//hago invisible el cuerpo estatico ya que sigue funcionando aunque haga invisible el padre
+ Visible = false;//esto tengo que comprobar ya que a veces los hijos si son areas o bodys siguen funciondo
+ //GD.Print("tendria que dejar de estar colisionando con el la pared");
+ //QueueFree();//pruebo destruyendo,aunque tengo que hacerlo desaparecer ya que dicen que si destruyo los objetos tienen consumo con el recolector de basura de c#
+ }
+ }
+}
diff --git a/escenas/Escena_Principal.tscn b/escenas/Escena_Principal.tscn
index 0fa3556..4781ee6 100644
--- a/escenas/Escena_Principal.tscn
+++ b/escenas/Escena_Principal.tscn
@@ -1,5 +1,6 @@
-[gd_scene load_steps=3 format=2]
+[gd_scene load_steps=4 format=2]
+[ext_resource path="res://escenas/characters/Player.tscn" type="PackedScene" id=1]
[ext_resource path="res://escenas/GameManager.tscn" type="PackedScene" id=27]
[ext_resource path="res://codigos/Escena_Principal.cs" type="Script" id=28]
@@ -20,3 +21,8 @@ zoom = Vector2( 0.54, 0.54 )
[node name="Board" type="Node2D" parent="." groups=[
"Board",
]]
+
+[node name="GameManager" parent="." instance=ExtResource( 27 )]
+
+[node name="Player" parent="." instance=ExtResource( 1 )]
+position = Vector2( 0, 224 )
diff --git a/escenas/FloorScene/Exit.tscn b/escenas/FloorScene/Exit.tscn
index 948a104..cf7ae56 100644
--- a/escenas/FloorScene/Exit.tscn
+++ b/escenas/FloorScene/Exit.tscn
@@ -14,7 +14,9 @@ vframes = 7
hframes = 8
frame = 20
-[node name="Area2DExit" type="Area2D" parent="."]
+[node name="Area2DExit" type="Area2D" parent="." groups=[
+"Exit",
+]]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2DExit"]
shape = SubResource( 1 )
diff --git a/escenas/FloorScene/Food.tscn b/escenas/FloorScene/Food.tscn
index 408221c..39e2681 100644
--- a/escenas/FloorScene/Food.tscn
+++ b/escenas/FloorScene/Food.tscn
@@ -14,7 +14,9 @@ vframes = 7
hframes = 8
frame = 19
-[node name="Area2DFood" type="Area2D" parent="."]
+[node name="Area2DFood" type="Area2D" parent="." groups=[
+"Food",
+]]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2DFood"]
shape = SubResource( 1 )
diff --git a/escenas/FloorScene/OuterWall.tscn b/escenas/FloorScene/OuterWall.tscn
index 9bc1974..a6b4b87 100644
--- a/escenas/FloorScene/OuterWall.tscn
+++ b/escenas/FloorScene/OuterWall.tscn
@@ -14,6 +14,7 @@ hframes = 8
frame = 25
[node name="StaticBody2D" type="StaticBody2D" parent="."]
+collision_layer = 3
[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"]
shape = SubResource( 1 )
diff --git a/escenas/FloorScene/OuterWall2.tscn b/escenas/FloorScene/OuterWall2.tscn
index ec742ed..dd2ecbe 100644
--- a/escenas/FloorScene/OuterWall2.tscn
+++ b/escenas/FloorScene/OuterWall2.tscn
@@ -14,6 +14,7 @@ hframes = 8
frame = 26
[node name="StaticBody2D" type="StaticBody2D" parent="."]
+collision_layer = 3
[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"]
shape = SubResource( 1 )
diff --git a/escenas/FloorScene/OuterWall3.tscn b/escenas/FloorScene/OuterWall3.tscn
index 6eabd15..d17e553 100644
--- a/escenas/FloorScene/OuterWall3.tscn
+++ b/escenas/FloorScene/OuterWall3.tscn
@@ -14,6 +14,7 @@ hframes = 8
frame = 28
[node name="StaticBody2D" type="StaticBody2D" parent="."]
+collision_layer = 3
[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"]
shape = SubResource( 1 )
diff --git a/escenas/FloorScene/Soda.tscn b/escenas/FloorScene/Soda.tscn
index c243d06..3891675 100644
--- a/escenas/FloorScene/Soda.tscn
+++ b/escenas/FloorScene/Soda.tscn
@@ -13,7 +13,9 @@ vframes = 7
hframes = 8
frame = 18
-[node name="Area2DSoda" type="Area2D" parent="."]
+[node name="Area2DSoda" type="Area2D" parent="." groups=[
+"Soda",
+]]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2DSoda"]
shape = SubResource( 1 )
diff --git a/escenas/FloorScene/Wall.tscn b/escenas/FloorScene/Wall.tscn
index db95773..ca9c13a 100644
--- a/escenas/FloorScene/Wall.tscn
+++ b/escenas/FloorScene/Wall.tscn
@@ -1,20 +1,27 @@
-[gd_scene load_steps=3 format=2]
+[gd_scene load_steps=4 format=2]
[ext_resource path="res://sprite/Scavengers_SpriteSheet.png" type="Texture" id=1]
+[ext_resource path="res://codigos/Wall.cs" type="Script" id=2]
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 15.9082, 15.8257 )
[node name="Wall" type="Sprite" groups=[
"BlockingLayer",
+"wall",
]]
z_index = 1
texture = ExtResource( 1 )
vframes = 7
hframes = 8
frame = 21
+script = ExtResource( 2 )
+indiceDmgSprite = 48
-[node name="StaticBody2DWall" type="StaticBody2D" parent="."]
+[node name="StaticBody2DWall" type="StaticBody2D" parent="." groups=[
+"Wall",
+]]
+collision_layer = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2DWall"]
shape = SubResource( 1 )
diff --git a/escenas/FloorScene/Wall2.tscn b/escenas/FloorScene/Wall2.tscn
index ebc3e7f..bf47c46 100644
--- a/escenas/FloorScene/Wall2.tscn
+++ b/escenas/FloorScene/Wall2.tscn
@@ -1,20 +1,27 @@
-[gd_scene load_steps=3 format=2]
+[gd_scene load_steps=4 format=2]
[ext_resource path="res://sprite/Scavengers_SpriteSheet.png" type="Texture" id=1]
+[ext_resource path="res://codigos/Wall.cs" type="Script" id=2]
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 15.9082, 15.8257 )
[node name="Wall2" type="Sprite" groups=[
"BlockingLayer",
+"wall",
]]
z_index = 1
texture = ExtResource( 1 )
vframes = 7
hframes = 8
frame = 22
+script = ExtResource( 2 )
+indiceDmgSprite = 49
-[node name="StaticBody2DWall" type="StaticBody2D" parent="."]
+[node name="StaticBody2DWall" type="StaticBody2D" parent="." groups=[
+"Wall",
+]]
+collision_layer = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2DWall"]
shape = SubResource( 1 )
diff --git a/escenas/FloorScene/Wall3.tscn b/escenas/FloorScene/Wall3.tscn
index 09ed1b5..8b76c8a 100644
--- a/escenas/FloorScene/Wall3.tscn
+++ b/escenas/FloorScene/Wall3.tscn
@@ -1,20 +1,27 @@
-[gd_scene load_steps=3 format=2]
+[gd_scene load_steps=4 format=2]
[ext_resource path="res://sprite/Scavengers_SpriteSheet.png" type="Texture" id=1]
+[ext_resource path="res://codigos/Wall.cs" type="Script" id=2]
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 15.9082, 15.8257 )
[node name="Wall3" type="Sprite" groups=[
"BlockingLayer",
+"wall",
]]
z_index = 1
texture = ExtResource( 1 )
vframes = 7
hframes = 8
frame = 23
+script = ExtResource( 2 )
+indiceDmgSprite = 50
-[node name="StaticBody2DWall" type="StaticBody2D" parent="."]
+[node name="StaticBody2DWall" type="StaticBody2D" parent="." groups=[
+"Wall",
+]]
+collision_layer = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2DWall"]
shape = SubResource( 1 )
diff --git a/escenas/FloorScene/Wall4.tscn b/escenas/FloorScene/Wall4.tscn
index 4b295aa..be346c7 100644
--- a/escenas/FloorScene/Wall4.tscn
+++ b/escenas/FloorScene/Wall4.tscn
@@ -1,20 +1,27 @@
-[gd_scene load_steps=3 format=2]
+[gd_scene load_steps=4 format=2]
[ext_resource path="res://sprite/Scavengers_SpriteSheet.png" type="Texture" id=1]
+[ext_resource path="res://codigos/Wall.cs" type="Script" id=2]
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 15.9082, 15.8257 )
[node name="Wall4" type="Sprite" groups=[
"BlockingLayer",
+"wall",
]]
z_index = 1
texture = ExtResource( 1 )
vframes = 7
hframes = 8
frame = 24
+script = ExtResource( 2 )
+indiceDmgSprite = 51
-[node name="StaticBody2DWall" type="StaticBody2D" parent="."]
+[node name="StaticBody2DWall" type="StaticBody2D" parent="." groups=[
+"Wall",
+]]
+collision_layer = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2DWall"]
shape = SubResource( 1 )
diff --git a/escenas/FloorScene/Wall5.tscn b/escenas/FloorScene/Wall5.tscn
index 6f08a09..87d62aa 100644
--- a/escenas/FloorScene/Wall5.tscn
+++ b/escenas/FloorScene/Wall5.tscn
@@ -1,20 +1,27 @@
-[gd_scene load_steps=3 format=2]
+[gd_scene load_steps=4 format=2]
[ext_resource path="res://sprite/Scavengers_SpriteSheet.png" type="Texture" id=1]
+[ext_resource path="res://codigos/Wall.cs" type="Script" id=2]
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 15.9082, 15.8257 )
[node name="Wall5" type="Sprite" groups=[
"BlockingLayer",
+"wall",
]]
z_index = 1
texture = ExtResource( 1 )
vframes = 7
hframes = 8
frame = 27
+script = ExtResource( 2 )
+indiceDmgSprite = 52
-[node name="StaticBody2DWall" type="StaticBody2D" parent="."]
+[node name="StaticBody2DWall" type="StaticBody2D" parent="." groups=[
+"Wall",
+]]
+collision_layer = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2DWall"]
shape = SubResource( 1 )
diff --git a/escenas/FloorScene/Wall6.tscn b/escenas/FloorScene/Wall6.tscn
index feb1c2c..91dde03 100644
--- a/escenas/FloorScene/Wall6.tscn
+++ b/escenas/FloorScene/Wall6.tscn
@@ -1,20 +1,27 @@
-[gd_scene load_steps=3 format=2]
+[gd_scene load_steps=4 format=2]
[ext_resource path="res://sprite/Scavengers_SpriteSheet.png" type="Texture" id=1]
+[ext_resource path="res://codigos/Wall.cs" type="Script" id=2]
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 15.9082, 15.8257 )
[node name="Wall6" type="Sprite" groups=[
"BlockingLayer",
+"wall",
]]
z_index = 1
texture = ExtResource( 1 )
vframes = 7
hframes = 8
-frame = 29
+frame = 28
+script = ExtResource( 2 )
+indiceDmgSprite = 28
-[node name="StaticBody2DWall" type="StaticBody2D" parent="."]
+[node name="StaticBody2DWall" type="StaticBody2D" parent="." groups=[
+"Wall",
+]]
+collision_layer = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2DWall"]
shape = SubResource( 1 )
diff --git a/escenas/FloorScene/Wall7.tscn b/escenas/FloorScene/Wall7.tscn
index 550794b..9ba0817 100644
--- a/escenas/FloorScene/Wall7.tscn
+++ b/escenas/FloorScene/Wall7.tscn
@@ -1,20 +1,27 @@
-[gd_scene load_steps=3 format=2]
+[gd_scene load_steps=4 format=2]
[ext_resource path="res://sprite/Scavengers_SpriteSheet.png" type="Texture" id=1]
+[ext_resource path="res://codigos/Wall.cs" type="Script" id=2]
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 15.9082, 15.8257 )
[node name="Wall7" type="Sprite" groups=[
"BlockingLayer",
+"wall",
]]
z_index = 1
texture = ExtResource( 1 )
vframes = 7
hframes = 8
frame = 30
+script = ExtResource( 2 )
+indiceDmgSprite = 53
-[node name="StaticBody2DWall" type="StaticBody2D" parent="."]
+[node name="StaticBody2DWall" type="StaticBody2D" parent="." groups=[
+"Wall",
+]]
+collision_layer = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2DWall"]
shape = SubResource( 1 )
diff --git a/escenas/FloorScene/Wall8.tscn b/escenas/FloorScene/Wall8.tscn
index 76ac0b8..de9dceb 100644
--- a/escenas/FloorScene/Wall8.tscn
+++ b/escenas/FloorScene/Wall8.tscn
@@ -1,20 +1,27 @@
-[gd_scene load_steps=3 format=2]
+[gd_scene load_steps=4 format=2]
[ext_resource path="res://sprite/Scavengers_SpriteSheet.png" type="Texture" id=1]
+[ext_resource path="res://codigos/Wall.cs" type="Script" id=2]
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 15.9082, 15.8257 )
[node name="Wall8" type="Sprite" groups=[
"BlockingLayer",
+"wall",
]]
z_index = 1
texture = ExtResource( 1 )
vframes = 7
hframes = 8
frame = 31
+script = ExtResource( 2 )
+indiceDmgSprite = 54
-[node name="StaticBody2DWall" type="StaticBody2D" parent="."]
+[node name="StaticBody2DWall" type="StaticBody2D" parent="." groups=[
+"Wall",
+]]
+collision_layer = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2DWall"]
shape = SubResource( 1 )
diff --git a/escenas/characters/Enemy1.tscn b/escenas/characters/Enemy1.tscn
index 40af568..dd12230 100644
--- a/escenas/characters/Enemy1.tscn
+++ b/escenas/characters/Enemy1.tscn
@@ -58,6 +58,7 @@ node_connections = [ "output", 0, "OneShot", "OneShot", 0, "Animation", "OneShot
[node name="Enemy1" type="KinematicBody2D" groups=[
"Enemy",
+"characters",
]]
z_index = 2
collision_mask = 2
@@ -71,7 +72,7 @@ shape = SubResource( 1 )
texture = ExtResource( 1 )
vframes = 7
hframes = 8
-frame = 7
+frame = 9
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
anims/Enemy1Idle = SubResource( 2 )
diff --git a/escenas/characters/Enemy2.tscn b/escenas/characters/Enemy2.tscn
index d54a752..a5a068f 100644
--- a/escenas/characters/Enemy2.tscn
+++ b/escenas/characters/Enemy2.tscn
@@ -58,6 +58,7 @@ node_connections = [ "output", 0, "OneShot", "OneShot", 0, "Animation 2", "OneSh
[node name="Enemy2" type="KinematicBody2D" groups=[
"Enemy",
+"characters",
]]
z_index = 2
collision_mask = 2
@@ -69,7 +70,7 @@ shape = SubResource( 1 )
texture = ExtResource( 1 )
vframes = 7
hframes = 8
-frame = 15
+frame = 14
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
anims/Enemy2Attack = SubResource( 2 )
diff --git a/escenas/characters/Player.tscn b/escenas/characters/Player.tscn
index 999ab87..ccbd6d3 100644
--- a/escenas/characters/Player.tscn
+++ b/escenas/characters/Player.tscn
@@ -1,12 +1,14 @@
-[gd_scene load_steps=12 format=2]
+[gd_scene load_steps=16 format=2]
[ext_resource path="res://sprite/Scavengers_SpriteSheet.png" type="Texture" id=1]
+[ext_resource path="res://codigos/Player.cs" type="Script" id=2]
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 10.7465, 13.6713 )
[sub_resource type="Animation" id=2]
length = 0.3
+step = 0.05
tracks/0/type = "value"
tracks/0/path = NodePath("SpritePlayer:frame")
tracks/0/interp = 1
@@ -22,7 +24,7 @@ tracks/0/keys = {
[sub_resource type="Animation" id=3]
length = 0.3
-loop = true
+step = 0.05
tracks/0/type = "value"
tracks/0/path = NodePath("SpritePlayer:frame")
tracks/0/interp = 1
@@ -30,7 +32,7 @@ tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
-"times": PoolRealArray( 0, 0.1 ),
+"times": PoolRealArray( 0, 0.15 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 1,
"values": [ 46, 47 ]
@@ -51,47 +53,60 @@ tracks/0/keys = {
"values": [ 0, 1, 2, 3, 5 ]
}
-[sub_resource type="AnimationNodeAdd2" id=5]
-
-[sub_resource type="AnimationNodeAnimation" id=6]
+[sub_resource type="AnimationNodeAnimation" id=5]
animation = "PlayerChop"
-[sub_resource type="AnimationNodeAnimation" id=7]
+[sub_resource type="AnimationNodeAnimation" id=6]
animation = "PlayerHit"
-[sub_resource type="AnimationNodeAnimation" id=8]
+[sub_resource type="AnimationNodeAnimation" id=7]
animation = "PlayerIdle"
-[sub_resource type="AnimationNodeOneShot" id=9]
-
-[sub_resource type="AnimationNodeBlendTree" id=10]
-graph_offset = Vector2( -126, 146.5 )
-nodes/AddHit/node = SubResource( 5 )
-nodes/AddHit/position = Vector2( 500, 260 )
-nodes/Animation/node = SubResource( 8 )
-nodes/Animation/position = Vector2( 0, 140 )
-"nodes/Animation 2/node" = SubResource( 6 )
-"nodes/Animation 2/position" = Vector2( 0, 280 )
-"nodes/Animation 3/node" = SubResource( 7 )
-"nodes/Animation 3/position" = Vector2( 20, 420 )
-nodes/OneShotchop/node = SubResource( 9 )
-nodes/OneShotchop/position = Vector2( 240, 140 )
-nodes/output/position = Vector2( 740, 300 )
-node_connections = [ "output", 0, "AddHit", "OneShotchop", 0, "Animation", "OneShotchop", 1, "Animation 2", "AddHit", 0, "OneShotchop", "AddHit", 1, "Animation 3" ]
+[sub_resource type="AnimationNodeStateMachineTransition" id=8]
+
+[sub_resource type="AnimationNodeStateMachineTransition" id=9]
+switch_mode = 2
+auto_advance = true
+
+[sub_resource type="AnimationNodeStateMachineTransition" id=10]
+
+[sub_resource type="AnimationNodeStateMachineTransition" id=11]
+switch_mode = 2
+auto_advance = true
+
+[sub_resource type="AnimationNodeStateMachine" id=12]
+states/PlayerChop/node = SubResource( 5 )
+states/PlayerChop/position = Vector2( 305.601, 200 )
+states/PlayerHit/node = SubResource( 6 )
+states/PlayerHit/position = Vector2( -99.3985, 200 )
+states/PlayerIdle/node = SubResource( 7 )
+states/PlayerIdle/position = Vector2( 116.601, 61 )
+transitions = [ "PlayerIdle", "PlayerChop", SubResource( 8 ), "PlayerChop", "PlayerIdle", SubResource( 9 ), "PlayerIdle", "PlayerHit", SubResource( 10 ), "PlayerHit", "PlayerIdle", SubResource( 11 ) ]
+graph_offset = Vector2( -280.399, 1 )
+
+[sub_resource type="AnimationNodeStateMachinePlayback" id=13]
[node name="Player" type="KinematicBody2D" groups=[
"Player",
+"characters",
]]
z_index = 2
collision_mask = 2
+script = ExtResource( 2 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource( 1 )
+[node name="Area2D" type="Area2D" parent="."]
+
+[node name="CollisionShape2D2" type="CollisionShape2D" parent="Area2D"]
+shape = SubResource( 1 )
+
[node name="SpritePlayer" type="Sprite" parent="."]
texture = ExtResource( 1 )
vframes = 7
hframes = 8
+frame = 1
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
anims/PlayerChop = SubResource( 2 )
@@ -99,14 +114,16 @@ anims/PlayerHit = SubResource( 3 )
anims/PlayerIdle = SubResource( 4 )
[node name="AnimationTree" type="AnimationTree" parent="."]
-tree_root = SubResource( 10 )
+tree_root = SubResource( 12 )
anim_player = NodePath("../AnimationPlayer")
active = true
-parameters/AddHit/add_amount = 0.0
-parameters/OneShotchop/active = false
+parameters/playback = SubResource( 13 )
[node name="RayCast2D" type="RayCast2D" parent="."]
rotation = -1.5708
-collision_mask = 2
+enabled = true
+cast_to = Vector2( 0, 32 )
+collision_mask = 3
[node name="Tween" type="Tween" parent="."]
+[connection signal="area_entered" from="Area2D" to="." method="_on_Area2D_area_entered"]
diff --git a/mono_crash.3c2359124.0.json b/mono_crash.3c2359124.0.json
new file mode 100644
index 0000000..504ae20
--- /dev/null
+++ b/mono_crash.3c2359124.0.json
@@ -0,0 +1,351 @@
+{
+ "protocol_version" : "0.0.5",
+ "configuration" : {
+ "version" : "(6.6.0) ((no/d9001b5)",
+ "tlc" : "__thread",
+ "sigsgev" : "altstack",
+ "notifications" : "epoll",
+ "architecture" : "amd64",
+ "disabled_features" : "none",
+ "smallconfig" : "disabled",
+ "bigarrays" : "disabled",
+ "softdebug" : "enabled",
+ "interpreter" : "enabled",
+ "llvm_support" : "disabled",
+ "suspend" : "preemptive"
+ },
+ "memory" : {
+ "minor_gc_time" : "0",
+ "major_gc_time" : "0",
+ "minor_gc_count" : "0",
+ "major_gc_count" : "0",
+ "major_gc_time_concurrent" : "0"
+ },
+ "threads" : [
+ {
+ "is_managed" : false,
+ "offset_free_hash" : "0x0",
+ "offset_rich_hash" : "0x0",
+ "crashed" : false,
+ "native_thread_id" : "0x7fe594ca7700",
+ "thread_info_addr" : "0x7fe56c000b20",
+ "thread_name" : "Finalizer",
+ "ctx" : {
+ "IP" : "0x7fe59ef356d6",
+ "SP" : "0x7fe594ca6bc0",
+ "BP" : "0x4bed4e0"
+ },
+ "unmanaged_frames" : [
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd01a26",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe96729",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe975d5",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea2257",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd1011f",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7fe59ef37890",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7fe59ef356d6",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7fe59ef357c8",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xdcdd78",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea1a55",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7fe59ef2c6db",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7fe59e4ab88f",
+ "native_offset" : "0x00000"
+ }
+
+ ]
+ },
+ {
+ "is_managed" : true,
+ "offset_free_hash" : "0x3c2359124",
+ "offset_rich_hash" : "0x3c2359317",
+ "crashed" : true,
+ "native_thread_id" : "0x7fe59f3371c0",
+ "thread_info_addr" : "0x6c2d590",
+ "thread_name" : "Godot_v3.2.2-be",
+ "ctx" : {
+ "IP" : "0xe4cde4",
+ "SP" : "0x7fffc18950d0",
+ "BP" : "(nil)"
+ },
+ "managed_frames" : [
+ {
+ "is_managed" : "false",
+ "native_address" : "unregistered"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "4BAF23F5-DE20-4225-B168-6B3C888104EA",
+ "token" : "0x00000",
+ "native_offset" : "0x0",
+ "filename" : "GodotSharp.dll",
+ "sizeofimage" : "0x248000",
+ "timestamp" : "0x0",
+ "il_offset" : "0xffffffff"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "4BAF23F5-DE20-4225-B168-6B3C888104EA",
+ "token" : "0x6000226",
+ "native_offset" : "0x0",
+ "filename" : "GodotSharp.dll",
+ "sizeofimage" : "0x248000",
+ "timestamp" : "0x0",
+ "il_offset" : "0x00026"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "2CB7ADAB-C0B1-4C8A-82EB-205334283DB4",
+ "token" : "0x600002b",
+ "native_offset" : "0x0",
+ "filename" : "Rogue en Godot.dll",
+ "sizeofimage" : "0xa000",
+ "timestamp" : "0x0",
+ "il_offset" : "0x00189"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "46E2FABA-5596-4E57-BC4A-72159B9574B8",
+ "token" : "0x60045f0",
+ "native_offset" : "0x0",
+ "filename" : "mscorlib.dll",
+ "sizeofimage" : "0x472000",
+ "timestamp" : "0x0",
+ "il_offset" : "0x0002c"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "2CB7ADAB-C0B1-4C8A-82EB-205334283DB4",
+ "token" : "0x600001c",
+ "native_offset" : "0x0",
+ "filename" : "Rogue en Godot.dll",
+ "sizeofimage" : "0xa000",
+ "timestamp" : "0x0",
+ "il_offset" : "0x0001a"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "2CB7ADAB-C0B1-4C8A-82EB-205334283DB4",
+ "token" : "0x00000",
+ "native_offset" : "0x0",
+ "filename" : "Rogue en Godot.dll",
+ "sizeofimage" : "0xa000",
+ "timestamp" : "0x0",
+ "il_offset" : "0xffffffff"
+ }
+
+ ],
+ "unmanaged_frames" : [
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd01a26",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe96729",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe975d5",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea238c",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd10d2f",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd10efc",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd039a8",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xc7c211",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe4cde4",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7fe59f13f320",
+ "native_offset" : "0x00000"
+ }
+
+ ]
+},
+{
+ "is_managed" : false,
+ "offset_free_hash" : "0x0",
+ "offset_rich_hash" : "0x0",
+ "crashed" : false,
+ "native_thread_id" : "0x7fe594373700",
+ "thread_info_addr" : "0x7fe560000b20",
+ "thread_name" : "Debugger agent",
+ "ctx" : {
+ "IP" : "0x7fe59ef366d7",
+ "SP" : "0x7fe594372940",
+ "BP" : "(nil)"
+ },
+ "unmanaged_frames" : [
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd01a26",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe96729",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe975d5",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea2257",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd1011f",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7fe59ef37890",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7fe59ef366d7",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd70843",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd829e4",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea1a55",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7fe59ef2c6db",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7fe59e4ab88f",
+ "native_offset" : "0x00000"
+ }
+
+ ]
+}
+]
+}
\ No newline at end of file
diff --git a/mono_crash.3c2359124.1.json b/mono_crash.3c2359124.1.json
new file mode 100644
index 0000000..e45d4b7
--- /dev/null
+++ b/mono_crash.3c2359124.1.json
@@ -0,0 +1,351 @@
+{
+ "protocol_version" : "0.0.5",
+ "configuration" : {
+ "version" : "(6.6.0) ((no/d9001b5)",
+ "tlc" : "__thread",
+ "sigsgev" : "altstack",
+ "notifications" : "epoll",
+ "architecture" : "amd64",
+ "disabled_features" : "none",
+ "smallconfig" : "disabled",
+ "bigarrays" : "disabled",
+ "softdebug" : "enabled",
+ "interpreter" : "enabled",
+ "llvm_support" : "disabled",
+ "suspend" : "preemptive"
+ },
+ "memory" : {
+ "minor_gc_time" : "0",
+ "major_gc_time" : "0",
+ "minor_gc_count" : "0",
+ "major_gc_count" : "0",
+ "major_gc_time_concurrent" : "0"
+ },
+ "threads" : [
+ {
+ "is_managed" : false,
+ "offset_free_hash" : "0x0",
+ "offset_rich_hash" : "0x0",
+ "crashed" : false,
+ "native_thread_id" : "0x7f33a589b700",
+ "thread_info_addr" : "0x7f337c000b20",
+ "thread_name" : "Finalizer",
+ "ctx" : {
+ "IP" : "0x7f33afb296d6",
+ "SP" : "0x7f33a589abc0",
+ "BP" : "0x4bed4e0"
+ },
+ "unmanaged_frames" : [
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd01a26",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe96729",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe975d5",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea2257",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd1011f",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f33afb2b890",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f33afb296d6",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f33afb297c8",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xdcdd78",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea1a55",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f33afb206db",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f33af09f88f",
+ "native_offset" : "0x00000"
+ }
+
+ ]
+ },
+ {
+ "is_managed" : true,
+ "offset_free_hash" : "0x3c2359124",
+ "offset_rich_hash" : "0x3c2359244",
+ "crashed" : true,
+ "native_thread_id" : "0x7f33aff2b1c0",
+ "thread_info_addr" : "0x7eccc30",
+ "thread_name" : "Godot_v3.2.2-be",
+ "ctx" : {
+ "IP" : "0xe4cde4",
+ "SP" : "0x7ffdf31720f0",
+ "BP" : "(nil)"
+ },
+ "managed_frames" : [
+ {
+ "is_managed" : "false",
+ "native_address" : "unregistered"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "4BAF23F5-DE20-4225-B168-6B3C888104EA",
+ "token" : "0x00000",
+ "native_offset" : "0x0",
+ "filename" : "GodotSharp.dll",
+ "sizeofimage" : "0x248000",
+ "timestamp" : "0x0",
+ "il_offset" : "0xffffffff"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "4BAF23F5-DE20-4225-B168-6B3C888104EA",
+ "token" : "0x6000226",
+ "native_offset" : "0x0",
+ "filename" : "GodotSharp.dll",
+ "sizeofimage" : "0x248000",
+ "timestamp" : "0x0",
+ "il_offset" : "0x00026"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "A402D686-8480-45D0-A4A3-D62B78691C98",
+ "token" : "0x600002b",
+ "native_offset" : "0x0",
+ "filename" : "Rogue en Godot.dll",
+ "sizeofimage" : "0xa000",
+ "timestamp" : "0x0",
+ "il_offset" : "0x000b6"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "46E2FABA-5596-4E57-BC4A-72159B9574B8",
+ "token" : "0x60045f0",
+ "native_offset" : "0x0",
+ "filename" : "mscorlib.dll",
+ "sizeofimage" : "0x472000",
+ "timestamp" : "0x0",
+ "il_offset" : "0x0002c"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "A402D686-8480-45D0-A4A3-D62B78691C98",
+ "token" : "0x600001c",
+ "native_offset" : "0x0",
+ "filename" : "Rogue en Godot.dll",
+ "sizeofimage" : "0xa000",
+ "timestamp" : "0x0",
+ "il_offset" : "0x0001a"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "A402D686-8480-45D0-A4A3-D62B78691C98",
+ "token" : "0x00000",
+ "native_offset" : "0x0",
+ "filename" : "Rogue en Godot.dll",
+ "sizeofimage" : "0xa000",
+ "timestamp" : "0x0",
+ "il_offset" : "0xffffffff"
+ }
+
+ ],
+ "unmanaged_frames" : [
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd01a26",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe96729",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe975d5",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea238c",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd10d2f",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd10efc",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd039a8",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xc7c211",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe4cde4",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f33afd33320",
+ "native_offset" : "0x00000"
+ }
+
+ ]
+},
+{
+ "is_managed" : false,
+ "offset_free_hash" : "0x0",
+ "offset_rich_hash" : "0x0",
+ "crashed" : false,
+ "native_thread_id" : "0x7f33a53d3700",
+ "thread_info_addr" : "0x7f3370000b20",
+ "thread_name" : "Debugger agent",
+ "ctx" : {
+ "IP" : "0x7f33afb2a6d7",
+ "SP" : "0x7f33a53d2940",
+ "BP" : "(nil)"
+ },
+ "unmanaged_frames" : [
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd01a26",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe96729",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe975d5",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea2257",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd1011f",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f33afb2b890",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f33afb2a6d7",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd70843",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd829e4",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea1a55",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f33afb206db",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f33af09f88f",
+ "native_offset" : "0x00000"
+ }
+
+ ]
+}
+]
+}
\ No newline at end of file
diff --git a/mono_crash.3c2359124.2.json b/mono_crash.3c2359124.2.json
new file mode 100644
index 0000000..1e69bb9
--- /dev/null
+++ b/mono_crash.3c2359124.2.json
@@ -0,0 +1,351 @@
+{
+ "protocol_version" : "0.0.5",
+ "configuration" : {
+ "version" : "(6.6.0) ((no/d9001b5)",
+ "tlc" : "__thread",
+ "sigsgev" : "altstack",
+ "notifications" : "epoll",
+ "architecture" : "amd64",
+ "disabled_features" : "none",
+ "smallconfig" : "disabled",
+ "bigarrays" : "disabled",
+ "softdebug" : "enabled",
+ "interpreter" : "enabled",
+ "llvm_support" : "disabled",
+ "suspend" : "preemptive"
+ },
+ "memory" : {
+ "minor_gc_time" : "0",
+ "major_gc_time" : "0",
+ "minor_gc_count" : "0",
+ "major_gc_count" : "0",
+ "major_gc_time_concurrent" : "0"
+ },
+ "threads" : [
+ {
+ "is_managed" : true,
+ "offset_free_hash" : "0x3c2359124",
+ "offset_rich_hash" : "0x3c235927c",
+ "crashed" : true,
+ "native_thread_id" : "0x7f16067a21c0",
+ "thread_info_addr" : "0x748b6c0",
+ "thread_name" : "Godot_v3.2.2-be",
+ "ctx" : {
+ "IP" : "0xe4cde4",
+ "SP" : "0x7ffca693eb50",
+ "BP" : "(nil)"
+ },
+ "managed_frames" : [
+ {
+ "is_managed" : "false",
+ "native_address" : "unregistered"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "4BAF23F5-DE20-4225-B168-6B3C888104EA",
+ "token" : "0x00000",
+ "native_offset" : "0x0",
+ "filename" : "GodotSharp.dll",
+ "sizeofimage" : "0x248000",
+ "timestamp" : "0x0",
+ "il_offset" : "0xffffffff"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "4BAF23F5-DE20-4225-B168-6B3C888104EA",
+ "token" : "0x6000226",
+ "native_offset" : "0x0",
+ "filename" : "GodotSharp.dll",
+ "sizeofimage" : "0x248000",
+ "timestamp" : "0x0",
+ "il_offset" : "0x00026"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "C12569B9-C28E-407C-AE23-D7BEA6CF901E",
+ "token" : "0x600002b",
+ "native_offset" : "0x0",
+ "filename" : "Rogue en Godot.dll",
+ "sizeofimage" : "0xa000",
+ "timestamp" : "0x0",
+ "il_offset" : "0x000ee"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "46E2FABA-5596-4E57-BC4A-72159B9574B8",
+ "token" : "0x60045f0",
+ "native_offset" : "0x0",
+ "filename" : "mscorlib.dll",
+ "sizeofimage" : "0x472000",
+ "timestamp" : "0x0",
+ "il_offset" : "0x0002c"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "C12569B9-C28E-407C-AE23-D7BEA6CF901E",
+ "token" : "0x600001c",
+ "native_offset" : "0x0",
+ "filename" : "Rogue en Godot.dll",
+ "sizeofimage" : "0xa000",
+ "timestamp" : "0x0",
+ "il_offset" : "0x0001a"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "C12569B9-C28E-407C-AE23-D7BEA6CF901E",
+ "token" : "0x00000",
+ "native_offset" : "0x0",
+ "filename" : "Rogue en Godot.dll",
+ "sizeofimage" : "0xa000",
+ "timestamp" : "0x0",
+ "il_offset" : "0xffffffff"
+ }
+
+ ],
+ "unmanaged_frames" : [
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd01a26",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe96729",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe975d5",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea238c",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd10d2f",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd10efc",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd039a8",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xc7c211",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe4cde4",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f16065aa320",
+ "native_offset" : "0x00000"
+ }
+
+ ]
+},
+{
+ "is_managed" : false,
+ "offset_free_hash" : "0x0",
+ "offset_rich_hash" : "0x0",
+ "crashed" : false,
+ "native_thread_id" : "0x7f15ddffe700",
+ "thread_info_addr" : "0x7f15d4000b20",
+ "thread_name" : "Finalizer",
+ "ctx" : {
+ "IP" : "0x7f16063a06d6",
+ "SP" : "0x7f15ddffdbc0",
+ "BP" : "0x4bed4e0"
+ },
+ "unmanaged_frames" : [
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd01a26",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe96729",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe975d5",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea2257",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd1011f",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f16063a2890",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f16063a06d6",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f16063a07c8",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xdcdd78",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea1a55",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f16063976db",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f160591688f",
+ "native_offset" : "0x00000"
+ }
+
+ ]
+},
+{
+ "is_managed" : false,
+ "offset_free_hash" : "0x0",
+ "offset_rich_hash" : "0x0",
+ "crashed" : false,
+ "native_thread_id" : "0x7f15dddfd700",
+ "thread_info_addr" : "0x7f15c8000b20",
+ "thread_name" : "Debugger agent",
+ "ctx" : {
+ "IP" : "0x7f16063a16d7",
+ "SP" : "0x7f15dddfc940",
+ "BP" : "(nil)"
+ },
+ "unmanaged_frames" : [
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd01a26",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe96729",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe975d5",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea2257",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd1011f",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f16063a2890",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f16063a16d7",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd70843",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd829e4",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea1a55",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f16063976db",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f160591688f",
+ "native_offset" : "0x00000"
+ }
+
+ ]
+}
+]
+}
\ No newline at end of file
diff --git a/mono_crash.3c2359124.3.json b/mono_crash.3c2359124.3.json
new file mode 100644
index 0000000..cd7837c
--- /dev/null
+++ b/mono_crash.3c2359124.3.json
@@ -0,0 +1,351 @@
+{
+ "protocol_version" : "0.0.5",
+ "configuration" : {
+ "version" : "(6.6.0) ((no/d9001b5)",
+ "tlc" : "__thread",
+ "sigsgev" : "altstack",
+ "notifications" : "epoll",
+ "architecture" : "amd64",
+ "disabled_features" : "none",
+ "smallconfig" : "disabled",
+ "bigarrays" : "disabled",
+ "softdebug" : "enabled",
+ "interpreter" : "enabled",
+ "llvm_support" : "disabled",
+ "suspend" : "preemptive"
+ },
+ "memory" : {
+ "minor_gc_time" : "0",
+ "major_gc_time" : "0",
+ "minor_gc_count" : "0",
+ "major_gc_count" : "0",
+ "major_gc_time_concurrent" : "0"
+ },
+ "threads" : [
+ {
+ "is_managed" : false,
+ "offset_free_hash" : "0x0",
+ "offset_rich_hash" : "0x0",
+ "crashed" : false,
+ "native_thread_id" : "0x7f76c9da7700",
+ "thread_info_addr" : "0x7f76a0000b20",
+ "thread_name" : "Finalizer",
+ "ctx" : {
+ "IP" : "0x7f76d40356d6",
+ "SP" : "0x7f76c9da6bc0",
+ "BP" : "0x4bed4e0"
+ },
+ "unmanaged_frames" : [
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd01a26",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe96729",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe975d5",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea2257",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd1011f",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f76d4037890",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f76d40356d6",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f76d40357c8",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xdcdd78",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea1a55",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f76d402c6db",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f76d35ab88f",
+ "native_offset" : "0x00000"
+ }
+
+ ]
+ },
+ {
+ "is_managed" : true,
+ "offset_free_hash" : "0x3c2359124",
+ "offset_rich_hash" : "0x3c235927c",
+ "crashed" : true,
+ "native_thread_id" : "0x7f76d44371c0",
+ "thread_info_addr" : "0x69b3870",
+ "thread_name" : "Godot_v3.2.2-be",
+ "ctx" : {
+ "IP" : "0xe4cde4",
+ "SP" : "0x7ffe46a674e0",
+ "BP" : "(nil)"
+ },
+ "managed_frames" : [
+ {
+ "is_managed" : "false",
+ "native_address" : "unregistered"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "4BAF23F5-DE20-4225-B168-6B3C888104EA",
+ "token" : "0x00000",
+ "native_offset" : "0x0",
+ "filename" : "GodotSharp.dll",
+ "sizeofimage" : "0x248000",
+ "timestamp" : "0x0",
+ "il_offset" : "0xffffffff"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "4BAF23F5-DE20-4225-B168-6B3C888104EA",
+ "token" : "0x6000226",
+ "native_offset" : "0x0",
+ "filename" : "GodotSharp.dll",
+ "sizeofimage" : "0x248000",
+ "timestamp" : "0x0",
+ "il_offset" : "0x00026"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "C12569B9-C28E-407C-AE23-D7BEA6CF901E",
+ "token" : "0x600002b",
+ "native_offset" : "0x0",
+ "filename" : "Rogue en Godot.dll",
+ "sizeofimage" : "0xa000",
+ "timestamp" : "0x0",
+ "il_offset" : "0x000ee"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "46E2FABA-5596-4E57-BC4A-72159B9574B8",
+ "token" : "0x60045f0",
+ "native_offset" : "0x0",
+ "filename" : "mscorlib.dll",
+ "sizeofimage" : "0x472000",
+ "timestamp" : "0x0",
+ "il_offset" : "0x0002c"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "C12569B9-C28E-407C-AE23-D7BEA6CF901E",
+ "token" : "0x600001c",
+ "native_offset" : "0x0",
+ "filename" : "Rogue en Godot.dll",
+ "sizeofimage" : "0xa000",
+ "timestamp" : "0x0",
+ "il_offset" : "0x0001a"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "C12569B9-C28E-407C-AE23-D7BEA6CF901E",
+ "token" : "0x00000",
+ "native_offset" : "0x0",
+ "filename" : "Rogue en Godot.dll",
+ "sizeofimage" : "0xa000",
+ "timestamp" : "0x0",
+ "il_offset" : "0xffffffff"
+ }
+
+ ],
+ "unmanaged_frames" : [
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd01a26",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe96729",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe975d5",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea238c",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd10d2f",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd10efc",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd039a8",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xc7c211",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe4cde4",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f76d423f320",
+ "native_offset" : "0x00000"
+ }
+
+ ]
+},
+{
+ "is_managed" : false,
+ "offset_free_hash" : "0x0",
+ "offset_rich_hash" : "0x0",
+ "crashed" : false,
+ "native_thread_id" : "0x7f76c83fe700",
+ "thread_info_addr" : "0x7f7694000b20",
+ "thread_name" : "Debugger agent",
+ "ctx" : {
+ "IP" : "0x7f76d40366d7",
+ "SP" : "0x7f76c83fd940",
+ "BP" : "(nil)"
+ },
+ "unmanaged_frames" : [
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd01a26",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe96729",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe975d5",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea2257",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd1011f",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f76d4037890",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f76d40366d7",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd70843",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd829e4",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea1a55",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f76d402c6db",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7f76d35ab88f",
+ "native_offset" : "0x00000"
+ }
+
+ ]
+}
+]
+}
\ No newline at end of file
diff --git a/mono_crash.3c2359124.4.json b/mono_crash.3c2359124.4.json
new file mode 100644
index 0000000..44b3adf
--- /dev/null
+++ b/mono_crash.3c2359124.4.json
@@ -0,0 +1,351 @@
+{
+ "protocol_version" : "0.0.5",
+ "configuration" : {
+ "version" : "(6.6.0) ((no/d9001b5)",
+ "tlc" : "__thread",
+ "sigsgev" : "altstack",
+ "notifications" : "epoll",
+ "architecture" : "amd64",
+ "disabled_features" : "none",
+ "smallconfig" : "disabled",
+ "bigarrays" : "disabled",
+ "softdebug" : "enabled",
+ "interpreter" : "enabled",
+ "llvm_support" : "disabled",
+ "suspend" : "preemptive"
+ },
+ "memory" : {
+ "minor_gc_time" : "0",
+ "major_gc_time" : "0",
+ "minor_gc_count" : "0",
+ "major_gc_count" : "0",
+ "major_gc_time_concurrent" : "0"
+ },
+ "threads" : [
+ {
+ "is_managed" : false,
+ "offset_free_hash" : "0x0",
+ "offset_rich_hash" : "0x0",
+ "crashed" : false,
+ "native_thread_id" : "0x7fe498f7b700",
+ "thread_info_addr" : "0x7fe470000b20",
+ "thread_name" : "Finalizer",
+ "ctx" : {
+ "IP" : "0x7fe4a320a6d6",
+ "SP" : "0x7fe498f7abc0",
+ "BP" : "0x4bed4e0"
+ },
+ "unmanaged_frames" : [
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd01a26",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe96729",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe975d5",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea2257",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd1011f",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7fe4a320c890",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7fe4a320a6d6",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7fe4a320a7c8",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xdcdd78",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea1a55",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7fe4a32016db",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7fe4a278088f",
+ "native_offset" : "0x00000"
+ }
+
+ ]
+ },
+ {
+ "is_managed" : false,
+ "offset_free_hash" : "0x0",
+ "offset_rich_hash" : "0x0",
+ "crashed" : false,
+ "native_thread_id" : "0x7fe498ab4700",
+ "thread_info_addr" : "0x7fe464000b20",
+ "thread_name" : "Debugger agent",
+ "ctx" : {
+ "IP" : "0x7fe4a320b6d7",
+ "SP" : "0x7fe498ab3940",
+ "BP" : "(nil)"
+ },
+ "unmanaged_frames" : [
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd01a26",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe96729",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe975d5",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea2257",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd1011f",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7fe4a320c890",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7fe4a320b6d7",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd70843",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd829e4",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea1a55",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7fe4a32016db",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7fe4a278088f",
+ "native_offset" : "0x00000"
+ }
+
+ ]
+ },
+ {
+ "is_managed" : true,
+ "offset_free_hash" : "0x3c2359124",
+ "offset_rich_hash" : "0x3c235927c",
+ "crashed" : true,
+ "native_thread_id" : "0x7fe4a360c1c0",
+ "thread_info_addr" : "0x7a090a0",
+ "thread_name" : "Godot_v3.2.2-be",
+ "ctx" : {
+ "IP" : "0xe4cde4",
+ "SP" : "0x7ffca3f63900",
+ "BP" : "(nil)"
+ },
+ "managed_frames" : [
+ {
+ "is_managed" : "false",
+ "native_address" : "unregistered"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "4BAF23F5-DE20-4225-B168-6B3C888104EA",
+ "token" : "0x00000",
+ "native_offset" : "0x0",
+ "filename" : "GodotSharp.dll",
+ "sizeofimage" : "0x248000",
+ "timestamp" : "0x0",
+ "il_offset" : "0xffffffff"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "4BAF23F5-DE20-4225-B168-6B3C888104EA",
+ "token" : "0x6000226",
+ "native_offset" : "0x0",
+ "filename" : "GodotSharp.dll",
+ "sizeofimage" : "0x248000",
+ "timestamp" : "0x0",
+ "il_offset" : "0x00026"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "C12569B9-C28E-407C-AE23-D7BEA6CF901E",
+ "token" : "0x600002b",
+ "native_offset" : "0x0",
+ "filename" : "Rogue en Godot.dll",
+ "sizeofimage" : "0xa000",
+ "timestamp" : "0x0",
+ "il_offset" : "0x000ee"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "46E2FABA-5596-4E57-BC4A-72159B9574B8",
+ "token" : "0x60045f0",
+ "native_offset" : "0x0",
+ "filename" : "mscorlib.dll",
+ "sizeofimage" : "0x472000",
+ "timestamp" : "0x0",
+ "il_offset" : "0x0002c"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "C12569B9-C28E-407C-AE23-D7BEA6CF901E",
+ "token" : "0x600001c",
+ "native_offset" : "0x0",
+ "filename" : "Rogue en Godot.dll",
+ "sizeofimage" : "0xa000",
+ "timestamp" : "0x0",
+ "il_offset" : "0x0001a"
+ }
+,
+ {
+ "is_managed" : "true",
+ "guid" : "C12569B9-C28E-407C-AE23-D7BEA6CF901E",
+ "token" : "0x00000",
+ "native_offset" : "0x0",
+ "filename" : "Rogue en Godot.dll",
+ "sizeofimage" : "0xa000",
+ "timestamp" : "0x0",
+ "il_offset" : "0xffffffff"
+ }
+
+ ],
+ "unmanaged_frames" : [
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd01a26",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe96729",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe975d5",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xea238c",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd10d2f",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd10efc",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xd039a8",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xc7c211",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0xe4cde4",
+ "native_offset" : "0x00000"
+ }
+,
+ {
+ "is_managed" : "false",
+ "native_address" : "0x7fe4a3414320",
+ "native_offset" : "0x00000"
+ }
+
+ ]
+}
+]
+}
\ No newline at end of file
diff --git a/project.godot b/project.godot
index 5234188..1b48526 100644
--- a/project.godot
+++ b/project.godot
@@ -24,6 +24,29 @@ config/icon="res://icon.png"
window/size/always_on_top=true
window/stretch/mode="2d"
+[input]
+
+a={
+"deadzone": 0.5,
+"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"unicode":0,"echo":false,"script":null)
+ ]
+}
+d={
+"deadzone": 0.5,
+"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"unicode":0,"echo":false,"script":null)
+ ]
+}
+w={
+"deadzone": 0.5,
+"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"unicode":0,"echo":false,"script":null)
+ ]
+}
+s={
+"deadzone": 0.5,
+"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"unicode":0,"echo":false,"script":null)
+ ]
+}
+
[rendering]
quality/driver/driver_name="GLES2"