ESP32 ant following trails
This commit is contained in:
		
							parent
							
								
									0d115ee65a
								
							
						
					
					
						commit
						78d0e179df
					
				| @ -15,7 +15,8 @@ namespace Passer.LinearAlgebra { | |||||||
|         public float16() { _value = 0; } |         public float16() { _value = 0; } | ||||||
| 
 | 
 | ||||||
|         public float16(float f) { |         public float16(float f) { | ||||||
|             _value = f32tof16(f); |             //_value = f32tof16(f); | ||||||
|  |             _value = F32ToF16__(f); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         public float toFloat() { |         public float toFloat() { | ||||||
| @ -206,6 +207,59 @@ namespace Passer.LinearAlgebra { | |||||||
|             return BitConverter.ToUInt32(bytes, 0); |             return BitConverter.ToUInt32(bytes, 0); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         public ushort F32ToF16__(float f) { | ||||||
|  |             uint t = BitConverter.ToUInt32(BitConverter.GetBytes(f), 0); | ||||||
|  |             ushort man = (ushort)((t & 0x007FFFFF) >> 12); | ||||||
|  |             int exp = (int)((t & 0x7F800000) >> 23); | ||||||
|  |             bool sgn = (t & 0x80000000) != 0; | ||||||
|  | 
 | ||||||
|  |             // handle 0 | ||||||
|  |             if ((t & 0x7FFFFFFF) == 0) { | ||||||
|  |                 return sgn ? (ushort)0x8000 : (ushort)0x0000; | ||||||
|  |             } | ||||||
|  |             // denormalized float32 does not fit in float16 | ||||||
|  |             if (exp == 0x00) { | ||||||
|  |                 return sgn ? (ushort)0x8000 : (ushort)0x0000; | ||||||
|  |             } | ||||||
|  |             // handle infinity & NAN | ||||||
|  |             if (exp == 0x00FF) { | ||||||
|  |                 if (man != 0) | ||||||
|  |                     return 0xFE00;              // NAN | ||||||
|  |                 return sgn ? (ushort)0xFC00 : (ushort)0x7C00; // -INF : INF | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             // normal numbers | ||||||
|  |             exp = exp - 127 + 15; | ||||||
|  |             // overflow does not fit => INF | ||||||
|  |             if (exp > 30) { | ||||||
|  |                 return sgn ? (ushort)0xFC00 : (ushort)0x7C00; // -INF : INF | ||||||
|  |             } | ||||||
|  |             // subnormal numbers | ||||||
|  |             if (exp < -38) { | ||||||
|  |                 return sgn ? (ushort)0x8000 : (ushort)0x0000; // -0 or 0 ? just 0 ? | ||||||
|  |             } | ||||||
|  |             if (exp <= 0) // subnormal | ||||||
|  |             { | ||||||
|  |                 man >>= (exp + 14); | ||||||
|  |                 // rounding | ||||||
|  |                 man++; | ||||||
|  |                 man >>= 1; | ||||||
|  |                 if (sgn) | ||||||
|  |                     return (ushort)(0x8000 | man); | ||||||
|  |                 return man; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             // normal | ||||||
|  |             // TODO rounding | ||||||
|  |             exp <<= 10; | ||||||
|  |             man++; | ||||||
|  |             man >>= 1; | ||||||
|  |             if (sgn) | ||||||
|  |                 return (ushort)(0x8000 | exp | man); | ||||||
|  |             return (ushort)(exp | man); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         //This function is faulty!!!! | ||||||
|         ushort f32tof16(float f) { |         ushort f32tof16(float f) { | ||||||
|             //uint t = *(uint*)&f; |             //uint t = *(uint*)&f; | ||||||
|             //uint t = (uint)BitConverter.SingleToInt32Bits(f); |             //uint t = (uint)BitConverter.SingleToInt32Bits(f); | ||||||
|  | |||||||
| @ -50,6 +50,8 @@ namespace RoboidControl { | |||||||
|             this.thingId = thing.id; |             this.thingId = thing.id; | ||||||
|             this.thing = thing; |             this.thing = thing; | ||||||
|             this.bytes = this.thing.GenerateBinary(); |             this.bytes = this.thing.GenerateBinary(); | ||||||
|  |             // if (this.bytes.Length > 0) | ||||||
|  |             //     System.Console.Write($"Binary message for [{networkId}/{thing.id}]"); | ||||||
|         } |         } | ||||||
|         /// @copydoc Passer::RoboidControl::IMessage::IMessage(byte[] buffer) |         /// @copydoc Passer::RoboidControl::IMessage::IMessage(byte[] buffer) | ||||||
|         public BinaryMsg(byte[] buffer) { |         public BinaryMsg(byte[] buffer) { | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ namespace RoboidControl | |||||||
|         { |         { | ||||||
|             SendFloat16(buffer, ref ix, new float16(v.distance)); |             SendFloat16(buffer, ref ix, new float16(v.distance)); | ||||||
|             SendAngle8(buffer, ref ix, v.direction.horizontal); |             SendAngle8(buffer, ref ix, v.direction.horizontal); | ||||||
|             SendAngle8(buffer, ref ix, v.direction.horizontal); |             SendAngle8(buffer, ref ix, v.direction.vertical); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         public static Spherical ReceiveSpherical(byte[] data, ref byte ix) |         public static Spherical ReceiveSpherical(byte[] data, ref byte ix) | ||||||
| @ -73,7 +73,8 @@ namespace RoboidControl | |||||||
|                 angle -= 360; |                 angle -= 360; | ||||||
|             while (angle < -180) |             while (angle < -180) | ||||||
|                 angle += 360; |                 angle += 360; | ||||||
|             buffer[ix++] = (byte)((angle / 360.0f) * 256.0f); |             sbyte value = (sbyte)(angle / 360.0f * 256.0f); | ||||||
|  |             buffer[ix++] = (byte)value; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         public static float ReceiveAngle8(byte[] data, ref byte ix) |         public static float ReceiveAngle8(byte[] data, ref byte ix) | ||||||
| @ -92,13 +93,15 @@ namespace RoboidControl | |||||||
|         public static void SendFloat16(byte[] data, ref byte ix, float16 f) |         public static void SendFloat16(byte[] data, ref byte ix, float16 f) | ||||||
|         { |         { | ||||||
|             ushort binary = f.GetBinary(); |             ushort binary = f.GetBinary(); | ||||||
|             data[ix++] = (byte)(binary >> 8); |             data[ix++] = (byte)((binary >> 8) & 0xFF); | ||||||
|             data[ix++] = (byte)(binary & 255); |             data[ix++] = (byte)(binary & 0xFF); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         public static float ReceiveFloat16(byte[] data, ref byte ix) |         public static float ReceiveFloat16(byte[] data, ref byte ix) | ||||||
|         { |         { | ||||||
|             ushort value = (ushort)(data[ix++] << 8 | data[ix++]); |             byte msb = data[ix++]; | ||||||
|  |             byte lsb = data[ix++]; | ||||||
|  |             ushort value = (ushort)(msb << 8 | lsb); | ||||||
|             float16 f16 = new float16(); |             float16 f16 = new float16(); | ||||||
|             f16.SetBinary(value); |             f16.SetBinary(value); | ||||||
|             float f = f16.toFloat(); |             float f = f16.toFloat(); | ||||||
|  | |||||||
| @ -66,11 +66,11 @@ namespace RoboidControl { | |||||||
|             this.port = port; |             this.port = port; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         public List<RemoteParticipant> senders = new List<RemoteParticipant>(); |         public List<RemoteParticipant> owners = new List<RemoteParticipant>(); | ||||||
| 
 | 
 | ||||||
|         public RemoteParticipant GetParticipant(string ipAddress, int port) { |         public RemoteParticipant GetParticipant(string ipAddress, int port) { | ||||||
|             //Console.WriteLine($"Get Participant {ipAddress}:{port}"); |             //Console.WriteLine($"Get Participant {ipAddress}:{port}"); | ||||||
|             foreach (RemoteParticipant sender in senders) { |             foreach (RemoteParticipant sender in owners) { | ||||||
|                 if (sender.ipAddress == ipAddress && sender.port == port) |                 if (sender.ipAddress == ipAddress && sender.port == port) | ||||||
|                     return sender; |                     return sender; | ||||||
|             } |             } | ||||||
| @ -79,9 +79,9 @@ namespace RoboidControl { | |||||||
|         public RemoteParticipant AddParticipant(string ipAddress, int port) { |         public RemoteParticipant AddParticipant(string ipAddress, int port) { | ||||||
|             Console.WriteLine($"New Participant {ipAddress}:{port}"); |             Console.WriteLine($"New Participant {ipAddress}:{port}"); | ||||||
|             RemoteParticipant participant = new(ipAddress, port) { |             RemoteParticipant participant = new(ipAddress, port) { | ||||||
|                 networkId = (byte)(this.senders.Count + 1) |                 networkId = (byte)(this.owners.Count + 1) | ||||||
|             }; |             }; | ||||||
|             senders.Add(participant); |             owners.Add(participant); | ||||||
|             return participant; |             return participant; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -119,8 +119,7 @@ namespace RoboidControl { | |||||||
|             // It is hard to determine our source port |             // It is hard to determine our source port | ||||||
|             string ipAddress = this.endPoint.Address.ToString(); |             string ipAddress = this.endPoint.Address.ToString(); | ||||||
|             RemoteParticipant remoteParticipant = GetParticipant(ipAddress, this.endPoint.Port); |             RemoteParticipant remoteParticipant = GetParticipant(ipAddress, this.endPoint.Port); | ||||||
|             if (remoteParticipant == null) |             remoteParticipant ??= AddParticipant(ipAddress, this.endPoint.Port); | ||||||
|                 remoteParticipant = AddParticipant(ipAddress, this.endPoint.Port); |  | ||||||
| 
 | 
 | ||||||
|             ReceiveData(data, remoteParticipant); |             ReceiveData(data, remoteParticipant); | ||||||
| 
 | 
 | ||||||
| @ -146,10 +145,10 @@ namespace RoboidControl { | |||||||
|                 Thing thing = this.things[ix]; |                 Thing thing = this.things[ix]; | ||||||
|                 if (thing != null) { |                 if (thing != null) { | ||||||
|                     thing.Update(currentTimeMS); |                     thing.Update(currentTimeMS); | ||||||
|                     BinaryMsg binaryMsg = new(thing.owner.networkId, thing); |                     // if (thing.owner != this) { | ||||||
|                     this.Send(thing.owner, binaryMsg); |                     //     BinaryMsg binaryMsg = new(thing.owner.networkId, thing); | ||||||
|                     //foreach (RemoteParticipant sender in this.senders) |                     //     this.Send(thing.owner, binaryMsg); | ||||||
|                     //                        this.Send(sender, binaryMsg); |                     // } | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| @ -170,16 +169,6 @@ namespace RoboidControl { | |||||||
|             this.Send(remoteParticipant, new BinaryMsg(this.networkId, thing)); |             this.Send(remoteParticipant, new BinaryMsg(this.networkId, thing)); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // public bool Send(IMessage msg) { |  | ||||||
|         //     int bufferSize = msg.Serialize(ref this.buffer); |  | ||||||
|         //     if (bufferSize <= 0) |  | ||||||
|         //         return true; |  | ||||||
| 
 |  | ||||||
|         //     // Console.WriteLine($"msg to {endPoint.Address.ToString()} {endPoint.Port}"); |  | ||||||
|         //     this.udpClient?.Send(this.buffer, bufferSize, this.endPoint); |  | ||||||
|         //     return true; |  | ||||||
|         // } |  | ||||||
| 
 |  | ||||||
|         public bool Send(RemoteParticipant remoteParticipant, IMessage msg) { |         public bool Send(RemoteParticipant remoteParticipant, IMessage msg) { | ||||||
|             int bufferSize = msg.Serialize(ref this.buffer); |             int bufferSize = msg.Serialize(ref this.buffer); | ||||||
|             if (bufferSize <= 0) |             if (bufferSize <= 0) | ||||||
| @ -209,23 +198,23 @@ namespace RoboidControl { | |||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         public bool SendBuffer(int bufferSize) { |         // public bool SendBuffer(int bufferSize) { | ||||||
|             //if (this.ipAddress == null) |         //     //if (this.ipAddress == null) | ||||||
|             //    return false; |         //     //    return false; | ||||||
| 
 | 
 | ||||||
|             // UnityEngine.Debug.Log($"Send msg {buffer[0]} to {ipAddress}"); |         //     // UnityEngine.Debug.Log($"Send msg {buffer[0]} to {ipAddress}"); | ||||||
|             //this.udpClient.Send(this.buffer, bufferSize, this.ipAddress, this.port); |         //     //this.udpClient.Send(this.buffer, bufferSize, this.ipAddress, this.port); | ||||||
|             this.udpClient?.Send(this.buffer, bufferSize, this.endPoint); |         //     this.udpClient?.Send(this.buffer, bufferSize, this.endPoint); | ||||||
|             return true; |         //     return true; | ||||||
|         } |         // } | ||||||
| 
 | 
 | ||||||
|         public bool PublishBuffer(int bufferSize) { |         // public bool PublishBuffer(int bufferSize) { | ||||||
|             if (this.broadcastIpAddress == null) |         //     if (this.broadcastIpAddress == null) | ||||||
|                 return false; |         //         return false; | ||||||
| 
 | 
 | ||||||
|             this.udpClient?.Send(this.buffer, bufferSize, this.broadcastIpAddress, this.port); |         //     this.udpClient?.Send(this.buffer, bufferSize, this.broadcastIpAddress, this.port); | ||||||
|             return true; |         //     return true; | ||||||
|         } |         // } | ||||||
| 
 | 
 | ||||||
|         #endregion |         #endregion | ||||||
| 
 | 
 | ||||||
| @ -290,14 +279,14 @@ namespace RoboidControl { | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         protected virtual void Process(InvestigateMsg msg) { } |         protected virtual void Process(RemoteParticipant sender, InvestigateMsg msg) { } | ||||||
| 
 | 
 | ||||||
|         protected virtual void Process(RemoteParticipant sender, ThingMsg msg) { |         protected virtual void Process(RemoteParticipant sender, ThingMsg msg) { | ||||||
|             Console.WriteLine($"Participant: Process thing [{msg.networkId}/{msg.thingId}]"); |             //Console.WriteLine($"Participant: Process thing [{msg.networkId}/{msg.thingId}]"); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         protected virtual void Process(RemoteParticipant sender, NameMsg msg) { |         protected virtual void Process(RemoteParticipant sender, NameMsg msg) { | ||||||
|             // Console.WriteLine($"Participant: Process name [{msg.networkId}/{msg.thingId}] {msg.name}"); |             //Console.WriteLine($"Participant: Process name [{msg.networkId}/{msg.thingId}] {msg.name}"); | ||||||
|             Thing thing = sender.Get(msg.networkId, msg.thingId); |             Thing thing = sender.Get(msg.networkId, msg.thingId); | ||||||
|             if (thing != null) |             if (thing != null) | ||||||
|                 thing.name = msg.name; |                 thing.name = msg.name; | ||||||
| @ -329,7 +318,7 @@ namespace RoboidControl { | |||||||
|                     thing.angularVelocity = msg.angularVelocity; |                     thing.angularVelocity = msg.angularVelocity; | ||||||
| 
 | 
 | ||||||
|             } |             } | ||||||
|          } |         } | ||||||
| 
 | 
 | ||||||
|         protected virtual void Process(RemoteParticipant sender, BinaryMsg msg) { |         protected virtual void Process(RemoteParticipant sender, BinaryMsg msg) { | ||||||
|             // Console.WriteLine($"Participant: Process binary [{msg.networkId}/{msg.thingId}]"); |             // Console.WriteLine($"Participant: Process binary [{msg.networkId}/{msg.thingId}]"); | ||||||
| @ -337,19 +326,19 @@ namespace RoboidControl { | |||||||
|             thing?.ProcessBinary(msg.bytes); |             thing?.ProcessBinary(msg.bytes); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         protected virtual void Process(TextMsg temsgxt) { } |         protected virtual void Process(RemoteParticipant sender, TextMsg temsgxt) { } | ||||||
| 
 | 
 | ||||||
|         protected virtual void Process(DestroyMsg msg) { } |         protected virtual void Process(RemoteParticipant sender, DestroyMsg msg) { } | ||||||
| 
 | 
 | ||||||
|         private void ForwardMessage(IMessage msg) { |         private void ForwardMessage(IMessage msg) { | ||||||
|             foreach (Participant client in senders) { |             // foreach (Participant client in senders) { | ||||||
|                 if (client == this) |             //     if (client == this) | ||||||
|                     continue; |             //         continue; | ||||||
|                 //UnityEngine.Debug.Log($"---> {client.ipAddress}"); |             //     //UnityEngine.Debug.Log($"---> {client.ipAddress}"); | ||||||
|                 //IMessage.SendMsg(client, msg); |             //     //IMessage.SendMsg(client, msg); | ||||||
|                 msg.Serialize(ref client.buffer); |             //     msg.Serialize(ref client.buffer); | ||||||
|                 client.SendBuffer(client.buffer.Length); |             //     client.SendBuffer(client.buffer.Length); | ||||||
|             } |             // } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         #endregion |         #endregion | ||||||
|  | |||||||
| @ -18,9 +18,11 @@ namespace RoboidControl { | |||||||
|             get { return _touchedSomething; } |             get { return _touchedSomething; } | ||||||
|             set { |             set { | ||||||
|                 _touchedSomething = value; |                 _touchedSomething = value; | ||||||
|                 BinaryMsg msg = new(networkId, this); |                 if (thisParticipant != null && this.owner != thisParticipant ) { | ||||||
|                 foreach (RemoteParticipant remoteParticipant in thisParticipant.senders) |                     BinaryMsg msg = new(networkId, this); | ||||||
|                     thisParticipant.Send(remoteParticipant, msg); |                     foreach (RemoteParticipant remoteParticipant in thisParticipant.owners) | ||||||
|  |                         thisParticipant.Send(remoteParticipant, msg); | ||||||
|  |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -52,12 +52,12 @@ namespace RoboidControl { | |||||||
|         protected override void Process(RemoteParticipant sender, NetworkIdMsg msg) { } |         protected override void Process(RemoteParticipant sender, NetworkIdMsg msg) { } | ||||||
| 
 | 
 | ||||||
|         protected override void Process(RemoteParticipant sender, ThingMsg msg) { |         protected override void Process(RemoteParticipant sender, ThingMsg msg) { | ||||||
|             Console.WriteLine($"SiteServer: Process thing [{msg.networkId}/{msg.thingId}]"); |             //Console.WriteLine($"SiteServer: Process thing [{msg.networkId}/{msg.thingId}]"); | ||||||
|             Thing thing = sender.Get(msg.networkId, msg.thingId); |             Thing thing = sender.Get(msg.networkId, msg.thingId); | ||||||
|             if (thing == null) { |             if (thing == null) { | ||||||
|                 Thing newThing = null; |                 Thing newThing = null; | ||||||
|                 if (thingMsgProcessors.TryGetValue(msg.thingType, out Func<RemoteParticipant, byte, byte, Thing> msgProcessor)) { |                 if (thingMsgProcessors.TryGetValue(msg.thingType, out Func<RemoteParticipant, byte, byte, Thing> msgProcessor)) { | ||||||
|                     Console.WriteLine("Found thing message processor"); |                     //Console.WriteLine("Found thing message processor"); | ||||||
|                     if (msgProcessor != null) |                     if (msgProcessor != null) | ||||||
|                         newThing = msgProcessor(sender, msg.networkId, msg.thingId); |                         newThing = msgProcessor(sender, msg.networkId, msg.thingId); | ||||||
|                 } |                 } | ||||||
|  | |||||||
							
								
								
									
										8
									
								
								Thing.cs
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								Thing.cs
									
									
									
									
									
								
							| @ -206,10 +206,11 @@ namespace RoboidControl { | |||||||
|         /// <summary> |         /// <summary> | ||||||
|         /// Create a new thing for the given participant |         /// Create a new thing for the given participant | ||||||
|         /// </summary> |         /// </summary> | ||||||
|         /// <param name="participant">The participant for which this thing is created</param> |         /// <param name="owner">The participant for which this thing is created</param> | ||||||
|         /// <param name="invokeEvent">True when a new thing event should be triggered</param> |         /// <param name="invokeEvent">True when a new thing event should be triggered</param> | ||||||
|         public Thing(RemoteParticipant participant, bool invokeEvent = false) { |         public Thing(RemoteParticipant owner, bool invokeEvent = false) { | ||||||
|             this.owner = participant; |             this.owner = owner; | ||||||
|  |             //owner.Add(this); | ||||||
|             if (invokeEvent) |             if (invokeEvent) | ||||||
|                 InvokeNewThing(this); |                 InvokeNewThing(this); | ||||||
|         } |         } | ||||||
| @ -297,6 +298,7 @@ namespace RoboidControl { | |||||||
|             if (thing == null) |             if (thing == null) | ||||||
|                 return false; |                 return false; | ||||||
|             return (thing.networkId == networkId) && (thing.id == thingId); |             return (thing.networkId == networkId) && (thing.id == thingId); | ||||||
|  |             //return (thing.id == thingId); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -13,10 +13,8 @@ namespace RoboidControl.Unity { | |||||||
|         protected virtual void Awake() { |         protected virtual void Awake() { | ||||||
|             Console.SetOut(new UnityLogWriter()); |             Console.SetOut(new UnityLogWriter()); | ||||||
| 
 | 
 | ||||||
|             site = new(7681); |             site = new RoboidControl.SiteServer(7681); | ||||||
|             RoboidControl.Thing.OnNewThing += HandleNewThing; |             RoboidControl.Thing.OnNewThing += HandleNewThing; | ||||||
| 
 |  | ||||||
|             //site.Register<RoboidControl.TouchSensor>(RoboidControl.Thing.Type.TouchSensor); |  | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         void OnApplicationQuit() { |         void OnApplicationQuit() { | ||||||
| @ -24,7 +22,7 @@ namespace RoboidControl.Unity { | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         public void HandleNewThing(RoboidControl.Thing thing) { |         public void HandleNewThing(RoboidControl.Thing thing) { | ||||||
|             // Debug.Log("Handle New thing event"); |             //Debug.Log("Handle New thing event"); | ||||||
|             site.Add(thing, false); |             site.Add(thing, false); | ||||||
|             thingQueue.Enqueue(thing); |             thingQueue.Enqueue(thing); | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -96,6 +96,8 @@ namespace RoboidControl.Unity { | |||||||
|                 modelQuad.transform.SetParent(this.transform, false); |                 modelQuad.transform.SetParent(this.transform, false); | ||||||
|                 modelQuad.transform.localEulerAngles = new(90, -90, 0); |                 modelQuad.transform.localEulerAngles = new(90, -90, 0); | ||||||
|                 modelQuad.transform.localScale = new Vector3(aspectRatio, 1, 1) / 5; |                 modelQuad.transform.localScale = new Vector3(aspectRatio, 1, 1) / 5; | ||||||
|  |                 if (this.name == "Ant") | ||||||
|  |                     modelQuad.transform.localScale *= 2; | ||||||
|                 Material quadMaterial = new(Shader.Find("Unlit/Transparent")) { |                 Material quadMaterial = new(Shader.Find("Unlit/Transparent")) { | ||||||
|                     mainTexture = texture |                     mainTexture = texture | ||||||
|                 }; |                 }; | ||||||
|  | |||||||
| @ -24,6 +24,18 @@ namespace RoboidControl.Unity { | |||||||
|                 participant = FindAnyObjectByType<SiteServer>(); |                 participant = FindAnyObjectByType<SiteServer>(); | ||||||
|                 SetCoreThing(new RoboidControl.TouchSensor(participant.site)); |                 SetCoreThing(new RoboidControl.TouchSensor(participant.site)); | ||||||
|             } |             } | ||||||
|  |             // Somehow this does not work. | ||||||
|  | 
 | ||||||
|  |             // Rigidbody rb = GetComponentInParent<Rigidbody>(); | ||||||
|  |             // if (rb == null) { | ||||||
|  |             //     RoboidControl.Thing thing = core; | ||||||
|  |             //     while (thing.parent != null) | ||||||
|  |             //         thing = thing.parent; | ||||||
|  |                  | ||||||
|  |             //     Thing unityThing = thing.component; | ||||||
|  |             //     rb = unityThing.gameObject.AddComponent<Rigidbody>(); | ||||||
|  |             //     rb.isKinematic = true; | ||||||
|  |             // } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         /// <summary> |         /// <summary> | ||||||
| @ -62,7 +74,6 @@ namespace RoboidControl.Unity { | |||||||
|             if (this.transform.root == other.transform.root) |             if (this.transform.root == other.transform.root) | ||||||
|                 return; |                 return; | ||||||
| 
 | 
 | ||||||
|             // Debug.Log($"touched {other.gameObject.name}"); |  | ||||||
|             this.coreSensor.touchedSomething = true; |             this.coreSensor.touchedSomething = true; | ||||||
|         } |         } | ||||||
|         private void OnTriggerExit(Collider other) { |         private void OnTriggerExit(Collider other) { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Pascal Serrarens
						Pascal Serrarens