⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scriptobject.cc

📁 五行MMORPG引擎系统V1.0
💻 CC
字号:
//-----------------------------------------------------------------------------
// Torque Game Engine
// Copyright (C) GarageGames.com, Inc.
//-----------------------------------------------------------------------------

#include "platform/platform.h"
#include "console/simBase.h"
#include "console/consoleTypes.h"
#include "console/scriptObject.h"

//-----------------------------------------------------------------------------
// Script object placeholder
//-----------------------------------------------------------------------------


//class ScriptObject : public SimObject
//{
//   typedef SimObject Parent;
//   StringTableEntry mClassName;
//   StringTableEntry mSuperClassName;
//public:
//   ScriptObject();
//   bool onAdd();
//   void onRemove();
//
//   DECLARE_CONOBJECT(ScriptObject);
//
//   static void initPersistFields();
//};

IMPLEMENT_CONOBJECT(ScriptObject);

void ScriptObject::initPersistFields()
{
   addGroup("Classes", "Script objects have the ability to inherit and have class information.");
   addField("class", TypeString, Offset(mClassName, ScriptObject), "Class of object.");
   addField("superClass", TypeString, Offset(mSuperClassName, ScriptObject), "Superclass of object.");
   endGroup("Classes");
}

ScriptObject::ScriptObject()
{
   mClassName = "";
   mSuperClassName = "";
}

bool ScriptObject::onAdd()
{
   if (!Parent::onAdd())
      return false;

   // it's possible that all the namespace links can fail, if
   // multiple objects are named the same thing with different script
   // hierarchies.
   // linkNamespaces will now return false and echo an error message
   // rather than asserting.

   // superClassName -> ScriptObject
   StringTableEntry parent = StringTable->insert("ScriptObject");
   if(mSuperClassName[0])
   {
      if(Con::linkNamespaces(parent, mSuperClassName))
         parent = mSuperClassName;
   }

   // className -> superClassName
   if (mClassName[0])
   {
      if(Con::linkNamespaces(parent, mClassName))
         parent = mClassName;
   }

   // objectName -> className
   StringTableEntry objectName = getName();
   if (objectName && objectName[0])
   {
      if(Con::linkNamespaces(parent, objectName))
         parent = objectName;
   }

   // Store our namespace
   mNameSpace = Con::lookupNamespace(parent);

   // Call onAdd in script!
   Con::executef(this, 2, "onAdd", Con::getIntArg(getId()));
   return true;
}

void ScriptObject::onRemove()
{
   // Call onRemove in script!
   Con::executef(this, 2, "onRemove", Con::getIntArg(getId()));
   Parent::onRemove();
}

//-----------------------------------------------------------------------------
// Script group placeholder
//-----------------------------------------------------------------------------

//class ScriptGroup : public SimGroup
//{
//   typedef SimGroup Parent;
//   StringTableEntry mClassName;
//   StringTableEntry mSuperClassName;
//public:
//   ScriptGroup();
//   bool onAdd();
//   void onRemove();
//
//   DECLARE_CONOBJECT(ScriptGroup);
//
//   static void initPersistFields();
//};

IMPLEMENT_CONOBJECT(ScriptGroup);

void ScriptGroup::initPersistFields()
{
   addGroup("Classes");
   addField("class", TypeString, Offset(mClassName, ScriptGroup));
   addField("superClass", TypeString, Offset(mSuperClassName, ScriptGroup));
   endGroup("Classes");
}

ScriptGroup::ScriptGroup()
{
   mClassName = "";
   mSuperClassName = "";
}

bool ScriptGroup::onAdd()
{
   if (!Parent::onAdd())
      return false;

   // superClassName -> ScriptGroup
   StringTableEntry parent = StringTable->insert("ScriptGroup");
   if(mSuperClassName[0])
   {
      if(Con::linkNamespaces(parent, mSuperClassName))
         parent = mSuperClassName;
   }

   // className -> superClassName
   if(mClassName[0])
   {
      if(Con::linkNamespaces(parent, mClassName))
         parent = mClassName;
   }

   // objectName -> className
   StringTableEntry objectName = getName();
   if (objectName && objectName[0])
   {
      if(Con::linkNamespaces(parent, objectName))
         parent = objectName;
   }

   // Store our namespace
   mNameSpace = Con::lookupNamespace(parent);

   // Call onAdd in script!
   Con::executef(this, 2, "onAdd", Con::getIntArg(getId()));
   return true;
}

void ScriptGroup::onRemove()
{
   // Call onRemove in script!
   Con::executef(this, 2, "onRemove", Con::getIntArg(getId()));
   Parent::onRemove();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -