public SimulationContext(HavokConfiguration config)
        {
            // Unlock the plugin if it hasn't already been done.
            // If it remains locked, the simulation will do nothing.
            Plugin.EnsureUnlocked();

            TimeStep        = default;
            InputVelocities = default;

            Camera = default;

            unsafe
            {
                // Allocate this at a fixed memory location. The plugin writes to it.
                StepContext = (HavokSimulation.StepContext *)UnsafeUtility.Malloc(sizeof(HavokSimulation.StepContext), 16, Allocator.Persistent);
                UnsafeUtility.MemClear(StepContext, sizeof(HavokSimulation.StepContext));

                VisualDebuggerEnabled = config.VisualDebugger.Enable != 0;
                WorldIndex            = Plugin.HP_AllocateWorld(ref config, StepContext);
                m_WorldAllocated      = true;
            }

            HaveStaticBodiesChanged = default;
            StaticBodiesSyncedOnce  = false;
        }
Example #2
0
 protected override void OnUpdate()
 {
     World.GetExistingSystem <Unity.Physics.Systems.StepPhysicsWorld>().RegisterSimulation(SimulationType.HavokPhysics, () =>
     {
         HavokConfiguration config = HasSingleton <HavokConfiguration>() ? GetSingleton <HavokConfiguration>() : HavokConfiguration.Default;
         return(new HavokSimulation(config));
     });
 }
 protected override void OnUpdate()
 {
     World.GetExistingSystem <StepPhysicsWorld>().RegisterSimulation(SimulationType.HavokPhysics, () =>
     {
         HavokConfiguration config = HasSingleton <HavokConfiguration>() ? GetSingleton <HavokConfiguration>() : HavokConfiguration.Default;
         var simulation            = new HavokSimulation(config);
         simulation.SetStaticBodiesChangedFlag(World.GetExistingSystem <BuildPhysicsWorld>().HaveStaticBodiesChanged);
         return(simulation);
     });
 }
Example #4
0
 internal static extern unsafe int HP_AllocateWorld(ref HavokConfiguration config, HavokSimulation.StepContext *stepContext);
Example #5
0
 public HavokSimulation(HavokConfiguration config)
 {
     m_SimulationContext = new SimulationContext(config);
 }