mirror of
https://github.com/open-goal/jak-project.git
synced 2024-11-27 08:20:47 +00:00
139 lines
4.6 KiB
C++
139 lines
4.6 KiB
C++
#pragma once
|
|
|
|
#include <array>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "common/common_types.h"
|
|
|
|
#include "goalc/build_level/Entity.h"
|
|
#include "goalc/build_level/FileInfo.h"
|
|
#include "goalc/build_level/Tfrag.h"
|
|
#include "goalc/build_level/collide_bvh.h"
|
|
#include "goalc/build_level/collide_common.h"
|
|
#include "goalc/build_level/collide_drawable.h"
|
|
#include "goalc/build_level/collide_pack.h"
|
|
#include "goalc/build_level/drawable_ambient.h"
|
|
|
|
struct VisibilityString {
|
|
std::vector<u8> bytes;
|
|
};
|
|
|
|
struct DrawableTreeInstanceTie {};
|
|
|
|
struct DrawableTreeActor {};
|
|
|
|
struct DrawableTreeInstanceShrub {};
|
|
|
|
struct DrawableTreeArray {
|
|
std::vector<DrawableTreeTfrag> tfrags;
|
|
std::vector<DrawableTreeInstanceTie> ties;
|
|
std::vector<DrawableTreeActor> actors; // unused?
|
|
std::vector<DrawableTreeCollideFragment> collides;
|
|
std::vector<DrawableTreeAmbient> ambients;
|
|
std::vector<DrawableTreeInstanceShrub> shrubs;
|
|
size_t add_to_object_file(DataObjectGenerator& gen,
|
|
size_t ambient_count,
|
|
size_t ambient_arr_slot) const;
|
|
};
|
|
|
|
struct TextureRemap {};
|
|
|
|
struct TextureId {};
|
|
|
|
struct VisInfo {};
|
|
|
|
struct EntityCamera {};
|
|
|
|
struct BspNode {};
|
|
|
|
struct Box8s {};
|
|
|
|
struct DrawableInlineArrayAmbient {
|
|
std::vector<EntityAmbient> ambients;
|
|
};
|
|
|
|
struct AdgifShaderArray {};
|
|
|
|
// This is a place to collect all the data that should go into the bsp-header file.
|
|
struct LevelFile {
|
|
// (info file-info :offset 4)
|
|
FileInfo info;
|
|
|
|
// (all-visible-list (pointer uint16) :offset-assert 32)
|
|
// (visible-list-length int32 :offset-assert 36)
|
|
VisibilityString all_visibile_list;
|
|
|
|
// (drawable-trees drawable-tree-array :offset-assert 40)
|
|
DrawableTreeArray drawable_trees;
|
|
|
|
// (pat pointer :offset-assert 44)
|
|
// (pat-length int32 :offset-assert 48)
|
|
std::vector<PatSurface> pat;
|
|
|
|
// (texture-remap-table (pointer uint64) :offset-assert 52)
|
|
// (texture-remap-table-len int32 :offset-assert 56)
|
|
std::vector<TextureRemap> texture_remap_table;
|
|
|
|
// (texture-ids (pointer texture-id) :offset-assert 60)
|
|
// (texture-page-count int32 :offset-assert 64)
|
|
std::vector<TextureId> texture_ids;
|
|
|
|
// (unk-zero-0 basic :offset-assert 68)
|
|
// "misc", seems like it can be zero and is unused.
|
|
|
|
// (name symbol :offset-assert 72)
|
|
std::string name; // full name
|
|
|
|
// (nickname symbol :offset-assert 76)
|
|
std::string nickname; // 3 char name
|
|
|
|
// (vis-info level-vis-info 8 :offset-assert 80) ;; note: 0 when
|
|
std::array<VisInfo, 8> vis_infos;
|
|
|
|
// (actors drawable-inline-array-actor :offset-assert 112)
|
|
std::vector<EntityActor> actors;
|
|
|
|
// (cameras (array entity-camera) :offset-assert 116)
|
|
std::vector<EntityCamera> cameras;
|
|
|
|
// (nodes (inline-array bsp-node) :offset-assert 120)
|
|
std::vector<BspNode> nodes;
|
|
|
|
// (level level :offset-assert 124)
|
|
// zero
|
|
|
|
// (current-leaf-idx uint16 :offset-assert 128)
|
|
// zero
|
|
|
|
// (unk-data-2 uint16 9 :offset-assert 130)
|
|
// looks like padding plus 4 floats? unused
|
|
|
|
// (boxes box8s-array :offset-assert 148)
|
|
std::vector<Box8s> boxes;
|
|
|
|
// (current-bsp-back-flags uint32 :offset-assert 152)
|
|
// zero
|
|
|
|
// (ambients drawable-inline-array-ambient :offset-assert 156)
|
|
std::vector<EntityAmbient> ambients;
|
|
|
|
// (unk-data-4 float :offset-assert 160)
|
|
float close_subdiv = 0;
|
|
|
|
// (unk-data-5 float :offset-assert 164)
|
|
float far_subdiv = 0;
|
|
|
|
// (adgifs adgif-shader-array :offset-assert 168)
|
|
AdgifShaderArray adgifs;
|
|
|
|
// (actor-birth-order (pointer uint32) :offset-assert 172)
|
|
std::vector<u32> actor_birth_order;
|
|
|
|
// (split-box-indices (pointer uint16) :offset-assert 176)
|
|
std::vector<u16> split_box_indices;
|
|
|
|
// (unk-data-8 uint32 55 :offset-assert 180)
|
|
|
|
std::vector<u8> save_object_file() const;
|
|
}; |