public void SetUp() { containingObject = new GameObject(); container = new RuleContainer(); subject = containingObject.AddComponent <ListContainsRule>(); container.Interface = subject; }
public void ReceiveWithRuleRestrictions() { UnityEventListenerMock emittedMock = new UnityEventListenerMock(); subject.Emitted.AddListener(emittedMock.Listen); GameObject digestValid = new GameObject(); GameObject digestInvalid = new GameObject(); ListContainsRule rule = subject.gameObject.AddComponent <ListContainsRule>(); rule.objects.Add(digestValid); subject.receiveValidity = new RuleContainer { Interface = rule }; Assert.IsFalse(emittedMock.Received); subject.Receive(digestValid); Assert.AreEqual(digestValid, subject.Payload); Assert.IsTrue(emittedMock.Received); emittedMock.Reset(); Assert.IsFalse(emittedMock.Received); subject.Receive(digestInvalid); Assert.AreEqual(digestInvalid, subject.Payload); Assert.IsFalse(emittedMock.Received); Object.DestroyImmediate(digestValid); Object.DestroyImmediate(digestInvalid); }
protected virtual RuleContainer CreateRule(GameObject element) { RuleContainer container = new RuleContainer(); ListContainsRule rule = containingObject.AddComponent <ListContainsRule>(); rule.objects.Add(element); container.Interface = rule; return(container); }
/// <summary> /// Configures the rules for the controller. /// </summary> /// <param name="interactor">The Interactor associated with the controller.</param> /// <param name="ruleList">The rule to manage.</param> protected virtual void ConfigureControllerRules(InteractorFacade interactor, ListContainsRule ruleList) { if (interactor == null || ruleList == null) { return; } ruleList.Objects.Clear(); ruleList.Objects.Add(interactor.gameObject); }
protected virtual void DrawDisallowedInteractorsList(RuleContainer rule, string undoRedoWarningPropertyPath) { if (rule.Interface == null) { return; } ListContainsRule listRule = (ListContainsRule)rule.Interface; SerializedObject listObject = new SerializedObject(listRule.Objects); DrawPropertyFieldWithChangeHandlers(listObject, "elements", undoRedoWarningPropertyPath); }
public void ReceiveWithRuleRestrictionsOnCollisionSource() { GameObject forwardSource = new GameObject(); GameObject collisionSourceValid = new GameObject(); Collider colliderValid = collisionSourceValid.AddComponent <BoxCollider>(); GameObject collisionSourceInvalid = new GameObject(); Collider colliderInvalid = collisionSourceInvalid.AddComponent <BoxCollider>(); ListContainsRule rule = subject.gameObject.AddComponent <ListContainsRule>(); UnityObjectObservableList objects = containingObject.AddComponent <UnityObjectObservableList>(); rule.Objects = objects; objects.Add(collisionSourceValid); subject.ReceiveValidity = new RuleContainer { Interface = rule }; subject.RuleSource = CollisionNotifierEventProxyEmitter.RuleSourceType.CollidingSource; UnityEventListenerMock emittedMock = new UnityEventListenerMock(); subject.Emitted.AddListener(emittedMock.Listen); CollisionNotifier.EventData validDigest = new CollisionNotifier.EventData(); validDigest.Set(forwardSource.GetComponent <Component>(), true, null, colliderValid); CollisionNotifier.EventData invalidDigest = new CollisionNotifier.EventData(); invalidDigest.Set(forwardSource.GetComponent <Component>(), true, null, colliderInvalid); Assert.IsNull(subject.Payload); Assert.IsFalse(emittedMock.Received); subject.Receive(validDigest); Assert.AreEqual(validDigest, subject.Payload); Assert.IsTrue(emittedMock.Received); emittedMock.Reset(); subject.Receive(invalidDigest); Assert.AreEqual(validDigest, subject.Payload); Assert.IsFalse(emittedMock.Received); Object.DestroyImmediate(forwardSource); Object.DestroyImmediate(collisionSourceValid); Object.DestroyImmediate(collisionSourceInvalid); }
public void ReceiveWithRuleRestrictions() { UnityEventListenerMock emittedMock = new UnityEventListenerMock(); subject.Emitted.AddListener(emittedMock.Listen); GameObject digestValid = new GameObject(); GameObject digestInvalid = new GameObject(); ObjectPointer.EventData validData = new ObjectPointer.EventData(digestValid.transform); ObjectPointer.EventData invalidData = new ObjectPointer.EventData(digestInvalid.transform); ListContainsRule rule = subject.gameObject.AddComponent <ListContainsRule>(); UnityObjectObservableList objects = containingObject.AddComponent <UnityObjectObservableList>(); rule.Objects = objects; objects.Add(digestValid); subject.ReceiveValidity = new RuleContainer { Interface = rule }; Assert.IsNull(subject.Payload); Assert.IsFalse(emittedMock.Received); subject.Receive(validData); Assert.AreEqual(validData, subject.Payload); Assert.IsTrue(emittedMock.Received); emittedMock.Reset(); Assert.IsFalse(emittedMock.Received); subject.Receive(invalidData); Assert.AreEqual(validData, subject.Payload); Assert.IsFalse(emittedMock.Received); Object.DestroyImmediate(digestValid); Object.DestroyImmediate(digestInvalid); }
protected virtual void CreateComponent(OptionType selectedOption) { GameObject componentContainer = new GameObject(componentName); if (selectedObject != null && nestInSelectedObject) { componentContainer.transform.SetParent(selectedObject.transform); } GameObject listContainer = new GameObject("ListContainer"); listContainer.transform.SetParent(componentContainer.transform); switch (selectedOption) { case OptionType.AllRule: AllRule allRule = componentContainer.AddComponent <AllRule>(); RuleContainerObservableList allList = listContainer.AddComponent <RuleContainerObservableList>(); allRule.Rules = allList; break; case OptionType.AnyRule: AnyRule anyRule = componentContainer.AddComponent <AnyRule>(); RuleContainerObservableList anyList = listContainer.AddComponent <RuleContainerObservableList>(); anyRule.Rules = anyList; break; case OptionType.AnyBehaviourEnabledRule: AnyBehaviourEnabledRule behaviourRule = componentContainer.AddComponent <AnyBehaviourEnabledRule>(); SerializableTypeBehaviourObservableList behaviourList = listContainer.AddComponent <SerializableTypeBehaviourObservableList>(); behaviourRule.BehaviourTypes = behaviourList; break; case OptionType.AnyComponentTypeRule: AnyComponentTypeRule componentRule = componentContainer.AddComponent <AnyComponentTypeRule>(); SerializableTypeComponentObservableList componentList = listContainer.AddComponent <SerializableTypeComponentObservableList>(); componentRule.ComponentTypes = componentList; break; case OptionType.AnyTagRule: AnyTagRule tagRule = componentContainer.AddComponent <AnyTagRule>(); StringObservableList tagList = listContainer.AddComponent <StringObservableList>(); tagRule.Tags = tagList; break; case OptionType.BehaviourEnabledObserver: BehaviourEnabledObserver behaviourEnabledObserver = componentContainer.AddComponent <BehaviourEnabledObserver>(); BehaviourObservableList behaviourObservableList = listContainer.AddComponent <BehaviourObservableList>(); behaviourEnabledObserver.Behaviours = behaviourObservableList; break; case OptionType.ListContainsRule: ListContainsRule listRule = componentContainer.AddComponent <ListContainsRule>(); UnityObjectObservableList listList = listContainer.AddComponent <UnityObjectObservableList>(); listRule.Objects = listList; break; case OptionType.RulesMatcher: RulesMatcher matcherRule = componentContainer.AddComponent <RulesMatcher>(); RulesMatcherElementObservableList matcherList = listContainer.AddComponent <RulesMatcherElementObservableList>(); matcherRule.Elements = matcherList; break; case OptionType.ActionRegistrar: ActionRegistrar actionRegistrar = componentContainer.AddComponent <ActionRegistrar>(); ActionRegistrarSourceObservableList registrarList = listContainer.AddComponent <ActionRegistrarSourceObservableList>(); GameObjectObservableList limitsList = listContainer.AddComponent <GameObjectObservableList>(); actionRegistrar.Sources = registrarList; actionRegistrar.SourceLimits = limitsList; break; case OptionType.AllAction: AllAction allAction = componentContainer.AddComponent <AllAction>(); ActionObservableList allActionList = listContainer.AddComponent <ActionObservableList>(); allAction.Actions = allActionList; break; case OptionType.AnyAction: AnyAction anyAction = componentContainer.AddComponent <AnyAction>(); ActionObservableList anyActionList = listContainer.AddComponent <ActionObservableList>(); anyAction.Actions = anyActionList; break; case OptionType.GameObjectsAssociationActivator: GameObjectsAssociationActivator gameObjectsAssociationActivator = componentContainer.AddComponent <GameObjectsAssociationActivator>(); GameObjectsAssociationObservableList gameObjectsAssociationList = listContainer.AddComponent <GameObjectsAssociationObservableList>(); gameObjectsAssociationActivator.Associations = gameObjectsAssociationList; break; case OptionType.GameObjectRelations: GameObjectRelations gameObjectRelations = componentContainer.AddComponent <GameObjectRelations>(); GameObjectRelationObservableList gameObjectsRelationsList = listContainer.AddComponent <GameObjectRelationObservableList>(); gameObjectRelations.Relations = gameObjectsRelationsList; break; case OptionType.GameObjectStateSwitcher: GameObjectStateSwitcher gameObjectStateSwitcher = componentContainer.AddComponent <GameObjectStateSwitcher>(); GameObjectObservableList gameObjectsList = listContainer.AddComponent <GameObjectObservableList>(); gameObjectStateSwitcher.Targets = gameObjectsList; break; case OptionType.PlatformDeviceAssociation: PlatformDeviceAssociation platformDeviceAssociation = componentContainer.AddComponent <PlatformDeviceAssociation>(); GameObjectObservableList platformGameObjectsList = listContainer.AddComponent <GameObjectObservableList>(); platformDeviceAssociation.GameObjects = platformGameObjectsList; break; case OptionType.HapticProcessor: HapticProcessor hapticProcessor = componentContainer.AddComponent <HapticProcessor>(); HapticProcessObservableList hapticList = listContainer.AddComponent <HapticProcessObservableList>(); hapticProcessor.HapticProcesses = hapticList; break; case OptionType.MeshStateModifier: MeshStateModifier meshStateModifier = componentContainer.AddComponent <MeshStateModifier>(); GameObjectMultiRelationObservableList gameObjectMultiRelationList = listContainer.AddComponent <GameObjectMultiRelationObservableList>(); meshStateModifier.MeshCollections = gameObjectMultiRelationList; break; case OptionType.MomentProcessor: MomentProcessor momentProcessor = componentContainer.AddComponent <MomentProcessor>(); MomentProcessObservableList momentProcessorList = listContainer.AddComponent <MomentProcessObservableList>(); momentProcessor.Processes = momentProcessorList; break; case OptionType.CompositeProcess: CompositeProcess compositeProcessor = componentContainer.AddComponent <CompositeProcess>(); MomentProcessObservableList compositeProcessorList = listContainer.AddComponent <MomentProcessObservableList>(); compositeProcessor.Processes = compositeProcessorList; break; case OptionType.VelocityTrackerProcessor: VelocityTrackerProcessor velocityTrackerProcessor = componentContainer.AddComponent <VelocityTrackerProcessor>(); VelocityTrackerObservableList velocityTrackerList = listContainer.AddComponent <VelocityTrackerObservableList>(); velocityTrackerProcessor.VelocityTrackers = velocityTrackerList; break; case OptionType.FloatAdder: FloatAdder floatAdder = componentContainer.AddComponent <FloatAdder>(); FloatObservableList floatList = listContainer.AddComponent <FloatObservableList>(); floatAdder.Collection = floatList; break; case OptionType.FloatMaxFinder: FloatMaxFinder floatMaxFinder = componentContainer.AddComponent <FloatMaxFinder>(); FloatObservableList floatMaxFinderList = listContainer.AddComponent <FloatObservableList>(); floatMaxFinder.Collection = floatMaxFinderList; break; case OptionType.FloatMeanFinder: FloatMeanFinder floatMeanFinder = componentContainer.AddComponent <FloatMeanFinder>(); FloatObservableList floatMeanFinderList = listContainer.AddComponent <FloatObservableList>(); floatMeanFinder.Collection = floatMeanFinderList; break; case OptionType.FloatMedianFinder: FloatMedianFinder floatMedianFinder = componentContainer.AddComponent <FloatMedianFinder>(); FloatObservableList floatMedianFinderList = listContainer.AddComponent <FloatObservableList>(); floatMedianFinder.Collection = floatMedianFinderList; break; case OptionType.FloatMinFinder: FloatMinFinder floatMinFinder = componentContainer.AddComponent <FloatMinFinder>(); FloatObservableList floatMinFinderList = listContainer.AddComponent <FloatObservableList>(); floatMinFinder.Collection = floatMinFinderList; break; case OptionType.FloatModeFinder: FloatModeFinder floatModeFinder = componentContainer.AddComponent <FloatModeFinder>(); FloatObservableList floatModeFinderList = listContainer.AddComponent <FloatObservableList>(); floatModeFinder.Collection = floatModeFinderList; break; case OptionType.FloatMultiplier: FloatMultiplier floatMultiplier = componentContainer.AddComponent <FloatMultiplier>(); FloatObservableList floatMultiplierList = listContainer.AddComponent <FloatObservableList>(); floatMultiplier.Collection = floatMultiplierList; break; case OptionType.FloatRangeFinder: FloatRangeFinder floatRangeFinder = componentContainer.AddComponent <FloatRangeFinder>(); FloatObservableList floatRangeFinderList = listContainer.AddComponent <FloatObservableList>(); floatRangeFinder.Collection = floatRangeFinderList; break; case OptionType.Vector2Multiplier: Vector2Multiplier vector2Multiplier = componentContainer.AddComponent <Vector2Multiplier>(); Vector2ObservableList vector2MultiplierList = listContainer.AddComponent <Vector2ObservableList>(); vector2Multiplier.Collection = vector2MultiplierList; break; case OptionType.Vector3Multiplier: Vector3Multiplier vector3Multiplier = componentContainer.AddComponent <Vector3Multiplier>(); Vector3ObservableList vector3MultiplierList = listContainer.AddComponent <Vector3ObservableList>(); vector3Multiplier.Collection = vector3MultiplierList; break; case OptionType.Vector3Subtractor: Vector3Subtractor vector3Subtractor = componentContainer.AddComponent <Vector3Subtractor>(); Vector3ObservableList vector3SubtractorList = listContainer.AddComponent <Vector3ObservableList>(); vector3Subtractor.Collection = vector3SubtractorList; break; } }