LADXHD/InGame/GameObjects/Base/CObjects/CBox.cs

71 lines
2 KiB
C#
Raw Normal View History

2023-12-14 22:21:22 +00:00
using ProjectZ.Base;
namespace ProjectZ.InGame.GameObjects.Base.CObjects
{
public class CBox
{
public Box Box;
public float OffsetX;
public float OffsetY;
public float OffsetZ;
private readonly bool _followZ;
public CBox(float posX, float posY, float posZ, float width, float height, float depth)
{
Box = new Box(posX, posY, posZ, width, height, depth);
}
public CBox(CPosition position, float offsetX, float offsetY, float offsetZ, float width, float height, float depth, bool followZ = false)
{
OffsetX = offsetX;
OffsetY = offsetY;
OffsetZ = offsetZ;
Box.Width = width;
Box.Height = height;
Box.Depth = depth;
_followZ = followZ;
Set(position);
}
public CBox(CPosition position, float offsetX, float offsetY, float width, float height, float depth) :
this(position, offsetX, offsetY, 0, width, height, depth)
{ }
public void Set(CPosition position)
{
if (_followZ)
{
position.AddPositionListener(typeof(CBox), UpdateBoxZ);
UpdateBoxZ(position);
}
else
{
position.AddPositionListener(typeof(CBox), UpdateBox);
UpdateBox(position);
}
}
private void UpdateBoxZ(CPosition position)
{
Box = new Box(
position.X + OffsetX,
position.Y + OffsetY - position.Z,
OffsetZ,
Box.Width, Box.Height, Box.Depth);
}
private void UpdateBox(CPosition position)
{
Box = new Box(
position.X + OffsetX,
position.Y + OffsetY,
position.Z + OffsetZ,
Box.Width, Box.Height, Box.Depth);
}
}
}