Example #1
0
 /// <summary>
 /// 添加门控制脚本
 /// </summary>
 private static DepDoors AddWallDoors(DepDoors depDoors, Transform DoorContainer)
 {
     foreach (Transform child in DoorContainer)
     {
         DoorAccessItem item = GetDoorAccessItem(child);
         if (item != null)
         {
             depDoors.DoorList.Add(item);
         }
     }
     return(depDoors);
 }
Example #2
0
    /// <summary>
    /// 清除门的信息
    /// </summary>
    private void ClearLastDoor()
    {
        if (DoorItem == null)
        {
            return;
        }
        ObjectModel_DoorAccess access = model.GetComponent <ObjectModel_DoorAccess>();

        access.IsAccessInDoor = false;
        access.DoorItem       = null;
        DoorItem.ConstantOff();
        DoorItem = null;
    }
Example #3
0
    /// <summary>
    /// 添加门控制脚本
    /// </summary>
    private static DepDoors AddChildDoorManage(Transform DoorContainer)
    {
        DepDoors depDoors = DoorContainer.gameObject.AddMissingComponent <DepDoors>();
        DepNode  node     = DoorContainer.GetComponentInParent <DepNode>();

        node.InitDoor(depDoors);
        foreach (Transform child in DoorContainer)
        {
            DoorAccessItem item = GetDoorAccessItem(child);
            if (item != null)
            {
                depDoors.DoorList.Add(item);
            }
        }
        return(depDoors);
    }
Example #4
0
 private void GiveRayF()
 {
     if (model != null)
     {
         Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
         RaycastHit hit;
         //Vector3 screenSpace;
         if (Physics.Raycast(ray, out hit, float.MaxValue, mask.value))
         {
             float normalY = hit.point.y + model.transform.gameObject.GetSize().y / 2;
             model.transform.position = new Vector3(hit.point.x, normalY, hit.point.z);;
         }
         else
         {
             if (model.activeInHierarchy)
             {
                 model.SetActive(false);
                 Debug.Log("Ray can't find floor...");
             }
         }
         if (Physics.Raycast(ray, out hit, float.MaxValue))
         {
             DoorAccessItem item = hit.transform.GetComponent <DoorAccessItem>();
             if (item == null && hit.transform.childCount > 0)
             {
                 item = hit.transform.GetChild(0).GetComponent <DoorAccessItem>();
             }
             if (item)
             {
                 ClearLastDoor();
                 DoorItem = item;
                 ObjectModel_DoorAccess access = model.GetComponent <ObjectModel_DoorAccess>();
                 access.IsAccessInDoor = true;
                 access.DoorItem       = item;
                 item.ConstantOn(Color.green);
             }
             else
             {
                 ClearLastDoor();
             }
         }
         else
         {
             ClearLastDoor();
         }
     }
 }
    /// <summary>
    /// 更换当前区域下,门的开关状态
    /// </summary>
    /// <param name="state"></param>
    private void PushDoorStateInfo(DoorAccessState state)
    {
        DoorAccessState door = DoorStateList.Find(i => i.DoorId == state.DoorId && i.Dev.Id == state.Dev.Id);

        if (door != null)
        {
            door.Abutment_CardState = state.Abutment_CardState;
        }
        else
        {
            DoorStateList.Add(state);
        }
        if (FactoryDepManager.currentDep == null)
        {
            return;
        }
        string parentId = state.Dev.ParentId.ToString();

        if (IsDepDev(FactoryDepManager.currentDep, parentId))
        {
            DevNode dev = RoomFactory.Instance.GetCreateDevById(state.Dev.DevID, int.Parse(parentId));
            if (dev != null)
            {
                DoorAccessDevController doorAccess = dev as DoorAccessDevController;
                if (doorAccess)
                {
                    DoorAccessItem doorItem = doorAccess.DoorItem;
                    if (doorItem == null)
                    {
                        Log.Error("DoorAccessManage.PushDoorStateInfo.DoorAcessItem is null:" + doorAccess.Info == null? "devinfo id is null":doorAccess.Info.Id.ToString());
                        return;
                    }
                    doorItem.ChangeDoorState(state);
                    if (!DepDoorList.Contains(doorItem))
                    {
                        DepDoorList.Add(doorItem);
                    }
                }
            }
        }
    }
Example #6
0
    private static DoorAccessItem GetDoorAccessItem(Transform child)
    {
        if (!child.name.ToLower().Contains("door"))
        {
            return(null);
        }
        DoorAccessItem item = null;

        if (child.childCount == 0)
        {
            item = child.gameObject.AddMissingComponent <DoorAccessItem>();
            if (IsNormalDoor(false, child))
            {
                GameObject leftDoor = child.gameObject;
                item.Init(true, leftDoor, null);
            }
            else
            {
                item.InitRollingDoor();
            }
        }
        else if (child.childCount == 2)
        {
            item = child.gameObject.AddMissingComponent <DoorAccessItem>();
            GameObject leftDoor  = child.GetChild(0).gameObject;
            GameObject rightDoor = child.GetChild(1).gameObject;
            item.Init(false, leftDoor, rightDoor);
        }

        var colliders = child.FindComponentsInChildren <MeshCollider>();

        foreach (MeshCollider collider in colliders)
        {
            //collider.enabled = false;//防止妨碍进入
            //GameObject.Destroy(collider);//防止妨碍进入
            collider.convex    = true;
            collider.isTrigger = true;
        }
        return(item);
    }
    /// <summary>
    /// 显示当前区域门的状态
    /// </summary>
    /// <param name="currentDep"></param>
    private void ShowDepDoors(DepNode currentDep)
    {
        List <DoorAccessState> doorStates = DoorStateList.FindAll(dev => dev.Dev.ParentId == currentDep.NodeID);

        if (doorStates != null && doorStates.Count != 0)
        {
            foreach (var door in doorStates)
            {
                DevNode dev = RoomFactory.Instance.GetCreateDevById(door.Dev.DevID, (int)door.Dev.ParentId);
                DoorAccessDevController devController = dev as DoorAccessDevController;
                if (devController != null)
                {
                    DoorAccessItem doorItem = devController.DoorItem;
                    doorItem.ChangeDoorState(door);
                    if (!DepDoorList.Contains(doorItem))
                    {
                        DepDoorList.Add(doorItem);
                    }
                }
            }
        }
    }
 public void InitDoorItem(DoorAccessItem door)
 {
     DoorItem = door;
 }
Example #9
0
    /// <summary>
    /// 根据区域下门的ID,获取门
    /// </summary>
    /// <param name="doorId"></param>
    /// <returns></returns>
    public DoorAccessItem GetDoorItem(string doorId)
    {
        DoorAccessItem door = DoorList.Find(i => i.DoorID == doorId);

        return(door);
    }