Skip to content

Commit

Permalink
add GetAllObjects and GetAllWorldObjects and fix client library (#685)
Browse files Browse the repository at this point in the history
* add GetAllObjects and GetAllWorldObjects

* Updated submodule runtime

* fix generate client library

* Add FreeObjectArray

* Updated submodule runtime
  • Loading branch information
Doxoh committed Sep 5, 2022
1 parent 821be7f commit 33a40e5
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 6 deletions.
7 changes: 3 additions & 4 deletions api/AltV.Net.CApi/Libraries/ClientLibrary.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
using AltV.Net.Elements.Args;
using AltV.Net.Elements.Entities;
using AltV.Net.Native;
// ReSharper disable InconsistentNaming

namespace AltV.Net.CApi.Libraries
{
Expand Down Expand Up @@ -77,7 +76,6 @@ public unsafe interface IClientLibrary
public delegate* unmanaged[Cdecl]<nint, uint, nint> Core_GetMapZoomDataById { get; }
public delegate* unmanaged[Cdecl]<nint, int> Core_GetMsPerGameMinute { get; }
public delegate* unmanaged[Cdecl]<nint, uint*, nint> Core_GetObjects { get; }
public delegate* unmanaged[Cdecl]<nint, uint*, nint> Core_GetWorldObjects { get; }
public delegate* unmanaged[Cdecl]<nint, byte, byte> Core_GetPermissionState { get; }
public delegate* unmanaged[Cdecl]<nint, ushort> Core_GetPing { get; }
public delegate* unmanaged[Cdecl]<nint, Vector2*, void> Core_GetScreenResolution { get; }
Expand All @@ -98,6 +96,7 @@ public unsafe interface IClientLibrary
public delegate* unmanaged[Cdecl]<nint, ulong> Core_GetTotalPacketsSent { get; }
public delegate* unmanaged[Cdecl]<nint, uint> Core_GetVoiceActivationKey { get; }
public delegate* unmanaged[Cdecl]<nint, byte> Core_GetVoiceInputMuted { get; }
public delegate* unmanaged[Cdecl]<nint, uint*, nint> Core_GetWorldObjects { get; }
public delegate* unmanaged[Cdecl]<nint, nint, byte> Core_HasLocalMeta { get; }
public delegate* unmanaged[Cdecl]<nint, byte> Core_IsCamFrozen { get; }
public delegate* unmanaged[Cdecl]<nint, byte> Core_IsConsoleOpen { get; }
Expand Down Expand Up @@ -635,7 +634,6 @@ public unsafe class ClientLibrary : IClientLibrary
public delegate* unmanaged[Cdecl]<nint, uint, nint> Core_GetMapZoomDataById { get; }
public delegate* unmanaged[Cdecl]<nint, int> Core_GetMsPerGameMinute { get; }
public delegate* unmanaged[Cdecl]<nint, uint*, nint> Core_GetObjects { get; }
public delegate* unmanaged[Cdecl]<nint, uint*, nint> Core_GetWorldObjects { get; }
public delegate* unmanaged[Cdecl]<nint, byte, byte> Core_GetPermissionState { get; }
public delegate* unmanaged[Cdecl]<nint, ushort> Core_GetPing { get; }
public delegate* unmanaged[Cdecl]<nint, Vector2*, void> Core_GetScreenResolution { get; }
Expand All @@ -656,6 +654,7 @@ public unsafe class ClientLibrary : IClientLibrary
public delegate* unmanaged[Cdecl]<nint, ulong> Core_GetTotalPacketsSent { get; }
public delegate* unmanaged[Cdecl]<nint, uint> Core_GetVoiceActivationKey { get; }
public delegate* unmanaged[Cdecl]<nint, byte> Core_GetVoiceInputMuted { get; }
public delegate* unmanaged[Cdecl]<nint, uint*, nint> Core_GetWorldObjects { get; }
public delegate* unmanaged[Cdecl]<nint, nint, byte> Core_HasLocalMeta { get; }
public delegate* unmanaged[Cdecl]<nint, byte> Core_IsCamFrozen { get; }
public delegate* unmanaged[Cdecl]<nint, byte> Core_IsConsoleOpen { get; }
Expand Down Expand Up @@ -1193,7 +1192,6 @@ public ClientLibrary(string dllName)
Core_GetMapZoomDataById = (delegate* unmanaged[Cdecl]<nint, uint, nint>) NativeLibrary.GetExport(handle, "Core_GetMapZoomDataById");
Core_GetMsPerGameMinute = (delegate* unmanaged[Cdecl]<nint, int>) NativeLibrary.GetExport(handle, "Core_GetMsPerGameMinute");
Core_GetObjects = (delegate* unmanaged[Cdecl]<nint, uint*, nint>) NativeLibrary.GetExport(handle, "Core_GetObjects");
Core_GetWorldObjects = (delegate* unmanaged[Cdecl]<nint, uint*, nint>) NativeLibrary.GetExport(handle, "Core_GetWorldObjects");
Core_GetPermissionState = (delegate* unmanaged[Cdecl]<nint, byte, byte>) NativeLibrary.GetExport(handle, "Core_GetPermissionState");
Core_GetPing = (delegate* unmanaged[Cdecl]<nint, ushort>) NativeLibrary.GetExport(handle, "Core_GetPing");
Core_GetScreenResolution = (delegate* unmanaged[Cdecl]<nint, Vector2*, void>) NativeLibrary.GetExport(handle, "Core_GetScreenResolution");
Expand All @@ -1214,6 +1212,7 @@ public ClientLibrary(string dllName)
Core_GetTotalPacketsSent = (delegate* unmanaged[Cdecl]<nint, ulong>) NativeLibrary.GetExport(handle, "Core_GetTotalPacketsSent");
Core_GetVoiceActivationKey = (delegate* unmanaged[Cdecl]<nint, uint>) NativeLibrary.GetExport(handle, "Core_GetVoiceActivationKey");
Core_GetVoiceInputMuted = (delegate* unmanaged[Cdecl]<nint, byte>) NativeLibrary.GetExport(handle, "Core_GetVoiceInputMuted");
Core_GetWorldObjects = (delegate* unmanaged[Cdecl]<nint, uint*, nint>) NativeLibrary.GetExport(handle, "Core_GetWorldObjects");
Core_HasLocalMeta = (delegate* unmanaged[Cdecl]<nint, nint, byte>) NativeLibrary.GetExport(handle, "Core_HasLocalMeta");
Core_IsCamFrozen = (delegate* unmanaged[Cdecl]<nint, byte>) NativeLibrary.GetExport(handle, "Core_IsCamFrozen");
Core_IsConsoleOpen = (delegate* unmanaged[Cdecl]<nint, byte>) NativeLibrary.GetExport(handle, "Core_IsConsoleOpen");
Expand Down
3 changes: 3 additions & 0 deletions api/AltV.Net.CApi/Libraries/SharedLibrary.cs
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ public unsafe interface ISharedLibrary
public delegate* unmanaged[Cdecl]<nint, nint, byte> Entity_HasSyncedMetaData { get; }
public delegate* unmanaged[Cdecl]<nint, void> FreeCharArray { get; }
public delegate* unmanaged[Cdecl]<nint, void> FreeMValueConstArray { get; }
public delegate* unmanaged[Cdecl]<nint, void> FreeObjectArray { get; }
public delegate* unmanaged[Cdecl]<nint, void> FreeResourceArray { get; }
public delegate* unmanaged[Cdecl]<nint, void> FreeString { get; }
public delegate* unmanaged[Cdecl]<nint, uint, void> FreeStringArray { get; }
Expand Down Expand Up @@ -412,6 +413,7 @@ public unsafe class SharedLibrary : ISharedLibrary
public delegate* unmanaged[Cdecl]<nint, nint, byte> Entity_HasSyncedMetaData { get; }
public delegate* unmanaged[Cdecl]<nint, void> FreeCharArray { get; }
public delegate* unmanaged[Cdecl]<nint, void> FreeMValueConstArray { get; }
public delegate* unmanaged[Cdecl]<nint, void> FreeObjectArray { get; }
public delegate* unmanaged[Cdecl]<nint, void> FreeResourceArray { get; }
public delegate* unmanaged[Cdecl]<nint, void> FreeString { get; }
public delegate* unmanaged[Cdecl]<nint, uint, void> FreeStringArray { get; }
Expand Down Expand Up @@ -667,6 +669,7 @@ public SharedLibrary(string dllName)
Entity_HasSyncedMetaData = (delegate* unmanaged[Cdecl]<nint, nint, byte>) NativeLibrary.GetExport(handle, "Entity_HasSyncedMetaData");
FreeCharArray = (delegate* unmanaged[Cdecl]<nint, void>) NativeLibrary.GetExport(handle, "FreeCharArray");
FreeMValueConstArray = (delegate* unmanaged[Cdecl]<nint, void>) NativeLibrary.GetExport(handle, "FreeMValueConstArray");
FreeObjectArray = (delegate* unmanaged[Cdecl]<nint, void>) NativeLibrary.GetExport(handle, "FreeObjectArray");
FreeResourceArray = (delegate* unmanaged[Cdecl]<nint, void>) NativeLibrary.GetExport(handle, "FreeResourceArray");
FreeString = (delegate* unmanaged[Cdecl]<nint, void>) NativeLibrary.GetExport(handle, "FreeString");
FreeStringArray = (delegate* unmanaged[Cdecl]<nint, uint, void>) NativeLibrary.GetExport(handle, "FreeStringArray");
Expand Down
4 changes: 3 additions & 1 deletion api/AltV.Net.Client/Alt.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,9 @@ public static bool GetEntityById(ushort id, [MaybeNullWhen(false)] out IEntity e

public static IReadOnlyCollection<IPlayer> GetAllPlayers() => Core.PlayerPool.GetAllEntities();
public static IReadOnlyCollection<IVehicle> GetAllVehicles() => Core.VehiclePool.GetAllEntities();
public static IReadOnlyCollection<IEntity> GetAllEntities() => GetAllPlayers().Concat<IEntity>(GetAllVehicles()).ToList();
public static IReadOnlyCollection<IObject> GetAllObjects() => Core.GetAllObjects();
public static IReadOnlyCollection<IObject> GetAllWorldObjects() => Core.GetAllWorldObjects();
public static IReadOnlyCollection<IEntity> GetAllEntities() => GetAllPlayers().Concat<IEntity>(GetAllVehicles()).Concat(GetAllObjects()).Concat(GetAllWorldObjects()).ToList();

public static void EmitServer(string eventName, params object[] args) => Core.TriggerServerEvent(eventName, args);
public static void EmitClient(string eventName, params object[] args) => Core.TriggerLocalEvent(eventName, args);
Expand Down
30 changes: 30 additions & 0 deletions api/AltV.Net.Client/Core.cs
Original file line number Diff line number Diff line change
Expand Up @@ -538,5 +538,35 @@ public void ClearTimer(uint id)
{
TimerPool.Remove(id);
}

public IReadOnlyCollection<IObject> GetAllObjects()
{
unsafe
{
CheckIfCallIsValid();
uint size = 0;
var ptr = Library.Client.Core_GetObjects(NativePointer, &size);
var data = new IntPtr[size];
Marshal.Copy(ptr, data, 0, (int) size);
var arr = data.Select(e => ObjectPool.GetOrCreate(this, e)).ToArray();
Library.Shared.FreeObjectArray(ptr);
return arr;
}
}

public IReadOnlyCollection<IObject> GetAllWorldObjects()
{
unsafe
{
CheckIfCallIsValid();
uint size = 0;
var ptr = Library.Client.Core_GetWorldObjects(NativePointer, &size);
var data = new IntPtr[size];
Marshal.Copy(ptr, data, 0, (int) size);
var arr = data.Select(e => ObjectPool.GetOrCreate(this, e)).ToArray();
Library.Shared.FreeObjectArray(ptr);
return arr;
}
}
}
}
2 changes: 2 additions & 0 deletions api/AltV.Net.Client/ICore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -158,5 +158,7 @@ public interface ICore : ISharedCore
string FileRead(string path);
byte[] FileReadBinary(string path);
WeaponData GetWeaponDataByWeaponHash(uint weaponHash);
IReadOnlyCollection<IObject> GetAllObjects();
IReadOnlyCollection<IObject> GetAllWorldObjects();
}
}
2 changes: 1 addition & 1 deletion runtime

0 comments on commit 33a40e5

Please sign in to comment.