.版本 2
.支持庫 EdirectX
配置資源 (91y捕魚裡91y遊戲幣)
.如果真 (根.顯示配置窗口 () = 假)
返回 (假)
.如果真結束
渲染窗口.置句柄 (根.初始化窗口 (真, “陰影演示”))
_啟動窗口.輸入設備.初始化 (渲染窗口.取句柄 ())
_啟動窗口.輸入設備.置刷新時間 (30)
場景管理.置句柄 (根.取場景管理 (0))
創建攝像機 ()
創建視口 ()
資源組管理.初始化所有資源組 (91y遊戲幣兌現)
創建場景 ()
返回 (真)
.子程序 創建攝像機
攝像機.置句柄 (場景管理.創建攝像機 (“PlayerCam”))
攝像機.置位置 (0, 0, 500)
攝像機.世界空間位置 (0, 0, -300)
攝像機.置到近裁剪面的距離 (5)
.子程序 創建視口
.局部變量 背景顏色, 自定義_顏色值
視口.置句柄 (渲染窗口.增加視口 (攝像機.取句柄 ()))
背景顏色.紅色值 = 0
背景顏色.綠色值 = 0
背景顏色.藍色值 = 0
背景顏色.透明值 = 1
視口.置背景顏色 (背景顏色)
攝像機.置當前縱橫比 (視口.取真寬 () ÷ 視口.取真高 ())
.子程序 創建場景
.局部變量 環境光, 自定義_顏色值
.局部變量 位置, 自定義_三維向量
.局部變量 場景根節點, 場景節點
.局部變量 公告板集合, 公告板集合
.局部變量 公告板, 公告板
.局部變量 動畫, 動畫
.局部變量 動畫軌跡, 動畫軌跡
.局部變量 關鍵幀, 關鍵幀
.局部變量 雅典娜模型, 網格模型
.局部變量 模型管理, 網格模型管理器
.局部變量 源, 短整數型
.局部變量 目標, 短整數型
.局部變量 子節點, 場景節點
.局部變量 實體, 實體
.局部變量 模型管理句柄, 整數型
.局部變量 平面, 平面
.局部變量 平面實體, 實體
場景管理.設置陰影 (2)
環境光.紅色值 = 0.5
環境光.綠色值 = 0.4
環境光.藍色值 = 0.3
環境光.透明值 = 1
場景管理.置環境光 (環境光)
太陽光.置句柄 (場景管理.創建燈光 (“SunLight”))
太陽光.置類型 (2)
太陽光.置位置 (1000, 1250, 500)
太陽光.置聚光燈範圍 (30, 50, 1)
位置 = 太陽光.取位置 ()
位置.X = -位置.X
位置.Y = -位置.Y
位置.Z = -位置.Z
三維向量正規化 (位置)
太陽光.置方向 (位置.X, 位置.Y, 位置.Z)
太陽光.置漫射光顏色 (0.8, 0.8, 0.9)
太陽光.置鏡面光顏色 (0.9, 0.9, 1)
燈光.置句柄 (場景管理.創建燈光 (“Light2”))
燈光.置漫射光顏色 (最小顏色值.紅色值, 最小顏色值.綠色值, 最小顏色值.藍色值)
燈光.置鏡面光顏色 (1, 1, 1)
燈光.置衰減參數 (8000, 1, 0.0005, 0)
場景根節點.置句柄 (場景管理.取場景根節點 ())
燈光節點.置句柄 (場景根節點.名稱創建場景子節點 (“MovingLightNode”))
燈光節點.關聯對象 (燈光)
公告板集合.置句柄 (場景管理.創建公告板 (“lightbbs”))
公告板集合.置材質名稱 (“Examples/Flare”)
公告板.置句柄 (公告板集合.創建公告板 (0, 0, 0))
公告板.置顏色 (最小顏色值)
燈光節點.關聯對象 (公告板)
位置.X = 300
位置.Y = 250
位置.Z = -300
燈光節點.置位置 (位置)
動畫.置句柄 (場景管理.創建動畫 (“LightTrack”, 20))
動畫.置當前插值方式 (1)
動畫軌跡.置句柄 (動畫.創建節點關聯軌跡 (0, 燈光節點.取句柄 ()))
關鍵幀.置句柄 (動畫軌跡.創建關鍵幀 (0))
關鍵幀.置轉換 (300, 250, -300)
關鍵幀.置句柄 (動畫軌跡.創建關鍵幀 (2))
關鍵幀.置轉換 (150, 300, -250)
關鍵幀.置句柄 (動畫軌跡.創建關鍵幀 (4))
關鍵幀.置轉換 (-150, 350, -100)
關鍵幀.置句柄 (動畫軌跡.創建關鍵幀 (6))
關鍵幀.置轉換 (-400, 200, -200)
關鍵幀.置句柄 (動畫軌跡.創建關鍵幀 (8))
關鍵幀.置轉換 (-200, 200, -400)
關鍵幀.置句柄 (動畫軌跡.創建關鍵幀 (10))
關鍵幀.置轉換 (-100, 150, -200)
關鍵幀.置句柄 (動畫軌跡.創建關鍵幀 (12))
關鍵幀.置轉換 (-100, 75, 180)
關鍵幀.置句柄 (動畫軌跡.創建關鍵幀 (14))
關鍵幀.置轉換 (0, 250, 300)
關鍵幀.置句柄 (動畫軌跡.創建關鍵幀 (16))
關鍵幀.置轉換 (100, 350, 100)
關鍵幀.置句柄 (動畫軌跡.創建關鍵幀 (18))
關鍵幀.置轉換 (250, 300, 0)
關鍵幀.置句柄 (動畫軌跡.創建關鍵幀 (20))
關鍵幀.置轉換 (300, 250, -300)
動畫狀態.置句柄 (場景管理.創建動畫狀態 (“LightTrack”))
動畫狀態.置啟動狀態 (真)
燈光節點.置自動跟蹤 (真, 場景根節點.取句柄 (), 0, 0, -1, 0, 0, 0)
模型管理句柄 = 模型管理.取對象 ()
模型管理.置句柄 (模型管理句柄)
雅典娜模型.置句柄 (模型管理.從文件載入模型 (“athene.mesh”, “General”, 5, 5, 真, 真))
.如果真 (雅典娜模型.取正切參數 (源, 目標) = 假)
雅典娜模型.建立正切向量 (源, 目標)
.如果真結束
子節點.置句柄 (場景根節點.創建場景子節點 ())
雅典娜.置句柄 (場景管理.創建實體 (“athene”, “athene.mesh”))
雅典娜.置材質 (“Examples/Athene/Basic”)
子節點.關聯對象 (雅典娜)
位置.X = 0
位置.Y = -20
位置.Z = 0
子節點.位移 (位置)
子節點.偏 (90)
子節點.置句柄 (場景根節點.創建場景子節點 ())
實體.置句柄 (場景管理.創建實體 (“col1”, “column.mesh”))
實體.置材質 (“Examples/Rockwall”)
子節點.關聯對象 (實體)
位置.X = 200
位置.Y = 0
位置.Z = -200
子節點.位移 (位置)
子節點.置句柄 (場景根節點.創建場景子節點 ())
實體.置句柄 (場景管理.創建實體 (“col2”, “column.mesh”))
實體.置材質 (“Examples/Rockwall”)
子節點.關聯對象 (實體)
位置.X = 200
位置.Y = 0
位置.Z = 200
子節點.位移 (位置)
子節點.置句柄 (場景根節點.創建場景子節點 ())
實體.置句柄 (場景管理.創建實體 (“col3”, “column.mesh”))
實體.置材質 (“Examples/Rockwall”)
子節點.關聯對象 (實體)
位置.X = -200
位置.Y = 0
位置.Z = -200
子節點.位移 (位置)
工具/原料
位置.Z
位置.Y
方法/步驟
.如果真 (_啟動窗口.輸入設備.取鍵狀態 (#鍵值常量.鍵左方向) = 3 或 _啟動窗口.輸入設備.取鍵狀態 (#鍵值常量.鍵a) = 3)
位置三維.X = 位置三維.X - 移動數量
.如果真結束
.如果真 (_啟動窗口.輸入設備.取鍵狀態 (#鍵值常量.鍵右方向) = 3 或 _啟動窗口.輸入設備.取鍵狀態 (#鍵值常量.鍵d) = 3)
位置三維.X = 位置三維.X + 移動數量
.如果真結束
移動攝像機 ()
.子程序 移動攝像機
攝像機.繞Y軸逆時針旋轉 (繞Y軸逆時針旋轉)
攝像機.繞X軸逆時針旋轉 (繞X軸逆時針旋轉)
攝像機.移動 (位置三維)
.如果真 (動畫狀態.取句柄 () ≠ 0)
動畫狀態.修改時間位置 (0.5)
.如果真結束
子程序 控制, , 公開
.局部變量 橫向位置, 整數型
.局部變量 縱向位置, 整數型
.局部變量 移動數量, 整數型
位置三維.X = 0
位置三維.Y = 0
位置三維.Z = 0
移動數量 = 10
_啟動窗口.輸入設備.取鼠標偏移位置 (橫向位置, 縱向位置)
繞Y軸逆時針旋轉 = -橫向位置 × 0.003
繞X軸逆時針旋轉 = -縱向位置 × 0.003
.如果真 (_啟動窗口.輸入設備.取鍵狀態 (#鍵值常量.鍵上方向) = 3 或 _啟動窗口.輸入設備.取鍵狀態 (#鍵值常量.鍵w) = 3)
位置三維.Z = 位置三維.Z - 移動數量
.如果真結束
.如果真 (_啟動窗口.輸入設備.取鍵狀態 (#鍵值常量.鍵下方向) = 3 或 _啟動窗口.輸入設備.取鍵狀態 (#鍵值常量.鍵s) = 3)
位置三維.Z = 位置三維.Z + 移動數量
.如果真結束
讀配置項目 (配置, 數據路徑 + “resources.cfg”, 節點 [計數], “Zip”)
.計次循環首 (取數組成員數 (配置), 計數1)
資源組管理.增加資源定位 (配置 [計數1], “Zip”, 節點 [計數], 假)
.計次循環尾 ()
.計次循環尾 ()
.子程序 渲染, , 公開
根.渲染一幀 ()
.子程序 讀配置項目, 邏輯型, 公開
.參數 返回值, 文本型, 參考 數組
.參數 配置文件名, 文本型
.參數 節名, 文本型
.參數 項目名, 文本型
.局部變量 文件號, 整數型
.局部變量 內容, 文本型
.局部變量 找到位置, 整數型
.局部變量 文本數組, 文本型, , "0"
.局部變量 次數, 整數型
文件號 = 打開文件 (配置文件名, #讀入, )
.如果真 (文件號 = 0)
返回 (假)
.如果真結束
內容 = 讀入文本 (文件號, )
關閉文件 (文件號)
找到位置 = 尋找文本 (內容, “[” + 節名 + “]”, , 真)
.如果真 (找到位置 = -1)
返回 (假)
.如果真結束
內容 = 取文本右邊 (內容, 取文本長度 (內容) - 找到位置 - 取文本長度 (節名) - 2)
文本數組 = 分割文本 (內容, #換行符, )
.計次循環首 (取數組成員數 (文本數組), 次數)
.如果真 (取文本左邊 (文本數組 [次數], 1) = “[”)
跳出循環 ()
.如果真結束
找到位置 = 尋找文本 (文本數組 [次數], 項目名 + “=”, , 真)
.如果真 (找到位置 ≠ -1)
加入成員 (返回值, 取文本右邊 (文本數組 [次數], 取文本長度 (文本數組 [次數]) - 取文本長度 (項目名) - 找到位置))
.如果真結束
.計次循環尾 ()
返回 (真)
場景管理.設置天空 (真, “Examples/StormySkyBox”, 5000, 真, 1, 0, 0, 0, “General”)
平面.法線創建 (0, 1, 0, 100)
模型管理.創建平面模型1 (“Myplane”, “General”, 平面.取句柄 (), 1500, 1500, 20, 20, 真, 1, 5, 5, 0, 0, 1)
平面實體.置句柄 (場景管理.創建實體 (“plane”, “Myplane”))
平面實體.置材質 (“Examples/Rockwall”)
平面實體.置陰影 (真)
子節點.置句柄 (場景根節點.創建場景子節點 ())
子節點.關聯對象 (平面實體)
場景管理.設置陰影顏色 (0.5, 0.5, 0.5, 1)
.子程序 三維向量正規化, 雙精度小數型
.參數 向量, 自定義_三維向量, 參考
.局部變量 長度, 雙精度小數型
.局部變量 平均長度, 小數型
長度 = 求平方根 (向量.X × 向量.X + 向量.Y × 向量.Y + 向量.Z × 向量.Z)
.如果真 (長度 > 1e-008)
平均長度 = 1 ÷ 長度
向量.X = 向量.X × 平均長度
向量.Y = 向量.Y × 平均長度
向量.Z = 向量.Z × 平均長度
.如果真結束
返回 (長度)
.子程序 開始, , 公開
.如果真 (設置 () = 假)
返回 ()
.如果真結束
' 根_開始渲染 (私根.取句柄 ())
.子程序 配置資源
.局部變量 節點, 文本型, , "0"
.局部變量 配置, 文本型, , "0"
.局部變量 計數, 整數型
.局部變量 計數1, 整數型
.計次循環首 (取數組成員數 (節點), 計數)
重定義數組 (配置, 假, 0)
讀配置項目 (配置, 數據路徑 + “resources.cfg”, 節點 [計數], “FileSystem”)
.計次循環首 (取數組成員數 (配置), 計數1)
資源組管理.增加資源定位 (配置 [計數1], “FileSystem”, 節點 [計數], 假)
.計次循環尾 ()
注意事項
節點 = 取配置節名 (數據路徑 + “resources.cfg”)
重定義數組 (配置, 假, 0)