Begin updating to Techblox 2022.04.28.14.02

Updated project generator script to always order assemblies (it didn't do that for me on Linux) and to fix minor issues
This commit is contained in:
Norbi Peti 2022-04-29 02:07:46 +02:00
parent a610623644
commit dfe1bfb504
No known key found for this signature in database
GPG key ID: DBA4C4549A927E56
7 changed files with 144 additions and 47 deletions

View file

@ -5,7 +5,7 @@ from pathlib import Path, PurePath
import re
import os
DLL_EXCLUSIONS_REGEX = r"(System|Microsoft|Mono|IronPython|DiscordRPC)\."
DLL_EXCLUSIONS_REGEX = r"(System|Microsoft|Mono|IronPython|DiscordRPC|IllusionInjector|IllusionPlugin|netstandard)\."
def getAssemblyReferences(path):
asmDir = Path(path)
@ -15,10 +15,12 @@ def getAssemblyReferences(path):
addedPath = "../"
asmDir = Path(addedPath + path)
for child in asmDir.iterdir():
if child.is_file() and re.search(DLL_EXCLUSIONS_REGEX, str(child), re.I) is None and str(child).lower().endswith(".dll"):
if child.is_file() and re.search(DLL_EXCLUSIONS_REGEX, str(child)) is None and str(child).lower().endswith(".dll"):
childstr = str(child)
childstr = os.path.relpath(childstr, addedPath).replace("\\", "/")
result.append(childstr)
result.sort(key=str.lower)
result = [path + "/IllusionInjector.dll", path + "/IllusionPlugin.dll"] + result # Always put it on top
return result
def buildReferencesXml(path):
@ -51,7 +53,7 @@ if __name__ == "__main__":
if depsStart is None or depsEnd is None:
print("Unable to find dependency XML comments, aborting!")
exit(1)
newFileStr = fileStr[:depsStart.start()] + "\n" + asmXml + "\n" + fileStr[depsEnd.end() + 1:]
newFileStr = fileStr[:depsStart.start() - 1] + "\n" + asmXml + "\n" + fileStr[depsEnd.end() + 1:]
with open("../TechbloxModdingAPI/TechbloxModdingAPI.csproj", "w") as xmlFile:
print("Writing Assembly references")
xmlFile.write(newFileStr)

View file

@ -1,11 +1,9 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using HarmonyLib;
using Gamecraft.ColourPalette;
using Gamecraft.TimeRunning;
using Gamecraft.Wires;
using RobocraftX.Blocks;
using RobocraftX.Common;
@ -59,6 +57,7 @@ namespace TechbloxModdingAPI.Blocks.Engines
}
}
//TODO: GetConnectedCubesUtility
ConnectedCubesUtility.TreeTraversal.GetConnectedCubes(entitiesDB, blockID, cubeStack, cubes,
(in GridConnectionsEntityStruct _) => false);

View file

