public override void CustomStart(string servoName, MemoryBridge memoryBridge, LimbController limbController, int parentID) { base.CustomStart(servoName, memoryBridge, limbController, parentID); // speedPID = new PidController.PidController(mech.hipRotPIDP, mech.hipRotPIDI, mech.hipRotPIDD, mech.hipRotPIDMax, 0); Debug.Log("Create pid"); }
public override void CustomStart(string servoName, MemoryBridge memoryBridge, LimbController limbController, int parentID) { base.CustomStart(servoName, memoryBridge, limbController, parentID); currentServoPos = memoryBridge.GetFloat(servoName + "servoPos"); kspStartAngle = currentServoPos; }
// Use this for initialization void Awake() { System.Console.WriteLine("yo"); memoryBridge = new MemoryBridge(); //memoryBridge.CreateFile("Test"); // MemoryBridge. }
public void CustomAwake(MemoryBridge memoryBridge) { this.memoryBridge = memoryBridge; IRmanager = gameObject.GetComponent <IR_Manager>(); IRmanager.CustomAwake(memoryBridge, memoryBridge.vesselControl, ref limbs); Debug.Log("IR Manager Enabled, Limb Count : " + limbs.Count); if (limbs.Count == 6) { Debug.Log("robot is a hexapod"); groupLeft = new HexapodLimbGroup(); groupLeft.limbs = new List <LimbController>(); groupRight = new HexapodLimbGroup(); groupRight.limbs = new List <LimbController>(); } foreach (var limb in limbs) { limb.roboticController = this; var offset = memoryBridge.vesselControl.vessel.transform.InverseTransformPoint(limb.transform.position); Debug.Log(limb.name); var group = groupRight; if (offset.x > 0) { Debug.Log("left leg found"); group = groupLeft; } group.limbs.Add(limb); if (limb.name.Contains("1")) { Debug.Log("limb one found"); group.limb0 = limb; } if (limb.name.Contains("2")) { Debug.Log("limb two found"); group.limb1 = limb; } if (limb.name.Contains("3")) { Debug.Log("limb three found"); group.limb2 = limb; } if (offset.x > 0) { groupLeft = group; } else { groupRight = group; } } }
public void StartFeed(MemoryBridge memoryBridge, string fileName) { meshRenderer = GetComponent <MeshRenderer>(); this.memoryBridge = memoryBridge; this.fileName = fileName; memoryBridge.SetVector3("CamLocalPos" + fileName + memoryBridge.cameraFeeds.Count, Vector3.zero); memoryBridge.SetVector3("CamLocalEuler" + fileName + memoryBridge.cameraFeeds.Count, Vector3.zero); //meshRenderer.material.SetTexture("_MainTex", readTex); }
public VesselControl.Vessel DrawVessel(MemoryBridge memoryBridge, Material drawMat, string vesselName) { VesselControl.Vessel newVessel; this.memoryBridge = memoryBridge; this.vesselName = vesselName; var binFormatter = new BinaryFormatter(); var mStream = new MemoryStream(); meshList = new List <Mesh>(); parts = new List <Part>(); // partList = new List<VesselPart>(); var vesselObject = new GameObject(); vesselObject.name = vesselName; vessel = vesselObject.transform; vessel.SetParent(transform); vessel.position = Vector3.zero; vessel.localEulerAngles = Vector3.zero; //DebugVector.DrawVector(vessel); var modelObject = new GameObject(); modelObject.name = "Vessel Offset"; vesselOffset = modelObject.transform; vesselOffset.SetParent(vessel); vesselOffset.position = Vector3.zero; vesselOffset.localEulerAngles = Vector3.zero; if (vesselFile == null) { vesselFile = MemoryMappedFile.Open(MapAccess.FileMapAllAccess, "VesselFile" + memoryBridge.fileName); } if (vesselFile == null) { Debug.Log("file is null"); #if UNITY_EDITOR UnityEditor.EditorApplication.isPlaying = false; #endif } int byteCount = 0; int partCount = 0; using (Stream mapStream = vesselFile.MapView(MapAccess.FileMapAllAccess, 0, 8)) { var totalByteBuffer = new byte[4]; var partCountBuffer = new byte[4]; mapStream.Read(totalByteBuffer, 0, 4); mapStream.Read(partCountBuffer, 0, 4); byteCount = BitConverter.ToInt32(totalByteBuffer, 0); partCount = BitConverter.ToInt32(partCountBuffer, 0); } using (Stream mapStream = vesselFile.MapView(MapAccess.FileMapAllAccess, 0, byteCount)) { mapStream.Position = 8; for (int i = 0; i < partCount; i++) { List <MeshRenderer> meshRenderers = new List <MeshRenderer>(); //part unique id var totalpartBuffer = new byte[4]; mapStream.Read(totalpartBuffer, 0, 4); var uniqueID = BitConverter.ToSingle(totalpartBuffer, 0); //parent unique id totalpartBuffer = new byte[4]; mapStream.Read(totalpartBuffer, 0, 4); var parentUniqueID = BitConverter.ToSingle(totalpartBuffer, 0); //filter count totalpartBuffer = new byte[4]; mapStream.Read(totalpartBuffer, 0, 4); var filterCount = BitConverter.ToSingle(totalpartBuffer, 0); GameObject newPart = new GameObject(); var newPartObject = newPart.AddComponent(typeof(Part)) as Part; Vector3 vesselPartOffset = Vector3.zero; var tempBuffer = new Byte[4]; mapStream.Read(tempBuffer, 0, 4); vesselPartOffset.x = BitConverter.ToSingle(tempBuffer, 0); mapStream.Read(tempBuffer, 0, 4); vesselPartOffset.y = BitConverter.ToSingle(tempBuffer, 0); mapStream.Read(tempBuffer, 0, 4); vesselPartOffset.z = BitConverter.ToSingle(tempBuffer, 0); newPart.transform.localPosition = vesselPartOffset; //rot offset Vector3 vesselPartRotOffset = Vector3.zero; tempBuffer = new Byte[4]; mapStream.Read(tempBuffer, 0, 4); vesselPartRotOffset.x = BitConverter.ToSingle(tempBuffer, 0); mapStream.Read(tempBuffer, 0, 4); vesselPartRotOffset.y = BitConverter.ToSingle(tempBuffer, 0); mapStream.Read(tempBuffer, 0, 4); vesselPartRotOffset.z = BitConverter.ToSingle(tempBuffer, 0); newPart.transform.localEulerAngles = vesselPartRotOffset; //part name mapStream.Read(tempBuffer, 0, 4); var stringByteLength = BitConverter.ToSingle(tempBuffer, 0); var stringBuffer = new byte[(int)stringByteLength]; mapStream.Read(stringBuffer, 0, stringBuffer.Length); newPartObject.kspPartName = ASCIIEncoding.ASCII.GetString(stringBuffer); GameObject meshObjects = new GameObject(); meshObjects.name = "Mesh Objects"; newPartObject.partMeshes = meshObjects; meshObjects.transform.SetParent(newPart.transform); meshObjects.transform.localEulerAngles = Vector3.zero; for (int k = 0; k < filterCount; k++) { //Debug.Log("start writing filter at " + mapStream.Position); var newMesh = Instantiate(Resources.Load("BlankPart", typeof(GameObject))) as GameObject; newMesh.transform.SetParent(newPart.transform); meshRenderers.Add(newMesh.GetComponent <MeshRenderer>()); newMesh.GetComponent <MeshRenderer>().material = drawMat; Vector3 posVector = Vector3.zero; tempBuffer = new Byte[4]; mapStream.Read(tempBuffer, 0, 4); posVector.x = BitConverter.ToSingle(tempBuffer, 0); mapStream.Read(tempBuffer, 0, 4); posVector.y = BitConverter.ToSingle(tempBuffer, 0); mapStream.Read(tempBuffer, 0, 4); posVector.z = BitConverter.ToSingle(tempBuffer, 0); newMesh.transform.localPosition = posVector; var localEuler = Vector3.zero; // tempBuffer = new Byte[4]; mapStream.Read(tempBuffer, 0, 4); localEuler.x = BitConverter.ToSingle(tempBuffer, 0); mapStream.Read(tempBuffer, 0, 4); localEuler.y = BitConverter.ToSingle(tempBuffer, 0); mapStream.Read(tempBuffer, 0, 4); localEuler.z = BitConverter.ToSingle(tempBuffer, 0); newMesh.transform.localEulerAngles = localEuler; Vector3 scaleVector = Vector3.zero; // tempBuffer = new Byte[4]; mapStream.Read(tempBuffer, 0, 4); scaleVector.x = BitConverter.ToSingle(tempBuffer, 0); mapStream.Read(tempBuffer, 0, 4); scaleVector.y = BitConverter.ToSingle(tempBuffer, 0); mapStream.Read(tempBuffer, 0, 4); scaleVector.z = BitConverter.ToSingle(tempBuffer, 0); newMesh.transform.localScale = scaleVector; var lengthBuffer = new Byte[4]; mapStream.Read(lengthBuffer, 0, 4); var byteMeshLength = BitConverter.ToSingle(lengthBuffer, 0); var meshBuffer = new Byte[(int)byteMeshLength]; mapStream.Read(meshBuffer, 0, (int)byteMeshLength); newMesh.GetComponent <MeshFilter>().mesh = MeshSerializer.ReadMesh(meshBuffer); //not sure why this doesnt work up top, but too lazy to figure it out newMesh.transform.SetParent(meshObjects.transform); } newPartObject.CustomAwake((int)uniqueID, (int)parentUniqueID, vesselName, meshRenderers); parts.Add(newPartObject); } } newVessel.transform = vessel; newVessel.parts = parts; newVessel.meshOffset = vesselOffset; foreach (var part in newVessel.parts) { part.vessel = newVessel; part.FindParent(); } return(newVessel); }
// Use this for initialization public void ConnectToServer(MemoryBridge memoryBridge) { this.memoryBridge = memoryBridge; StartCoroutine("TryConnectToServer"); //TryConnectToServer(); }