internal static RuntimeObject FromPtr(IntPtr pItem) { if (pItem == IntPtr.Zero) { return(null); } if (InstanceFunc.ExIsDestroyed(pItem) != 0) { return(null); } RuntimeObject target = null; Monitor.Enter(s_hashItem); WeakReference reference = s_hashItem[pItem] as WeakReference; if (reference != null) { target = reference.Target as RuntimeObject; } Monitor.Exit(s_hashItem); if ((reference != null) && (target == null)) { GC.WaitForPendingFinalizers(); } if (target == null) { int num = InstanceFunc.ExGetClass(pItem); target = (s_arrClassGen[num] as IItemFactory).Create(pItem); } if (target == null) { throw new Exception(); } return(target); }
protected RuntimeObject(IntPtr pItem) { this.m_pItem = pItem; InstanceFunc.ExAddReference(pItem); Monitor.Enter(s_hashItem); s_hashItem.Add(pItem, new WeakReference(this)); Monitor.Exit(s_hashItem); }
public Vector3 GetSlaveTorque(double stepSize) { double x = 0.0; double y = 0.0; x = InstanceFunc.ExGetCouplingSlaveTorque(base.m_pItem, stepSize, 1); y = InstanceFunc.ExGetCouplingSlaveTorque(base.m_pItem, stepSize, 2); return(new Vector3(x, y, InstanceFunc.ExGetCouplingSlaveTorque(base.m_pItem, stepSize, 3))); }
public Vector3 GetForce(double stepSize) { double x = 0.0; double y = 0.0; x = InstanceFunc.ExGetControlForce(base.m_pItem, stepSize, 1); y = InstanceFunc.ExGetControlForce(base.m_pItem, stepSize, 2); return(new Vector3(x, y, InstanceFunc.ExGetControlForce(base.m_pItem, stepSize, 3))); }
internal static void ClearHash() { Monitor.Enter(s_hashItem); IDictionaryEnumerator enumerator = s_hashItem.GetEnumerator(); while (enumerator.MoveNext()) { IntPtr key = (IntPtr)enumerator.Key; InstanceFunc.ExRelease(key); } s_bShutdown = true; Monitor.Exit(s_hashItem); }
public ComponentPart Copy() { return(RuntimeObject.FromPtr(InstanceFunc.ExCopy(base.m_pItem)) as ComponentPart); }
public CollisionMaterial Copy() { return(RuntimeObject.FromPtr(InstanceFunc.ExCopy(base.m_pItem)) as CollisionMaterial); }
public RigidBody Copy() { return(RuntimeObject.FromPtr(InstanceFunc.ExCopy(base.m_pItem)) as RigidBody); }
public Tag GetPhysicsObject() { return(InstanceFunc.ExAskObjectPersistentTag(this.m_pItem)); }
public virtual void Dispose() { InstanceFunc.ExDestroy(this.m_pItem); }
public ComponentPart AskAssembly() { return(FromPtr(InstanceFunc.ExAskAssembly(this.m_pItem)) as ComponentPart); }