@ -18,7 +18,7 @@ using Svelto.ECS.DataStructures;
using Svelto.ECS.EntityStructs;
using Svelto.ECS.Native;
using Svelto.ECS.Serialization;
using Techblox.Blocks;
using Techblox.Blocks.Connections;
using TechbloxModdingAPI.Engines;
using TechbloxModdingAPI.Utility;
using Unity.Collections;
@ -48,7 +48,8 @@ namespace TechbloxModdingAPI.Blocks.Engines
private static readonly MethodInfo SerializeGhostBlueprint =
AccessTools.Method(SerializeGhostBlueprintType, "SerializeClipboardGhostEntities");
private static NativeEntityRemove nativeRemove;
private static NativeEntityRemove nativeBlockRemove;
private static NativeEntityRemove nativeConnectionRemove;
private static MachineGraphConnectionEntityFactory connectionFactory;
private static IEntityFunctions entityFunctions;
private static ClipboardSerializationDataResourceManager clipboardManager;
@ -88,8 +89,8 @@ namespace TechbloxModdingAPI.Blocks.Engines
public void RemoveBlockGroup(int id)
{
BlockGroupUtility.RemoveAllBlocksInBlockGroup(id, entitiesDB, removedConnections, nativeRemove,
connectionFactory, default).Complete();
BlockGroupUtility.RemoveAllBlocksInBlockGroup(id, entitiesDB, removedConnections, nativeBlockRemove,
nativeConnectionRemove, connectionFactory, default).Complete();
}
public int CreateBlockGroup(float3 position, quaternion rotation)
@ -339,7 +340,8 @@ namespace TechbloxModdingAPI.Blocks.Engines
public static void Prefix(IEntityFunctions entityFunctions,
MachineGraphConnectionEntityFactory machineGraphConnectionEntityFactory)
{
nativeRemove = entityFunctions.ToNativeRemove<BlockEntityDescriptor>("GCAPI" + nameof(BlueprintEngine));
nativeBlockRemove = entityFunctions.ToNativeRemove<BlockEntityDescriptor>("TBAPI" + nameof(BlueprintEngine));
nativeConnectionRemove = entityFunctions.ToNativeRemove<MachineConnectionEntityDescriptor>("TBAPI" + nameof(BlueprintEngine));
connectionFactory = machineGraphConnectionEntityFactory;
BlueprintEngine.entityFunctions = entityFunctions;
}

View file

@ -1,32 +1,43 @@
using System.Reflection;
using Gamecraft.Blocks.BlockGroups;
using HarmonyLib;
using RobocraftX.Blocks;
using RobocraftX.Common;
using Svelto.Common;
using RobocraftX.GroupTags;
using RobocraftX.StateSync;
using Svelto.ECS;
using Svelto.ECS.Native;
using Techblox.Blocks.Connections;
using Unity.Collections;
using Unity.Jobs;
using Allocator = Unity.Collections.Allocator;
using TechbloxModdingAPI.Engines;
using TechbloxModdingAPI.Utility;
namespace TechbloxModdingAPI.Blocks.Engines
{
public class RemovalEngine : IApiEngine
public class RemovalEngine : IApiEngine, IDeterministicTimeStopped
{
private static IEntityFunctions _entityFunctions;
private static MachineGraphConnectionEntityFactory _connectionFactory;
private NativeHashSet<ulong> removedConnections = new(2000, Allocator.Persistent);
public bool RemoveBlock(EGID target)
{
if (!entitiesDB.Exists<MachineGraphConnectionsEntityStruct>(target))
return false;
var connections = entitiesDB.QueryEntity<MachineGraphConnectionsEntityStruct>(target);
var groups = entitiesDB.FindGroups<MachineGraphConnectionsEntityStruct>();
using var connStructMapper = //The allocator needs to be persistent because that's what is used in the Dispose() method
entitiesDB.QueryNativeMappedEntities<MachineGraphConnectionsEntityStruct>(groups, Allocator.Persistent);
for (int i = connections.connections.Count<MachineConnectionStruct>() - 1; i >= 0; i--)
_connectionFactory.RemoveConnection(connections, i, connStructMapper);
using var connStructMapper =
entitiesDB.QueryNativeMappedEntities<MachineGraphConnectionsEntityStruct>(GroupTag<BLOCK_TAG>.Groups,
Svelto.Common.Allocator.Temp);
if (entitiesDB.TryQueryNativeMappedEntities<MachineConnectionComponent>(
ConnectionsExclusiveGroups.MACHINE_CONNECTION_GROUP, out var mapper))
{
BlockGroupUtility.RemoveBlockConnections(target, removedConnections, _connectionFactory,
connStructMapper, mapper, entitiesDB.GetEntityReferenceMap(), _entityFunctions);
}
_entityFunctions.RemoveEntity<BlockEntityDescriptor>(target);
return true;
}
@ -39,9 +50,11 @@ namespace TechbloxModdingAPI.Blocks.Engines
public void Dispose()
{
removedConnections.Dispose();
}
public string Name { get; } = "TechbloxModdingAPIRemovalGameEngine";
public string Name => "TechbloxModdingAPIRemovalGameEngine";
public string name => Name;
public bool isRemovable => false;
@ -61,5 +74,11 @@ namespace TechbloxModdingAPI.Blocks.Engines
return AccessTools.TypeByName("RobocraftX.CR.MachineEditing.RemoveBlockEngine").GetConstructors()[0];
}
}
public JobHandle DeterministicStep(in float deltaTime, JobHandle inputDeps)
{
removedConnections.Clear();
return default;
}
}
}

