public static CompositeGameModule CreateCompositeGameModule(Contexts contexts) { var motors = MotorsFactory.CraeteMotors(contexts, SingletonManager.Get <CameraConfigManager>().Config); var sessionObjects = contexts.session.commonSession; var gameModule = new CompositeGameModule(); IHitBoxEntityManager hitBoxEntityManager = new HitBoxEntityManager(contexts, false); ICompensationWorldFactory factory = new ClientCompensationWorldFactory(contexts.session.commonSession.GameContexts, hitBoxEntityManager); GameModule cmdModule = new UserCmdGameModule(contexts, factory, new BulletHitHandler(contexts, sessionObjects.EntityIdGenerator, null), new MeleeHitHandler(null), new ThrowingHitHandler(null), contexts.session.commonSession, motors); // cmdModule.AddSystem(new PlayerAddMarkSystem(contexts)); cmdModule.AddSystem(new PlayerSprayPaintSystem(contexts)); gameModule.AddModule(cmdModule); gameModule.AddModule(new BulletModule(contexts)); gameModule.AddModule(new ThrowingModule(contexts)); gameModule.AddModule(new ClientEffectModule(contexts)); gameModule.AddModule(new ClientVehicleModule(contexts)); gameModule.AddModule(new ClientPlayerModule(contexts)); gameModule.AddModule(new ClientSoundModule(contexts)); if (SharedConfig.IsRobot) { gameModule.AddModule(new ClientRobotModule(contexts)); } gameModule.AddSystem(new VisionCenterUpdateSystem(contexts)); gameModule.AddSystem(new TerrainDataLoadSystem(contexts)); if (SingletonManager.Get <MapConfigManager>().SceneParameters is SceneConfig || SingletonManager.Get <MapConfigManager>().SceneParameters.Id == 0) { gameModule.AddSystem(new ClientAutoWorldShiftRenderSystem(contexts)); } //gameModule.AddSystem(new OcclusionCullingSystem(contexts)); gameModule.AddModule(new ClientSceneObjectModule(contexts, sessionObjects)); // gameModule.AddModule(new ClientSoundModule(contexts)); gameModule.AddModule(new ClientGamePlayModule(contexts)); gameModule.AddModule(new ClientFreeMoveModule(contexts)); gameModule.AddModule(new UiModule(contexts)); gameModule.AddModule(new ConfigurationRefreshModule(contexts)); SingletonManager.Get <FreeUiManager>().Contexts1 = contexts; SimpleMessageManager.Instance.Init(contexts.session.entityFactoryObject.SoundEntityFactory); return(gameModule); }