Esempio n. 1
0
        private bool getNeckLink()
        {
            DescID cid = new DescID(new DescLevel(SKELETT_HALSWIRBEL, C4dApi.DTYPE_LONG, 0));

            BaseContainer bcHalsWirbel = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_LONG);

            bcHalsWirbel.SetString(C4dApi.DESC_NAME, "Halswirbel Knochen");
            //Definiert den minimalen Wert
            bcHalsWirbel.SetInt64(C4dApi.DESC_MIN, 0);
            //Definiert den maximalen Wert
            bcHalsWirbel.SetInt64(C4dApi.DESC_MAX, 15);
            if (Schwanz == true)
            {
                bcHalsWirbel.SetBool(C4dApi.DESC_HIDE, false);
                //Schwanz = false;
            }
            else
            {
                bcHalsWirbel.SetBool(C4dApi.DESC_HIDE, true);
            }


            if (!descparams.Desc.SetParameter(cid, bcHalsWirbel, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES))))
            {
                return(true);
            }

            return(false);
        }
Esempio n. 2
0
        private bool getFingers(BaseContainer dataKoerper)
        {
            //Erstellt ein weiteres Feld für die Finger
            DescID        cid      = new DescID(new DescLevel(SKELETT_FINGER, C4dApi.DTYPE_LONG, 0));
            BaseContainer bcFinger = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_LONG);

            bcFinger.SetString(C4dApi.DESC_NAME, "Finger");
            //Definiert den minimalen Wert
            bcFinger.SetInt64(C4dApi.DESC_MIN, 0);
            //Definiert den maximalen Wert
            bcFinger.SetInt64(C4dApi.DESC_MAX, 5);
            if (Hand == true)
            {
                if (dataKoerper.GetInt64(SKELETT_HAND) > 0)
                {
                    bcFinger.SetBool(C4dApi.DESC_HIDE, false);
                }
                else
                {
                    bcFinger.SetBool(C4dApi.DESC_HIDE, true);
                }
            }
            else
            {
                bcFinger.SetBool(C4dApi.DESC_HIDE, true);
            }
            if (!descparams.Desc.SetParameter(cid, bcFinger, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES))))
            {
                return(true);
            }

            return(false);
        }
Esempio n. 3
0
        private bool getComboBoxCharakter()
        {
            DescID cid = new DescID(new DescLevel(SKELETT_TYPE, C4dApi.DTYPE_LONG, 0));

            //Erstellt das Label vor die Combobox
            BaseContainer bcComboName = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_LONG);

            bcComboName.SetString(C4dApi.DESC_NAME, "Skelett wählen");

            //Erstellen der ComboBox mit Werten
            BaseContainer bcComboValues = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_NONE);

            bcComboValues.SetString(0, "Skelett");
            bcComboValues.SetString(1, "Männlich");
            bcComboValues.SetString(2, "Weiblich");
            bcComboValues.SetString(3, "4 Beiner");

            //Führt beide Container zusammen
            bcComboName.SetContainer(C4dApi.DESC_CYCLE, bcComboValues);

            //Erstellt die Combobox in dem Reiter Object, wegen "ID_OBJECTPROPERTIES"
            if (!descparams.Desc.SetParameter(cid, bcComboName, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES))))
            {
                return(true);
            }

            return(false);
        }
Esempio n. 4
0
        public override bool GetDDescription(GeListNode node, DDescriptionParams descparams)
        {
            if (!descparams.Desc.LoadDescription("tbase"))
            {
                return(false);
            }

            VisitProps(delegate(int itemID, string itemName, PropertyInfo pi)
            {
                DescID cid       = new DescID(new DescLevel(itemID, C4dApi.DTYPE_LONG, 0));
                BaseContainer bc = null;
                if (pi.PropertyType == typeof(int))
                {
                    bc = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_LONG);
                }
                else if (pi.PropertyType == typeof(string))
                {
                    bc = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_STRING);
                }
                bc.SetString(C4dApi.DESC_NAME, itemName);
                descparams.Desc.SetParameter(cid, bc, new DescID(new DescLevel(C4dApi.ID_TAGPROPERTIES)));
            });

            descparams.Flags |= DESCFLAGS_DESC.DESCFLAGS_DESC_LOADED;

            return(true); // base.GetDDescription(node, descparams);
        }
