Why going through the pain of encoding things in a string when you can just put a hashmap in there? Or even better, a "agentdata" object of your item to cut down on casting?
I am not sure why using the agent itself does not work but I don't have mason in front of me.
I like your solution...I didn't think to setUserData() to the agent object itself.
this.getGeometry().setUserData(this); -- setting the UserData to the agent Indv class object
Unfortunately, I am now getting a casting error in the Portrayal:
java.lang.ClassCastException: java.base/java.lang.Integer cannot be cast to disaster.Indv
I've tried the casting a number of ways and am getting this same error:
int hColor = ((Indv) (((MasonGeometry)object).getUserData())).getHealthStatus(); -- original suggestion
int hColor = (int) ((Indv) ((MasonGeometry)object).getUserData()).getHealthStatus(); -- casting back to int
Is there a Java type limitation to get/setUserData()?
Another solution to the problem would be to encode the UserData with multiple bits of information in a String. I could then break it up in decoding methods. It's a little more complex, but it may be more natural to the use of get/setUserData()?