Ejemplo n.º 1
0
 public WWDoorHolderConfiguration(
     WWDoorHolderMetadata northWwDoorHolderMetadata,
     WWDoorHolderMetadata eastWwDoorHolderMetadata,
     WWDoorHolderMetadata southWwDoorHolderMetadata,
     WWDoorHolderMetadata westWwDoorHolderMetadata)
 {
     this.northWwDoorHolderMetadata = northWwDoorHolderMetadata;
     this.eastWwDoorHolderMetadata  = eastWwDoorHolderMetadata;
     this.southWwDoorHolderMetadata = southWwDoorHolderMetadata;
     this.westWwDoorHolderMetadata  = westWwDoorHolderMetadata;
 }
Ejemplo n.º 2
0
        private void GetDoorHolderDimensions(WWDoorHolderMetadata wwDoorHolderMetadata, string direction,
                                             int baseTileSize)
        {
            if (DoorHolderHelpersAreNull())
            {
                return;
            }
            float width  = Vector3.Distance(x1.transform.position, x2.transform.position) / baseTileSize;
            float height = Math.Abs(y.transform.position.y - x1.transform.position.y) / baseTileSize;

            wwDoorHolderMetadata.width  = width;
            wwDoorHolderMetadata.height = height;
            wwDoorHolderMetadata.pivot  = pivot.transform.position / baseTileSize * 2f;
            DestroyHelpers();
        }
        /// <see cref="SceneGraphManager.AddDoor"/>
        public bool AddDoor(Door door, Tile tile, Vector3 hitPoint)
        {
            float doorWidth  = door.GetWidth();
            float doorHeight = door.GetHeight();
            List <WWDoorHolderMetadata> doorHolders = tile.GetDoorHolders();

            // TODO, use the DoorHolder that is closest to the hitPoint
            // TODO handle the posibility that a Tile has mutliple Door Holders
            if (doorHolders.Count > 0)
            {
                WWDoorHolderMetadata doorHolder = doorHolders[0];
                float holderWidth  = doorHolder.width;
                float holderHeight = doorHolder.height;

                float doorRatio   = doorWidth / doorHeight;
                float holderRatio = holderWidth / holderHeight;

                float diff      = Math.Abs(holderRatio - doorRatio);
                var   threshold = 0.2f;
                if (diff < threshold)
                {
                    // TODO scale up to match door to tile if necessary
                    // TODO handle the rotation
                    // TODO handle collision for existing doors

                    var holderRot = tile.GetRotation();
//                    var config = new WWDoorHolderConfiguration(tile);
                    var rotatedOffset = RotatePointAroundPivot(doorHolder.pivot,
                                                               Vector3.zero,
                                                               new Vector3(0, holderRot, 0));

                    var coord = new Coordinate(tile.GetCoordinate().Index, rotatedOffset);
                    door.SetPosition(coord);
                    door.SetRotation(holderRot);
                    sceneDictionary.Add(door);
                    return(true);
                }
            }
            return(false);
        }
Ejemplo n.º 4
0
 private void DisplayDoorHolderProperties(WWDoorHolderMetadata wwDoorHolderMetadata, string direction,
                                          int baseTileSize)
 {
     wwDoorHolderMetadata.hasDoorHolder = GUILayout.Toggle(
         wwDoorHolderMetadata.hasDoorHolder, string.Format(" Has {0} Door Holder", direction));
     if (wwDoorHolderMetadata.hasDoorHolder)
     {
         wwDoorHolderMetadata.pivot = EditorGUILayout.Vector3Field(
             string.Format("{0} Door Pivot", direction), wwDoorHolderMetadata.pivot);
         wwDoorHolderMetadata.width = EditorGUILayout.FloatField(
             string.Format("{0} Door Width", direction), wwDoorHolderMetadata.width);
         wwDoorHolderMetadata.height = EditorGUILayout.FloatField(
             string.Format("{0} Door Height", direction), wwDoorHolderMetadata.height);
         if (GUILayout.Button("Create Helpers"))
         {
             CreateDoorHolderHelpers(direction);
         }
         if (GUILayout.Button(direction + "Get Door Dimensions and Pivot"))
         {
             GetDoorHolderDimensions(wwDoorHolderMetadata, direction, baseTileSize);
         }
     }
 }