protected override void OnCreate()
    {
        m_ExportPhysicsWorld    = World.GetOrCreateSystem <ExportPhysicsWorld>();
        m_TriggerSystem         = World.GetOrCreateSystem <TriggerEventConversionSystem>();
        m_EndFramePhysicsSystem = World.GetOrCreateSystem <EndFramePhysicsSystem>();

        m_HierarchyChildMask = EntityManager.GetEntityQueryMask(
            GetEntityQuery(new EntityQueryDesc
        {
            All = new ComponentType[]
            {
                typeof(Parent),
                typeof(LocalToWorld)
            }
        })
            );
        m_NonTriggerDynamicBodyMask = EntityManager.GetEntityQueryMask(
            GetEntityQuery(new EntityQueryDesc
        {
            All = new ComponentType[]
            {
                typeof(Translation),
                typeof(Rotation),
                typeof(PhysicsVelocity)
            },
            None = new ComponentType[]
            {
                typeof(StatefulTriggerEvent)
            }
        })
            );
    }
        private void UpdateTriggerEvents(NativeList <StatefulTriggerEvent> triggerEvents,
                                         DynamicBuffer <StatefulTriggerEvent> triggerEventBuffer)
        {
            triggerEvents.Sort();

            var previousFrameTriggerEvents = new NativeList <StatefulTriggerEvent>(triggerEventBuffer.Length, Allocator.Temp);

            for (int i = 0; i < triggerEventBuffer.Length; i++)
            {
                var triggerEvent = triggerEventBuffer[i];
                if (triggerEvent.State != EventOverlapState.Exit)
                {
                    previousFrameTriggerEvents.Add(triggerEvent);
                }
            }

            var eventsWithState = new NativeList <StatefulTriggerEvent>(triggerEvents.Length, Allocator.Temp);

            TriggerEventConversionSystem.UpdateTriggerEventState(previousFrameTriggerEvents, triggerEvents, eventsWithState);

            triggerEventBuffer.Clear();

            for (int i = 0; i < eventsWithState.Length; i++)
            {
                triggerEventBuffer.Add(eventsWithState[i]);
            }
        }
 protected override void OnCreate()
 {
     m_CommandBufferSystem = World.GetOrCreateSystem <EndFixedStepSimulationEntityCommandBufferSystem>();
     m_TriggerSystem       = World.GetOrCreateSystem <TriggerEventConversionSystem>();
     m_NonTriggerMask      = EntityManager.GetEntityQueryMask(
         GetEntityQuery(new EntityQueryDesc
     {
         None = new ComponentType[]
         {
             typeof(StatefulTriggerEvent)
         }
     })
         );
 }
 protected override void OnCreate()
 {
     m_TriggerSystem  = World.GetOrCreateSystem <TriggerEventConversionSystem>();
     m_NonTriggerMask = EntityManager.GetEntityQueryMask(
         GetEntityQuery(new EntityQueryDesc
     {
         None = new ComponentType[]
         {
             typeof(StatefulTriggerEvent)
         }
     })
         );
     RequireForUpdate(GetEntityQuery(new EntityQueryDesc
     {
         All = new ComponentType[]
         {
             typeof(TriggerVolumeChangeMaterial)
         }
     }));
 }
Пример #5
0
    protected override void OnCreate()
    {
        m_CommandBufferSystem = World.GetOrCreateSystem <EndSimulationEntityCommandBufferSystem>();
        m_TriggerSystem       = World.GetOrCreateSystem <TriggerEventConversionSystem>();

        m_NonTriggerMask = EntityManager.GetEntityQueryMask(
            GetEntityQuery(new EntityQueryDesc
        {
            None = new ComponentType[]
            {
                typeof(StatefulTriggerEvent)
            }
        })
            );
        //We set our queries
        m_PlayerScores = GetEntityQuery(ComponentType.ReadWrite <PlayerScoreComponent>());
        m_HighestScore = GetEntityQuery(ComponentType.ReadWrite <HighestScoreComponent>());
        //We wait to update until we have our converted entities
        RequireForUpdate(m_PlayerScores);
        RequireForUpdate(m_HighestScore);
    }