예제 #1
0
        /// <summary>
        /// Clones values of another <see cref="SubPart"/>.
        /// </summary>
        /// <param name="other"><see cref="SubPart"/> to clone.</param>
        public override void CloneValuesFrom(SubPart other)
        {
            if (other is PathSet set)
            {
                this.DropShadowEffectExists  = set.DropShadowEffectExists;
                this.FillEffectExists        = set.FillEffectExists;
                this.GradientEffectExists    = set.GradientEffectExists;
                this.InnerGlowEffectExists   = set.InnerGlowEffectExists;
                this.InnerShadowEffectExists = set.InnerShadowEffectExists;
                this.StrokeEffectExists      = set.StrokeEffectExists;
                this.DropShadowEffect.CloneValuesFrom(set.DropShadowEffect);
                this.FillEffect.CloneValuesFrom(set.FillEffect);
                this.GradientEffect.CloneValuesFrom(set.GradientEffect);
                this.InnerGlowEffect.CloneValuesFrom(set.InnerGlowEffect);
                this.InnerShadowEffect.CloneValuesFrom(set.InnerShadowEffect);
                this.StrokeEffect.CloneValuesFrom(set.StrokeEffect);

                foreach (var data in set.PathDatas)
                {
                    this.PathDatas.Add((Shared.Parts.VinylParts.PathData)data.PlainCopy());
                }

                foreach (var point in set.PathPoints)
                {
                    this.PathPoints.Add((Shared.Parts.VinylParts.PathPoint)point.PlainCopy());
                }
            }
        }
예제 #2
0
        public List <string> GetSubToShuffle()
        {
            try
            {
                int fileId = db.Files.Max(f => f.Id);

                SubPart       sub        = db.SubFiles.Find(db.SubFiles.Where(s => s.FileId == fileId).Min(item => item.Id));
                Map           map        = db.Maps.Where(item => item.Id == sub.MapId).FirstOrDefault();
                Shuffle       shuffle    = db.Shuffle.Where(item => item.Id == sub.ShuffleId).FirstOrDefault();
                List <string> dataReturn = new List <string> {
                    sub.Sub, map.Data, map.Node, shuffle.Data
                };
                db.SubFiles.Remove(sub);

                db.SaveChanges();
                db.Maps.Remove(map);
                db.Shuffle.Remove(shuffle);

                db.SaveChanges();
                return(dataReturn);
            }
            catch (Exception)
            {
                return(null);
            }
        }
예제 #3
0
 /// <summary>
 /// Clones values of another <see cref="SubPart"/>.
 /// </summary>
 /// <param name="other"><see cref="SubPart"/> to clone.</param>
 public override void CloneValuesFrom(SubPart other)
 {
     if (other is PathPoint point)
     {
         this.X = point.X;
         this.Y = point.Y;
     }
 }
예제 #4
0
 /// <summary>
 /// Clones values of another <see cref="SubPart"/>.
 /// </summary>
 /// <param name="other"><see cref="SubPart"/> to clone.</param>
 public override void CloneValuesFrom(SubPart other)
 {
     if (other is PathData data)
     {
         this.StartIndex = data.StartIndex;
         this.NumCurves  = data.NumCurves;
     }
 }
예제 #5
0
 /// <summary>
 /// Clones values of another <see cref="CarSkin"/>.
 /// </summary>
 /// <param name="other"><see cref="CarSkin"/> to clone.</param>
 public override void CloneValuesFrom(SubPart other)
 {
     if (other is CarSkin skin)
     {
         this.MaterialUsed    = skin.MaterialUsed;
         this.SkinClassKey    = skin.SkinClassKey;
         this.SkinDescription = skin.SkinDescription;
         this.Unknown         = skin.Unknown;
     }
 }
