mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-20 04:34:48 +00:00
Standardizes Gamemodes to be an actual class with data and utility functions that can be parsed Adds inspector field handling for selecting gamemodes Updated Scene class to work with Gamemodes for the gamemode field Updates editor suite elements to be able to create SubScenes, SceneGroups and Gamemodes Adds ability to convert SimGroup to SubScene Updates BaseUI's chooselevel menu to have gamemode selection and filters shown levels based on selected gamemode
109 lines
2.3 KiB
C++
109 lines
2.3 KiB
C++
#pragma once
|
|
#ifndef SUB_SCENE_H
|
|
#define SUB_SCENE_H
|
|
|
|
#ifndef SCENE_GROUP_H
|
|
#include "SceneGroup.h"
|
|
#endif
|
|
#ifndef LEVEL_ASSET_H
|
|
#include "assets/LevelAsset.h"
|
|
#endif
|
|
#ifndef GAME_MODE_H
|
|
#include "gameMode.h"
|
|
#endif
|
|
|
|
class SubScene : public SceneGroup
|
|
{
|
|
typedef SceneGroup Parent;
|
|
|
|
public:
|
|
enum MaskBits
|
|
{
|
|
NextFreeMask = Parent::NextFreeMask << 0
|
|
};
|
|
|
|
void onLevelChanged() {}
|
|
|
|
private:
|
|
DECLARE_LEVELASSET(SubScene, Level, onLevelChanged);
|
|
|
|
StringTableEntry mGameModesNames;
|
|
Vector<GameMode*> mGameModesList;
|
|
|
|
F32 mScopeDistance;
|
|
|
|
/// <summary>
|
|
/// How long we wait once every control object has left the SubScene's load boundary for us to unload the levelAsset.
|
|
/// </summary>
|
|
S32 mStartUnloadTimerMS;
|
|
|
|
bool mLoaded;
|
|
|
|
bool mGlobalLayer;
|
|
public:
|
|
SubScene();
|
|
virtual ~SubScene();
|
|
|
|
DECLARE_CONOBJECT(SubScene);
|
|
DECLARE_CATEGORY("Object \t Collection");
|
|
|
|
static void initPersistFields();
|
|
static void consoleInit();
|
|
|
|
// SimObject
|
|
bool onAdd() override;
|
|
void onRemove() override;
|
|
|
|
U32 packUpdate(NetConnection* conn, U32 mask, BitStream* stream) override;
|
|
void unpackUpdate(NetConnection* conn, BitStream* stream) override;
|
|
|
|
void addObject(SimObject* object);
|
|
void removeObject(SimObject* object);
|
|
//void onEditorEnable() override;
|
|
//void onEditorDisable() override;
|
|
void inspectPostApply() override;
|
|
|
|
bool testBox(const Box3F& testBox);
|
|
|
|
void _onSelected() override;
|
|
void _onUnselected() override;
|
|
|
|
static S32 mUnloadTimeoutMs;
|
|
|
|
protected:
|
|
void write(Stream& stream, U32 tabStop, U32 flags = 0) override;
|
|
|
|
//
|
|
void _onFileChanged(const Torque::Path& path);
|
|
void _closeFile(bool removeFileNotify);
|
|
void _loadFile(bool addFileNotify);
|
|
|
|
//
|
|
public:
|
|
void processTick(const Move* move) override;
|
|
|
|
//
|
|
void onInspect(GuiInspector* inspector) override;
|
|
|
|
void load();
|
|
void unload();
|
|
|
|
void prepRenderImage(SceneRenderState* state) override;
|
|
void renderObject(ObjectRenderInst* ri,
|
|
SceneRenderState* state,
|
|
BaseMatInstance* overrideMat);
|
|
|
|
bool isLoaded() { return mLoaded; }
|
|
void setUnloadTimeMS(S32 unloadTimeMS) {
|
|
mStartUnloadTimerMS = unloadTimeMS;
|
|
}
|
|
inline S32 getUnloadTimsMS() {
|
|
return mStartUnloadTimerMS;
|
|
}
|
|
|
|
bool save();
|
|
|
|
DECLARE_ASSET_SETGET(SubScene, Level);
|
|
};
|
|
#endif
|