Exemple #1
0
        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);
        }
Exemple #2
0
 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);
 }
Exemple #3
0
        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)));
        }
Exemple #4
0
        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)));
        }
Exemple #5
0
        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);
        }
Exemple #6
0
 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);
 }
Exemple #8
0
 public RigidBody Copy()
 {
     return(RuntimeObject.FromPtr(InstanceFunc.ExCopy(base.m_pItem)) as RigidBody);
 }
Exemple #9
0
 public Tag GetPhysicsObject()
 {
     return(InstanceFunc.ExAskObjectPersistentTag(this.m_pItem));
 }
Exemple #10
0
 public virtual void Dispose()
 {
     InstanceFunc.ExDestroy(this.m_pItem);
 }
Exemple #11
0
 public ComponentPart AskAssembly()
 {
     return(FromPtr(InstanceFunc.ExAskAssembly(this.m_pItem)) as ComponentPart);
 }