Esempio n. 5
0
        private bool getTail()
        {
            DescID cid = new DescID(new DescLevel(SKELETT_SCHWANZ, C4dApi.DTYPE_LONG, 0));

            BaseContainer bcSchwanz = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_LONG);

            bcSchwanz.SetString(C4dApi.DESC_NAME, "Schwanz Knochen");
            //Definiert den minimalen Wert
            bcSchwanz.SetInt64(C4dApi.DESC_MIN, 0);
            //Definiert den maximalen Wert
            bcSchwanz.SetInt64(C4dApi.DESC_MAX, 5);
            if (Schwanz == true)
            {
                bcSchwanz.SetBool(C4dApi.DESC_HIDE, false);
                Schwanz = false;
            }
            else
            {
                bcSchwanz.SetBool(C4dApi.DESC_HIDE, true);
            }


            if (!descparams.Desc.SetParameter(cid, bcSchwanz, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES))))
            {
                return(true);
            }

            return(false);
        }
Esempio n. 6
0
        private bool getLegs(BaseContainer dataKoerper)
        {
            DescID        cid            = new DescID(new DescLevel(SKELETT_UNTERKOERPER_BOX, C4dApi.DTYPE_BOOL, 0));
            BaseContainer bcUnterKoerper = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_BOOL);

            bcUnterKoerper.SetString(C4dApi.DESC_NAME, "Beine Aktivieren");
            bcUnterKoerper.SetBool(C4dApi.DESC_DEFAULT, true);
            // Create the boolean check box under the previously created sub group (CIRCLEOBJECT_SUBGROUP)
            if (!descparams.Desc.SetParameter(cid, bcUnterKoerper, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES))))
            {
                return(true);
            }

            BaseContainer dataUnterKoerper = GetDataInstance(node);

            //Erstellt ein weiteres Feld für die Beine
            cid = new DescID(new DescLevel(SKELETT_BEINE, C4dApi.DTYPE_LONG, 0));
            BaseContainer bcBeine = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_LONG);

            bcBeine.SetString(C4dApi.DESC_NAME, "Beine");
            //Definiert den minimalen Wert
            bcBeine.SetInt64(C4dApi.DESC_MIN, 0);
            //Definiert den maximalen Wert


            bool temp2 = dataKoerper.GetBool(SKELETT_UNTERKOERPER_BOX);

            if (temp2 == true && dataKoerper.GetInt64(SKELETT_TYPE) == 3)//Schaltung zwischen 4 Beiner und Menschen Ist der Type ein 4 Beiner so ist die Maximal zahl der Beine 4
            {
                bcBeine.SetInt64(C4dApi.DESC_MAX, 4);
                bcBeine.SetBool(C4dApi.DESC_HIDE, false);
                Bein    = true;
                Schwanz = true;
            }
            else if (temp2 == true && dataKoerper.GetInt64(SKELETT_TYPE) != 3)//Schaltung zwischen 4 Beiner und Menschen Ist der Type ein Mensch so ist die Maximal zahl der Beine 2
            {
                bcBeine.SetInt64(C4dApi.DESC_MAX, 2);
                bcBeine.SetBool(C4dApi.DESC_HIDE, false);
                Bein = true;
            }
            else
            {
                bcBeine.SetBool(C4dApi.DESC_HIDE, true);
                Bein = false;
            }

            if (!descparams.Desc.SetParameter(cid, bcBeine, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES))))
            {
                return(true);
            }

            return(false);
        }
Esempio n. 7
0
        private bool getWeightBtn()
        {
            DescID        cid      = new DescID(new DescLevel(SKELETT_WICHTUNG_BTN, C4dApi.DTYPE_BUTTON, 0));
            BaseContainer bcButton = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_BUTTON);

            //Erstellt einen GUI (Button)
            bcButton.SetInt64(C4dApi.DESC_CUSTOMGUI, C4dApi.DTYPE_BUTTON);

            //Erstellt das Label für den Button
            bcButton.SetString(C4dApi.DESC_NAME, "Wichtung setzen");
            if (!descparams.Desc.SetParameter(cid, bcButton, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES))))
            {
                return(true);
            }
            return(false);
        }
