using Decal.Interop.D3DService;

namespace Decal.Adapter.Wrappers;

public class D3DObj : GenericDisposableWrapper<CD3DObj>
{
	public int Color
	{
		get
		{
			return base.Wrapped.color;
		}
		set
		{
			base.Wrapped.color = value;
		}
	}

	public int Color2
	{
		get
		{
			return base.Wrapped.color2;
		}
		set
		{
			base.Wrapped.color2 = value;
		}
	}

	public bool Autoscale
	{
		get
		{
			return base.Wrapped.autoscale;
		}
		set
		{
			base.Wrapped.autoscale = value;
		}
	}

	public bool DrawBackface
	{
		get
		{
			return base.Wrapped.drawBackface;
		}
		set
		{
			base.Wrapped.drawBackface = value;
		}
	}

	public float HBounce
	{
		get
		{
			return base.Wrapped.hBounce;
		}
		set
		{
			base.Wrapped.hBounce = value;
		}
	}

	public float PBounce
	{
		get
		{
			return base.Wrapped.pBounce;
		}
		set
		{
			base.Wrapped.pBounce = value;
		}
	}

	public float PFade
	{
		get
		{
			return base.Wrapped.pFade;
		}
		set
		{
			base.Wrapped.pFade = value;
		}
	}

	public float POrbit
	{
		get
		{
			return base.Wrapped.pOrbit;
		}
		set
		{
			base.Wrapped.pOrbit = value;
		}
	}

	public float PSpin
	{
		get
		{
			return base.Wrapped.pSpin;
		}
		set
		{
			base.Wrapped.pSpin = value;
		}
	}

	public float ROrbit
	{
		get
		{
			return base.Wrapped.rOrbit;
		}
		set
		{
			base.Wrapped.rOrbit = value;
		}
	}

	public float ScaleX
	{
		get
		{
			return base.Wrapped.scaleX;
		}
		set
		{
			base.Wrapped.scaleX = value;
		}
	}

	public float ScaleY
	{
		get
		{
			return base.Wrapped.scaleY;
		}
		set
		{
			base.Wrapped.scaleY = value;
		}
	}

	public float ScaleZ
	{
		get
		{
			return base.Wrapped.scaleZ;
		}
		set
		{
			base.Wrapped.scaleZ = value;
		}
	}

	public bool Visible
	{
		get
		{
			return base.Wrapped.visible;
		}
		set
		{
			base.Wrapped.visible = value;
		}
	}

	public float AnimationPhaseOffset
	{
		get
		{
			return base.Wrapped.AnimationPhaseOffset;
		}
		set
		{
			base.Wrapped.AnimationPhaseOffset = value;
		}
	}

	public D3DObj(CD3DObj obj)
		: base(obj)
	{
	}

	protected override void Dispose(bool userCalled)
	{
		base.Dispose(userCalled);
	}

	public void Scale(float factor)
	{
		base.Wrapped.SetScale(factor);
	}

	public void OrientToCamera(bool verticalTilt)
	{
		base.Wrapped.OrientToCamera(verticalTilt);
	}

	public void OrientToCoords(float lat, float lng, float alt, bool verticalTilt)
	{
		base.Wrapped.OrientToCoords(lat, lng, alt, verticalTilt);
	}

	public void OrientToObject(int guid, float fractHeight, bool verticalTilt)
	{
		base.Wrapped.OrientToObject(guid, fractHeight, verticalTilt);
	}

	public void OrientToPlayer(bool verticalTilt)
	{
		base.Wrapped.OrientToPlayer(verticalTilt);
	}

	public void Anchor(float lat, float lng, float alt)
	{
		base.Wrapped.AnchorToCoords(lat, lng, alt);
	}

	public void Anchor(int id, float height, float dx, float dy, float dz)
	{
		base.Wrapped.AnchorToObject(id, height, dx, dy, dz);
	}

	public void SetText(string text)
	{
		SetText(D3DTextType.Text2D, text, "Arial", 0);
	}

	public void SetText(string text, string fontName)
	{
		SetText(D3DTextType.Text2D, text, fontName, 0);
	}

	public void SetText(string text, string fontName, int options)
	{
		SetText(D3DTextType.Text2D, text, fontName, options);
	}

	public void SetText(D3DTextType type, string text, string fontName, int options)
	{
		switch (type)
		{
		case D3DTextType.Text2D:
			base.Wrapped.Set2DText(text, fontName, options);
			break;
		case D3DTextType.Text3D:
			base.Wrapped.Set3DText(text, fontName, options);
			break;
		}
	}

	public void SetIcon(int id)
	{
		base.Wrapped.SetIcon(id);
	}

	public void SetIcon(string fileName)
	{
		base.Wrapped.SetIconFromFile(fileName);
	}

	public void SetIcon(int module, int res)
	{
		base.Wrapped.SetIconFromResource(module, res);
	}

	public void SetShape(D3DShape shape)
	{
		base.Wrapped.SetShape((eShape)shape);
	}

	public void SetShape(string fileName)
	{
		base.Wrapped.SetShapeFromFile(fileName);
	}

	public void SetShape(int module, int res)
	{
		base.Wrapped.SetShapeFromResource(module, res);
	}
}
