Exemplo n.º 1
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);
        }
Exemplo 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);
        }
Exemplo n.º 3
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);
        }
Exemplo n.º 4
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);
        }
Exemplo n.º 5
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);
        }
Exemplo n.º 6
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);
        }
Exemplo n.º 7
0
        //wird aufgerufen, wenn ein Event ausgeführt wurde
        //TODO: Override gelöscht - DS
        public bool OnDescriptionCommand(GeListNode node, DescriptionCommand desc)
        {
            long button = desc.id.GetAt(0).id;

            //BaseList2D ObjSelector = bc.GetLink(SKELETT_OBJ_AUSWAHL, doc);
            switch (button)
            {
            case SKELETT_BTN_CREATE:
                BaseContainer b           = GetDataInstance(node);
                BaseDocument  doc         = C4dApi.GetActiveDocument();
                BaseList2D    ObjSelector = b.GetLink(SKELETT_OBJ_AUSWAHL, doc);
                /*Eingeforene Selektion Auswählen vom Typ Polygon ENDE*/
                if (ObjSelector == null)
                {
                    C4dApi.MessageDialog("Bitte wählen Sie zuerst ein Polygonobjekt aus, bevor Sie ein Biped erstellen!");
                }
                else
                {
                    long skelett = b.GetInt64(SKELETT_TYPE);
                    if (skelett == 3)
                    {
                        this.makeAnimalJoints(node, desc);
                    }
                    else
                    {
                        this.makeJoints(node, desc);
                    }
                }
                // C4dApi.GePrint("Der button Erstellen wurde gedrück "+objSe.GetNodeID()+objSe.GetName());
                //ObjSe.GetName() liefert den namen des Selektierten Objekts zurück.
                break;

            case SKELETT_WICHTUNG_BTN:
                /*Eingefrorene Selektion Auswählen vom Typ Polygon START*/
                BaseContainer b2   = GetDataInstance(node);
                BaseDocument  doc2 = C4dApi.GetActiveDocument();
                BaseObject    op2  = b2.GetObjectLink(SKELETT_OBJ_AUSWAHL, doc2);
                BaseTag       t    = op2.GetTag(C4dApi.Tpolygonselection);
                //string selekname = t.GetName();
                //BaseTag t2 = op2.GetTag(C4dApi.Tpolygonselection,1);
                //if (op2.GetTag(C4dApi.Tpolygonselection,2)==null)
                //{ }
                //C4dApi.GePrint(" blubb " + t2.GetName() + " der name der vorherigen Selektion lautet: " + selekname);
                //C4dApi.GePrint(" blubb  der name der vorherigen Selektion lautet: " + selekname);
                //BaseObject j = this.wtagGlob.GetJoint(1, doc2);
                //C4dApi.GePrint("Knochenname "+j.GetName());
                //string joinName = j.GetName();
                //if (joinName == selekname)
                //{
                //    C4dApi.GePrint("stimmen ueberein");
                //}
                //SelectionTag st = SelectionTag.Alloc(C4dApi.Tpolygonselection);
                //BaseSelect sel = st.GetBaseSelect();
                //sel.Select(t.GetNodeID);
                BaseTag joints = op2.GetTag(C4dApi.Tweights);
                //this.wtagGlob = joints.Get
                C4dApi.GePrint("wichtung setzen bones anzahl: " + this.wtagGlob.GetJointCount());
                //Punkte der PolygonSelektion abrufen
                //int pt = op2.GetTagDataCount(C4dApi.Tpolygonselection);
                //C4dApi.GePrint("Anzahl der Punkte : " + pt);
                //doc2.SetActiveObject(b2.GetObjectLink(SKELETT_OBJ_AUSWAHL, doc2));
                SelectionTag st = SelectionTag.Alloc(C4dApi.Tpointselection);
                BaseSelect   bs = st.GetBaseSelect();

                PointObject pObj = PointObject.GetPointObject(op2);
                //pObj.GetPointS();
                //for (int i = 0; i < pObj.GetPointCount(); i++)
                //{

                //}
                C4dApi.GePrint("test" + bs.Select(0));
                bs.Select(0);
                BaseSelect SelectedPoints = pObj.GetPointS();
                //for (BaseTag pointTag = op2.GetFirstTag(); pointTag; pointTag = pointTag.GetNext())
                //{
                //    desc.id.GetAt(0).id = 1000;
                //    pointTag.Message(C4dApi.MSG_DESCRIPTION_COMMAND, desc);
                //}
                BaseTag btA = doc2.GetActiveTag();
                C4dApi.GePrint("TypeName : " + btA.GetTypeName() + " Name " + btA.GetName());
                if (btA.GetTypeC4D() == C4dApi.Tpolygonselection)
                {
                    for (int j = 0; j < wtagGlob.GetJointCount(); j++)
                    {
                        BaseObject JointName = wtagGlob.GetJoint(j, doc2);
                        if (btA.GetName() == JointName.GetName())
                        {
                            for (int i = 0; i < pObj.GetPointCount(); i++)
                            {
                                if (SelectedPoints.IsSelected(i))
                                {
                                    this.wtagGlob.SetWeight(j, i, 0.04);
                                    C4dApi.GePrint("Der Punkt mit dem Index " + i + " ist selektiert");
                                }
                            }
                        }
                    }
                }
                else
                {
                }
                //C4dApi.GePrint("anzahl der pt " + pObj.GetPointCount());
                //pObj.SetPointAt(1, new Vector3D(1, 2, 3));
                //XPressoTag xt = XPressoTag.Alloc();
                //xt = (BaseSelect)t;
                //  this.wtagGlob.SetWeight(1, 2, 1.0/100);  //Setweeight 1.0 == 100 entspricht 0.42 == 42.0 entspricht Deshalb ist es einfacher direkt durch hundert zu teilen



                break;
            }
            return(true);
        }
Exemplo n.º 8
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);
        }