public override void SetUp(NodePoint start, NodePoint end, float thickness = 0.1f) { Start = start.position; End = end.position; startPoint = start; endPoint = end; var d = End - Start; defaultGeometryLength = d.magnitude; length = defualtLimitLength; defaultPosition = 0.5f * d + Start; defaultRotation = Quaternion.LookRotation(d); defaultObjectScale = new Vector3(thickness, thickness, defaultGeometryLength); transform.position = defaultPosition; transform.rotation = defaultRotation; m_stringObject.transform.localScale = defaultObjectScale; }
public override void SetUp(NodePoint start, NodePoint end, float thickness = 0.1f) { Start = start.position; End = end.position; startPoint = start; endPoint = end; var d = End - Start; defaultLength = d.magnitude; defaultPosition = 0.5f * d + Start; defaultRotation = Quaternion.LookRotation(d); defaultObjectScale = new Vector3(thickness, thickness, defaultLength); transform.position = defaultPosition; transform.rotation = defaultRotation; m_BarObject.transform.localScale = defaultObjectScale; start.AttatchToBar(this, NodePoint.EndPointType.IsStart); end.AttatchToBar(this, NodePoint.EndPointType.IsEnd); }
public override void SetupStrings() { int index = 0; int toIndex = 0; for (int i = 0; i < elements.Bars.Count; i += 1) { if (i % 2 == 0) { toIndex = i + 2 >= elements.Bars.Count ? 0 : i + 2; } var fromBar = elements.Bars[i]; var toBar0 = elements.Bars[toIndex]; var toBar1 = elements.Bars[toIndex + 1]; NodePoint fromPoint0 = fromBar.startPoint; NodePoint fromPoint1 = fromBar.endPoint; NodePoint toPoint0; NodePoint toPoint1; if (i % 2 == 0) { toPoint0 = toBar0.startPoint; toPoint1 = toBar1.startPoint; } else { toPoint0 = toBar0.endPoint; toPoint1 = toBar1.endPoint; } var str0 = Instantiate(prefabs.m_StringPrefab, transform); str0.SetUp(fromPoint0, toPoint0, param.StringThickness); str0.index = index++; str0.name = $"String_{str0.index}_s{fromPoint0.index}_e{toPoint0.index}"; var str1 = Instantiate(prefabs.m_StringPrefab, transform); str1.SetUp(fromPoint0, toPoint1, param.StringThickness); str1.index = index++; str1.name = $"String_{str1.index}_s{fromPoint0.index}_e{toPoint1.index}"; var str2 = Instantiate(prefabs.m_StringPrefab, transform); str2.SetUp(fromPoint1, toPoint0, param.StringThickness); str2.index = index++; str2.name = $"String_{str2.index}_s{fromPoint1.index}_e{toPoint0.index}"; var str3 = Instantiate(prefabs.m_StringPrefab, transform); str3.SetUp(fromPoint1, toPoint1, param.StringThickness); str3.index = index++; str3.name = $"String_{str3.index}_s{fromPoint1.index}_e{toPoint1.index}"; str0.AddSymmetry(str2); str0.AddOpposite(str1); str3.AddSymmetry(str1); str3.AddOpposite(str2); elements.Strings.Add(str0); elements.Strings.Add(str1); elements.Strings.Add(str2); elements.Strings.Add(str3); } }
public abstract void SetUp(NodePoint start, NodePoint end, float thickness = 0.1f);