private void prepareActuators(List <IMonoBehaviourSensor> sensors, List <SimpleActuator> actuators, MethodInfo[] methods) { foreach (ActuatorConfiguration conf in actuatorsConfigurations) { actuators.Add(new SimpleActuator(conf)); ////MyDebugger.MyDebug(conf.configurationName+" added"); } actuatorsManager.registerActuators(this, actuators); if (!actuatorsManager.applyCoroutinStarted) { StartCoroutine(actuatorsManager.applyActuators()); actuatorsManager.applyCoroutinStarted = true; } foreach (MethodInfo mI in methods) { if (mI.Name.Equals(applyActuatorsCondition)) { MyDebugger.MyDebug("apply actuators on " + mI.Name); applyActuatorsMethod = mI; } } }
void initBrain() { List <AdvancedSensor> sensors = new List <AdvancedSensor>(); List <SimpleActuator> actuators = new List <SimpleActuator>(); embasp = new SolverExectuor(this); triggerClass = ScriptableObject.CreateInstance("Trigger"); MethodInfo[] methods = triggerClass.GetType().GetMethods(); //Debug.Log("creating sensors"); foreach (SensorConfiguration conf in sensorsConfigurations) { sensors.Add(new AdvancedSensor(conf)); //Debug.Log(conf.configurationName+" added"); } sensorManager.registerSensors(this, sensors); foreach (ActuatorConfiguration conf in actuatorsConfigurations) { actuators.Add(new SimpleActuator(conf)); //Debug.Log(conf.configurationName+" added"); } actuatorsManager.registerActuators(this, actuators); if (!actuatorsManager.applyCoroutinStarted) { StartCoroutine(actuatorsManager.applyActuators()); actuatorsManager.applyCoroutinStarted = true; } if (executeReasonerOn.Equals("When Sensors are ready")) { StartCoroutine("pulseOnSensorsReady"); } else { foreach (MethodInfo mI in methods) { if (mI.Name.Equals(updateSensorsOn)) { //Debug.Log(mI.Name); reasonerMethod = mI; StartCoroutine("pulseOn"); } } } //Debug.Log("trigger method is "+triggerMethod); if (executeRepeatedly) { InvokeRepeating("UpdateSensors", startIn, brainUpdateFrequency); } else if (!updateSensorsOn.Equals("")) { foreach (MethodInfo mI in methods) { if (mI.Name.Equals(updateSensorsOn)) { //Debug.Log(mI.Name); sensorsUpdateMethod = mI; StartCoroutine("UpdateSensorsOnTrigger"); } } } foreach (MethodInfo mI in methods) { if (mI.Name.Equals(applyActuatorsCondition)) { //Debug.Log(mI.Name); applyActuatorsMethod = mI; } } executionThread = new Thread(() => { Thread.CurrentThread.IsBackground = true; embasp.Run(); }); executionThread.Start(); }