Esempio n. 8
0
        private bool getFeets(BaseContainer dataKoerper)
        {
            //Erstellt ein weiteres Feld für die Füße
            DescID        cid      = new DescID(new DescLevel(SKELETT_FUESSE, C4dApi.DTYPE_LONG, 0));
            BaseContainer bcFuesse = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_LONG);

            bcFuesse.SetString(C4dApi.DESC_NAME, "Füße");
            //Definiert den minimalen Wert
            bcFuesse.SetInt64(C4dApi.DESC_MIN, 0);
            //Definiert den maximalen Wert
            bcFuesse.SetInt64(C4dApi.DESC_MAX, 2);
            if (Bein == true && Schwanz == false)
            {
                if (dataKoerper.GetInt64(SKELETT_BEINE) > 0)
                {
                    bcFuesse.SetInt64(C4dApi.DESC_MAX, 2);
                    bcFuesse.SetBool(C4dApi.DESC_HIDE, false);
                }
                else
                {
                    bcFuesse.SetBool(C4dApi.DESC_HIDE, true);
                }
            }
            else if (Bein == true && Schwanz == true)
            {
                if (dataKoerper.GetInt64(SKELETT_BEINE) > 0)
                {
                    bcFuesse.SetInt64(C4dApi.DESC_MAX, 4);
                    bcFuesse.SetBool(C4dApi.DESC_HIDE, false);
                }
                else
                {
                    bcFuesse.SetBool(C4dApi.DESC_HIDE, true);
                }
            }
            else
            {
                bcFuesse.SetBool(C4dApi.DESC_HIDE, true);
            }

            if (!descparams.Desc.SetParameter(cid, bcFuesse, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES))))
            {
                return(true);
            }

            return(false);
        }
Esempio n. 9
0
        private bool getTorso()
        {
            DescID cid = new DescID(new DescLevel(SKELETT_OBERKOERPER_BOX, C4dApi.DTYPE_BOOL, 0));

            BaseContainer bcOberKoerper = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_BOOL);

            bcOberKoerper.SetString(C4dApi.DESC_NAME, "Arme Aktivieren");
            bcOberKoerper.SetBool(C4dApi.DESC_DEFAULT, true);
            bcOberKoerper.SetBool(C4dApi.DESC_HIDE, false);

            // Create the boolean check box under the previously created sub group (CIRCLEOBJECT_SUBGROUP)
            if (!descparams.Desc.SetParameter(cid, bcOberKoerper, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES))))
            {
                return(true);
            }

            return(false);
        }
Esempio n. 10
0
        private bool getSeperatorTailSelector()
        {
            DescID cid = new DescID(new DescLevel(SKELETT_TRENNER_SCHWANZ_OBJAUSWAHL, C4dApi.DTYPE_SEPARATOR, 0));

            BaseContainer bcTrennerSchwanzAuswahl = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_SEPARATOR);

            bcTrennerSchwanzAuswahl.SetInt64(C4dApi.DESC_CUSTOMGUI, C4dApi.DTYPE_SEPARATOR);
            bcTrennerSchwanzAuswahl.SetBool(C4dApi.DESC_SEPARATORLINE, true);
            bcTrennerSchwanzAuswahl.SetInt64(C4dApi.DESC_ANIMATE, C4dApi.DESC_ANIMATE_OFF);
            bcTrennerSchwanzAuswahl.SetBool(C4dApi.DESC_REMOVEABLE, false);
            bcTrennerSchwanzAuswahl.SetString(C4dApi.DESC_NAME, "");
            bcTrennerSchwanzAuswahl.SetString(C4dApi.DESC_SHORT_NAME, "");

            if (!descparams.Desc.SetParameter(cid, bcTrennerSchwanzAuswahl, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES))))
            {
                return(true);
            }

            return(false);
        }
