Serious-Engine/Sources/Entities/WorldLink.es
2016-04-08 00:11:36 +02:00

65 lines
1.8 KiB
C++

214
%{
#include "Entities/StdH/StdH.h"
%}
uses "Entities/Marker";
// world link
enum WorldLinkType {
1 WLT_FIXED "Fixed", // fixed link
2 WLT_RELATIVE "Relative", // relative link
};
class CWorldLink : CMarker {
name "World link";
thumbnail "Thumbnails\\WorldLink.tbn";
features "IsImportant";
properties:
1 CTString m_strGroup "Group" 'G' = "",
2 CTFileNameNoDep m_strWorld "World" 'W' = "",
3 BOOL m_bStoreWorld "Store world" 'S' = FALSE,
4 enum WorldLinkType m_EwltType "Type" 'Y' = WLT_RELATIVE,
components:
1 model MODEL_WORLDLINK "Models\\Editor\\WorldLink.mdl",
2 texture TEXTURE_WORLDLINK "Models\\Editor\\WorldLink.tex"
functions:
/************************************************************
* START EVENT *
************************************************************/
BOOL HandleEvent(const CEntityEvent &ee) {
if (ee.ee_slEvent == EVENTCODE_ETrigger) {
ETrigger &eTrigger = (ETrigger &)ee;
_SwcWorldChange.strGroup = m_strGroup; // group name
_SwcWorldChange.plLink = GetPlacement(); // link placement
_SwcWorldChange.iType = (INDEX)m_EwltType; // type
_pNetwork->ChangeLevel(m_strWorld, m_bStoreWorld, 0);
return TRUE;
}
return FALSE;
};
procedures:
/************************************************************
* M A I N *
************************************************************/
Main(EVoid) {
InitAsEditorModel();
SetPhysicsFlags(EPF_MODEL_IMMATERIAL);
SetCollisionFlags(ECF_IMMATERIAL);
// set appearance
SetModel(MODEL_WORLDLINK);
SetModelMainTexture(TEXTURE_WORLDLINK);
// set name
m_strName.PrintF("World link - %s", (const char*)m_strGroup);
return;
}
};