void TriggerOnHostProcessed(int[] value)
    {
        AbilityCentralThreadPool newA = new AbilityCentralThreadPool(value[0]);

        AbilitiesManager.aData[value[0]].abilties[GetNodeVariable <string>("Ability Name")].CreateAbility(newA, value[1], value[2]);
        newA.StartThreads(0);
        HandlePostAbilityCreation();
    }
    public void InputCallback(int i)
    {
        //AbilitiesManager.aData[playerId].abilties[]
        AbilityCentralThreadPool centralPool = new AbilityCentralThreadPool(playerId);

        SignalCentralCreation(centralPool);
        CreateAbility(centralPool,ClientProgram.clientId);

        if (ClientProgram.hostId == ClientProgram.clientId)
        {
            centralPool.StartThreads(0);
        }
        else
        {
            centralPool.StartThreads(1);
        }
        //(NetworkMessageEncoder.encoders[(int)NetworkEncoderTypes.INPUT_SIGNAL] as InputSignalEncoder).SendInputSignal(playerId, abilityId);
    }
    public override void NodeCallback()
    {
        base.NodeCallback();

        //Debug.Log("Node was callbacked!");
        //Debug.LogFormat("NodeID {0}, Thread ID {1}", name, GetNodeThreadId());

        if (IsHost())
        {
            AbilityCentralThreadPool inst = GetCentralInst();
            AbilityCentralThreadPool newA = new AbilityCentralThreadPool(inst.GetPlayerId());
            //AbilitiesManager.aData[inst.GetPlayerId()].abilties[GetNodeVariable<string>("Ability Name")].SignalCentralCreation(newA);
            AbilitiesManager.aData[inst.GetPlayerId()].abilties[GetNodeVariable <string>("Ability Name")].CreateAbility(newA, ClientProgram.clientId);
            newA.StartThreads(0);
            GetCentralInst().UpdateVariableValue <int[]>(GetNodeId(), GetVariableId("Created Ability"), new int[] { inst.GetPlayerId(), ClientProgram.clientId, newA.ReturnCentralId() }, true, false);
            HandlePostAbilityCreation();
            return;
        }

        //if(GetNodeVariable<int[]>("Created Ability") != null)
        //TriggerOnHostProcessed(GetNodeVariable<int[]>("Created Ability"));
    }