Esempio n. 11
0
        private bool getSeperatorFeetSpine()
        {
            DescID cid = new DescID(new DescLevel(SKELETT_TRENNER_BEINE_WIRBEL, C4dApi.DTYPE_SEPARATOR, 0));

            BaseContainer bcTrennerBeineWirbel = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_SEPARATOR);

            bcTrennerBeineWirbel.SetInt64(C4dApi.DESC_CUSTOMGUI, C4dApi.DTYPE_SEPARATOR);
            bcTrennerBeineWirbel.SetBool(C4dApi.DESC_SEPARATORLINE, true);
            bcTrennerBeineWirbel.SetInt64(C4dApi.DESC_ANIMATE, C4dApi.DESC_ANIMATE_OFF);
            bcTrennerBeineWirbel.SetBool(C4dApi.DESC_REMOVEABLE, false);
            bcTrennerBeineWirbel.SetString(C4dApi.DESC_NAME, "");
            bcTrennerBeineWirbel.SetString(C4dApi.DESC_SHORT_NAME, "");

            if (!descparams.Desc.SetParameter(cid, bcTrennerBeineWirbel, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES))))
            {
                return(true);
            }

            return(false);
        }
Esempio n. 12
0
        private bool getArms(BaseContainer dataKoerper)
        {
            //Erstellt ein weiteres Feld für die Arme
            DescID        cid    = new DescID(new DescLevel(SKELETT_ARME, C4dApi.DTYPE_LONG, 0));
            BaseContainer bcArme = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_REAL);

            bcArme.SetString(C4dApi.DESC_NAME, "Arme");
            //Definiert den minimalen Wert
            bcArme.SetInt64(C4dApi.DESC_MIN, 0);
            //Definiert den maximalen Wert
            bcArme.SetInt64(C4dApi.DESC_MAX, 2);

            bool temp = dataKoerper.GetBool(SKELETT_OBERKOERPER_BOX);

            if (dataKoerper.GetInt64(SKELETT_TYPE) == 3)
            {
                temp = false;
                bcArme.SetInt64(C4dApi.DESC_DEFAULT, 0);
            }

            if (temp == true)
            {
                bcArme.SetBool(C4dApi.DESC_HIDE, false);
                Hand = true;
            }
            else
            {
                bcArme.SetBool(C4dApi.DESC_HIDE, true);
                Hand = false;
            }

            //bcArme.SetBool(C4dApi.DESC_HIDE, true);
            if (!descparams.Desc.SetParameter(cid, bcArme, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES))))
            {
                return(true);
            }

            return(false);
        }
Esempio n. 13
0
        private bool getHands(BaseContainer dataKoerper)
        {
            //Erstellt ein weiteres Feld für die Hände
            DescID        cid    = new DescID(new DescLevel(SKELETT_HAND, C4dApi.DTYPE_LONG, 0));
            BaseContainer bcHand = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_LONG);

            bcHand.SetString(C4dApi.DESC_NAME, "Hände");
            //Definiert den minimalen Wert
            bcHand.SetInt64(C4dApi.DESC_MIN, 0);
            //Definiert den maximalen Wert

            if (Hand == true)
            {
                //C4dApi.GePrint("anzahl Arme = " + dataKoerper.GetInt64(SKELETT_ARME));
                if (dataKoerper.GetInt64(SKELETT_ARME) > 0)
                {
                    bcHand.SetInt64(C4dApi.DESC_MAX, dataKoerper.GetInt64(SKELETT_ARME));
                    bcHand.SetBool(C4dApi.DESC_HIDE, false);
                }
                else
                {
                    bcHand.SetBool(C4dApi.DESC_HIDE, true);
                }
            }
            else
            {
                bcHand.SetBool(C4dApi.DESC_HIDE, true);
            }

            if (!descparams.Desc.SetParameter(cid, bcHand, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES))))
            {
                return(true);
            }

            return(false);
        }
