Exemplo n.º 1
0
        public async Task Initialize(PlayerConfig config)
        {
            var selection = config.Selection;
            var character = Registry.Get <CharacterData>().Get(selection.CharacterID);
            var prefab    = await character.Prefab.LoadAsync();

            Assert.IsNotNull(prefab);
            Model      = Object.Instantiate(prefab);
            Model.name = $"Player {config.PlayerID + 1} Simulation ({character.name}, {selection.Pallete})";

            PlayerUtil.DestroyAll(Model, typeof(Renderer), typeof(MeshFilter));

            var task = Model.Broadcast <IPlayerComponent>(
                component => component.Initialize(config, false));

            SimulationComponents       = Model.GetComponentsInChildren <ISimulation <PlayerState, PlayerInputContext> >();
            PlayerSimulationComponents = SimulationComponents.OfType <IPlayerSimulation>().ToArray();
            await task;
        }
Exemplo n.º 2
0
        public async Task Initialize(PlayerConfig config)
        {
            var selection = config.Selection;
            var character = Registry.Get <CharacterData>().Get(selection.CharacterID);
            var prefab    = await character.Prefab.LoadAsync();

            View      = Object.Instantiate(prefab);
            View.name = $"Player {config.PlayerID + 1} View ({character.name}, {selection.Pallete})";

            PlayerUtil.DestroyAll(View, typeof(Collider), typeof(Hurtbox), typeof(Hitbox));

            var task = View.Broadcast <IPlayerComponent>(component => component.Initialize(config, true));

            var viewTasks = from factory in viewFactories
                            where factory != null
                            select factory.CreateViews(config);

            var   views = (await Task.WhenAll(viewTasks)).SelectMany(v => v);
            await task;

            // TODO(james7132): Move character view components to it's own factory
            ViewComponents = View.GetComponentsInChildren <IStateView <PlayerState> >().Concat(views).ToArray();
        }