View file

@ -1,7 +1,5 @@
using Gamecraft.Damage;
using RobocraftX.Common;
using Svelto.ECS;
using Techblox.Physics;
using Svelto.ECS;
using Techblox.TimeRunning.Clusters;
namespace TechbloxModdingAPI
{
@ -15,26 +13,26 @@ namespace TechbloxModdingAPI
{
}
public Cluster(uint id) : this(new EGID(id, CommonExclusiveGroups.SIMULATION_CLUSTERS_GROUP))
public Cluster(uint id) : this(new EGID(id, ClustersExclusiveGroups.SIMULATION_CLUSTERS_GROUP))
{
}
public float InitialHealth
public float InitialHealth //TODO
{
get => Block.BlockEngine.GetBlockInfo<HealthEntityComponent>(this).initialHealth;
set => Block.BlockEngine.GetBlockInfo<HealthEntityComponent>(this).initialHealth = value;
get => 0f;
set { }
}
public float CurrentHealth
{
get => Block.BlockEngine.GetBlockInfo<HealthEntityComponent>(this).currentHealth;
set => Block.BlockEngine.GetBlockInfo<HealthEntityComponent>(this).currentHealth = value;
get => 0f;
set { }
}
public float HealthMultiplier
{
get => Block.BlockEngine.GetBlockInfo<HealthEntityComponent>(this).healthMultiplier;
set => Block.BlockEngine.GetBlockInfo<HealthEntityComponent>(this).healthMultiplier = value;
get => 0f;
set { }
}
/// <summary>

View file

@ -6,6 +6,7 @@ using UnityEngine;
using Gamecraft.Damage;
using RobocraftX.Common;
using RobocraftX.Physics;
using Techblox.TimeRunning.Clusters;
namespace TechbloxModdingAPI
{
@ -20,7 +21,7 @@ namespace TechbloxModdingAPI
/// </summary>
public Cluster Cluster => cluster ??= clusterId == uint.MaxValue // Return cluster or if it's null then set it
? Block.BlockEngine.GetCluster(Id.entityID) // If we don't have a clusterId set then get it from the game
: GetInstance(new EGID(clusterId, CommonExclusiveGroups.SIMULATION_CLUSTERS_GROUP),
: GetInstance(new EGID(clusterId, ClustersExclusiveGroups.SIMULATION_CLUSTERS_GROUP),
egid => new Cluster(egid)); // Otherwise get the cluster from the ID
private Cluster cluster;
@ -82,7 +83,7 @@ namespace TechbloxModdingAPI
public float3 CenterOfMass
{
get => Block.BlockEngine.GetBlockInfo<MassEntityStruct>(this).centreOfMass;
get => 0f; //TODO
//set => GetStruct().physicsMass.CenterOfMass = value;
}
@ -93,20 +94,20 @@ namespace TechbloxModdingAPI
public float InitialHealth
{
get => Block.BlockEngine.GetBlockInfo<HealthEntityComponent>(this).initialHealth;
set => Block.BlockEngine.GetBlockInfo<HealthEntityComponent>(this).initialHealth = value;
get => 0f;
set { }
}
public float CurrentHealth
{
get => Block.BlockEngine.GetBlockInfo<HealthEntityComponent>(this).currentHealth;
set => Block.BlockEngine.GetBlockInfo<HealthEntityComponent>(this).currentHealth = value;
get => 0f;
set { }
}
public float HealthMultiplier
{
get => Block.BlockEngine.GetBlockInfo<HealthEntityComponent>(this).healthMultiplier;
set => Block.BlockEngine.GetBlockInfo<HealthEntityComponent>(this).healthMultiplier = value;
get => 0f;
set { }
}
/// <summary>

View file

@ -415,6 +415,10 @@
<HintPath>..\ref\Techblox_Data\Managed\RobocraftX.GUI.PauseMenu.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\RobocraftX.GUI.PauseMenu.dll</HintPath>
</Reference>
<Reference Include="RobocraftX.GUI.QuitConfirmation">
<HintPath>..\ref\Techblox_Data\Managed\RobocraftX.GUI.QuitConfirmation.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\RobocraftX.GUI.QuitConfirmation.dll</HintPath>
</Reference>
<Reference Include="RobocraftX.GUI.ScaleGhost">
<HintPath>..\ref\Techblox_Data\Managed\RobocraftX.GUI.ScaleGhost.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\RobocraftX.GUI.ScaleGhost.dll</HintPath>
@ -591,10 +595,6 @@
<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.Debug.Client.Monobehaviours">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Blocks.Debug.Client.Monobehaviours.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Blocks.Debug.Client.Monobehaviours.dll</HintPath>
</Reference>
<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>
@ -603,6 +603,10 @@
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Building.Rules.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Building.Rules.dll</HintPath>
</Reference>
<Reference Include="Techblox.Building.Shift">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Building.Shift.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Building.Shift.dll</HintPath>
</Reference>
<Reference Include="Techblox.BuildingDrone">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.BuildingDrone.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.BuildingDrone.dll</HintPath>
@ -727,6 +731,14 @@
<HintPath>..\ref\Techblox_Data\Managed\Techblox.GUI.BuildRules.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.GUI.BuildRules.dll</HintPath>
</Reference>
<Reference Include="Techblox.GUI.Collection">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.GUI.Collection.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.GUI.Collection.dll</HintPath>
</Reference>
<Reference Include="Techblox.GUI.Commands">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.GUI.Commands.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.GUI.Commands.dll</HintPath>
</Reference>
<Reference Include="Techblox.GUI.Controls">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.GUI.Controls.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.GUI.Controls.dll</HintPath>
@ -771,18 +783,26 @@
<HintPath>..\ref\Techblox_Data\Managed\Techblox.GUI.MainGame.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.GUI.MainGame.dll</HintPath>
</Reference>
<Reference Include="Techblox.GUI.MainGame.StateMachine">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.GUI.MainGame.StateMachine.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.GUI.MainGame.StateMachine.dll</HintPath>
</Reference>
<Reference Include="Techblox.GUI.MyGamesScreen">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.GUI.MyGamesScreen.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.GUI.MyGamesScreen.dll</HintPath>
</Reference>
<Reference Include="Techblox.GUI.PauseMenuCommands">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.GUI.PauseMenuCommands.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.GUI.PauseMenuCommands.dll</HintPath>
<Reference Include="Techblox.GUI.PauseMenu">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.GUI.PauseMenu.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.GUI.PauseMenu.dll</HintPath>
</Reference>
<Reference Include="Techblox.GUI.Progression">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.GUI.Progression.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.GUI.Progression.dll</HintPath>
</Reference>
<Reference Include="Techblox.GUI.ScreenCanvas">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.GUI.ScreenCanvas.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.GUI.ScreenCanvas.dll</HintPath>
</Reference>
<Reference Include="Techblox.GUI.TabsBar.Landscapes">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.GUI.TabsBar.Landscapes.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.GUI.TabsBar.Landscapes.dll</HintPath>
@ -795,6 +815,10 @@
<HintPath>..\ref\Techblox_Data\Managed\Techblox.GUI.UsernameDisplay.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.GUI.UsernameDisplay.dll</HintPath>
</Reference>
<Reference Include="Techblox.GUI.WorldCanvas">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.GUI.WorldCanvas.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.GUI.WorldCanvas.dll</HintPath>
</Reference>
<Reference Include="Techblox.InputCapture">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.InputCapture.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.InputCapture.dll</HintPath>
@ -943,10 +967,30 @@
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Services.Progression.Client.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Services.Progression.Client.dll</HintPath>
</Reference>
<Reference Include="Techblox.Services.Progression">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Services.Progression.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Services.Progression.dll</HintPath>
</Reference>
<Reference Include="Techblox.Services.Storage">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Services.Storage.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Services.Storage.dll</HintPath>
</Reference>
<Reference Include="Techblox.Services.Users.Client">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Services.Users.Client.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Services.Users.Client.dll</HintPath>
</Reference>
<Reference Include="Techblox.Services.Users">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Services.Users.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Services.Users.dll</HintPath>
</Reference>
<Reference Include="Techblox.ServoBlocksServer">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.ServoBlocksServer.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.ServoBlocksServer.dll</HintPath>
</Reference>
<Reference Include="Techblox.ServosServer">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.ServosServer.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.ServosServer.dll</HintPath>
</Reference>
<Reference Include="Techblox.SignalHandling.Audio">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.SignalHandling.Audio.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.SignalHandling.Audio.dll</HintPath>
@ -955,6 +999,10 @@
<HintPath>..\ref\Techblox_Data\Managed\Techblox.SignalHandling.Common.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.SignalHandling.Common.dll</HintPath>
</Reference>
<Reference Include="Techblox.Simulation.Clusters">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Simulation.Clusters.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Simulation.Clusters.dll</HintPath>
</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>
@ -1023,6 +1071,30 @@
<HintPath>..\ref\Techblox_Data\Managed\Techblox.VisualEffects.VFXGraph.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.VisualEffects.VFXGraph.dll</HintPath>
</Reference>
<Reference Include="Techblox.Weapons.Aiming">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Weapons.Aiming.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Weapons.Aiming.dll</HintPath>
</Reference>
<Reference Include="Techblox.Weapons.DisablerBlock">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Weapons.DisablerBlock.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Weapons.DisablerBlock.dll</HintPath>
</Reference>
<Reference Include="Techblox.Weapons">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Weapons.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Weapons.dll</HintPath>
</Reference>
<Reference Include="Techblox.Weapons.Projectiles">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Weapons.Projectiles.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Weapons.Projectiles.dll</HintPath>
</Reference>
<Reference Include="Techblox.Weapons.Projectiles.Server">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Weapons.Projectiles.Server.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Weapons.Projectiles.Server.dll</HintPath>
</Reference>
<Reference Include="Techblox.Weapons.Server">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.Weapons.Server.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.Weapons.Server.dll</HintPath>
</Reference>
<Reference Include="Techblox.WheelFX">
<HintPath>..\ref\Techblox_Data\Managed\Techblox.WheelFX.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\Techblox.WheelFX.dll</HintPath>
@ -1403,6 +1475,10 @@
<HintPath>..\ref\Techblox_Data\Managed\UnityEngine.TextCoreFontEngineModule.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\UnityEngine.TextCoreFontEngineModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.TextCoreModule">
<HintPath>..\ref\Techblox_Data\Managed\UnityEngine.TextCoreModule.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\UnityEngine.TextCoreModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.TextCoreTextEngineModule">
<HintPath>..\ref\Techblox_Data\Managed\UnityEngine.TextCoreTextEngineModule.dll</HintPath>
<HintPath>..\..\ref\Techblox_Data\Managed\UnityEngine.TextCoreTextEngineModule.dll</HintPath>