I've developed a plugin for AfterEffects and PremierePro with the help and support of the Adobe community. Both the plugins used made using the AfterEffects SDK only. I want to develop the same plugin for Photoshop. In case of photoshop, I see so many ways: SDK, script, etc Where to start?
Requirements:
1. Need to connect the plugin to an external electron app using websocket
2. The external app will be the server app and it will provide some frames data to the plugin to render it (like the Element 3D)
3. The problem I faced with AfterEffects and PremierePro was that when the plugin received data from the external app, it was in a background thread (because it was through websocket). Since I received data in a background thread it was almost impossible to force a re-render as soon as the data was received. (In AfterEffects I managed through IdleHook but I'm still struggling with that in PremierePro. However PremierePro renders itself when the timeline is played or scrubbed) But I'm looking for a way that I don't get into this trouble in Photoshop
4. Need to add custom buttons
5. Need to open the electron app through plugin code and establish websocket connection (For AfterEffects SDK, the electron app was opened by executing terminal open command in C++, websocket connection was done using a c++ library that received server messages in background thread)
5. Need to add Fxfactory licensing
6. Need to develop the plugin for both Mac and Windows, but for now Mac is a bigger concern
7. Need fast rendering because the plugin has to convert data in some form and then render all pixel data received from the other app
8. Need to manage memory efficiently (I faced lot of crashes because of memory held by pixel data. At the end I had managed to clear data of every frame immedialtely after rendering its pixels, all time and memory efficiency was needed)
9. The plugin should be able to be applied to multiple layers and each layer will have different data to be rendered.
I have mentioned all these requirements because I need to be sure of what way to start. Is scripting what would fulfil my requirements or the SDK or both?