"After a brief search through the "Smart Object" code I'd written, ha ha, no, no no no, I can't store that thing at that place in the code because it clobbers the same thing we set in the code we copied this from, ha ha ha." - an excerpt from my bestseller "Copy-And-Paste Bit Me In The Butt Again!"
My SO code is working now, and before I perform more "efficiencies" on it, I am backing it up.
First there is a function
Then there is no function
Then there is
It was a mess, mostly due to debugging, and I'd spent some time cleaning up similar code, so I thought, "It's just like this other code, with a couple of minor tweaks."
There was a third minor tweak lurking in the bowels of the algorithms. A function had reappeared.
Snip snip. Working again. Saaaaavvvvveeee.
The smartest thing about a Smart Object is what you think of your own cleverness when you finally get a group of them to behave.
You just create a game actor with something like a door or a chair static mesh, with a handy target (with benefits) attached to it, the SmartObject, which an NPC can claim and then go to, and some code you add about whatever you want them to do there. Like, open that door, or sit on that chair, and so forth. You can get carried away. The claim-and-release feature prevents NPCs from converging on the same point at the same time.
I had to try them out with state machines. Yes. I am a glutton for punishment.
Smart Objects. Now, they are like putty in my mouse pointer.
Some old sayings don't translate all that well.
