64 lines
1.3 KiB
C#
64 lines
1.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using ReallifeGamemode.Server.Common;
|
|
using ReallifeGamemode.Server.Core.API;
|
|
|
|
namespace ReallifeGamemode.Server.Core.RageMP
|
|
{
|
|
public class RageEntity : IEntity
|
|
{
|
|
|
|
private readonly GTANetworkAPI.Entity entity;
|
|
|
|
public Position Position
|
|
{
|
|
get => entity.Position.ToPosition();
|
|
set => entity.Position = value.ToVector3();
|
|
}
|
|
public Position Rotation
|
|
{
|
|
get => entity.Rotation.ToPosition();
|
|
set => entity.Rotation = value.ToVector3();
|
|
}
|
|
|
|
public ulong Handle => entity.Handle.Value;
|
|
|
|
public double Heading
|
|
{
|
|
get => Rotation.Z;
|
|
set
|
|
{
|
|
var rotation = Rotation;
|
|
rotation.Z = value;
|
|
Rotation = rotation;
|
|
}
|
|
}
|
|
|
|
public RageEntity(GTANetworkAPI.Entity rageEntity)
|
|
{
|
|
entity = rageEntity;
|
|
}
|
|
|
|
public void Remove()
|
|
{
|
|
entity.Delete();
|
|
}
|
|
|
|
public void SetSharedData<T>(string key, T data)
|
|
{
|
|
entity.SetSharedData(key, data.SerializeJson());
|
|
}
|
|
|
|
public T GetSharedData<T>(string key, T fallback)
|
|
{
|
|
if (!entity.HasSharedData(key))
|
|
{
|
|
return fallback;
|
|
}
|
|
|
|
return (entity.GetSharedData<string>(key)).DeserializeJson<T>();
|
|
}
|
|
}
|
|
}
|