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

📄 objectbuildergui.gui

📁 此为游戏源码 是很好 的学习工具阿
💻 GUI
📖 第 1 页 / 共 2 页
字号:
   %this.curYPos += %this.defaultFieldStep;
}

//------------------------------------------------------------------------------

function ObjectBuilderGui::adjustSizes(%this)
{
   if(%this.numControls == 0)
      %this.curYPos = 0;

   OBTargetWindow.extent = "256 " @ %this.curYPos + 88;
   OBContentWindow.extent = "240 " @ %this.curYPos;
   OBOKButton.position = "70 " @ %this.curYPos + 62;
   OBCancelButton.position = "156 " @ %this.curYPos + 62;
}

function ObjectBuilderGui::process(%this)
{
   if(%this.className $= "")
   {
      error("ObjectBuilderGui::process: classname is not specified");
      return;
   }

   OBTargetWindow.setValue("Building Object: " @ %this.className);

   //
   for(%i = 0; %i < %this.numFields; %i++)
   {
      switch$(%this.field[%i, type])
      {
         case "TypeBool":
            %this.createBoolType(%i);

         case "TypeDataBlock":
            %this.createDataBlockType(%i);

         case "TypeFile":
            %this.createFileType(%i);

         default:
            %this.createStringType(%i);
      }
   }
   
   // add the controls   
   for(%i = 0; %i < %this.numControls; %i++)
   {
      OBContentWindow.add(%this.textControls[%i]);
      OBContentWindow.add(%this.controls[%i]);
   }

   //
   %this.adjustSizes();

   //
   Canvas.pushDialog(%this);
}

function ObjectBuilderGui::processNewObject(%this, %obj)
{
   if(%this.createCallback !$= "")
      eval(%this.createCallback);

   if(!isObject(EWorldEditor))
      return;

   $InstantGroup.add(%obj);
   EWorldEditor.clearSelection();
   EWorldEditor.selectObject(%obj);
   EWorldEditor.dropSelection();
}

function ObjectBuilderGui::onOK(%this)
{
   // get current values
   for(%i = 0; %i < %this.numControls; %i++)
      %this.field[%i, value] = %this.controls[%i].getValue();

   // 
   %file = new FileObject();

   %file.openForWrite(%this.scriptFile);

   %file.writeLine(%this @ ".newObject = new " @ %this.className @ "(" @ OBObjectName.getValue() @ ") {");
   
   for(%i = 0; %i < %this.numFields; %i++)
      %file.writeLine("   " @ %this.field[%i, name] @ " = \"" @ %this.field[%i, value] @ "\";");

   %file.writeLine("};");

   %file.close();
   %file.delete();

   //
   exec(%this.scriptFile);
   if(%this.newObject != 0)
      %this.processNewObject(%this.newObject);

   %this.reset();
   Canvas.popDialog(%this);
}

function ObjectBuilderGui::onCancel(%this)
{
   %this.reset();
   Canvas.popDialog(%this);
}

function ObjectBuilderGui::addField(%this, %name, %type, %text, %value)
{
   %this.field[%this.numFields, name] = %name;
   %this.field[%this.numFields, type] = %type;
   %this.field[%this.numFields, text] = %text;
   %this.field[%this.numFields, value] = %value;

   %this.numFields++;
}

//------------------------------------------------------------------------------
// Environment
//------------------------------------------------------------------------------

function ObjectBuilderGui::buildfxFoliageReplicator(%this)
{
	%this.className = "fxFoliageReplicator";
	%this.process();
}

function ObjectBuilderGui::buildfxShapeReplicator(%this)
{
	%this.className = "fxShapeReplicator";
	%this.process();
}

function ObjectBuilderGui::buildfxSunLight(%this)
{
	%this.className = "fxSunLight";
	%this.process();
}

