public bool CanInteract(InteractionEvent interactionEvent) { if (RangeCheck && !InteractionExtensions.RangeCheck(interactionEvent)) { return(false); } var provider = interactionEvent.Source as IGameObjectProvider; if (provider == null) { return(false); } SubstanceContainer container = provider.GameObject.GetComponent <SubstanceContainer>(); if (container == null) { return(false); } // You cannot dispense to a container that is already full. if (container.RemainingVolume < 0.01f) { return(false); } return(CanInteractCallback.Invoke(interactionEvent)); }
public bool Start(InteractionEvent interactionEvent, InteractionReference reference) { if (interactionEvent.Source is IGameObjectProvider provider) { SubstanceContainer container = provider.GameObject.GetComponent <SubstanceContainer>(); if (container != null) { container.AddSubstance(Substance.Substance, Substance.Moles); container.MarkDirty(); } } return(false); }
public bool Start(InteractionEvent interactionEvent, InteractionReference reference) { if (interactionEvent.Source is IGameObjectProvider provider) { SubstanceContainer container = provider.GameObject.GetComponent <SubstanceContainer>(); if (container != null) { var targetContainer = interactionEvent.Target.GetComponent <SubstanceContainer>(); container.TransferVolume(targetContainer, 25); container.MarkDirty(); targetContainer.MarkDirty(); } } return(false); }