/// <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()); } } }
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); } }
/// <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; } }
/// <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; } }
/// <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; } }
/// <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; } }
/// <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; } }
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); } } }
/// <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()); } } }
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); }
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(); }
public CooldownPart(double cooldownLength, SubPart[] subParts, bool raisesBody, Sprite partSprite) : base(subParts, raisesBody, partSprite) { CooldownLength = cooldownLength; Reset(); }
/// <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; }
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(); }
public DutyCyclePart(double dutyCycle, double cooldownLength, SubPart[] subParts, bool raisesBody, Sprite partSprite) : base(cooldownLength, subParts, raisesBody, partSprite) { DutyCycle = dutyCycle; Reset(); }
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(); } }