예제 #6
0
 /// <summary>
 /// Clones values of another <see cref="Camera"/>.
 /// </summary>
 /// <param name="other"><see cref="Camera"/> to clone.</param>
 public override void CloneValuesFrom(SubPart other)
 {
     if (other is Camera camera)
     {
         this.Type            = camera.Type;
         this.CameraAngle     = camera.CameraAngle;
         this.CameraHeight    = camera.CameraHeight;
         this.CameraLag       = camera.CameraLag;
         this.CameraLatOffset = camera.CameraLatOffset;
     }
 }
예제 #7
0
 /// <summary>
 /// Clones values of another <see cref="CarInfoWheel"/>.
 /// </summary>
 /// <param name="other"><see cref="CarInfoWheel"/> to clone.</param>
 public override void CloneValuesFrom(SubPart other)
 {
     if (other is CarInfoWheel wheel)
     {
         this.Diameter       = wheel.Diameter;
         this.RideHeight     = wheel.RideHeight;
         this.Springs        = wheel.Springs;
         this.TireSkidWidth  = wheel.TireSkidWidth;
         this.UnknownVal     = wheel.UnknownVal;
         this.WheelID        = wheel.WheelID;
         this.WideBodyYValue = wheel.WideBodyYValue;
         this.XValue         = wheel.XValue;
         this.YValue         = wheel.YValue;
     }
 }
예제 #8
0
    private void OnSubPartVideo(SubPart sub)
    {
        //TODO: Show the sub video
        if (!string.IsNullOrEmpty(sub.VideoUrl))
        {
            VideoClip clip = Resources.Load <VideoClip>(sub.VideoUrl);
            videoPlayer.clip = clip;
            videoPlayer.Play();
            videoPanel.SetActive(true);

            if (modelInstance != null)
            {
                modelInstance.SetActive(false);
            }
        }
    }
예제 #9
0
        /// <summary>
        /// Clones values of another <see cref="SubPart"/>.
        /// </summary>
        /// <param name="other"><see cref="SubPart"/> to clone.</param>
        public override void CloneValuesFrom(SubPart other)
        {
            if (other is RealCarPart part)
            {
                this.CarPartGroupID = part.CarPartGroupID;
                this.DebugName      = part.DebugName;
                this.PartLabel      = part.PartLabel;
                this.UpgradeGroupID = part.UpgradeGroupID;
                this.LodStruct.CloneValuesFrom(part.LodStruct);
                this.Attributes.Capacity = part.Attributes.Capacity;

                foreach (var attrib in part.Attributes)
                {
                    this.Attributes.Add((CPAttribute)attrib.PlainCopy());
                }
            }
        }
예제 #10
0
            public string Shuffle()
            {
                int            lastFileId = db.Files.Max(item => item.Id);
                List <SubPart> subs       = db.SubFiles.Where(s => s.FileId == lastFileId).ToList();
                var            uniqueKey  = subs.Select(s => s.Sub).Distinct();
                List <string>  datas      = new List <string>();

                foreach (var item in subs)
                {
                    datas.Add(db.Maps.Where(m => m.Id == item.MapId).FirstOrDefault().Data);
                }
                string dataReturn = string.Empty;
                string dataSave   = string.Empty;
                var    pairs      = CreatePairs(datas, uniqueKey);

                foreach (var key in pairs.Keys)
                {
                    string count = pairs[key][0];
                    for (int i = 0; i < pairs[key].Count - 1; i++)
                    {
                        count += pairs[key][i];
                    }
                    dataReturn += key + '=' + count;
                    dataSave   += key + '=' + count;

                    if (dataSave != "")
                    {
                        Shuffle shuffle = new Shuffle
                        {
                            Data = dataSave,
                        };
                        db.Shuffle.Add(shuffle);
                        db.SaveChanges();
                        SubPart sub = db.SubFiles.Find(db.SubFiles.Where(s => s.FileId == db.Files.Max(f => f.Id) && s.ShuffleId == null).Min(item => item.Id));
                        sub.ShuffleId = shuffle.Id;
                        db.SaveChanges();
                    }
                    dataSave = string.Empty;
                }

                return(dataReturn);
            }
