예제 #1
0
 private void InitObjectInfo(MCGameObject obj, MapObjFile.MCObj objData, ObjectType objtype, GameObject go)
 {
     obj.partId            = objData.ObjId;
     obj.appearanceId      = objtype.AppearanceName;
     obj.block             = objData.Block;
     obj.vertex            = objData.Vertex;
     obj.OffsetPixelX      = objData.pixelOffsetX;
     obj.OffsetPixelY      = objData.pixelOffsetY;
     obj.position          = terrain.MapPositionToWorldCoords(obj.block, obj.vertex, obj.OffsetPixelX, obj.OffsetPixelY);
     go.name               = string.Format("Obj-{0} [OBJ={1} SPR={2}]", obj.Name, obj.partId, obj.appearanceId);
     go.transform.position = obj.position;
 }
예제 #2
0
        public void AddObject(int objTypeNum)
        {
            if (PalTexture == null)
            {
                PalTexture = MechCommanderUnity.Instance.ContentReader.ShapesPakFile.Palette.ExportPaletteTexture();
            }

            MapObjFile.MCObj objData = new MapObjFile.MCObj()
            {
                Block        = 0,
                damage       = 0,
                ObjId        = (short)objTypeNum,
                pixelOffsetX = 0,
                pixelOffsetY = 0,
                Vertex       = 0
            };


            var objtype = objTypeManager.Get(objData.ObjId);

            var realDmg = objData.damage & 0x0f;

            MCGameObject obj;

            switch (objtype.objectClass)
            {
            case ObjectClass.TERRAINOBJECT:
            case ObjectClass.TREE:
                var terrainGo = new GameObject();
                obj = terrainGo.AddComponent <TerrainObject>();
                ((TerrainObject)obj).Init(objtype, appearanceTypeManager);

                //obj = new TerrainObject(objtype, appearanceTypeManager);

                obj.block        = objData.Block;
                obj.vertex       = objData.Vertex;
                obj.OffsetPixelX = objData.pixelOffsetX;
                obj.OffsetPixelY = objData.pixelOffsetY;
                obj.position     = terrain.MapPositionToWorldCoords(obj.block, obj.vertex, obj.OffsetPixelX, obj.OffsetPixelY);

                //if (realDmg>0)
                //((TerrainObjectPtr)obj)->setDamage(((TerrainObjectTypePtr)objType)->getDamageLevel());

                //objList[curCollidableHandle] = obj;
                //obj->setHandle(curCollidableHandle++);

                //obj->setExists(true);
                //appearanceTypeManager.GetAppearanceType(objtype.Appearance);

                terrainObjects.Add(terrainGo);
                break;

            case ObjectClass.TURRET:
                MechCommanderUnity.LogMessage("Creating Turret!!");
                var turretGo = new GameObject();
                obj = turretGo.AddComponent <TurretObject>();
                ((TurretObject)obj).Init(objtype, appearanceTypeManager);
                // obj = new TurretObject(objtype, appearanceTypeManager);
                obj.block        = objData.Block;
                obj.vertex       = objData.Vertex;
                obj.OffsetPixelX = objData.pixelOffsetX;
                obj.OffsetPixelY = objData.pixelOffsetY;
                obj.position     = terrain.MapPositionToWorldCoords(obj.block, obj.vertex, obj.OffsetPixelX, obj.OffsetPixelY);

                //obj = getTurret(curTurretIndex++);
                //if (obj)
                //{
                //    ((TurretPtr)obj)->init(true, objType);
                //    if (realDmg)
                //        obj->setDamage(((TurretTypePtr)objType)->getDamageLevel());

                //    objList[curCollidableHandle] = obj;
                //    obj->setHandle(curCollidableHandle++);
                //    obj->setExists(true);
                //    obj->setParentId(objData->parentId);
                //    obj->setTeamId(objData->teamId, true);
                //}

                turrets.Add(turretGo);

                break;

            case ObjectClass.BUILDING:
            case ObjectClass.TREEBUILDING:
                var buildGo = new GameObject();
                obj = buildGo.AddComponent <BuildingObject>();
                ((BuildingObject)obj).Init(objtype, appearanceTypeManager);
                //obj = new BuildingObject(objtype, appearanceTypeManager);
                obj.block        = objData.Block;
                obj.vertex       = objData.Vertex;
                obj.OffsetPixelX = objData.pixelOffsetX;
                obj.OffsetPixelY = objData.pixelOffsetY;
                obj.position     = terrain.MapPositionToWorldCoords(obj.block, obj.vertex, obj.OffsetPixelX, obj.OffsetPixelY);

                //appearanceTypeManager.GetAppearanceType(objtype.Appearance);

                //if (realDmg>0)
                //    obj->setDamage(((BuildingTypePtr)objType)->getDamageLevel());
                //((BuildingPtr)obj)->baseTileId = (objData->damage >> 4);
                //if (obj->isSpecialBuilding())
                //{
                //    objList[curCollidableHandle] = obj;
                //    obj->setHandle(curCollidableHandle++);
                //} else
                //{
                //    objList[curNonCollidableHandle] = obj;
                //    obj->setHandle(curNonCollidableHandle++);
                //}

                //obj->setExists(true);
                //obj->setParentId(objData->parentId);
                //obj->setTeamId(objData->teamId, true);

                buildings.Add(buildGo);

                break;

            default:
                Debug.Log("Loading Unknow TypeOBj: " + objtype.objectClass);
                break;
            }
        }