first commit

This commit is contained in:
2026-06-22 11:49:35 +02:00
commit d805f2ba86
619 changed files with 126873 additions and 0 deletions

View File

@ -0,0 +1,145 @@
/* -----------------------------------------------------------------------------
GSFramework
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */
#ifndef __NPROJECT__
#define __NPROJECT__
#include "project/project_factory_interface.h"
#include "project/project_scene_instance.h"
#include "project/project_script_unit.h"
#include "project/project_layer.h"
#include "core/resource_factories.h"
#include "core/raster_font.h"
#include "core/clock.h"
#include "script/script_unit.h"
#include "script/script_vm.h"
#include "font/font_factory.h"
#include "font/font_cache.h"
namespace GS {
namespace Audio { struct IMixer; }
namespace Render { class Renderer; }
namespace Core {
using Audio::IMixer;
using Render::Renderer;
//
class Project
{
protected:
sResourceFactories factories;
AutoList <ProjectSceneInstance *> instance_list;
bool prohibit_project_action; ///< Disable all instance creation and layer stack modifications.
/// Check whether project action are allowed.
bool IsProjectActionAllowed(const char *f);
public:
String file_path;
String name, authors, description, company;
Script::sVM vm;
sClock clock;
sFontCache font_cache;
//----------------------------------------------------------------------
/// @short Render flags.
enum RenderFlag
{
FlagNone = 0,
FlagDisableScript = (1 << 0),
FlagDefault = FlagNone
};
enum ProjectFlag
{
ProjectFlagNone = 0,
ProjectFlagEnd = (1 << 0),
ProjectFlagDebugPhysics = (1 << 1)
};
BitField flags;
AutoList <ProjectLayer *> layer_list;
void Update(uint scene_update_flag);
void Render(Renderer &, RenderFlag = FlagDefault);
//----------------------------------------------------------------------
/// Draw profiler.
void DrawProfilerText(Renderer &, Render::RasterFont *font[2], float &x, float &y);
//----------------------------------------------------------------------
StringList root_script_list, search_path;
bool CompileRootScripts();
AutoPtr <ProjectScriptUnit> script_unit;
void UpdateScriptClock();
//----------------------------------------------------------------------
//----------------------------------------------------------------------
AutoPtr <IProjectFactory> iproject_factory;
ProjectSceneInstance *FindSceneInstance(const char *) const;
ProjectSceneInstance *FindSceneInstance(const S3D::Scene *) const;
ProjectSceneInstance *FindSceneInstance(const S2D::Scene *) const;
ProjectSceneInstance *Instantiate(const char *name);
ProjectSceneInstance *Instantiate(S3D::Scene *);
ProjectSceneInstance *Instantiate(S2D::Scene *);
void Delete(ProjectSceneInstance *scene);
/// Create a layer for a given project scene.
ProjectLayer *AddLayer(ProjectSceneInstance *, float zorder = 0.5);
bool IsActive(const ProjectSceneInstance &inst) const { return inst.active; }
void Activate(ProjectSceneInstance &, bool activate);
/// Return the number of instantiated layer in the display stack.
uint GetInstanceCount() const { return instance_list.GetCount(); }
/// Get scene instance list.
const AutoList <ProjectSceneInstance *> &GetInstanceList() const { return instance_list; }
/// Return the number of active layer in the display stack.
uint GetActiveCount() const;
//----------------------------------------------------------------------
void ResetStatistics();
void New();
bool Open(bool project_mode = true);
bool Setup();
void Close();
bool FromMetaTag(NML::Tag &);
NML::Tag *AsMetaTag() const;
Project(ResourceFactories *, IFontFactory *, Script::IVM * = 0);
virtual ~Project();
};
} // Core
} // GS
//------------------------------------------------------------------------------
#define __PROJECT_ACTION_SAFETY_CHECK(__RET__) { if (!IsProjectActionAllowed(__FUNCTION__)) return __RET__; }
#define __PROJECT_ACTION_SAFETY_CHECK_RAW { if (!IsProjectActionAllowed(__FUNCTION__)) return; }
#endif // __NPROJECT__