function ObjectBuilderGui::buildSky(%this)
{
   %this.className = "Sky";

   %this.addField("materialList", "TypeFile", "Material list",  "Lush_l4.dml");
   %this.addField("cloudSpeed[0]", "TypePoint2", "Cloud0 Speed", "0.0000003 0.0000003");
   %this.addField("cloudSpeed[1]", "TypePoint2", "Cloud1 Speed", "0.0000006 0.0000006");
   %this.addField("cloudSpeed[2]", "TypePoint2", "Cloud2 Speed", "0.0000009 0.0000009");
   %this.addField("cloudHeightPer[0]", "TypeFloat", "Cloud0 Height", "0.349971");
   %this.addField("cloudHeightPer[1]", "TypeFloat", "Cloud1 Height", "0.25");
   %this.addField("cloudHeightPer[2]", "TypeFloat", "Cloud2 Height", "0.199973");
   %this.addField("visibleDistance", "TypeFloat", "Visible distance", "900");
   %this.addField("fogDistance", "TypeFloat", "Fog distance", "600");
   %this.addField("fogColor", "TypeColor", "Fog color", "0.5 0.5 0.5");
   %this.addField("fogVolume1", "TypePoint3", "Fog volume", "120 0 100");
   %this.addField("fogVolume2", "TypePoint3", "Fog volume", "0 0 0");
   %this.addField("fogVolume3", "TypePoint3", "Fog volume", "0 0 0");

   %this.process();
}

function ObjectBuilderGui::buildSun(%this)
{
   %this.className = "Sun";

   %this.addField("direction", "TypeVector", "Direction", "1 1 -1");
   %this.addField("color", "TypeColor", "Sun color", "0.8 0.8 0.8");
   %this.addField("ambient", "TypeColor", "Ambient color", "0.2 0.2 0.2");

   %this.process();
}

function ObjectBuilderGui::buildLightning(%this)
{
   %this.className = "Lightning";

   %this.addField("dataBlock", "TypeDataBlock", "Data block", "LightningData DefaultStorm");

   %this.process();
}

function ObjectBuilderGui::buildWater(%this)
{
   %this.className = "WaterBlock";

   // jff: this object needs some work!!
   %this.addField("extent", "TypePoint3", "Extent", "100 100 10");
   %this.addField("textureSize", "TypePoint2", "Texture size", "32 32");
   %this.addField("params[0]", "TypePoint4", "Wave Param0", "0.32 -0.67 0.066 0.5");
   %this.addField("params[1]", "TypePoint4", "Wave Param1", "0.63 -2.41 0.33 0.21");
   %this.addField("params[2]", "TypePoint4", "Wave Param2", "0.39 0.39 0.2 0.133");
   %this.addField("params[3]", "TypePoint4", "Wave Param3", "1.21 -0.61 0.13 -0.33");
   %this.addField("floodFill", "TypeBool", "Flood fill?", "true");
   %this.addField("seedPoints", "TypeString", "Seed points", "0 0 1 0 1 1 0 1");

   %this.addField("surfaceTexture", "TypeString", "Surface Texture", 
      "game/data/water/water");
   %this.addField("envMapTexture", "TypeString", "Env Map Texture", 
      "game/data/skies/sunset_0007");

   %this.process();
}

function ObjectBuilderGui::buildTerrain(%this)
{
   %this.className = "TerrainBlock";
   %this.createCallback = "ETerrainEditor.attachTerrain();";

   %this.addField("terrainFile", "TypeFile", "Terrain file", "terrains/terr1.ter");
   %this.addField("squareSize", "TypeInt", "Square size", "8");

   %this.process();
}

