예제 #1
0
        public override void PlaceBuilding()
        {
            UNetBuilding building = currentBuilding as UNetBuilding;

            if (building != null)
            {
                var evnt = building.PackData(entity, true);
                evnt.SendToServer();
            }

            DestroyCurrentBuilding();
            ResetBuildingInstance();
        }
예제 #2
0
        /// <summary>
        /// Called when the CreateNetworkBuilding event is called
        /// </summary>
        /// <param name="msg">event data</param>
        public void CreateNetworkBuildingEvent(NetworkMessage msg)
        {
            var evnt = msg.ReadMessage <CreateNetworkedBuilding>();

            if (NetworkServer.active)
            {
                GameObject prefab = PrefabDB.instance.GetGO(evnt.prefabID);

                if (prefab != null && evnt.requester != null)
                {
                    var instance = GameObject.Instantiate(prefab);

                    UNetBuilding building = instance.GetComponent <UNetBuilding>();

                    building.transform.position = evnt.pos;
                    building.transform.rotation = evnt.rot;

                    if (!building.CheckConditions()) // check conditions serverside
                    {
                        Destroy(instance);
                        return;
                    }

                    entities.Add(building);

                    evnt.id     = entities.Count;
                    evnt.health = building.maxHealth;

                    building.LoadData(evnt);

                    building.PackData(evnt.requester, false).Send();
                }
            }
            else
            {
                LoadEntity(evnt);
            }
        }