예제 #11
0
    public override void ExecuteBuild()
    {
        int WorkingCL = -1;

        if (P4Enabled && AllowSubmit)
        {
            string CmdLine = "";
            foreach (var Arg in Params)
            {
                CmdLine += Arg.ToString() + " ";
            }
            WorkingCL = P4.CreateChange(P4Env.Client, String.Format("MegaXGE build from changelist {0} - Params: {1}", P4Env.Changelist, CmdLine));
        }

        LogInformation("************************* MegaXGE");

        bool   Clean             = ParseParam("Clean");
        string CleanToolLocation = CombinePaths(CmdEnv.LocalRoot, "Engine", "Build", "Batchfiles", "Clean.bat");

        bool ShowProgress = ParseParam("Progress");

        var UE4Build = new UE4Build(this);

        var Agenda = new UE4Build.BuildAgenda();

        // we need to always build UHT when we use mega XGE
        var ProgramTargets = new string[]
        {
            "UnrealHeaderTool",
        };

        Agenda.AddTargets(ProgramTargets, UnrealTargetPlatform.Win64, UnrealTargetConfiguration.Development);
        if (Clean)
        {
            LogSetProgress(ShowProgress, "Cleaning previous builds...");
            foreach (var CurTarget in ProgramTargets)
            {
                string Args = String.Format("{0} {1} {2}", CurTarget, UnrealTargetPlatform.Win64.ToString(), UnrealTargetConfiguration.Development.ToString());
                RunAndLog(CmdEnv, CleanToolLocation, Args);
            }
        }

        LogInformation("*************************");
        for (int Arg = 1; Arg < 100; Arg++)
        {
            string Parm   = String.Format("Target{0}", Arg);
            string Target = ParseParamValue(Parm, "");
            if (String.IsNullOrEmpty(Target))
            {
                break;
            }

            FileReference ProjectFile = null;

            string ProjectFileParam = ParseParamValue(String.Format("Project{0}", Arg), null);
            if (ProjectFileParam != null)
            {
                ProjectFile = new FileReference(ProjectFileParam);
                if (!FileReference.Exists(ProjectFile))
                {
                    throw new AutomationException("Project file '{0}' could not be found");
                }
            }

            var Parts = Target.Split(' ');

            string JustTarget = Parts[0];
            if (String.IsNullOrEmpty(JustTarget))
            {
                throw new AutomationException("BUILD FAILED target option '{0}' not parsed.", Target);
            }
            var Targets = JustTarget.Split('|');
            if (Targets.Length < 1)
            {
                throw new AutomationException("BUILD FAILED target option '{0}' not parsed.", Target);
            }

            var Platforms      = new List <UnrealTargetPlatform>();
            var Configurations = new List <UnrealTargetConfiguration>();

            for (int Part = 1; Part < Parts.Length; Part++)
            {
                if (!String.IsNullOrEmpty(Parts[Part]))
                {
                    var SubParts = Parts[Part].Split('|');

                    foreach (var SubPart in SubParts)
                    {
                        UnrealTargetPlatform Platform;
                        if (UnrealTargetPlatform.TryParse(SubPart, out Platform))
                        {
                            Platforms.Add(Platform);
                        }
                        else
                        {
                            switch (SubPart.ToUpperInvariant())
                            {
                            case "DEBUG":
                                Configurations.Add(UnrealTargetConfiguration.Debug);
                                break;

                            case "DEBUGGAME":
                                Configurations.Add(UnrealTargetConfiguration.DebugGame);
                                break;

                            case "DEVELOPMENT":
                                Configurations.Add(UnrealTargetConfiguration.Development);
                                break;

                            case "SHIPPING":
                                Configurations.Add(UnrealTargetConfiguration.Shipping);
                                break;

                            case "TEST":
                                Configurations.Add(UnrealTargetConfiguration.Test);
                                break;

                            default:
                                throw new AutomationException("BUILD FAILED target option {0} not recognized.", SubPart);
                            }
                        }
                    }
                }
            }
            if (Platforms.Count < 1)
            {
                Platforms.Add(UnrealTargetPlatform.Win64);
            }
            if (Configurations.Count < 1)
            {
                Configurations.Add(UnrealTargetConfiguration.Development);
            }
            foreach (var Platform in Platforms)
            {
                foreach (var CurTarget in Targets)
                {
                    foreach (var Configuration in Configurations)
                    {
                        Agenda.AddTargets(new string[] { CurTarget }, Platform, Configuration, ProjectFile);
                        LogInformation("Target {0} {1} {2}", CurTarget, Platform.ToString(), Configuration.ToString());
                        if (Clean)
                        {
                            string Args = String.Format("{0} {1} {2}", CurTarget, Platform.ToString(), Configuration.ToString());
                            RunAndLog(CmdEnv, CleanToolLocation, Args);
                        }
                    }
                }
            }
        }
        LogInformation("*************************");

        UE4Build.Build(Agenda, InUpdateVersionFiles: IsBuildMachine, InUseParallelExecutor: ParseParam("useparallelexecutor"), InShowProgress: ShowProgress);

        //      if (WorkingCL > 0) // only move UAT files if we intend to check in some build products
        //      {
        //          UE4Build.CopyUATFilesAndAddToBuildProducts();
        //      }

        UE4Build.CheckBuildProducts(UE4Build.BuildProductFiles);

        if (WorkingCL > 0)
        {
            // Sign everything we built
            CodeSign.SignMultipleIfEXEOrDLL(this, UE4Build.BuildProductFiles);

            // Open files for add or edit
            UE4Build.AddBuildProductsToChangelist(WorkingCL, UE4Build.BuildProductFiles);

            int SubmittedCL;
            P4.Submit(WorkingCL, out SubmittedCL, true, true);
        }

        PrintRunTime();
    }
