public CharacterModuleClient(GameWorld world, BundledResourceManager resourceSystem) : base(world) { // Handle controlled entity change CharacterBehaviours.CreateControlledEntityChangedSystems(m_world, m_ControlledEntityChangedSystems); m_ControlledEntityChangedSystems.Add(m_world.GetECSWorld().CreateManager <UpdateCharacter1PSpawn>(m_world, resourceSystem)); m_ControlledEntityChangedSystems.Add(m_world.GetECSWorld().CreateManager <PlayerCharacterControlSystem>(m_world)); // Handle spawn CharacterBehaviours.CreateHandleSpawnSystems(m_world, m_HandleSpawnSystems, resourceSystem); // Handle despawn CharacterBehaviours.CreateHandleDespawnSystems(m_world, m_HandleSpawnSystems); // Movement CharacterBehaviours.CreateMovementStartSystems(m_world, m_MovementStartSystems); CharacterBehaviours.CreateMovementResolveSystems(m_world, m_MovementResolveSystems); // Abilities CharacterBehaviours.CreateAbilityStartSystems(m_world, m_AbilityStartSystems); CharacterBehaviours.CreateAbilityResolveSystems(m_world, m_AbilityResolveSystems); // Rollback CharacterBehaviours.CreateRollbackSystems(m_world, m_RollbackSystems); m_RollbackSystems.Add(m_world.GetECSWorld().CreateManager <CharacterRollback>(m_world)); // Interpolation m_InterpolateSystems.Add(world.GetECSWorld().CreateManager <ReplicatedAbilityInterpolate>(world)); m_InterpolatePresentationState = m_world.GetECSWorld().CreateManager <InterpolatePresentationState>(m_world); m_UpdateCharPresentationState = m_world.GetECSWorld().CreateManager <UpdateCharPresentationState>(m_world); m_ApplyPresentationStateToCharacters = m_world.GetECSWorld().CreateManager <ApplyPresentationStateToCharacters>(m_world); m_ApplyPresentationStateToItems = m_world.GetECSWorld().CreateManager <ApplyPresentationStateToItems>(m_world); m_CharacterLateUpdate = m_world.GetECSWorld().CreateManager <CharacterLateUpdate>(m_world); m_characterItemLateUpdate = m_world.GetECSWorld().CreateManager <CharacterItemLateUpdate>(m_world); m_characterItem1PLateUpdate = m_world.GetECSWorld().CreateManager <CharacterItem1PLateUpdate>(m_world); m_updateCharacterUI = m_world.GetECSWorld().CreateManager <UpdateCharacterUI>(m_world); characterCameraSystem = m_world.GetECSWorld().CreateManager <UpdateCharacterCamera>(m_world); m_HandleCharacterEvents = m_world.GetECSWorld().CreateManager <HandleCharacterEvents>(); // Preload all character resources (until we have better streaming solution) var charRegistry = resourceSystem.GetResourceRegistry <CharacterTypeRegistry>(); for (var i = 0; i < charRegistry.entries.Length; i++) { resourceSystem.LoadSingleAssetResource(charRegistry.entries[i].prefab1P.guid); resourceSystem.LoadSingleAssetResource(charRegistry.entries[i].prefabClient.guid); } var itemRegistry = resourceSystem.GetResourceRegistry <ItemRegistry>(); for (var i = 0; i < itemRegistry.entries.Length; i++) { resourceSystem.LoadSingleAssetResource(itemRegistry.entries[i].prefab1P.guid); resourceSystem.LoadSingleAssetResource(itemRegistry.entries[i].prefabClient.guid); } var heroTypeRegistry = resourceSystem.GetResourceRegistry <HeroTypeRegistry>(); for (var i = 0; i < heroTypeRegistry.entries.Length; i++) { for (var j = 0; j < heroTypeRegistry.entries[i].abilities.Length; j++) { resourceSystem.LoadSingleAssetResource(heroTypeRegistry.entries[i].abilities[j].guid); } } Console.AddCommand("thirdperson", CmdToggleThirdperson, "Toggle third person mode", this.GetHashCode()); }