示例#1
0
 protected void JoinLabObject()
 {
     NDlabObject.AddLabObj(ID, this);
     LabObjectDataFactory.AddCircuit(ID, GetLabObjType());
     if (!(this is EleLine))//导线不加入元器件层级管理
     {
         SetInitDepth();
     }
 }
示例#2
0
    /// <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]");
                }
            }
        }
    }
示例#3
0
 /// <summary>
 /// 检测开关是否打开或者关闭,这个在外面需要实时检测
 /// </summary>
 /// <returns></returns>
 public bool CheckSwitchStateChange()
 {
     if (LabObjectDataFactory.GetSwitchState(LabObjID) != IsOpen)
     {
         LabObjectDataFactory.SetSwitch(LabObjID, IsOpen);
         if (CheckConnect() == true)
         {
             ModifyCirCuit();
         }
         return(true);
     }
     return(false);
 }
示例#4
0
 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);
 }
示例#5
0
    /// <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();
            }
        }
    }
示例#6
0
    /// <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();
            }
        }
    }
示例#7
0
文件: CircuitM.cs 项目: 741645596/Lab
    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);
                }
            }
        }
    }
示例#8
0
 void Start()
 {
     LabObjectDataFactory.SetPower(LabObjID, Volatage);
 }
示例#9
0
 void Start()
 {
     LabObjectDataFactory.SetResistance(LabObjID, Resistance);
     SetResistanceByType();
 }
示例#10
0
文件: CircuitM.cs 项目: 741645596/Lab
    /// <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);
    }
示例#11
0
 void Start()
 {
     LabObjectDataFactory.SetSwitch(LabObjID, false);
 }
示例#12
0
 void Start()
 {
     LabObjectDataFactory.SetLight(LabObjID, m_fRatedVoltage, power);
 }
示例#13
0
 public virtual void DestroyLabObject()
 {
     g_AllLabObject.Remove(ID);
     LabObjectDataFactory.RemoveCircuit(ID);
     GameObject.Destroy(gameObject);
 }