コード例 #1
0
    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;
            }
        }
    }
コード例 #2
0
        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();
        }