private void AddSuperClass(StillOneScriptCore.EntityModel.LngObjectsModel._Object superClass, float rank, StillOneScriptCore.EntityModel.LngObjectsModel.Support.Internal._P_BaseInstace p_instance, bool isAddInstance) { if (superClass == null) { throw new ArgumentNullException("superClass"); } if (!superClass.IsClass) { throw new System.Exception("Invalid superclass. The superclass must be a class."); } if(p_instance == null) { if (isAddInstance) { throw new ArgumentNullException("p_instance"); } } if (mParent.IsClass && superClass.IsInheritedFrom(mParent) > 0) { throw new System.Exception("Setting cyclic inheritance."); } var tmpInfo = FindSuperClassInMe(superClass); var tmpIsUpdateRank = false; if(tmpInfo == null) { tmpInfo = new StillOneScriptCore.EntityModel.LngObjectsModel.Support.InheritanceInfo(superClass); mSuperClasses.Add(tmpInfo); } else { tmpIsUpdateRank = true; } tmpInfo.Rank = rank; if (tmpIsUpdateRank) { EmitUpdatedEvent(superClass, rank); } else { if (isAddInstance) { mP_InstancesCollection.AddItem(p_instance, superClass.AsClass); } EmitAddedEvent(superClass, rank); } }