You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
- using System.Reflection;
-
- using HarmonyLib;
- using RobocraftX.Common;
- using RobocraftX.DOTS;
- using Svelto.ECS;
- using Unity.Entities;
-
- using TechbloxModdingAPI.Engines;
- using TechbloxModdingAPI.Utility;
-
- namespace TechbloxModdingAPI.Blocks.Engines
- {
- public class ScalingEngine : IApiEngine
- {
- private static IReactOnAddAndRemove<DOTSPhysicsEntityCreationStruct> physicsEngine;
-
- public void Ready()
- {
- }
-
- public EntitiesDB entitiesDB { get; set; }
- public void Dispose()
- {
- }
-
- public string Name { get; } = "TechbloxModdingAPIScalingEngine";
- public bool isRemovable { get; } = false;
-
- private EntityManager _entityManager; //Unity entity manager
-
- public void UpdateCollision(EGID egid)
- {
- if (_entityManager == default)
- _entityManager = FullGameFields._physicsWorld.EntityManager;
- //Assuming the block exists
- var entity = entitiesDB.QueryEntity<DOTSPhysicsEntityStruct>(egid).dotsEntity;
- var pes = new DOTSPhysicsEntityCreationStruct();
- physicsEngine.Add(ref pes, egid); //Create new DOTS entity
- _entityManager.DestroyEntity(entity);
- }
-
- [HarmonyPatch]
- class PhysicsEnginePatch
- {
- static void Postfix(IReactOnAddAndRemove<DOTSPhysicsEntityCreationStruct> __instance)
- {
- physicsEngine = __instance;
- Logging.MetaDebugLog("Physics engine injected.");
- }
-
- static MethodBase TargetMethod(Harmony instance)
- {
- return AccessTools.Method("RobocraftX.StateSync.HandleDOTSPhysicEntitiesWithPrefabCreationEngine" +
- ":Ready");
- }
- }
- }
- }
|