예제 #1
0
 private void SetupClusters()
 {
     for (int x = 0; x < graphCountX; x++)
     {
         for (int y = 0; y < graphCountY; y++)
         {
             Node       node      = graph[x, y];
             int        clusterID = 0;
             Ray        ray       = new Ray(node.WorldPosition + Vector3.up * 50, Vector3.down);
             RaycastHit hit;
             if (Physics.Raycast(ray, out hit, 100))
             {
                 ClusterID clusterIDObj = hit.transform.GetComponent <ClusterID>();
                 if (clusterIDObj != null)
                 {
                     clusterID = clusterIDObj.ID;
                     if (!clusterCenters.ContainsKey(clusterID))
                     {
                         if (hit.transform.childCount > 0)
                         {
                             clusterCenters.Add(clusterID, FindNodeFromWorldPosition(hit.transform.GetChild(0).position));
                         }
                         else
                         {
                             clusterCenters.Add(clusterID, FindNodeFromWorldPosition(hit.transform.position));
                         }
                     }
                 }
             }
             node.ClusterID = clusterID;
         }
     }
 }
예제 #2
0
        public override int GetHashCode()
        {
            var hash = 17;

            hash = hash * 23 + ClusterID.GetHashCode();
            hash = hash * 23 + MSMSID.GetHashCode();
            hash = hash * 23 + GroupID.GetHashCode();

            return(hash);
        }
예제 #3
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (HasNodeID)
            {
                hash ^= NodeID.GetHashCode();
            }
            if (HasClusterID)
            {
                hash ^= ClusterID.GetHashCode();
            }
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
예제 #4
0
        public override bool Equals(object obj)
        {
            var other = (MSMSClusterMap)obj;

            if (other == null)
            {
                return(false);
            }
            if (!ClusterID.Equals(other.ClusterID))
            {
                return(false);
            }
            if (!GroupID.Equals(other.GroupID))
            {
                return(false);
            }
            return(MSMSID.Equals(other.MSMSID));
        }
예제 #5
0
 public void AsText(StringBuilder b, int pad)
 {
     b.Append(' ', pad);
     b.AppendLine("SceneSpecification:");
     b.Append(' ', pad++);
     b.AppendLine("{");
     b.Append(' ', pad);
     b.AppendLine("CellZ: 0x" + CellZ.ToString("X8") + " (" + CellZ + ")");
     Cell.AsText(b, pad);
     b.Append(' ', pad);
     b.AppendLine("arSnoLevelAreas:");
     b.Append(' ', pad);
     b.AppendLine("{");
     for (int i = 0; i < SNOLevelAreas.Length;)
     {
         b.Append(' ', pad + 1);
         for (int j = 0; j < 8 && i < SNOLevelAreas.Length; j++, i++)
         {
             b.Append("0x" + SNOLevelAreas[i].ToString("X8") + ", ");
         }
         b.AppendLine();
     }
     b.Append(' ', pad);
     b.AppendLine("}");
     b.AppendLine();
     b.Append(' ', pad);
     b.AppendLine("snoPrevWorld: 0x" + SNOPrevWorld.ToString("X8"));
     b.Append(' ', pad);
     b.AppendLine("Unknown1: 0x" + Unknown1.ToString("X8") + " (" + Unknown1 + ")");
     b.Append(' ', pad);
     b.AppendLine("snoPrevLevelArea: 0x" + SNOPrevLevelArea.ToString("X8"));
     b.Append(' ', pad);
     b.AppendLine("snoNextWorld: 0x" + SNONextWorld.ToString("X8"));
     b.Append(' ', pad);
     b.AppendLine("Unknown2: 0x" + Unknown2.ToString("X8") + " (" + Unknown2 + ")");
     b.Append(' ', pad);
     b.AppendLine("snoNextLevelArea: 0x" + SNONextLevelArea.ToString("X8"));
     b.Append(' ', pad);
     b.AppendLine("snoMusic: 0x" + SNOMusic.ToString("X8"));
     b.Append(' ', pad);
     b.AppendLine("snoCombatMusic: 0x" + SNOCombatMusic.ToString("X8"));
     b.Append(' ', pad);
     b.AppendLine("snoAmbient: 0x" + SNOAmbient.ToString("X8"));
     b.Append(' ', pad);
     b.AppendLine("snoReverb: 0x" + SNOReverb.ToString("X8"));
     b.Append(' ', pad);
     b.AppendLine("snoWeather: 0x" + SNOWeather.ToString("X8"));
     b.Append(' ', pad);
     b.AppendLine("snoPresetWorld: 0x" + SNOPresetWorld.ToString("X8"));
     b.Append(' ', pad);
     b.AppendLine("Unknown3: 0x" + Unknown3.ToString("X8") + " (" + Unknown3 + ")");
     b.Append(' ', pad);
     b.AppendLine("Unknown4: 0x" + Unknown4.ToString("X8") + " (" + Unknown4 + ")");
     b.Append(' ', pad);
     b.AppendLine("Unknown5: 0x" + Unknown5.ToString("X8") + " (" + Unknown5 + ")");
     b.Append(' ', pad);
     b.AppendLine("ClusterId: 0x" + ClusterID.ToString("X8") + " (" + ClusterID + ")");
     SceneCachedValues.AsText(b, pad);
     b.Append(' ', --pad);
     b.AppendLine("}");
 }