bad path to plugin res directory
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 19/01/2010 at 14:23, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 11.027
Platform:
Language(s) : C++ ;---------
Hi,When my plugin executes, it tries to load the resource files from the path of the CINEMA_4D executable instead of from the plugin path.
I tried using resource.Init("path_to_my_plugin_directory"), but that does not work.
I also tried resource.ReloadResource, even though the header file warned against it. But it still does not work.
In both cases, the methods were called in response to the C4DPL_INIT_SYS plugin message.
What am I overlooking? How can I force Cinema4D to look for my resource files in the plugin path instead of in the CINEMA_4D path?
Note that when we launch cinema4D, we first set the C4D_PLUGINS_DIR environment variable. Could that be causing a problem with loading resources?
Thanks!
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 20/01/2010 at 00:41, xxxxxxxx wrote:
I am not sure what you mean with resources. If you just want to get the plugin path I think Filename GeGetPluginPath(void) is what you are looking for. It returns the plugin path.
cheers,
Matthias
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 21/01/2010 at 12:33, xxxxxxxx wrote:
There are three res files that are needed by the plugin:
res/description/vpapplylut.h
res/description/vpapplylut.res
res/strings_us/description/vpapplylut.strAccording to the documentation, the res directory should exist in the same directory as the plugin dso:
/path_to_my_plugin/applylut.so
/path_to_my_plugin/resBut Cinema4D wants to load the files from it's own res directory:
/path_to_executable/CINEMA_4D
/path_to_executable/resource/res
/path_to_executable/resource/strings_usI'm trying to force Cinema4D to load the res files from the plugin path.
I just tried this (as recommended in the SDK documentation) :
Bool PluginStart(void) { const Filename pluginPath = GeGetPluginPath(); if (!resource.Init(pluginPath)) return FALSE; Bool result = RegisterVideoPostPlugin(ID_APPLYLUT, "applyLUT", 0, ApplyLut::Alloc, "VPapplyLut",0,0); }
It does not work, as resource.Init returns FALSE.
Note that if I copy the files from the plugin res directory into the executable res directory, then it loads correctly. So I'm convinced that there's no problem with the res files themselves.
How can I force Cinema4D to load these files from the plugin directory?
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 22/01/2010 at 03:00, xxxxxxxx wrote:
Originally posted by xxxxxxxx
Note that when we launch cinema4D, we first set the C4D_PLUGINS_DIR environment variable. Could that be causing a problem with loading resources?
I tried to reproduce the problem but it is working fine or me. Could this be a problem of the path itself (network path?) or the way you run Cinema (commandline?) ?
Have you tried if this happens on a Windows system too?
To use a custom resource path you have to allocate a GeRource for your plugin. Please check following code:
//global pointer to custom resource GeResource *customres = NULL; //C4D_PL_INIT Filename fn = Filename("custom_res_path"); customres = gNew GeResource; if(customres && customres->Init(fn)) { LocalResource* localres = NULL; localres = customres->Get(); //register custom description location RegisterDescription(unique_ID, "VPapplyLut", localres); } //C4DPL_ENDACTIVITY if(customres) { customres->Free(); gDelete(customres); }
cheers,
Matthias
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 21/06/2010 at 09:03, xxxxxxxx wrote:
I have been trying for days to understand why I am getting the same results (Windows 7, 64 bit, Cinema 11.027). Given my current level of expertise with Cinema 4D plugins, it is quite likely that I am doing something wrong.
Demo:
http://rapidshare.com/files/401366326/otest.zip.html
MD5: 1622D41CAD5D76799FBC7D4AE844EB9C
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 26/09/2010 at 08:01, xxxxxxxx wrote:
After comparing with RoundedTube, I found out I had to the following:
Bool PluginMessage(LONG id, void *data)
{
switch (id)
{
case C4DPL_INIT_SYS:
if (!resource.Init()) return FALSE; // don't start plugin without resource
return TRUE;
}
return FALSE;
}Instead of just
Bool PluginMessage(LONG id, void *data)
{
return true;
}
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 26/09/2010 at 14:21, xxxxxxxx wrote:
Most definitely. You MUST examine the examples in the cinema4dsdk folder. You will never figure out all of the nuances by looking only at the SDK docs. :)