private void ListeningGestureState() { points.Add(drawingFinger.transform.position); if (hand.buttonsListener.GetStandardInteractionButtonUp()) { CustomSymbol customSymbol = CustomSymbolFactory.CreateSymbol(points); switch (customSymbol.Type) { case SymbolType.Unrecognized: break; case SymbolType.Circle: Game.EventService.SendMessage(new CastGodsHandMessage(customSymbol)); break; case SymbolType.S: break; case SymbolType.Line: break; } ToIdleState(); } }
/// <summary> /// 保存自定义模版 /// </summary> /// <param name="savePath">保存路径</param> private void SaveSymbolSet(string savePath) { var symbolSetName = txt_SymbolSetName.Text.Trim(); if (string.IsNullOrEmpty(txt_SymbolSetName.Text.Trim())) { lal_tip.Text = "请输入模版名称!"; txt_SymbolSetName.Focus(); return; } if (!Directory.Exists(savePath)) { Directory.CreateDirectory(savePath); } if (string.IsNullOrEmpty(txt_X.Text.Trim())) { lal_basepoint.ForeColor = Color.Red; lal_basepoint.Text = "请拾取基点!"; return; } if (objCollection.Count > 0) { Btn_CustomSymbol.Enabled = false; var objIds = PublicMethod.Instance.ObjectIdCollectionToOjbectIds(objCollection); var xmlPath = string.Format(@"{0}\{1}.xml", savePath, symbolSetName); var basePoint = new Point3d(double.Parse(txt_X.Text.Trim()), double.Parse(txt_Y.Text.Trim()), 0); Lal_SaveTip.Text = "正在创建自定义模版,请稍候…"; Lal_SaveTip.Refresh(); //创建自定义符号 var result = CustomSymbol.CreateCustomsSymbol(xmlPath, objIds, basePoint); Lal_SaveTip.Text = string.Empty; PublicMethod.Instance.AlertDialog(result?"保存成功!":"保存失败!"); Btn_CustomSymbol.Enabled = true; if (!result) { if (File.Exists(imgPath)) { File.Delete(imgPath); } } Close(); } else { lal_EntityCount.Text = "请选择对象!"; lal_EntityCount.ForeColor = Color.Red; } }
/// <summary> /// 新增符号 /// </summary> /// <param name="symbolPath">符号路径</param> /// <param name="blockName">块名称</param> private void AddSymbol(string symbolPath, string blockName) { try { isInsertSymbol = true; //单个设备新增 if (!IsCustomGroup()) { //特殊符号处理 var sdf = new SpecilaDevField { Ssbyq = GenerateHelper.Unrf.byqFid, Ssgt = GenerateHelper.Unrf.gtFid, Sstj = GenerateHelper.Unrf.tjFid, Sskgg = GenerateHelper.Unrf.kggFid, Ssdf = GenerateHelper.Unrf.dfFid, Sstqhtj = GenerateHelper.Unrf.tqtjFid, SsZx = GenerateHelper.Unrf.zxFid }; //记忆公共属性 AddDevToDict(CurrentFno, CurPropertyObj); //实体存在的点符号 DCadApi.InsertSymbol(File.Exists(symbolPath) ? blockName : symbolPath, CurPropertyObj, sdf); } else { //插入自定义符号 if (File.Exists(symbolPath)) { CustomSymbol.LoadSymbolSetXMl(symbolPath, blockName); } } isInsertSymbol = false; }catch { isInsertSymbol = false; } }
public static CustomSymbol CreateSymbol(List <Vector3> points) { List <Vector3> correctedCountPoints = CorrectPointsCount(points); Vector3 spellCenter = SymbolsHelper.CalculateSymbolCenter(correctedCountPoints); Basis basisBasedOnPlayerSight = CreateBasisBasedOnPlayerSight(spellCenter, Player.instance.headCollider.transform.position); Basis basisToProjectPointsToXyPlane = CreateBasisToProjectPointsToXyPlane(basisBasedOnPlayerSight); List <Vector3> poitnsProjectedToPlaneInPlayerSightBasis = MathHelper.ProjectPointsToPlane(correctedCountPoints, spellCenter, basisBasedOnPlayerSight.Forward); List <Vector3> pointsProjectedToXyPlane = ProjectPointsToXyPlane(poitnsProjectedToPlaneInPlayerSightBasis, spellCenter, basisToProjectPointsToXyPlane); List <Vector3> resizedPoints = ResizeShapeToFitRecognitionSquare(pointsProjectedToXyPlane); SymbolAnalyzerResult result = SymbolAnalyzer.Instance.Analyze(resizedPoints); CustomSymbol newSymbol = new CustomSymbol(); newSymbol.Type = result.IsPassed() ? result.SymbolType : SymbolType.Unrecognized; newSymbol.Center = spellCenter; newSymbol.Orientation = basisBasedOnPlayerSight; newSymbol.Size = SymbolsHelper.GetWidthAndHeightOfShape(pointsProjectedToXyPlane).MaxDimension; return(newSymbol); }
public CastGodsHandMessage(CustomSymbol symbol) { this.symbol = symbol; }