Changeset 973


Ignore:
Timestamp:
02/15/2011 02:10:22 PM (10 years ago)
Author:
joao.dias
Message:
 
Location:
AgentMind/branches/FAtiMA-Modular/FAtiMA.Empathy
Files:
3 added
1 deleted
2 edited

Legend:

Unmodified
Added
Removed
  • AgentMind/branches/FAtiMA-Modular/FAtiMA.Empathy/.classpath

    r970 r973  
    55        <classpathentry combineaccessrules="false" kind="src" path="/FAtiMA"/> 
    66        <classpathentry combineaccessrules="false" kind="src" path="/FAtiMA.OCCAffectDerivation"/> 
     7        <classpathentry kind="src" path="/FAtiMA.ReactiveComponent"/> 
    78        <classpathentry kind="output" path="bin"/> 
    89</classpath> 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA.Empathy/src/FAtiMA/empathy/FacialExpressionSimulator.java

    r741 r973  
    11package FAtiMA.empathy; 
    22 
     3import FAtiMA.Core.AgentModel; 
    34import FAtiMA.Core.emotionalState.ActiveEmotion; 
    4 import FAtiMA.Core.emotionalState.EmotionalState; 
    5 import FAtiMA.Core.memory.semanticMemory.KnowledgeBase; 
    6 import FAtiMA.Core.util.enumerables.EmotionType; 
    75import FAtiMA.Core.wellFormedNames.Name; 
     6import FAtiMA.OCCAffectDerivation.OCCEmotionType; 
    87 
    98public class FacialExpressionSimulator { 
     9         
     10        final private Name FACIAL_EXP_PROPERTY = Name.ParseName("SELF(facial-exp)"); 
     11         
    1012         
    1113        /** 
     
    2527         
    2628         
    27         public String UpdateFacialExpression(Name facialExpressionProperty){ 
     29        public String updateFacialExpression(AgentModel am){ 
    2830                     
    2931                //search for the previous facial expression in the KB 
    30                 String previousFacialExpression = (String)KnowledgeBase.GetInstance().AskProperty(facialExpressionProperty); 
    31  
     32                String facialExpressionValue = (String) am.getMemory().getSemanticMemory().AskProperty(FACIAL_EXP_PROPERTY); 
     33                 
     34                FacialExpressionType previousFacialExpression = FacialExpressionType.valueOf(facialExpressionValue); 
     35                 
    3236        //checks the current strongest active emotion that is based on the reactive appraisal 
    33                 ActiveEmotion currentSrongestEmotion = EmotionalState.GetInstance().GetStrongestExpressiveEmotion(); 
    34          
    35                 short newFacialExpression = -1; 
     37                ActiveEmotion currentSrongestEmotion = am.getEmotionalState().GetStrongestEmotion(); 
     38                 
     39                FacialExpressionType newFacialExpression; 
    3640                 
    3741            //changes the facial expression accordingly 
     
    3943                        newFacialExpression = FacialExpressionType.NEUTRAL; 
    4044                }else{ 
    41                         switch(currentSrongestEmotion.GetType()){ 
     45                        switch(OCCEmotionType.valueOf(currentSrongestEmotion.getType())){ 
    4246                                 
    43                             case EmotionType.ANGER :  
    44                                 case EmotionType.HATE : newFacialExpression = FacialExpressionType.ANGRY;  
     47                            case ANGER :  
     48                                case HATE : newFacialExpression = FacialExpressionType.ANGRY;  
    4549                                                                                break; 
    46                                  
    47                                 case EmotionType.JOY : 
    48                                 case EmotionType.ADMIRATION : 
    49                                 case EmotionType.GLOATING:                               
    50                                 case EmotionType.LOVE : newFacialExpression = FacialExpressionType.HAPPY;  
    51                                                         break; 
    52                                   
    53                                 case EmotionType.DISTRESS : newFacialExpression = FacialExpressionType.SAD; 
    54                                                                                         break; 
     50                                case JOY : 
     51                                case ADMIRATION : 
     52                                case GLOATING:                           
     53                                case LOVE : newFacialExpression = FacialExpressionType.HAPPY;  
     54                                        break; 
     55                                case DISTRESS : newFacialExpression = FacialExpressionType.SAD; 
     56                                        break; 
    5557                                                     
    5658                                default : newFacialExpression = FacialExpressionType.NEUTRAL; break; 
     
    5860                } 
    5961                 
    60                 String newFacialExpressionName = FacialExpressionType.GetName(newFacialExpression); 
     62                String newFacialExpressionName = newFacialExpression.name(); 
    6163                 
    62                 if(!newFacialExpressionName.equalsIgnoreCase(previousFacialExpression)){         
    63                          
    64                         KnowledgeBase.GetInstance().Tell(facialExpressionProperty, newFacialExpressionName);                     
     64                if(!newFacialExpressionName.equalsIgnoreCase(previousFacialExpression.name())){  
     65                        am.getMemory().getSemanticMemory().Tell(FACIAL_EXP_PROPERTY, newFacialExpressionName);                   
    6566                        return newFacialExpressionName; 
    6667                }else{ 
     
    6970        } 
    7071         
    71         public String CalculateFacialExpression(ActiveEmotion e){            
     72        public FacialExpressionType CalculateFacialExpression(ActiveEmotion e){      
    7273    
    7374                if(e == null){ 
    74                         return FacialExpressionType.GetName(FacialExpressionType.NEUTRAL); 
     75                        return FacialExpressionType.NEUTRAL; 
    7576                }else{ 
    76                         switch(e.GetType()){                             
    77                             case EmotionType.ANGER :  
    78                                 case EmotionType.HATE : return FacialExpressionType.GetName(FacialExpressionType.ANGRY);                 
    79                                 case EmotionType.JOY : 
    80                                 case EmotionType.ADMIRATION : 
    81                                 case EmotionType.GLOATING:                               
    82                                 case EmotionType.LOVE :  return FacialExpressionType.GetName(FacialExpressionType.HAPPY); 
    83                                 case EmotionType.DISTRESS : return FacialExpressionType.GetName(FacialExpressionType.SAD); 
    84                                 default : return FacialExpressionType.GetName(FacialExpressionType.NEUTRAL); 
     77                        switch(OCCEmotionType.valueOf(e.getType())){                             
     78                            case ANGER :  
     79                                case HATE :return FacialExpressionType.ANGRY;            
     80                                case JOY : 
     81                                case ADMIRATION : 
     82                                case GLOATING:                           
     83                                case LOVE : return FacialExpressionType.HAPPY; 
     84                                case DISTRESS : return FacialExpressionType.SAD; 
     85                                default : return FacialExpressionType.NEUTRAL; 
    8586                        } 
    8687                } 
    8788        } 
    8889 
    89         public short CalculateEmotionType(short facialExpressionType) { 
     90        public OCCEmotionType CalculateEmotionType(FacialExpressionType facialExpressionType) { 
    9091                switch(facialExpressionType){ 
    91                         case FacialExpressionType.ANGRY: return EmotionType.ANGER; 
    92                         case FacialExpressionType.HAPPY: return EmotionType.JOY; 
    93                         case FacialExpressionType.SAD: return EmotionType.DISTRESS; 
    94                         case FacialExpressionType.NEUTRAL : return EmotionType.NEUTRAL; 
    95                         default : return EmotionType.NEUTRAL; 
     92                        case ANGRY: return OCCEmotionType.ANGER; 
     93                        case HAPPY: return OCCEmotionType.JOY; 
     94                        case SAD: return OCCEmotionType.DISTRESS; 
     95                        case NEUTRAL : return null; 
     96                        default : return null; 
    9697                } 
    9798        } 
Note: See TracChangeset for help on using the changeset viewer.