Esempio n. 1
0
        public static PlaceBoardPacket BuildFromBoard(CircuitBoard board, Transform parent)
        {
            var netObj = board.GetComponent <NetObject>();

            if (netObj == null)
            {
                netObj       = board.gameObject.AddComponent <NetObject>();
                netObj.NetID = NetObject.GetNewID();
            }

            var packet = new PlaceBoardPacket
            {
                AuthorID      = NetworkClient.Instance.PlayerID,
                ParentBoardID = parent?.GetComponent <NetObject>()?.NetID ?? 0,
                Position      = board.transform.position,
                EulerAngles   = board.transform.eulerAngles
            };
            var savedObj = SavedObjectUtilities.CreateSavedObjectFrom(board.gameObject);

            using (var mem = new MemoryStream())
            {
                BinFormatter.Serialize(mem, savedObj);

                packet.SavedBoard = mem.ToArray();
            }

            return(packet);
        }
Esempio n. 2
0
        public static void PlaceBoard()
        {
            if (StuffPlacer.OkayToPlace)
            {
                foreach (var item in BoardPlacer.BoardBeingPlaced.GetComponentsInChildren <ObjectInfo>())
                {
                    var netObj = item.GetComponent <NetObject>() ?? item.gameObject.AddComponent <NetObject>();
                    netObj.NetID = NetObject.GetNewID();
                }

                foreach (var item in BoardPlacer.BoardBeingPlaced.GetComponentsInChildren <NetObject>())
                {
                    item.enabled = true;
                }

                var boardComp = BoardPlacer.BoardBeingPlaced.GetComponent <CircuitBoard>();
                var parent    = BoardPlacer.ReferenceObject.transform.parent;

                var packet = PlaceBoardPacket.BuildFromBoard(boardComp, parent);

                Network.SendPacket(packet);

                foreach (var item in boardComp.GetComponentsInChildren <CircuitOutput>())
                {
                    CircuitStatePacket.SetOutputState(item, item.On, true);
                }
            }
        }
Esempio n. 3
0
        public static PlaceWirePacket BuildFromLocalWire(Wire wire)
        {
            var wireBeingPlaced = wire.gameObject;

            var netObj = wireBeingPlaced.AddComponent <NetObject>();

            netObj.NetID = NetObject.GetNewID();

            var netObj1 = GetNetObjectFromPoint(wire.Point1);
            var netObj2 = GetNetObjectFromPoint(wire.Point2);

            if (netObj1 == null || netObj2 == null)
            {
                return(null);
            }

            int ioIndex1 = netObj1.IO.IndexOf(wire.Point1.parent.gameObject);
            int ioIndex2 = netObj2.IO.IndexOf(wire.Point2.parent.gameObject);

            if (ioIndex1 == -1 || ioIndex2 == -1)
            {
                return(null);
            }

            return(new PlaceWirePacket
            {
                NetObj1Id = netObj1.NetID,
                NetObj2Id = netObj2.NetID,
                Point1Id = ioIndex1,
                Point2Id = ioIndex2,
                NetID = netObj.NetID
            });
        }
Esempio n. 4
0
        public static PlaceComponentPacket BuildFromLocalComponent(GameObject component)
        {
            var netObj = component.GetComponent<NetObject>();

            if (netObj == null)
            {
                netObj = component.AddComponent<NetObject>();
                netObj.NetID = NetObject.GetNewID();
                
                if (component.GetComponent<ObjectInfo>()?.ComponentType == ComponentType.Mount)
                {
                    var board = component.GetComponentInChildren<CircuitBoard>();
                    board.gameObject.AddComponent<NetObject>().NetID = NetObject.GetNewID();
                }
            }

            var objInfo = component.GetComponent<ObjectInfo>();

            int parentId = component.transform.parent?.GetComponent<NetObject>()?.NetID ?? 0;

            return new PlaceComponentPacket
            {
                NetID = netObj.NetID,
                SavedObject = SavedObjectUtilities.CreateSavedObjectFrom(objInfo),
                LocalPosition = component.transform.localPosition,
                EulerAngles = component.transform.localEulerAngles,
                ParentBoardID = parentId
            };
        }
Esempio n. 5
0
 public static void AddNetObjects()
 {
     foreach (var item in GameObject.FindObjectsOfType <ObjectInfo>())
     {
         if (item.GetComponent <NetObject>() == null)
         {
             item.gameObject.AddComponent <NetObject>().NetID = NetObject.GetNewID();
         }
     }
 }
Esempio n. 6
0
        public static NetObject GetOrAddNetObject(this GameObject gameObject, bool setId = true)
        {
            var netObj = gameObject.GetComponent <NetObject>();

            if (netObj == null)
            {
                netObj = gameObject.AddComponent <NetObject>();

                if (setId)
                {
                    netObj.NetID = NetObject.GetNewID();
                }
            }

            return(netObj);
        }
Esempio n. 7
0
        public static void Place(StackBoardMenu __instance)
        {
            if (!ModUtilities.GetFieldValue <bool>(__instance, "CurrentPlacementIsValid"))
            {
                return;
            }

            var allBoards   = ModUtilities.GetFieldValue <List <GameObject> >(__instance, "AllSubBoardsInvolvedWithStacking");
            var parentBoard = ModUtilities.GetFieldValue <GameObject>(__instance, "BoardBeingStacked");
            var firstBoard  = allBoards.First(o => o != parentBoard);

            foreach (var item in firstBoard.GetComponentsInChildren <ObjectInfo>())
            {
                var netObj = item.GetComponent <NetObject>() ?? item.gameObject.AddComponent <NetObject>();
                netObj.NetID = NetObject.GetNewID();
            }

            var packet = PlaceBoardPacket.BuildFromBoard(firstBoard.GetComponent <CircuitBoard>(), parentBoard.transform);

            Network.SendPacket(packet);
        }