Esempio n. 14
0
        private bool getToes(BaseContainer dataKoerper)
        {
            //Erstellt ein weiteres Feld für die Zehen
            DescID        cid     = new DescID(new DescLevel(SKELETT_ZEHEN, C4dApi.DTYPE_LONG, 0));
            BaseContainer bcZehen = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_LONG);

            bcZehen.SetString(C4dApi.DESC_NAME, "Zehen");
            //Definiert den minimalen Wert
            bcZehen.SetInt64(C4dApi.DESC_MIN, 0);
            //Definiert den maximalen Wert
            bcZehen.SetInt64(C4dApi.DESC_MAX, 5);
            BaseContainer dataUnterKoerper = GetDataInstance(node);

            if (Bein == true && dataUnterKoerper.GetInt64(SKELETT_TYPE) != 3)//Überprüfung auf 4 Beiner, ist es kein 4 Beiner so wird das Feld Zehen eingeblendet
            {
                if (dataKoerper.GetInt64(SKELETT_FUESSE) > 0)
                {
                    bcZehen.SetBool(C4dApi.DESC_HIDE, false);
                }
                else
                {
                    bcZehen.SetBool(C4dApi.DESC_HIDE, true);
                }
            }
            else
            {
                bcZehen.SetBool(C4dApi.DESC_HIDE, true);
            }

            if (!descparams.Desc.SetParameter(cid, bcZehen, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES))))
            {
                return(true);
            }

            return(false);
        }
Esempio n. 15
0
        /*
         * public override bool GetDEnabling(GeListNode node, DescID id, GeData t_data,DESCFLAGS_ENABLE flags, BaseContainer itemdesc)
         * {
         *  int inter;
         *  BaseContainer data = ((BaseObject)node).GetDataInstance();
         *  switch (id[0].id)
         *  {
         *      case SPLINEOBJECT_SUB:
         *              inter=data.GetInt32(SPLINEOBJECT_INTERPOLATION);
         *              return inter==SPLINEOBJECT_INTERPOLATION_NATURAL || inter==SPLINEOBJECT_INTERPOLATION_UNIFORM;
         *
         *      case SPLINEOBJECT_ANGLE:
         *              inter = data.GetInt32(SPLINEOBJECT_INTERPOLATION);
         *              return inter==SPLINEOBJECT_INTERPOLATION_ADAPTIVE || inter==SPLINEOBJECT_INTERPOLATION_SUBDIV;
         *
         *      case SPLINEOBJECT_MAXIMUMLENGTH:
         *              return data.GetInt32(SPLINEOBJECT_INTERPOLATION)==SPLINEOBJECT_INTERPOLATION_SUBDIV;
         *  }
         *  return true;
         * }
         */
        public override bool GetDDescription(GeListNode node, DDescriptionParams descparams)
        {
            // The main part of this code is taken from the "LookAtCamera.cpp" file from the original C4D API samples.
            // Be aware that the original LookAtCamera is not an object created from the Plugin menu but a
            // Tag type that can be added to existing objects from the "Objekte" context (right mouse button) menu under
            // the "Cinema4dsdk Tags" sub menu.

            // TODO: whatever this might be good for: if (!singleid || cid.IsPartOf(*singleid, NULL)) // important to check for speedup c4d!
            // {


            // This will load the main object attribute tabs ("Basis", "Koord", "Objekt")
            if (!descparams.Desc.LoadDescription("obase"))
            {
                return(false);
            }

            //////////////////////////////////////////////////////////////////////////////////////
            // Create a double value named radius on the "Objekt" tab's main level
            DescID        cid      = new DescID(new DescLevel(CIRCLEOBJECT_RAD, C4dApi.DTYPE_LONG, 0));   // The ID of the radius value (CIRCLEOBJECT_RAD)
            BaseContainer bcRadius = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_REAL);                  // The type of the radius value (REAL)

            bcRadius.SetString(C4dApi.DESC_NAME, "Radius");                                               // The user interface name (Radius)
            bcRadius.SetInt32(C4dApi.DESC_DEFAULT, 44);                                                   // The default value (44, but overridden to 200 in the Init method)
            // Create the new radius value as a child of the "Objekt" Tab (ID_OBJECTPROPERTIES)
            if (!descparams.Desc.SetParameter(cid, bcRadius, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES))))
            {
                return(true);
            }


            /////////////////////////////////////////////////////////////////////////////////////
            // Create an entirely new Tab (called "Ein schöner Tab")
            cid = new DescID(new DescLevel(CIRCLEOBJECT_NEWTAB, C4dApi.DTYPE_GROUP, 0));
            BaseContainer bcMaingroup = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_GROUP);

            bcMaingroup.SetString(C4dApi.DESC_NAME, "Ein schöner Tab");
            // Create the new Group on the top level (DecLevel(0))
            if (!descparams.Desc.SetParameter(cid, bcMaingroup, new DescID(new DescLevel(0))))
            {
                return(true);
            }

            /////////////////////////////////////////////////////////////////////////////////////
            // Create an new sub group (called "Hübsches Grüppchen")
            cid = new DescID(new DescLevel(CIRCLEOBJECT_SUBGROUP, C4dApi.DTYPE_GROUP, 0));
            BaseContainer bcSubgroup = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_GROUP);

            bcSubgroup.SetString(C4dApi.DESC_NAME, "Hübsches Grüppchen");
            // Create the sub group on the "Ein schöner Tab" main tab (CIRCLEOBJECT_NEWTAB)
            if (!descparams.Desc.SetParameter(cid, bcSubgroup, new DescID(new DescLevel(CIRCLEOBJECT_NEWTAB))))
            {
                return(true);
            }

            /////////////////////////////////////////////////////////////////////////////////////
            // Create an new boolean value (as a checkbox) called "Check mich"
            cid = new DescID(new DescLevel(CIRCLEOBJECT_CHECKME, C4dApi.DTYPE_BOOL, 0));
            BaseContainer bcCheckMich = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_BOOL);

            bcCheckMich.SetString(C4dApi.DESC_NAME, "Check mich");
            bcCheckMich.SetBool(C4dApi.DESC_DEFAULT, true);
            // Create the boolean check box under the previously created sub group (CIRCLEOBJECT_SUBGROUP)
            if (!descparams.Desc.SetParameter(cid, bcCheckMich, new DescID(new DescLevel(CIRCLEOBJECT_SUBGROUP))))
            {
                return(true);
            }


            descparams.Flags |= DESCFLAGS_DESC.DESCFLAGS_DESC_LOADED;
            return(true); // base.GetDDescription(node, descparams);
        }
