Exemplo n.º 1
0
 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;
     }
 }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
 void moveToChild(INodeAvatar nodeAvatar, Vector3 nodeAvatarPos)
 {
     foreach (OctNode child in children)
     {
         if (child.Contains(nodeAvatarPos))
         {
             child.Add(nodeAvatar, nodeAvatarPos);
             break;
         }
     }
 }
Exemplo n.º 4
0
 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);
     }
 }
Exemplo n.º 5
0
        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();
            }
        }
Exemplo n.º 6
0
 public ANodeAvatarDecorator(INodeAvatar nodeAvatar)
 {
     this.nodeAvatar = nodeAvatar;
 }
Exemplo n.º 7
0
        public NodeAvatarHighlightable(INodeAvatar nodeAvatar, IHighlightableBinary highlightableB) : base(nodeAvatar)
        {
            GameObject gameObject = this.nodeAvatar.GetGameObject();

            this.highlighter = new HighlighterBinary(highlightableB, gameObject);
        }
Exemplo n.º 8
0
 public void SetTargetNodeAvatar(INodeAvatar avatar)
 {
     this.targetNodeAvatar = avatar;
 }
Exemplo n.º 9
0
 public void SetSourceNodeAvatar(INodeAvatar avatar)
 {
     this.sourceNodeAvatar = avatar;
 }
Exemplo n.º 10
0
 void update(INodeAvatar nodeAvatar, Vector3 nodeAvatarPos)
 {
     this.centerOfCharge = (this.centerOfCharge * this.chargeSum + nodeAvatarPos) / (chargeSum + 1);
     this.chargeSum++;
 }