예제 #12
0
 public CooldownPart(double cooldownLength, SubPart[] subParts, bool raisesBody, Sprite partSprite)
     : base(subParts, raisesBody, partSprite)
 {
     CooldownLength = cooldownLength;
     Reset();
 }
예제 #13
0
파일: Part.cs 프로젝트: thormme/Chimera
 /// <summary>
 /// Constructs a new Part.
 /// </summary>
 /// <param name="subParts">The array of SubParts this part contains.</param>
 /// <param name="raisesBody">Whether this part should raise the associated Creature off of the ground.</param>
 /// <param name="partSprite">The GUI sprite used to indicate this Part.</param>
 public Part(SubPart[] subParts, bool raisesBody, Sprite partSprite)
 {
     SubParts = subParts;
     Height = raisesBody ? 1.0f : 0.0f;
     mSprite = partSprite;
 }
예제 #14
0
    public void LoadAssembles()
    {
        //load part type

        //ugly implementaion
        MachineAssembly a2 = new MachineAssembly("棉芯输送机");

        a2.AssemblyModelUrl   = "Press_module/Models/press_convery_normal";
        a2.AssemblyHilightUrl = "Press_module/Models/press_convery_highlight";
        //load parts

        MachinePart p;
        SubPart     s;

        p = new MachinePart("上部传送模块");
        //p.ModelUrls.Add(PartTypeEnum.None, "Press_module/Models/upper_convery");
        p.ModelUrls.Add(PartTypeEnum.Bearing, "Press_module/Models/upper_convery_bearing");
        p.ModelUrls.Add(PartTypeEnum.Belt, "Press_module/Models/upper_convery_belt");
        //p.ModelUrl = "Press_module/Models/upper_convery";

        for (int i = 0; i < 8; i++)
        {
            s          = new SubPart("SKF轴承 6204-2Z/C3/2RSH", i, PartTypeEnum.Bearing, CycleType.Replace, 12);
            s.VideoUrl = "Videos/ReplaceBearing";
            p.SubParts.Add(s);
        }

        s          = new SubPart("SKF LGLT2/1润滑油", 0, PartTypeEnum.Bearing, CycleType.Luburicate, 6);
        s.VideoUrl = "Videos/LiburateBearing";
        p.SubParts.Add(s);

        s          = new SubPart("GATES POWERGRIP 2GT226", 0, PartTypeEnum.Belt, CycleType.Replace, 12);
        s.VideoUrl = "Videos/ReplaceBelt";
        p.SubParts.Add(s);

        a2.PartList.Add(p);

        p = new MachinePart("下部传送模块");
        //p.ModelUrl = "Press_module/Models/lower_convery";
        p.ModelUrls.Add(PartTypeEnum.Bearing, "Press_module/Models/lower_convery_bearing");
        p.ModelUrls.Add(PartTypeEnum.Belt, "Press_module/Models/lower_convery_belt");

        for (int i = 0; i < 8; i++)
        {
            s          = new SubPart("SKF轴承 6204-2Z/C3/2RSH", i, PartTypeEnum.Bearing, CycleType.Replace, 12);
            s.VideoUrl = "Videos/ReplaceBearing";
            p.SubParts.Add(s);
        }

        s          = new SubPart("SKF LGLT2/1润滑油", 0, PartTypeEnum.Bearing, CycleType.Luburicate, 6);
        s.VideoUrl = "Videos/LiburateBearing";
        p.SubParts.Add(s);

        s          = new SubPart("GATES POWERGRIP 2GT226", 0, PartTypeEnum.Belt, CycleType.Replace, 12);
        s.VideoUrl = "Videos/ReplaceBelt";
        p.SubParts.Add(s);

        a2.PartList.Add(p);

        p = new MachinePart("传送模块底座");
        p.ModelUrls.Add(PartTypeEnum.LinearGuide, "Press_module/Models/base_highlight");


        for (int i = 0; i < 4; i++)
        {
            s          = new SubPart("HIWIN HGH15CA", i, PartTypeEnum.LinearGuide, CycleType.Replace, 24);
            s.VideoUrl = "Videos/ReplaceLinearGuide";
            p.SubParts.Add(s);
        }

        s          = new SubPart("NSK AS2 GREASE", 0, PartTypeEnum.LinearGuide, CycleType.Luburicate, 6);
        s.VideoUrl = "Videos/LiburateLinearGuide";
        p.SubParts.Add(s);

        a2.PartList.Add(p);

        assemblies.Add(a2);



        MachineAssembly a1 = new MachineAssembly("热压模块");

        a1.AssemblyModelUrl   = "Press_module/Models/thermal_press_module_normal";
        a1.AssemblyHilightUrl = "Press_module/Models/thermal_press_module_hightlight";

        //load parts
        p = new MachinePart("上压辊");
        p.ModelUrls.Add(PartTypeEnum.Bearing, "Press_module/Models/upper_roller");

        for (int i = 0; i < 2; i++)
        {
            s          = new SubPart("SKF轴承 206EC", i, PartTypeEnum.Bearing, CycleType.Replace, 12);
            s.VideoUrl = "Videos/ReplaceBearing";
            p.SubParts.Add(s);
        }

        s          = new SubPart("SKF重载润滑脂LGWA2/1", 0, PartTypeEnum.Bearing, CycleType.Luburicate, 6);
        s.VideoUrl = "Videos/LiburateBearing";
        p.SubParts.Add(s);
        a1.PartList.Add(p);


        p = new MachinePart("下压辊");
        p.ModelUrls.Add(PartTypeEnum.Bearing, "Press_module/Models/lower_roller");

        for (int i = 0; i < 2; i++)
        {
            s          = new SubPart("SKF轴承 206EC", i, PartTypeEnum.Bearing, CycleType.Replace, 12);
            s.VideoUrl = "Videos/ReplaceBearing";
            p.SubParts.Add(s);
        }

        s          = new SubPart("SKF重载润滑脂LGWA2/1", 0, PartTypeEnum.Bearing, CycleType.Luburicate, 6);
        s.VideoUrl = "Videos/LiburateBearing";
        p.SubParts.Add(s);
        a1.PartList.Add(p);

        assemblies.Add(a1);


        MachineAssembly a3 = new MachineAssembly("热压模块底座");

        a3.AssemblyModelUrl   = "Press_module/Models/base_normal";
        a3.AssemblyHilightUrl = "Press_module/Models/base_highlight";

        p = new MachinePart("线性导轨组件");
        //p.ModelUrl = "Press_module/Models/base_highlight";
        p.ModelUrls.Add(PartTypeEnum.LinearGuide, "Press_module/Models/base_highlight");

        for (int i = 0; i < 4; i++)
        {
            s          = new SubPart("HIWIN HGH35CA", i, PartTypeEnum.LinearGuide, CycleType.Replace, 24);
            s.VideoUrl = "Videos/ReplaceLinearGuide";
            p.SubParts.Add(s);
        }

        s          = new SubPart("NSK AS2 GREASE", 0, PartTypeEnum.LinearGuide, CycleType.Luburicate, 6);
        s.VideoUrl = "Videos/LiburateLinearGuide";
        p.SubParts.Add(s);

        a3.PartList.Add(p);

        assemblies.Add(a3);

        SetAssemblyControl();
    }
