// Use this for initialization public override void Awake() { base.Awake(); SetAsDock(true); SetCollideable(true); AddAcceptedDocktype(typeof(ClipCubeAttachment)); m_cubeHolders = new ClipCubeHolder[m_cubeDepth, m_cubeHeight, m_cubeWidth]; for (int x = 0; x < m_cubeDepth; x++) { for (int y = 0; y < m_cubeHeight; y++) { for (int z = 0; z < m_cubeWidth; z++) { Transform cubePlaceholder = UIFactory.CreateClipPlaceholder().transform; cubePlaceholder.position = m_cubeParent.position; cubePlaceholder.parent = m_cubeParent; cubePlaceholder.localPosition = new Vector3(x * m_cubeSpacingMultiplier, y * m_cubeSpacingMultiplier, z * m_cubeSpacingMultiplier); ClipCubeHolder holder = new ClipCubeHolder(); holder.placeholder = cubePlaceholder; holder.x = x; holder.y = y; holder.z = z; m_cubeHolders[x, y, z] = holder; } } } }
public void TriggerClip(int[] coords, int trigger) { ClipCubeHolder holder = GetCubeHolder(trigger, coords[1], coords[2]); if (holder.attach != null) { ClipCubeAttachment clip = holder.attach as ClipCubeAttachment; clip.musicRef.Play(); } }
public override void RemoveDockableAttachment(BaseAttachment attach) { base.RemoveDockableAttachment(attach); attach.transform.parent = null; ClipCubeHolder holder = FindAttachmentHolder(attach); if (holder != null) { holder.attach = null; } }
public override bool AddDockableAttachment(BaseAttachment attach) { if (base.AddDockableAttachment(attach)) { ClipCubeHolder holder = FindClosestHolder(attach.transform.position); if (holder.attach == null) { attach.SetCloneable(false); holder.attach = attach; attach.transform.parent = holder.placeholder; iTween.MoveTo(attach.gameObject, iTween.Hash("position", Vector3.zero, "islocal", true, "time", 0.5f)); attach.transform.rotation = holder.placeholder.rotation; return(true); } } return(false); }
public ClipCubeHolder FindClosestHolder(Vector3 position) { float closestDist = -1.0f; ClipCubeHolder closestHolder = null; foreach (ClipCubeHolder holder in m_cubeHolders) { float dist = Vector3.Distance(holder.placeholder.position, position); if (closestDist < 0 || dist < closestDist) { closestHolder = holder; closestDist = dist; } } //return m_cubeHolders[Mathf.RoundToInt(position.z), Mathf.RoundToInt(position.y), Mathf.RoundToInt(position.x)]; return(closestHolder); }