Communication between interfaces and other components
As I understand it, one of the point of using interfaces is to allow flexibility in component implementations, so that a component on a gameobject can just do this to find the component that fires a weapon and the one that moves the object:
 public override void Awake()
 {
     base.Awake();
     moveComponent = GetComponent<IMove>();
     fireComponent = GetComponent<IFire>();
 }
This is nice, because I can then interchange different firing behaviours on the fly. However, this is used on my Player gameobject which has a property set up like this, which I use to hide the object and remove it from physics calculations when I display some messages on the screen (I don't want it to be destroyed, and I can't just disable the player with SetActive because the object handles its own respawning, lives left etc. ):
 private bool _activeInScene;
 public bool ActiveInScene
 {
     get
     {
         return _activeInScene;
     }
     set
     {
         _activeInScene = value;
         // Following 3 are declared in base.Awake()
         rend.enabled = value;
         col.enabled = value;
         rb.isKinematic = !value;
         if (value)
         {
             EventManager.Instance.PlayerSpawned();
         }
         else
         {
             EventManager.Instance.PlayerDespawned();
         }
         Debug.Log("[SetActiveInScene] " + gameObject.name + " : " + value);
         
         // Can't do this now:
         // moveComponent.enabled = value;
         // fireComponent.enabled = value;
     }
 }
 
Problem is, the two lines at the end don't work because they hold an interface, not a component. And I'd like to disable the IMove and IFire components (whichever ones are attached), so that the player can't fire or move when it's not "ActiveInScene". Does this mean I have to write specific "activate" methods for each implementation of both interfaces? There's probably a better solution... Thanks for your help.
Your answer
 
 
             Follow this Question
Related Questions
Use of if(Component) 1 Answer
Making an object with a grid of very small blocks. 0 Answers
Problem with prefab 0 Answers
Components losing all references in inspector 3 Answers
Labels for components? 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
               
 
			 
                