Esempio n. 16
0
        // Different ways how data (The...) is obtained and written.
        // Example 1: An override gets the baseTag/BaseObject:
        //
        // Working example from DoubleCircle:
        // public override retval OverrideMethod(..., BaseTag tag, ...)
        // {
        //    BaseContainer di = tag.GetDataInstance();                       // Get the data instance from the object
        //    int theIntContents = di.GetInt(GENERAL_TAG_THEINT);             // Retrieve the data from the data instance

        //  Question: Would it be sufficient to simply use this.GetDataInstance()



        public override bool GetDDescription(GeListNode node, DDescriptionParams descparams)
        {
            // The main part of this code is taken from the "LookAtCamera.cpp" file from the original C4D API samples.

            // TODO: whatever this might be good for: if (!singleid || cid.IsPartOf(*singleid, NULL)) // important to check for speedup c4d!
            // {
            if (!descparams.Desc.LoadDescription("tbase"))
            {
                return(false);
            }


            // According to https://developers.maxon.net/docs/Cinema4DCPPSDK/html/class_description.html and
            // with #define DESCID_ROOT DescID(DescLevel(1000491, 0, 0)) as set in lib_description.h
            // Set the tag's name to something meaningful (other than "Base Tag" or "Basis Tag"
            DescID        nCid    = new DescID(new DescLevel(1000491, 0, 0));                    // The ID of the radius value (GENERAL_TAG_THEINT)
            BaseContainer nBc     = descparams.Desc.GetParameterI(nCid, null);                   // The type of the radius value (LONG)
            string        OldName = nBc.GetString(C4dApi.DESC_NAME);

            nBc.SetString(C4dApi.DESC_NAME, TagName);



            //////////////////////////////////////////////////////////////////////////////////////
            // Create an int value named TheInt on the "Base" tab's main level
            DescID        cid = new DescID(new DescLevel(GENERAL_TAG_THEINT, C4dApi.DTYPE_LONG, 0)); // The ID of the radius value (GENERAL_TAG_THEINT)
            BaseContainer bc  = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_LONG);                  // The type of the radius value (LONG)

            bc.SetString(C4dApi.DESC_NAME, "TheInt");                                                // The user interface name (TheInt)
            bc.SetInt32(C4dApi.DESC_DEFAULT, 44);                                                    // The default value (44, but overridden to 42 in the Init method)
            if (!descparams.Desc.SetParameter(cid, bc, new DescID(new DescLevel(C4dApi.ID_TAGPROPERTIES))))
            {
                return(true);
            }


            //////////////////////////////////////////////////////////////////////////////////////
            // Create a string value named TheName on the "Base" tab's main level
            cid = new DescID(new DescLevel(GENERAL_TAG_THENAME, C4dApi.DTYPE_LONG, 0)); // The ID of the radius value (GENERAL_TAG_THENAME)
            bc  = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_STRING);                 // The type of the radius value (STRING)
            bc.SetString(C4dApi.DESC_NAME, "TheString");                                // The user interface name (TheName)
            bc.SetString(C4dApi.DESC_DEFAULT, "Worscht");                               // The default value (Worscht, but overridden to Horst in the Init method)
            if (!descparams.Desc.SetParameter(cid, bc, new DescID(new DescLevel(C4dApi.ID_TAGPROPERTIES))))
            {
                return(true);
            }



            /*
             * /////////////////////////////////////////////////////////////////////////////////////
             * // Create an entirely new Tab (called "Ein schöner Tab")
             * DescID cid = new DescID(new DescLevel(CIRCLEOBJECT_NEWTAB, C4dApi.DTYPE_GROUP, 0));
             * BaseContainer bcMaingroup = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_GROUP);
             * bcMaingroup.SetString(C4dApi.DESC_NAME, "Ein schöner Tab");
             * // Create the new Group on the top level (DecLevel(0))
             * if (!descparams.Desc.SetParameter(cid, bcMaingroup, new DescID(new DescLevel(0))))
             *  return true;
             *
             * /////////////////////////////////////////////////////////////////////////////////////
             * // Create an new sub group (called "Hübsches Grüppchen")
             * cid = new DescID(new DescLevel(CIRCLEOBJECT_SUBGROUP, C4dApi.DTYPE_GROUP, 0));
             * BaseContainer bcSubgroup = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_GROUP);
             * bcSubgroup.SetString(C4dApi.DESC_NAME, "Hübsches Grüppchen");
             * // Create the sub group on the "Ein schöner Tab" main tab (CIRCLEOBJECT_NEWTAB)
             * if (!descparams.Desc.SetParameter(cid, bcSubgroup, new DescID(new DescLevel(CIRCLEOBJECT_NEWTAB))))
             *  return true;
             *
             * /////////////////////////////////////////////////////////////////////////////////////
             * // Create an new boolean value (as a checkbox) called "Check mich"
             * cid = new DescID(new DescLevel(CIRCLEOBJECT_CHECKME, C4dApi.DTYPE_BOOL, 0));
             * BaseContainer bcCheckMich = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_BOOL);
             * bcCheckMich.SetString(C4dApi.DESC_NAME, "Check mich");
             * bcCheckMich.SetBool(C4dApi.DESC_DEFAULT, true);
             * // Create the boolean check box under the previously created sub group (CIRCLEOBJECT_SUBGROUP)
             * if (!descparams.Desc.SetParameter(cid, bcCheckMich, new DescID(new DescLevel(CIRCLEOBJECT_SUBGROUP))))
             *  return true;
             */

            descparams.Flags |= DESCFLAGS_DESC.DESCFLAGS_DESC_LOADED;

            return(true); // base.GetDDescription(node, descparams);
        }
