public void GotoLocation(PositionRotation loc) { flyingTime = 0; BorisStart = new PositionRotation(this.gameObject); this.targetLocation = loc; moving = true; }
PositionRotation[] GetConstPRofTL() { PositionRotation[] posRotAnim = new PositionRotation[4]; posRotAnim[0] = new PositionRotation(new Vector3(-0.4f, 0.015f, -0.4f), new Vector3(0, 90, 0)); posRotAnim[1] = new PositionRotation(new Vector3(-0.4f, 0.015f, 0.4f), new Vector3(0, 0, 0)); posRotAnim[2] = new PositionRotation(new Vector3(0.4f, 0.015f, 0.4f), new Vector3(0, 90, 0)); posRotAnim[3] = new PositionRotation(new Vector3(0.4f, 0.015f, -0.4f), new Vector3(0, 0, 0)); return(posRotAnim); }
public void PutInTunnel(Transform transform, TunnelVector3 globalPosition) { float localDepth; TunnelDetail detail = _detailMap.GetDetail(globalPosition.Depth, out localDepth); globalPosition.Depth = localDepth; PositionRotation position = _positionRotationCalculator.GetPositionRotation(detail, globalPosition); position.SetPosition(transform); }
PositionRotation[] ConstSignTransform() { PositionRotation[] posRotAnim = new PositionRotation[4]; posRotAnim[0] = new PositionRotation(new Vector3(-0.5f, 0.1f, -0.4f), new Vector3(-90, 180, 0), Position.First); posRotAnim[1] = new PositionRotation(new Vector3(-0.5f, 0.1f, 0.4f), new Vector3(-90, -90, 0), Position.Second); posRotAnim[2] = new PositionRotation(new Vector3(0.5f, 0.1f, 0.4f), new Vector3(-90, 0, 0), Position.Third); posRotAnim[3] = new PositionRotation(new Vector3(0.5f, 0.1f, -0.4f), new Vector3(-90, -90, -180), Position.Fourth); return(posRotAnim); }
public PositionRotation GetCentralPoint(TunnelDetail detail, float depth) { Quaternion beginning = Quaternion.Euler(detail.RotationAtTheBeginning.Value, 0, 0); Quaternion beginningReversed = Quaternion.Euler(-detail.RotationAtTheBeginning.Value, 0, 0); PositionRotation local = beginning * detail.PositionCurve.GetPositionRotation(depth); local.Rotation *= beginningReversed; return(detail.GlobalStartPoint + local); }
public void Start() { points = 0; question = 1; selected = "None"; _selectedObject = null; _modelInfo = new Dictionary <string, PositionRotation>(); nameToMaterialLists = new Dictionary <string, Dictionary <string, Material> > { { "Brain", new Dictionary <string, Material> { { "TemporalLobe", Resources.Load("Blue") as Material }, { "ParietalLobe", Resources.Load("Green") as Material }, { "OccipitalLobe", Resources.Load("Red") as Material }, { "FrontalLobe", Resources.Load("Orange") as Material }, { "Cerebellum", Resources.Load("Purple") as Material } } }, { "LeftLung", new Dictionary <string, Material> { { "InferiorLobe", Resources.Load("Blue") as Material }, { "SuperiorLobe", Resources.Load("Green") as Material }, } }, { "RightLung", new Dictionary <string, Material> { { "SuperiorLobe", Resources.Load("Red") as Material }, { "MiddleLobe", Resources.Load("Orange") as Material }, { "InferiorLobe", Resources.Load("Purple") as Material } } }, }; foreach (string modelName in _modelNames) { Vector3 pos = new Vector3(); Quaternion rot = new Quaternion(); pos = GameObject.Find(modelName).transform.position; rot = GameObject.Find(modelName).transform.rotation; _modelInfo[modelName] = new PositionRotation(pos, rot); Debug.Log(modelName); } score.text = "Score: 0"; if (mode == "easy") { EasyQuestion(); } if (mode == "medium") { MediumQuestion(); } if (mode == "hard") { HardQuestion(); } }
public static PositionRotation Interpolate(PositionRotation start, PositionRotation end, float progress) { if (progress <= 0) return start; if (progress >= 1) return end; var res = new PositionRotation(); res.Position = start.Position + ((end.Position - start.Position) * progress); res.Rotation = Quaternion.RotateTowards(start.Rotation, end.Rotation, Quaternion.Angle(start.Rotation, end.Rotation) * progress); return res; }
public TunnelDetail(ITunnelDetailCut tunnelDetailCut, IPositionCurve positionCurve, PositionRotation startPoint, float length, Angle rotationAtTheBeginning) { TunnelDetailCut = tunnelDetailCut; PositionCurve = positionCurve; GlobalStartPoint = startPoint; Length = length; RotationAtTheBeginning = rotationAtTheBeginning; }
public static PositionRotation Interpolate(PositionRotation start, PositionRotation end, float progress, AnimationCurve curve) { var diff = (end.Position - start.Position); var curveProgress = curve.Evaluate(progress); var pos = new Vector3( start.Position.x + diff.x * curveProgress, start.Position.y + diff.y * curveProgress, start.Position.z + diff.z * curveProgress ); var rot = Quaternion.RotateTowards(start.Rotation, end.Rotation, Quaternion.Angle(start.Rotation, end.Rotation) * curveProgress); return new PositionRotation(pos, rot); }
// public bool isFrozen = false; // Use this for initialization void Start() { PositionRotation = new List <PositionRotation>(); if (GetComponent <Rigidbody>()) { rb = GetComponent <Rigidbody>(); } temp = new PositionRotation(transform.position, transform.rotation); if (SinglePlayer) { PlayerObject = GameObject.FindGameObjectWithTag("Player"); } }
void SendPacket(PositionRotation pr) { if (!serverside) { if (!isServer || editorServer) { client.SendPacketToServer(pr); } } else { server.SendPacketToAll(pr); } }
public void Rewind() { if (PositionRotation.Count > 0) { PositionRotation pointInTime = PositionRotation[0]; transform.position = pointInTime.position; transform.rotation = pointInTime.rotation; PositionRotation.RemoveAt(0); } else { StopRewind(); } }
public void Start() { selected = "None"; _selectedObject = null; _modelInfo = new Dictionary <string, PositionRotation>(); nameToMaterialLists = new Dictionary <string, Dictionary <string, Material> > { { "Brain", new Dictionary <string, Material> { { "TemporalLobe", Resources.Load("Blue") as Material }, { "ParietalLobe", Resources.Load("Green") as Material }, { "OccipitalLobe", Resources.Load("Red") as Material }, { "FrontalLobe", Resources.Load("Orange") as Material }, { "Cerebellum", Resources.Load("Purple") as Material } } }, { "LeftLung", new Dictionary <string, Material> { { "InferiorLobe", Resources.Load("Blue") as Material }, { "SuperiorLobe", Resources.Load("Green") as Material }, } }, { "RightLung", new Dictionary <string, Material> { { "SuperiorLobe", Resources.Load("Red") as Material }, { "MiddleLobe", Resources.Load("Orange") as Material }, { "InferiorLobe", Resources.Load("Purple") as Material } } }, }; defaultMaterials = new Dictionary <string, Material> { { "Brain", Resources.Load("Brain") as Material }, { "LeftLung", Resources.Load("Lungs") as Material }, { "RightLung", Resources.Load("Lungs") as Material } }; foreach (string modelName in _modelNames) { Vector3 pos = new Vector3(); Quaternion rot = new Quaternion(); GameObject b = GameObject.FindWithTag(modelName); pos = GameObject.Find(modelName).transform.position; rot = GameObject.Find(modelName).transform.rotation; _modelInfo[modelName] = new PositionRotation(pos, rot); Debug.Log(modelName); } //SetSelected(GameObject.Find("Brain")); AudioClip clip = Resources.Load <AudioClip>("audio/Learn"); playingAudio.PlayOneShot(clip); }
public void GotoLastCheckpoint(object sender, string conversation = null) { TimerManager.RegisterEvent("Dieded"); var player = Characters.instance.Beorn; start = new PositionRotation(player.transform.position, Characters.GetPlayerController().camerasContainer.localRotation); target = new PositionRotation(lastCheckpoint.gameObject); player.GetComponent<Rigidbody>().useGravity = false; teleporting = true; SetMovementRelatedComponentsEnabled(false); time = 0; OnStartLastCheckpointTeleport(sender, conversation); if (conversation != null) { PlayConversation(conversation); } }
void Record() { /*if(temp.position != transform.position) * { * return; * }*/ if (PositionRotation.Count > Mathf.Round(RewindSecs * 1f / Time.fixedDeltaTime)) { PositionRotation.RemoveAt(PositionRotation.Count - 1); } if (!Pause) { PositionRotation.Insert(0, new PositionRotation(transform.position, transform.rotation)); } temp = new PositionRotation(transform.position, transform.rotation); }
void SyncObjectsRotation() { Vector3 rotationToSend = transform.rotation.eulerAngles; PositionRotation pr = new PositionRotation("D_PositionRotation"); pr.item_net_id = GetComponent <ScapeNet_Network_ID>().object_id; pr.isRotation = true; pr.x = rotationToSend.x; pr.y = rotationToSend.y; pr.z = rotationToSend.z; SendPacket(pr); previous_rotation = rotationToSend; }
PositionRotation[] ShaffleOdd(PositionRotation[] PRTS) { float rnd = Random.Range(0, 2); if (rnd == 0) { for (int i = 0; i < PRTS.Length; i++) { if (i % 2 != 0) { PositionRotation temp = PRTS[i].Copy(); PRTS[i] = PRTS[i - 1].Copy(); PRTS[i - 1] = temp.Copy(); } } } return(PRTS); }
void CmdRecord() { int i = 0; foreach (GameObject item in RewindObjects) { if (PositionRotationsList[i].Count > Mathf.Round(RewindSecs * 1f / Time.fixedDeltaTime))// 2000 { PositionRotationsList[i].RemoveAt(PositionRotations.Count - 1); } if (!Pause && PositionRotation.position != item.transform.position) { PositionRotationsList[i].Insert(0, new PositionRotation(item.transform.position, item.transform.rotation)); } PositionRotation = new PositionRotation(item.transform.position, item.transform.rotation); i++; } }
private void FillDetails() { _details = new TunnelDetail[_count]; IPositionRotationCalculator calculator = new SimplePositionRotationCalculator(); PositionRotation start = PositionRotation.Identity; ITunnelDetailCut cut = new SimpleCut(_radius); IPositionCurve[] curves = new IPositionCurve[3]; curves[0] = new SimpleCurvedCurve(10); curves[1] = new SimpleCurvedCurve(30); curves[2] = new SimpleCurve(); for (int i = 0; i < _count; i++) { _details[i] = new TunnelDetail(cut, curves[i % curves.Length], start, _length, new Angle(Random.Range(0, 360f))); start = calculator.GetCentralPoint(_details[i], _details[i].Length); } }
protected override float ErrorFunction(Vector3 target, float[] angles) { PositionRotation result = ForwardKinematics(angles); // Minimise torsion (rotation on x axis) float torsion = 0; for (int i = 0; i < angles.Length; i++) { torsion += Mathf.Abs(angles[i]) * TorsionPenality.x; torsion += Mathf.Abs(angles[i]) * TorsionPenality.y; torsion += Mathf.Abs(angles[i]) * TorsionPenality.z; } float distance = Vector3.Distance(target, result); float effectorOrientation = Mathf.Abs(Quaternion.Angle(result, Target.rotation) / 180f) * OrientationWeight; torsion = (torsion / angles.Length) * TorsionWeight; return(distance + effectorOrientation + torsion); }
public void CmdRewind() { int i = 0; foreach (GameObject item in RewindObjects) { if (PositionRotationsList[i].Count > 0) { PositionRotation pointInTime = PositionRotationsList[i][0]; item.transform.position = pointInTime.position; item.transform.rotation = pointInTime.rotation; RpcRewind(item, item.transform.position, item.transform.rotation); PositionRotationsList[i].RemoveAt(0); } else { CmdStopRewind(); } i++; } }
private void SpawnGameObject(Spawnable spawnable, GameObject gameObjectInstance, PositionRotation spawnLocRot, Vector3 color) { if (spawnLocRot != null) { gameObjectInstance.transform.localPosition = spawnLocRot.Position; gameObjectInstance.transform.Rotate(spawnLocRot.Rotation); gameObjectInstance.SetLayer(0); gameObjectInstance.GetComponent <IPrefab>().SetColor(color); if (gameObjectInstance.CompareTag("goodGoal")) { _goodGoalsMultiSpawned.Add(gameObjectInstance.GetComponent <Goal>()); } } else { GameObject.DestroyImmediate(gameObjectInstance); } }
private void InstantiateSpawnable(Spawnable spawnable, GameObject spawnedObjectsHolder) { List <Vector3> positions = spawnable.positions; List <float> rotations = spawnable.rotations; List <Vector3> sizes = spawnable.sizes; List <Vector3> colors = spawnable.colors; int numberOfPositions = positions.Count; int numberOfRotations = rotations.Count; int numberOfSizes = sizes.Count; int numberOfColors = colors.Count; int n = Math.Max(numberOfColors, Math.Max(numberOfPositions, Math.Max(numberOfRotations, numberOfSizes))); int k = 0; do { GameObject gameObjectInstance = GameObject.Instantiate(spawnable.gameObject, spawnedObjectsHolder.transform, false); gameObjectInstance.SetLayer(1); Vector3 position = k < numberOfPositions ? positions[k] : -Vector3.one; float rotation = k < numberOfRotations ? rotations[k] : -1; Vector3 size = k < numberOfSizes ? sizes[k] : -Vector3.one; Vector3 color = k < numberOfColors ? colors[k] : -Vector3.one; PositionRotation spawnPosRot = SamplePositionRotation(gameObjectInstance, _maxSpawnAttemptsForPrefabs, position, rotation, size); SpawnGameObject(spawnable, gameObjectInstance, spawnPosRot, color); k++; } while (k < n); }
void SyncObjectsPosition() { Vector3 positionToSend; //If object has a parent, then convert position before sending. if (transform.parent != null) { positionToSend = transform.TransformVector(transform.localPosition); } else { positionToSend = transform.position; } if (previous_position == positionToSend) { return; } if (positionToSend.x >= float.MaxValue || positionToSend.y >= float.MaxValue || positionToSend.z >= float.MaxValue) { return; } PositionRotation pr = new PositionRotation("D_PositionRotation"); pr.item_net_id = GetComponent <ScapeNet_Network_ID>().object_id; pr.isRotation = false; pr.x = positionToSend.x; pr.y = positionToSend.y; pr.z = positionToSend.z; SendPacket(pr); previous_position = positionToSend; }
private void AddDefaultPacketReceives() { Packet_Register.Instance.serverPacketReceivedRegister.Add("D_Connection", packetObj => { ConnectionPacket connectionPacket = (ConnectionPacket)packetObj[0]; NetConnection senderConnection = (NetConnection)packetObj[2]; //Register Player int newID = GetNextPlayerID(); playersConnection.Add(senderConnection, newID); players.Add(newID, senderConnection); connectionPacket.player_id = newID; SendPacketToExistingConnection(connectionPacket, senderConnection, -1); return(false); }); Packet_Register.Instance.serverPacketReceivedRegister.Add("D_OnConnect", packetObj => { OnConnectPacket instantiate = (OnConnectPacket)packetObj[0]; int playerId = (int)packetObj[1]; NetConnection conn = (NetConnection)packetObj[2]; foreach (PacketWithId <InstantiationPacket> ip in registers) { SendPacketToExistingConnection(ip.packet, conn, ip.playerId); } if (funcOnNewConnection != null) { funcOnNewConnection.Invoke(packetObj); } return(false); }); Packet_Register.Instance.serverPacketReceivedRegister.Add("D_Instantiate", packetObj => { InstantiationPacket instantiate = (InstantiationPacket)packetObj[0]; int playerId = (int)packetObj[1]; instantiate.item_net_id = GetNextItemID(); registers.Add(new PacketWithId <InstantiationPacket>(instantiate, playerId)); SendPacketToAll(instantiate, playerId); return(false); }); Packet_Register.Instance.serverPacketReceivedRegister.Add("D_Delete", packetObj => { DeletePacket instantiate = (DeletePacket)packetObj[0]; int playerId = (int)packetObj[1]; NetConnection conn = (NetConnection)packetObj[2]; int idToRemove = -1; for (int i = 0; i < registers.Count; i++) { //Found packet we need to delete if (registers[i].packet.item_net_id == instantiate.item_net_id) { idToRemove = i; break; } } registers.RemoveAt(idToRemove); SendPacketToAll(instantiate, playerId); return(false); }); Packet_Register.Instance.serverPacketReceivedRegister.Add("D_PositionRotation", packetObj => { PositionRotation packet = (PositionRotation)packetObj[0]; int playerId = (int)packetObj[1]; NetConnection conn = (NetConnection)packetObj[2]; SendPacketToAll(packet, playerId); return(false); }); }
// Use this for initialization void Start() { InitBell(); var conversationManager = ConversationManager.instance; if (conversationManager != null) { conversationManager.OnConversationStart += conversationManager_OnConversationStart; conversationManager.OnConversationEnd += conversationManager_OnConversationEnd; } targetLocation = new PositionRotation(gameObject); }
public PlacedCreature(SimpleSubrecord <String> EditorID, RecordReference Base, RecordReference EncounterZone, SimpleSubrecord <Byte[]> RagdollData, SimpleSubrecord <Byte[]> RagdollBipedData, ReferencePatrolData Patrol, SimpleSubrecord <Int32> LevelModifier, RecordReference Owner, SimpleSubrecord <Int32> FactionRank, RecordReference MerchantContainer, SimpleSubrecord <Int32> Count, SimpleSubrecord <Single> Radius, SimpleSubrecord <Single> Health, List <SimpleSubrecord <Byte[]> > Decals, RecordReference LinkedReference, LinkedReferenceColor LinkedReferenceColor, SimpleSubrecord <NoYesByte> ParentActivateOnly, List <ActivateParent> ActivateParents, SimpleSubrecord <String> ActivationPrompt, EnableParent EnableParent, RecordReference Emittance, RecordReference MultiBound, SubMarker IgnoredBySandbox, SimpleSubrecord <Single> Scale, PositionRotation PositionRotation) { }
public override void ReadDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (ele.TryPathTo("EditorID", false, out subEle)) { if (EditorID == null) { EditorID = new SimpleSubrecord <String>(); } EditorID.ReadXML(subEle, master); } if (ele.TryPathTo("Base", false, out subEle)) { if (Base == null) { Base = new RecordReference(); } Base.ReadXML(subEle, master); } if (ele.TryPathTo("EncounterZone", false, out subEle)) { if (EncounterZone == null) { EncounterZone = new RecordReference(); } EncounterZone.ReadXML(subEle, master); } if (ele.TryPathTo("RagdollData", false, out subEle)) { if (RagdollData == null) { RagdollData = new SimpleSubrecord <Byte[]>(); } RagdollData.ReadXML(subEle, master); } if (ele.TryPathTo("RagdollBipedData", false, out subEle)) { if (RagdollBipedData == null) { RagdollBipedData = new SimpleSubrecord <Byte[]>(); } RagdollBipedData.ReadXML(subEle, master); } if (ele.TryPathTo("Patrol", false, out subEle)) { if (Patrol == null) { Patrol = new ReferencePatrolData(); } Patrol.ReadXML(subEle, master); } if (ele.TryPathTo("LevelModifier", false, out subEle)) { if (LevelModifier == null) { LevelModifier = new SimpleSubrecord <Int32>(); } LevelModifier.ReadXML(subEle, master); } if (ele.TryPathTo("Owner", false, out subEle)) { if (Owner == null) { Owner = new RecordReference(); } Owner.ReadXML(subEle, master); } if (ele.TryPathTo("FactionRank", false, out subEle)) { if (FactionRank == null) { FactionRank = new SimpleSubrecord <Int32>(); } FactionRank.ReadXML(subEle, master); } if (ele.TryPathTo("MerchantContainer", false, out subEle)) { if (MerchantContainer == null) { MerchantContainer = new RecordReference(); } MerchantContainer.ReadXML(subEle, master); } if (ele.TryPathTo("Count", false, out subEle)) { if (Count == null) { Count = new SimpleSubrecord <Int32>(); } Count.ReadXML(subEle, master); } if (ele.TryPathTo("Radius", false, out subEle)) { if (Radius == null) { Radius = new SimpleSubrecord <Single>(); } Radius.ReadXML(subEle, master); } if (ele.TryPathTo("Health", false, out subEle)) { if (Health == null) { Health = new SimpleSubrecord <Single>(); } Health.ReadXML(subEle, master); } if (ele.TryPathTo("Decals", false, out subEle)) { if (Decals == null) { Decals = new List <SimpleSubrecord <Byte[]> >(); } foreach (XElement e in subEle.Elements()) { SimpleSubrecord <Byte[]> tempXDCR = new SimpleSubrecord <Byte[]>(); tempXDCR.ReadXML(e, master); Decals.Add(tempXDCR); } } if (ele.TryPathTo("LinkedReference", false, out subEle)) { if (LinkedReference == null) { LinkedReference = new RecordReference(); } LinkedReference.ReadXML(subEle, master); } if (ele.TryPathTo("LinkedReferenceColor", false, out subEle)) { if (LinkedReferenceColor == null) { LinkedReferenceColor = new LinkedReferenceColor(); } LinkedReferenceColor.ReadXML(subEle, master); } if (ele.TryPathTo("ParentActivateOnly", false, out subEle)) { if (ParentActivateOnly == null) { ParentActivateOnly = new SimpleSubrecord <NoYesByte>(); } ParentActivateOnly.ReadXML(subEle, master); } if (ele.TryPathTo("ActivateParents", false, out subEle)) { if (ActivateParents == null) { ActivateParents = new List <ActivateParent>(); } foreach (XElement e in subEle.Elements()) { ActivateParent tempXAPR = new ActivateParent(); tempXAPR.ReadXML(e, master); ActivateParents.Add(tempXAPR); } } if (ele.TryPathTo("ActivationPrompt", false, out subEle)) { if (ActivationPrompt == null) { ActivationPrompt = new SimpleSubrecord <String>(); } ActivationPrompt.ReadXML(subEle, master); } if (ele.TryPathTo("EnableParent", false, out subEle)) { if (EnableParent == null) { EnableParent = new EnableParent(); } EnableParent.ReadXML(subEle, master); } if (ele.TryPathTo("Emittance", false, out subEle)) { if (Emittance == null) { Emittance = new RecordReference(); } Emittance.ReadXML(subEle, master); } if (ele.TryPathTo("MultiBound", false, out subEle)) { if (MultiBound == null) { MultiBound = new RecordReference(); } MultiBound.ReadXML(subEle, master); } if (ele.TryPathTo("IgnoredBySandbox", false, out subEle)) { if (IgnoredBySandbox == null) { IgnoredBySandbox = new SubMarker(); } IgnoredBySandbox.ReadXML(subEle, master); } if (ele.TryPathTo("Scale", false, out subEle)) { if (Scale == null) { Scale = new SimpleSubrecord <Single>(); } Scale.ReadXML(subEle, master); } if (ele.TryPathTo("PositionRotation", false, out subEle)) { if (PositionRotation == null) { PositionRotation = new PositionRotation(); } PositionRotation.ReadXML(subEle, master); } }
public override void ReadData(ESPReader reader, long dataEnd) { while (reader.BaseStream.Position < dataEnd) { string subTag = reader.PeekTag(); switch (subTag) { case "EDID": if (EditorID == null) { EditorID = new SimpleSubrecord <String>(); } EditorID.ReadBinary(reader); break; case "NAME": if (Base == null) { Base = new RecordReference(); } Base.ReadBinary(reader); break; case "XEZN": if (EncounterZone == null) { EncounterZone = new RecordReference(); } EncounterZone.ReadBinary(reader); break; case "XRGD": if (RagdollData == null) { RagdollData = new SimpleSubrecord <Byte[]>(); } RagdollData.ReadBinary(reader); break; case "XRGB": if (RagdollBipedData == null) { RagdollBipedData = new SimpleSubrecord <Byte[]>(); } RagdollBipedData.ReadBinary(reader); break; case "XPRD": if (Patrol == null) { Patrol = new ReferencePatrolData(); } Patrol.ReadBinary(reader); break; case "XLCM": if (LevelModifier == null) { LevelModifier = new SimpleSubrecord <Int32>(); } LevelModifier.ReadBinary(reader); break; case "XOWN": if (Owner == null) { Owner = new RecordReference(); } Owner.ReadBinary(reader); break; case "XRNK": if (FactionRank == null) { FactionRank = new SimpleSubrecord <Int32>(); } FactionRank.ReadBinary(reader); break; case "XMRC": if (MerchantContainer == null) { MerchantContainer = new RecordReference(); } MerchantContainer.ReadBinary(reader); break; case "XCNT": if (Count == null) { Count = new SimpleSubrecord <Int32>(); } Count.ReadBinary(reader); break; case "XRDS": if (Radius == null) { Radius = new SimpleSubrecord <Single>(); } Radius.ReadBinary(reader); break; case "XHLP": if (Health == null) { Health = new SimpleSubrecord <Single>(); } Health.ReadBinary(reader); break; case "XDCR": if (Decals == null) { Decals = new List <SimpleSubrecord <Byte[]> >(); } SimpleSubrecord <Byte[]> tempXDCR = new SimpleSubrecord <Byte[]>(); tempXDCR.ReadBinary(reader); Decals.Add(tempXDCR); break; case "XLKR": if (LinkedReference == null) { LinkedReference = new RecordReference(); } LinkedReference.ReadBinary(reader); break; case "XCLP": if (LinkedReferenceColor == null) { LinkedReferenceColor = new LinkedReferenceColor(); } LinkedReferenceColor.ReadBinary(reader); break; case "XAPD": if (ParentActivateOnly == null) { ParentActivateOnly = new SimpleSubrecord <NoYesByte>(); } ParentActivateOnly.ReadBinary(reader); break; case "XAPR": if (ActivateParents == null) { ActivateParents = new List <ActivateParent>(); } ActivateParent tempXAPR = new ActivateParent(); tempXAPR.ReadBinary(reader); ActivateParents.Add(tempXAPR); break; case "XATO": if (ActivationPrompt == null) { ActivationPrompt = new SimpleSubrecord <String>(); } ActivationPrompt.ReadBinary(reader); break; case "XESP": if (EnableParent == null) { EnableParent = new EnableParent(); } EnableParent.ReadBinary(reader); break; case "XEMI": if (Emittance == null) { Emittance = new RecordReference(); } Emittance.ReadBinary(reader); break; case "XMBR": if (MultiBound == null) { MultiBound = new RecordReference(); } MultiBound.ReadBinary(reader); break; case "XIBS": if (IgnoredBySandbox == null) { IgnoredBySandbox = new SubMarker(); } IgnoredBySandbox.ReadBinary(reader); break; case "XSCL": if (Scale == null) { Scale = new SimpleSubrecord <Single>(); } Scale.ReadBinary(reader); break; case "DATA": if (PositionRotation == null) { PositionRotation = new PositionRotation(); } PositionRotation.ReadBinary(reader); break; default: throw new Exception(); } } }
public override void Stop() { base.Stop(); foreach (Rigidbody2D body in cachedBodies) { if (!body) { continue; } body.velocity = Vector3.zero; body.angularVelocity = 0; body.Sleep(); } foreach (var body in excludedBodies) { if (!body) { continue; } body.velocity = Vector3.zero; body.angularVelocity = 0; body.Sleep(); } foreach (var body in objectsWithAddedBody) { if (!body) { continue; } Object.DestroyImmediate(body.GetComponent <Rigidbody2D>()); } int i = 0; foreach (var body in cachedBodies) { if (!body) { i++; continue; } PositionRotation newPr = new PositionRotation(body.position, body.rotation); body.gameObject.transform.position = previousPositionRotations[i].Position; body.rotation = previousPositionRotations[i].Rotation; previousPositionRotations[i] = newPr; i++; } int id = MonkeyEditorUtils.CreateUndoGroup("Physics Simulation"); i = 0; foreach (var body in cachedBodies) { if (!body) { i++; continue; } Undo.RecordObject(body.transform, "position rotation"); body.gameObject.transform.position = previousPositionRotations[i].Position; body.rotation = previousPositionRotations[i].Rotation; } Undo.CollapseUndoOperations(id); Physics2D.simulationMode = SimulationMode2D.FixedUpdate; currentEditorPhysics2D = null; }