Beispiel #1
0
        private void StartCommandExe()
        {
            BackgroundWorker bw = new BackgroundWorker();

            bw.WorkerReportsProgress      = true;
            bw.WorkerSupportsCancellation = true;
            bw.DoWork             += new DoWorkEventHandler(bwOnStartSet);
            bw.ProgressChanged    += new ProgressChangedEventHandler(bwProgChange);
            bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwComplite);
            NewPortEntered         = (INIT_PORT + m_PortCounter).ToString();
            m_Dicinternal.TryAdd(INIT_PORT + m_PortCounter, bw);
            m_DicProgres.TryAdd(INIT_PORT + m_PortCounter, 0);
            ItemPort.Add(new DataItemsPortAmount((INIT_PORT + m_PortCounter++), 0));
            OnPropertyChanged("ItemPort");
        }
        XElement MakeAttachment(ItemPort itemPort)
        {
            Item   item          = exporter.GetItem(itemPort.itemName);
            string geomExtension = Path.GetExtension(item.geometry);

            string Type;

            if (geomExtension == ".skin")
            {
                Type = "CA_SKIN";
            }
            else
            {
                Type = "CA_BONE";
            }

            string AName       = itemPort.portName;
            string Binding     = item.geometry;
            string RelRotation = "1,0,0,0";
            string RelPosition = "0,0,0";
            string BoneName    = itemPort.portName;
            string Flags       = "0";
            string VisFlags    = "";

            XElement attachment = new XElement("Attachment");

            attachment.Add(new XAttribute("Type", Type));
            attachment.Add(new XAttribute("AName", AName));
            if (Binding != "")
            {
                attachment.Add(new XAttribute("Binding", Binding));
            }
            attachment.Add(new XAttribute("Flags", Flags));
            if (Type == "CA_BONE")
            {
                attachment.Add(new XAttribute("RelRotation", RelRotation));
                attachment.Add(new XAttribute("RelPosition", RelPosition));
                attachment.Add(new XAttribute("BoneName", BoneName));
            }

            return(attachment);
        }
        public PrefabObject GetGeomAsPrefabObject(List <Item> itemsList)
        {
            PrefabObject prefabObj = null;

            if (propertiesDataCore != null)
            {
                prefabObj           = new PrefabObject();
                prefabObj.Id        = GuidUtility.GenID();
                prefabObj.Name      = Name;
                prefabObj.Layer     = Layer;
                prefabObj.LayerGUID = LayerGUID;
                if (Pos != null)
                {
                    prefabObj.Pos = Pos;
                }
                if (Rotate != null)
                {
                    prefabObj.Rotate = Rotate;
                }
                if (Scale != null)
                {
                    prefabObj.Scale = Scale;
                }
                if (Material != null)
                {
                    prefabObj.Material = Material;
                }

                if (Entity.Attribute("Geometry") != null)
                {
                    prefabObj.Geometry    = Entity.Attribute("Geometry").Value;
                    prefabObj.Type        = "GeomEntity";
                    prefabObj.EntityClass = "GeomEntity";
                }
                else if (propertiesDataCore.Geometry != "")
                {
                    prefabObj.Geometry    = propertiesDataCore.Geometry;
                    prefabObj.Type        = "GeomEntity";
                    prefabObj.EntityClass = "GeomEntity";
                    if (propertiesDataCore.Material != "")
                    {
                        prefabObj.Material = propertiesDataCore.Material;
                    }
                    if (Material != null)
                    {
                        prefabObj.Material = Material;
                    }
                }
                else if (propertiesDataCore.Loadout != null)
                {
                    Item entityItem = null;
                    foreach (Item it in itemsList)
                    {
                        if (it.name == EntityClass)
                        {
                            entityItem = it;
                        }
                    }
                    if (entityItem != null)
                    {
                        if (entityItem.geometry != "")
                        {
                            prefabObj.Geometry    = entityItem.geometry;
                            prefabObj.Type        = "GeomEntity";
                            prefabObj.EntityClass = "GeomEntity";

                            foreach (ItemPort loadoutItemPort in propertiesDataCore.Loadout.itemPorts)
                            {
                                //Item childItem = exporter.GetItem(loadoutItemPort.itemName);
                                Item childItem = null;
                                foreach (Item it in itemsList)
                                {
                                    if (it.name == loadoutItemPort.itemName)
                                    {
                                        childItem = it;
                                    }
                                }
                                if (childItem != null)
                                {
                                    if (childItem.geometry != "")
                                    {
                                        PrefabObject childObj = new PrefabObject();

                                        ItemPort targetItemPort = entityItem.GetItemPort(loadoutItemPort.portName);
                                        if (targetItemPort != null)
                                        {
                                            string targetJointName = targetItemPort.helperName;

                                            childObj.Geometry       = childItem.geometry;
                                            childObj.Id             = GuidUtility.GenID();
                                            childObj.Name           = loadoutItemPort.itemName;
                                            childObj.Layer          = Layer;
                                            childObj.LayerGUID      = LayerGUID;
                                            childObj.Pos            = "0,0,0";
                                            childObj.Rotate         = "1,0,0,0";
                                            childObj.Type           = "GeomEntity";
                                            childObj.EntityClass    = "GeomEntity";
                                            childObj.ParentId       = prefabObj.Id;
                                            childObj.AttachmentType = "CharacterBone";
                                            if (targetJointName != null)
                                            {
                                                childObj.AttachmentTarget = targetJointName;
                                            }
                                            else
                                            {
                                                childObj.AttachmentTarget = targetItemPort.portName;
                                            }

                                            prefabObj.attachments.Add(childObj);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    Item entityItem = null;
                    foreach (Item it in itemsList)
                    {
                        if (it.name == EntityClass)
                        {
                            entityItem = it;
                        }
                    }
                    if (entityItem != null)
                    {
                        if (entityItem.geometry != "")
                        {
                            prefabObj.Geometry    = entityItem.geometry;
                            prefabObj.Type        = "GeomEntity";
                            prefabObj.EntityClass = "GeomEntity";

                            prefabObj.Name      = Name;
                            prefabObj.Layer     = Layer;
                            prefabObj.LayerGUID = LayerGUID;
                            if (Pos != null)
                            {
                                prefabObj.Pos = Pos;
                            }
                            if (Rotate != null)
                            {
                                prefabObj.Rotate = Rotate;
                            }
                            if (Scale != null)
                            {
                                prefabObj.Scale = Scale;
                            }
                            if (Material != null)
                            {
                                prefabObj.Material = Material;
                            }
                        }
                    }
                }
            }
            else
            {
                if (EntityClass == "AnimObject")
                {
                    prefabObj    = new PrefabObject();
                    prefabObj.Id = GuidUtility.GenID();

                    prefabObj.Type        = "AnimObject";
                    prefabObj.EntityClass = "AnimObject";

                    prefabObj.Name      = Name;
                    prefabObj.Layer     = Layer;
                    prefabObj.LayerGUID = LayerGUID;
                    if (Pos != null)
                    {
                        prefabObj.Pos = Pos;
                    }
                    if (Rotate != null)
                    {
                        prefabObj.Rotate = Rotate;
                    }
                    if (Scale != null)
                    {
                        prefabObj.Scale = Scale;
                    }
                    if (Material != null)
                    {
                        prefabObj.Material = Material;
                    }

                    prefabObj.Properties = Properties;
                }
                if (EntityClass == "GeomEntity")
                {
                }
            }

            //delete %level% geoms
            if (prefabObj != null)
            {
                if (prefabObj.Geometry != null)
                {
                    if (prefabObj.Geometry.StartsWith("%level%", StringComparison.OrdinalIgnoreCase))
                    {
                        prefabObj.Geometry = null;
                    }
                }
            }

            return(prefabObj);
        }