예제 #15
0
 public DutyCyclePart(double dutyCycle, double cooldownLength, SubPart[] subParts, bool raisesBody, Sprite partSprite)
     : base(cooldownLength, subParts, raisesBody, partSprite)
 {
     DutyCycle = dutyCycle;
     Reset();
 }
예제 #16
0
            private void readSubPartListTag(ref System.Xml.XmlReader xmlReader)
            {
                if (!xmlReader.IsEmptyElement)
                {
                    // start to read the subpart
                    bool subpartFound = xmlReader.ReadToDescendant("SubPart");
                    if (subpartFound)
                    {
                        if (mGroupInfo == null)
                            mGroupInfo = new GroupInfo();
                        mGroupInfo.mGroupSubPartList = new List<SubPart>();
                    }

                    while (subpartFound)
                    {
                        // instanciate a sub part for the current one read
                        SubPart subPart = new SubPart();

                        // read the id of the sub part
                        subPart.mSubPartNumber = xmlReader.GetAttribute("id").ToUpperInvariant();

                        // variable to store the position of the sub part from which we will construct a transform
                        PointF position = new PointF();

                        // read the first child node of the connexion
                        xmlReader.Read();
                        bool continueToReadSubPart = (subPart.mSubPartNumber.Length > 0);
                        while (continueToReadSubPart)
                        {
                            if (xmlReader.Name.Equals("position"))
                                position = readPointTag(ref xmlReader, "position");
                            else if (xmlReader.Name.Equals("angle"))
                                subPart.mOrientation = xmlReader.ReadElementContentAsFloat();
                            else
                                xmlReader.Read();
                            // check if we reach the end of the connexion
                            continueToReadSubPart = !xmlReader.Name.Equals("SubPart") && !xmlReader.EOF;
                        }

                        // create the local transform with the rotion and the translate
                        subPart.mLocalTransformInStud = new Matrix();
                        subPart.mLocalTransformInStud.Rotate(subPart.mOrientation);
                        subPart.mLocalTransformInStud.Translate(position.X, position.Y, MatrixOrder.Append);

                        // add the current connexion in the list
                        if (subPart.mSubPartNumber.Length > 0)
                            mGroupInfo.mGroupSubPartList.Add(subPart);

                        // go to next connexion
                        subpartFound = !xmlReader.EOF && xmlReader.ReadToNextSibling("SubPart");
                    }
                    // finish the connexion
                    if (!xmlReader.EOF)
                        xmlReader.ReadEndElement();
                }
                else
                {
                    xmlReader.Read();
                }
            }