public NameTransformConditionCopyNonLazyBinder ByNewPrefabResourceMethod( string resourcePath, #if !NET_4_6 ModestTree.Util. #endif Action <DiContainer, TParam1, TParam2, TParam3, TParam4> installerMethod) { BindingUtil.AssertIsValidResourcePath(resourcePath); GameObjectCreationParameters gameObjectInfo = new GameObjectCreationParameters(); ProviderFunc = (container) => new SubContainerDependencyProvider( ContractType, SubIdentifier, new SubContainerCreatorByNewPrefabMethod <TParam1, TParam2, TParam3, TParam4>( container, new PrefabProviderResource(resourcePath), gameObjectInfo, installerMethod), false); return(new NameTransformConditionCopyNonLazyBinder(BindInfo, gameObjectInfo)); }
public NameTransformScopeConcreteIdArgConditionCopyNonLazyBinder ByNewPrefabMethod( UnityEngine.Object prefab, #if !NET_4_6 ModestTree.Util. #endif Action <DiContainer, TParam1, TParam2, TParam3, TParam4, TParam5> installerMethod) { BindingUtil.AssertIsValidPrefab(prefab); var gameObjectInfo = new GameObjectCreationParameters(); ProviderFunc = (container) => new SubContainerDependencyProvider( ContractType, SubIdentifier, new SubContainerCreatorByNewPrefabMethod <TParam1, TParam2, TParam3, TParam4, TParam5>( container, new PrefabProvider(prefab), gameObjectInfo, installerMethod), false); return(new NameTransformScopeConcreteIdArgConditionCopyNonLazyBinder(BindInfo, gameObjectInfo)); }
public IProvider CreateProvider( string resourcePath, Type resultType, GameObjectCreationParameters gameObjectBindInfo, List <TypeValuePair> extraArguments, object concreteIdentifier, Func <Type, IPrefabInstantiator, IProvider> providerFactory) { IPrefabInstantiator creator; _markRegistry.MarkSingleton( resultType, concreteIdentifier, SingletonTypes.FromPrefabResource); var prefabId = new PrefabId(concreteIdentifier, resourcePath); if (_prefabCreators.TryGetValue(prefabId, out creator)) { // TODO: Check the arguments are the same? Assert.That(creator.ExtraArguments.IsEmpty() && extraArguments.IsEmpty(), "Ambiguous creation parameters (arguments) when using ToPrefabResource with AsSingle"); Assert.IsEqual(creator.GameObjectCreationParameters, gameObjectBindInfo, "Ambiguous creation parameters (gameObject name/parent info) when using ToPrefabResource with AsSingle"); } else { creator = new PrefabInstantiatorCached( new PrefabInstantiator( _container, gameObjectBindInfo, resultType, extraArguments, new PrefabProviderResource(resourcePath))); _prefabCreators.Add(prefabId, creator); } if (resultType == typeof(GameObject)) { return(new PrefabGameObjectProvider(creator)); } return(providerFactory(resultType, creator)); }
public NameTransformScopeConcreteIdArgConditionCopyNonLazyBinder ByNewContextPrefab(Type installerType, UnityEngine.Object prefab) { BindingUtil.AssertIsValidPrefab(prefab); Assert.That(installerType.DerivesFrom <MonoInstaller>(), "Invalid installer type given during bind command. Expected type '{0}' to derive from 'MonoInstaller'", installerType); var gameObjectInfo = new GameObjectCreationParameters(); ProviderFunc = (container) => new SubContainerDependencyProvider( ContractType, SubIdentifier, new SubContainerCreatorByNewPrefabWithParams( installerType, container, new PrefabProvider(prefab), gameObjectInfo), false); return(new NameTransformScopeConcreteIdArgConditionCopyNonLazyBinder(BindInfo, gameObjectInfo)); }
public GameObjectNameGroupNameBinder FromGameObject() { var gameObjectInfo = new GameObjectCreationParameters(); if (ContractType == typeof(GameObject)) { SubFinalizer = CreateFinalizer( (container) => new EmptyGameObjectProvider( container, gameObjectInfo)); } else { BindingUtil.AssertIsComponent(ContractType); BindingUtil.AssertIsNotAbstract(ContractType); SubFinalizer = CreateFinalizer( (container) => new AddToNewGameObjectComponentProvider( container, ContractType, null, new List <TypeValuePair>(), gameObjectInfo)); } return(new GameObjectNameGroupNameBinder(BindInfo, gameObjectInfo)); }
public IProvider CreateProvider( UnityEngine.Object prefab, Type resultType, GameObjectCreationParameters gameObjectBindInfo, List <TypeValuePair> extraArguments, object concreteIdentifier) { IPrefabInstantiator creator; var prefabId = new PrefabId(concreteIdentifier, prefab); _markRegistry.MarkSingleton( resultType, concreteIdentifier, SingletonTypes.ToPrefab); if (_prefabCreators.TryGetValue(prefabId, out creator)) { // TODO: Check the arguments are the same? Assert.That(creator.ExtraArguments.IsEmpty() && extraArguments.IsEmpty(), "Ambiguous creation parameters (arguments) when using ToPrefab with AsSingle"); Assert.IsEqual(creator.GameObjectCreationParameters, gameObjectBindInfo, "Ambiguous creation parameters (game object naming/parent info) when using ToPrefab with AsSingle"); } else { creator = new PrefabInstantiatorCached( new PrefabInstantiator( _container, gameObjectBindInfo, extraArguments, new PrefabProvider(prefab))); _prefabCreators.Add(prefabId, creator); } if (resultType == typeof(GameObject)) { return(new PrefabGameObjectProvider(creator)); } return(new GetFromPrefabComponentProvider(resultType, creator)); }
public bool Equals(GameObjectCreationParameters that) { return(this == that); }
public EmptyGameObjectProvider( DiContainer container, GameObjectCreationParameters gameObjectBindInfo) { _gameObjectBindInfo = gameObjectBindInfo; _container = container; }
public CreatorInfo( GameObjectCreationParameters gameObjectBindInfo, ISubContainerCreator creator) { GameObjectCreationParameters = gameObjectBindInfo; Creator = creator; }
public GameObjectGroupNameBinder(BindInfo bindInfo, GameObjectCreationParameters gameObjInfo) : base(bindInfo) { GameObjectInfo = gameObjInfo; }
public SubContainerCreatorByNewGameObjectDynamicContext( DiContainer container, GameObjectCreationParameters gameObjectBindInfo) : base(container) { _gameObjectBindInfo = gameObjectBindInfo; }
public IProvider CreateProvider( Type resultType, object concreteIdentifier, string resourcePath, object identifier, GameObjectCreationParameters gameObjectBindInfo) { _markRegistry.MarkSingleton( resultType, concreteIdentifier, SingletonTypes.FromSubContainerPrefabResource); var customSingletonId = new CustomSingletonId( concreteIdentifier, resourcePath); CreatorInfo creatorInfo; if (_subContainerCreators.TryGetValue(customSingletonId, out creatorInfo)) { Assert.IsEqual(creatorInfo.GameObjectCreationParameters, gameObjectBindInfo, "Ambiguous creation parameters (game object name / parent info) when using ToSubContainerPrefab with AsSingle"); } else { var creator = new SubContainerCreatorCached( new SubContainerCreatorByNewPrefab( _container, new PrefabProviderResource(resourcePath), gameObjectBindInfo)); creatorInfo = new CreatorInfo( gameObjectBindInfo, creator); _subContainerCreators.Add(customSingletonId, creatorInfo); } return(new SubContainerDependencyProvider( resultType, identifier, creatorInfo.Creator)); }
public CreatorInfo( GameObjectCreationParameters creationParameters, ISubContainerCreator creator) { GameObjectCreationParameters = creationParameters; Creator = creator; }
public TransformScopeConcreteIdArgConditionCopyNonLazyBinder( BindInfo bindInfo, GameObjectCreationParameters gameObjectInfo) : base(bindInfo, gameObjectInfo) { }
public TransformConditionCopyNonLazyBinder(BindInfo bindInfo, GameObjectCreationParameters gameObjInfo) : base(bindInfo) { GameObjectInfo = gameObjInfo; }