71 lines
1.5 KiB
C#
71 lines
1.5 KiB
C#
using Godot;
|
|
|
|
public abstract class GameObject
|
|
{
|
|
public Sector CurrentSector { get; private set; }
|
|
public Vector3 LocalCoordinates;
|
|
public Vector3Dec GlobalCoordinates;
|
|
|
|
public GameObject(Sector sector, Vector3 localCoordinates)
|
|
{
|
|
CurrentSector = sector;
|
|
LocalCoordinates = localCoordinates;
|
|
|
|
GlobalCoordinates = new
|
|
(
|
|
sector.GlobalStartCoordinates.X + (decimal)localCoordinates.X,
|
|
sector.GlobalStartCoordinates.Y + (decimal)localCoordinates.Y,
|
|
sector.GlobalStartCoordinates.Z + (decimal)localCoordinates.Z
|
|
);
|
|
}
|
|
|
|
public GameObject(Sector sector, double localX, double localY, double localZ)
|
|
{
|
|
CurrentSector = sector;
|
|
LocalCoordinates = new(localX, localY, localZ);
|
|
|
|
GlobalCoordinates = new
|
|
(
|
|
sector.GlobalStartCoordinates.X + (decimal)localX,
|
|
sector.GlobalStartCoordinates.Y + (decimal)localY,
|
|
sector.GlobalStartCoordinates.Z + (decimal)localZ
|
|
);
|
|
}
|
|
|
|
public GameObject(Vector3Dec coordinates)
|
|
{
|
|
GlobalCoordinates = coordinates;
|
|
UpdateSector();
|
|
}
|
|
|
|
public GameObject(decimal x, decimal y, decimal z)
|
|
{
|
|
GlobalCoordinates = new(x, y, z);
|
|
UpdateSector();
|
|
}
|
|
|
|
public Vector3 GetSectorCoordinates()
|
|
{
|
|
Vector3Dec relativeSectorCoordinates = GlobalCoordinates - CurrentSector.GlobalStartCoordinates;
|
|
|
|
return relativeSectorCoordinates.ToVector3();
|
|
}
|
|
|
|
public bool IsInSector()
|
|
{
|
|
return Helpers.IsInsideArea(CurrentSector.Size, GetSectorCoordinates());
|
|
}
|
|
|
|
public void UpdateSector()
|
|
{
|
|
|
|
}
|
|
|
|
public virtual void Simulate(double delta)
|
|
{
|
|
if (!IsInSector())
|
|
{
|
|
UpdateSector();
|
|
}
|
|
}
|
|
}
|