AviaSkins.Forums

AviaSkins.Forums (http://forum.aviaskins.com/index.php)
-   Моделирование и конструирование (http://forum.aviaskins.com/forumdisplay.php?f=18)
-   -   Несколько вопросов по Java (http://forum.aviaskins.com/showthread.php?t=3499)

Vasya 01.04.2019 15:25

Конечно хуки.
Без хуков 3До в окне простого редактора не соберётся.
На нахер вар_класс.
Только Property.set(class1.
Я всегда исправляю, что бы Ил не сходил с ума от разночтений в коде.

Vasya 15.10.2019 11:14

У меня большая прозьба:
нужно организовать ручное управление радиатором при автомате шага.
Такой вид кода не компилится.
Код:

public void onAircraftLoaded()
    {
        super.onAircraftLoaded();
        if(super.FM.isPlayers())
            ((FlightModelMain) (super.FM)).EI.engines[0].setControlRadiatorAuto(false);       
    }

Как правильно записать ручное управление радиатором?
При том, что в классе уже есть метод радиатора.
Код:

public void update(float f)
    {
        if(Math.abs(flapps - kangle) > 0.01F)
        {
            flapps = kangle;
            hierMesh().chunkSetAngles("Oil1_D0", 0.0F, -20F * kangle, 0.0F);
        }
        kangle = 0.95F * kangle + 0.05F * FM.EI.engines[0].getControlRadiator();
        if(kangle > 1.0F)
            kangle = 1.0F;
        afterburnerhud();
        super.update(f);
    }


tvister 15.10.2019 21:21

Вложений: 1
Василий, я не специалист и у нас разные компиляторы-декомпиляторы, но постараюсь помочь.
Первое, у меня не компилировался код с двумя методами управления чем либо, створки юбки капота, или масляный радиатор, управляющие поверхности, не важно. Метод управления для данной части должен быть один.
Вот как на Ки-30 (на скрине).
Требуется уточнение, для каких частей системы охлаждения мотора нужна анимация? К примеру на Гамма-5 или R-5 есть анимация только масляного радиатора. Вот пример выдвижного радиатора Р-5
Код:

   
    public void update(float f) {
        float f_6_ = FM.EI.engines[0].getControlRadiator();
        Aircraft.xyz[0] = 0.0F;
        Aircraft.xyz[1] = 0.0F;
        Aircraft.xyz[2] = f_6_ * -0.45F;
        Aircraft.ypr[0] = 0.0F;
        Aircraft.ypr[1] = 0.0F;
        Aircraft.ypr[2] = 0.0F;
        if (Math.abs(flapps - xyz[2]) > 0.01F) {
            flapps = xyz[2];
            hierMesh().chunkSetLocate("Water_D0", Aircraft.xyz, Aircraft.ypr);
        }


tvister 15.10.2019 21:35

Вот пример Ки-51, у этой модели анимированы и створки юбки капота и масляный радиатор.
Код:

   
    public void update(float f) {
        super.update(f);
        float f_2_ = FM.EI.engines[0].getControlRadiator();
        if (Math.abs(flapps - f_2_) > 0.01F) {
            flapps = f_2_;
            hierMesh().chunkSetAngles("Oil_radiat_D0", 0.0F, -15.0F * f_2_,
                                      0.0F);
            for (int i = 1; i < 11; i++)
                hierMesh().chunkSetAngles("Water" + i + "_D0", 0.0F,
                                          22.0F * f_2_, 0.0F);
        }

Причем масляный радиатор не опускается под прямым углом к корпусу как у Р-5, а поворачивается на -15 градусов поперек оси движения самолета.

Vasya 15.10.2019 22:28

Цитата:

Сообщение от tvister (Сообщение 201816)
Василий, я не специалист и у нас разные компиляторы-декомпиляторы, но постараюсь помочь.
................

Спасибо за отклик!
Мне не анимация нужна.
Анимацию я вписывать немного умею - несколько створок заставить двигаться - не проблема.
У меня другой вопрос:
нужно заставить работать радиатор именно в ручном режиме.,
сейчас радиатор в автоматическом режиме.,
пропеллер тип-8(лучше - конечно - тип 7, так будет оригиналнее).,
у Фоки-4-8 нет раздела анимации створок, поэтому радиатор ручной.,
у Фоки-9 есть в классе код анимации, поэтому шаг автоматический.,
для Темпеста нужно заставить кодом работать радиатор в ручном режиме
при автомате винта, а они увязаны в коде в глубинах классов.
Если поставить шаг винта ручной - то и радиатор будет ручной.
Но.... у мотора Темпеста обороты 3700 и винт весом 225 кг.
При сбросе газа самолёт переворачивается и устремляется к земле,
никакие манипуляции русом не помогают, только добавление тяги до 100 проц.
Это такой баг в игре - сильно большие обороты - не стандартные для Ила.
В дефолте обороты снизили до 3150, что бы не было бага переворачивания самолёта.
Поэтому и спрашивал тут как вписать принудительное регулирование радиатора именно кодом в классе.
Есть код на тип афтербуннера - и он работает.
Причём тип и название афтербуннера пишется двумя разными методами
и они прекрасно уживаются в одном классе.
Такие пояснения относительного моего вопроса. :ok:

tvister 15.10.2019 23:15

Цитата:

Сообщение от Vasya (Сообщение 201822)
У меня другой вопрос:
нужно заставить работать радиатор именно в ручном режиме.,
сейчас радиатор в автоматическом режиме.,

Увы Василий, я немножко разобрался с анимацией, но более высокие материи мне не по плечу :I'm_thinking::DONT_KNOW:.
Коллеги, может кто, что дельное подскажет?

Asura 15.03.2021 09:27

Цитата:

Сообщение от ildar (Сообщение 217453)
Вопрос к знатокам:

Как из одного класса запустить другой класс?

Не совсем понятен вопрос... Что конкретно надо сделать?

Asura 17.03.2021 10:54

тут сложный вопрос - как разделить однотипные объекты?
В общем наверно можно в КП читать параметры с объектов (например высоту и удаленность) и после сортировки их выводить на экран.

то есть в RotatingRadarGeneric ты создаешь переменные

public float h;
public float d;

эти переменные внутри класса меняются у каждого объекта по своему

в классе КП

private RotatingRadarGeneric rrg;

и читаешь переменные из класса

rrg.h
rrg.d

остается вопрос - как распознать чьи это переменные? наверно можно при создании объекта генерить его уникальный код и передавать так же в КП

Asura 28.03.2021 13:07

А если попробовать сделать так -

Сделать основной класс NewRadarGeneric, в нем создавать массив целей. Класс RotatingRadarGeneric сделать наследником NewRadarGeneric

public class RotatingRadarGeneric extends NewRadarGeneric

и в нем заполнять массив

класс КП тоже наследник NewRadarGeneric - в нем читать массив и выдавать целеуказания.

Asura 28.03.2021 13:19

А если попробовать сделать так -

Сделать основной класс NewRadarGeneric, в нем создавать массив целей. Класс RotatingRadarGeneric сделать наследником NewRadarGeneric

public class RotatingRadarGeneric extends NewRadarGeneric

и в нем заполнять массив

класс КП тоже наследник NewRadarGeneric - в нем читать массив и выдавать целеуказания.

Asura 28.03.2021 15:15

А наследником ActorHMesh сделать класс КП. Изменить иерархию.

Asura 28.03.2021 17:39

Я бы все таки попробовал сделать по аналогии классов тех же маяков - поменять иерархию наследования.

tvister 15.10.2021 22:04

Доброго времени суток! Вопрос к знатокам...
Вот класс "Либерти", кораблик с тремя световыми эффектами которые включаются в ночное время суток. Подскажите пожалуйста как добавить еще один эффект, работающий постоянно, не зависимый от времени?
Код:

/* Liberty_cargo_ship - Decompiled by JODE
 * Visit http://jode.sourceforge.net/
 */
package com.maddox.il2.objects.ships;
import com.maddox.JGP.Point3d;
import com.maddox.il2.ai.World;
import com.maddox.il2.ai.ground.TgtShip;
import com.maddox.il2.engine.Eff3DActor;
import com.maddox.il2.engine.HookNamed;
import com.maddox.il2.engine.LightPointActor;
import com.maddox.il2.engine.LightPointWorld;
import com.maddox.il2.engine.Loc;
import com.maddox.rts.SectFile;

public abstract class Liberty_cargo_ship extends Ship
{
    /*synthetic*/ static Class class$com$maddox$il2$objects$ships$Liberty_cargo_ship$Liberty;
   
    public static class Liberty extends BigshipGeneric implements TgtShip
    {
        public LightPointActor light1;
        public LightPointActor light2;
        public LightPointActor light3;
        public LightPointActor light4;
        public LightPointActor[] lightk;
       
        public Liberty() {
            lightk = new LightPointActor[5];
        }
       
        public Liberty(String string, int i, SectFile sectfile,
                          String string_0_, SectFile sectfile_1_,
                          String string_2_) {
            super(string, i, sectfile, string_0_, sectfile_1_, string_2_);
            lightk = new LightPointActor[5];
            Loc loc = new Loc(0.0, 0.0, 0.0, 0.0F, 0.0F, 0.0F);
            Loc loc_3_ = new Loc();
            Loc loc_4_ = new Loc();
            Loc loc_5_ = new Loc();
            Loc loc_6_ = new Loc();
            Loc loc_7_ = new Loc();
            if (World.getTimeofDay() >= 0.5F && World.getTimeofDay() <= 6.0F) {
                for (int i_8_ = 0; i_8_ < 6; i_8_++)
                    Eff3DActor.New(this, findHook("_CLight" + i_8_), null,
                                  1.0F, "3DO/Effects/Lights/FlareWhitek.eff",
                                  -1.0F);
                Eff3DActor.New(this, findHook("_GLigth"), null, 1.0F,
                              "3DO/Effects/Lights/FlareGreenkb.eff", -1.0F);
                Eff3DActor.New(this, findHook("_RLight"), null, 1.0F,
                              "3DO/Effects/Lights/FlareRedkb.eff", -1.0F);
                {
                } 
            }
        }
    }
   
    /*synthetic*/ static Class class$(String string) {
        Class var_class;
        try {
            var_class = Class.forName(string);
        } catch (ClassNotFoundException classnotfoundexception) {
            throw new NoClassDefFoundError(classnotfoundexception
                                              .getMessage());
        }
        return var_class;
    }
   
    static {
        new BigshipGeneric.SPAWN
            (class$com$maddox$il2$objects$ships$Liberty_cargo_ship$Liberty == null
            ? (class$com$maddox$il2$objects$ships$Liberty_cargo_ship$Liberty
                = class$("com.maddox.il2.objects.ships.Liberty_cargo_ship$Liberty"))
            : class$com$maddox$il2$objects$ships$Liberty_cargo_ship$Liberty);
    }
}


tvister 16.10.2021 13:27

Еще бы хорошо, к коду в предыдущем посте, кроме постоянно работающего эффекта, добавить строки вращающегося меша. Подскажите как сделать плз.

andrey65 16.10.2021 14:08

В БАТ есть объекты сигнальные маяки, как раз вращаются, светят в две стороны

tvister 16.10.2021 16:52

Спасибо за идею, но видимо плохо ищу... :cry: чего то не могу найти. За то вскрыл мод паровозов от wcat, с крутящимися колесами и... С явой в общем у меня проблемы.:cry: Разбираемся...

andrey65 16.10.2021 17:31

https://www.sas1946.com/main/index.p...html#msg691231
вот вроде сам мод, а поиском на САС по слову маяк - "Lighthouse" находится и что-то про Яву.

tvister 16.10.2021 21:24

Cпасибо, мод скачал, буду разбираться.

tarakan67 24.10.2021 13:41

Здравствуйте. Прошу помощи в решении следующей задачи:
Имеется некий меш (А). Необходимо создать java код, который при нажатии определённой клавиши заставит этот меш повернуться вокруг оси на определённое количество градусов, а потом (или одновременно с этим) переместить меш на определённое количество метров вдоль какой-либо из осей. Прошу Гуру помочь в решении этой задачи.

Asura 25.10.2021 09:35

resetYPRmodifier(); - обнулить значения

//установить значение смещения по осям
xyz[0] = 0.4f*setNew.fire;
xyz[1] = 0.4f*setNew.fire;
xyz[2] = 0.4f*setNew.fire;

//установить поворот по посям
ypr[0] = 0.4f*setNew.fire;
ypr[1] = 0.4f*setNew.fire;
ypr[2] = 0.4f*setNew.fire;

mesh.chunkSetLocate("Z_Fire", xyz, ypr); //одновременный поворот и смещение указанного меша на ранее заданные значения. Можно только смещать (YPR просто не указываются) или только вращать (но вращать проще mesh.chunkSetAngles)


Текущее время: 07:02. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot