protected void JoinLabObject() { NDlabObject.AddLabObj(ID, this); LabObjectDataFactory.AddCircuit(ID, GetLabObjType()); if (!(this is EleLine))//导线不加入元器件层级管理 { SetInitDepth(); } }
/// <summary> /// 构建电路 /// </summary> public void JionCircuit(ref Circuit sim) { if (sim == null) { return; } foreach (EleLine line in m_linkEleLine) { if (line == null || line.ConnectLink != true) { continue; } NDCircuitLeap other = line.GetOtherElementLeap(this); if (other == null || other.m_Parent == null) { continue; } CircuitElement myCircuit = LabObjectDataFactory.GetCircuit(m_Parent.LabObjID); CircuitElement OtherCircuit = LabObjectDataFactory.GetCircuit(other.m_Parent.LabObjID); if (myCircuit == null || OtherCircuit == null) { return; } if (m_Type == ElementLeapType.leadOut) { if (other.m_Type == ElementLeapType.leadIn) { sim.Connect(myCircuit.leadOut, OtherCircuit.leadIn); Debug.Log("[" + m_Parent.LabObjID + "]" + "[leadOut]" + "------->" + "[" + other.m_Parent.LabObjID + "]" + "[leadIn]"); } else { sim.Connect(myCircuit.leadOut, OtherCircuit.leadOut); Debug.Log("[" + m_Parent.LabObjID + "]" + "[leadOut]" + "------->" + "[" + other.m_Parent.LabObjID + "]" + "[leadOut]"); } } else { if (other.m_Type == ElementLeapType.leadIn) { sim.Connect(myCircuit.leadIn, OtherCircuit.leadIn); Debug.Log("[" + m_Parent.LabObjID + "]" + "[leadIn]" + "------->" + "[" + other.m_Parent.LabObjID + "]" + "[leadIn]"); } else { sim.Connect(myCircuit.leadIn, OtherCircuit.leadOut); Debug.Log("[" + m_Parent.LabObjID + "]" + "[leadIn]" + "------->" + "[" + other.m_Parent.LabObjID + "]" + "[leadOut]"); } } } }
/// <summary> /// 检测开关是否打开或者关闭,这个在外面需要实时检测 /// </summary> /// <returns></returns> public bool CheckSwitchStateChange() { if (LabObjectDataFactory.GetSwitchState(LabObjID) != IsOpen) { LabObjectDataFactory.SetSwitch(LabObjID, IsOpen); if (CheckConnect() == true) { ModifyCirCuit(); } return(true); } return(false); }
private void CalcCircuit() { if (CircuitM.g_IsCreateCircuit == true && CheckConnect() == true) { LabObjectDataFactory.GetCircuitRunData(LabObjID, ref m_runCurrent, ref m_runVoltage, ref m_runPower); } else { m_runCurrent = 0; m_runVoltage = 0; m_runPower = 0; } DoLabAction(m_runVoltage, m_runCurrent, m_runPower); }
/// <summary> /// 创建电路 /// </summary> public static void CreateCirCuit() { List <NDlabObject> l = SearchLabObject(SearchCicuitType.NormalCircuit, false); foreach (NDlabObject o in l) { LabObjectDataFactory.ResetCircuitRunData(o.LabObjID); } CircuitM.CreateCircuit(); foreach (NDlabObject o in l) { if (o != null) { (o as NDCircuitObject).CalcCircuit(); } } }
/// <summary> /// 修改电路属性 /// </summary> protected void ModifyCirCuit() { //CreateCirCuit(); //return; List <NDlabObject> l = SearchLabObject(SearchCicuitType.NormalCircuit, false); foreach (NDlabObject o in l) { LabObjectDataFactory.ResetCircuitRunData(o.LabObjID); } CircuitM.UpdataCircuit(); foreach (NDlabObject o in l) { if (o != null) { (o as NDCircuitObject).CalcCircuit(); } } }
public static void JionCircuit() { List <NDlabObject> lineList = NDlabObject.SearchLabObject(SearchCicuitType.ELELINE, false); foreach (NDlabObject obj in lineList) { if (obj != null && obj is EleLine) { EleLine eleLine = obj as EleLine; if (eleLine.ConnectLink == true) { NDlabObject start = eleLine.StartLineLeap.Link.m_Parent; NDlabObject end = eleLine.EndLineLeap.Link.m_Parent; CircuitElement myCircuit = LabObjectDataFactory.GetCircuit(start.LabObjID); CircuitElement OtherCircuit = LabObjectDataFactory.GetCircuit(end.LabObjID); Circuit.Lead startLead = eleLine.StartLineLeap.Link.m_Type == ElementLeapType.leadIn?myCircuit.leadIn:myCircuit.leadOut; Circuit.Lead endLead = eleLine.EndLineLeap.Link.m_Type == ElementLeapType.leadIn ? OtherCircuit.leadIn : OtherCircuit.leadOut; g_sim.Connect(startLead, endLead); } } } }
void Start() { LabObjectDataFactory.SetPower(LabObjID, Volatage); }
void Start() { LabObjectDataFactory.SetResistance(LabObjID, Resistance); SetResistanceByType(); }
/// <summary> /// 构建电路 /// </summary> public static bool CreateCircuit() { ClearCircuit(); // if (CheckCircuitLoop() == false) { Debug.Log("电路不连通"); g_IsCreateCircuit = false; return(false); } else { Debug.Log("电路连通"); } // List <NDlabObject> l = NDlabObject.SearchLabObject(SearchCicuitType.NormalCircuit, false); //先加入元气件 foreach (NDlabObject Lab in l) { if (Lab == null) { continue; } else { CircuitElement e = LabObjectDataFactory.GetCircuit(Lab.LabObjID); if (e != null) { g_sim.AddElement(e); } } } //元气件进行连接 foreach (NDlabObject Lab in l) { if (Lab == null) { continue; } else { (Lab as NDCircuitObject).JionCircuit(ref g_sim); } } //JionCircuit(); try { //g_sim.needAnalyze(); if (g_sim.doTick() == false) { //g_IsCreateCircuit = false; Debug.Log("CreateCircuit is false"); return(false); } else { Debug.Log("CreateCircuit is true"); g_IsCreateCircuit = true; } } catch (SharpCircuit.Circuit.CircuitException e) { Debug.Log(e.ToString()); return(false); } return(true); }
void Start() { LabObjectDataFactory.SetSwitch(LabObjID, false); }
void Start() { LabObjectDataFactory.SetLight(LabObjID, m_fRatedVoltage, power); }
public virtual void DestroyLabObject() { g_AllLabObject.Remove(ID); LabObjectDataFactory.RemoveCircuit(ID); GameObject.Destroy(gameObject); }