public void RoutesCorrectly(string rootSegment, string pathSegment, bool shouldMatch) { var root = new MyRoot { UrlSegment = rootSegment }; var segments = new List <string>(); if (pathSegment != null) { segments.Add(pathSegment); } var result = new RootContentRouter(null, Mock.Of <IContentSegmentRouter>()) .Route(root, segments, Enumerable.Empty <ContentTypeDescriptor>()); if (shouldMatch) { Assert.Same(root, result); } else { Assert.Null(result); } }
public void BuildList() { _model.Nodes.Clear(); treeViewAdv1.BeginUpdate(); foreach (BuildSet set in FilesManager.BuildSets) { CheckState state = set.IsEnabled ? CheckState.Checked : CheckState.Unchecked; MyRoot root = (MyRoot)AddRoot(set.Name, set.Image, state, set); foreach (BuildingEntry label in set.Entries) { Node child = AddChild(label.Description, label.Location.X.ToString(), label.Location.Y.ToString(), label.Map.ToString(), label.IsEnabled, label.ShowName, root, label); /*if (state == CheckState.Unchecked && label.IsEnabled) * { * state = CheckState.Checked; * } * else if (state.HasFlag(CheckState.Checked) && !label.IsEnabled) * { * state = CheckState.Indeterminate; * }*/ } } treeViewAdv1.EndUpdate(); treeViewAdv1.ExpandAll(); }
static void Main(string[] args) { MyRoot root = new MyRoot(); root.SubElements.Add(new ItemType() { Name = "Jim" }); root.SubElements.Add(new ItemType() { Name = "Ben" }); root.SubElements.Add(new ItemType() { Name = "Tom" }); XmlSerializer xmlSerializer = new XmlSerializer(typeof(MyRoot)); StringWriter stringWriter = new StringWriter(); xmlSerializer.Serialize(stringWriter, root); Console.WriteLine(stringWriter); Console.ReadKey(); }
//#region 指示器 ///// <summary> ///// 指示器对象显示半径 ///// </summary> //public float BillboardRadius = 600; ///// <summary> ///// 指示器对象在这个角度内以直线方式绘制 ///// </summary> //public int BillboardAngle = 30; ///// <summary> ///// 指示器坐标缓存 ///// </summary> //protected UIBillboardCache BillboardCache = new UIBillboardCache(); ///// <summary> ///// 临时实体数据 ///// </summary> //private List<UIBillboardQueryResult> tmpAroundEntitys = new List<UIBillboardQueryResult>(); ///// <summary> ///// 范围内活动的实体 ///// </summary> //protected Dictionary<Int32, EntityView> RangeActivityEntity = new Dictionary<int, EntityView>(); ///// <summary> ///// 需要隐藏的实体 ///// </summary> //List<int> HideHeroList = new List<int>(); ////保存附近玩家 //public void saveAroundPlayer() //{ // EntityView ev = EntityFactory.getMainPlayer(); // if (ev == null) // { // return; // } // List<Int32> TmpEntityIDList = new List<int>(RangeActivityEntity.Keys); // IList<EntityView> AroundEntitiesList = MapFinderManager.Nearest(ev.StateMachine.transform.position, ev.Sight, SPELL.CampFlag.CampFlag_Enemy); // if (AroundEntitiesList == null) // { // return; // } // Int32 nTmpEntityID = 0; // foreach (EntityView Entity_Ev in AroundEntitiesList) // { // nTmpEntityID = Entity_Ev.ID; // if (Entity_Ev == null || Entity_Ev.StateMachine == null || Entity_Ev.StateMachine.GetState() == EntityState.Dead || Entity_Ev.Type != ENTITY_TYPE.TYPE_PLAYER_ROLE) // continue; // if (!RangeActivityEntity.ContainsKey(nTmpEntityID)) // { // RangeActivityEntity.Add(nTmpEntityID, Entity_Ev); // } // else // { // TmpEntityIDList.Remove(nTmpEntityID); // } // } // while (TmpEntityIDList.Count > 0) // { // nTmpEntityID = TmpEntityIDList[0]; // RangeActivityEntity.Remove(nTmpEntityID); // TmpEntityIDList.RemoveAt(0); // } //} ////更新指示器公告板信息 //private void UpdateBillboard(System.Collections.Generic.List<UIBillboardQueryResult> entitys) //{ // BillboardCache.BeginProcessing(); // SFDisplayInfo info; // UIBillboardMC tmpBillboard; // for (int i = 0; i < entitys.Count; i++) // { // //从缓冲列表里获取可用的对象 // if (BillboardCache.GetUnusedBillboardMovieclip(entitys[i].entityID, out tmpBillboard)) // { // info = tmpBillboard.Billboard.GetDisplayInfo(); // info.Visible = true; // info.X = entitys[i].x; // info.Y = entitys[i].y; // tmpBillboard.Billboard.SetDisplayInfo(info); // EntityView targetEntityView = EntityFactory.getEntityViewByID(entitys[i].entityID); // int nEntityHeroID = targetEntityView.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_VOCATION); // int nTargetCamp = (int)targetEntityView.CampFlag; // //public function SetHeroBearing(_nTargetHeroPortraitID:int,_nTargetCamp:int,_strTargetDistance:String) // if (tmpBillboard.Billboard.Invoke("SetHeroBearing", nEntityHeroID, nTargetCamp, entitys[i].angle,entitys[i].distance+"米") == null) // { // Trace.LogError("call SetHeroBearing failed."); // } // } // } // BillboardCache.EndProcessing(); //} //private void GetPlayerAndUpdate() //{ // //移除上次调用存储的数据 // tmpAroundEntitys.Clear(); // if (RangeActivityEntity.Count > 0 && EntityFactory.MainHeroView.StateMachine.GetState() != EntityState.Dead) // { // foreach (KeyValuePair<int, EntityView> keypair in RangeActivityEntity) // { // GetQueryTarget(keypair.Key, keypair.Value.gameObject.transform); // } // } // UpdateBillboard(tmpAroundEntitys); //} ////计算英雄与附近的玩家目标的角度并映射到UI上 //private void GetQueryTarget(Int32 entityID, Transform TargetEntityTrans) //{ // Transform CameraTransform = SoldierCamera.MainInstance.getCameraTransform(); // //计算位置应该是计算英雄的位置,而不是相机的位置 // float checkDis = Vector3.Distance(TargetEntityTrans.position, EntityFactory.MainHero.transform.position); // if (checkDis > EntityFactory.MainHeroView.Sight || ScreenRaycast.isInScreen(TargetEntityTrans.position)) // return; // Vector3 vecHeroPos = EntityFactory.MainHeroView.gameObject.transform.position; // Vector3 DirHeroToTarget = TargetEntityTrans.position - vecHeroPos; // Vector3 DirHeroToCamera = CameraTransform.position - vecHeroPos; // DirHeroToTarget.y = DirHeroToCamera.y = 0; // //判断目标在相机的左右方,-1左方,+1右方 // Vector3 vecCross = Vector3.Cross(DirHeroToTarget.normalized, DirHeroToCamera.normalized); // float fLorR = Mathf.Sign(-vecCross.y); // //计算之间的夹角 // float angle = Vector3.Angle(DirHeroToTarget.normalized, DirHeroToCamera.normalized); // float relAngle = (angle * fLorR + 90) % 360; // float MovieWidth = MovieDef.GetWidth(); // float MovieHeight = MovieDef.GetHeight(); // UIBillboardQueryResult qr = new UIBillboardQueryResult(); // qr.entityID = entityID; // qr.x = (MovieWidth / 2) + BillboardRadius * (Mathf.Cos(Mathf.Deg2Rad * (relAngle))); // qr.y = (MovieHeight / 2) + BillboardRadius * (Mathf.Sin(Mathf.Deg2Rad * (relAngle))); // //在这个角度范围内图标水平移动 // if (relAngle > BillboardAngle && relAngle < BillboardAngle + 120) // { // qr.y = (MovieHeight / 2) + BillboardRadius * (Mathf.Sin(Mathf.Deg2Rad * BillboardAngle)); // } // qr.distance = Convert.ToUInt32(checkDis); // qr.angle = Convert.ToInt32(relAngle+90); // tmpAroundEntitys.Add(qr); //} //public void ClearBillboardCache() //{ // if (BillboardCache != null) // { // BillboardCache.ClearCache(); // BillboardCache = null; // } // if (RangeActivityEntity == null) // { // RangeActivityEntity.Clear(); // RangeActivityEntity = null; // } // if (tmpAroundEntitys != null) // { // tmpAroundEntitys.Clear(); // tmpAroundEntitys = null; // } // if (HideHeroList != null) // { // HideHeroList.Clear(); // HideHeroList = null; // } //} //public void OnTimer(int nTimerID) //{ // switch( nTimerID ) // { // case (int)EN_GameHud_Timer.ENGT_Pointer: // { // saveAroundPlayer(); // int nCount = HideHeroList.Count; // for (int i = 0; i < nCount; ++i ) // { // if (RangeActivityEntity.ContainsKey(HideHeroList[i])) // { // RangeActivityEntity.Remove(HideHeroList[i]); // } // } // } // break; // default: // break; // } //} //public void OnEvent(U3D_Render.Utility.EVENT eventID, int sourceID, System.Object objEvent) //{ // switch( eventID ) // { // case EVENT.ENTITY_SHOW_HERO: // { // if ( objEvent == null ) // return; // SEntityShowHero event_data = (SEntityShowHero)objEvent; // int nId = event_data.ev.ID; // if (event_data.bIsHide && !HideHeroList.Contains(nId)) // HideHeroList.Add(nId); // else if (!event_data.bIsHide && HideHeroList.Contains(nId)) // HideHeroList.Remove(nId); // } // break; // default: // break; // } //} //#endregion #region 技能提示 public void CreatureShowPormptUI(cmd_creature_ShowPromptUI data) { if (vSpellPrompt == null) { vSpellPrompt = new Value(); MyRoot.AttachMovie(ref vSpellPrompt, "Com.Scaleform.WarGameHud.WGH_SpellPrompt", "vSpellPrompt", 0); SFDisplayInfo di = vSpellPrompt.GetDisplayInfo(); di.X = 1920 / 2 + 100; di.Y = 1080 - 300; vSpellPrompt.SetDisplayInfo(di); } IntPtr DesPtr, IconPtr; //R ASpeedGame.Data.GameMobaSchemes.SSchemeShowSpellPrompt SchemesSpellPrompt = ASpeedGame.Data.GameMobaSchemes.GameMobaSchemesManager.Instance.GetSpellPromptInfo(data.nPromptID); if (SchemesSpellPrompt != null) { DesPtr = GameLogicAPI.getShortcutDes(SchemesSpellPrompt.nSlotID, (int)SLOT_TYPE.SLOT_TYPE_SKILL); IconPtr = GameLogicAPI.getSpellData(SchemesSpellPrompt.nSpellID); if (DesPtr != IntPtr.Zero && IconPtr != IntPtr.Zero) { string des = IntPtrHelper.Ptr2Str(DesPtr); SPELL.SPELL_DATA spellData = IntPtrHelper.toData <SPELL.SPELL_DATA>(IconPtr); if (vSpellPrompt == null || vSpellPrompt.Invoke("SetSpellPromptInfo", spellData.nIcon, des.ToUpper(), Convert.ToBoolean(data.nType)) == null) { Trace.LogWarning("SetSpellPromptInfo failed."); } } } }
//加载界面背景图片 public void SetLoadingWinBG(string bgName) { if (MyRoot.Invoke("AttachLoadingBg", bgName) == null) { Trace.LogError("call AttachLoadingBg failed"); return; } }
public void DisAttachLoadingBg() { if (MyRoot.Invoke("DisAttachLoadingBg") == null) { Trace.LogError("call DisAttachLoadingBg failed"); return; } }
public void SetMapSignalType(int signalType) { if (MyRoot == null || !MyRoot.IsValid()) { return; } MyRoot.Invoke("SetMapSignalType", signalType); }
public void UpdateMouseLine(float rotation) { if (MyRoot == null || !MyRoot.IsValid()) { return; } MyRoot.Invoke("UpdateMouseLine", rotation); }
private Node AddRoot(string name, Bitmap img, CheckState enabled, BuildSet set) { MyRoot node = new MyRoot(name, img, enabled) { Tag = set }; _model.Nodes.Add(node); return(node); }
/// <summary> /// destroy 时移除背景动画 /// </summary> private void DisAttachBackgroundMovie() { if (MyRoot != null && MyRoot.IsValid()) { if (MyRoot.Invoke("DisAttachBackgroundMovie") == null) { Trace.LogError("call DisAttachBackgroundMovie failed"); return; } } }
public void AttachWarLoadingMgr() { if (Value.IsValueValid(MyRoot)) { if (MyRoot.Invoke("AttachWarLoadingMgr") == null) { Trace.LogError("call AttachWarLoadingMgr failed."); return; } } }
public void GetRootTest() { var root1 = MyRoot.GetRoot(1); Assert.AreEqual(1, root1.Id); Assert.AreEqual("Jonny", root1.Name); var root2 = MyRoot.GetRoot(2); Assert.AreEqual(2, root2.Id); Assert.AreEqual("Matt", root2.Name); }
// 设置是否可选 public void setIsEnable(bool bIsEnable) { if (!Value.IsValueValid(MyRoot)) { return; } if (MyRoot.Invoke("setIsEnable", bIsEnable) == null) { Trace.LogError("call setIsEnale failed"); return; } }
/// <summary> /// AS-> public function CreateMessageBox(_title:String,_message:String,_type:uint,_btnOKCallBack:String=null,_btnCancelCallBack:String=null) /// </summary> /// <param name="_title">信息框标题</param> /// <param name="_message">信息内容,可html</param> /// <param name="_type">信息框显示类型</param> /// <param name="_btnOKCallBack">确认按钮点击回调,可为空</param> /// <param name="_btnCancelCallBack">取消按钮点击回调,可为空</param> public void CreateMessageBox(string _title, string _message, EMessageBoxType _type, string _btnOKCallBack = null, string _btnCancelCallBack = null) { int type = (Convert.ToInt32(_type)); Trace.Log("CreateMessageBox"); if (MyRoot.Invoke("CreateMessageBox", _title, _message, type, _btnOKCallBack, _btnCancelCallBack) == null) { Trace.LogError("error call CreateMessageBox failed"); return; } SetDepth((int)SFGFxMovieManager.EGFxMovieLayer.EGFxLayer_Loading); }
/// 外部调用UI上系统飘字信息 public void onBroadFloatTextSystem(string stTextInfo = "", int nPosType = 0, int nTime = 0) { if (MyRoot != null && MyRoot.IsValid()) { string stInfo = stTextInfo; UBB.toHtml(ref stInfo); if (null == MyRoot.Invoke("onBroadFloatTextSystem", stInfo, nPosType, nTime)) { Trace.LogError("onBroadFloatTextSystem invoke == NULL stInfo = " + stInfo + ", nPosType = " + nPosType + "nTime = " + nTime); } } }
// 设置当前玩家的英雄pid与heroId public void setHeroDefaultInfo(uint uPid, int nIconId) { if (uPid == 0 || nIconId == 0) { Trace.LogWarning("c# setHeroDefaultInfo uPid = " + uPid + "HeroId" + nIconId); return; } HeroID = nIconId; this.uPid = uPid; MyRoot.SetMember("SelectedPID", uPid); MyRoot.SetMember("HeroID", nIconId); }
public void DisAttachStatusIndicatorBar() { if (!Value.IsValueValid(StatusIndicatorMC)) { return; } if (MyRoot.Invoke("DisAttachStatusIndicatorBar") == null) { Trace.LogError("call DisAttachStatusIndicatorBar failed."); return; } }
public void HideTooltipEx(string _tooltipType) { if (_tooltipType != _curTooltipType) { return; } if (MyRoot.Invoke("HideTooltip") == null) { Trace.LogError("call HideTooltip error"); } this._curTooltipType = ""; }
public void ShowTooltipEx(Value _tooltipIns, double _x, double _y) { //Trace.LogError("ShowTooltipEx"); /* * 传的位置要调整 */ if (MyRoot.Invoke("ShowTooltip", _tooltipIns, _x, _y) == null) { Trace.LogError("call ShowTooltip error"); } // else // Trace.LogError("call ShowTooltip success"); }
public void Should_be_able_to_index_nested_child_by_registrating_child_only() { Builder = StructureBuilder.Create(c => c.Register <MyRoot>(cfg => cfg .UsingIndexMode(IndexMode.Inclusive) .Members(e => e.OneChild.GrandChild.SomeInt))); var item = new MyRoot { SomeString = "Foo Bar", SomeInt = 1, OneChild = new MyChild { SomeString = "One child", SomeInt = 2, GrandChild = new MyGrandChild { SomeString = "Grand child 2.1", SomeInt = 21 } }, ManyChildren = new List <MyChild> { new MyChild { SomeString = "List Child1", SomeInt = 3, GrandChild = new MyGrandChild { SomeString = "Grand child 3.1", SomeInt = 31 } }, new MyChild { SomeString = "List Child2", SomeInt = 4, GrandChild = new MyGrandChild { SomeString = "Grand child 4.1", SomeInt = 41 } } } }; var structure = Builder.CreateStructure(item); Assert.AreEqual(1, structure.Indexes.Count); }
public override void OnRegisterDocument(Value _root) { base.OnRegisterDocument(_root); GetMemberWithCheck(MyRoot, "TFrame", out TFrame); GetMemberWithCheck(MyRoot, "CCFrame", out CCFrame); HeroID = (int)MyRoot.GetMember("HeroID"); SetMovieVisibleOnCreate(); this.MyMovieIsRegisterSuccess = true; if (OnHeroSelectChanged != null) { HeroSelectEventArgs e = new HeroSelectEventArgs(); e.SelectHeroID = HeroID; OnHeroSelectChanged(this, e); } }
public void ShowMapSignal(bool bShow) { if (MyRoot == null || !MyRoot.IsValid()) { return; } if (bShow) { PopupMovieManager.Instance.PushMovie(this); MyRoot.Invoke("SetMapSignalVisible", 1); } else { MyRoot.Invoke("SetMapSignalVisible", 0); PopupMovieManager.Instance.PopMovie(this); } }
/// <summary> /// 判断要显示tooltip的目标所在位置属于舞台九宫格的哪个区域内 /// </summary> /// <param name="_x">目标相对于舞台的x坐标</param> /// <param name="_y">目标相对于舞台的y坐标</param> /// <returns>0~8为3x3的九宫格格子序号</returns> public int GetTargetIn9Grid(double _x, double _y) { int res = -1; Value resValue = null; if (MyRoot.Invoke("ContainsPointInGrid", _x, _y) == null) { Trace.LogError("call ContainsPointInGrid failed"); return(res); } if (!GetMemberWithCheck(MyRoot, "PointContainsInGridIndex", out resValue)) { return(res); } res = (int)resValue; return(res); }
// 设置自己段位,青铜五--王者 public void SetStrengthLine(IntPtr ptrParam, int nPtrLen) { if (!Value.IsValueValid(MyRoot)) { return; } IntPtrVaArgParseHelper helper = new IntPtrVaArgParseHelper(ptrParam, nPtrLen); cmd_count nCountdata = helper.get <cmd_count>(); for (int i = 0; i < nCountdata.nCount; ++i) { cmd_entity_match_type_rank data = helper.get <cmd_entity_match_type_rank>(); if (MyRoot.Invoke("SetStrengthLine", data.szGradeName) == null) { Trace.LogError("call SetStrengthLine failed"); return; } } }
static void Main(string[] args) { MyRoot root = new MyRoot(); root.SubElements.Add(new ItemType() { Name = "Jim" }); root.SubElements.Add(new ItemType() { Name = "Ben" }); root.SubElements.Add(new ItemType() { Name = "Tom" }); string xml = Serialize(root, "myNewRoot"); Console.WriteLine(xml); Console.ReadKey(); }
public void GetRootThrowsDataPortalException() { var root1 = MyRoot.GetRoot(999); }
private void MyRootForm_Load(object sender, System.EventArgs e) { rootBindingSource.Rebind(MyRoot.GetRoot(5)); }
private bool ParseWarSkillTooltip(Value _tooltipElememts) { bool res = true; double _x, _y = 0; string _skillDes1; /*目前解析为测试用 * 元素0:目标的x坐标 * 元素1:目标的y坐标 * 元素2:目标的宽(这里不需要) * 元素3:目标的高(这里不需要) * 元素4:目标DefaultText内容(这里不需要) * * 元素5:目标技能第一项描述 * 元素6:目标技能ID */ if (_tooltipElememts.GetArraySize() > 0) { _x = (double)_tooltipElememts.GetElement(0); _y = (double)_tooltipElememts.GetElement(1); //Trace.LogWarning("_tooltipElememts.GetArraySize()=" + _tooltipElememts.GetArraySize()); if (_tooltipElememts.GetElement(5) == null) { return(false); } _skillDes1 = ((string)_tooltipElememts.GetElement(5)).TrimStart('$'); //获得各个属性加成系数 UBBPropertyInstance.getRatio(_skillDes1); //解析UBB UBB.toHtml(ref _skillDes1); //传数据到AS if (!Value.IsValueValid(WarSkillTooltip)) { Trace.LogError("解析Tooltip类型时,发现WarSkillTooltip无实例对象"); return(false); } // function SetText(_strDes1:String):void if (WarSkillTooltip.Invoke("SetText", _skillDes1) == null) { Trace.LogError("解析Tooltip类型时,执行WarSkillTooltip 的SetText操作失败"); return(false); } double tipsHeight = (double)WarSkillTooltip.GetMember("height"); double tipsWidth = (double)WarSkillTooltip.GetMember("width"); GFxWarBottomCenterHud bottomCenterHud = SFGFxMovieManager.GetWindow <GFxWarBottomCenterHud>(); if (SFGFxMovieManager.CheckTheMovieCanUse(bottomCenterHud)) { double VisibleRectWidth = (double)MyRoot.GetMember("VisibleRectWidth"); double VisibleRectX = (double)MyRoot.GetMember("VisibleRectX"); _x = VisibleRectWidth / 2 - (float)tipsWidth / 2; _y = bottomCenterHud.GetBottomHudYPos - (float)tipsHeight; } else { Vector3 ScreenPos = Vector3.zero; Vector3 StagePos = Vector3.zero; ScreenPos.x = Screen.width / 4; ScreenPos.y = Screen.height * 2 / 5; StagePos = this.ScreenPointToStagePoint(ScreenPos); _x = StagePos.x; _y = StagePos.y; } //让AS显示 ShowTooltipEx(WarSkillTooltip, _x, _y); } return(res); }
private bool ParseWarBuffTooltip(Value _tooltipElememts) { double _x, _y = 0; string _strBuffName, _strBuffDes; _x = (double)_tooltipElememts.GetElement(0); _y = (double)_tooltipElememts.GetElement(1); //Trace.LogWarning("_tooltipElememts.GetArraySize()=" + _tooltipElememts.GetArraySize()); if (_tooltipElememts.GetElement(5) == null) { return(false); } _strBuffName = (string)_tooltipElememts.GetElement(5); _strBuffDes = (string)_tooltipElememts.GetElement(6); //获得各个属性加成系数 UBBPropertyInstance.getRatio(_strBuffDes); //解析UBB UBB.toHtml(ref _strBuffDes); UBB.toHtml(ref _strBuffName); //传数据到AS if (!Value.IsValueValid(WarBuffTooltip)) { Trace.LogError("解析Tooltip类型时,发现WarBuffTooltip无实例对象"); return(false); } // public function SetText(_strBuffName:String,_strBuffDes:String) if (WarBuffTooltip.Invoke("SetText", _strBuffName, _strBuffDes) == null) { Trace.LogError("解析Tooltip类型时,执行 WarBuffTooltip 的SetText操作失败"); return(false); } double tipsHeight = (double)WarBuffTooltip.GetMember("height"); double tipsWidth = (double)WarBuffTooltip.GetMember("width"); GFxWarBottomCenterHud bottomCenterHud = SFGFxMovieManager.GetWindow <GFxWarBottomCenterHud>(); if (SFGFxMovieManager.CheckTheMovieCanUse(bottomCenterHud)) { double MovieDefWidth = (double)MyRoot.GetMember("VisibleRectWidth"); _x = MovieDefWidth / 2 - tipsWidth; _y = bottomCenterHud.GetBottomHudYPos - (float)tipsHeight; } else { Vector3 ScreenPos = Vector3.zero; Vector3 StagePos = Vector3.zero; ScreenPos.x = Screen.width / 4; ScreenPos.y = Screen.height * 2 / 5; StagePos = this.ScreenPointToStagePoint(ScreenPos); _x = StagePos.x; _y = StagePos.y; } //让AS显示 ShowTooltipEx(WarBuffTooltip, _x, _y); return(true); }
private void MyRootForm_Load(object sender, EventArgs e) { RootObject = MyRoot.GetRoot(); Rebind(); }