コード例 #1
0
        public DungeonDomainBuilder AddDecoration(DungeonTheme theme, DecorationInfo info)
        {
            if (info == null)
            {
                return(this);
            }

            Action($"Add decoration");
            {
                Do((context) =>
                {
                    var parentRoom = context.RoomStack.Peek();
                    if (parentRoom != null)
                    {
                        var decorationName = info.Ground != null ? info.Ground.name :
                                             info.Items != null ? info.Items.name :
                                             info.Characters != null ? info.Characters.name : "";
                        Debug.Log($"Spawn decoration {decorationName} in room {parentRoom.Id}\n");


                        var decorationMeta = new DungeonRoomDecorationMeta();
                        decorationMeta.Generate(theme, info);
                        parentRoom.DecorationMeta.Add(decorationMeta);

                        return(TaskStatus.Success);
                    }

                    Debug.Log($"Error! Can't spawn decoration in the void!\n");
                    return(TaskStatus.Failure);
                });
            }
            End();

            return(this);
        }
コード例 #2
0
 public static void LoadMesh(this DecorationInfo info, Mesh mesh)
 {
     if (mesh == null)
     {
         return;
     }
     info.m_mesh = mesh;
 }
コード例 #3
0
 public static void LoadTexture(this DecorationInfo info, Texture2D texture)
 {
     if (texture == null)
     {
         return;
     }
     info?.m_renderMaterial?.SetTexture("_MainTex", texture);
 }
コード例 #4
0
        public void Generate(DungeonTheme theme, DecorationInfo info)
        {
            if (info == null)
            {
                return;
            }

            if (info.Ground != null)
            {
                GenerateGround(theme, info.Ground);
            }

            if (info.Items != null)
            {
                WriteItems(info.Items);
            }

            if (info.Characters != null)
            {
                WriteCharacters(info.Characters);
            }
        }
コード例 #5
0
 public static Texture2D GetTexture(this DecorationInfo info)
 {
     return(info.m_renderMaterial?.GetTexture("_MainTex") as Texture2D);
 }
コード例 #6
0
 public static Mesh GetMesh(this DecorationInfo info)
 {
     return(info.m_mesh);
 }