Protfolio-Emanuel-Polsky / Assets / _Project / Code / PathFinding / Components / Point.cs
Point.cs
Raw
using TMPro;
using Unity.Collections;
using Unity.Collections.LowLevel.Unsafe;
using Unity.Entities;
using Unity.Mathematics;
using UnityEngine;

namespace GarmentButton.PathFinding
{
    public struct Point
    {
        public short X;
        public short Y;
        public short Z;

    }
    public struct PointPathBlobAsset
    {
        public BlobArray<Point> Array;
    }
    public struct PathNode
    {
        public int2 Position;
        public int Height;
        public int CurrentIndex;
        public int CameFromIndex;
        public int GCost;
        public int HCost;
        public int FCost;

        public void CalculateFCost()
        {
            FCost = GCost + HCost;
        }

    }
    public struct PathElement : IBufferElementData
    {
        public ushort IndexGrid;
    }
    public struct LastPointPath : IComponentData
    {
        public ushort Value;
    }
    public struct CheckStuck : IComponentData
    {
        public int Index;
        public float Time;
    }
    public struct EndPointPath : IComponentData, IEnableableComponent
    {
        public float3 Position;
    }
    public struct EndPointIndexPath : IComponentData
    {
        public ushort Value;
    }

    public struct GridData : IComponentData
    {
        public int2 GridSize;
        public float CellSize;
        public float2 Center;
    }
    public enum GroundType : byte
    {
        Air,
        NearGround,
        Ground,
        MoveAble,
        Blocked,
        StaticBlocked,
        Null,
        
    }
    public struct SurfaceType : IComponentData
    {
        public GroundType Value;
    }
    public struct Grid : IComponentData
    {
        public BlobAssetReference<PointPathBlobAsset> Value;
    }
    public struct GridAdditionalData : IComponentData
    {
        public NativeArray<GroundType> Types;
    }
    public struct UpdatePoints : IComponentData
    {
        public NativeArray<ushort> Indexes;
    }

    public struct UpdateCheck : IComponentData { }
    public struct CastTag : IComponentData { }
    public struct CreatedGrid : IComponentData { };

    public struct RequireUpdatePosition : IComponentData
    {
        public float2 Value;
    }
    
    
    #region Debug
    public struct DebugObject : IComponentData
    {
        public UnityObjectRef<GameObject> GameObject;
    }
    public class DebugTextMesh : IComponentData
    {
        public TextMeshPro[] Text;
    }
    public struct PointsData : IBufferElementData
    {
        public int Cost;
    }
    public struct DebugIndex : IComponentData
    {
        public int Index;
    }
    public struct DebugAll : IComponentData { }

    public struct DebugPath : IComponentData { }
    public struct DebugGrid : IComponentData { }

    public struct MouseSelectEndPosition : IComponentData { }

    #endregion
}