Pro_Unit

SubContainer Example

Apr 17th, 2022 (edited)
404
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.45 KB | None | 0 0
  1. using QuestEngine.Players;
  2. using UnityEngine;
  3. using Zenject;
  4.  
  5. namespace QuestEngine.Installers
  6. {
  7.     public class GameplayInstaller : MonoInstaller
  8.     {
  9.         [SerializeField] private GameObject _playerPrefab;
  10.        
  11.         public override void InstallBindings()
  12.         {
  13.             Container.Bind<Player>().FromSubContainerResolve().ByNewPrefabInstaller<PlayerInstaller>(_playerPrefab).AsSingle();
  14.         }
  15.     }
  16.  
  17.     public class PlayerInstaller : Installer
  18.     {
  19.         public override void InstallBindings()
  20.         {
  21.             Container.Bind<Player>().AsSingle();
  22.             Container.Bind<Transform>().FromComponentOnRoot().AsSingle();
  23.             Container.Bind<Rigidbody>().FromComponentOnRoot().AsSingle();
  24.         }
  25.     }
  26. }
  27.  
  28. namespace QuestEngine.Players
  29. {
  30.     public class Player
  31.     {
  32.         private readonly Transform _transform;
  33.         private readonly Rigidbody _rigidbody;
  34.  
  35.         public Player(Transform transform,Rigidbody rigidbody)
  36.         {
  37.             _transform = transform;
  38.             _rigidbody = rigidbody;
  39.         }
  40.         public Vector3 Position
  41.         {
  42.             get => _transform.position;
  43.             set => _transform.position = value;
  44.         }
  45.         public Vector3 Forward => _transform.forward;
  46.  
  47.         public static implicit operator Transform(Player player) => player._transform;
  48.         public static implicit operator Rigidbody(Player player) => player._rigidbody;
  49.     }
  50. }
Add Comment
Please, Sign In to add comment