commit x64 compilation from lulu cause the other branch dont seems to compile properly at home
This commit is contained in:
103
include/modules/script_squirrel/cobject/cobject.cpp
Normal file
103
include/modules/script_squirrel/cobject/cobject.cpp
Normal file
@ -0,0 +1,103 @@
|
||||
/* -----------------------------------------------------------------------------
|
||||
GSFramework
|
||||
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
|
||||
----------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
#include "script_squirrel/cobject/cobject.h"
|
||||
#include "script_squirrel/engine_vm.h"
|
||||
#include "raytracer/raytracer_core.h"
|
||||
#include "automation/automation_source_group.h"
|
||||
#include "scene3d/scene.h"
|
||||
#include "scene3d/group.h"
|
||||
#include "scene3d/memitter.h"
|
||||
#include "scene3d/mcamera.h"
|
||||
#include "scene3d/mobject.h"
|
||||
#include "scene3d/mtrigger.h"
|
||||
#include "scene3d/mlight.h"
|
||||
#include "scene3d/instance.h"
|
||||
#include "ui/ui_cursor.h"
|
||||
#include "core/raster_font.h"
|
||||
#include "input/input_device.h"
|
||||
|
||||
using namespace GS;
|
||||
using namespace GS::Script;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
void CObject::Initialize(CObjectType t, void *o, bool m)
|
||||
{
|
||||
Release();
|
||||
|
||||
type = t;
|
||||
native = o;
|
||||
managed = m;
|
||||
|
||||
if (native)
|
||||
switch (type)
|
||||
{
|
||||
case typetag_Picture: ((Picture *)native)->AddRef(); break;
|
||||
case typetag_Texture: ((Render::Texture *)native)->AddRef(); break;
|
||||
case typetag_Geometry: ((Render::Geometry *)native)->AddRef(); break;
|
||||
case typetag_Material: ((Render::Material *)native)->AddRef(); break;
|
||||
case typetag_InputDevice: ((Input::Device *)native)->AddRef(); break;
|
||||
case typetag_AutomationSource: ((Automation::Source *)native)->AddRef(); break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
void CObject::Release()
|
||||
{
|
||||
if (native == NULL)
|
||||
return;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case typetag_Picture: ((Picture *)native)->RemoveRef(); break;
|
||||
case typetag_Texture: ((Render::Texture *)native)->RemoveRef(); break;
|
||||
case typetag_Geometry: ((Render::Geometry *)native)->RemoveRef(); break;
|
||||
case typetag_Material: ((Render::Material *)native)->RemoveRef(); break;
|
||||
case typetag_InputDevice: ((Input::Device *)native)->RemoveRef(); break;
|
||||
case typetag_AutomationSource: ((Automation::Source *)native)->RemoveRef(); break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
|
||||
if (managed)
|
||||
switch (type)
|
||||
{
|
||||
case typetag_Metafile: delete ((NML::File *)native); break;
|
||||
case typetag_Raytracer: delete ((Raytrace::Raytracer *)native); break;
|
||||
case typetag_RasterFont: delete ((Render::RasterFont *)native); break;
|
||||
case typetag_AutomationSourceGroup: delete ((Automation::SourceGroup *)native); break;
|
||||
case typetag_Group: delete ((S3D::Group *)native); break;
|
||||
case typetag_Scene3d: delete ((S3D::Scene *)native); break;
|
||||
case typetag_UICursor: delete ((S2D::Cursor *)native); break;
|
||||
|
||||
default:
|
||||
__LOG_E__ << "Type " << CObjectTypeToString(type) << " should not be managed by the VM.\n";
|
||||
break;
|
||||
}
|
||||
|
||||
native = NULL;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
CObject::CObject(EngineVM *v, CObjectType t, void *o, bool managed) : vm(v)
|
||||
{
|
||||
list_item = vm->cobjects.Add(this);
|
||||
|
||||
native = NULL;
|
||||
Initialize(t, o, managed);
|
||||
}
|
||||
CObject::~CObject()
|
||||
{
|
||||
if (list_item)
|
||||
{
|
||||
vm->cobjects.Remove(list_item);
|
||||
// g_flog << "Native object alive count: " << vm->cobjects.GetCount() << "\n";
|
||||
}
|
||||
Release();
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user