function ObjectBuilderGui::buildAudioEmitter(%this)
{
   %this.className = "AudioEmitter";
   %this.addField("profile", "TypeDataBlock", "Sound Profile", "AudioProfile");
   %this.addField("description", "TypeDataBlock", "Sound Description", "AudioDescription");
   %this.addField("fileName", "TypeFile", "Audio file", "");
   %this.addField("useProfileDescription", "TypeBool", "Use profile's desc?", "false");
   %this.addFIeld("volume", "TypeFloat", "Volume", "1.0");
   %this.addField("isLooping", "TypeBool", "Looping?", "true");
   %this.addField("is3D", "TypeBool", "Is 3D sound?", "true");
   %this.addField("minDistance", "TypeFloat", "Min distance", "20.0");
   %this.addField("maxDistance", "TypeFloat", "Max distance", "100.0");
   %this.addField("coneInsideAngle", "TypeInt", "Cone inside angle", "360");
   %this.addField("coneOutsideAngle", "TypeInt", "Cone outside angle", "360");
   %this.addField("coneOutsideVolume", "TypeFloat", "Cone outside volume", "1.0");
   %this.addField("coneVector", "TypePoint3", "Cone Vector", "0 0 1");
   %this.addField("loopCount", "TypeInt", "Loop count", "-1");
   %this.addField("minLoopGap", "TypeInt", "Min loop gap (ms)", "0");
   %this.addField("maxLoopGap", "TypeInt", "Max loop gap (ms)", "0");
   %this.addField("type", "TypeInt", "Audio type", $SimAudioType);
   %this.process();
}

function ObjectBuilderGui::buildPrecipitation(%this)
{
   %this.className = "Precipitation";
   %this.addField("nameTag", "TypeString", "Name", "");
   %this.addField("dataBlock", "TypeDataBlock", "Precipitation data", "PrecipitationData");
   %this.process();
}

function ObjectBuilderGui::buildParticleEmitter(%this)
{
   %this.className = "ParticleEmitterNode";
   %this.addField("dataBlock", "TypeDataBlock", "datablock", "ParticleEmitterNodeData");
   %this.addField("emitter",   "TypeDataBlock", "Particle data", "ParticleEmitterData");
   %this.process();
}

//------------------------------------------------------------------------------
// Mission
//------------------------------------------------------------------------------

function ObjectBuilderGui::buildMissionArea(%this)
{
   %this.className = "MissionArea";
   %this.addField("area", "TypeRect", "Bounding area", "0 0 1024 1024");
   %this.process();
}

function ObjectBuilderGui::buildPath(%this)
{
   %this.className = "Path";
   %this.process();
}

function ObjectBuilderGui::buildPathMarker(%this)
{
   %this.className = "Marker";
   %this.process();
}

//function ObjectBuilderGui::buildForcefield(%this)
//{
//   %this.className = "ForcefieldBare";
//   %this.addField("dataBlock", "TypeDataBlock", "Data Block", "ForceFieldBareData defaultForceFieldBare");
//   %this.process();
//}

function ObjectBuilderGui::buildTrigger(%this)
{
   %this.className = "Trigger";
   %this.addField("dataBlock", "TypeDataBlock", "Data Block", "TriggerData defaultTrigger");
   %this.addField("polyhedron", "TypeTriggerPolyhedron", "Polyhedron", "0 0 0 1 0 0 0 -1 0 0 0 1");
   %this.process();
}

function ObjectBuilderGui::buildPhysicalZone(%this)
{
   %this.className = "PhysicalZone";
   %this.addField("polyhedron", "TypeTriggerPolyhedron", "Polyhedron", "0 0 0 1 0 0 0 -1 0 0 0 1");
   %this.process();
}

function ObjectBuilderGui::buildCamera(%this)
{
   %this.className = "Camera";

   %this.addField("position", "TypePoint3", "Position", "0 0 0");
   %this.addField("rotation", "TypePoint4", "Rotation", "1 0 0 0");
   %this.addField("dataBlock", "TypeDataBlock", "Data block", "CameraData Observer");
   %this.addField("team", "TypeInt", "Team", "0");

   %this.process();
}

//------------------------------------------------------------------------------
// System
//------------------------------------------------------------------------------

function ObjectBuilderGui::buildSimGroup(%this)
{
   %this.className = "SimGroup";
   %this.process();
}

//------------------------------------------------------------------------------
// AI
//------------------------------------------------------------------------------

//function ObjectBuilderGui::buildObjective(%this)
//{
//   %this.className = "AIObjective";
//   %this.process();
//}

//function ObjectBuilderGui::buildNavigationGraph(%this)
//{  
//   %this.className = "NavigationGraph";
//   %this.process();
//}

⌨️ 快捷键说明

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