public override void Process(PlaceFurniture packet) { GameObject buildPrefab = CraftData.GetBuildPrefab(packet.TechType); MultiplayerBuilder.overridePosition = packet.ItemPosition; MultiplayerBuilder.overrideQuaternion = packet.Rotation; MultiplayerBuilder.overrideTransform = new GameObject().transform; MultiplayerBuilder.overrideTransform.position = packet.CameraPosition; MultiplayerBuilder.overrideTransform.rotation = packet.CameraRotation; MultiplayerBuilder.placePosition = packet.ItemPosition; MultiplayerBuilder.placeRotation = packet.Rotation; MultiplayerBuilder.Begin(buildPrefab); SubRoot subRoot = null; if (packet.SubGuid.IsPresent()) { GameObject sub = GuidHelper.RequireObjectFrom(packet.SubGuid.Get()); subRoot = sub.GetComponent <SubRoot>(); } GameObject gameObject = MultiplayerBuilder.TryPlaceFurniture(subRoot); GuidHelper.SetNewGuid(gameObject, packet.Guid); Constructable constructable = gameObject.RequireComponentInParent <Constructable>(); /** * Manually call start to initialize the object as we may need to interact with it within the same frame. */ MethodInfo startCrafting = typeof(Constructable).GetMethod("Start", BindingFlags.NonPublic | BindingFlags.Instance); Validate.NotNull(startCrafting); startCrafting.Invoke(constructable, new object[] { }); }
public void ConstructItem(String guid, String subGuid, Vector3 position, Quaternion rotation, Transform cameraTransform, TechType techType) { GameObject buildPrefab = CraftData.GetBuildPrefab(techType); MultiplayerBuilder.overridePosition = position; MultiplayerBuilder.overrideQuaternion = rotation; MultiplayerBuilder.overrideTransform = cameraTransform; MultiplayerBuilder.placePosition = position; MultiplayerBuilder.placeRotation = rotation; MultiplayerBuilder.Begin(buildPrefab); Optional <GameObject> opSub = GuidHelper.GetObjectFrom(subGuid); if (opSub.IsEmpty()) { Console.WriteLine("Could not locate sub with guid" + subGuid); return; } SubRoot subRoot = opSub.Get().GetComponent <SubRoot>(); GameObject gameObject = MultiplayerBuilder.TryPlaceFurniture(subRoot); GuidHelper.SetNewGuid(gameObject, guid); }
public override void Process(PlaceBasePiece packet) { GameObject buildPrefab = CraftData.GetBuildPrefab(packet.TechType); MultiplayerBuilder.overridePosition = packet.ItemPosition; MultiplayerBuilder.overrideQuaternion = packet.Rotation; MultiplayerBuilder.overrideTransform = new GameObject().transform; MultiplayerBuilder.overrideTransform.position = packet.CameraPosition; MultiplayerBuilder.overrideTransform.rotation = packet.CameraRotation; MultiplayerBuilder.placePosition = packet.ItemPosition; MultiplayerBuilder.placeRotation = packet.Rotation; MultiplayerBuilder.Begin(buildPrefab); Optional <GameObject> parentBase = (packet.ParentBaseGuid.IsPresent()) ? GuidHelper.GetObjectFrom(packet.ParentBaseGuid.Get()) : Optional <GameObject> .Empty(); ConstructableBase constructableBase = MultiplayerBuilder.TryPlaceBase(parentBase); GuidHelper.SetNewGuid(constructableBase.gameObject, packet.Guid); /** * Manually call start to initialize the object as we may need to interact with it within the same frame. */ MethodInfo startCrafting = typeof(Constructable).GetMethod("Start", BindingFlags.NonPublic | BindingFlags.Instance); Validate.NotNull(startCrafting); startCrafting.Invoke(constructableBase, new object[] { }); }
public void ConstructItem(String guid, Vector3 position, Quaternion rotation, Transform cameraTransform, TechType techType, Optional <String> parentBaseGuid) { GameObject buildPrefab = CraftData.GetBuildPrefab(techType); MultiplayerBuilder.overridePosition = position; MultiplayerBuilder.overrideQuaternion = rotation; MultiplayerBuilder.overrideTransform = cameraTransform; MultiplayerBuilder.placePosition = position; MultiplayerBuilder.placeRotation = rotation; MultiplayerBuilder.Begin(buildPrefab); Optional <GameObject> parentBase = (parentBaseGuid.IsPresent()) ? GuidHelper.GetObjectFrom(parentBaseGuid.Get()) : Optional <GameObject> .Empty(); ConstructableBase constructableBase = MultiplayerBuilder.TryPlaceBase(parentBase); GuidHelper.SetNewGuid(constructableBase.gameObject, guid); /** * Manually call start to initialize the object as we may need to interact with it within the same frame. */ MethodInfo startCrafting = typeof(Constructable).GetMethod("Start", BindingFlags.NonPublic | BindingFlags.Instance); Validate.NotNull(startCrafting); startCrafting.Invoke(constructableBase, new object[] { }); }
private void Process(ClientBuildConstruct msg) { var prefab = CraftData.GetBuildPrefab(msg.tech); if (prefab == null) { return; } Logic.Building.buildBase = GuidHelper.FindComponent <Base>(msg.targetGuid); Logic.Building.buildDirection = msg.direction; Logic.Building.buildBaseFace = msg.face; Logic.Building.buildBaseAnchor = msg.anchor; Logic.Building.buildPlaceActive = true; using (var change = new BuildChange(msg.cameraPosition, msg.cameraRotation, msg.subGuid)) { try { MultiplayerBuilder.baseGhostGuid = msg.ghostGuid; MultiplayerBuilder.targetGuid = msg.targetGuid; MultiplayerBuilder.targetGuid = msg.targetGuid; MultiplayerBuilder.overridePosition = msg.objectPosition; MultiplayerBuilder.overrideRotation = msg.objectRotation; MultiplayerBuilder.additiveRotation = msg.additiveRotation; Builder.additiveRotation = msg.additiveRotation; MultiplayerBuilder.Begin(prefab); MultiplayerBuilder.Update(); GameObject gameObject; Constructable constructable; if (MultiplayerBuilder.TryPlace(out gameObject, out constructable)) { if (gameObject != null) { GuidHelper.Set(gameObject, msg.objectGuid); } if (constructable != null) { var method = typeof(Constructable).GetMethod("Start", BindingFlags.NonPublic | BindingFlags.Instance); method.Invoke(constructable, new object[] { }); } } else { Log.Warn("Couldn't place piece: " + msg.tech); } MultiplayerBuilder.End(); } catch (Exception exception) { UnityEngine.Debug.LogException(exception); } } Logic.Building.buildPlaceActive = false; }
private void PlaceBasePiece(BasePiecePlacedEvent basePiecePlacedBuildEvent) { Log.Debug($"BuildBasePiece - {basePiecePlacedBuildEvent.BasePiece.Id} type: {basePiecePlacedBuildEvent.BasePiece.TechType} parentId: {basePiecePlacedBuildEvent.BasePiece.ParentId.OrElse(null)}"); BasePiece basePiece = basePiecePlacedBuildEvent.BasePiece; GameObject buildPrefab = CraftData.GetBuildPrefab(basePiece.TechType.ToUnity()); MultiplayerBuilder.overridePosition = basePiece.ItemPosition.ToUnity(); MultiplayerBuilder.overrideQuaternion = basePiece.Rotation.ToUnity(); MultiplayerBuilder.overrideTransform = new GameObject().transform; MultiplayerBuilder.overrideTransform.position = basePiece.CameraPosition.ToUnity(); MultiplayerBuilder.overrideTransform.rotation = basePiece.CameraRotation.ToUnity(); MultiplayerBuilder.placePosition = basePiece.ItemPosition.ToUnity(); MultiplayerBuilder.placeRotation = basePiece.Rotation.ToUnity(); MultiplayerBuilder.rotationMetadata = basePiece.RotationMetadata; MultiplayerBuilder.Begin(buildPrefab); GameObject parentBase = null; if (basePiece.ParentId.HasValue) { parentBase = NitroxEntity.GetObjectFrom(basePiece.ParentId.Value).OrElse(null); } Constructable constructable; GameObject gameObject; if (basePiece.IsFurniture) { SubRoot subRoot = (parentBase != null) ? parentBase.GetComponent <SubRoot>() : null; gameObject = MultiplayerBuilder.TryPlaceFurniture(subRoot); constructable = gameObject.RequireComponentInParent <Constructable>(); } else { constructable = MultiplayerBuilder.TryPlaceBase(parentBase); gameObject = constructable.gameObject; } if (parentBase != null && basePiece.IsFurniture) { gameObject.transform.parent = parentBase.gameObject.transform; } NitroxEntity.SetNewId(gameObject, basePiece.Id); /** * Manually call start to initialize the object as we may need to interact with it within the same frame. */ MethodInfo startCrafting = typeof(Constructable).GetMethod("Start", BindingFlags.NonPublic | BindingFlags.Instance); Validate.NotNull(startCrafting); startCrafting.Invoke(constructable, new object[] { }); }
public void ConstructItem(Vector3 position, Quaternion rotation, TechType techType) { GameObject buildPrefab = CraftData.GetBuildPrefab(techType); MultiplayerBuilder.overridePosition = position; MultiplayerBuilder.overrideQuaternion = rotation; MultiplayerBuilder.placePosition = position; MultiplayerBuilder.placeRotation = rotation; MultiplayerBuilder.Begin(buildPrefab); MultiplayerBuilder.TryPlace(); }
private void BuildBasePiece(BasePiecePlacedEvent basePiecePlacedBuildEvent) { BasePiece basePiece = basePiecePlacedBuildEvent.BasePiece; GameObject buildPrefab = CraftData.GetBuildPrefab(basePiece.TechType); MultiplayerBuilder.overridePosition = basePiece.ItemPosition; MultiplayerBuilder.overrideQuaternion = basePiece.Rotation; MultiplayerBuilder.overrideTransform = new GameObject().transform; MultiplayerBuilder.overrideTransform.position = basePiece.CameraPosition; MultiplayerBuilder.overrideTransform.rotation = basePiece.CameraRotation; MultiplayerBuilder.placePosition = basePiece.ItemPosition; MultiplayerBuilder.placeRotation = basePiece.Rotation; MultiplayerBuilder.rotationMetadata = basePiece.RotationMetadata; MultiplayerBuilder.Begin(buildPrefab); GameObject parentBase = null; if (basePiece.ParentGuid.IsPresent()) { parentBase = GuidHelper.RequireObjectFrom(basePiece.ParentGuid.Get()); } Constructable constructable; GameObject gameObject; if (basePiece.IsFurniture) { SubRoot subRoot = (parentBase != null) ? parentBase.RequireComponent <SubRoot>() : null; gameObject = MultiplayerBuilder.TryPlaceFurniture(subRoot); constructable = gameObject.RequireComponentInParent <Constructable>(); } else { constructable = MultiplayerBuilder.TryPlaceBase(parentBase); gameObject = constructable.gameObject; } GuidHelper.SetNewGuid(gameObject, basePiece.Guid); /** * Manually call start to initialize the object as we may need to interact with it within the same frame. */ MethodInfo startCrafting = typeof(Constructable).GetMethod("Start", BindingFlags.NonPublic | BindingFlags.Instance); Validate.NotNull(startCrafting); startCrafting.Invoke(constructable, new object[] { }); }
public void ConstructItem(String guid, Vector3 position, Quaternion rotation, Transform cameraTransform, TechType techType, Optional <String> parentBaseGuid) { GameObject buildPrefab = CraftData.GetBuildPrefab(techType); MultiplayerBuilder.overridePosition = position; MultiplayerBuilder.overrideQuaternion = rotation; MultiplayerBuilder.overrideTransform = cameraTransform; MultiplayerBuilder.placePosition = position; MultiplayerBuilder.placeRotation = rotation; MultiplayerBuilder.Begin(buildPrefab); Optional <GameObject> parentBase = (parentBaseGuid.IsPresent()) ? GuidHelper.GetObjectFrom(parentBaseGuid.Get()) : Optional <GameObject> .Empty(); ConstructableBase constructableBase = MultiplayerBuilder.TryPlaceBase(parentBase); GuidHelper.SetNewGuid(constructableBase.gameObject, guid); }
public void ConstructItem(String guid, String subGuid, Vector3 position, Quaternion rotation, Transform cameraTransform, TechType techType) { GameObject buildPrefab = CraftData.GetBuildPrefab(techType); MultiplayerBuilder.overridePosition = position; MultiplayerBuilder.overrideQuaternion = rotation; MultiplayerBuilder.overrideTransform = cameraTransform; MultiplayerBuilder.placePosition = position; MultiplayerBuilder.placeRotation = rotation; MultiplayerBuilder.Begin(buildPrefab); Optional <GameObject> opSub = GuidHelper.GetObjectFrom(subGuid); if (opSub.IsEmpty()) { Console.WriteLine("Could not locate sub with guid" + subGuid); return; } SubRoot subRoot = opSub.Get().GetComponent <SubRoot>(); GameObject gameObject = MultiplayerBuilder.TryPlaceFurniture(subRoot); GuidHelper.SetNewGuid(gameObject, guid); Constructable constructable = gameObject.GetComponentInParent <Constructable>(); Validate.NotNull(constructable); /** * Manually call start to initialize the object as we may need to interact with it within the same frame. */ MethodInfo startCrafting = typeof(Constructable).GetMethod("Start", BindingFlags.NonPublic | BindingFlags.Instance); Validate.NotNull(startCrafting); startCrafting.Invoke(constructable, new object[] { }); }