Esempio n. 17
0
        private bool generate()
        {
            // Diese Abfrage lädt die den Reiter Objekt
            if (!descparams.Desc.LoadDescription("obase"))
            {
                return(false);
            }

            //Erstellen der ComboBox zur auswahl des Skelettes
            if (this.getComboBoxCharakter() == true)
            {
                return(false);
            }

            //Erstellen der Trennlinie
            if (this.getSeperator() == true)
            {
                return(false);
            }

            BaseContainer dataKoerper = GetDataInstance(node); //Speichert alle elemente von der Liste in den Container

            if (dataKoerper.GetInt64(SKELETT_TYPE) != 3)       //Ist die ID 3 so wurde ein 4 Beiner ausgewählt, da diese keine Arme haben wird der Komplette Block für die Arme im Intrface ausgeblendet
            {
                if (this.getTorso() == true)
                {
                    return(false);
                }
            }
            //Abfragen ob ein Oberkörper erstellt werden soll

            //DescID singleid = descparams.Desc.GetSingleDescID();
            //data = ((BaseList2D)node).GetDataInstance();

            // Arme erstellen
            if (this.getArms(dataKoerper) == true)
            {
                return(false);
            }

            // Hände erstellen
            if (this.getHands(dataKoerper) == true)
            {
                return(false);
            }

            // Finger erstellen
            if (this.getFingers(dataKoerper) == true)
            {
                return(false);
            }

            if (this.getSeperatorTorso() == true)
            {
                return(false);
            }

            if (this.getLegs(dataKoerper) == true)
            {
                return(false);
            }

            if (this.getFeets(dataKoerper) == true)
            {
                return(false);
            }

            if (this.getToes(dataKoerper) == true)
            {
                return(false);
            }

            if (this.getSeperatorFeetSpine() == true)
            {
                return(false);
            }

            if (this.getSpineLink() == true)
            {
                return(false);
            }

            if (this.getNeckLink() == true)
            {
                return(false);
            }

            if (this.getSeperatorSpineTail() == true)
            {
                return(false);
            }

            if (this.getTail() == true)
            {
                return(false);
            }

            if (this.getSeperatorTailSelector() == true)
            {
                return(false);
            }


            //Objektauswahlfeld erstellen
            DescID        cid    = new DescID(new DescLevel(SKELETT_OBJ_AUSWAHL, C4dApi.DTYPE_BASELISTLINK, 0));
            BaseDocument  doc    = C4dApi.GetActiveDocument();                                 // alle vorhandenen Objekte im Dokument in die Variable doc Speicerhn
            BaseContainer objSel = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_BASELISTLINK); // Basecontainer vom Typ BaseLink da wird Objekte verlinken , referenzieren

            objSel.SetLink(SKELETT_OBJ_AUSWAHL, doc);                                          //SelectFeld erstellen in dem ein Objekct gebunden werden kann, ist nötig damit später knochen dem Modell zugewiesen werden können!
            objSel.SetString(C4dApi.DESC_NAME, "Polygonobjekt Wählen");
            if (!descparams.Desc.SetParameter(cid, objSel, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES))))
            {
                return(true);
            }
            //Erstellt eine Schaltfläsche
            cid = new DescID(new DescLevel(SKELETT_BTN_CREATE, C4dApi.DTYPE_BUTTON, 0));
            BaseContainer bcButton = C4dApi.GetCustomDataTypeDefault(C4dApi.DTYPE_BUTTON);

            //Erstellt einen GUI (Button)
            bcButton.SetInt64(C4dApi.DESC_CUSTOMGUI, C4dApi.DTYPE_BUTTON);

            //Erstellt das Label für den Button
            bcButton.SetString(C4dApi.DESC_NAME, "Erstellen");
            if (!descparams.Desc.SetParameter(cid, bcButton, new DescID(new DescLevel(C4dApi.ID_OBJECTPROPERTIES))))
            {
                return(false);
            }

            if (this.getWeightBtn() == true)
            {
                return(false);
            }

            descparams.Flags |= DESCFLAGS_DESC.DESCFLAGS_DESC_LOADED;

            return(true);
        }