コード例 #1
0
        /**
         *  @brief Initializes internal properties based on whether there is a {@link TSCollider} attached.
         **/
        public void Initialize()
        {
            if (initialized)
            {
                return;
            }

            tsCollider = GetComponent <TSCollider>();
            if (transform.parent != null)
            {
                tsParent = transform.parent.GetComponent <TSTransform>();
            }

            if (!_serialized)
            {
                UpdateEditMode();
            }

            if (tsCollider != null)
            {
                if (tsCollider.IsBodyInitialized)
                {
                    tsCollider.Body.TSPosition    = _position + scaledCenter;
                    tsCollider.Body.TSOrientation = TSMatrix.CreateFromQuaternion(_rotation);
                }
            }
            else
            {
                StateTracker.AddTracking(this);
            }

            initialized = true;
        }
コード例 #2
0
        // 添加追踪
        public static void AddTracking(object obj)
        {
            bool flag = StateTracker.instance != null;

            if (flag)
            {
                List <MemberInfo> membersInfo = Utils.GetMembersInfo(obj.GetType());
                int i     = 0;
                int count = membersInfo.Count;
                while (i < count)
                {
                    MemberInfo memberInfo       = membersInfo[i];
                    object[]   customAttributes = memberInfo.GetCustomAttributes(true);
                    bool       flag2            = customAttributes != null;
                    if (flag2)
                    {
                        int j   = 0;
                        int num = customAttributes.Length;
                        while (j < num)
                        {
                            bool flag3 = customAttributes[j] is AddTracking;
                            if (flag3)
                            {
                                StateTracker.AddTracking(obj, memberInfo.Name);
                            }
                            j++;
                        }
                    }
                    i++;
                }
            }
        }
コード例 #3
0
        // 添加追踪
        public static void AddTracking(object obj, string path)
        {
            bool flag = StateTracker.instance != null;

            if (flag)
            {
                string item  = string.Format("{0}_{1}_{2}", obj.GetType().FullName, obj.GetHashCode(), path);
                bool   flag2 = !StateTracker.instance.trackedInfosAdded.Contains(item);
                if (flag2)
                {
                    StateTracker.TrackedInfo trackedInfo = StateTracker.GetTrackedInfo(obj, path);
                    StateTracker.instance.trackedInfos.Add(trackedInfo);
                    StateTracker.instance.trackedInfosAdded.Add(item);
                    int i    = 0;
                    int size = StateTracker.instance.states.size;
                    while (i < size)
                    {
                        StateTracker.State @new = StateTracker.resourcePool.GetNew();
                        @new.SetInfo(trackedInfo);
                        StateTracker.instance.states.Current().Add(@new);
                        StateTracker.instance.states.MoveNext();
                        i++;
                    }
                }
            }
        }
コード例 #4
0
 // 初始化
 public static void Init(int rollbackWindow)
 {
     StateTracker.instance        = new StateTracker();
     StateTracker.instance.states = new GenericBufferWindow <List <StateTracker.State> >(rollbackWindow);
 }
コード例 #5
0
 // 清空
 public static void CleanUp()
 {
     StateTracker.instance = null;
 }
コード例 #6
0
        /**
         * @brief Instantiate a new prefab in a deterministic way.
         *
         * @param prefab GameObject's prefab to instantiate.
         **/

        /**
         * @brief Clean up references to be collected by gc.
         **/
        public static void CleanUp()
        {
            ResourcePool.CleanUpAll();
            StateTracker.CleanUp();
            instance = null;
        }