public void Add(INodeAvatar nodeAvatar, Vector3 avatarPos) { // if this is internal if (children != null) { this.update(nodeAvatar, avatarPos); this.moveToChild(nodeAvatar, avatarPos); } // if this is empty external else if (containedAvatar == null) { this.containedAvatar = nodeAvatar; this.containedAvatarPos = avatarPos; this.update(nodeAvatar, avatarPos); } // if this is non empty external else { this.initChildren(); this.update(nodeAvatar, avatarPos); this.moveToChild(nodeAvatar, avatarPos); this.moveToChild(this.containedAvatar, this.containedAvatarPos); containedAvatar = null; } }
public NodeAvatarLabeled(INodeAvatar nodeAvatar, GameObject labelPrefab, string labelText) : base(nodeAvatar) { GameObject nodeAvatarGO = this.nodeAvatar.GetGameObject(); GameObject labelPivot = MonoBehaviour.Instantiate(labelPrefab, nodeAvatarGO.transform); GameObject labelGO = labelPivot.transform.GetChild(0).gameObject; labelGO.GetComponent <TextMesh>().text = labelText; }
void moveToChild(INodeAvatar nodeAvatar, Vector3 nodeAvatarPos) { foreach (OctNode child in children) { if (child.Contains(nodeAvatarPos)) { child.Add(nodeAvatar, nodeAvatarPos); break; } } }
public void interact(INodeAvatar nodeAvatar, Vector3 nodeAvatarPos) { // if emtpy external or external with self if (this.chargeSum == 0 || this.containedAvatar == nodeAvatar) { return; } // if internal not fulfilling theta criterium if (containedAvatar == null && this.chargeSum / Vector3.Distance(nodeAvatarPos, centerOfCharge) > theta) { for (int i = 0; i < 8; i++) { this.children[i].interact(nodeAvatar, nodeAvatarPos); } } // if non empty external or internal fulfilling theta criterium else { Vector3 force = interNodeForce(nodeAvatarPos, this.centerOfCharge, this.chargeSum); nodeAvatar.AddForce(force); } }
public EdgeAvatar(GameObject nodeAvatarPrefab, IEdge edge) { this.gameObject = MonoBehaviour.Instantiate(nodeAvatarPrefab, Vector3.zero, Quaternion.identity); MBEdgeAvatar mbEdegAvatar = this.gameObject.GetComponent <MBEdgeAvatar>(); INode source = edge.GetSourceNode(); INode target = edge.GetTargetNode(); IAvatar sourceAvatar; IAvatar targetAvatar; if (source.TryGetAvatar(out sourceAvatar) && target.TryGetAvatar(out targetAvatar) && mbEdegAvatar != null) { this.sourceNodeAvatar = (INodeAvatar)sourceAvatar; this.targetNodeAvatar = (INodeAvatar)targetAvatar; mbEdegAvatar.SetSourceNodeAvatar(this.sourceNodeAvatar); mbEdegAvatar.SetTargetNodeAvatar(this.targetNodeAvatar); } else { G3DLogger.Log("Missing component in edge {0}, avatar constructor failed.", edge.GetId()); this.SelfDestruct(); } }
public ANodeAvatarDecorator(INodeAvatar nodeAvatar) { this.nodeAvatar = nodeAvatar; }
public NodeAvatarHighlightable(INodeAvatar nodeAvatar, IHighlightableBinary highlightableB) : base(nodeAvatar) { GameObject gameObject = this.nodeAvatar.GetGameObject(); this.highlighter = new HighlighterBinary(highlightableB, gameObject); }
public void SetTargetNodeAvatar(INodeAvatar avatar) { this.targetNodeAvatar = avatar; }
public void SetSourceNodeAvatar(INodeAvatar avatar) { this.sourceNodeAvatar = avatar; }
void update(INodeAvatar nodeAvatar, Vector3 nodeAvatarPos) { this.centerOfCharge = (this.centerOfCharge * this.chargeSum + nodeAvatarPos) / (chargeSum + 1); this.chargeSum++; }