Update to Techblox 2022.02.17.10.32
This commit is contained in:
parent
7b2ac973d8
commit
c6dae688fe
13 changed files with 253 additions and 119 deletions
|
@ -22,7 +22,7 @@ namespace TechbloxModdingAPI.App
|
||||||
harmony.Patch(AccessTools.Method(type, "StartProtectedSession"), new HarmonyMethod(((AntiAnticheatDelegate) AntiAntiCheat).Method));
|
harmony.Patch(AccessTools.Method(type, "StartProtectedSession"), new HarmonyMethod(((AntiAnticheatDelegate) AntiAntiCheat).Method));
|
||||||
harmony.Patch(AccessTools.Method(type, "StopProtectedSession"), new HarmonyMethod(((AntiAnticheatDelegateBool) AntiAntiCheat).Method));
|
harmony.Patch(AccessTools.Method(type, "StopProtectedSession"), new HarmonyMethod(((AntiAnticheatDelegateBool) AntiAntiCheat).Method));
|
||||||
harmony.Patch(AccessTools.Method("Techblox.Services.Eos.Anticheat.Client.EosGetPendingMessagesToSendServiceRequest:Execute"), new HarmonyMethod(((AntiAnticheatDelegateTask)AntiAntiCheatTask).Method));
|
harmony.Patch(AccessTools.Method("Techblox.Services.Eos.Anticheat.Client.EosGetPendingMessagesToSendServiceRequest:Execute"), new HarmonyMethod(((AntiAnticheatDelegateTask)AntiAntiCheatTask).Method));
|
||||||
harmony.Patch(AccessTools.Method("Techblox.Anticheat.Client.Engines.ShowFeedbackDialogEngine:PollAnticheatStatus"), new HarmonyMethod(((AntiAnticheatDelegateTask)AntiAntiCheatTask).Method));
|
harmony.Patch(AccessTools.Method("Techblox.Anticheat.Client.Engines.ProcessEACViolationEngine:PollAnticheatStatus"), new HarmonyMethod(((AntiAnticheatDelegateTask)AntiAntiCheatTask).Method));
|
||||||
harmony.Patch(AccessTools.Method(typeof(AnticheatClientCompositionRoot), "ClientComposeTimeRunning"), new HarmonyMethod(((Func<bool>)AntiAntiCheat).Method));
|
harmony.Patch(AccessTools.Method(typeof(AnticheatClientCompositionRoot), "ClientComposeTimeRunning"), new HarmonyMethod(((Func<bool>)AntiAntiCheat).Method));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -140,9 +140,8 @@ namespace TechbloxModdingAPI.App
|
||||||
{
|
{
|
||||||
var allBlocks = entitiesDB.QueryEntities<BlockTagEntityStruct>();
|
var allBlocks = entitiesDB.QueryEntities<BlockTagEntityStruct>();
|
||||||
List<EGID> blockEGIDs = new List<EGID>();
|
List<EGID> blockEGIDs = new List<EGID>();
|
||||||
foreach (var (blocks, _) in allBlocks)
|
foreach (var ((buffer, count), _) in allBlocks)
|
||||||
{
|
{
|
||||||
var (buffer, count) = blocks.ToBuffer();
|
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
uint dbid;
|
uint dbid;
|
||||||
|
|
|
@ -55,13 +55,12 @@ namespace TechbloxModdingAPI.App
|
||||||
|
|
||||||
public Game[] GetMyGames()
|
public Game[] GetMyGames()
|
||||||
{
|
{
|
||||||
EntityCollection<MyGameDataEntityStruct> mgsevs = entitiesDB.QueryEntities<MyGameDataEntityStruct>(MyGamesScreenExclusiveGroups.MyGames);
|
var (mgsevs, count) = entitiesDB.QueryEntities<MyGameDataEntityStruct>(MyGamesScreenExclusiveGroups.MyGames);
|
||||||
var mgsevsB = mgsevs.ToBuffer().buffer;
|
Game[] games = new Game[count];
|
||||||
Game[] games = new Game[mgsevs.count];
|
for (int i = 0; i < count; i++)
|
||||||
for (int i = 0; i < mgsevs.count; i++)
|
|
||||||
{
|
{
|
||||||
Utility.Logging.MetaDebugLog($"Found game named {mgsevsB[i].GameName}");
|
Utility.Logging.MetaDebugLog($"Found game named {mgsevs[i].GameName}");
|
||||||
games[i] = new Game(mgsevsB[i].ID);
|
games[i] = new Game(mgsevs[i].ID);
|
||||||
}
|
}
|
||||||
return games;
|
return games;
|
||||||
}
|
}
|
||||||
|
@ -84,14 +83,13 @@ namespace TechbloxModdingAPI.App
|
||||||
|
|
||||||
public uint HighestID()
|
public uint HighestID()
|
||||||
{
|
{
|
||||||
EntityCollection<MyGameDataEntityStruct> games = entitiesDB.QueryEntities<MyGameDataEntityStruct>(MyGamesScreenExclusiveGroups.MyGames);
|
var (games, count) = entitiesDB.QueryEntities<MyGameDataEntityStruct>(MyGamesScreenExclusiveGroups.MyGames);
|
||||||
var gamesB = games.ToBuffer().buffer;
|
|
||||||
uint max = 0;
|
uint max = 0;
|
||||||
for (int i = 0; i < games.count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
if (gamesB[i].ID.entityID > max)
|
if (games[i].ID.entityID > max)
|
||||||
{
|
{
|
||||||
max = gamesB[i].ID.entityID;
|
max = games[i].ID.entityID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return max;
|
return max;
|
||||||
|
|
|
@ -11,8 +11,7 @@ using Unity.Mathematics;
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
using RobocraftX.PilotSeat;
|
using RobocraftX.PilotSeat;
|
||||||
using RobocraftX.Rendering;
|
using RobocraftX.Rendering;
|
||||||
using Techblox.BlockLabels;
|
using Techblox.BlockLabelsServer;
|
||||||
|
|
||||||
using TechbloxModdingAPI.Blocks;
|
using TechbloxModdingAPI.Blocks;
|
||||||
using TechbloxModdingAPI.Blocks.Engines;
|
using TechbloxModdingAPI.Blocks.Engines;
|
||||||
using TechbloxModdingAPI.Tests;
|
using TechbloxModdingAPI.Tests;
|
||||||
|
|
|
@ -278,7 +278,40 @@ namespace TechbloxModdingAPI.Blocks
|
||||||
GravtracTextblock,
|
GravtracTextblock,
|
||||||
HauserTextblock,
|
HauserTextblock,
|
||||||
TechnopollasTextblock,
|
TechnopollasTextblock,
|
||||||
BitBlock = 385,
|
DiagonalTrackTile = 381,
|
||||||
Timer
|
DiagonalTrackTile2,
|
||||||
|
DiagonalTransitionTile,
|
||||||
|
SplitLane,
|
||||||
|
BitBlock,
|
||||||
|
Timer,
|
||||||
|
CityNightAtmosphere,
|
||||||
|
FloodLight,
|
||||||
|
SoccerBall,
|
||||||
|
CircularWallLight,
|
||||||
|
DirtToGrassTransitionTile = 393,
|
||||||
|
DirtToGrassTransitionInnerTile,
|
||||||
|
DirtToGrassTransitionOuterTile,
|
||||||
|
DirtToGrassTransitionHillTile,
|
||||||
|
DirtToGrassTransitionRoadTile,
|
||||||
|
DirtHill2 = 399,
|
||||||
|
DirtHill3,
|
||||||
|
DirtInnerCorner2 = 402,
|
||||||
|
DirtInnerCorner3,
|
||||||
|
DirtOuterCorner2 = 405,
|
||||||
|
DirtOuterCorner3,
|
||||||
|
SmallGrassQuarterTile = 411,
|
||||||
|
HUDTimer = 413,
|
||||||
|
CentreHUD,
|
||||||
|
Checkpoint,
|
||||||
|
ScoreboardHUD,
|
||||||
|
GameplaySFX,
|
||||||
|
SpawnPoint,
|
||||||
|
AreaSensor,
|
||||||
|
WorldResetter,
|
||||||
|
SmallJet,
|
||||||
|
MediumJet,
|
||||||
|
LargeJet,
|
||||||
|
DistanceSensor,
|
||||||
|
Stabilizer,
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -31,5 +31,6 @@ namespace TechbloxModdingAPI.Blocks
|
||||||
SteelBodyworkPaintedChipped,
|
SteelBodyworkPaintedChipped,
|
||||||
WoodPainted,
|
WoodPainted,
|
||||||
WoodRoughGrungy,
|
WoodRoughGrungy,
|
||||||
|
Boundary,
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -45,22 +45,20 @@ namespace TechbloxModdingAPI.Blocks.Engines
|
||||||
|
|
||||||
public Block[] GetConnectedBlocks(EGID blockID)
|
public Block[] GetConnectedBlocks(EGID blockID)
|
||||||
{
|
{
|
||||||
if (!BlockExists(blockID)) return new Block[0];
|
if (!BlockExists(blockID)) return Array.Empty<Block>();
|
||||||
Stack<EGID> cubeStack = new Stack<EGID>();
|
Stack<EGID> cubeStack = new Stack<EGID>();
|
||||||
FasterList<EGID> cubes = new FasterList<EGID>(10);
|
FasterList<EGID> cubes = new FasterList<EGID>(10);
|
||||||
var coll = entitiesDB.QueryEntities<GridConnectionsEntityStruct>();
|
var coll = entitiesDB.QueryEntities<GridConnectionsEntityStruct>();
|
||||||
foreach (var (ecoll, _) in coll)
|
foreach (var ((ecoll, count), _) in coll)
|
||||||
{
|
{
|
||||||
var ecollB = ecoll.ToBuffer();
|
for(int i = 0; i < count; i++)
|
||||||
for(int i = 0; i < ecoll.count; i++)
|
|
||||||
{
|
{
|
||||||
ref var conn = ref ecollB.buffer[i];
|
ecoll[i].isProcessed = false;
|
||||||
conn.isProcessed = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ConnectedCubesUtility.TreeTraversal.GetConnectedCubes(entitiesDB, blockID, cubeStack, cubes,
|
ConnectedCubesUtility.TreeTraversal.GetConnectedCubes(entitiesDB, blockID, cubeStack, cubes,
|
||||||
(in GridConnectionsEntityStruct g) => { return false; });
|
(in GridConnectionsEntityStruct _) => false);
|
||||||
|
|
||||||
var ret = new Block[cubes.count];
|
var ret = new Block[cubes.count];
|
||||||
for (int i = 0; i < cubes.count; i++)
|
for (int i = 0; i < cubes.count; i++)
|
||||||
|
@ -197,11 +195,11 @@ namespace TechbloxModdingAPI.Blocks.Engines
|
||||||
|
|
||||||
public SimBody[] GetConnectedSimBodies(uint id)
|
public SimBody[] GetConnectedSimBodies(uint id)
|
||||||
{
|
{
|
||||||
var joints = entitiesDB.QueryEntities<JointEntityStruct>(MachineSimulationGroups.JOINTS_GROUP).ToBuffer();
|
var (joints, count) = entitiesDB.QueryEntities<JointEntityStruct>(MachineSimulationGroups.JOINTS_GROUP);
|
||||||
var list = new FasterList<SimBody>(4);
|
var list = new FasterList<SimBody>(4);
|
||||||
for (int i = 0; i < joints.count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
ref var joint = ref joints.buffer[i];
|
ref var joint = ref joints[i];
|
||||||
if (joint.isBroken) continue;
|
if (joint.isBroken) continue;
|
||||||
if (joint.connectedEntityA == id) list.Add(new SimBody(joint.connectedEntityB));
|
if (joint.connectedEntityA == id) list.Add(new SimBody(joint.connectedEntityB));
|
||||||
else if (joint.connectedEntityB == id) list.Add(new SimBody(joint.connectedEntityA));
|
else if (joint.connectedEntityB == id) list.Add(new SimBody(joint.connectedEntityA));
|
||||||
|
@ -214,12 +212,11 @@ namespace TechbloxModdingAPI.Blocks.Engines
|
||||||
{
|
{
|
||||||
var groups = entitiesDB.QueryEntities<GridConnectionsEntityStruct>();
|
var groups = entitiesDB.QueryEntities<GridConnectionsEntityStruct>();
|
||||||
var bodies = new HashSet<uint>();
|
var bodies = new HashSet<uint>();
|
||||||
foreach (var (coll, _) in groups)
|
foreach (var ((coll, count), _) in groups)
|
||||||
{
|
{
|
||||||
var array = coll.ToBuffer().buffer;
|
for (var index = 0; index < count; index++)
|
||||||
for (var index = 0; index < array.capacity; index++)
|
|
||||||
{
|
{
|
||||||
var conn = array[index];
|
var conn = coll[index];
|
||||||
if (conn.clusterId == cid)
|
if (conn.clusterId == cid)
|
||||||
bodies.Add(conn.machineRigidBodyId);
|
bodies.Add(conn.machineRigidBodyId);
|
||||||
}
|
}
|
||||||
|
@ -243,12 +240,11 @@ namespace TechbloxModdingAPI.Blocks.Engines
|
||||||
public Cluster GetCluster(uint sbid)
|
public Cluster GetCluster(uint sbid)
|
||||||
{
|
{
|
||||||
var groups = entitiesDB.QueryEntities<GridConnectionsEntityStruct>();
|
var groups = entitiesDB.QueryEntities<GridConnectionsEntityStruct>();
|
||||||
foreach (var (coll, _) in groups)
|
foreach (var ((coll, count), _) in groups)
|
||||||
{
|
{
|
||||||
var array = coll.ToBuffer().buffer;
|
for (var index = 0; index < count; index++)
|
||||||
for (var index = 0; index < array.capacity; index++)
|
|
||||||
{
|
{
|
||||||
var conn = array[index];
|
var conn = coll[index];
|
||||||
//Static blocks don't have a cluster ID but the cluster destruction manager should have one
|
//Static blocks don't have a cluster ID but the cluster destruction manager should have one
|
||||||
if (conn.machineRigidBodyId == sbid && conn.clusterId != uint.MaxValue)
|
if (conn.machineRigidBodyId == sbid && conn.clusterId != uint.MaxValue)
|
||||||
return new Cluster(conn.clusterId);
|
return new Cluster(conn.clusterId);
|
||||||
|
@ -262,12 +258,11 @@ namespace TechbloxModdingAPI.Blocks.Engines
|
||||||
{
|
{
|
||||||
var groups = entitiesDB.QueryEntities<GridConnectionsEntityStruct>();
|
var groups = entitiesDB.QueryEntities<GridConnectionsEntityStruct>();
|
||||||
var set = new HashSet<Block>();
|
var set = new HashSet<Block>();
|
||||||
foreach (var (coll, _) in groups)
|
foreach (var ((coll, count), _) in groups)
|
||||||
{
|
{
|
||||||
var array = coll.ToBuffer().buffer;
|
for (var index = 0; index < count; index++)
|
||||||
for (var index = 0; index < array.capacity; index++)
|
|
||||||
{
|
{
|
||||||
var conn = array[index];
|
var conn = coll[index];
|
||||||
if (conn.machineRigidBodyId == sbid)
|
if (conn.machineRigidBodyId == sbid)
|
||||||
set.Add(Block.New(conn.ID));
|
set.Add(Block.New(conn.ID));
|
||||||
}
|
}
|
||||||
|
@ -282,27 +277,5 @@ namespace TechbloxModdingAPI.Blocks.Engines
|
||||||
return entitiesDB;
|
return entitiesDB;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
[HarmonyPatch]
|
|
||||||
public static class RenderingPatch
|
|
||||||
{
|
|
||||||
private static ComputeRenderingEntitiesMatricesEngine Engine;
|
|
||||||
|
|
||||||
public static void Postfix(ComputeRenderingEntitiesMatricesEngine __instance)
|
|
||||||
{
|
|
||||||
Engine = __instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static MethodBase TargetMethod()
|
|
||||||
{
|
|
||||||
return typeof(ComputeRenderingEntitiesMatricesEngine).GetConstructors()[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void UpdateBlocks()
|
|
||||||
{
|
|
||||||
var data = new RenderingDataStruct();
|
|
||||||
Engine.Add(ref data, new EGID(0, CommonExclusiveGroups.BUTTON_BLOCK_GROUP));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -116,9 +116,8 @@ namespace TechbloxModdingAPI.Blocks.Engines
|
||||||
|
|
||||||
public bool SetSignal(uint signalID, float signal, bool input = true)
|
public bool SetSignal(uint signalID, float signal, bool input = true)
|
||||||
{
|
{
|
||||||
var array = GetSignalStruct(signalID, out uint index, input);
|
var (array, count) = GetSignalStruct(signalID, out uint index, input);
|
||||||
var arrayB = array.ToBuffer();
|
if (count > 0) array[index].valueAsFloat = signal;
|
||||||
if (array.count > 0) arrayB.buffer[index].valueAsFloat = signal;
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,11 +129,10 @@ namespace TechbloxModdingAPI.Blocks.Engines
|
||||||
|
|
||||||
public float AddSignal(uint signalID, float signal, bool clamp = true, bool input = true)
|
public float AddSignal(uint signalID, float signal, bool clamp = true, bool input = true)
|
||||||
{
|
{
|
||||||
var array = GetSignalStruct(signalID, out uint index, input);
|
var (array, count) = GetSignalStruct(signalID, out uint index, input);
|
||||||
var arrayB = array.ToBuffer();
|
if (count > 0)
|
||||||
if (array.count > 0)
|
|
||||||
{
|
{
|
||||||
ref var channelData = ref arrayB.buffer[index];
|
ref var channelData = ref array[index];
|
||||||
channelData.valueAsFloat += signal;
|
channelData.valueAsFloat += signal;
|
||||||
if (clamp)
|
if (clamp)
|
||||||
{
|
{
|
||||||
|
@ -162,9 +160,8 @@ namespace TechbloxModdingAPI.Blocks.Engines
|
||||||
|
|
||||||
public float GetSignal(uint signalID, bool input = true)
|
public float GetSignal(uint signalID, bool input = true)
|
||||||
{
|
{
|
||||||
var array = GetSignalStruct(signalID, out uint index, input);
|
var (array, count) = GetSignalStruct(signalID, out uint index, input);
|
||||||
var arrayB = array.ToBuffer();
|
return count > 0 ? array[index].valueAsFloat : 0f;
|
||||||
return array.count > 0 ? arrayB.buffer[index].valueAsFloat : 0f;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public uint[] GetSignalIDs(EGID blockID, bool input = true)
|
public uint[] GetSignalIDs(EGID blockID, bool input = true)
|
||||||
|
@ -237,15 +234,14 @@ namespace TechbloxModdingAPI.Blocks.Engines
|
||||||
|
|
||||||
public ref WireEntityStruct MatchPortToWire(PortEntityStruct port, EGID blockID, out bool exists)
|
public ref WireEntityStruct MatchPortToWire(PortEntityStruct port, EGID blockID, out bool exists)
|
||||||
{
|
{
|
||||||
var wires = entitiesDB.QueryEntities<WireEntityStruct>(NamedExclusiveGroup<BuildModeWiresGroups.WiresGroup>.Group);
|
var (wires, count) = entitiesDB.QueryEntities<WireEntityStruct>(NamedExclusiveGroup<BuildModeWiresGroups.WiresGroup>.Group);
|
||||||
var wiresB = wires.ToBuffer().buffer;
|
for (uint i = 0; i < count; i++)
|
||||||
for (uint i = 0; i < wires.count; i++)
|
|
||||||
{
|
{
|
||||||
if ((wiresB[i].destinationPortUsage == port.usage && wiresB[i].destinationBlockEGID == blockID)
|
if ((wires[i].destinationPortUsage == port.usage && wires[i].destinationBlockEGID == blockID)
|
||||||
|| (wiresB[i].sourcePortUsage == port.usage && wiresB[i].sourceBlockEGID == blockID))
|
|| (wires[i].sourcePortUsage == port.usage && wires[i].sourceBlockEGID == blockID))
|
||||||
{
|
{
|
||||||
exists = true;
|
exists = true;
|
||||||
return ref wiresB[i];
|
return ref wires[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exists = false;
|
exists = false;
|
||||||
|
@ -279,20 +275,19 @@ namespace TechbloxModdingAPI.Blocks.Engines
|
||||||
endPorts = new EGID[] {new EGID(ports.firstInputID + endPort, NamedExclusiveGroup<BuildModeWiresGroups.InputPortsGroup>.Group) };
|
endPorts = new EGID[] {new EGID(ports.firstInputID + endPort, NamedExclusiveGroup<BuildModeWiresGroups.InputPortsGroup>.Group) };
|
||||||
}
|
}
|
||||||
|
|
||||||
EntityCollection<WireEntityStruct> wires = entitiesDB.QueryEntities<WireEntityStruct>(NamedExclusiveGroup<BuildModeWiresGroups.WiresGroup>.Group);
|
var (wires, count) = entitiesDB.QueryEntities<WireEntityStruct>(NamedExclusiveGroup<BuildModeWiresGroups.WiresGroup>.Group);
|
||||||
var wiresB = wires.ToBuffer().buffer;
|
|
||||||
for (int endIndex = 0; endIndex < endPorts.Length; endIndex++)
|
for (int endIndex = 0; endIndex < endPorts.Length; endIndex++)
|
||||||
{
|
{
|
||||||
PortEntityStruct endPES = entitiesDB.QueryEntity<PortEntityStruct>(endPorts[endIndex]);
|
PortEntityStruct endPES = entitiesDB.QueryEntity<PortEntityStruct>(endPorts[endIndex]);
|
||||||
for (int startIndex = 0; startIndex < startPorts.Length; startIndex++)
|
for (int startIndex = 0; startIndex < startPorts.Length; startIndex++)
|
||||||
{
|
{
|
||||||
PortEntityStruct startPES = entitiesDB.QueryEntity<PortEntityStruct>(startPorts[startIndex]);
|
PortEntityStruct startPES = entitiesDB.QueryEntity<PortEntityStruct>(startPorts[startIndex]);
|
||||||
for (int w = 0; w < wires.count; w++)
|
for (int w = 0; w < count; w++)
|
||||||
{
|
{
|
||||||
if ((wiresB[w].destinationPortUsage == endPES.usage && wiresB[w].destinationBlockEGID == endBlock)
|
if ((wires[w].destinationPortUsage == endPES.usage && wires[w].destinationBlockEGID == endBlock)
|
||||||
&& (wiresB[w].sourcePortUsage == startPES.usage && wiresB[w].sourceBlockEGID == startBlock))
|
&& (wires[w].sourcePortUsage == startPES.usage && wires[w].sourceBlockEGID == startBlock))
|
||||||
{
|
{
|
||||||
return wiresB[w].ID;
|
return wires[w].ID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -304,22 +299,20 @@ namespace TechbloxModdingAPI.Blocks.Engines
|
||||||
public OptionalRef<ChannelDataStruct> GetChannelDataStruct(EGID portID)
|
public OptionalRef<ChannelDataStruct> GetChannelDataStruct(EGID portID)
|
||||||
{
|
{
|
||||||
var port = GetPort(portID);
|
var port = GetPort(portID);
|
||||||
var channels = entitiesDB.QueryEntities<ChannelDataStruct>(NamedExclusiveGroup<BuildModeWiresGroups.ChannelDataGroup>.Group);
|
var (channels, count) = entitiesDB.QueryEntities<ChannelDataStruct>(NamedExclusiveGroup<BuildModeWiresGroups.ChannelDataGroup>.Group);
|
||||||
var channelsB = channels.ToBuffer();
|
return port.firstChannelIndexCachedInSim < count
|
||||||
return port.firstChannelIndexCachedInSim < channels.count
|
? new OptionalRef<ChannelDataStruct>(channels, port.firstChannelIndexCachedInSim)
|
||||||
? new OptionalRef<ChannelDataStruct>(channelsB.buffer, port.firstChannelIndexCachedInSim)
|
|
||||||
: default;
|
: default;
|
||||||
}
|
}
|
||||||
|
|
||||||
public EGID[] GetElectricBlocks()
|
public EGID[] GetElectricBlocks()
|
||||||
{
|
{
|
||||||
var res = new FasterList<EGID>();
|
var res = new FasterList<EGID>();
|
||||||
foreach (var (coll, _) in entitiesDB.QueryEntities<BlockPortsStruct>())
|
foreach (var ((coll, count), _) in entitiesDB.QueryEntities<BlockPortsStruct>())
|
||||||
{
|
{
|
||||||
var collB = coll.ToBuffer();
|
for (int i = 0; i < count; i++)
|
||||||
for (int i = 0; i < coll.count; i++)
|
|
||||||
{
|
{
|
||||||
ref BlockPortsStruct s = ref collB.buffer[i];
|
ref BlockPortsStruct s = ref coll[i];
|
||||||
res.Add(s.ID);
|
res.Add(s.ID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -356,13 +349,12 @@ namespace TechbloxModdingAPI.Blocks.Engines
|
||||||
private T[] Search<T>(ExclusiveGroup group, Func<T, bool> isMatch) where T : unmanaged, IEntityComponent
|
private T[] Search<T>(ExclusiveGroup group, Func<T, bool> isMatch) where T : unmanaged, IEntityComponent
|
||||||
{
|
{
|
||||||
FasterList<T> results = new FasterList<T>();
|
FasterList<T> results = new FasterList<T>();
|
||||||
EntityCollection<T> components = entitiesDB.QueryEntities<T>(group);
|
var (components, count) = entitiesDB.QueryEntities<T>(group);
|
||||||
var componentsB = components.ToBuffer();
|
for (uint i = 0; i < count; i++)
|
||||||
for (uint i = 0; i < components.count; i++)
|
|
||||||
{
|
{
|
||||||
if (isMatch(componentsB.buffer[i]))
|
if (isMatch(components[i]))
|
||||||
{
|
{
|
||||||
results.Add(componentsB.buffer[i]);
|
results.Add(components[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return results.ToArray();
|
return results.ToArray();
|
||||||
|
|
|
@ -4,17 +4,18 @@ using RobocraftX.SaveAndLoad;
|
||||||
using Svelto.ECS;
|
using Svelto.ECS;
|
||||||
|
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
|
using RobocraftX.StateSync;
|
||||||
|
|
||||||
namespace TechbloxModdingAPI.Persistence
|
namespace TechbloxModdingAPI.Persistence
|
||||||
{
|
{
|
||||||
[HarmonyPatch(typeof(SaveAndLoadCompositionRoot), "ServerCompose")]
|
[HarmonyPatch(typeof(SaveAndLoadCompositionRoot), "ClientComposeTimeStopped")]
|
||||||
class SaveAndLoadCompositionRootPatch
|
class SaveAndLoadCompositionRootPatch
|
||||||
{
|
{
|
||||||
public static EnginesRoot currentEnginesRoot;
|
public static EnginesRoot currentEnginesRoot;
|
||||||
|
|
||||||
public static void Prefix(EnginesRoot enginesRoot)
|
public static void Prefix(StateSyncRegistrationHelper stateSyncHelper)
|
||||||
{
|
{
|
||||||
currentEnginesRoot = enginesRoot;
|
currentEnginesRoot = stateSyncHelper.enginesRoot;
|
||||||
//SerializerManager.RegisterSerializers(enginesRoot);
|
//SerializerManager.RegisterSerializers(enginesRoot);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,10 +50,10 @@ namespace TechbloxModdingAPI.Players
|
||||||
public uint GetLocalPlayer()
|
public uint GetLocalPlayer()
|
||||||
{
|
{
|
||||||
if (!isReady) return uint.MaxValue;
|
if (!isReady) return uint.MaxValue;
|
||||||
var localPlayers = entitiesDB.QueryEntities<PlayerIDStruct>(PlayersExclusiveGroups.LocalPlayers).ToBuffer();
|
var (localPlayers, count) = entitiesDB.QueryEntities<PlayerIDStruct>(PlayersExclusiveGroups.LocalPlayers);
|
||||||
if (localPlayers.count > 0)
|
if (count > 0)
|
||||||
{
|
{
|
||||||
return localPlayers.buffer[0].ID.entityID;
|
return localPlayers[0].ID.entityID;
|
||||||
}
|
}
|
||||||
return uint.MaxValue;
|
return uint.MaxValue;
|
||||||
}
|
}
|
||||||
|
@ -61,10 +61,10 @@ namespace TechbloxModdingAPI.Players
|
||||||
public uint GetRemotePlayer()
|
public uint GetRemotePlayer()
|
||||||
{
|
{
|
||||||
if (!isReady) return uint.MaxValue;
|
if (!isReady) return uint.MaxValue;
|
||||||
var localPlayers = entitiesDB.QueryEntities<PlayerIDStruct>(PlayersExclusiveGroups.RemotePlayers).ToBuffer();
|
var (localPlayers, count) = entitiesDB.QueryEntities<PlayerIDStruct>(PlayersExclusiveGroups.RemotePlayers);
|
||||||
if (localPlayers.count > 0)
|
if (count > 0)
|
||||||
{
|
{
|
||||||
return localPlayers.buffer[0].ID.entityID;
|
return localPlayers[0].ID.entityID;
|
||||||
}
|
}
|
||||||
return uint.MaxValue;
|
return uint.MaxValue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
|
using RobocraftX.Schedulers;
|
||||||
using Svelto.Tasks;
|
using Svelto.Tasks;
|
||||||
using Svelto.Tasks.ExtraLean;
|
using Svelto.Tasks.ExtraLean;
|
||||||
using Svelto.Tasks.Unity.Internal;
|
using Svelto.Tasks.Unity.Internal;
|
||||||
|
|
||||||
namespace TechbloxModdingAPI.Tasks
|
namespace TechbloxModdingAPI.Tasks
|
||||||
{
|
{
|
||||||
public class OnGuiRunner : BaseRunner<ExtraLeanSveltoTask<IEnumerator>>
|
public class OnGuiRunner : SteppableRunner<ExtraLeanSveltoTask<IEnumerator>>
|
||||||
{
|
{
|
||||||
public OnGuiRunner(string name, uint runningOrder = 0)
|
public OnGuiRunner(string name, uint runningOrder = 0)
|
||||||
: base(name)
|
: base(name)
|
||||||
|
|
|
@ -26,16 +26,9 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!--Start Dependencies-->
|
<!--Start Dependencies-->
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="IllusionInjector">
|
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\IllusionInjector.dll</HintPath>
|
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\IllusionInjector.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="IllusionPlugin">
|
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\IllusionPlugin.dll</HintPath>
|
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\IllusionPlugin.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Analytics">
|
<Reference Include="Analytics">
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Analytics.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Analytics.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Analytics.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Analytics.dll</HintPath>
|
||||||
|
@ -356,6 +349,14 @@
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Havok.Physics.Hybrid.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Havok.Physics.Hybrid.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Havok.Physics.Hybrid.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Havok.Physics.Hybrid.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="IllusionInjector">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\IllusionInjector.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\IllusionInjector.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="IllusionPlugin">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\IllusionPlugin.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\IllusionPlugin.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="JWT">
|
<Reference Include="JWT">
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\JWT.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\JWT.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\JWT.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\JWT.dll</HintPath>
|
||||||
|
@ -660,6 +661,14 @@
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.AtmosphereBlock.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.AtmosphereBlock.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.AtmosphereBlock.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.AtmosphereBlock.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Techblox.AudioBlocks">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.AudioBlocks.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.AudioBlocks.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Techblox.AudioBlocksClient">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.AudioBlocksClient.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.AudioBlocksClient.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="Techblox.AutoForward">
|
<Reference Include="Techblox.AutoForward">
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.AutoForward.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.AutoForward.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.AutoForward.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.AutoForward.dll</HintPath>
|
||||||
|
@ -680,6 +689,14 @@
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.BlockLabels.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.BlockLabels.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.BlockLabels.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.BlockLabels.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Techblox.BlockLabelsServer">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.BlockLabelsServer.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.BlockLabelsServer.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Techblox.Blocks.Connections">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Blocks.Connections.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Blocks.Connections.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="Techblox.Blocks.LightBlock">
|
<Reference Include="Techblox.Blocks.LightBlock">
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Blocks.LightBlock.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Blocks.LightBlock.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Blocks.LightBlock.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Blocks.LightBlock.dll</HintPath>
|
||||||
|
@ -696,6 +713,22 @@
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Camera.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Camera.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Camera.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Camera.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Techblox.CentreHUDBlock">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.CentreHUDBlock.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.CentreHUDBlock.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Techblox.CentreHUDGUI">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.CentreHUDGUI.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.CentreHUDGUI.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Techblox.CheckpointBlock">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.CheckpointBlock.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.CheckpointBlock.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Techblox.CheckpointBlockClient">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.CheckpointBlockClient.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.CheckpointBlockClient.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="Techblox.Common.Audio">
|
<Reference Include="Techblox.Common.Audio">
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Common.Audio.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Common.Audio.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Common.Audio.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Common.Audio.dll</HintPath>
|
||||||
|
@ -704,6 +737,10 @@
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.ContextSensitiveTextHint.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.ContextSensitiveTextHint.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.ContextSensitiveTextHint.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.ContextSensitiveTextHint.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Techblox.DistanceSensorBlock">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.DistanceSensorBlock.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.DistanceSensorBlock.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="Techblox.ECSResourceManagers">
|
<Reference Include="Techblox.ECSResourceManagers">
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.ECSResourceManagers.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.ECSResourceManagers.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.ECSResourceManagers.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.ECSResourceManagers.dll</HintPath>
|
||||||
|
@ -728,6 +765,46 @@
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.EnvironmentBlocks.SimulationWorldEnvironment.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.EnvironmentBlocks.SimulationWorldEnvironment.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.EnvironmentBlocks.SimulationWorldEnvironment.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.EnvironmentBlocks.SimulationWorldEnvironment.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Techblox.Gameplay.Client">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Gameplay.Client.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Gameplay.Client.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Techblox.Gameplay">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Gameplay.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Gameplay.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Techblox.Gameplay.GameState.Client">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Gameplay.GameState.Client.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Gameplay.GameState.Client.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Techblox.Gameplay.GameState">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Gameplay.GameState.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Gameplay.GameState.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Techblox.Gameplay.PlayerGameplayDetails">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Gameplay.PlayerGameplayDetails.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Gameplay.PlayerGameplayDetails.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Techblox.Gameplay.Score">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Gameplay.Score.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Gameplay.Score.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Techblox.Gameplay.Spawning">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Gameplay.Spawning.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Gameplay.Spawning.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Techblox.Gameplay.Teams">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Gameplay.Teams.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Gameplay.Teams.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Techblox.Gameplay.WorldResetting.Client">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Gameplay.WorldResetting.Client.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Gameplay.WorldResetting.Client.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Techblox.Gameplay.WorldResetting">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Gameplay.WorldResetting.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Gameplay.WorldResetting.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="Techblox.GameSelection">
|
<Reference Include="Techblox.GameSelection">
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.GameSelection.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.GameSelection.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.GameSelection.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.GameSelection.dll</HintPath>
|
||||||
|
@ -832,6 +909,18 @@
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.InputCapture.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.InputCapture.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.InputCapture.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.InputCapture.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Techblox.JetBlock">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.JetBlock.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.JetBlock.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Techblox.JetBlockClient">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.JetBlockClient.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.JetBlockClient.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Techblox.MachineProcessingService">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.MachineProcessingService.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.MachineProcessingService.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="Techblox.MachineSimulationPreprocessing">
|
<Reference Include="Techblox.MachineSimulationPreprocessing">
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.MachineSimulationPreprocessing.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.MachineSimulationPreprocessing.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.MachineSimulationPreprocessing.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.MachineSimulationPreprocessing.dll</HintPath>
|
||||||
|
@ -840,6 +929,10 @@
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.MachineSpawning.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.MachineSpawning.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.MachineSpawning.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.MachineSpawning.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Techblox.MachineVelocityCameraEffects">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.MachineVelocityCameraEffects.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.MachineVelocityCameraEffects.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="Techblox.Matchmaking">
|
<Reference Include="Techblox.Matchmaking">
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Matchmaking.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Matchmaking.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Matchmaking.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Matchmaking.dll</HintPath>
|
||||||
|
@ -848,6 +941,10 @@
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Multiplayer.UsernameMessages.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Multiplayer.UsernameMessages.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Multiplayer.UsernameMessages.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Multiplayer.UsernameMessages.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Techblox.Particles">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Particles.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Particles.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="Techblox.PlayUX">
|
<Reference Include="Techblox.PlayUX">
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.PlayUX.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.PlayUX.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.PlayUX.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.PlayUX.dll</HintPath>
|
||||||
|
@ -884,6 +981,14 @@
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.SaveGamesConversion.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.SaveGamesConversion.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.SaveGamesConversion.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.SaveGamesConversion.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Techblox.ScoreHUDBlock">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.ScoreHUDBlock.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.ScoreHUDBlock.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Techblox.ScoreHUDGUI">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.ScoreHUDGUI.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.ScoreHUDGUI.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="Techblox.Server">
|
<Reference Include="Techblox.Server">
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Server.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Server.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Server.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Server.dll</HintPath>
|
||||||
|
@ -932,6 +1037,22 @@
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.SignalHandling.Common.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.SignalHandling.Common.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.SignalHandling.Common.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.SignalHandling.Common.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Techblox.SpawnBlock.Client">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.SpawnBlock.Client.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.SpawnBlock.Client.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Techblox.SpawnBlock.Server">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.SpawnBlock.Server.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.SpawnBlock.Server.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Techblox.StabilizerBlock">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.StabilizerBlock.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.StabilizerBlock.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Techblox.StabilizerBlockClient">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.StabilizerBlockClient.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.StabilizerBlockClient.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="Techblox.SwitchAnimation">
|
<Reference Include="Techblox.SwitchAnimation">
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.SwitchAnimation.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.SwitchAnimation.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.SwitchAnimation.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.SwitchAnimation.dll</HintPath>
|
||||||
|
@ -944,10 +1065,18 @@
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.TimerBlock.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.TimerBlock.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.TimerBlock.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.TimerBlock.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Techblox.TriggerBlock">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.TriggerBlock.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.TriggerBlock.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="Techblox.WheelRigBlock">
|
<Reference Include="Techblox.WheelRigBlock">
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Techblox.WheelRigBlock.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.WheelRigBlock.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.WheelRigBlock.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.WheelRigBlock.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Techblox.WorldResetterBlock">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Techblox.WorldResetterBlock.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.WorldResetterBlock.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="UniTask.Addressables">
|
<Reference Include="UniTask.Addressables">
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\UniTask.Addressables.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\UniTask.Addressables.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\UniTask.Addressables.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\UniTask.Addressables.dll</HintPath>
|
||||||
|
@ -1052,6 +1181,10 @@
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Unity.Platforms.Common.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Unity.Platforms.Common.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Unity.Platforms.Common.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Unity.Platforms.Common.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Unity.Profiling.Core">
|
||||||
|
<HintPath>..\ref\Techblox_Data\Managed\Unity.Profiling.Core.dll</HintPath>
|
||||||
|
<HintPath>..\..\ref\Techblox_Data\Managed\Unity.Profiling.Core.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="Unity.Properties">
|
<Reference Include="Unity.Properties">
|
||||||
<HintPath>..\ref\Techblox_Data\Managed\Unity.Properties.dll</HintPath>
|
<HintPath>..\ref\Techblox_Data\Managed\Unity.Properties.dll</HintPath>
|
||||||
<HintPath>..\..\ref\Techblox_Data\Managed\Unity.Properties.dll</HintPath>
|
<HintPath>..\..\ref\Techblox_Data\Managed\Unity.Properties.dll</HintPath>
|
||||||
|
|
|
@ -1,13 +1,17 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using DataLoader;
|
||||||
using TechbloxModdingAPI.App;
|
using TechbloxModdingAPI.App;
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
using IllusionInjector;
|
using IllusionInjector;
|
||||||
// test
|
// test
|
||||||
using RobocraftX.FrontEnd;
|
using RobocraftX.FrontEnd;
|
||||||
|
using ServiceLayer;
|
||||||
using Unity.Mathematics;
|
using Unity.Mathematics;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using Svelto.Tasks;
|
using Svelto.Tasks;
|
||||||
|
@ -257,7 +261,7 @@ namespace TechbloxModdingAPI.Tests
|
||||||
/*((FasterList<GuiInputMap.GuiInputMapElement>)AccessTools.Property(typeof(GuiInputMap), "GuiInputsButtonDown").GetValue(null))
|
/*((FasterList<GuiInputMap.GuiInputMapElement>)AccessTools.Property(typeof(GuiInputMap), "GuiInputsButtonDown").GetValue(null))
|
||||||
.Add(new GuiInputMap.GuiInputMapElement(RewiredConsts.Action.ToggleCommandLine, GuiIn))*/
|
.Add(new GuiInputMap.GuiInputMapElement(RewiredConsts.Action.ToggleCommandLine, GuiIn))*/
|
||||||
|
|
||||||
/*Game.Enter += (sender, e) =>
|
Game.Enter += (sender, e) =>
|
||||||
{
|
{
|
||||||
ushort lastKey = ushort.MaxValue;
|
ushort lastKey = ushort.MaxValue;
|
||||||
foreach (var kv in FullGameFields._dataDb.GetValues<CubeListData>()
|
foreach (var kv in FullGameFields._dataDb.GetValues<CubeListData>()
|
||||||
|
@ -281,8 +285,8 @@ namespace TechbloxModdingAPI.Tests
|
||||||
Console.WriteLine($"{name}{(currentKey != lastKey + 1 ? $" = {currentKey}" : "")},");
|
Console.WriteLine($"{name}{(currentKey != lastKey + 1 ? $" = {currentKey}" : "")},");
|
||||||
lastKey = currentKey;
|
lastKey = currentKey;
|
||||||
}
|
}
|
||||||
};*/
|
};
|
||||||
/*Game.Enter += (sender, e) =>
|
Game.Enter += (sender, e) =>
|
||||||
{
|
{
|
||||||
ushort lastKey = ushort.MaxValue;
|
ushort lastKey = ushort.MaxValue;
|
||||||
Console.WriteLine("Materials:\n" + FullGameFields._dataDb.GetValues<MaterialPropertiesData>()
|
Console.WriteLine("Materials:\n" + FullGameFields._dataDb.GetValues<MaterialPropertiesData>()
|
||||||
|
@ -295,7 +299,7 @@ namespace TechbloxModdingAPI.Tests
|
||||||
return result;
|
return result;
|
||||||
})
|
})
|
||||||
.Aggregate((a, b) => a + "\n" + b));
|
.Aggregate((a, b) => a + "\n" + b));
|
||||||
};*/
|
};
|
||||||
|
|
||||||
CommandBuilder.Builder("takeScreenshot", "Enables the screenshot taker")
|
CommandBuilder.Builder("takeScreenshot", "Enables the screenshot taker")
|
||||||
.Action(() =>
|
.Action(() =>
|
||||||
|
|
Loading…
Reference in a new issue