public void Received(LightSwitchData Received)
    {
        //Logger.Log (Received.LightSwitchTrigger.ToString() + " < LightSwitchTrigger" + Received.RelatedAPC.ToString() + " < APC" + Received.state.ToString() + " < state" );
        // Leo Note: Some sync magic happening here. Decided not to touch it.
        tempStateCache = Received.state;

        if (waitToCheckState)
        {
            return;
        }
        if (Received.LightSwitchTrigger == RelatedLightSwitchTrigger || RelatedLightSwitchTrigger == null)
        {
            if (RelatedLightSwitchTrigger == null)
            {
                RelatedLightSwitchTrigger = Received.LightSwitchTrigger;
            }
            if (Received.RelatedAPC != null)
            {
                RelatedAPC = Received.RelatedAPC;
                {
                    if (State == LightState.On)
                    {
                        if (!RelatedAPC.ConnectedSwitchesAndLights[RelatedLightSwitchTrigger].Contains(this))
                        {
                            RelatedAPC.ConnectedSwitchesAndLights[RelatedLightSwitchTrigger].Add(this);
                        }
                    }
                }
            }
            else if (RelatedLightSwitchTrigger.SelfPowered)
            {
                if (State == LightState.On)
                {
                    if (!RelatedLightSwitchTrigger.SelfPowerLights.Contains(this))
                    {
                        RelatedLightSwitchTrigger.SelfPowerLights.Add(this);
                    }
                }
            }

            if (Renderer == null)
            {
                waitToCheckState = true;
                StartCoroutine(WaitToTryAgain());
                return;
            }
            else
            {
                State = Received.state ? LightState.On : LightState.Off;
            }
        }
    }
 public void CmdToggleLightSwitch(GameObject switchObj)
 {
     if (CanInteractWallmount(switchObj.GetComponent <WallmountBehavior>()))
     {
         LightSwitchTrigger s = switchObj.GetComponent <LightSwitchTrigger>();
         s.isOn = !s.isOn;
     }
     else
     {
         Logger.LogWarning("player attempted to interact with light switch through wall," +
                           " this could indicate a hacked client.");
     }
 }
 public void CmdToggleLightSwitch(GameObject switchObj)
 {
     if (CanInteractWallmount(switchObj.GetComponent <WallmountBehavior>()))
     {
         LightSwitchTrigger s = switchObj.GetComponent <LightSwitchTrigger>();
         if (s.isOn == LightSwitchTrigger.States.On)
         {
             s.isOn = LightSwitchTrigger.States.Off;
         }
         else if (s.isOn == LightSwitchTrigger.States.Off)
         {
             s.isOn = LightSwitchTrigger.States.On;
         }
     }
     else
     {
         Logger.LogWarningFormat("Player {0} attempted to interact with light switch through wall," +
                                 " this could indicate a hacked client.", Category.Exploits, this.gameObject.name);
     }
 }
    public void CmdToggleLightSwitch(GameObject switchObj)
    {
        LightSwitchTrigger s = switchObj.GetComponent <LightSwitchTrigger>();

        s.isOn = !s.isOn;
    }