private void handleCoordinatePacket(TODPacket packet) { TODCoordinatePacketData packetData = packet.Data as TODCoordinatePacketData; Transform objTransform = _objectTable[packet.ObjectID].transform; if (packetData.HasScale) { if (packetData.MatrixType == TODPacketData.PacketDataType.Absolute) { objTransform.localScale = new Vector3(packetData.ScaleX / 4096f, packetData.ScaleY / 4096f, packetData.ScaleZ / 4096f); } else { objTransform.localScale = Vector3.Scale(objTransform.localScale, new Vector3( packetData.ScaleX / 4096f, packetData.ScaleY / 4096f, packetData.ScaleZ / 4096f)); } } if (packetData.HasTranslation) { if (packetData.MatrixType == TODPacketData.PacketDataType.Absolute) { Vector3 pos = new Vector3(packetData.TransX, -packetData.TransY, packetData.TransZ) / 2048f; objTransform.localPosition = pos; } else { objTransform.localPosition = objTransform.localPosition + new Vector3(packetData.TransX, -packetData.TransY, packetData.TransZ) / 2048f; } } if (packetData.HasRotation) { float pitch = -packetData.RotX / 4096f; float yaw = packetData.RotY / 4096f; float roll = -packetData.RotZ / 4096f; if (packetData.MatrixType == TODPacketData.PacketDataType.Absolute) { var x = Quaternion.AngleAxis(pitch, Vector3.right); var y = Quaternion.AngleAxis(yaw, Vector3.up); var z = Quaternion.AngleAxis(roll, Vector3.forward); objTransform.localRotation = x * y * z; } else { objTransform.Rotate(Vector3.right, pitch); objTransform.Rotate(Vector3.up, yaw); objTransform.Rotate(Vector3.forward, roll); } } }
private void handleObjectControlPacket(TODPacket packet) { TODObjectControlPacketData packetData = packet.Data as TODObjectControlPacketData; if (packetData.ObjectControl == TODObjectControlPacketData.ObjectControlType.Create) { createObjectMapping(packet.ObjectID); } else if (packetData.ObjectControl == TODObjectControlPacketData.ObjectControlType.Kill) { Destroy(_objectTable[packet.ObjectID]); } }
private void handleObjectIDPacket(TODPacket packet) { TODObjectIDPacketData packetData = packet.Data as TODObjectIDPacketData; if (packet.PacketType == TODPacket.PacketTypes.TMDDataID) { // create mapping in object table var obj = _objectTable[packet.ObjectID]; obj.sharedMesh = _currentAnimation.ObjectTable[packetData.ObjectID - 1]; } else if (packet.PacketType == TODPacket.PacketTypes.ParentObjectID) { // set object parent Transform parentTransform = _objectTable[packetData.ObjectID].transform; _objectTable[packet.ObjectID].transform.SetParent(parentTransform, false); } }