Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Recent
    • Tags
    • Users
    • Login

    BaseFile Issues

    Scheduled Pinned Locked Moved SDK Help
    8 Posts 0 Posters 757 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H Offline
      Helper
      last edited by

      THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

      On 16/05/2011 at 18:01, xxxxxxxx wrote:

      User Information:
      Cinema 4D Version:   12 
      Platform:   Windows  ; Mac  ;  
      Language(s) :     C++  ;

      ---------
      I have written functions that save presets and load presets for my object plugin.  The functions use a BaseFile and loads and saves parameters.

      Here is the LoadPresets() function..

        
        
        
      //LOAD PRESET  
      //====================================================//  
      Bool PXGPlanet::LoadPreset(GeListNode* node, Filename file){  
        
        BaseObject *op = (BaseObject* )node;  
        BaseContainer *bc = op->GetDataInstance();  
          
        //Declare the BaseFile  
        AutoAlloc<BaseFile> bf;  
        
        //Open the BaseFile for Reading.  
      #ifdef C4D_R12  
        bf->Open(file, FILEOPEN_READ, FILEDIALOG_IGNOREOPEN, BYTEORDER_INTEL, MACTYPE_CINEMA, MACCREATOR_CINEMA);  
      #else  
        bf->Open(file, GE_READ, FILE_IGNOREOPEN, GE_INTEL, MACTYPE_CINEMA, MACCREATOR_CINEMA);  
      #endif  
        
        //Read PXG Attributes from the File.  
          
        //GENERAL  
        //==========================================================//  
            //Planet Shape  
            LONG pshape;  
            bf->ReadLong(&pshape);  
            bc->SetLong(PLANETX_GENERAL_SHAPE, pshape);  
        
            //Radius  
            LReal genrad;  
            bf->ReadLReal(&genrad);  
            bc->SetReal(PLANETX_GENERAL_RADIUS, genrad);  
        
            //Segments  
            LReal genseg;  
            bf->ReadLReal(&genseg);  
            bc->SetReal(PLANETX_GENERAL_SEGMENTS, genseg);  
          
            //Height  
            LReal genht;  
            bf->ReadLReal(&genht);  
            bc->SetReal(PLANETX_GENERAL_HEIGHT, genht);  
        
            //Enable Rotation  
            Bool enrot;  
            bf->ReadBool(&enrot);  
            bc->SetBool(PLANETX_GENERAL_ENABLE_ROTATION, enrot);  
        
            //Rotation Direction  
            LONG rotdir;  
            bf->ReadLong(&rotdir);  
            bc->SetLong(PLANETX_GENERAL_ROTATION_DIRECTION, rotdir);  
        
            //Rotation Speed  
            LReal rotspeed;  
            bf->ReadLReal(&rotspeed);  
            bc->SetReal(PLANETX_GENERAL_ROTATION_SPEED, rotspeed);  
        
            //Frame Rate FPS  
            LReal framerate;  
            bf->ReadLReal(&framerate);  
            bc->SetReal(PLANETX_GENERAL_SCENEFPS, framerate);  
        
        //SURFACE  
        //==========================================================//  
            //Surface Map  
            Filename smap;  
            bf->ReadFilename(&smap);  
            bc->SetFilename(PLANETX_SURFACE_SURFACE_MAP, smap);  
        
            //Enable Specular  
            Bool enspec;  
            bf->ReadBool(&enspec);  
            bc->SetBool(PLANETX_SURFACE_SPEC_ENABLE, enspec);  
        
            //Specular Mode  
            LONG specmode;  
            bf->ReadLong(&specmode);  
            bc->SetLong(PLANETX_SURFACE_SPEC_MODE, specmode);  
        
            //Specular Width  
            LReal specwidth;  
            bf->ReadLReal(&specwidth);  
            bc->SetReal(PLANETX_SURFACE_SPEC_WIDTH, specwidth);  
        
            //Specular Height  
            LReal specheight;  
            bf->ReadLReal(&specheight);  
            bc->SetReal(PLANETX_SURFACE_SPEC_HEIGHT, specheight);  
        
            //Specular Falloff  
            LReal specfalloff;  
            bf->ReadLReal(&specfalloff);  
            bc->SetReal(PLANETX_SURFACE_SPEC_FALLOFF, specfalloff);  
        
            //Specular Inner Width  
            LReal speciwidth;  
            bf->ReadLReal(&speciwidth);  
            bc->SetReal(PLANETX_SURFACE_SPEC_INNER_WIDTH, speciwidth);  
        
            //Enable Generator  
            Bool engen;  
            bf->ReadBool(&engen);  
            bc->SetBool(PLANETX_SURFACE_ENABLE_GENERATOR, engen);  
        
            //Sea Color  
            LVector seacolor;  
            bf->ReadLVector(&seacolor);  
        
      #ifdef C4D_R12  
            bc->SetVector(PLANETX_SURFACE_SEA_COLOR, seacolor);  
      #else  
            bc->SetVector(PLANETX_SURFACE_SEA_COLOR, Vector(seacolor.x, seacolor.y, seacolor.z));  
      #endif  
        
            //Land Color  
            LVector landcolor;  
            bf->ReadLVector(&landcolor);  
        
      #ifdef C4D_R12  
            bc->SetVector(PLANETX_SURFACE_LAND_COLOR, landcolor);  
      #else  
            bc->SetVector(PLANETX_SURFACE_LAND_COLOR, Vector(landcolor.x, landcolor.y, landcolor.z));  
      #endif  
        
            //Mountain Color  
        
            LVector mtncolor;  
            bf->ReadLVector(&mtncolor);  
        
      #ifdef C4D_R12      
            bc->SetVector(PLANETX_SURFACE_MOUNTAIN_COLOR, mtncolor);  
      #else  
            bc->SetVector(PLANETX_SURFACE_MOUNTAIN_COLOR, Vector(mtncolor.x, mtncolor.y, mtncolor.z));  
      #endif  
        
            //Level  
            LReal level;  
            bf->ReadLReal(&level);  
            bc->SetReal(PLANETX_SURFACE_LEVEL, level);  
        
            //Frequnecy  
            LReal freq;  
            bf->ReadLReal(&freq);  
            bc->SetReal(PLANETX_SURFACE_FREQUENCY, freq);  
        
            //Generator Reflection  
            Bool genref;  
            bf->ReadBool(&genref);  
            bc->SetBool(PLANETX_SURFACE_GENERATOR_USE_REFLECTION, genref);  
        
            //Generator Elevation  
            Bool genelev;  
            bf->ReadBool(&genelev);  
            bc->SetBool(PLANETX_SURFACE_GENERATOR_USE_ELEVATION, genelev);  
        
            //Reflection Strength  
            LReal refstr;  
            bf->ReadLReal(&refstr);  
            bc->SetReal(PLANETX_SURFACE_SURFACE_REFLECTION_GEN, refstr);  
        
            //Elevation Strength  
            LReal elvstr;  
            bf->ReadLReal(&elvstr);  
            bc->SetReal(PLANETX_SURFACE_ELEVATION_STRENGTH_GEN, elvstr);  
        
            //Use Reflection Map  
            Bool usermap;  
            bf->ReadBool(&usermap);  
            bc->SetBool(PLANETX_SURFACE_REFLECTION_USE_MAP, usermap);  
              
            //Reflection Map   
            Filename rmap;  
            bf->ReadFilename(&rmap);  
            bc->SetFilename(PLANETX_SURFACE_REFLECTION_MAP, rmap);  
        
            //Reflection Mix  
            LReal refmix;  
            bf->ReadLReal(&refmix);  
            bc->SetReal(PLANETX_SURFACE_SURFACE_REFLECTION_MMIX, refmix);  
        
            //Surface Reflection  
            LReal surfref;  
            bf->ReadLReal(&surfref);  
            bc->SetReal(PLANETX_SURFACE_SURFACE_REFLECTION,surfref);  
        
            //Elevation Map   
            Filename emap;  
            bf->ReadFilename(&emap);  
            bc->SetFilename(PLANETX_SURFACE_ELEVATION_MAP, emap);  
        
            //Elevation Strength  
            LReal estrength;  
            bf->ReadLReal(&estrength);  
            bc->SetReal(PLANETX_SURFACE_ELEVATION_STRENGTH, estrength);  
        
            //Use Normal Map  
            Bool useemap;  
            bf->ReadBool(&useemap);  
            bc->SetBool(PLANETX_SURFACE_USE_NORMAL_MAP, useemap);  
        
            //Normal Map   
            Filename nmap;  
            bf->ReadFilename(&nmap);  
            bc->SetFilename(PLANETX_SURFACE_NORMAL_MAP,nmap);  
        
            //Normal Strength  
            LReal nstrength;  
            bf->ReadLReal(&nstrength);  
            bc->SetReal(PLANETX_SURFACE_NORMAL_STRENGTH, nstrength);  
        
        
        //CLOUDS  
        //==========================================================//  
            //Enable Clouds  
            Bool enclouds;  
            bf->ReadBool(&enclouds);  
            bc->SetBool(PLANETX_CLOUDS_ENABLE, enclouds);  
        
            //Cloud Map   
            Filename cmap;  
            bf->ReadFilename(&cmap);  
            bc->SetFilename(PLANETX_CLOUD_CLOUD_MAP,cmap);  
        
            //Cloud Color  
        
            LVector ccolor;  
            bf->ReadLVector(&ccolor);  
        
      #ifdef C4D_R12  
            bc->SetVector(PLANETX_CLOUD_COLOR, ccolor);  
      #else  
            bc->SetVector(PLANETX_CLOUD_COLOR, Vector(ccolor.x, ccolor.y, ccolor.z));  
      #endif  
        
            //Brightness  
            LReal cbright;  
            bf->ReadLReal(&cbright);  
            bc->SetReal(PLANETX_CLOUD_BRIGHTNESS, cbright);  
        
            //Thickness  
            LReal cthick;  
            bf->ReadLReal(&cthick);  
            bc->SetReal(PLANETX_CLOUD_THICKNESS, cthick);  
        
            //Elevation  
            LReal celeva;  
            bf->ReadLReal(&celeva);  
            bc->SetReal(PLANETX_CLOUD_ELEVATION, celeva);  
        
            //Enable Shadows  
            Bool enshad;  
            bf->ReadBool(&enshad);  
            bc->SetBool(PLANETX_CLOUD_ENABLE_SHADOWS, enshad);  
        
        
        //ATMOSPHERE  
        //==========================================================//  
            //Enable Atmosphere  
            Bool enatmo;  
            bf->ReadBool(&enatmo);  
            bc->SetBool(PLANETX_ATMOSPHERE_ENABLE, enatmo);  
        
            //Atmosphere Color  
            Gradient *atmColor =(Gradient* )bc->GetCustomDataType(PLANETX_ATMOSPHERE_COLOR,CUSTOMDATATYPE_GRADIENT);  
            Gradient *blank = Gradient::Alloc();  
        
            LONG knotCount;  
            bf->ReadLong(&knotCount);  
        
            bc->SetParameter((DescID)(DescID)PLANETX_ATMOSPHERE_COLOR, GeData(CUSTOMDATATYPE_GRADIENT, *blank));  
               
            for(int i = 0; i < knotCount; i++){  
                  
                LVector color;  
                LReal position;  
        
                bf->ReadLVector(&color);  
                bf->ReadLReal(&position);  
        
                GradientKnot knot;  
                Vector tmpcol = Vector(color.x, color.y, color.z);  
                knot.col = tmpcol;  
                knot.pos = position;  
        
                atmColor->InsertKnot(knot);  
            }  
        
            bc->SetParameter((DescID)(DescID)PLANETX_ATMOSPHERE_COLOR, GeData(CUSTOMDATATYPE_GRADIENT, *atmColor));  
        
            //Transparency Color  
            Gradient *atmtColor =(Gradient* )bc->GetCustomDataType(PLANETX_ATMOSPHERE_TRANSPARENCY, CUSTOMDATATYPE_GRADIENT);  
            Gradient *tblank = Gradient::Alloc();  
        
            LONG tknotCount;  
            bf->ReadLong(&tknotCount);  
        
            bc->SetParameter((DescID)(DescID)PLANETX_ATMOSPHERE_TRANSPARENCY, GeData(CUSTOMDATATYPE_GRADIENT, *tblank));  
               
            for(int i = 0; i < tknotCount; i++){  
                  
                LVector tcolor;  
                LReal tposition;  
        
        
                bf->ReadLVector(&tcolor);  
                bf->ReadLReal(&tposition);  
        
                GradientKnot tknot;  
                Vector ttmpcol = Vector(tcolor.x, tcolor.y, tcolor.z);  
                tknot.col = ttmpcol;  
                tknot.pos = tposition;  
        
                atmtColor->InsertKnot(tknot);  
            }  
        
            bc->SetParameter((DescID)(DescID)PLANETX_ATMOSPHERE_TRANSPARENCY, GeData(CUSTOMDATATYPE_GRADIENT, *atmtColor));  
        
            //Haze Color  
            LVector ahazecolor;  
            bf->ReadLVector(&ahazecolor);  
        
      #ifdef C4D_R12  
            bc->SetVector(PLANETX_ATMOSPHERE_HAZE_COLOR, ahazecolor);  
      #else  
            bc->SetVector(PLANETX_ATMOSPHERE_HAZE_COLOR, Vector(ahazecolor.x, ahazecolor.y, ahazecolor.z));  
      #endif  
        
            //Atmosphere Thickness  
            LReal athick;  
            bf->ReadLReal(&athick);  
            bc->SetReal(PLANETX_ATMOSPHERE_THICKNESS, athick);  
        
            //Enable Glow  
            Bool eng;  
            bf->ReadBool(&eng);  
            bc->SetBool(PLANETX_ATMOSPHERE_ENABLE_GLOW, eng);  
        
            //Use Material Color  
            Bool emc;  
            bf->ReadBool(&emc);  
            bc->SetBool(PLANETX_ATMOSPHERE_GLOW_USE_COLOR, emc);  
        
            //Glow Color  
            LVector gcolor;  
            bf->ReadLVector(&gcolor);  
        
      #ifdef C4D_R12  
            bc->SetVector(PLANETX_ATMOSPHERE_GLOW_COLOR, gcolor);  
      #else  
            bc->SetVector(PLANETX_ATMOSPHERE_GLOW_COLOR, Vector(gcolor.x, gcolor.y, gcolor.z));  
      #endif  
              
            //Brightness  
            LReal gbrit;  
            bf->ReadLReal(&gbrit);  
            bc->SetReal(PLANETX_ATMOSPHERE_GLOW_BRIGHTNESS, gbrit);  
              
            //Inner Strength  
            LReal gis;  
            bf->ReadLReal(&gis);  
            bc->SetReal(PLANETX_ATMOSPHERE_GLOW_INNERSTRENGTH, gis);  
              
            //Outer Strength  
            LReal gos;  
            bf->ReadLReal(&gos);  
            bc->SetReal(PLANETX_ATMOSPHERE_GLOW_OUTERSTRENGTH, gos);  
              
            //Radius  
            LReal grad;  
            bf->ReadLReal(&grad);  
            bc->SetReal(PLANETX_ATMOSPHERE_GLOW_RADIUS, grad);  
              
            //Random  
            LReal grand;  
            bf->ReadLReal(&grand);  
            bc->SetReal(PLANETX_ATMOSPHERE_GLOW_RANDOM, grand);  
        
            //Frequency  
            LReal gfreq;  
            bf->ReadLReal(&gfreq);  
            bc->SetReal(PLANETX_ATMOSPHERE_GLOW_FREQUENCY, gfreq);  
        
            //LIGHTS  
            //==========================================================//  
            //Enable Lights  
            Bool elts;  
            bf->ReadBool(&elts);  
            bc->SetBool(PLANETX_LIGHTS_ENABLE, elts);  
        
              
            //City Lights Map  
            Filename lmap;  
            bf->ReadFilename(&lmap);  
            bc->SetFilename(PLANETX_CITY_LIGHTS_MAP,lmap);  
        
            //Brightness  
            LReal ltsbrt;  
            bf->ReadLReal(&ltsbrt);  
            bc->SetReal(PLANETX_CITY_LIGHTS_BRIGHTNESS, ltsbrt);  
        
            //Lights Color  
            LVector ltscolor;  
            bf->ReadLVector(&ltscolor);  
        
      #ifdef C4D_R12  
            bc->SetVector(PLANETX_CITY_LIGHTS_COLOR, ltscolor);  
      #else  
            bc->SetVector(PLANETX_CITY_LIGHTS_COLOR, Vector(ltscolor.x, ltscolor.y, ltscolor.z));  
      #endif  
              
        return TRUE;  
      }  
        
      

      This works great when I save the file in Windows and open the file in Windows,,  The problem arises when I save the file with a PC and try to open it with a Mac.  My Mac tester tells me that the plugin loads fine but none of the preset files oad properly.  I assume that this is an issue with the ByteOrder but I do not know how to account for the different operating systems with a function like this.  Does anyone know how to allow a file that was saved on a PC via my SavePresets() function, to be opened on a Mac?

      Any help you could offer would be awesome.

      Thanks,

      Shawn

      1 Reply Last reply Reply Quote 0
      • H Offline
        Helper
        last edited by

        THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

        On 16/05/2011 at 23:55, xxxxxxxx wrote:

        As far as I know, the only area that has byteorder concern is WriteBytes and ReadBytes.  Everything else should be system independent as long as you stick with the same byte order across the board.

        I have had issues with Real, SReal, and LReal in transitioning from RXX to R12 though. In this case, it required using WriteSReal/ReadSReal to make things work.

        Considering that most contemporary Mac computers are using Intel it seems odd that there would be any issues between PC and Mac.  My suggestion is to do tests with the minimal settings being written and read and expand them until the issue appears so as to see if it is related to a certain type (esp. Reals!).  Remember that it could also be a 32-bit/64-bit issue.  Size of types varies between systems and bit width (unfortunately).  You may need to compensate for that as well.

        1 Reply Last reply Reply Quote 0
        • H Offline
          Helper
          last edited by

          THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

          On 17/05/2011 at 07:35, xxxxxxxx wrote:

          How do you write the presetfiles ?
          If not with functions from C4D, then with C++ standart library methods i think ?

          As I know from Python, Windows writes some additional bytes at the start of a document, as far as I remember.
          There, you must open the file anogher way. 'wb' instead of 'w', so that no extra bytes are written.
          Maybe its the same in C++, and readinh the file on Mac makes problems because of theese additional bytes ?

          Cheers,
          Niklas

          1 Reply Last reply Reply Quote 0
          • H Offline
            Helper
            last edited by

            THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

            On 17/05/2011 at 10:22, xxxxxxxx wrote:

            I write the files the same as above but using the C4D Write...() functions instead of read..  and a few subtle differences of course
             
            I am not sure why it is happening.  I really need to invest in a Mac in the near future,  I don't like being in the dark on the Mac side of things.  😞
             
            ~Shawn

            1 Reply Last reply Reply Quote 0
            • H Offline
              Helper
              last edited by

              THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

              On 17/05/2011 at 17:20, xxxxxxxx wrote:

              OMG this is so annoying..  I changed all the LReals to SReals and it still did not work..  The plugin will not load the preset file..  Here is the SavePreset() :

                
                
                
              //SAVE PRESET  
              //====================================================//  
              Bool PXGPlanet::SavePreset(GeListNode* node){  
                
                BaseObject *op = (BaseObject* )node;  
                BaseContainer *bc = op->GetDataInstance();  
                  
                //Declare the BaseFile  
                AutoAlloc<BaseFile> bf;  
                
                //Set the Filename  
                Filename file;  
                Filename dir = GeGetPluginPath() + "presets/planets";  
                file.SetDirectory(dir);  
                
              #ifdef C4D_R12  
                file.FileSelect(FILESELECTTYPE_ANYTHING, FILESELECT_SAVE, "Save Your Preset");      
                //Open the BaseFile for writing.  
                bf->Open(file, FILEOPEN_WRITE, FILEDIALOG_IGNOREOPEN, BYTEORDER_INTEL, MACTYPE_CINEMA, MACCREATOR_CINEMA);  
              #else  
                file.FileSelect(FSTYPE_ANYTHING, GE_SAVE, "Save Your Preset");  
                //Open the BaseFile for writing.  
                bf->Open(file, GE_WRITE, FILE_IGNOREOPEN, GE_INTEL, MACTYPE_CINEMA, MACCREATOR_CINEMA);  
              #endif  
                
                //Write PXG Attributes to the File.  
                  
                //GENERAL  
                //==========================================================//  
                    //General Shape  
                    bf->WriteLong(bc->GetLong(PLANETX_GENERAL_SHAPE));  
                    //Radius  
                    bf->WriteLReal(bc->GetReal(PLANETX_GENERAL_RADIUS));  
                    //Segments  
                    bf->WriteLReal(bc->GetReal(PLANETX_GENERAL_SEGMENTS));  
                    //Height  
                    bf->WriteLReal(bc->GetReal(PLANETX_GENERAL_HEIGHT));  
                    //Enable Rotation  
                    bf->WriteBool(bc->GetBool(PLANETX_GENERAL_ENABLE_ROTATION));  
                    //Rotation Direction  
                    bf->WriteLong(bc->GetLong(PLANETX_GENERAL_ROTATION_DIRECTION));  
                    //Rotation Speed  
                    bf->WriteLReal(bc->GetReal(PLANETX_GENERAL_ROTATION_SPEED));  
                    //Frame Rate FPS  
                    bf->WriteLReal(bc->GetReal(PLANETX_GENERAL_SCENEFPS));  
                
                //SURFACE  
                //==========================================================//  
                    //Surface Map  
                    bf->WriteFilename(bc->GetFilename(PLANETX_SURFACE_SURFACE_MAP));  
                    //Enable Specular  
                    bf->WriteBool(bc->GetBool(PLANETX_SURFACE_SPEC_ENABLE));  
                    //Specular Mode  
                    bf->WriteLong(bc->GetLong(PLANETX_SURFACE_SPEC_MODE));  
                    //Specular Width  
                    bf->WriteLReal(bc->GetReal(PLANETX_SURFACE_SPEC_WIDTH));  
                    //Specular Height  
                    bf->WriteLReal(bc->GetReal(PLANETX_SURFACE_SPEC_HEIGHT));  
                    //Specular Falloff  
                    bf->WriteLReal(bc->GetReal(PLANETX_SURFACE_SPEC_FALLOFF));  
                    //Specular Inner Width  
                    bf->WriteLReal(bc->GetReal(PLANETX_SURFACE_SPEC_INNER_WIDTH));  
                    //Enable Generator  
                    bf->WriteBool(bc->GetBool(PLANETX_SURFACE_ENABLE_GENERATOR));  
                      
              #ifdef C4D_R12  
                    //Sea Color  
                    bf->WriteLVector(bc->GetVector(PLANETX_SURFACE_SEA_COLOR));  
                    //Land Color  
                    bf->WriteLVector(bc->GetVector(PLANETX_SURFACE_LAND_COLOR));  
                    //Mountain Color  
                    bf->WriteLVector(bc->GetVector(PLANETX_SURFACE_MOUNTAIN_COLOR));  
              #else  
                    //Helpers  
                    Vector sea1 = bc->GetVector(PLANETX_SURFACE_SEA_COLOR);  
                    Vector land1 = bc->GetVector(PLANETX_SURFACE_LAND_COLOR);  
                    Vector mtn1 = bc->GetVector(PLANETX_SURFACE_MOUNTAIN_COLOR);  
                      
                    //Sea Color  
                    bf->WriteLVector(LVector(sea1.x, sea1.y, sea1.z));  
                    //Land Color  
                    bf->WriteLVector(LVector(land1.x, land1.y, land1.z));  
                    //Mountain Color  
                    bf->WriteLVector(LVector(mtn1.x, mtn1.y, mtn1.z));  
              #endif  
                
                    //Level  
                    bf->WriteLReal(bc->GetReal(PLANETX_SURFACE_LEVEL));  
                    //Frequnecy  
                    bf->WriteLReal(bc->GetReal(PLANETX_SURFACE_FREQUENCY));  
                    //Generator Reflection  
                    bf->WriteBool(bc->GetBool(PLANETX_SURFACE_GENERATOR_USE_REFLECTION));  
                    //Generator Elevation  
                    bf->WriteBool(bc->GetBool(PLANETX_SURFACE_GENERATOR_USE_ELEVATION));  
                    //Reflection Strength  
                    bf->WriteLReal(bc->GetReal(PLANETX_SURFACE_SURFACE_REFLECTION_GEN));  
                    //Elevation Strength  
                    bf->WriteLReal(bc->GetReal(PLANETX_SURFACE_ELEVATION_STRENGTH_GEN));  
                    //Use Reflection Map  
                    bf->WriteBool(bc->GetBool(PLANETX_SURFACE_REFLECTION_USE_MAP));  
                    //Reflection Map   
                    bf->WriteFilename(bc->GetFilename(PLANETX_SURFACE_REFLECTION_MAP));  
                    //Reflection Mix  
                    bf->WriteLReal(bc->GetReal(PLANETX_SURFACE_SURFACE_REFLECTION_MMIX));  
                    //Surface Reflection  
                    bf->WriteLReal(bc->GetReal(PLANETX_SURFACE_SURFACE_REFLECTION));  
                    //Elevation Map   
                    bf->WriteFilename(bc->GetFilename(PLANETX_SURFACE_ELEVATION_MAP));  
                    //Elevation Strength  
                    bf->WriteLReal(bc->GetReal(PLANETX_SURFACE_ELEVATION_STRENGTH));  
                    //Use Normal Map  
                    bf->WriteBool(bc->GetBool(PLANETX_SURFACE_USE_NORMAL_MAP));  
                    //Normal Map   
                    bf->WriteFilename(bc->GetFilename(PLANETX_SURFACE_NORMAL_MAP));  
                    //Normal Strength  
                    bf->WriteLReal(bc->GetReal(PLANETX_SURFACE_NORMAL_STRENGTH));  
                
                //CLOUDS  
                //==========================================================//  
                    //Enable Clouds  
                    bf->WriteBool(bc->GetBool(PLANETX_CLOUDS_ENABLE));  
                    //Cloud Map   
                    bf->WriteFilename(bc->GetFilename(PLANETX_CLOUD_CLOUD_MAP));  
                
              #ifdef C4D_R12      
                    //Cloud Color  
                    bf->WriteLVector(bc->GetVector(PLANETX_CLOUD_COLOR));  
              #else  
                    //Helper  
                    Vector cldclr = bc->GetVector(PLANETX_CLOUD_COLOR);  
                    bf->WriteLVector(LVector(cldclr.x, cldclr.y, cldclr.z));  
              #endif  
                    //Brightness  
                    bf->WriteLReal(bc->GetReal(PLANETX_CLOUD_BRIGHTNESS));  
                    //Thickness  
                    bf->WriteLReal(bc->GetReal(PLANETX_CLOUD_THICKNESS));  
                    //Elevation  
                    bf->WriteLReal(bc->GetReal(PLANETX_CLOUD_ELEVATION));  
                    //Use Particles  
                    bf->WriteBool(bc->GetBool(PLANETX_CLOUD_ENABLE_SHADOWS));  
                
                //ATMOSPHERE  
                //==========================================================//  
                    //Enable Atmosphere  
                    bf->WriteBool(bc->GetBool(PLANETX_ATMOSPHERE_ENABLE));  
                      
                    //Atmosphere Color  
                    Gradient *atmColor =(Gradient* )bc->GetCustomDataType(PLANETX_ATMOSPHERE_COLOR,CUSTOMDATATYPE_GRADIENT);  
                
                    LONG knotCount = atmColor->GetKnotCount();  
                    bf->WriteLong(knotCount);  
                
                    for(int i = 0; i < knotCount; i++){  
                        GradientKnot knot = atmColor->GetKnot(i);  
                
              #ifdef C4D_R12  
                        bf->WriteLVector(knot.col);  
              #else  
                        //Helper   
                        Vector mycol = knot.col;  
                        bf->WriteLVector(LVector(mycol.x, mycol.y, mycol.z));  
              #endif  
                
                        bf->WriteLReal(knot.pos);  
                    }  
                
                    //Transparency Color  
                    Gradient *atmtColor =(Gradient* )bc->GetCustomDataType(PLANETX_ATMOSPHERE_TRANSPARENCY, CUSTOMDATATYPE_GRADIENT);  
                
                    LONG tknotCount = atmtColor->GetKnotCount();  
                    bf->WriteLong(tknotCount);  
                
                    for(int i = 0; i < tknotCount; i++){  
                        GradientKnot tknot = atmtColor->GetKnot(i);  
                
              #ifdef C4D_R12  
                        bf->WriteLVector(tknot.col);  
              #else  
                        //Helper  
                        Vector mytcol = tknot.col;  
                        bf->WriteLVector(LVector(mytcol.x, mytcol.y, mytcol.z));  
              #endif  
                
                        bf->WriteLReal(tknot.pos);  
                    }  
                
              #ifdef C4D_R12  
                    //Haze Color  
                    bf->WriteLVector(bc->GetVector(PLANETX_ATMOSPHERE_HAZE_COLOR));  
              #else  
                    //Helper  
                    Vector hzcol = bc->GetVector(PLANETX_ATMOSPHERE_HAZE_COLOR);  
                      
                    bf->WriteLVector(LVector(hzcol.x, hzcol.y, hzcol.z));  
              #endif  
                
                    //Atmosphere Thickness  
                    bf->WriteLReal(bc->GetReal(PLANETX_ATMOSPHERE_THICKNESS));  
                    //Enable Glow  
                    bf->WriteBool(bc->GetBool(PLANETX_ATMOSPHERE_ENABLE_GLOW));  
                    //Use Material Color  
                    bf->WriteBool(bc->GetBool(PLANETX_ATMOSPHERE_GLOW_USE_COLOR));  
                    //Glow Color  
              #ifdef C4D_R12  
                    bf->WriteLVector(bc->GetVector(PLANETX_ATMOSPHERE_GLOW_COLOR));  
              #else  
                    //Helper  
                    Vector glcol = bc->GetVector(PLANETX_ATMOSPHERE_GLOW_COLOR);  
                    bf->WriteLVector(LVector(glcol.x, glcol.y, glcol.z));  
              #endif  
                
                    //Brightness  
                    bf->WriteLReal(bc->GetReal(PLANETX_ATMOSPHERE_GLOW_BRIGHTNESS));  
                    //Inner Strength  
                    bf->WriteLReal(bc->GetReal(PLANETX_ATMOSPHERE_GLOW_INNERSTRENGTH));  
                    //Outer Strength  
                    bf->WriteLReal(bc->GetReal(PLANETX_ATMOSPHERE_GLOW_OUTERSTRENGTH));  
                    //Radius  
                    bf->WriteLReal(bc->GetReal(PLANETX_ATMOSPHERE_GLOW_RADIUS));  
                    //Random  
                    bf->WriteLReal(bc->GetReal(PLANETX_ATMOSPHERE_GLOW_RANDOM));  
                    //Frequency  
                    bf->WriteLReal(bc->GetReal(PLANETX_ATMOSPHERE_GLOW_FREQUENCY));  
                
                
                    //LIGHTS  
                    //==========================================================//  
                    //Enable Lights  
                    bf->WriteBool(bc->GetBool(PLANETX_LIGHTS_ENABLE));  
                    //City Lights Map  
                    bf->WriteFilename(bc->GetFilename(PLANETX_CITY_LIGHTS_MAP));  
                    //Brightness  
                    bf->WriteLReal(bc->GetReal(PLANETX_CITY_LIGHTS_BRIGHTNESS));  
                    //Lights Color  
              #ifdef C4D_R12  
                    bf->WriteLVector(bc->GetVector(PLANETX_CITY_LIGHTS_COLOR));  
              #else  
                    //Helper  
                    Vector clcol = bc->GetVector(PLANETX_CITY_LIGHTS_COLOR);  
                    bf->WriteLVector(LVector(clcol.x, clcol.y, clcol.z));  
              #endif  
                
                
                    bc->SetString(PXG_CURRENT_PRESET_TEXT, file.GetFileString());  
                
                    bf->Close();  
                
                    //READ ONLY  
                    if(bc->GetBool(PLANETX_GENERAL_SAVE_READONLY) == TRUE){  
                
              #ifdef C4D_R10  
                        GePrint("THIS FEATURE IS NOT AVAILABLE IN R10");  
              #else  
                        GeFSetAttributes(file, GE_FILE_ATTRIBUTE_READONLY, GE_FILE_ATTRIBUTE_READONLY);  
                        GePrint("FILE SAVED AS READ ONLY");  
              #endif  
                    }  
                      
                return TRUE;  
              }  
                
              

              Does anyone notice anything I botched up that would prevent it from working on a Mac?

              Man this is annoying me tonight.
              Thanks,

              ~Shawn

              1 Reply Last reply Reply Quote 0
              • H Offline
                Helper
                last edited by

                THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                On 17/05/2011 at 23:13, xxxxxxxx wrote:

                Originally posted by xxxxxxxx

                [...] Does anyone notice anything I botched up that would prevent it from working on a Mac?Man this is annoying me tonight.Thanks,~Shawn

                Do yourself a favour and implement some basic error checking in the code and add some detailed console error messages for the customer/tester.

                Best regards,

                Wilfried

                1 Reply Last reply Reply Quote 0
                • H Offline
                  Helper
                  last edited by

                  THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                  On 20/05/2011 at 05:48, xxxxxxxx wrote:

                  okay so after some testing, we have determined that the save preset function is saving Filenames from the attributes manager with full paths.  So for example the plugin uses external textures like test.jpg.  So the filename field gets saved as (doing this on my phone and don't havr backslash)  C:/Program Files/Maxon/Plugins/PXG Planet/Presets/Test.jpg.   So when that prset gets opened on a mac that path doesn't exist which leads to the preset not opening properly.   How can I get the preset to save the file name and location so that it can ne read by both Mac ane Windos folder structures?

                  Thanks.  Shawn

                  1 Reply Last reply Reply Quote 0
                  • H Offline
                    Helper
                    last edited by

                    THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                    On 20/05/2011 at 09:54, xxxxxxxx wrote:

                    To save just the file name itself, use this:

                    Filename fn = bc->GetFilename(xxx);
                    fn = fn.GetFile();

                    As for location, that will vary from system to system (Windows, MacOS, drive or volume, etc.).  Best to use GeGetPluginPath() to prepend to the filename after reading and just store the file name (Test.jpg) in the presets file.

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post